@clipboard-health/playwright-toolkit 1.0.0 → 1.1.1

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
@@ -111,14 +111,45 @@ The auto fixture creates one non-zero W3C `traceparent`, preserves project-level
111
111
  const tokenEntry = await generateAdminAuthToken({
112
112
  adminEmail: adminUser.email,
113
113
  apiEnvironmentName: "staging",
114
+ cacheIdentity: {
115
+ namespace: "cbh-admin-frontend",
116
+ clientName: "admin-app",
117
+ issuer: "clipboard-health-staging",
118
+ tokenKind: "access",
119
+ },
114
120
  clientName: "admin-app",
115
121
  cacheDurationMs: 10 * 60 * 1000,
122
+ validationPolicy: "admin-session-v1",
123
+ validateToken: async ({ authToken, signal }) => {
124
+ const response = await fetch(`${adminApiUrl}/auth/session`, {
125
+ headers: { Authorization: authToken },
126
+ signal,
127
+ });
128
+
129
+ if (response.status === 401 || response.status === 403) {
130
+ return false;
131
+ }
132
+
133
+ if (!response.ok) {
134
+ throw new Error(`Admin token validation failed with HTTP ${response.status}`);
135
+ }
136
+
137
+ return true;
138
+ },
116
139
  });
117
140
 
118
141
  const adminAuthToken = tokenEntry.authToken;
119
142
  ```
120
143
 
121
- The cache key contains the environment and a SHA-256 email digest, not the email. The cache and lock files use mode `0600`. A process that acquires the lock re-reads the cache before generating, which prevents duplicate token mints across Playwright workers and shards.
144
+ The cache key contains the environment, a SHA-256 digest of the email, and the optional explicit cache identity; it never contains the email itself. Give each repository a stable `namespace`, and distinguish credentials by token kind, client, audience, and issuer when those values differ. `generateAdminAuthToken` automatically distinguishes different `clientName` values even when `cacheIdentity` is omitted.
145
+
146
+ JWT cache freshness is bounded to the earlier of `cacheDurationMs` and the token's `exp` claim minus a 60-second safety skew. Opaque bearer tokens continue to use `cacheDurationMs`. Set `jwtExpirationSafetySkewMs` when a suite needs a different skew.
147
+
148
+ When `validateToken` is provided, the toolkit runs the read-only probe while holding the cache lock and records successful validation in the cache entry, so waiting Playwright workers share one probe. Give the probe an explicit `validationPolicy` and increment it whenever the validation contract becomes stricter or otherwise changes; a policy change forces revalidation. The toolkit aborts validation after 30 seconds by default, bounded below the lock's stale lease. Pass the provided `signal` to network requests, and set `validationTimeoutMs` when the endpoint needs a shorter deadline.
149
+
150
+ Return `false` only when the consumer rejects the credential, such as HTTP `401` or `403`; throw for `5xx` responses and other validation infrastructure failures. A rejected cached token is evicted and replaced once for all waiting workers and shards sharing the cache filesystem. A rejected generated token is not cached. The probe should verify the same audience and permission boundary the suite needs without mutating application state.
151
+
152
+ The cache and lock files use mode `0600`. A process that acquires the lock re-reads the cache before generating, which prevents duplicate token mints across Playwright workers, shards, and local processes that share `cacheDirectory`. Separate CI hosts or containers with independent filesystems may still mint independently.
122
153
 
123
154
  Use `getOrCreateAdminAuthToken` when the repository needs a different token command:
124
155
 
@@ -126,11 +157,50 @@ Use `getOrCreateAdminAuthToken` when the repository needs a different token comm
126
157
  const tokenEntry = await getOrCreateAdminAuthToken({
127
158
  adminEmail,
128
159
  apiEnvironmentName,
160
+ cacheIdentity: {
161
+ namespace: "cbh-mobile-app",
162
+ audience: "monolith-api",
163
+ clientName: "mobile-app",
164
+ tokenKind: "access",
165
+ },
129
166
  cacheDurationMs: 10 * 60 * 1000,
130
167
  createToken: async () => await generateTokenWithRepositoryCli(),
131
168
  });
132
169
  ```
133
170
 
171
+ After a consumer rejects a token, pass that credential to `forceRefresh`. Callers reporting the same rejected credential share one replacement, including callers that arrive after another worker has already refreshed the cache:
172
+
173
+ ```typescript
174
+ import { getOrCreateAdminAuthToken } from "@clipboard-health/playwright-toolkit";
175
+
176
+ const freshTokenEntry = await getOrCreateAdminAuthToken({
177
+ ...tokenParams,
178
+ forceRefresh: {
179
+ rejectedAuthToken,
180
+ },
181
+ });
182
+ ```
183
+
184
+ Keep `forceRefresh: true` for deliberate unconditional rotation when no rejected credential is available.
185
+
186
+ Alternatively, invalidate a generated token explicitly with the API that applies the same default identity as `generateAdminAuthToken`:
187
+
188
+ ```typescript
189
+ import { invalidateGeneratedAdminAuthToken } from "@clipboard-health/playwright-toolkit";
190
+
191
+ await invalidateGeneratedAdminAuthToken({
192
+ adminEmail,
193
+ apiEnvironmentName,
194
+ clientName: "admin-app",
195
+ });
196
+ ```
197
+
198
+ Use `invalidateAdminAuthToken` for `getOrCreateAdminAuthToken` entries, passing the same `cacheIdentity` used to create the entry.
199
+
200
+ Only retry a request automatically when it is read-only or otherwise safe to repeat. The toolkit does not replay consumer requests because it cannot determine whether a failed mutation had side effects.
201
+
202
+ Use `onCacheEvent` for safe diagnostics. Events expose `kind`, cache-key and credential fingerprints, the optional audience, and mint/expiration/validation timestamps. Fingerprints distinguish successive credentials without exposing the token, email, or raw cache identity.
203
+
134
204
  ## Deployed assets
