@crvouga/mockingbird-service-fcm 1.3.0 → 2.1.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/DISCOVERY.md +2 -2
- package/README.md +7 -7
- package/SUPPORT.md +2 -2
- package/dist/admin.js +1 -1
- package/dist/{chunk-QMKS4S45.js → chunk-K7GBD2SV.js} +34 -4
- package/dist/chunk-K7GBD2SV.js.map +7 -0
- package/dist/{chunk-IHA55YOT.js → chunk-ZR2JECE4.js} +5 -5
- package/dist/{chunk-IHA55YOT.js.map → chunk-ZR2JECE4.js.map} +2 -2
- package/dist/cli.js +2 -2
- package/dist/index.js +1 -1
- package/dist/server.js +2 -2
- package/openapi.yaml +1 -1
- package/package.json +3 -3
- package/dist/chunk-QMKS4S45.js.map +0 -7
package/DISCOVERY.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @crvouga/mockingbird-service-fcm discovery
|
|
2
2
|
|
|
3
3
|
This is the installed-package index for coding agents and tooling. All relative links resolve
|
|
4
|
-
inside `node_modules/@crvouga/mockingbird-service-fcm/`; no repository checkout is needed to discover the
|
|
4
|
+
inside `node_modules/@crvouga/mockingbird-service-fcm/`; no repository checkout is needed to discover the emulator's
|
|
5
5
|
supported surface or documented behavior.
|
|
6
6
|
|
|
7
7
|
## Capability and behavior sources
|
|
@@ -48,7 +48,7 @@ designed for assertions and diagnosis by consuming test suites.
|
|
|
48
48
|
## Report a mismatch or missing capability
|
|
49
49
|
|
|
50
50
|
Follow the [agent reporting contract](https://github.com/crvouga/mockingbird/blob/main/docs/REPORTING_ISSUES.md). Include package version,
|
|
51
|
-
operation/command, a minimal redacted request, actual
|
|
51
|
+
operation/command, a minimal redacted request, actual emulator result, expected oracle result or vendor
|
|
52
52
|
documentation, and whether the mismatch appears in the matrix. Never include keys, tokens,
|
|
53
53
|
customer data, prompts, PHI, card data, or unredacted recordings.
|
|
54
54
|
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# @crvouga/mockingbird-service-fcm
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Local emulators. Real API contracts. Part of [Mockingbird](https://github.com/crvouga/mockingbird).
|
|
4
4
|
|
|
5
|
-
Stateful
|
|
5
|
+
Stateful emulator of the **Firebase Cloud Messaging HTTP v1** send API (`POST /v1/projects/{project_id}/messages:send`), the call `firebase-admin` makes. Projects, access tokens, and registration tokens are fixtures. There is no FCM sandbox. This package is `status: "wip"`.
|
|
6
6
|
|
|
7
7
|
- Operation coverage: [SUPPORT.md](https://github.com/crvouga/mockingbird/blob/main/packages/service/fcm/SUPPORT.md)
|
|
8
8
|
- The contract (`openapi.yaml`) is hand-authored from the FCM REST reference and firebase-admin 12.7.0 / 13.5.0.
|
|
@@ -17,7 +17,7 @@ ESM only. Node >= 22 or Bun >= 1.2. No native dependencies. Serve it with `npx m
|
|
|
17
17
|
|
|
18
18
|
## Usage
|
|
19
19
|
|
|
20
|
-
`firebase-admin` hardcodes `https://fcm.googleapis.com`. Point it at the
|
|
20
|
+
`firebase-admin` hardcodes `https://fcm.googleapis.com`. Point it at the emulator with `createAdminTransport` (an `https.Agent` that dials the emulator) and call `enableLegacyHttpTransport()` so multicast sends honor that agent. `send` is already HTTP/1.1. The fixture project is `demo-project`, the fixture device token is `fixture-device-token`, and any bearer is accepted until you turn on `strict`.
|
|
21
21
|
|
|
22
22
|
```ts
|
|
23
23
|
import { createServer } from "@crvouga/mockingbird-service-fcm/server"
|
|
@@ -104,7 +104,7 @@ Logical message time is `clockOffsetMs` plus the process-wide runtime clock. `PO
|
|
|
104
104
|
|
|
105
105
|
### SDK error codes
|
|
106
106
|
|
|
107
|
-
firebase-admin maps `error.details[].errorCode` when `@type` is `type.googleapis.com/google.firebase.fcm.v1.FcmError`, otherwise `error.status`. Two mappings differ from a naive reading of the error-code names, and the
|
|
107
|
+
firebase-admin maps `error.details[].errorCode` when `@type` is `type.googleapis.com/google.firebase.fcm.v1.FcmError`, otherwise `error.status`. Two mappings differ from a naive reading of the error-code names, and the emulator follows firebase-admin 12.7.0 and 13.5.0:
|
|
108
108
|
|
|
109
109
|
- A JSON 401 with status `UNAUTHENTICATED` and no FcmError details becomes `messaging/third-party-auth-error`. `messaging/authentication-error` is what the SDK uses for a non-JSON 401.
|
|
110
110
|
- FcmError `DEADLINE_EXCEEDED` is not in the messaging map, so the SDK reports `messaging/unknown-error`. `UNAVAILABLE` is `messaging/server-unavailable`.
|
|
@@ -122,8 +122,8 @@ firebase-admin maps `error.details[].errorCode` when `@type` is `type.googleapis
|
|
|
122
122
|
|
|
123
123
|
| Export | Kind | Description |
|
|
124
124
|
| --- | --- | --- |
|
|
125
|
-
| `FcmAPI` | class | In-process
|
|
126
|
-
| `createRuntime` | function |
|
|
125
|
+
| `FcmAPI` | class | In-process emulator: `fetch(request)`, `reset()`, `logicalNow()`, `outbox(query)`, `inbox(token)`, `registerToken`, `setTokenState`, `ackInbox`, `deliverPending`, `dropMessage`, `duplicateMessage`, `putScript`. Options: `sqlite`, `now`, `namespace`, `settings`. |
|
|
126
|
+
| `createRuntime` | function | Emulator plus `/__admin/health`, `/__admin/*`, namespaces, clock, presets, and the journal. Options: `sqlite`, `clock`, `seed`, `adminKey`, `onLog`, `settings`. |
|
|
127
127
|
| `FCM_PRESETS` | object | Named fault presets. |
|
|
128
128
|
| `FCM_NAMESPACE` | string | Service name, `"fcm"`. |
|
|
129
129
|
| `FCM_FIXTURE_PROJECT` | string | Seeded project id, `"demo-project"`. |
|
|
@@ -132,6 +132,6 @@ firebase-admin maps `error.details[].errorCode` when `@type` is `type.googleapis
|
|
|
132
132
|
| `fcmCredential` | function | `(accessToken?)` → `{ getAccessToken }` for `initializeApp({ credential })`. |
|
|
133
133
|
| `document`, `operationIds`, `supportedOperationIds` | values | The OpenAPI contract and its operation ids. |
|
|
134
134
|
| `createServer`, `serveTarget`, `DEFAULT_PORT` (`./server`) | Node | Serve over `node:http`. CLI flag `--strict`. Port 8826. |
|
|
135
|
-
| `createAdminTransport` (`./admin`) | Node | `{ origin, token? }` → `{ credential, agent, port, close }`. `agent` is an `https.Agent` aimed at the
|
|
135
|
+
| `createAdminTransport` (`./admin`) | Node | `{ origin, token? }` → `{ credential, agent, port, close }`. `agent` is an `https.Agent` aimed at the emulator. |
|
|
136
136
|
|
|
137
137
|
Part of [mockingbird](https://github.com/crvouga/mockingbird).
|
package/SUPPORT.md
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
Generated from `openapi.yaml`; do not edit by hand.
|
|
4
4
|
|
|
5
5
|
- operations in spec: **1**
|
|
6
|
-
- supported by the
|
|
6
|
+
- supported by the emulator: **1**
|
|
7
7
|
- parity enabled: **1**
|
|
8
8
|
|
|
9
|
-
| operationId | route |
|
|
9
|
+
| operationId | route | emulator | parity | notes |
|
|
10
10
|
| --- | --- | --- | --- | --- |
|
|
11
11
|
| `SendMessage` | `POST /v1/projects/{project_id}/messages:send` | ✅ supported | ⚠️ unsafe (opt-in) | |
|