pyric-admin 0.1.0-alpha.16 → 0.1.0-alpha.17

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 CHANGED
@@ -2,7 +2,7 @@
2
2
  <img src="https://pyric.dev/pyric-logo.svg" alt="Pyric" width="180" />
3
3
  </p>
4
4
 
5
- <h1 align="center">Build with Firebase without touching production</h1>
5
+ <h1 align="center">A local first Firebase development framework built for Agents</h1>
6
6
 
7
7
  <p align="center">Keep the same <code>firebase/*</code> code. Pyric runs it against a local backend during development, then gets out of the way when the app ships to Firebase.</p>
8
8
 
@@ -38,7 +38,7 @@ Add it to the existing Vite configuration:
38
38
  ```ts
39
39
  // vite.config.ts
40
40
  import { defineConfig } from 'vite';
41
- import { pyricSandbox } from '@pyric/cli/vite';
41
+ import { pyric } from '@pyric/cli/vite';
42
42
 
43
43
  export default defineConfig({
44
44
  plugins: [pyricSandbox()],
@@ -57,7 +57,7 @@ Pyric Studio is available on the Vite origin at `/__pyric/ui/`. It opens the sam
57
57
 
58
58
  For a static application or a Node process, `pyric dev` provides the same development-only package swap without the Vite plugin. The [CLI reference](packages/cli/docs/reference/cli.md) documents those paths and every command.
59
59
 
60
- ## Keep writing Firebase code
60
+ ## Keep using official Firebase SDKs
61
61
 
62
62
  Application code continues to import Firebase:
63
63
 
@@ -81,16 +81,18 @@ The Firebase configuration is accepted by the local mirror during development. T
81
81
 
82
82
  Pyric documents the parts that differ locally, including supported behavior, Security Rules, persistence, inspection, verification, and known gaps. See [use the Vite plugin](packages/cli/docs/how-to/use-the-vite-plugin.md) for the complete plugin contract.
83
83
 
84
- ## Inspect and correct a failed operation
84
+ ## Monitor the local environment in Pyric Studio
85
85
 
86
86
  Pyric Studio shows local data, requests, authentication state, Security Rules verdicts, and denied operations. Open `/__pyric/ui/` on the development server and reproduce the failure. A denied request includes the path and verdict needed to correct the rule or the application code.
87
87
 
88
+ <img width="1512" height="947" alt="image" src="https://github.com/user-attachments/assets/cb4a219c-c5f0-4fb7-8904-996416c0a79c" />
89
+
88
90
  The Vite plugin discovers the Firestore rules path from `firebase.json`, or falls back to `firestore.rules`. Saving that file replaces the active local ruleset without a production deploy. A parse failure leaves the last valid ruleset active and reports the error in the development server.
89
91
 
90
92
  State and test identities stay browser-local by default. Add `persist: true` to write a committable `.pyric/state/state.json`, or use `seed` to start from a known scenario:
91
93
 
92
94
  ```ts
93
- pyricSandbox({
95
+ pyric({
94
96
  persist: true,
95
97
  seed: 'seed.json',
96
98
  });
@@ -98,19 +100,21 @@ pyricSandbox({
98
100
 
99
101
  See [persistence and multi-tab behavior](packages/cli/docs/how-to/serve-persistence-and-multi-tab.md) for reset and seed precedence.
100
102
 
101
- ## Give coding agents the same local Firebase target
103
+ ## Connect Coding Agents to the Sandbox using the Pyric MCP server
102
104
 
103
105
  An agent can keep writing the same Firebase code while inspecting and changing the backend that the application is already using. Agent access is opt-in. Enable the MCP bridge in the Vite plugin:
104
106
 
105
107
  ```ts
106
- pyricSandbox({ bridge: true });
108
+ pyric({
109
+ bridge: true
110
+ });
107
111
  ```
108
112
 
109
- The bridge mounts on the Vite development origin and routes agent operations to the same SharedWorker backend used by the application and Studio. The included [Claude Code plugin](pyric-plugin/README.md) discovers that bridge, while other MCP clients can connect to its HTTP endpoint.
113
+ The bridge mounts on the Vite development origin and routes agent operations to the same SharedWorker backend used by the application and Studio.
110
114
 
111
115
  This protects the local workflow, not an independently credentialed process. A coding agent with production Firebase credentials or deployment access can still affect production outside Pyric.
112
116
 
113
- ## Verify the rules boundary
117
+ ## Verify the rules against production
114
118
 
115
119
  Development sessions capture Firestore and Realtime Database operations in `.pyric/last-session.json` by default. Replay those requests against candidate rules before deployment:
116
120
 
@@ -28,6 +28,12 @@ export type InitializeAdminAppConfig = {
28
28
  * application code asks the development sandbox for production credentials.
29
29
  */
