pyric-admin 0.1.0-alpha.28 → 0.1.0-alpha.30

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.
@@ -0,0 +1,27 @@
1
+ /**
2
+ * firebase-admin's error shape (lib/utils/error.js, 13.10.0), shared by the
3
+ * admin mirrors so each service's error class matches upstream in one place.
4
+ *
5
+ * Upstream keeps `{ code, message }` in an own `errorInfo` property and reads
6
+ * `code` through a prototype getter. Its `message` getter is shadowed by the
7
+ * own, non-enumerable `message` that `Error` sets, so only `code` needs one
8
+ * here. `toJSON()` returns both, and
9
+ * `hasCode()` tests the unprefixed code. It never sets `name`, so `name` reads
10
+ * `Error`. The own enumerable keys are `errorInfo` and `codePrefix`.
11
+ */
12
+ export interface ErrorInfo {
13
+ code: string;
14
+ message: string;
15
+ }
16
+ export declare class FirebaseError extends Error {
17
+ readonly errorInfo: ErrorInfo;
18
+ constructor(errorInfo: ErrorInfo);
19
+ get code(): string;
20
+ toJSON(): ErrorInfo;
21
+ }
22
+ export declare class PrefixedFirebaseError extends FirebaseError {
23
+ readonly codePrefix: string;
24
+ constructor(codePrefix: string, code: string, message: string);
25
+ hasCode(code: string): boolean;
26
+ }
27
+ //# sourceMappingURL=firebase-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase-error.d.ts","sourceRoot":"","sources":["../../src/app/firebase-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;gBAElB,SAAS,EAAE,SAAS;IAMhC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,MAAM,IAAI,SAAS;CAGpB;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAK7D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG/B"}
@@ -0,0 +1,25 @@
1
+ export class FirebaseError extends Error {
2
+ errorInfo;
3
+ constructor(errorInfo) {
4
+ super(errorInfo.message);
5
+ this.errorInfo = errorInfo;
6
+ Object.setPrototypeOf(this, new.target.prototype);
7
+ }
8
+ get code() {
9
+ return this.errorInfo?.code;
10
+ }
11
+ toJSON() {
12
+ return { code: this.code, message: this.message };
13
+ }
14
+ }
15
+ export class PrefixedFirebaseError extends FirebaseError {
16
+ codePrefix;
17
+ constructor(codePrefix, code, message) {
18
+ super({ code: `${codePrefix}/${code}`, message });
19
+ this.codePrefix = codePrefix;
20
+ }
21
+ hasCode(code) {
22
+ return `${this.codePrefix}/${code}` === this.code;
23
+ }
24
+ }
25
+ //# sourceMappingURL=firebase-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase-error.js","sourceRoot":"","sources":["../../src/app/firebase-error.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,SAAS,CAAY;IAE9B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,aAAa;IAC7C,UAAU,CAAS;IAE5B,YAAY,UAAkB,EAAE,IAAY,EAAE,OAAe;QAC3D,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,UAAU,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC;IACpD,CAAC;CACF"}
@@ -1,15 +1,49 @@
1
1
  /**
2
- * `pyric-admin/app-check`: deferred service handle for `firebase-admin/app-check`.
2
+ * `pyric-admin/app-check`: the sandbox mirror of `firebase-admin/app-check`.
3
+ *
4
+ * `createToken` mints the same sandbox token the web mirror's `getToken`
5
+ * returns (shared in `pyric/sandbox/internal`), so a token minted on either
6
+ * plane verifies here. Shapes, TTL limits, error codes, and consume semantics
7
+ * follow the `app-check-admin-` captures; the rows are in
8
+ * packages/conformance/registry/app-check.ts (surface `app-check-admin`).
9
+ *
10
+ * One deliberate difference: the sandbox has no list of the project's
11
+ * registered apps, so `createToken` accepts any app id (row
12
+ * `app-check-admin#create-token-unknown-app`, diverged by design).
3
13
  */
