fireemu 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -23
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Fireemu is being developed to close these gaps. For example, it provides:
|
|
|
14
14
|
|
|
15
15
|
Fireemu is still in development and does not yet reproduce every feature and behavior of production Firebase. Before relying on Fireemu’s test results in CI or other automated workflows, we recommend differential testing against production Firebase services for the features and critical workflows your application uses. Run the same tests against Fireemu and a dedicated Firebase test project, and check for differences in results and behavior that could affect your application. Use a dedicated test project, not your live production project.
|
|
16
16
|
|
|
17
|
-
See the [capability manifest](https://github.com/t-k/fireemu/blob/v0.
|
|
17
|
+
See the [capability manifest](https://github.com/t-k/fireemu/blob/v0.19.0/crates/fireemu/src/capabilities.json) and [compatibility documentation](https://github.com/t-k/fireemu/blob/v0.19.0/docs/compatibility-contract.md) for supported features, known differences, and the status of compatibility verification.
|
|
18
18
|
|
|
19
19
|
## Quick start
|
|
20
20
|
|
|
@@ -25,7 +25,7 @@ npm install --save-dev fireemu
|
|
|
25
25
|
npx fireemu init
|
|
26
26
|
|
|
27
27
|
# Start the emulator
|
|
28
|
-
# UI (default): http://127.0.0.1:4000
|
|
28
|
+
# UI (default): http://127.0.0.1:4000/ui/
|
|
29
29
|
npx fireemu up
|
|
30
30
|
```
|
|
31
31
|
|
|
@@ -70,13 +70,13 @@ Fireemu supports Cloud Firestore, Firebase Authentication (Identity Platform), C
|
|
|
70
70
|
| Cloud Pub/Sub | Schemas, BigQuery and Cloud Storage subscription delivery, and some APIs such as `UpdateTopic` are not supported. |
|
|
71
71
|
| Firebase App Check | Local testing with debug tokens is supported. Real attestation through Play Integrity, App Attest, DeviceCheck, or reCAPTCHA, and replay protection using limited-use tokens, are not supported. |
|
|
72
72
|
|
|
73
|
-
This table highlights key limitations; it is not exhaustive. Check individual API support and conditions with the following command or the [capability manifest](https://github.com/t-k/fireemu/blob/v0.
|
|
73
|
+
This table highlights key limitations; it is not exhaustive. Check individual API support and conditions with the following command or the [capability manifest](https://github.com/t-k/fireemu/blob/v0.19.0/crates/fireemu/src/capabilities.json).
|
|
74
74
|
|
|
75
75
|
```sh
|
|
76
76
|
npx fireemu capabilities
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
See the [Functions support inventory](https://github.com/t-k/fireemu/blob/v0.
|
|
79
|
+
See the [Functions support inventory](https://github.com/t-k/fireemu/blob/v0.19.0/docs/functions-export-inventory.md) for support by trigger type.
|
|
80
80
|
|
|
81
81
|
### Unsupported products
|
|
82
82
|
|
|
@@ -84,6 +84,8 @@ Realtime Database, Firebase Hosting, App Hosting, and Data Connect are not curre
|
|
|
84
84
|
|
|
85
85
|
## Usage
|
|
86
86
|
|
|
87
|
+
`fireemu config show` prints every configuration key in schema order with its effective value and source, using the same configuration discovery as `fireemu up`. Use `--config <path>` or `--firebase-json <path>` to select files, and `--json` for records containing `key`, `value`, `source`, and the schema description. Sources distinguish explicit values, defaults, `productionExact`, derived values, and unset keys. When the runtime does not expose a value, the command uses its explicit file value, its schema default (marked `default (schema)`), or `(unset)` (`null` with source `unset` in JSON). A key the configuration accepts but the daemon does not read (for example `bind`, `limits.catalog`, `firestore.textSearch.*`, `rules.staticLimitChecks`, `auth.enabled` and `trace.*`) has the source `accepted, no effect`: its value is shown as written, or `(unset)`, never as if it were in effect, and a configuration that sets one prints a `note:` line at start-up. `firebaseJson` shows the Firebase configuration file actually selected, including one chosen with `--firebase-json`.
|
|
88
|
+
|
|
87
89
|
### Select services
|
|
88
90
|
|
|
89
91
|
Use `--only` to select the services to start.
|
|
@@ -118,7 +120,7 @@ npx fireemu emulators:exec -- npm test
|
|
|
118
120
|
|
|
119
121
|
### UI
|
|
120
122
|
|
|
121
|
-
The default UI address is `http://127.0.0.1:4000
|
|
123
|
+
The default UI address is `http://127.0.0.1:4000/ui/`. Use `--ui-port` to specify a port.
|
|
122
124
|
|
|
123
125
|
```sh
|
|
124
126
|
# Start the UI on port 4001
|
|
@@ -135,7 +137,7 @@ Use `--ui-port 0` to disable the UI. When automatic UI startup cannot bind the d
|
|
|
135
137
|
|
|
136
138
|
When a Functions codebase is loaded, the Functions page shows registered functions, triggers, invocation results, and logs. You can run scheduled functions immediately or advance the virtual clock to their next scheduled execution.
|
|
137
139
|
|
|
138
|
-
For clock-sensitive and parallel integration tests, [test clocks and independent worlds](https://github.com/t-k/fireemu/blob/v0.
|
|
140
|
+
For clock-sensitive and parallel integration tests, [test clocks and independent worlds](https://github.com/t-k/fireemu/blob/v0.19.0/docs/test-worlds.md) describes explicit Node Date/timer/Cloud Tasks policies and the `fireemu/testing` helper. Separate worlds isolate their clocks, Rules, Functions and service state, including when they use the same project ID.
|
|
139
141
|
|
|
140
142
|
### Export data
|
|
141
143
|
|
|
@@ -177,6 +179,8 @@ The command reports information about the Fireemu binary, UI, Functions runner,
|
|
|
177
179
|
|
|
178
180
|
### Initial setup and reusing `firebase.json`
|
|
179
181
|
|
|
182
|
+
`fireemu init --reference` also writes `fireemu.reference.jsonc`, a commented reference generated from the schema. Fireemu never loads this file. The normal `fireemu.json` stays minimal: copying a reference key into it makes that key explicit, which stops `productionExact` from switching it. Keys without defaults, keys whose presence selects behavior, keys governed by `productionExact`, and keys accepted for forward compatibility that currently have no effect (marked as such in their comment) stay commented out. Combine `--reference` with `--profile` or `--firebase-json` when initializing; with an existing `fireemu.json` and neither of those options, only the reference is written. Existing output files require `--force` to replace.
|
|
183
|
+
|
|
180
184
|
`fireemu init` creates `fireemu.json` in the current directory. The interactive setup lets you choose a compatibility profile and whether to reuse an existing `firebase.json`.
|
|
181
185
|
|
|
182
186
|
When reusing `firebase.json`, Fireemu references the file rather than copying its settings. Rules, indexes, Functions codebases, and emulator ports are read from it each time Fireemu starts.
|
|
@@ -262,10 +266,9 @@ Fireemu is mostly run by tests, in CI and on a developer's machine. Where produc
|
|
|
262
266
|
| Development default | Key | With `productionExact` |
|
|
263
267
|
|---|---|---|
|
|
264
268
|
| Unsigned emulator custom tokens are accepted | `auth.allowUnsignedCustomTokens` | refused |
|
|
265
|
-
| Firestore and Storage Security Rules accept `@firebase/rules-unit-testing`'s unsigned mock ID token (`authenticatedContext()`, the client SDK's `mockUserToken`) | `auth.allowUnsignedIdTokens` |
|
|
269
|
+
| Firestore and Storage Security Rules accept `@firebase/rules-unit-testing`'s unsigned mock ID token (`authenticatedContext()`, the client SDK's `mockUserToken`) | `auth.allowUnsignedIdTokens` | mock-token fallback disabled; normally verified fireemu-issued tokens still accepted |
|
|
266
270
|
| Identity-provider sign-in accepts the fixture assertions and the sign-in widget (`/emulator/auth/handler`), for built-in, `oidc.*` and `saml.*` providers | `auth.idpAssertions` (`"fixture"`) | `"signed"`: OIDC ID tokens must verify with an `auth.idpSigners` key, SAML responses with the provider's certificates, and the fixture and built-in providers are refused |
|
|
267
|
-
| The strict Eventarc listener admits any credential or none, so the Admin SDK publishes with a fake credential (see [Eventarc authentication](https://github.com/t-k/fireemu/blob/v0.
|
|
268
|
-
| A query whose composite index is not defined (or is still building, or was deleted) runs, and each missing index is reported once per database on stderr with production's refusal text and the `firestore.indexes.json` entry | `firestore.missingIndexes` (`"report"`) | refused with `FAILED_PRECONDITION` and the console link (`"refuse"`) |
|
|
271
|
+
| The strict Eventarc listener admits any credential or none, so the Admin SDK publishes with a fake credential (see [Eventarc authentication](https://github.com/t-k/fireemu/blob/v0.19.0/docs/eventarc-authentication.md)) | `eventarc.authentication` (`"permissive"`) | `"production"`: a missing, malformed or JWT-shaped bearer is refused with production's 401 |
|
|
269
272
|
| A tenant of `auth.tenants` can have any readable id, such as `tenant-a` | `auth.tenantIdFormat` (`"readable"`) | the id must have production's generated form, the display name, a hyphen and five characters of `a-z0-9` (`"generated"`) |
|
|
270
273
|
| An end user's native gRPC `Listen` stream stays open however long it is held. `POST /v1/firestore/listen:expire` on the control API ends every held end-user stream at once, with production's status, to test a client's reconnect | `firestore.listenStreamLifetime` (`"unlimited"`) | ended with `INTERNAL` an hour after it opened, as production ends it (`"oneHour"`) |
|
|
271
274
|
|
|
@@ -279,8 +282,8 @@ Keep `"profile": "strict"` (the default of `fireemu init`), and point fireemu at
|
|
|
279
282
|
|
|
280
283
|
When a test fails under `strict` but passed on the official emulator, it is usually behavior the application would also meet in production. Fix the test or the application, or relax only the specific setting below instead of switching the whole profile.
|
|
281
284
|
|
|
282
|
-
- **Unsigned emulator ID tokens** (`@firebase/rules-unit-testing` `authenticatedContext()`, the client SDK's `mockUserToken`) work under `strict` by default. Set `auth.allowUnsignedIdTokens` to `false` to
|
|
283
|
-
- **Composite indexes** are validated as production does, and
|
|
285
|
+
- **Unsigned emulator ID tokens** (`@firebase/rules-unit-testing` `authenticatedContext()`, the client SDK's `mockUserToken`) work under `strict` by default. Set `auth.allowUnsignedIdTokens` to `false` to disable their fallback on the Security Rules surfaces. For a refusal test, use the SDK helper's default `iat: 0` / `exp: 3600` with a clock after expiry; fireemu-issued tokens that pass normal verification are still accepted. Use `auth.idTokenSigning: "session-rsa"` to refuse all unsigned ID tokens.
|
|
286
|
+
- **Composite indexes** are validated as production does: a query whose index is not defined (or is still building, or was deleted) is refused with `FAILED_PRECONDITION` and the console link to the index. Declare the index a query needs in `firestore.indexes.json`, referenced from `firebase.json`. To run such a query anyway and have each missing index reported once per database on stderr (with production's refusal text and the `firestore.indexes.json` entry), set `firestore.missingIndexes` to `"report"`; `productionExact` does not change this key.
|
|
284
287
|
- **Settings that mirror your production project.** Set them to match it instead of switching the profile:
|
|
285
288
|
|
|
286
289
|
| Setting | What it does under `strict` |
|
|
@@ -311,7 +314,7 @@ You can also name the configuration file with `--config`.
|
|
|
311
314
|
npx fireemu up --config ./fireemu.json
|
|
312
315
|
```
|
|
313
316
|
|
|
314
|
-
Keep Fireemu-specific settings in a Fireemu configuration file containing `"schemaVersion": 1`, rather than in `firebase.json`. See the [configuration schema](https://github.com/t-k/fireemu/blob/v0.
|
|
317
|
+
Keep Fireemu-specific settings in a Fireemu configuration file containing `"schemaVersion": 1`, rather than in `firebase.json`. See the [configuration schema](https://github.com/t-k/fireemu/blob/v0.19.0/spec/config/fireemu.schema.json) for all available settings.
|
|
315
318
|
|
|
316
319
|
### Firebase Authentication (Identity Platform) configuration
|
|
317
320
|
|
|
@@ -333,18 +336,18 @@ The `auth` section of `fireemu.json` lets you configure sign-in methods, passwor
|
|
|
333
336
|
| Blocking functions before account creation or sign-in, and credential forwarding to those functions | `auth.blockingFunctions` |
|
|
334
337
|
| Initial custom OIDC and SAML provider resources | `auth.providers.oidc`, `auth.providers.saml` |
|
|
335
338
|
| Accept unsigned emulator custom tokens (default `true` in both profiles, `false` with `productionExact`) | `auth.allowUnsignedCustomTokens` |
|
|
336
|
-
|
|
|
339
|
+
| Allow unsigned mock ID token fallback after normal verification fails in Firestore and Storage Security Rules (default `true` in both profiles, `false` with `productionExact`; normally verified fireemu-issued tokens remain accepted) | `auth.allowUnsignedIdTokens` |
|
|
337
340
|
| Accept the fixture identity-provider assertions and sign-in widget (`"fixture"`, the default in both profiles), or verify signed assertions as production does (`"signed"`, `strict` only; the default with `productionExact` or `auth.idpSigners`) | `auth.idpAssertions` |
|
|
338
341
|
| Public keys for verifying custom tokens and OIDC ID tokens | `auth.customTokenSigners`, `auth.idpSigners` |
|
|
339
342
|
| Sign-up quota configuration and local quota-exceeded simulation | `auth.quota`, `auth.quotaSimulation` |
|
|
340
343
|
|
|
341
344
|
Unsigned custom tokens minted by the Firebase Admin SDK in emulator mode are accepted by default, including with the recommended `strict` profile and with `auth.customTokenSigners` configured. To require signed custom tokens, set `auth.allowUnsignedCustomTokens` to `false` and configure `auth.customTokenSigners` with the service accounts' public JWK sets. The setting applies only to custom-token sign-in; strict claim checks and signed-token verification still apply. In the `emulator` profile, setting it to `false` also disables JSON fake custom tokens.
|
|
342
345
|
|
|
343
|
-
The unsigned mock ID token of `@firebase/rules-unit-testing` is accepted by default when Firestore and Storage Security Rules are evaluated, including with the `strict` profile. This is the token `authenticatedContext()` and the client SDKs' `mockUserToken` option send (`createMockUserToken` in `@firebase/util`). Under `strict` only
|
|
346
|
+
The unsigned mock ID token of `@firebase/rules-unit-testing` is accepted by default when Firestore and Storage Security Rules are evaluated, including with the `strict` profile. This is the token `authenticatedContext()` and the client SDKs' `mockUserToken` option send (`createMockUserToken` in `@firebase/util`). Normal verification runs first. Only after it fails can the mock-token fallback accept a token. Under `strict` that fallback accepts only the exact SDK shape: a JWT whose header is exactly `{"alg":"none","type":"JWT"}` and whose signature is empty. `request.auth` is built from the token's claims, as the official emulator builds it, when the token names a subject (`sub`) and its audience (`aud`) is the project the request goes to. Its `exp` is not checked, because the SDK sets `iat: 0` and `exp: 3600` by default. Every other token is verified as before, expiry included. That covers the unsigned ID tokens fireemu itself issues (their header carries `typ`, not `type`), and a token that claims a signature that does not verify is still refused. The `emulator` profile accepts any unsigned token, as the official emulator does, and its Storage also accepts another project's token. Set `auth.allowUnsignedIdTokens` to `false` (in either profile) or set `productionExact` to disable this fallback. Neither setting refuses fireemu-issued unsigned ID tokens that pass normal verification. Changing only an issued token's header to the SDK shape can still pass normal verification of its payload; it is not a refusal test. For a refusal test, use `createMockUserToken` with its default `iat: 0` / `exp: 3600`, or construct that exact header and empty signature with those times, a subject and the routed project as audience, and run with a clock after expiry (including Firestore's 30-second allowance). A session with `auth.idTokenSigning: "session-rsa"` accepts no unsigned token. The setting does not affect callable Functions, Identity Toolkit or App Check.
|
|
344
347
|
|
|
345
|
-
See the [configuration schema](https://github.com/t-k/fireemu/blob/v0.
|
|
348
|
+
See the [configuration schema](https://github.com/t-k/fireemu/blob/v0.19.0/spec/config/fireemu.schema.json) for the format and accepted values of each setting.
|
|
346
349
|
|
|
347
|
-
Declare `auth.authorizedDomains`, for example `["localhost", "app.test"]`, to set the initial project-wide list in either profile. The list replaces the defaults, so include `localhost` if your tests use it. An empty list authorizes no host under `strict`; an absent or `null` setting keeps the existing defaults (`localhost` and the project's `firebaseapp.com` and `web.app` domains). Validation uses the Admin API's rules for the selected profile, including its conversion of numeric and boolean entries to strings and omission of `null` entries; use strings when writing the list. Fireemu intentionally keeps `localhost` in its defaults for development. The [recorded production sandbox baseline](https://github.com/t-k/fireemu/blob/v0.
|
|
350
|
+
Declare `auth.authorizedDomains`, for example `["localhost", "app.test"]`, to set the initial project-wide list in either profile. The list replaces the defaults, so include `localhost` if your tests use it. An empty list authorizes no host under `strict`; an absent or `null` setting keeps the existing defaults (`localhost` and the project's `firebaseapp.com` and `web.app` domains). Validation uses the Admin API's rules for the selected profile, including its conversion of numeric and boolean entries to strings and omission of `null` entries; use strings when writing the list. Fireemu intentionally keeps `localhost` in its defaults for development. The [recorded production sandbox baseline](https://github.com/t-k/fireemu/blob/v0.19.0/conformance/auth-action-production.json) does not include it; new production projects may also omit it. This default is a Fireemu-only convenience, and declaring the list replaces it. Tenant-scoped strict action links currently check the tenant's default domains rather than this project declaration; support for the parent project's live list is pending.
|
|
348
351
|
|
|
349
352
|
An Admin update changes the live list. A session reset restores the declared list, when present, and preserves an Admin-written list when no initial list was declared. Projects created later receive the declaration word for word, independently of the default project's live list; listing a particular project's `firebaseapp.com` or `web.app` domain therefore gives later projects that same domain. Clearing accounts leaves the live list alone. Auth export/import carries accounts without the domain list or its declaration. The `emulator` profile accepts the setting and exposes the list, while continuing to allow action-link continue URLs outside it.
|
|
350
353
|
|
|
@@ -438,7 +441,7 @@ Under the `strict` profile, TOTP is enabled only through the project's MFA confi
|
|
|
438
441
|
|
|
439
442
|
#### Enable multi-tenancy
|
|
440
443
|
|
|
441
|
-
Under the `strict` profile, enable `multiTenant.allowTenants` before using multi-tenancy: through the Admin API, or with `auth.multiTenant` in the file (see "Start with tenants" below). See the [compatibility documentation](https://github.com/t-k/fireemu/blob/v0.
|
|
444
|
+
Under the `strict` profile, enable `multiTenant.allowTenants` before using multi-tenancy: through the Admin API, or with `auth.multiTenant` in the file (see "Start with tenants" below). See the [compatibility documentation](https://github.com/t-k/fireemu/blob/v0.19.0/docs/compatibility-contract.md) for the supported Admin API scope.
|
|
442
445
|
|
|
443
446
|
#### Start with tenants
|
|
444
447
|
|
|
@@ -489,7 +492,7 @@ A schedule is driven by the virtual clock alone: real time passing runs nothing.
|
|
|
489
492
|
|
|
490
493
|
A manual run (`POST /v1/sessions/{session}/functions/{name}:run`) enqueues one run of a scheduled function stamped with the current virtual time. It does not consume the next occurrence, which still comes due and is subject to `scheduler.overlap` like any run. It answers `400 INVALID_ARGUMENT` for an unknown function, a function that is not scheduled, an overlap policy refusal, or a runtime that is shutting down, and `429 RESOURCE_EXHAUSTED` when the event queue is full. This is fireemu's own control, not a claim about production's run-now.
|
|
491
494
|
|
|
492
|
-
See the [configuration schema](https://github.com/t-k/fireemu/blob/v0.
|
|
495
|
+
See the [configuration schema](https://github.com/t-k/fireemu/blob/v0.19.0/spec/config/fireemu.schema.json) for available settings and values.
|
|
493
496
|
|
|
494
497
|
### Firestore history limits
|
|
495
498
|
|
|
@@ -567,7 +570,7 @@ Fireemu is compatible with the listed Local Emulator Suite products as shipped b
|
|
|
567
570
|
|
|
568
571
|
The `strict` and `emulator` profiles differ in some behaviors to serve their respective purposes. Where the official emulator and production Firebase disagree, Fireemu also adopts production behavior in some cases and records the difference.
|
|
569
572
|
|
|
570
|
-
Check support for the specific APIs and conditions your application uses, rather than relying on product names alone. The [compatibility contract](https://github.com/t-k/fireemu/blob/v0.
|
|
573
|
+
Check support for the specific APIs and conditions your application uses, rather than relying on product names alone. The [compatibility contract](https://github.com/t-k/fireemu/blob/v0.19.0/spec/compatibility/contract.json) records scope and known differences. The [compatibility documentation](https://github.com/t-k/fireemu/blob/v0.19.0/docs/compatibility-contract.md) explains the verification process and how to interpret its records.
|
|
571
574
|
|
|
572
575
|
### Network exposure of the Storage port
|
|
573
576
|
|
|
@@ -594,7 +597,7 @@ By default every listener is on loopback, which a published container port canno
|
|
|
594
597
|
|
|
595
598
|
### Changes between versions
|
|
596
599
|
|
|
597
|
-
Configuration and behavior may change between releases. See the [CHANGELOG](https://github.com/t-k/fireemu/blob/v0.
|
|
600
|
+
Configuration and behavior may change between releases. See the [CHANGELOG](https://github.com/t-k/fireemu/blob/v0.19.0/CHANGELOG.md) for release changes.
|
|
598
601
|
|
|
599
602
|
## Performance
|
|
600
603
|
|
|
@@ -611,7 +614,7 @@ The following results come from one `standard` run at commit `f3b942c`. Ratios a
|
|
|
611
614
|
|
|
612
615
|
The 95% confidence interval for the startup-time ratio is `[21.4, 21.8]`. For the peak-memory ratio, calculated as official emulator divided by Fireemu, it is `[10.2, 11.1]`.
|
|
613
616
|
|
|
614
|
-
See [benchmark.yml](https://github.com/t-k/fireemu/blob/v0.
|
|
617
|
+
See [benchmark.yml](https://github.com/t-k/fireemu/blob/v0.19.0/.github/workflows/benchmark.yml) for the workflow and [`tools/bench/`](https://github.com/t-k/fireemu/tree/v0.19.0/tools/bench/) for the benchmark implementation.
|
|
615
618
|
|
|
616
619
|
## Reporting issues and contributing
|
|
617
620
|
|
|
@@ -619,8 +622,8 @@ When reporting an issue, include the Fireemu and Firebase SDK versions, the prof
|
|
|
619
622
|
|
|
620
623
|
For compatibility issues, also state whether you are comparing against the actual Firebase service or the official emulator, along with the expected and actual results. Remove credentials and personal information before sharing configuration files or logs.
|
|
621
624
|
|
|
622
|
-
See the [development guide](https://github.com/t-k/fireemu/blob/v0.
|
|
625
|
+
See the [development guide](https://github.com/t-k/fireemu/blob/v0.19.0/docs/development.md) for build and test instructions.
|
|
623
626
|
|
|
624
627
|
## License
|
|
625
628
|
|
|
626
|
-
Fireemu is licensed under the [Apache License 2.0](https://github.com/t-k/fireemu/blob/v0.
|
|
629
|
+
Fireemu is licensed under the [Apache License 2.0](https://github.com/t-k/fireemu/blob/v0.19.0/LICENSE). Third-party notices are listed in [THIRD_PARTY_LICENSES.txt](https://github.com/t-k/fireemu/blob/v0.19.0/THIRD_PARTY_LICENSES.txt).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fireemu",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "A local runtime for testing Firebase SDK and Functions code, checked against production Firebase behavior",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"emulator",
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
],
|
|
32
32
|
"type": "module",
|
|
33
33
|
"optionalDependencies": {
|
|
34
|
-
"@fireemu/darwin-arm64": "0.
|
|
35
|
-
"@fireemu/darwin-x64": "0.
|
|
36
|
-
"@fireemu/linux-x64": "0.
|
|
37
|
-
"@fireemu/linux-arm64": "0.
|
|
38
|
-
"@fireemu/win32-x64": "0.
|
|
34
|
+
"@fireemu/darwin-arm64": "0.19.0",
|
|
35
|
+
"@fireemu/darwin-x64": "0.19.0",
|
|
36
|
+
"@fireemu/linux-x64": "0.19.0",
|
|
37
|
+
"@fireemu/linux-arm64": "0.19.0",
|
|
38
|
+
"@fireemu/win32-x64": "0.19.0"
|
|
39
39
|
},
|
|
40
40
|
"engines": {
|
|
41
41
|
"node": ">=20"
|