30
30
  export declare function applicationDefault(): never;
31
+ /**
32
+ * Link-compatible mirror of `firebase-admin/app`'s `cert(serviceAccountPathOrObject)`.
33
+ * Returns an inert sandbox credential token so unchanged application setup code
34
+ * can assign `appOptions.credential = cert(...)` under `@pyric/cli/register`.
35
+ */
36
+ export declare function cert(serviceAccountPathOrObject: unknown): object;
31
37
  /**
32
38
  * Initialize a sandbox admin app.
33
39
  *
@@ -36,7 +42,7 @@ export declare function applicationDefault(): never;
36
42
  * `@pyric/cli/register`. Production callers must import `firebase-admin/app`
37
43
  * without Pyric activation instead of passing production options here.
38
44
  */
39
- export declare function initializeApp(config?: InitializeAdminAppConfig, name?: string): PyricAdminApp;
45
+ export declare function initializeApp(config?: InitializeAdminAppConfig | Record<string, unknown>, name?: string): PyricAdminApp;
40
46
  /** Return the registered app for `name`. */
41
47
  export declare function getApp(name?: string): PyricAdminApp;
42
48
  /** Return a copy of the app registry. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,eAAe,CAAC;AAGvB,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,eAAuC,CAAC;AACrE,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAE5C,yCAAyC;AACzC,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC;AAC5C,MAAM,MAAM,wBAAwB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5D;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,KAAK,CAK1C;AA4CD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,CAAC,EAAE,wBAAwB,EACjC,IAAI,GAAE,MAAyB,GAC9B,aAAa,CAqCf;AAED,4CAA4C;AAC5C,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAyB,GAAG,aAAa,CAarE;AAED,yCAAyC;AACzC,wBAAgB,OAAO,IAAI,aAAa,EAAE,CAEzC;AAED,8CAA8C;AAC9C,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3D;AAgED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,GAAG,IAAI,eAAe,CAE5E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,eAAe,CAAC;AAGvB,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,eAAuC,CAAC;AACrE,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAE5C,yCAAyC;AACzC,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC;AAC5C,MAAM,MAAM,wBAAwB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5D;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,KAAK,CAK1C;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,0BAA0B,EAAE,OAAO,GAAG,MAAM,CAEhE;AA4CD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,IAAI,GAAE,MAAyB,GAC9B,aAAa,CAkCf;AAED,4CAA4C;AAC5C,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAyB,GAAG,aAAa,CAarE;AAED,yCAAyC;AACzC,wBAAgB,OAAO,IAAI,aAAa,EAAE,CAEzC;AAED,8CAA8C;AAC9C,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3D;AAmED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,GAAG,IAAI,eAAe,CAE5E"}
package/dist/app/index.js CHANGED
@@ -22,6 +22,14 @@ export function applicationDefault() {
22
22
  throw new Error('pyric-admin/app: applicationDefault() is unavailable in the sandbox. ' +
23
23
  'Pyric development does not use production credentials.');
24
24
  }
25
+ /**
26
+ * Link-compatible mirror of `firebase-admin/app`'s `cert(serviceAccountPathOrObject)`.
27
+ * Returns an inert sandbox credential token so unchanged application setup code
28
+ * can assign `appOptions.credential = cert(...)` under `@pyric/cli/register`.
29
+ */
30
+ export function cert(serviceAccountPathOrObject) {
31
+ return { [Symbol.for('pyric.admin.credential')]: 'cert' };
32
+ }
25
33
  /** Local error with the observable firebase-admin app-error shape. */