4
- import type { PyricAdminApp } from '../app/index.js';
5
- export { PyricDeferredApiError } from '../deferred.js';
14
+ import { type AppCheckTokenClaims } from 'pyric/sandbox/internal';
15
+ import { type PyricAdminApp } from '../app/index.js';
16
+ export interface AppCheckTokenOptions {
17
+ ttlMillis?: number;
18
+ }
19
+ export interface AppCheckToken {
20
+ token: string;
21
+ ttlMillis: number;
22
+ }
23
+ export interface VerifyAppCheckTokenOptions {
24
+ consume?: boolean;
25
+ }
26
+ export interface DecodedAppCheckToken extends AppCheckTokenClaims {
27
+ app_id: string;
28
+ }
29
+ export interface VerifyAppCheckTokenResponse {
30
+ appId: string;
31
+ token: DecodedAppCheckToken;
32
+ alreadyConsumed?: boolean;
33
+ }
6
34
  export declare class AppCheck {
7
35
  #private;
8
36
  /** @internal */
9
- constructor(...args: unknown[]);
37
+ constructor(app: PyricAdminApp);
10
38
  get app(): PyricAdminApp;
11
- createToken: (...args: unknown[]) => Promise<never>;
12
- verifyToken: (...args: unknown[]) => Promise<never>;
39
+ createToken(appId: string, options?: AppCheckTokenOptions): Promise<AppCheckToken>;
40
+ /**
41
+ * Checks in firebase-admin's order (app-check.js, token-verifier.js,
42
+ * utils/jwt.js): the options and the token's type, synchronously as
43
+ * upstream throws them; then the project, decoding, content, key,
44
+ * signature, and last `nbf` and `exp` as jsonwebtoken reads them.
45
+ */
46
+ verifyToken(appCheckToken: string, options?: VerifyAppCheckTokenOptions): Promise<VerifyAppCheckTokenResponse>;
13
47
  }