135
205
 
136
206
  Repository wrappers still discover assets and decide which files are runtime or fingerprinted. The package owns request concurrency, timeouts, cache busting, content-type checks, transient HTTP retries, attempt diagnostics, and stable-window polling.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipboard-health/playwright-toolkit",
3
- "version": "1.0.0",
3
+ "version": "1.1.1",
4
4
  "description": "Shared anti-flake primitives for Clipboard Health Playwright suites.",
5
5
  "keywords": [
6
6
  "cognito",
@@ -26,7 +26,7 @@
26
26
  "access": "public"
27
27
  },
28
28
  "dependencies": {
29
- "@clipboard-health/util-ts": "5.12.0",
29
+ "@clipboard-health/util-ts": "5.13.0",
30
30
  "tslib": "2.8.1"
31
31
  },
32
32
  "devDependencies": {
@@ -2,22 +2,62 @@ export interface AdminAuthTokenCacheEntry {
2
2
  authToken: string;
3
3
  expiresAtMs: number;
4
4
  }
5
- export interface GetOrCreateAdminAuthTokenParams {
5
+ export interface AdminAuthTokenCacheIdentity {
6
+ namespace: string;
7
+ tokenKind: string;
8
+ audience?: string | undefined;
9
+ clientName?: string | undefined;
10
+ issuer?: string | undefined;
11
+ }
12
+ export type AdminAuthTokenCacheEventKind = "created" | "hit" | "invalidated" | "miss" | "refresh" | "validation-rejected";
13
+ export interface AdminAuthTokenCacheEvent {
14
+ kind: AdminAuthTokenCacheEventKind;
15
+ audience?: string | undefined;
16
+ cacheKeyFingerprint: string;
17
+ credentialFingerprint?: string | undefined;
18
+ expiresAtMs?: number | undefined;
19
+ jwtExpiresAtMs?: number | undefined;
20
+ mintedAtMs?: number | undefined;
21
+ validatedAtMs?: number | undefined;
22
+ validationPolicyFingerprint?: string | undefined;
23
+ }
24
+ export interface ValidateAdminAuthTokenParams {
25
+ authToken: string;
26
+ signal: AbortSignal;
27
+ }
28
+ export type AdminAuthTokenCacheEventHandler = (event: AdminAuthTokenCacheEvent) => Promise<void> | void;
29
+ export interface AdminAuthTokenCacheParams {
6
30
  adminEmail: string;
7
31
  apiEnvironmentName: string;
8
- cacheDurationMs: number;
9
- createToken: () => Promise<string>;
32
+ cacheIdentity?: AdminAuthTokenCacheIdentity | undefined;
10
33
  cacheDirectory?: string | undefined;
11
34
  lockStaleAfterMs?: number | undefined;
12
35
  lockWaitTimeoutMs?: number | undefined;
13
36
  lockRetryDelayMs?: number | undefined;
14
37
  lockRetryJitterMs?: number | undefined;
15
38
  nowImplementation?: (() => number) | undefined;
39
+ onCacheEvent?: AdminAuthTokenCacheEventHandler | undefined;
16
40
  randomImplementation?: (() => number) | undefined;
17
41
  sleepImplementation?: ((params: {
18
42
  durationMs: number;
19
43
  }) => Promise<void>) | undefined;
20
44
  }
45
+ export interface AdminAuthTokenRefreshOptions {
46
+ rejectedAuthToken: string;
47
+ }
48
+ export interface GetOrCreateAdminAuthTokenParams extends AdminAuthTokenCacheParams {
49
+ cacheDurationMs: number;
50
+ createToken: () => Promise<string>;
51
+ forceRefresh?: boolean | AdminAuthTokenRefreshOptions | undefined;
52
+ jwtExpirationSafetySkewMs?: number | undefined;
53
+ validationPolicy?: string | undefined;
54
+ validationTimeoutMs?: number | undefined;
55
+ validateToken?: ((params: ValidateAdminAuthTokenParams) => Promise<boolean>) | undefined;
56
+ }
57
+ export type InvalidateAdminAuthTokenParams = AdminAuthTokenCacheParams;
58
+ export interface InvalidateGeneratedAdminAuthTokenParams extends AdminAuthTokenCacheParams {
59
+ clientName?: string | undefined;
60
+ }
21
61
  export interface AdminAuthTokenCommandResult {
22
62
  stdout: string;
23
63
  stderr: string;
@@ -42,6 +82,16 @@ export interface GenerateAdminAuthTokenParams extends Omit<GetOrCreateAdminAuthT
42
82
  * filesystem lock shared by Playwright workers, shards, and local processes.
43
83
  */
44
84
  export declare function getOrCreateAdminAuthToken(params: GetOrCreateAdminAuthTokenParams): Promise<AdminAuthTokenCacheEntry>;
85
+ /**
86
+ * Invalidates one explicitly identified cached token while holding the same
87
+ * cross-process lock used by token readers and writers.
88
+ */
89
+ export declare function invalidateAdminAuthToken(params: InvalidateAdminAuthTokenParams): Promise<void>;
90
+ /**
91
+ * Invalidates a token created by generateAdminAuthToken using the same default
92
+ * cache identity normalization as generation.
93
+ */
94
+ export declare function invalidateGeneratedAdminAuthToken(params: InvalidateGeneratedAdminAuthTokenParams): Promise<void>;
45
95
  /**
46
96
  * Generates an admin token with classified CLI retries, redacted errors, and
47
97
  * the lock-serialized cross-process cache.
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getOrCreateAdminAuthToken = getOrCreateAdminAuthToken;
4
+ exports.invalidateAdminAuthToken = invalidateAdminAuthToken;
5
+ exports.invalidateGeneratedAdminAuthToken = invalidateGeneratedAdminAuthToken;
4
6
  exports.generateAdminAuthToken = generateAdminAuthToken;
5
7
  exports.isRetryableAdminAuthTokenGenerationError = isRetryableAdminAuthTokenGenerationError;
6
8
  exports.isAdminAuthTokenExpired = isAdminAuthTokenExpired;
@@ -10,6 +12,8 @@ const node_crypto_1 = require("node:crypto");
10
12
  const promises_1 = require("node:fs/promises");
11
13
  const node_os_1 = require("node:os");
12
14
  const node_path_1 = tslib_1.__importDefault(require("node:path"));
15
+ const node_perf_hooks_1 = require("node:perf_hooks");
16
+ const promises_2 = require("node:timers/promises");
13
17
  const util_ts_1 = require("@clipboard-health/util-ts");
14
18
  const retry_1 = require("./retry");
15
19
  // cspell:ignore defineauthchallenge getparameters maketesttoken
@@ -23,6 +27,8 @@ const DEFAULT_COMMAND_TIMEOUT_MS = 30_000;
23
27
  const DEFAULT_GENERATION_MAX_ATTEMPTS = 4;
24
28
  const DEFAULT_GENERATION_RETRY_DELAY_MS = 2000;
25
29
  const DEFAULT_GENERATION_RETRY_JITTER_MS = 1000;
30
+ const DEFAULT_JWT_EXPIRATION_SAFETY_SKEW_MS = 60_000;
31
+ const DEFAULT_VALIDATION_TIMEOUT_MS = 30_000;
26
32
  const REDACTED_USER_LABEL = "[redacted-user]";
27
33
  /**
28
34
  * Returns a valid cached admin token or creates one while holding an atomic
@@ -32,18 +38,86 @@ async function getOrCreateAdminAuthToken(params) {
32
38
  validateParams(params);
33
39
  const cachePaths = getCachePaths(params);
34
40
  const nowImplementation = params.nowImplementation ?? Date.now;
41
+ const jwtExpirationSafetySkewMs = params.jwtExpirationSafetySkewMs ?? DEFAULT_JWT_EXPIRATION_SAFETY_SKEW_MS;
42
+ const validationPolicyFingerprint = getValidationPolicyFingerprint(params);
43
+ const validationTimeoutMs = getValidationTimeoutMs(params);
35
44
  await (0, promises_1.mkdir)(cachePaths.cacheDirectoryPath, { recursive: true });
36
- const cachedEntry = await readCachedEntry({
37
- cacheFilePath: cachePaths.cacheFilePath,
38
- nowImplementation,
39
- });
40
- if (cachedEntry !== undefined) {
41
- return cachedEntry;
45
+ const cachedEntry = typeof params.forceRefresh === "object"
46
+ ? undefined
47
+ : await readCachedEntry({
48
+ cacheFilePath: cachePaths.cacheFilePath,
49
+ jwtExpirationSafetySkewMs,
50
+ nowImplementation,
51
+ });
52
+ if (!isForceRefreshRequested(params)) {
53
+ const needsValidation = (0, util_ts_1.isDefined)(params.validateToken) &&
54
+ cachedEntry?.validationPolicyFingerprint !== validationPolicyFingerprint;
55
+ if ((0, util_ts_1.isDefined)(cachedEntry) && !needsValidation) {
56
+ emitCacheEvent({
57
+ cachePaths,
58
+ event: {
59
+ kind: "hit",
60
+ ...getCredentialEventMetadata({ storedEntry: cachedEntry }),
61
+ expiresAtMs: cachedEntry.expiresAtMs,
62
+ jwtExpiresAtMs: getJwtExpirationMs({ authToken: cachedEntry.authToken }),
63
+ validatedAtMs: cachedEntry.validatedAtMs,
64
+ validationPolicyFingerprint: cachedEntry.validationPolicyFingerprint,
65
+ },
66
+ onCacheEvent: params.onCacheEvent,
67
+ });
68
+ return getPublicCacheEntry({ storedEntry: cachedEntry });
69
+ }
42
70
  }
43
71
  return await getOrCreateWithLock({
44
72
  ...params,
45
73
  cachePaths,
74
+ jwtExpirationSafetySkewMs,
46
75
  nowImplementation,
76
+ forceRefreshTargetCredentialFingerprint: getForceRefreshTargetCredentialFingerprint({
77
+ cachedEntry,
78
+ forceRefresh: params.forceRefresh,
79
+ }),
80
+ validationPolicyFingerprint,
81
+ validationTimeoutMs,
82
+ });
83
+ }
84
+ /**
85
+ * Invalidates one explicitly identified cached token while holding the same
86
+ * cross-process lock used by token readers and writers.
87
+ */
88
+ async function invalidateAdminAuthToken(params) {
89
+ validateCacheLocationParams(params);
90
+ const cachePaths = getCachePaths(params);
91
+ await (0, promises_1.mkdir)(cachePaths.cacheDirectoryPath, { recursive: true });
92
+ await runWithAdminAuthTokenLock({
93
+ ...params,
94
+ cachePaths,
95
+ operation: async () => {
96
+ const cachedEntry = await readCachedEntry({
97
+ cacheFilePath: cachePaths.cacheFilePath,
98
+ jwtExpirationSafetySkewMs: DEFAULT_JWT_EXPIRATION_SAFETY_SKEW_MS,
99
+ nowImplementation: params.nowImplementation ?? Date.now,
100
+ });
101
+ await (0, promises_1.rm)(cachePaths.cacheFilePath, { force: true });
102
+ emitCacheEvent({
103
+ cachePaths,
104
+ event: {
105
+ kind: "invalidated",
106
+ ...getCredentialEventMetadata({ storedEntry: cachedEntry }),
107
+ },
108
+ onCacheEvent: params.onCacheEvent,
109
+ });
110
+ },
111
+ });
112
+ }
113
+ /**
114
+ * Invalidates a token created by generateAdminAuthToken using the same default
115
+ * cache identity normalization as generation.
116
+ */
117
+ async function invalidateGeneratedAdminAuthToken(params) {
118
+ await invalidateAdminAuthToken({
119
+ ...params,
120
+ cacheIdentity: getGeneratedAdminAuthTokenCacheIdentity(params),
47
121
  });
48
122
  }
49
123
  /**
@@ -53,6 +127,7 @@ async function getOrCreateAdminAuthToken(params) {
53
127
  async function generateAdminAuthToken(params) {
54
128
  return await getOrCreateAdminAuthToken({
55
129
  ...params,
130
+ cacheIdentity: getGeneratedAdminAuthTokenCacheIdentity(params),
56
131
  createToken: async () => {
57
132
  const result = await (0, retry_1.runWithRetry)({
58
133
  operationName: "generate admin auth token",
@@ -64,7 +139,7 @@ async function generateAdminAuthToken(params) {
64
139
  timeoutMs: params.commandTimeoutMs ?? DEFAULT_COMMAND_TIMEOUT_MS,
65
140
  });
66
141
  const rawToken = commandResult.stdout.split("\n")[0]?.trim();
67
- if (rawToken === undefined || rawToken.length === 0) {
142
+ if ((0, util_ts_1.isNil)(rawToken) || rawToken.length === 0) {
68
143
  throw new Error("Token generation returned an empty token");
69
144
  }
70
145
  return `${BEARER_TOKEN_PREFIX}${rawToken}`;
@@ -116,80 +191,250 @@ function isAdminAuthTokenExpired(params) {
116
191
  return (params.nowMs ?? Date.now()) >= params.cacheEntry.expiresAtMs;
117
192
  }
118
193
  async function getOrCreateWithLock(params) {
119
- const waitStartedAtMs = params.nowImplementation();
120
- const lockWaitTimeoutMs = params.lockWaitTimeoutMs ?? DEFAULT_LOCK_WAIT_TIMEOUT_MS;
121
- const sleepImplementation = params.sleepImplementation ?? sleep;
122
- /* eslint-disable no-await-in-loop -- Lock acquisition and ownership checks are sequential. */
123
- while (params.nowImplementation() - waitStartedAtMs < lockWaitTimeoutMs) {
124
- const lock = await tryAcquireLock({
125
- lockFilePath: params.cachePaths.lockFilePath,
126
- nowImplementation: params.nowImplementation,
127
- });
128
- if (lock !== undefined) {
129
- try {
130
- const cachedEntry = await readCachedEntry({
131
- cacheFilePath: params.cachePaths.cacheFilePath,
132
- nowImplementation: params.nowImplementation,
194
+ return await runWithAdminAuthTokenLock({
195
+ ...params,
196
+ operation: async () => {
197
+ const cachedEntry = await readCachedEntry({
198
+ cacheFilePath: params.cachePaths.cacheFilePath,
199
+ jwtExpirationSafetySkewMs: params.jwtExpirationSafetySkewMs,
200
+ nowImplementation: params.nowImplementation,
201
+ });
202
+ const refreshesCurrentEntry = isForceRefreshRequested(params) &&
203
+ ((0, util_ts_1.isDefined)(cachedEntry)
204
+ ? getCredentialFingerprint({ authToken: cachedEntry.authToken }) ===
205
+ params.forceRefreshTargetCredentialFingerprint
206
+ : (0, util_ts_1.isNil)(params.forceRefreshTargetCredentialFingerprint));
207
+ if (refreshesCurrentEntry) {
208
+ await (0, promises_1.rm)(params.cachePaths.cacheFilePath, { force: true });
209
+ emitCacheEvent({
210
+ cachePaths: params.cachePaths,
211
+ event: {
212
+ kind: "refresh",
213
+ ...getCredentialEventMetadata({ storedEntry: cachedEntry }),
214
+ },
215
+ onCacheEvent: params.onCacheEvent,
133
216
  });
134
- if (cachedEntry !== undefined) {
135
- return cachedEntry;
217
+ }
218
+ else if ((0, util_ts_1.isDefined)(cachedEntry)) {
219
+ const needsValidation = (0, util_ts_1.isDefined)(params.validateToken) &&
220
+ cachedEntry.validationPolicyFingerprint !== params.validationPolicyFingerprint;
221
+ const isAccepted = needsValidation
222
+ ? await validateAdminAuthToken({
223
+ authToken: cachedEntry.authToken,
224
+ validationTimeoutMs: params.validationTimeoutMs,
225
+ validateToken: params.validateToken,
226
+ })
227
+ : true;
228
+ if (isAccepted) {
229
+ const acceptedEntry = needsValidation
230
+ ? {
231
+ ...cachedEntry,
232
+ validatedAtMs: params.nowImplementation(),
233
+ validationPolicyFingerprint: params.validationPolicyFingerprint,
234
+ }
235
+ : cachedEntry;
236
+ const expiredDuringValidation = isAdminAuthTokenExpired({
237
+ cacheEntry: acceptedEntry,
238
+ nowMs: params.nowImplementation(),
239
+ });
240
+ if (!expiredDuringValidation) {
241
+ await persistCachedValidation({
242
+ cacheFilePath: params.cachePaths.cacheFilePath,
243
+ needsValidation,
244
+ storedEntry: acceptedEntry,
245
+ });
246
+ emitCacheEvent({
247
+ cachePaths: params.cachePaths,
248
+ event: {
249
+ kind: "hit",
250
+ ...getCredentialEventMetadata({ storedEntry: acceptedEntry }),
251
+ expiresAtMs: acceptedEntry.expiresAtMs,
252
+ jwtExpiresAtMs: getJwtExpirationMs({ authToken: acceptedEntry.authToken }),
253
+ validatedAtMs: acceptedEntry.validatedAtMs,
254
+ validationPolicyFingerprint: acceptedEntry.validationPolicyFingerprint,
255
+ },
256
+ onCacheEvent: params.onCacheEvent,
257
+ });
258
+ return getPublicCacheEntry({ storedEntry: acceptedEntry });
259
+ }
260
+ await (0, promises_1.rm)(params.cachePaths.cacheFilePath, { force: true });
136
261
  }
137
- const authToken = await params.createToken();
138
- if (!isValidBearerToken(authToken)) {
139
- throw new Error("Generated admin auth token is malformed");
262
+ else {
263
+ await (0, promises_1.rm)(params.cachePaths.cacheFilePath, { force: true });
264
+ emitCacheEvent({
265
+ cachePaths: params.cachePaths,
266
+ event: {
267
+ kind: "validation-rejected",
268
+ ...getCredentialEventMetadata({ storedEntry: cachedEntry }),
269
+ expiresAtMs: cachedEntry.expiresAtMs,
270
+ jwtExpiresAtMs: getJwtExpirationMs({ authToken: cachedEntry.authToken }),
271
+ },
272
+ onCacheEvent: params.onCacheEvent,
273
+ });
140
274
  }
141
- const storedEntry = {
142
- authToken,
143
- expiresAtMs: params.nowImplementation() + params.cacheDurationMs,
144
- };
145
- await writeCachedEntry({
146
- cacheFilePath: params.cachePaths.cacheFilePath,
147
- storedEntry,
148
- });
149
- return storedEntry;
150
275
  }
151
- finally {
152
- await releaseLock({
153
- lockFilePath: params.cachePaths.lockFilePath,
154
- ownerId: lock.ownerId,
276
+ emitCacheEvent({
277
+ cachePaths: params.cachePaths,
278
+ event: { kind: "miss" },
279
+ onCacheEvent: params.onCacheEvent,
280
+ });
281
+ const authToken = await params.createToken();
282
+ if (!isValidBearerToken(authToken)) {
283
+ throw new Error("Generated admin auth token is malformed");
284
+ }
285
+ const mintedAtMs = params.nowImplementation();
286
+ const credentialFingerprint = getCredentialFingerprint({ authToken });
287
+ const isAccepted = await validateAdminAuthToken({
288
+ authToken,
289
+ validationTimeoutMs: params.validationTimeoutMs,
290
+ validateToken: params.validateToken,
291
+ });
292
+ if (!isAccepted) {
293
+ emitCacheEvent({
294
+ cachePaths: params.cachePaths,
295
+ event: {
296
+ kind: "validation-rejected",
297
+ credentialFingerprint,
298
+ jwtExpiresAtMs: getJwtExpirationMs({ authToken }),
299
+ mintedAtMs,
300
+ },
301
+ onCacheEvent: params.onCacheEvent,
155
302
  });
303
+ throw new Error("Generated admin auth token was rejected by validation");
156
304
  }
157
- }
158
- await removeStaleLock({
159
- lockFilePath: params.cachePaths.lockFilePath,
160
- lockStaleAfterMs: params.lockStaleAfterMs ?? DEFAULT_LOCK_STALE_AFTER_MS,
161
- nowImplementation: params.nowImplementation,
162
- });
163
- const retryDelayMs = (params.lockRetryDelayMs ?? DEFAULT_LOCK_RETRY_DELAY_MS) +
164
- Math.floor((params.randomImplementation?.() ?? Math.random()) *
165
- (params.lockRetryJitterMs ?? DEFAULT_LOCK_RETRY_JITTER_MS));
166
- await sleepImplementation({ durationMs: retryDelayMs });
167
- }
168
- /* eslint-enable no-await-in-loop */
169
- throw new Error(`Timed out waiting for admin auth token cache lock: ${params.cachePaths.lockFilePath}`);
305
+ const nowMs = params.nowImplementation();
306
+ const expiration = getAdminAuthTokenExpiration({
307
+ authToken,
308
+ cacheDurationMs: params.cacheDurationMs,
309
+ jwtExpirationSafetySkewMs: params.jwtExpirationSafetySkewMs,
310
+ nowMs,
311
+ });
312
+ if (expiration.expiresAtMs <= nowMs) {
313
+ throw new Error("Generated admin auth token expires within the configured safety skew");
314
+ }
315
+ const storedEntry = {
316
+ authToken,
317
+ expiresAtMs: expiration.expiresAtMs,
318
+ mintedAtMs,
319
+ validatedAtMs: (0, util_ts_1.isDefined)(params.validateToken) ? nowMs : undefined,
320
+ validationPolicyFingerprint: params.validationPolicyFingerprint,
321
+ };
322
+ await writeCachedEntry({
323
+ cacheFilePath: params.cachePaths.cacheFilePath,
324
+ storedEntry,
325
+ });
326
+ emitCacheEvent({
327
+ cachePaths: params.cachePaths,
328
+ event: {
329
+ kind: "created",
330
+ ...getCredentialEventMetadata({ storedEntry }),
331
+ expiresAtMs: storedEntry.expiresAtMs,
332
+ jwtExpiresAtMs: expiration.jwtExpiresAtMs,
333
+ validatedAtMs: storedEntry.validatedAtMs,
334
+ validationPolicyFingerprint: storedEntry.validationPolicyFingerprint,
335
+ },
336
+ onCacheEvent: params.onCacheEvent,
337
+ });
338
+ return getPublicCacheEntry({ storedEntry });
339
+ },
340
+ });
170
341
  }
171
342
  function validateParams(params) {
343
+ validateCacheLocationParams(params);
344
+ if (!Number.isFinite(params.cacheDurationMs) || params.cacheDurationMs <= 0) {
345
+ throw new Error("cacheDurationMs must be positive");
346
+ }
347
+ if ((0, util_ts_1.isDefined)(params.jwtExpirationSafetySkewMs) &&
348
+ (!Number.isFinite(params.jwtExpirationSafetySkewMs) || params.jwtExpirationSafetySkewMs < 0)) {
349
+ throw new Error("jwtExpirationSafetySkewMs must be finite and non-negative");
350
+ }
351
+ if ((0, util_ts_1.isDefined)(params.validateToken) &&
352
+ ((0, util_ts_1.isNil)(params.validationPolicy) || params.validationPolicy.trim().length === 0)) {
353
+ throw new Error("validationPolicy must be provided when validateToken is configured");
354
+ }
355
+ if ((0, util_ts_1.isDefined)(params.validationTimeoutMs) &&
356
+ (!Number.isFinite(params.validationTimeoutMs) || params.validationTimeoutMs <= 0)) {
357
+ throw new Error("validationTimeoutMs must be positive");
358
+ }
359
+ if (typeof params.forceRefresh === "object" &&
360
+ !isValidBearerToken(params.forceRefresh.rejectedAuthToken)) {
361
+ throw new Error("forceRefresh.rejectedAuthToken must be a valid bearer token");
362
+ }
363
+ }
364
+ function validateCacheLocationParams(params) {
172
365
  if (params.adminEmail.trim().length === 0) {
173
366
  throw new Error("adminEmail must not be empty");
174
367
  }
175
368
  if (params.apiEnvironmentName.trim().length === 0) {
176
369
  throw new Error("apiEnvironmentName must not be empty");
177
370
  }
178
- if (!Number.isFinite(params.cacheDurationMs) || params.cacheDurationMs <= 0) {
179
- throw new Error("cacheDurationMs must be positive");
371
+ if (params.cacheIdentity?.namespace.trim().length === 0) {
372
+ throw new Error("cacheIdentity.namespace must not be empty");
373
+ }
374
+ if (params.cacheIdentity?.tokenKind.trim().length === 0) {
375
+ throw new Error("cacheIdentity.tokenKind must not be empty");
180
376
  }
181
377
  }
378
+ function getGeneratedAdminAuthTokenCacheIdentity(params) {
379
+ return {
380
+ namespace: params.cacheIdentity?.namespace ?? "generateAdminAuthToken",
381
+ tokenKind: params.cacheIdentity?.tokenKind ?? "admin-user",
382
+ audience: params.cacheIdentity?.audience,
383
+ clientName: params.clientName ?? params.cacheIdentity?.clientName,
384
+ issuer: params.cacheIdentity?.issuer,
385
+ };
386
+ }
387
+ function isForceRefreshRequested(params) {
388
+ return (0, util_ts_1.isDefined)(params.forceRefresh) && params.forceRefresh !== false;
389
+ }
390
+ function getForceRefreshTargetCredentialFingerprint(params) {
391
+ if (!isForceRefreshRequested(params)) {
392
+ return undefined;
393
+ }
394
+ if (typeof params.forceRefresh === "object") {
395
+ return getCredentialFingerprint({ authToken: params.forceRefresh.rejectedAuthToken });
396
+ }
397
+ return (0, util_ts_1.isDefined)(params.cachedEntry)
398
+ ? getCredentialFingerprint({ authToken: params.cachedEntry.authToken })
399
+ : undefined;
400
+ }
182
401
  function getCachePaths(params) {
183
402
  const cacheDirectoryPath = params.cacheDirectory ?? node_path_1.default.join((0, node_os_1.tmpdir)(), DEFAULT_CACHE_DIRECTORY_NAME);
184
403
  const environmentSegment = params.apiEnvironmentName.replaceAll(/[^a-zA-Z0-9._-]/g, "_");
185
- const cacheKeyHash = (0, util_ts_1.createDeterministicHash)(`${params.apiEnvironmentName}\0${params.adminEmail}`).slice(0, 16);
186
- const cacheFileName = `admin-auth-token-${environmentSegment}-${cacheKeyHash}.json`;
404
+ const cacheKeyFingerprint = (0, util_ts_1.createDeterministicHash)(JSON.stringify({
405
+ adminEmail: params.adminEmail,
406
+ apiEnvironmentName: params.apiEnvironmentName,
407
+ cacheIdentity: (0, util_ts_1.isNil)(params.cacheIdentity)
408
+ ? undefined
409
+ : {
410
+ namespace: params.cacheIdentity.namespace,
411
+ tokenKind: params.cacheIdentity.tokenKind,
412
+ audience: params.cacheIdentity.audience,
413
+ clientName: params.cacheIdentity.clientName,
414
+ issuer: params.cacheIdentity.issuer,
415
+ },
416
+ })).slice(0, 16);
417
+ const cacheFileName = `admin-auth-token-${environmentSegment}-${cacheKeyFingerprint}.json`;
187
418
  return {
419
+ audience: params.cacheIdentity?.audience,
188
420
  cacheDirectoryPath,
189
421
  cacheFilePath: node_path_1.default.join(cacheDirectoryPath, cacheFileName),
422
+ cacheKeyFingerprint,
190
423
  lockFilePath: node_path_1.default.join(cacheDirectoryPath, `${cacheFileName}.lock`),
191
424
  };
192
425
  }
426
+ function getCredentialFingerprint(params) {
427
+ return (0, util_ts_1.createDeterministicHash)(params.authToken).slice(0, 16);
428
+ }
429
+ function getCredentialEventMetadata(params) {
430
+ if ((0, util_ts_1.isNil)(params.storedEntry)) {
431
+ return {};
432
+ }
433
+ return {
434
+ credentialFingerprint: getCredentialFingerprint({ authToken: params.storedEntry.authToken }),
435
+ mintedAtMs: params.storedEntry.mintedAtMs,
436
+ };
437
+ }
193
438
  async function readCachedEntry(params) {
194
439
  try {
195
440
  const contents = await (0, promises_1.readFile)(params.cacheFilePath, "utf8");
@@ -197,10 +442,20 @@ async function readCachedEntry(params) {
197
442
  if (!isStoredCacheEntry(parsed)) {
198
443
  return undefined;
199
444
  }
200
- if (params.nowImplementation() >= parsed.expiresAtMs) {
445
+ const nowMs = params.nowImplementation();
446
+ const expiration = getAdminAuthTokenExpiration({
447
+ authToken: parsed.authToken,
448
+ cacheDurationMs: parsed.expiresAtMs - nowMs,
449
+ jwtExpirationSafetySkewMs: params.jwtExpirationSafetySkewMs,
450
+ nowMs,
451
+ });
452
+ if (nowMs >= expiration.expiresAtMs) {
201
453
  return undefined;
202
454
  }
203
- return parsed;
455
+ return {
456
+ ...parsed,
457
+ expiresAtMs: Math.min(parsed.expiresAtMs, expiration.expiresAtMs),
458
+ };
204
459
  }
205
460
  catch (error) {
206
461
  if (isNodeErrorWithCode({ error, code: "ENOENT" }) || error instanceof SyntaxError) {
@@ -214,7 +469,19 @@ function isStoredCacheEntry(value) {
214
469
  typeof value["authToken"] === "string" &&
215
470
  isValidBearerToken(value["authToken"]) &&
216
471
  typeof value["expiresAtMs"] === "number" &&
217
- Number.isFinite(value["expiresAtMs"]));
472
+ Number.isFinite(value["expiresAtMs"]) &&
473
+ ((0, util_ts_1.isNil)(value["mintedAtMs"]) ||
474
+ (typeof value["mintedAtMs"] === "number" && Number.isFinite(value["mintedAtMs"]))) &&
475
+ ((0, util_ts_1.isNil)(value["validatedAtMs"]) ||
476
+ (typeof value["validatedAtMs"] === "number" && Number.isFinite(value["validatedAtMs"]))) &&
477
+ ((0, util_ts_1.isNil)(value["validationPolicyFingerprint"]) ||
478
+ typeof value["validationPolicyFingerprint"] === "string"));
479
+ }
480
+ function getPublicCacheEntry(params) {
481
+ return {
482
+ authToken: params.storedEntry.authToken,
483
+ expiresAtMs: params.storedEntry.expiresAtMs,
484
+ };
218
485
  }
219
486
  async function writeCachedEntry(params) {
220
487
  const temporaryFilePath = `${params.cacheFilePath}.${process.pid}.${(0, node_crypto_1.randomUUID)()}.tmp`;
@@ -229,10 +496,51 @@ async function writeCachedEntry(params) {
229
496
  await (0, promises_1.rm)(temporaryFilePath, { force: true });
230
497
  }
231
498
  }
499
+ async function persistCachedValidation(params) {
500
+ if (!params.needsValidation) {
501
+ return;
502
+ }
503
+ await writeCachedEntry({
504
+ cacheFilePath: params.cacheFilePath,
505
+ storedEntry: params.storedEntry,
506
+ });
507
+ }
508
+ async function runWithAdminAuthTokenLock(params) {
509
+ const waitStartedAtMs = node_perf_hooks_1.performance.now();
510
+ const lockWaitTimeoutMs = params.lockWaitTimeoutMs ?? DEFAULT_LOCK_WAIT_TIMEOUT_MS;
511
+ const sleepImplementation = params.sleepImplementation ?? sleep;
512
+ /* eslint-disable no-await-in-loop -- Lock acquisition and ownership checks are sequential. */
513
+ while (node_perf_hooks_1.performance.now() - waitStartedAtMs < lockWaitTimeoutMs) {
514
+ const lock = await tryAcquireLock({
515
+ lockFilePath: params.cachePaths.lockFilePath,
516
+ });
517
+ if ((0, util_ts_1.isDefined)(lock)) {
518
+ try {
519
+ return await params.operation();
520
+ }
521
+ finally {
522
+ await releaseLock({
523
+ lockFilePath: params.cachePaths.lockFilePath,
524
+ ownerId: lock.ownerId,
525
+ });
526
+ }
527
+ }
528
+ await removeStaleLock({
529
+ lockFilePath: params.cachePaths.lockFilePath,
530
+ lockStaleAfterMs: params.lockStaleAfterMs ?? DEFAULT_LOCK_STALE_AFTER_MS,
531
+ });
532
+ const retryDelayMs = (params.lockRetryDelayMs ?? DEFAULT_LOCK_RETRY_DELAY_MS) +
533
+ Math.floor((params.randomImplementation?.() ?? Math.random()) *
534
+ (params.lockRetryJitterMs ?? DEFAULT_LOCK_RETRY_JITTER_MS));
535
+ await sleepImplementation({ durationMs: retryDelayMs });
536
+ }
537
+ /* eslint-enable no-await-in-loop */
538
+ throw new Error(`Timed out waiting for admin auth token cache lock: ${params.cachePaths.lockFilePath}`);
539
+ }
232
540
  async function tryAcquireLock(params) {
233
541
  const lock = {
234
542
  ownerId: `${process.pid}-${(0, node_crypto_1.randomUUID)()}`,
235
- createdAtMs: params.nowImplementation(),
543
+ createdAtMs: Date.now(),
236
544
  pid: process.pid,
237
545
  };
238
546
  try {
@@ -255,10 +563,10 @@ async function removeStaleLock(params) {
255
563
  const lock = await readLock(params.lockFilePath);
256
564
  const lockFileStats = await (0, promises_1.stat)(params.lockFilePath);
257
565
  const lockCreatedAtMs = lock?.createdAtMs ?? lockFileStats.mtimeMs;
258
- if (params.nowImplementation() - lockCreatedAtMs < params.lockStaleAfterMs) {
566
+ if (Date.now() - lockCreatedAtMs < params.lockStaleAfterMs) {
259
567
  return;
260
568
  }
261
- if (lock === undefined) {
569
+ if ((0, util_ts_1.isNil)(lock)) {
262
570
  await (0, promises_1.rm)(params.lockFilePath, { force: true });
263
571
  return;
264
572
  }
@@ -305,6 +613,97 @@ function isValidBearerToken(authToken) {
305
613
  authToken.startsWith(BEARER_TOKEN_PREFIX) &&
306
614
  authToken.length > BEARER_TOKEN_PREFIX.length);
307
615
  }
616
+ async function validateAdminAuthToken(params) {
617
+ if ((0, util_ts_1.isNil)(params.validateToken)) {
618
+ return true;
619
+ }
620
+ const abortController = new AbortController();
621
+ const timeoutAbortController = new AbortController();
622
+ try {
623
+ return await Promise.race([
624
+ params.validateToken({
625
+ authToken: params.authToken,
626
+ signal: abortController.signal,
627
+ }),
628
+ throwAfterAdminAuthTokenValidationTimeout({
629
+ signal: timeoutAbortController.signal,
630
+ timeoutMs: params.validationTimeoutMs,
631
+ }),
632
+ ]);
633
+ }
634
+ finally {
635
+ abortController.abort();
636
+ timeoutAbortController.abort();
637
+ }
638
+ }
639
+ async function throwAfterAdminAuthTokenValidationTimeout(params) {
640
+ await (0, promises_2.setTimeout)(params.timeoutMs, undefined, { signal: params.signal });
641
+ throw new Error(`Admin auth token validation timed out after ${params.timeoutMs}ms`);
642
+ }
643
+ function getValidationPolicyFingerprint(params) {
644
+ return (0, util_ts_1.isDefined)(params.validateToken) && (0, util_ts_1.isDefined)(params.validationPolicy)
645
+ ? (0, util_ts_1.createDeterministicHash)(params.validationPolicy).slice(0, 16)
646
+ : undefined;
647
+ }
648
+ function getValidationTimeoutMs(params) {
649
+ const lockStaleAfterMs = params.lockStaleAfterMs ?? DEFAULT_LOCK_STALE_AFTER_MS;
650
+ return Math.min(params.validationTimeoutMs ?? DEFAULT_VALIDATION_TIMEOUT_MS, Math.max(1, Math.floor(lockStaleAfterMs / 2)));
651
+ }
652
+ function getAdminAuthTokenExpiration(params) {
653
+ const jwtExpiresAtMs = getJwtExpirationMs({ authToken: params.authToken });
654
+ const configuredExpiresAtMs = params.nowMs + params.cacheDurationMs;
655
+ const jwtCacheExpiresAtMs = (0, util_ts_1.isNil)(jwtExpiresAtMs)
656
+ ? Number.POSITIVE_INFINITY
657
+ : jwtExpiresAtMs - params.jwtExpirationSafetySkewMs;
658
+ return {
659
+ expiresAtMs: Math.min(configuredExpiresAtMs, jwtCacheExpiresAtMs),
660
+ jwtExpiresAtMs,
661
+ };
662
+ }
663
+ function getJwtExpirationMs(params) {
664
+ const rawToken = params.authToken.slice(BEARER_TOKEN_PREFIX.length);
665
+ const tokenSegments = rawToken.split(".");
666
+ if (tokenSegments.length !== 3) {
667
+ return undefined;
668
+ }
669
+ const [, encodedPayload] = tokenSegments;
670
+ if ((0, util_ts_1.isNil)(encodedPayload)) {
671
+ return undefined;
672
+ }
673
+ try {
674
+ const payload = JSON.parse(Buffer.from(encodedPayload, "base64url").toString("utf8"));
675
+ const expirationSeconds = (0, util_ts_1.isRecord)(payload) ? payload["exp"] : undefined;
676
+ return typeof expirationSeconds === "number" && Number.isFinite(expirationSeconds)
677
+ ? expirationSeconds * 1000
678
+ : undefined;
679
+ }
680
+ catch {
681
+ return undefined;
682
+ }
683
+ }
684
+ function emitCacheEvent(params) {
685
+ try {
686
+ const callbackResult = params.onCacheEvent?.({
687
+ ...params.event,
688
+ audience: params.cachePaths.audience,
689
+ cacheKeyFingerprint: params.cachePaths.cacheKeyFingerprint,
690
+ });
691
+ if (callbackResult instanceof Promise) {
692
+ void ignoreRejectedCacheEventCallback({ callbackResult });
693
+ }
694
+ }
695
+ catch {
696
+ // Diagnostics must never block token creation or cache access.
697
+ }
698
+ }
699
+ async function ignoreRejectedCacheEventCallback(params) {
700
+ try {
701
+ await params.callbackResult;
702
+ }
703
+ catch {
704
+ // Diagnostics must never block token creation or cache access.
705
+ }
706
+ }
308
707
  function isNodeErrorWithCode(params) {
309
708
  return (0, util_ts_1.isRecord)(params.error) && params.error["code"] === params.code;
310
709
  }
@@ -322,7 +721,7 @@ function getTokenCommandArguments(params) {
322
721
  params.adminEmail,
323
722
  "--quiet",
324
723
  ];
325
- if (params.clientName !== undefined) {
724
+ if ((0, util_ts_1.isDefined)(params.clientName)) {
326
725
  argumentsList.push("-n", params.clientName);
327
726
  }
328
727
  return argumentsList;
@@ -1 +1 @@
1
- {"version":3,"file":"adminAuthToken.js","sourceRoot":"","sources":["../../../../../packages/playwright-toolkit/src/lib/adminAuthToken.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adminAuthToken.js","sourceRoot":"","sources":["../../../../../packages/playwright-toolkit/src/lib/adminAuthToken.ts"],"names":[],"mappings":"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"}