26
34
  class FirebaseAppError extends Error {
27
35
  code;
@@ -60,10 +68,13 @@ function alreadyExists(name, code) {
60
68
  export function initializeApp(config, name = DEFAULT_APP_NAME) {
61
69
  validateAppName(name);
62
70
  const existing = appRegistry.get(name);
63
- if (config === undefined) {
71
+ const isBareOrAmbientConfig = config === undefined || !isSandboxConfig(config);
72
+ if (isBareOrAmbientConfig) {
64
73
  if (existing !== undefined) {
65
- if (ambientApps.has(existing))
74
+ const isExistingAmbient = ambientApps.has(existing);
75
+ if (isExistingAmbient) {
66
76
  return existing;
77
+ }
67
78
  throw alreadyExists(name, 'invalid-app-options');
68
79
  }
69
80
  const app = initializeAmbientApp(name);
@@ -71,10 +82,6 @@ export function initializeApp(config, name = DEFAULT_APP_NAME) {
71
82
  ambientApps.add(app);
72
83
  return app;
73
84
  }
74
- if (!isSandboxConfig(config)) {
75
- throw new TypeError('pyric-admin/app is a sandbox-only mirror. Production applications must ' +
76
- 'load firebase-admin/app without Pyric activation.');
77
- }
78
85
  if (existing !== undefined) {
79
86
  if (!ambientApps.has(existing) && existing.sandbox === config.sandbox)
80
87
  return existing;
@@ -141,8 +148,10 @@ function initializeAmbientApp(name) {
141
148
  }
142
149
  function parsePyricSandboxEnv(env) {
143
150
  const value = env.trim();
144
- if (value === 'remote')
151
+ const isRemoteOrBoolean = value === 'remote' || value === '1' || value === 'true';
152
+ if (isRemoteOrBoolean) {
145
153
  return {};
154
+ }
146
155
  if (value.startsWith('remote:')) {
147
156
  const url = value.slice('remote:'.length).trim();
148
157
  if (url === '') {
@@ -153,7 +162,7 @@ function parsePyricSandboxEnv(env) {
153
162
  return { url };
154
163
  }
155
164
  throw new Error(`pyric-admin: unrecognized PYRIC_SANDBOX value "${env}". Supported ` +
156
- 'values: "remote" (auto-discover the running `pyric dev`) or "remote:<url>".');
165
+ 'values: "1", "true", "remote" (auto-discover the running `pyric dev`), or "remote:<url>".');
157
166
  }
158
167
  function isSandboxConfig(config) {
159
168
  return typeof config === 'object' && config !== null && 'sandbox' in config;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"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"}
@@ -1,95 +1,7 @@
1
1
  import { type PyricAdminApp } from '../app/index.js';
2
- export interface CreateRequest {
3
- uid?: string;
4
- email?: string;
5
- emailVerified?: boolean;
6
- displayName?: string | null;
7
- photoURL?: string | null;
8
- phoneNumber?: string | null;
9
- disabled?: boolean;
10
- password?: string;
11
- }
12
- export interface UpdateRequest extends Omit<CreateRequest, 'uid'> {
13
- multiFactor?: unknown;
14
- providerToLink?: unknown;
15
- providersToUnlink?: unknown;
16
- }
17
- export interface DecodedIdToken extends Record<string, unknown> {
18
- aud: string;
19
- auth_time: number;
20
- exp: number;
21
- firebase: {
22
- identities: Record<string, unknown>;
23
- sign_in_provider: string;
24
- };
25
- iat: number;
26
- iss: string;
27
- sub: string;
28
- uid: string;
29
- }
30
- export interface UserMetadata {
31
- creationTime: string;
32
- lastSignInTime: string;
33
- toJSON(): Record<string, unknown>;
34
- }
35
- export interface UserInfo {
36
- providerId: string;
37
- uid: string;
38
- displayName?: string;
39
- email?: string;
40
- photoURL?: string;
41
- phoneNumber?: string;
42
- toJSON(): Record<string, unknown>;
43
- }
44
- export interface UserRecord {
45
- readonly uid: string;
46
- readonly email?: string;
47
- readonly emailVerified: boolean;
48
- readonly displayName?: string;
49
- readonly photoURL?: string;
50
- readonly phoneNumber?: string;
51
- readonly disabled: boolean;
52
- readonly metadata: UserMetadata;
53
- readonly providerData: UserInfo[];
54
- readonly customClaims?: Record<string, unknown>;
55
- readonly tenantId: string | null;
56
- toJSON(): Record<string, unknown>;
57
- }
58
- export interface ListUsersResult {
59
- users: UserRecord[];
60
- pageToken?: string;
61
- }
62
- /** Sandbox Auth interface intentionally limited to implemented behavior. */
63
- export interface Auth {
64
- readonly app: PyricAdminApp;
65
- createCustomToken(uid: string, developerClaims?: object): Promise<string>;
66
- verifyIdToken(idToken: string, checkRevoked?: boolean): Promise<DecodedIdToken>;
67
- createUser(properties: CreateRequest): Promise<UserRecord>;
68
- getUser(uid: string): Promise<UserRecord>;
69
- getUserByEmail(email: string): Promise<UserRecord>;
70
- deleteUser(uid: string): Promise<void>;
71
- setCustomUserClaims(uid: string, customUserClaims: object | null): Promise<void>;
72
- updateUser(uid: string, properties: UpdateRequest): Promise<UserRecord>;
73
- listUsers(maxResults?: number, pageToken?: string): Promise<ListUsersResult>;
74
- [key: string]: unknown;
75
- }
76
- /**
77
- * Token format minted by `createCustomToken` and parsed by
78
- * `verifyIdToken`. Exported as a constant so tests can lock the shape.
79
- *
80
- * Layout: `pyric-sandbox-custom:${uid}:${jsonClaims}`
81
- *
82
- * - The prefix lets `verifyIdToken` reject foreign tokens with a clear
83
- * "not a sandbox token" error rather than NaN'ing out.
84
- * - `uid` is colon-free per the auto-uid format above.
85
- * - `jsonClaims` is the JSON-stringified developer claims (or `{}` when
86
- * none were provided). Round-trips losslessly through `JSON.parse`.
87
- *
88
- * NOT a JWT. NOT signed. Do not use this token format to talk to any
89
- * real Firebase service — it only round-trips through this same
90
- * sandbox backend.
91
- */
92
- export declare const SANDBOX_TOKEN_PREFIX = "pyric-sandbox-custom";
2
+ import type { Auth } from './types.js';
3
+ export * from './types.js';
4
+ export { SANDBOX_TOKEN_PREFIX } from './token-decoders.js';
93
5
  /**
94
6
  * Return an `Auth` handle for the given app — or for the DEFAULT app when
95
7
  * called with no argument (mirrors firebase-admin's no-arg `getAuth()`:
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AA0EA,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EACV,IAAI,EAML,MAAM,YAAY,CAAC;AAIpB,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAwmB3D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,CAoBjD"}
@@ -64,6 +64,10 @@
64
64
  import { isRemoteSandbox, } from 'pyric/sandbox';
65
65
  import { ADMIN_APP_TARGET, getApp, } from '../app/index.js';
66
66
  import { assertAdminAppActive } from '../app/lifecycle.js';
67
+ import { SANDBOX_TOKEN_PREFIX } from './token-decoders.js';
68
+ import { verifySandboxIdToken } from './verify-token.js';
69
+ export * from './types.js';
70
+ export { SANDBOX_TOKEN_PREFIX } from './token-decoders.js';
67
71
  // ─── Sandbox backend ────────────────────────────────────────────────────
68
72
  /**
69
73
  * Per-sandbox in-memory store. One instance per `Sandbox` (tracked in
@@ -87,7 +91,7 @@ class AuthStore {
87
91
  * collision resistance — it needs a stable, debuggable identifier
88
92
  * that doesn't collide *within one sandbox session*. A counter plus
89
93
  * a constant prefix is enough; padding keeps the visual width
90
- * roughly consistent with Firebase Auth uids.
94
+ * roughly consistent with Firebase Auth uids.
91
95
  */
92
96
  mintUid() {
93
97
  const n = String(this.nextAutoUid++).padStart(20, '0');
@@ -138,91 +142,17 @@ function storeFor(sandbox) {
138
142
  }
139
143
  return store;
140
144
  }
141
- /**
142
- * Token format minted by `createCustomToken` and parsed by
143
- * `verifyIdToken`. Exported as a constant so tests can lock the shape.
144
- *
145
- * Layout: `pyric-sandbox-custom:${uid}:${jsonClaims}`
146
- *
147
- * - The prefix lets `verifyIdToken` reject foreign tokens with a clear
148
- * "not a sandbox token" error rather than NaN'ing out.
149
- * - `uid` is colon-free per the auto-uid format above.
150
- * - `jsonClaims` is the JSON-stringified developer claims (or `{}` when
151
- * none were provided). Round-trips losslessly through `JSON.parse`.
152
- *
153
- * NOT a JWT. NOT signed. Do not use this token format to talk to any
154
- * real Firebase service — it only round-trips through this same
155
- * sandbox backend.
156
- */
157
- export const SANDBOX_TOKEN_PREFIX = 'pyric-sandbox-custom';
158
145
  /**
159
146
  * Mint a deterministic sandbox token (the {@link SANDBOX_TOKEN_PREFIX}
160
147
  * format). Stateless — shared verbatim by the local and remote sandbox
161
148
  * arms, so a token minted against either round-trips through
162
- * {@link verifySandboxIdToken} on the other.
149
+ * verifySandboxIdToken on the other.
163
150
  */
164
151
  function mintSandboxCustomToken(uid, developerClaims) {
165
152
  const claims = developerClaims ?? {};
166
153
  const token = `${SANDBOX_TOKEN_PREFIX}:${uid}:${JSON.stringify(claims)}`;
167
154
  return Promise.resolve(token);
168
155
  }
169
- /**
170
- * Parse a token minted by {@link mintSandboxCustomToken}. Returns a
171
- * `DecodedIdToken`-shaped object — every required field is filled with a
172
- * sandbox-appropriate placeholder (`iss`/`aud` = `pyric-sandbox`, time
173
- * fields = now), and the developer claims are spread onto the result so
174
- * `decoded.role` etc. retain the familiar Firebase Admin shape.
175
- *
176
- * Throws on any token that doesn't match the
177
- * `${SANDBOX_TOKEN_PREFIX}:${uid}:${json}` shape — including real JWTs
178
- * that another verifier would parse. The sandbox backends are
179
- * intentionally not drop-ins for production token verification.
180
- */
181
- function verifySandboxIdToken(idToken) {
182
- if (typeof idToken !== 'string' || !idToken.startsWith(`${SANDBOX_TOKEN_PREFIX}:`)) {
183
- return Promise.reject(new Error('pyric-admin/auth: verifyIdToken on the sandbox backend only ' +
184
- 'accepts tokens minted by this sandbox\'s createCustomToken. ' +
185
- `Token prefix must be "${SANDBOX_TOKEN_PREFIX}:".`));
186
- }
187
- // The token is `prefix:uid:json`. Split on the first two colons
188
- // only — the JSON payload may itself contain colons (e.g. inside
189
- // a string value) so `split(':')` with no limit would corrupt it.
190
- const firstColon = idToken.indexOf(':');
191
- const secondColon = idToken.indexOf(':', firstColon + 1);
192
- if (secondColon < 0) {
193
- return Promise.reject(new Error(`pyric-admin/auth: verifyIdToken received a malformed sandbox token (missing claims segment): ${idToken}`));
194
- }
195
- const uid = idToken.slice(firstColon + 1, secondColon);
196
- const jsonClaims = idToken.slice(secondColon + 1);
197
- let claims;
198
- try {
199
- claims = JSON.parse(jsonClaims);
200
- }
201
- catch (e) {
202
- return Promise.reject(new Error(`pyric-admin/auth: verifyIdToken failed to parse sandbox token claims as JSON: ${e.message}`));
203
- }
204
- const nowSec = Math.floor(Date.now() / 1000);
205
- // `DecodedIdToken` requires `aud`/`iss`/`sub`/`uid`/`auth_time`/
206
- // `exp`/`iat`/`firebase` to be present; the sandbox fills them
207
- // with placeholders so consumers that read them get sensible
208
- // values rather than `undefined`. Developer claims are spread on
209
- // top so they shadow nothing critical.
210
- const decoded = {
211
- aud: 'pyric-sandbox',
212
- auth_time: nowSec,
213
- exp: nowSec + 3600,
214
- firebase: {
215
- identities: {},
216
- sign_in_provider: 'custom',
217
- },
218
- iat: nowSec,
219
- iss: 'pyric-sandbox',
220
- sub: uid,
221
- uid,
222
- ...claims,
223
- };
224
- return Promise.resolve(decoded);
225
- }
226
156
  /**
227
157
  * Build the in-memory `Auth` handle for a sandbox app. Returns an
228
158
  * object structurally compatible with `firebase-admin/auth`'s `Auth`
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Modular token decoders for `pyric-admin/auth` verification.
3
+ * Each decoder strategy isolates prefix detection and claim decoding
4
+ * for one recognized token format.
5
+ */
6
+ import type { DecodedIdToken } from './types.js';
7
+ /**
8
+ * Token format minted by `createCustomToken` and parsed by
9
+ * `verifyIdToken`. Exported as a constant so tests can lock the shape.
10
+ *
11
+ * Layout: `pyric-sandbox-custom:${uid}:${jsonClaims}`
12
+ *
13
+ * - The prefix lets `verifyIdToken` reject foreign tokens with a clear
14
+ * "not a sandbox token" error rather than NaN'ing out.
15
+ * - `uid` is colon-free per the auto-uid format above.
16
+ * - `jsonClaims` is the JSON-stringified developer claims (or `{}` when
17
+ * none were provided). Round-trips losslessly through `JSON.parse`.
18
+ *
19
+ * NOT a JWT. NOT signed. Do not use this token format to talk to any
20
+ * real Firebase service — it only round-trips through this same
21
+ * sandbox backend.
22
+ */
23
+ export declare const SANDBOX_TOKEN_PREFIX = "pyric-sandbox-custom";
24
+ export interface TokenDecoder {
25
+ readonly name: string;
26
+ readonly prefix: string;
27
+ decode(token: string, nowSec: number): DecodedIdToken;
28
+ }
29
+ export declare const TOKEN_DECODERS: TokenDecoder[];
30
+ //# sourceMappingURL=token-decoders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-decoders.d.ts","sourceRoot":"","sources":["../../src/auth/token-decoders.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;CACvD;AAgID,eAAO,MAAM,cAAc,EAAE,YAAY,EAA+C,CAAC"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Token format minted by `createCustomToken` and parsed by
3
+ * `verifyIdToken`. Exported as a constant so tests can lock the shape.
4
+ *
5
+ * Layout: `pyric-sandbox-custom:${uid}:${jsonClaims}`
6
+ *
7
+ * - The prefix lets `verifyIdToken` reject foreign tokens with a clear
8
+ * "not a sandbox token" error rather than NaN'ing out.
9
+ * - `uid` is colon-free per the auto-uid format above.
10
+ * - `jsonClaims` is the JSON-stringified developer claims (or `{}` when
11
+ * none were provided). Round-trips losslessly through `JSON.parse`.
12
+ *
13
+ * NOT a JWT. NOT signed. Do not use this token format to talk to any
14
+ * real Firebase service — it only round-trips through this same
15
+ * sandbox backend.
16
+ */
17
+ export const SANDBOX_TOKEN_PREFIX = 'pyric-sandbox-custom';
18
+ function resolveStringClaim(claims, key, fallback) {
19
+ const val = claims[key];
20
+ const hasStringValue = typeof val === 'string';
21
+ return hasStringValue ? val : fallback;
22
+ }
23
+ function resolveNumberClaim(claims, key, fallback) {
24
+ const val = claims[key];
25
+ const hasNumberValue = typeof val === 'number';
26
+ return hasNumberValue ? val : fallback;
27
+ }
28
+ function resolveUid(idToken, firstColon, claims) {
29
+ const rawSub = claims['sub'];
30
+ const hasExplicitSubjectClaim = typeof rawSub === 'string';
31
+ if (hasExplicitSubjectClaim) {
32
+ return rawSub;
33
+ }
34
+ const prefixSegment = idToken.slice('sandbox-id-token-'.length, firstColon);
35
+ const lastHyphen = prefixSegment.lastIndexOf('-');
36
+ const hasHyphenatedSerialSuffix = lastHyphen > 0;
37
+ if (hasHyphenatedSerialSuffix) {
38
+ return prefixSegment.slice(0, lastHyphen);
39
+ }
40
+ return prefixSegment;
41
+ }
42
+ function resolveFirebaseClaim(claims) {
43
+ const rawFirebase = claims['firebase'];
44
+ const isMissingFirebaseClaim = !rawFirebase || typeof rawFirebase !== 'object';
45
+ if (isMissingFirebaseClaim) {
46
+ return { identities: {}, sign_in_provider: 'custom' };
47
+ }
48
+ const fb = rawFirebase;
49
+ const signInProvider = resolveStringClaim(fb, 'sign_in_provider', 'custom');
50
+ const rawIdentities = fb['identities'];
51
+ const isMissingIdentitiesMap = !rawIdentities || typeof rawIdentities !== 'object';
52
+ if (isMissingIdentitiesMap) {
53
+ return { identities: {}, sign_in_provider: signInProvider };
54
+ }
55
+ return { identities: rawIdentities, sign_in_provider: signInProvider };
56
+ }
57
+ const customTokenDecoder = {
58
+ name: 'custom-token',
59
+ prefix: `${SANDBOX_TOKEN_PREFIX}:`,
60
+ decode(idToken, nowSec) {
61
+ const firstColon = idToken.indexOf(':');
62
+ const secondColon = idToken.indexOf(':', firstColon + 1);
63
+ const isMissingClaimsSegment = secondColon < 0;
64
+ if (isMissingClaimsSegment) {
65
+ throw new Error(`pyric-admin/auth: verifyIdToken received a malformed sandbox token (missing claims segment): ${idToken}`);
66
+ }
67
+ const uid = idToken.slice(firstColon + 1, secondColon);
68
+ const jsonClaims = idToken.slice(secondColon + 1);
69
+ let claims;
70
+ try {
71
+ claims = JSON.parse(jsonClaims);
72
+ }
73
+ catch (e) {
74
+ throw new Error(`pyric-admin/auth: verifyIdToken failed to parse sandbox token claims as JSON: ${e.message}`);
75
+ }
76
+ return {
77
+ aud: 'pyric-sandbox',
78
+ auth_time: nowSec,
79
+ exp: nowSec + 3600,
80
+ firebase: {
81
+ identities: {},
82
+ sign_in_provider: 'custom',
83
+ },
84
+ iat: nowSec,
85
+ iss: 'pyric-sandbox',
86
+ sub: uid,
87
+ uid,
88
+ ...claims,
89
+ };
90
+ },
91
+ };
92
+ const clientIdTokenDecoder = {
93
+ name: 'client-id-token',
94
+ prefix: 'sandbox-id-token-',
95
+ decode(idToken, nowSec) {
96
+ const firstColon = idToken.indexOf(':');
97
+ const isMissingClaimsSegment = firstColon < 0;
98
+ if (isMissingClaimsSegment) {
99
+ throw new Error(`pyric-admin/auth: verifyIdToken received a malformed client ID token (missing claims segment after colon): ${idToken}`);
100
+ }
101
+ const jsonClaims = idToken.slice(firstColon + 1);
102
+ let claims;
103
+ try {
104
+ claims = JSON.parse(jsonClaims);
105
+ }
106
+ catch (e) {
107
+ throw new Error(`pyric-admin/auth: verifyIdToken failed to parse client ID token claims as JSON: ${e.message}`);
108
+ }
109
+ const uid = resolveUid(idToken, firstColon, claims);
110
+ const aud = resolveStringClaim(claims, 'aud', 'pyric-sandbox');
111
+ const iss = resolveStringClaim(claims, 'iss', 'https://sandbox.pyric.dev');
112
+ const exp = resolveNumberClaim(claims, 'exp', nowSec + 3600);
113
+ const iat = resolveNumberClaim(claims, 'iat', nowSec);
114
+ const authTime = resolveNumberClaim(claims, 'auth_time', nowSec);
115
+ const firebase = resolveFirebaseClaim(claims);
116
+ return {
117
+ ...claims,
118
+ aud,
119
+ auth_time: authTime,
120
+ exp,
121
+ firebase,
122
+ iat,
123
+ iss,
124
+ sub: uid,
125
+ uid,
126
+ };
127
+ },
128
+ };
129
+ export const TOKEN_DECODERS = [customTokenDecoder, clientIdTokenDecoder];
130
+ //# sourceMappingURL=token-decoders.js.map