14
- export declare const getAppCheck: (app?: PyricAdminApp) => AppCheck;
48
+ export declare function getAppCheck(app?: PyricAdminApp): AppCheck;
15
49
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app-check/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,qBAAa,QAAQ;;IAGnB,gBAAgB;gBACJ,GAAG,IAAI,EAAE,OAAO,EAAE;IAI9B,IAAI,GAAG,IAAI,aAAa,CAEvB;IAEO,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;CAC7D;AAED,eAAO,MAAM,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,KAAK,QAOlD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app-check/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAyC,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAEzG,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAyC7D,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,oBAAoB,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAgCD,qBAAa,QAAQ;;IAGnB,gBAAgB;gBACJ,GAAG,EAAE,aAAa;IAI9B,IAAI,GAAG,IAAI,aAAa,CAEvB;IAEK,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAUxF;;;;;OAKG;IACH,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAuC/G;AAoCD,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,QAAQ,CAQzD"}
@@ -1,16 +1,192 @@
1
- import { guardDeferredServiceApp, wireDeferredService } from '../deferred.js';
2
- export { PyricDeferredApiError } from '../deferred.js';
1
+ /**
2
+ * `pyric-admin/app-check`: the sandbox mirror of `firebase-admin/app-check`.
3
+ *
4
+ * `createToken` mints the same sandbox token the web mirror's `getToken`
5
+ * returns (shared in `pyric/sandbox/internal`), so a token minted on either
6
+ * plane verifies here. Shapes, TTL limits, error codes, and consume semantics
7
+ * follow the `app-check-admin-` captures; the rows are in
8
+ * packages/conformance/registry/app-check.ts (surface `app-check-admin`).
9
+ *
10
+ * One deliberate difference: the sandbox has no list of the project's
11
+ * registered apps, so `createToken` accepts any app id (row
12
+ * `app-check-admin#create-token-unknown-app`, diverged by design).
13
+ */
14
+ import { checkAppCheckToken, mintAppCheckToken } from 'pyric/sandbox/internal';
15
+ import { PrefixedFirebaseError } from '../app/firebase-error.js';
16
+ import { getApp } from '../app/index.js';
17
+ import { assertAdminAppActive } from '../app/lifecycle.js';
18
+ const MINUTE_MILLIS = 60 * 1000;
19
+ const MIN_TTL_MILLIS = 30 * MINUTE_MILLIS;
20
+ const MAX_TTL_MILLIS = 7 * 24 * 60 * MINUTE_MILLIS;
21
+ const DEFAULT_TTL_MILLIS = 60 * MINUTE_MILLIS;
22
+ const MESSAGES = {
23
+ notString: 'App check token must be a non-null string.',
24
+ options: 'VerifyAppCheckTokenOptions must be a non-null object.',
25
+ algorithm: (alg) => `The provided App Check token has incorrect algorithm. Expected "RS256" but got "${String(alg)}".`,
26
+ noSub: 'The provided App Check token has no "sub" (subject) claim.',
27
+ emptySub: 'The provided App Check token has an empty string "sub" (subject) claim.',
28
+ noMatchingKid: 'The provided App Check token has "kid" claim which does not correspond to a known public key. Most likely the provided App Check token is expired, so get a fresh token from your client app and try again.',
29
+ ttl: 'ttlMillis must be a duration in milliseconds between 30 minutes and 7 days (inclusive).',
30
+ appId: '`appId` must be a non-empty string.',
31
+ decode: 'Decoding App Check token failed. Make sure you passed the entire string JWT which represents the Firebase App Check token.',
32
+ signature: 'The provided App Check token has invalid signature.',
33
+ expired: 'The provided App Check token has expired. Get a fresh App Check token from your client app and try again.',
34
+ issuer: 'The provided App Check token has incorrect "iss" (issuer) claim.',
35
+ createNoProject: 'Failed to determine project ID. Initialize the SDK with service account credentials or set project ID as an app option. Alternatively, set the GOOGLE_CLOUD_PROJECT environment variable.',
36
+ noProject: 'Must initialize app with a cert credential or set your Firebase project ID as the GOOGLE_CLOUD_PROJECT environment variable to verify an App Check token.',
37
+ audience: (scoped, aud) => `The provided App Check token has incorrect "aud" (audience) claim. Expected "${scoped}" but got "${String(aud)}". Make sure the App Check token comes from the same Firebase project as the service account used to authenticate this SDK.`,
38
+ };
39
+ const APP_CHECK_ISSUER = 'https://firebaseappcheck.googleapis.com/';
40
+ /** firebase-admin's FirebaseAppCheckError: a PrefixedFirebaseError with prefix `app-check`. */
41
+ class FirebaseAppCheckError extends PrefixedFirebaseError {
42
+ constructor(code, message) {
43
+ super('app-check', code, message);
44
+ }
45
+ }
46
+ /**
47
+ * Consumed token ids, per sandbox handle, for this process. The map sits
48
+ * behind Symbol.for, as the app registry in ../app/index.ts does, so the
49
+ * require and import copies of this module that the register hook can load
50
+ * share it. It is in memory: it does not survive a restart, and two processes
51
+ * on one dev server each keep their own. Production consumes once per
52
+ * project; moving this into the sandbox is #1297.
53
+ */
54
+ const CONSUMED_BY_SANDBOX = Symbol.for('pyric.admin.appCheck.consumedBySandbox');
55
+ function consumedFor(app) {
56
+ const global = globalThis;
57
+ const bySandbox = (global[CONSUMED_BY_SANDBOX] ??= new WeakMap());
58
+ const key = app.sandbox;
59
+ let consumed = bySandbox.get(key);
60
+ if (!consumed) {
61
+ consumed = new Set();
62
+ bySandbox.set(key, consumed);
63
+ }
64
+ return consumed;
65
+ }
66
+ function ttlFrom(options) {
67
+ const ttl = options?.ttlMillis ?? DEFAULT_TTL_MILLIS;
68
+ const inRange = typeof ttl === 'number' && ttl >= MIN_TTL_MILLIS && ttl <= MAX_TTL_MILLIS;
69
+ if (!inRange)
70
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.ttl);
71
+ return ttl;
72
+ }
3
73
  export class AppCheck {
4
74
  #app;
5
75
  /** @internal */
6
- constructor(...args) {
7
- this.#app = guardDeferredServiceApp('app-check', 'AppCheck', args);
76
+ constructor(app) {
77
+ this.#app = app;
8
78
  }
9
79
  get app() {
10
80
  return this.#app;
11
81
  }
82
+ async createToken(appId, options) {
83
+ assertAdminAppActive(this.#app);
84
+ if (typeof appId !== 'string' || appId.length === 0)
85
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.appId);
86
+ const ttlMillis = ttlFrom(options);
87
+ const projectId = this.#configuredProjectId();
88
+ if (!projectId)
89
+ throw new FirebaseAppCheckError('unknown-error', MESSAGES.createNoProject);
90
+ const minted = await mintAppCheckToken({ appId, projectId }, Math.floor(ttlMillis / 1000));
91
+ return { token: minted.token, ttlMillis };
92
+ }
93
+ /**
94
+ * Checks in firebase-admin's order (app-check.js, token-verifier.js,
95
+ * utils/jwt.js): the options and the token's type, synchronously as
96
+ * upstream throws them; then the project, decoding, content, key,
97
+ * signature, and last `nbf` and `exp` as jsonwebtoken reads them.
98
+ */
99
+ verifyToken(appCheckToken, options) {
100
+ assertAdminAppActive(this.#app);
101
+ const optionsAreObject = typeof options === 'object' && options !== null && !Array.isArray(options);
102
+ if (options !== undefined && !optionsAreObject)
103
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.options);
104
+ if (typeof appCheckToken !== 'string')
105
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.notString);
106
+ return this.#verify(appCheckToken, options);
107
+ }
108
+ async #verify(appCheckToken, options) {
109
+ const projectId = this.#projectId();
110
+ const check = await checkAppCheckToken(appCheckToken);
111
+ if (!check.ok && check.reason === 'malformed')
112
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.decode);
113
+ verifyContent(check.header, check.claims, projectId);
114
+ if (!check.ok && check.reason === 'kid')
115
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.noMatchingKid);
116
+ if (!check.ok)
117
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.signature);
118
+ verifyNotBefore(check.claims.nbf);
119
+ verifyExpiry(check.claims.exp);
120
+ const claims = check.claims;
121
+ const result = { appId: claims.sub, token: { ...claims, app_id: claims.sub } };
122
+ if (options?.consume) {
123
+ const consumed = consumedFor(this.#app);
124
+ const tokenId = typeof claims.jti === 'string' ? claims.jti : appCheckToken;
125
+ result.alreadyConsumed = consumed.has(tokenId);
126
+ consumed.add(tokenId);
127
+ }
128
+ return result;
129
+ }
130
+ /** The app's project, found where firebase-admin's findProjectId looks: the app options, then the environment. */
131
+ #configuredProjectId() {
132
+ return this.#app.options.projectId || process.env.GOOGLE_CLOUD_PROJECT || process.env.GCLOUD_PROJECT || undefined;
133
+ }
134
+ /** The project a token must be scoped to, resolved as firebase-admin resolves it. */
135
+ #projectId() {
136
+ const projectId = this.#configuredProjectId();
137
+ if (!projectId)
138
+ throw new FirebaseAppCheckError('invalid-credential', MESSAGES.noProject);
139
+ return projectId;
140
+ }
141
+ }
142
+ /** token-verifier.js verifyContent: algorithm, audience, issuer, then subject, first failure wins. */
143
+ function verifyContent(header, claims, projectId) {
144
+ if (header.alg !== 'RS256')
145
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.algorithm(header.alg));
146
+ const scoped = `projects/${projectId}`;
147
+ const audienceMatches = Array.isArray(claims.aud) && claims.aud.length > 0 && claims.aud.includes(scoped);
148
+ if (!audienceMatches)
149
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.audience(scoped, claims.aud));
150
+ const issuerMatches = typeof claims.iss === 'string' && claims.iss.startsWith(APP_CHECK_ISSUER);
151
+ if (!issuerMatches)
152
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.issuer);
153
+ if (typeof claims.sub !== 'string')
154
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.noSub);
155
+ if (claims.sub === '')
156
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.emptySub);
157
+ }
158
+ /** jsonwebtoken's nbf rule, which runs before exp: firebase-admin reports both failures as an invalid signature. */
159
+ function verifyNotBefore(nbf) {
160
+ if (nbf === undefined)
161
+ return;
162
+ const nowSeconds = Math.floor(Date.now() / 1000);
163
+ const active = typeof nbf === 'number' && nbf <= nowSeconds;
164
+ if (!active)
165
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.signature);
166
+ }
167
+ /**
168
+ * jsonwebtoken's exp rule: an absent `exp` never expires, a non-number is an
169
+ * error that firebase-admin reports as an invalid signature, and the token is
170
+ * expired once the current second reaches `exp`.
171
+ */
172
+ function verifyExpiry(exp) {
173
+ if (exp === undefined)
174
+ return;
175
+ if (typeof exp !== 'number')
176
+ throw new FirebaseAppCheckError('invalid-argument', MESSAGES.signature);
177
+ const nowSeconds = Math.floor(Date.now() / 1000);
178
+ if (nowSeconds >= exp)
179
+ throw new FirebaseAppCheckError('app-check-token-expired', MESSAGES.expired);
180
+ }
181
+ const instances = new WeakMap();
182
+ export function getAppCheck(app) {
183
+ const resolved = app ?? getApp();
184
+ assertAdminAppActive(resolved);
185
+ const existing = instances.get(resolved);
186
+ if (existing)
187
+ return existing;
188
+ const instance = new AppCheck(resolved);
189
+ instances.set(resolved, instance);
190
+ return instance;
12
191
  }
