Fireside 0.1.0-next.8
Complete Authentication and a full Pub/Sub emulator. Published on , as a preview.
Published as @fireside-dev/cli, before Firenook’s rename. About the former name.
A newer release is out: Firenook 0.2.0, the first release for public use.
What changed
The changes, as the release notes give them.
Authentication is complete (Phase I).
crates/auth-frontis rebuilt around the Identity Toolkit OpenAPI document that the official emulator itself routes and validates with (bundled undercrates/auth-front/specwith its provenance), so routing, security, validation, coercion and error prose match operation by operation. Every one of the 61 operations the official Auth emulator implements is ported: password, anonymous, custom-token, email-link, phone and fake-IdP sign-in (Google, Apple, SAML and OIDC-shaped credentials), account update and delete, OOB and phone codes, session cookies, tenants, SMS multi-factor, passkeys, Admin batch create/get/delete/ query, project and tenant configuration, the emulator inspection routes, the legacyrelyingpartyroutes, blocking functions on every sign-in path,user.create/user.deletemulticasts, official-format export/import and the popup/redirect helper pages. The corpus recorded from firebase-tools 15.22.0 (61 programs, 1,068 steps inconformance/fixtures/auth-v1) replays with 17,303 compared values, 0 mismatches and four named divergences (V8-versus-serde parse prose in two error messages, the Node stack trace the official emulator appends to a 500 log line, and Fireside's own account-picker page whose offered accounts are compared exactly), three runs identical; the real-SDK popup/redirect browser gate and the Emulator UI Auth tab were checked against the candidate. Accounts exported by next.7 import unchanged, and passwords stored with the earlier digest still sign in and are upgraded on that sign-in.fireside native authruns the service alone (--state-filepersists it) and 500-class failures are logged with the official emulator's first line.Pub/Sub is a full emulator (Phase J).
crates/pubsub-frontis a broker behind tonic gRPC services and an HTTP/JSON transcoder on one port: every RPC ofgoogle.pubsub.v1Publisher, Subscriber and SchemaService and ofgoogle.iam.v1IAMPolicy, with leases and ack deadlines, redelivery behind later messages, dead-letter and retry policies, ordering keys, filters, message retention, seek to time or snapshot, snapshots, pull, streaming pull, push delivery with the official one-second retry, and Avro schemas with revisions, topic binding and message validation. The corpus recorded from the official Pub/Sub emulator 0.8.33 (42 programs, 916 steps over gRPC, HTTP/JSON, streaming pull and a recording push endpoint inconformance/fixtures/pubsub-v1) replays with 3,755 compared values, 0 mismatches and no divergence, three runs identical; the pinned@google-cloud/pubsub5.3.1 client publishes, streams, orders, pushes and validates schemas against it withPUBSUB_EMULATOR_HOST. Function targets consume through a realemulator-sub-<topic>subscription, the scheduler keeps tickingonScheduletopics, and the Functions runtime corpus replays unchanged (271/271).fireside native pubsubruns the service alone.
Known limits
What this release was known not to do yet, as its notes recorded it.
- Limitations recorded with this release: Protocol Buffer schemas, IAM,
detachSubscriptionandupdateSnapshotanswerUNIMPLEMENTEDexactly as the official emulator does; BigQuery, Cloud Storage and Bigtable export subscriptions do not exist; Pub/Sub state is in memory like the official emulator (topics and subscriptions from function discovery are recreated on start); ordered delivery across several ordering keys is nondeterministic between the official emulator's own runs, so the corpus holds Fireside to the single-key contract and Fireside delivers per key in order with redelivery queued behind later messages. Auth operations the official emulator answers with 501 (provider configuration,initializeAuth, IAM on tenants, Game Center, reCAPTCHA enforcement, TOTP MFA) keep answering 501 with the recorded body. Prerelease onnext; no stable or universal-compatibility claim.
How it was checked
The source it was built from, the runs it passed, and how it was published.
- Pin the engine to
03000f0cc082c1b69f06c67b6a99a5417c840243, the qualified head of PR #50 (Phases I and J) on the next.7 engine. This exact revision passed CI (run 35364256374) and the five-platform packed-install matrix (run 35364256373), and a local candidate built from it passed a representative private consumer's extensions, integration and installed-launcher gates and its nine browser journeys (one-time-code login and sign-out/sign-in included) on the full-data stack, reopening the working state written by next.7; seesupport/phase-i-auth.md,support/phase-j-pubsub.mdand thereceiptsblocks ofbenchmarks/phase-i-auth.jsonandbenchmarks/phase-j-pubsub.json. The paired two-hour soak is a per-release-line gate and was waived for this release: the change set is confined to Auth and Pub/Sub, and both are proven by oracle replay against the official emulators.
The latest is 0.2.0
The first release for public use. Install it, and read what changed on the way.
npm install --save-dev firenook@0.2.0