13
- export const getAppCheck = wireDeferredService(AppCheck, 'app-check', 'AppCheck', {
14
- async: ['createToken', 'verifyToken'],
15
- });
16
192
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app-check/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,OAAO,QAAQ;IACV,IAAI,CAAgB;IAE7B,gBAAgB;IAChB,YAAY,GAAG,IAAe;QAC5B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CAIF;AAED,MAAM,CAAC,MAAM,WAAW,GAAsC,mBAAmB,CAC/E,QAAQ,EACR,WAAW,EACX,UAAU,EACV;IACE,KAAK,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;CACtC,CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app-check/index.ts"],"names":[],"mappings":"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"}
@@ -78,7 +78,7 @@ import { createDatabaseInstanceRegistry, isCustomDatabaseHost, isDefaultDatabase
78
78
  import { ADMIN_APP_TARGET, getApp, } from '../app/index.js';
79
79
  import { assertAdminAppActive } from '../app/lifecycle.js';
80
80
  import { increment, serverTimestamp } from 'pyric/database';
81
- import { valueAtChildPath, valueChildren } from 'pyric/database/internal';
81
+ import { assertGettablePath, valueAtChildPath, valueChildren } from 'pyric/database/internal';
82
82
  import { deferredExport } from 'pyric/app/internal';
83
83
  /** `firebase-admin/database`'s `enableLogging`. The sandbox does not model
84
84
  * the client logger, so it fails with an error naming it. */
@@ -466,6 +466,7 @@ function buildSandboxRef(state, db, path) {
466
466
  },
467
467
  /** Read this path. Resolves to a {@link DataSnapshot}-shaped value. */
468
468
  async get() {
469
+ assertGettablePath(canonical);
469
470
  const val = readPath(state.root, canonical);
470
471
  return buildSandboxSnap((p) => buildSandboxRef(state, db, p), canonical, val);
471
472
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pyric-admin",
3
- "version": "0.1.0-alpha.28",
3
+ "version": "0.1.0-alpha.30",
4
4
  "license": "Apache-2.0",
5
5
  "homepage": "https://pyric.dev",
6
6
  "repository": {
@@ -106,7 +106,7 @@
106
106
  "typecheck": "bun x tsc -p tsconfig.json --noEmit"
107
107
  },
108
108
  "dependencies": {
109
- "pyric": "^0.1.0-alpha.28"
109
+ "pyric": "^0.1.0-alpha.30"
110
110
  },
111
111
  "devDependencies": {
112
112
  "@types/bun": "1.3.14",
@@ -0,0 +1,46 @@
1
+ /**
2
+ * firebase-admin's error shape (lib/utils/error.js, 13.10.0), shared by the
3
+ * admin mirrors so each service's error class matches upstream in one place.
4
+ *
5
+ * Upstream keeps `{ code, message }` in an own `errorInfo` property and reads
6
+ * `code` through a prototype getter. Its `message` getter is shadowed by the
7
+ * own, non-enumerable `message` that `Error` sets, so only `code` needs one
8
+ * here. `toJSON()` returns both, and
9
+ * `hasCode()` tests the unprefixed code. It never sets `name`, so `name` reads
10
+ * `Error`. The own enumerable keys are `errorInfo` and `codePrefix`.
11
+ */
12
+ export interface ErrorInfo {
13
+ code: string;
14
+ message: string;
15
+ }
16
+
17
+ export class FirebaseError extends Error {
18
+ readonly errorInfo: ErrorInfo;
19
+
20
+ constructor(errorInfo: ErrorInfo) {
21
+ super(errorInfo.message);
22
+ this.errorInfo = errorInfo;
23
+ Object.setPrototypeOf(this, new.target.prototype);
24
+ }
25
+
26
+ get code(): string {
27
+ return this.errorInfo?.code;
28
+ }
29
+
30
+ toJSON(): ErrorInfo {
31
+ return { code: this.code, message: this.message };
32
+ }
33
+ }
34
+
35
+ export class PrefixedFirebaseError extends FirebaseError {
36
+ readonly codePrefix: string;
37
+
38
+ constructor(codePrefix: string, code: string, message: string) {
39
+ super({ code: `${codePrefix}/${code}`, message });
40
+ this.codePrefix = codePrefix;
41
+ }
42
+
43
+ hasCode(code: string): boolean {
44
+ return `${this.codePrefix}/${code}` === this.code;
45
+ }
46
+ }
@@ -1,32 +1,221 @@
1
1
  /**
2
- * `pyric-admin/app-check`: deferred service handle for `firebase-admin/app-check`.
2
+ * `pyric-admin/app-check`: the sandbox mirror of `firebase-admin/app-check`.
3
+ *
4
+ * `createToken` mints the same sandbox token the web mirror's `getToken`
5
+ * returns (shared in `pyric/sandbox/internal`), so a token minted on either
6
+ * plane verifies here. Shapes, TTL limits, error codes, and consume semantics
7
+ * follow the `app-check-admin-` captures; the rows are in
8
+ * packages/conformance/registry/app-check.ts (surface `app-check-admin`).
9
+ *
10
+ * One deliberate difference: the sandbox has no list of the project's
11
+ * registered apps, so `createToken` accepts any app id (row
12
+ * `app-check-admin#create-token-unknown-app`, diverged by design).
3
13
  */
4
- import type { PyricAdminApp } from '../app/index.js';
5
- import { guardDeferredServiceApp, wireDeferredService } from '../deferred.js';
14
+ import { checkAppCheckToken, mintAppCheckToken, type AppCheckTokenClaims } from 'pyric/sandbox/internal';
15
+ import { PrefixedFirebaseError } from '../app/firebase-error.js';
16
+ import { getApp, type PyricAdminApp } from '../app/index.js';
17
+ import { assertAdminAppActive } from '../app/lifecycle.js';
6
18
 
7
- export { PyricDeferredApiError } from '../deferred.js';
19
+ const MINUTE_MILLIS = 60 * 1000;
20
+ const MIN_TTL_MILLIS = 30 * MINUTE_MILLIS;
21
+ const MAX_TTL_MILLIS = 7 * 24 * 60 * MINUTE_MILLIS;
22
+ const DEFAULT_TTL_MILLIS = 60 * MINUTE_MILLIS;
23
+
24
+ const MESSAGES = {
25
+ notString: 'App check token must be a non-null string.',
26
+ options: 'VerifyAppCheckTokenOptions must be a non-null object.',
27
+ algorithm: (alg: unknown) => `The provided App Check token has incorrect algorithm. Expected "RS256" but got "${String(alg)}".`,
28
+ noSub: 'The provided App Check token has no "sub" (subject) claim.',
29
+ emptySub: 'The provided App Check token has an empty string "sub" (subject) claim.',
30
+ noMatchingKid:
31
+ 'The provided App Check token has "kid" claim which does not correspond to a known public key. Most likely the provided App Check token is expired, so get a fresh token from your client app and try again.',
32
+ ttl: 'ttlMillis must be a duration in milliseconds between 30 minutes and 7 days (inclusive).',
33
+ appId: '`appId` must be a non-empty string.',
34
+ decode: 'Decoding App Check token failed. Make sure you passed the entire string JWT which represents the Firebase App Check token.',
35
+ signature: 'The provided App Check token has invalid signature.',
36
+ expired: 'The provided App Check token has expired. Get a fresh App Check token from your client app and try again.',
37
+ issuer: 'The provided App Check token has incorrect "iss" (issuer) claim.',
38
+ createNoProject:
39
+ 'Failed to determine project ID. Initialize the SDK with service account credentials or set project ID as an app option. Alternatively, set the GOOGLE_CLOUD_PROJECT environment variable.',
40
+ noProject:
41
+ 'Must initialize app with a cert credential or set your Firebase project ID as the GOOGLE_CLOUD_PROJECT environment variable to verify an App Check token.',
42
+ audience: (scoped: string, aud: unknown) =>
43
+ `The provided App Check token has incorrect "aud" (audience) claim. Expected "${scoped}" but got "${String(aud)}". Make sure the App Check token comes from the same Firebase project as the service account used to authenticate this SDK.`,
44
+ };
45
+
46
+ const APP_CHECK_ISSUER = 'https://firebaseappcheck.googleapis.com/';
47
+
48
+ type AppCheckErrorCode = 'invalid-argument' | 'invalid-credential' | 'app-check-token-expired' | 'unknown-error';
49
+
50
+ /** firebase-admin's FirebaseAppCheckError: a PrefixedFirebaseError with prefix `app-check`. */
51
+ class FirebaseAppCheckError extends PrefixedFirebaseError {
52
+ constructor(code: AppCheckErrorCode, message: string) {
53
+ super('app-check', code, message);
54
+ }
55
+ }
56
+
57
+ export interface AppCheckTokenOptions {
58
+ ttlMillis?: number;
59
+ }
60
+
61
+ export interface AppCheckToken {
62
+ token: string;
63
+ ttlMillis: number;
64
+ }
65
+
66
+ export interface VerifyAppCheckTokenOptions {
67
+ consume?: boolean;
68
+ }
69
+
70
+ export interface DecodedAppCheckToken extends AppCheckTokenClaims {
71
+ app_id: string;
72
+ }
73
+
74
+ export interface VerifyAppCheckTokenResponse {
75
+ appId: string;
76
+ token: DecodedAppCheckToken;
77
+ alreadyConsumed?: boolean;
78
+ }
79
+
80
+ /**
81
+ * Consumed token ids, per sandbox handle, for this process. The map sits
82
+ * behind Symbol.for, as the app registry in ../app/index.ts does, so the
83
+ * require and import copies of this module that the register hook can load
84
+ * share it. It is in memory: it does not survive a restart, and two processes
85
+ * on one dev server each keep their own. Production consumes once per
86
+ * project; moving this into the sandbox is #1297.
87
+ */
88
+ const CONSUMED_BY_SANDBOX = Symbol.for('pyric.admin.appCheck.consumedBySandbox');
89
+ type GlobalConsumed = { [CONSUMED_BY_SANDBOX]?: WeakMap<object, Set<string>> };
90
+
91
+ function consumedFor(app: PyricAdminApp): Set<string> {
92
+ const global = globalThis as GlobalConsumed;
93
+ const bySandbox = (global[CONSUMED_BY_SANDBOX] ??= new WeakMap());
94
+ const key = app.sandbox as object;
95
+ let consumed = bySandbox.get(key);
96
+ if (!consumed) {
97
+ consumed = new Set();
98
+ bySandbox.set(key, consumed);
99
+ }
100
+ return consumed;
101
+ }
102
+
103
+ function ttlFrom(options: AppCheckTokenOptions | undefined): number {
104
+ const ttl = options?.ttlMillis ?? DEFAULT_TTL_MILLIS;
105
+ const inRange = typeof ttl === 'number' && ttl >= MIN_TTL_MILLIS && ttl <= MAX_TTL_MILLIS;
106
+ if (!inRange) throw new FirebaseAppCheckError('invalid-argument', MESSAGES.ttl);
107
+ return ttl;
108
+ }
8
109
 
9
110
  export class AppCheck {
10
111
  readonly #app: PyricAdminApp;
11
112
 
12
113
  /** @internal */
13
- constructor(...args: unknown[]) {
14
- this.#app = guardDeferredServiceApp('app-check', 'AppCheck', args);
114
+ constructor(app: PyricAdminApp) {
115
+ this.#app = app;
15
116
  }
16
117
 
17
118
  get app(): PyricAdminApp {
18
119
  return this.#app;
19
120
  }
20
121
 
21
- declare createToken: (...args: unknown[]) => Promise<never>;
22
- declare verifyToken: (...args: unknown[]) => Promise<never>;
122
+ async createToken(appId: string, options?: AppCheckTokenOptions): Promise<AppCheckToken> {
123
+ assertAdminAppActive(this.#app);
124
+ if (typeof appId !== 'string' || appId.length === 0) throw new FirebaseAppCheckError('invalid-argument', MESSAGES.appId);
125
+ const ttlMillis = ttlFrom(options);
126
+ const projectId = this.#configuredProjectId();
127
+ if (!projectId) throw new FirebaseAppCheckError('unknown-error', MESSAGES.createNoProject);
128
+ const minted = await mintAppCheckToken({ appId, projectId }, Math.floor(ttlMillis / 1000));
129
+ return { token: minted.token, ttlMillis };
130
+ }
131
+
132
+ /**
133
+ * Checks in firebase-admin's order (app-check.js, token-verifier.js,
134
+ * utils/jwt.js): the options and the token's type, synchronously as
135
+ * upstream throws them; then the project, decoding, content, key,
136
+ * signature, and last `nbf` and `exp` as jsonwebtoken reads them.
137
+ */
138
+ verifyToken(appCheckToken: string, options?: VerifyAppCheckTokenOptions): Promise<VerifyAppCheckTokenResponse> {
139
+ assertAdminAppActive(this.#app);
140
+ const optionsAreObject = typeof options === 'object' && options !== null && !Array.isArray(options);
141
+ if (options !== undefined && !optionsAreObject) throw new FirebaseAppCheckError('invalid-argument', MESSAGES.options);
142
+ if (typeof appCheckToken !== 'string') throw new FirebaseAppCheckError('invalid-argument', MESSAGES.notString);
143
+ return this.#verify(appCheckToken, options);
144
+ }
145
+
146
+ async #verify(appCheckToken: string, options: VerifyAppCheckTokenOptions | undefined): Promise<VerifyAppCheckTokenResponse> {
147
+ const projectId = this.#projectId();
148
+ const check = await checkAppCheckToken(appCheckToken);
149
+ if (!check.ok && check.reason === 'malformed') throw new FirebaseAppCheckError('invalid-argument', MESSAGES.decode);
150
+ verifyContent(check.header, check.claims, projectId);
151
+ if (!check.ok && check.reason === 'kid') throw new FirebaseAppCheckError('invalid-argument', MESSAGES.noMatchingKid);
152
+ if (!check.ok) throw new FirebaseAppCheckError('invalid-argument', MESSAGES.signature);
153
+ verifyNotBefore(check.claims.nbf);
154
+ verifyExpiry(check.claims.exp);
155
+ const claims = check.claims as AppCheckTokenClaims;
156
+ const result: VerifyAppCheckTokenResponse = { appId: claims.sub, token: { ...claims, app_id: claims.sub } };
157
+ if (options?.consume) {
158
+ const consumed = consumedFor(this.#app);
159
+ const tokenId = typeof claims.jti === 'string' ? claims.jti : appCheckToken;
160
+ result.alreadyConsumed = consumed.has(tokenId);
161
+ consumed.add(tokenId);
162
+ }
163
+ return result;
164
+ }
165
+
166
+ /** The app's project, found where firebase-admin's findProjectId looks: the app options, then the environment. */
167
+ #configuredProjectId(): string | undefined {
168
+ return this.#app.options.projectId || process.env.GOOGLE_CLOUD_PROJECT || process.env.GCLOUD_PROJECT || undefined;
169
+ }
170
+
171
+ /** The project a token must be scoped to, resolved as firebase-admin resolves it. */
172
+ #projectId(): string {
173
+ const projectId = this.#configuredProjectId();
174
+ if (!projectId) throw new FirebaseAppCheckError('invalid-credential', MESSAGES.noProject);
175
+ return projectId;
176
+ }
23
177
  }
24
178
 
25
- export const getAppCheck: (app?: PyricAdminApp) => AppCheck = wireDeferredService(
26
- AppCheck,
27
- 'app-check',
28
- 'AppCheck',
29
- {
30
- async: ['createToken', 'verifyToken'],
31
- },
32
- );
179
+ /** token-verifier.js verifyContent: algorithm, audience, issuer, then subject, first failure wins. */
180
+ function verifyContent(header: Readonly<Record<string, unknown>>, claims: Readonly<Record<string, unknown>>, projectId: string): void {
181
+ if (header.alg !== 'RS256') throw new FirebaseAppCheckError('invalid-argument', MESSAGES.algorithm(header.alg));
182
+ const scoped = `projects/${projectId}`;
183
+ const audienceMatches = Array.isArray(claims.aud) && claims.aud.length > 0 && claims.aud.includes(scoped);
184
+ if (!audienceMatches) throw new FirebaseAppCheckError('invalid-argument', MESSAGES.audience(scoped, claims.aud));
185
+ const issuerMatches = typeof claims.iss === 'string' && claims.iss.startsWith(APP_CHECK_ISSUER);
186
+ if (!issuerMatches) throw new FirebaseAppCheckError('invalid-argument', MESSAGES.issuer);
187
+ if (typeof claims.sub !== 'string') throw new FirebaseAppCheckError('invalid-argument', MESSAGES.noSub);
188
+ if (claims.sub === '') throw new FirebaseAppCheckError('invalid-argument', MESSAGES.emptySub);
189
+ }
190
+
191
+ /** jsonwebtoken's nbf rule, which runs before exp: firebase-admin reports both failures as an invalid signature. */
192
+ function verifyNotBefore(nbf: unknown): void {
193
+ if (nbf === undefined) return;
194
+ const nowSeconds = Math.floor(Date.now() / 1000);
195
+ const active = typeof nbf === 'number' && nbf <= nowSeconds;
196
+ if (!active) throw new FirebaseAppCheckError('invalid-argument', MESSAGES.signature);
197
+ }
198
+
199
+ /**
200
+ * jsonwebtoken's exp rule: an absent `exp` never expires, a non-number is an
201
+ * error that firebase-admin reports as an invalid signature, and the token is
202
+ * expired once the current second reaches `exp`.
203
+ */
204
+ function verifyExpiry(exp: unknown): void {
205
+ if (exp === undefined) return;
206
+ if (typeof exp !== 'number') throw new FirebaseAppCheckError('invalid-argument', MESSAGES.signature);
207
+ const nowSeconds = Math.floor(Date.now() / 1000);
208
+ if (nowSeconds >= exp) throw new FirebaseAppCheckError('app-check-token-expired', MESSAGES.expired);
209
+ }
210
+
211
+ const instances = new WeakMap<PyricAdminApp, AppCheck>();
212
+
213
+ export function getAppCheck(app?: PyricAdminApp): AppCheck {
214
+ const resolved = app ?? getApp();
215
+ assertAdminAppActive(resolved);
216
+ const existing = instances.get(resolved);
217
+ if (existing) return existing;
218
+ const instance = new AppCheck(resolved);
219
+ instances.set(resolved, instance);
220
+ return instance;
221
+ }
@@ -48,6 +48,15 @@ describe('pyric-admin/database — sandbox backend (Phase 4b)', () => {
48
48
  expect(typeof db.ref).toBe('function');
49
49
  });
50
50
 
51
+ it('rejects a get of .info/connected as production does (DF-7, getConnected)', async () => {
52
+ // rtdb-modular-info-write-validation behavior.getConnected: Error with
53
+ // message 'Invalid token in path' and no code.
54
+ const db = getDatabase(sandboxApp(initializeSandbox()));
55
+ const error = await db.ref('.info/connected').get().then(() => null, (caught: Error & { code?: string }) => caught);
56
+ expect(error?.message).toBe('Invalid token in path');
57
+ expect(error?.code).toBeUndefined();
58
+ });
59
+
51
60
  it('set + get roundtrips the written value', async () => {
52
61
  const sandbox = initializeSandbox();
53
62
  const db = getDatabase(sandboxApp(sandbox));
@@ -98,7 +98,7 @@ import {
98
98
  } from '../app/index.js';
99
99
  import { assertAdminAppActive } from '../app/lifecycle.js';
100
100
  import { increment, serverTimestamp } from 'pyric/database';
101
- import { valueAtChildPath, valueChildren } from 'pyric/database/internal';
101
+ import { assertGettablePath, valueAtChildPath, valueChildren } from 'pyric/database/internal';
102
102
  import { deferredExport } from 'pyric/app/internal';
103
103
 
104
104
  /** `firebase-admin/database`'s `enableLogging`. The sandbox does not model
@@ -640,6 +640,7 @@ function buildSandboxRef(
640
640
 
641
641
  /** Read this path. Resolves to a {@link DataSnapshot}-shaped value. */
642
642
  async get(): Promise<AdminDataSnapshot> {
643
+ assertGettablePath(canonical);
643
644
  const val = readPath(state.root, canonical);
644
645
  return buildSandboxSnap((p) => buildSandboxRef(state, db, p), canonical, val);
645
646
  },