@spine-event-engine/auth 2.0.0-snapshot.10

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.
Files changed (57) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +71 -0
  3. package/REFERENCE.md +94 -0
  4. package/dist/gateway/dynamic-subscription-creator.d.ts +52 -0
  5. package/dist/gateway/dynamic-subscription-creator.d.ts.map +1 -0
  6. package/dist/gateway/dynamic-subscription-creator.js +71 -0
  7. package/dist/gateway/dynamic-subscription-creator.js.map +1 -0
  8. package/dist/gateway/dynamic-unary-forwarder.d.ts +130 -0
  9. package/dist/gateway/dynamic-unary-forwarder.d.ts.map +1 -0
  10. package/dist/gateway/dynamic-unary-forwarder.js +185 -0
  11. package/dist/gateway/dynamic-unary-forwarder.js.map +1 -0
  12. package/dist/gateway/index.d.ts +164 -0
  13. package/dist/gateway/index.d.ts.map +1 -0
  14. package/dist/gateway/index.js +195 -0
  15. package/dist/gateway/index.js.map +1 -0
  16. package/dist/index.d.ts +433 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +56 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/native/index.d.ts +182 -0
  21. package/dist/native/index.d.ts.map +1 -0
  22. package/dist/native/index.js +463 -0
  23. package/dist/native/index.js.map +1 -0
  24. package/dist/oidc/contracts.d.ts +334 -0
  25. package/dist/oidc/contracts.d.ts.map +1 -0
  26. package/dist/oidc/contracts.js +15 -0
  27. package/dist/oidc/contracts.js.map +1 -0
  28. package/dist/oidc/index.d.ts +41 -0
  29. package/dist/oidc/index.d.ts.map +1 -0
  30. package/dist/oidc/index.js +825 -0
  31. package/dist/oidc/index.js.map +1 -0
  32. package/dist/providers/index.d.ts +154 -0
  33. package/dist/providers/index.d.ts.map +1 -0
  34. package/dist/providers/index.js +574 -0
  35. package/dist/providers/index.js.map +1 -0
  36. package/dist/request/index.d.ts +10 -0
  37. package/dist/request/index.d.ts.map +1 -0
  38. package/dist/request/index.js +81 -0
  39. package/dist/request/index.js.map +1 -0
  40. package/dist/sessions/cookies.d.ts +104 -0
  41. package/dist/sessions/cookies.d.ts.map +1 -0
  42. package/dist/sessions/cookies.js +295 -0
  43. package/dist/sessions/cookies.js.map +1 -0
  44. package/dist/sessions/opaque.d.ts +163 -0
  45. package/dist/sessions/opaque.d.ts.map +1 -0
  46. package/dist/sessions/opaque.js +268 -0
  47. package/dist/sessions/opaque.js.map +1 -0
  48. package/dist/sessions/signed.d.ts +245 -0
  49. package/dist/sessions/signed.d.ts.map +1 -0
  50. package/dist/sessions/signed.js +534 -0
  51. package/dist/sessions/signed.js.map +1 -0
  52. package/dist/subscriptions/index.d.ts +463 -0
  53. package/dist/subscriptions/index.d.ts.map +1 -0
  54. package/dist/subscriptions/index.js +814 -0
  55. package/dist/subscriptions/index.js.map +1 -0
  56. package/dist/tsconfig.tsbuildinfo +1 -0
  57. package/package.json +36 -0
@@ -0,0 +1,574 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ import { importJWK, jwtVerify } from "jose";
15
+ const DEFAULT_LIMIT = 1_048_576;
16
+ const DEFAULT_TIMEOUT = 30_000;
17
+ const MAX_JWKS = 32;
18
+ const MAX_SCOPES = 32;
19
+ const MAX_CACHE_SECONDS = 86_400;
20
+ const ALGORITHMS = new Set(["RS256", "ES256"]);
21
+ /**
22
+ * Fetches and validates OpenID Connect discovery metadata before constructing an adapter.
23
+ * @param options The trusted issuer and bounded discovery settings.
24
+ * @returns The configured provider, or undefined when discovery cannot be trusted.
25
+ */
26
+ export async function discoverOidcProvider(options) {
27
+ try {
28
+ const issuer = ProviderValues.https(options.issuer);
29
+ const discoveryEndpoint = options.discoveryEndpoint ?? `${issuer}/.well-known/openid-configuration`;
30
+ const timeout = ProviderValues.positive(options.timeoutMilliseconds ?? DEFAULT_TIMEOUT, "timeoutMilliseconds");
31
+ const document = await ProviderValues.boundedOperation(timeout, undefined, (signal) => ProviderValues.json(discoveryEndpoint, options.fetch ?? fetch, options, signal));
32
+ if (!ProviderValues.plain(document) || document.issuer !== issuer)
33
+ return undefined;
34
+ return createOidcProvider({
35
+ ...options,
36
+ issuer,
37
+ authorizationEndpoint: ProviderValues.bounded(document.authorization_endpoint, "authorization_endpoint"),
38
+ tokenEndpoint: ProviderValues.bounded(document.token_endpoint, "token_endpoint"),
39
+ jwksEndpoint: ProviderValues.bounded(document.jwks_uri, "jwks_uri"),
40
+ });
41
+ }
42
+ catch {
43
+ return undefined;
44
+ }
45
+ }
46
+ /**
47
+ * Creates an OIDC authorization-code verifier from explicitly trusted metadata.
48
+ * @param options The trusted OIDC endpoints, client credentials, and bounds.
49
+ * @returns The configured OIDC provider.
50
+ */
51
+ export function createOidcProvider(options) {
52
+ const issuer = ProviderValues.https(options.issuer);
53
+ const authorizationEndpoint = ProviderValues.https(options.authorizationEndpoint);
54
+ const tokenEndpoint = ProviderValues.https(options.tokenEndpoint);
55
+ const jwksEndpoint = ProviderValues.https(options.jwksEndpoint);
56
+ const clientId = ProviderValues.bounded(options.clientId, "clientId");
57
+ const clientAuthentication = options.clientAuthentication ?? "none";
58
+ if (!["client_secret_basic", "client_secret_post", "none"].includes(clientAuthentication))
59
+ throw new TypeError("clientAuthentication");
60
+ const clientSecret = options.clientSecret === undefined
61
+ ? undefined
62
+ : ProviderValues.bounded(options.clientSecret, "clientSecret");
63
+ if (clientAuthentication !== "none" && clientSecret === undefined)
64
+ throw new TypeError("clientSecret");
65
+ const limit = ProviderValues.positive(options.maxResponseBytes ?? DEFAULT_LIMIT, "maxResponseBytes");
66
+ const timeout = ProviderValues.positive(options.timeoutMilliseconds ?? DEFAULT_TIMEOUT, "timeoutMilliseconds");
67
+ const http = options.fetch ?? fetch;
68
+ const clock = options.clock ?? Date.now;
69
+ let cachedKeys;
70
+ let pendingKeys;
71
+ const loadKeys = async (refresh, signal) => {
72
+ const now = ProviderValues.safeNow(clock);
73
+ if (!refresh && cachedKeys && cachedKeys.expiresAt > now)
74
+ return cachedKeys.keys;
75
+ let pending = pendingKeys;
76
+ if (!pending) {
77
+ const controller = new AbortController();
78
+ const request = ProviderValues.boundedOperation(timeout, controller.signal, async (requestSignal) => {
79
+ const jwks = await ProviderValues.jsonDocument(jwksEndpoint, http, { maxResponseBytes: limit }, requestSignal);
80
+ const keys = ProviderValues.plain(jwks.value) &&
81
+ Array.isArray(jwks.value.keys) &&
82
+ jwks.value.keys.length <= MAX_JWKS
83
+ ? jwks.value.keys.filter(ProviderValues.plain)
84
+ : undefined;
85
+ if (!keys)
86
+ return undefined;
87
+ cachedKeys = Object.freeze({
88
+ keys,
89
+ expiresAt: now + jwks.cacheMilliseconds,
90
+ });
91
+ return keys;
92
+ });
93
+ pending = {
94
+ promise: request,
95
+ controller,
96
+ waiters: 0,
97
+ settled: false,
98
+ };
99
+ pendingKeys = pending;
100
+ const owned = pending;
101
+ void request.then(() => {
102
+ owned.settled = true;
103
+ if (pendingKeys === owned)
104
+ pendingKeys = undefined;
105
+ }, () => {
106
+ owned.settled = true;
107
+ if (pendingKeys === owned)
108
+ pendingKeys = undefined;
109
+ });
110
+ }
111
+ pending.waiters++;
112
+ try {
113
+ return await ProviderValues.waitForSignal(pending.promise, signal);
114
+ }
115
+ finally {
116
+ pending.waiters--;
117
+ if (pending.waiters === 0 && !pending.settled)
118
+ pending.controller.abort();
119
+ }
120
+ };
121
+ const provider = Object.freeze({
122
+ issuer,
123
+ async exchangeAuthorizationCode(input) {
124
+ try {
125
+ if (input.clientId !== clientId || !ProviderValues.validExchange(input))
126
+ return undefined;
127
+ const secret = clientSecret ?? "";
128
+ return await ProviderValues.boundedOperation(timeout, input.signal, async (signal) => {
129
+ const body = new URLSearchParams({
130
+ grant_type: "authorization_code",
131
+ code: input.code,
132
+ redirect_uri: input.callbackUri,
133
+ client_id: clientId,
134
+ code_verifier: input.providerCodeVerifier,
135
+ });
136
+ const headers = new Headers({
137
+ accept: "application/json",
138
+ "content-type": "application/x-www-form-urlencoded",
139
+ });
140
+ if (clientAuthentication === "client_secret_post")
141
+ body.set("client_secret", secret);
142
+ if (clientAuthentication === "client_secret_basic")
143
+ headers.set("authorization", `Basic ${Buffer.from(`${clientId}:${secret}`).toString("base64")}`);
144
+ const token = await ProviderValues.json(tokenEndpoint, http, { maxResponseBytes: limit }, signal, {
145
+ method: "POST",
146
+ redirect: "error",
147
+ signal,
148
+ headers,
149
+ body,
150
+ });
151
+ const idToken = ProviderValues.plain(token)
152
+ ? ProviderValues.string(token.id_token)
153
+ : undefined;
154
+ if (idToken === undefined)
155
+ return undefined;
156
+ const verified = await ProviderValues.verifyToken(idToken, issuer, clientId, input.expectedNonce, clock, (refresh) => loadKeys(refresh, signal));
157
+ return verified;
158
+ });
159
+ }
160
+ catch {
161
+ return undefined;
162
+ }
163
+ },
164
+ });
165
+ return Object.freeze({
166
+ authorizationEndpoint,
167
+ recommendedScopes: Object.freeze(["openid"]),
168
+ provider,
169
+ });
170
+ }
171
+ /**
172
+ * Fetches Google's fixed official OpenID Connect configuration.
173
+ * @param options The Google client credentials and bounded provider settings.
174
+ * @returns The configured Google provider, or undefined when discovery fails.
175
+ */
176
+ export async function createGoogleProvider(options) {
177
+ const { clientId, clientSecret, clientAuthentication, fetch: providerFetch, timeoutMilliseconds, maxResponseBytes, clock, } = options;
178
+ const configured = await discoverOidcProvider({
179
+ issuer: "https://accounts.google.com",
180
+ clientId,
181
+ ...(clientSecret === undefined ? {} : { clientSecret }),
182
+ ...(clientAuthentication === undefined ? {} : { clientAuthentication }),
183
+ ...(providerFetch === undefined ? {} : { fetch: providerFetch }),
184
+ ...(timeoutMilliseconds === undefined ? {} : { timeoutMilliseconds }),
185
+ ...(maxResponseBytes === undefined ? {} : { maxResponseBytes }),
186
+ ...(clock === undefined ? {} : { clock }),
187
+ });
188
+ return (configured &&
189
+ Object.freeze({
190
+ ...configured,
191
+ recommendedScopes: Object.freeze(["openid", "profile", "email"]),
192
+ }));
193
+ }
194
+ /**
195
+ * Creates GitHub OAuth code exchange with a fresh `/user` identity lookup.
196
+ * @param options The GitHub client credentials, endpoints, scopes, and bounds.
197
+ * @returns The configured GitHub provider.
198
+ */
199
+ export function createGitHubProvider(options) {
200
+ const base = ProviderValues.httpsBase(options.baseUrl ?? "https://github.com");
201
+ const api = ProviderValues.httpsBase(options.apiBaseUrl ?? "https://api.github.com");
202
+ const publicEndpoints = base === "https://github.com" && api === "https://api.github.com";
203
+ if (!publicEndpoints &&
204
+ (base === "https://github.com" ||
205
+ api === "https://api.github.com" ||
206
+ new URL(base).origin !== new URL(api).origin))
207
+ throw new TypeError("GitHub origins must move together");
208
+ const clientId = ProviderValues.bounded(options.clientId, "clientId"), clientSecret = ProviderValues.bounded(options.clientSecret, "clientSecret");
209
+ if (options.scopes !== undefined && !Array.isArray(options.scopes))
210
+ throw new TypeError("scopes");
211
+ if (options.includeVerifiedPrimaryEmail !== undefined &&
212
+ typeof options.includeVerifiedPrimaryEmail !== "boolean")
213
+ throw new TypeError("includeVerifiedPrimaryEmail");
214
+ const includeVerifiedPrimaryEmail = options.includeVerifiedPrimaryEmail === true;
215
+ const suppliedScopes = options.scopes ?? ["read:user"];
216
+ const requiredScopes = [];
217
+ for (const scope of suppliedScopes) {
218
+ if (!ProviderValues.validScope(scope))
219
+ throw new TypeError("scopes");
220
+ if (!requiredScopes.includes(scope))
221
+ requiredScopes.push(scope);
222
+ }
223
+ if (includeVerifiedPrimaryEmail && !requiredScopes.includes("user:email"))
224
+ requiredScopes.push("user:email");
225
+ if (requiredScopes.length === 0 || requiredScopes.length > MAX_SCOPES)
226
+ throw new TypeError("scopes");
227
+ const apiVersion = options.apiVersion ?? "2022-11-28";
228
+ if (!/^\d{4}-\d{2}-\d{2}$/u.test(apiVersion))
229
+ throw new TypeError("apiVersion");
230
+ const http = options.fetch ?? fetch, limit = ProviderValues.positive(options.maxResponseBytes ?? DEFAULT_LIMIT, "maxResponseBytes"), timeout = ProviderValues.positive(options.timeoutMilliseconds ?? DEFAULT_TIMEOUT, "timeoutMilliseconds");
231
+ const provider = Object.freeze({
232
+ issuer: base,
233
+ async exchangeAuthorizationCode(input) {
234
+ try {
235
+ if (input.clientId !== clientId || !ProviderValues.validExchange(input))
236
+ return undefined;
237
+ return await ProviderValues.boundedOperation(timeout, input.signal, async (signal) => {
238
+ const token = await ProviderValues.json(`${base}/login/oauth/access_token`, http, { maxResponseBytes: limit }, signal, {
239
+ method: "POST",
240
+ redirect: "error",
241
+ headers: {
242
+ accept: "application/json",
243
+ "content-type": "application/x-www-form-urlencoded",
244
+ },
245
+ body: new URLSearchParams({
246
+ client_id: clientId,
247
+ client_secret: clientSecret,
248
+ code: input.code,
249
+ redirect_uri: input.callbackUri,
250
+ code_verifier: input.providerCodeVerifier,
251
+ }),
252
+ });
253
+ if (!ProviderValues.plain(token) ||
254
+ !ProviderValues.string(token.access_token) ||
255
+ typeof token.token_type !== "string" ||
256
+ token.token_type.toLowerCase() !== "bearer")
257
+ return undefined;
258
+ const accessToken = ProviderValues.string(token.access_token);
259
+ if (accessToken === undefined)
260
+ return undefined;
261
+ const granted = typeof token.scope === "string" ? token.scope.split(/[ ,]+/).filter(Boolean) : [];
262
+ if (requiredScopes.some((scope) => !granted.includes(scope)))
263
+ return undefined;
264
+ const user = await ProviderValues.json(`${api}/user`, http, { maxResponseBytes: limit }, signal, {
265
+ redirect: "error",
266
+ headers: {
267
+ accept: "application/json",
268
+ authorization: `Bearer ${accessToken}`,
269
+ "x-github-api-version": apiVersion,
270
+ },
271
+ });
272
+ if (!ProviderValues.plain(user) ||
273
+ !Number.isSafeInteger(user.id) ||
274
+ user.id <= 0)
275
+ return undefined;
276
+ const claims = Object.create(null);
277
+ if (includeVerifiedPrimaryEmail) {
278
+ const emails = await ProviderValues.json(`${api}/user/emails`, http, { maxResponseBytes: limit }, signal, {
279
+ redirect: "error",
280
+ headers: {
281
+ accept: "application/json",
282
+ authorization: `Bearer ${accessToken}`,
283
+ "x-github-api-version": apiVersion,
284
+ },
285
+ });
286
+ if (!Array.isArray(emails) || emails.length > 64)
287
+ return undefined;
288
+ const primary = emails.filter(ProviderValues.validPrimaryEmail);
289
+ if (primary.length !== 1)
290
+ return undefined;
291
+ const email = primary[0];
292
+ if (email === undefined)
293
+ return undefined;
294
+ Object.defineProperty(claims, "email", { value: email.email, enumerable: true });
295
+ }
296
+ return Object.freeze({
297
+ issuer: base,
298
+ subject: String(user.id),
299
+ ...(Object.keys(claims).length ? { claims: Object.freeze(claims) } : {}),
300
+ });
301
+ });
302
+ }
303
+ catch {
304
+ return undefined;
305
+ }
306
+ },
307
+ });
308
+ return Object.freeze({
309
+ authorizationEndpoint: `${base}/login/oauth/authorize`,
310
+ recommendedScopes: Object.freeze(requiredScopes),
311
+ provider,
312
+ });
313
+ }
314
+ /**
315
+ * Parses provider responses, bounds I/O, and verifies OIDC details.
316
+ */
317
+ const ProviderValues = Object.freeze({
318
+ async verifyToken(token, issuer, clientId, nonce, clock, keys) {
319
+ const [encodedHeader] = token.split(".", 1);
320
+ const header = encodedHeader ? ProviderValues.parse64(encodedHeader) : undefined;
321
+ if (!ProviderValues.plain(header))
322
+ return undefined;
323
+ const protectedHeader = header;
324
+ const alg = ProviderValues.string(protectedHeader.alg);
325
+ if (!alg || !ALGORITHMS.has(alg) || typeof protectedHeader.crit !== "undefined")
326
+ return undefined;
327
+ const kid = ProviderValues.string(protectedHeader.kid);
328
+ if (!kid)
329
+ return undefined;
330
+ const candidates = (await keys(false))?.filter((key) => key.kid === kid) ?? [];
331
+ let key = candidates.length === 1 ? candidates[0] : undefined;
332
+ if (!key) {
333
+ const refreshed = (await keys(true))?.filter((value) => value.kid === kid) ?? [];
334
+ key = refreshed.length === 1 ? refreshed[0] : undefined;
335
+ }
336
+ if (!key || key.kty === "oct" || key.alg !== alg)
337
+ return undefined;
338
+ let claims;
339
+ try {
340
+ const verified = await jwtVerify(token, await importJWK(key, alg), {
341
+ issuer,
342
+ audience: clientId,
343
+ algorithms: [alg],
344
+ currentDate: new Date(clock()),
345
+ typ: "JWT",
346
+ });
347
+ claims = verified.payload;
348
+ }
349
+ catch {
350
+ return undefined;
351
+ }
352
+ const audience = Array.isArray(claims.aud) ? claims.aud : [claims.aud];
353
+ if (claims.nonce !== nonce ||
354
+ typeof claims.sub !== "string" ||
355
+ !claims.sub ||
356
+ (audience.length > 1 && claims.azp !== clientId))
357
+ return undefined;
358
+ const kept = Object.create(null);
359
+ for (const name of ["email", "name", "given_name", "family_name", "picture"])
360
+ if (typeof claims[name] === "string" &&
361
+ claims[name].length <= 512 &&
362
+ (name !== "email" || ProviderValues.validEmail(claims[name])))
363
+ Object.defineProperty(kept, name, { value: claims[name], enumerable: true });
364
+ if (typeof claims.email_verified === "boolean")
365
+ Object.defineProperty(kept, "email_verified", {
366
+ value: String(claims.email_verified),
367
+ enumerable: true,
368
+ });
369
+ return Object.freeze({ issuer, subject: claims.sub, claims: Object.freeze(kept) });
370
+ },
371
+ async json(url, http, limits, signal, init) {
372
+ return (await ProviderValues.jsonDocument(url, http, limits, signal, init)).value;
373
+ },
374
+ async jsonDocument(url, http, limits, signal, init) {
375
+ const request = {
376
+ redirect: "error",
377
+ headers: { accept: "application/json" },
378
+ ...init,
379
+ };
380
+ if (signal !== undefined)
381
+ request.signal = signal;
382
+ if (signal?.aborted)
383
+ throw new Error("response");
384
+ const response = await http(ProviderValues.https(url), request);
385
+ if (signal?.aborted) {
386
+ void response.body?.cancel().catch(() => undefined);
387
+ throw new Error("response");
388
+ }
389
+ const limit = limits.maxResponseBytes ?? DEFAULT_LIMIT;
390
+ if (!response.ok ||
391
+ !response.headers.get("content-type")?.toLowerCase().includes("application/json") ||
392
+ Number(response.headers.get("content-length") ?? 0) > limit) {
393
+ void response.body?.cancel().catch(() => undefined);
394
+ throw new Error("response");
395
+ }
396
+ if (!response.body)
397
+ throw new Error("response");
398
+ const reader = response.body.getReader();
399
+ const chunks = [];
400
+ let size = 0;
401
+ let complete = false;
402
+ try {
403
+ for (;;) {
404
+ const next = await ProviderValues.abortableRead(reader, signal);
405
+ if (next.done) {
406
+ complete = true;
407
+ break;
408
+ }
409
+ size += next.value.byteLength;
410
+ if (size > limit)
411
+ throw new Error("response");
412
+ chunks.push(next.value);
413
+ }
414
+ }
415
+ finally {
416
+ if (!complete)
417
+ void reader.cancel().catch(() => undefined);
418
+ try {
419
+ reader.releaseLock();
420
+ }
421
+ catch {
422
+ // A hostile stream may keep a read pending after cancellation.
423
+ }
424
+ }
425
+ if (signal?.aborted)
426
+ throw new Error("response");
427
+ const value = JSON.parse(Buffer.concat(chunks.map((chunk) => Buffer.from(chunk))).toString("utf8"));
428
+ return Object.freeze({
429
+ value,
430
+ cacheMilliseconds: ProviderValues.cacheMilliseconds(response.headers),
431
+ });
432
+ },
433
+ validExchange(input) {
434
+ return [input.code, input.callbackUri, input.providerCodeVerifier, input.expectedNonce].every((value) => typeof value === "string" && value.length > 0 && value.length <= 4096);
435
+ },
436
+ parse64(value) {
437
+ try {
438
+ return JSON.parse(Buffer.from(value, "base64url").toString("utf8"));
439
+ }
440
+ catch {
441
+ return undefined;
442
+ }
443
+ },
444
+ plain(value) {
445
+ return (typeof value === "object" &&
446
+ value !== null &&
447
+ Object.getPrototypeOf(value) === Object.prototype);
448
+ },
449
+ string(value) {
450
+ return typeof value === "string" && value.length > 0 && value.length <= 4096
451
+ ? value
452
+ : undefined;
453
+ },
454
+ bounded(value, name) {
455
+ const result = ProviderValues.string(value);
456
+ if (!result)
457
+ throw new TypeError(name);
458
+ return result;
459
+ },
460
+ validEmail(value) {
461
+ return (typeof value === "string" && value.length <= 320 && /^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(value));
462
+ },
463
+ validPrimaryEmail(value) {
464
+ return (ProviderValues.plain(value) &&
465
+ value.primary === true &&
466
+ value.verified === true &&
467
+ ProviderValues.validEmail(value.email));
468
+ },
469
+ validScope(value) {
470
+ return (typeof value === "string" && value.length > 0 && value.length <= 128 && !/\s/u.test(value));
471
+ },
472
+ positive(value, name) {
473
+ if (!Number.isSafeInteger(value) || value <= 0)
474
+ throw new TypeError(name);
475
+ return value;
476
+ },
477
+ https(value) {
478
+ const text = ProviderValues.bounded(value, "URL");
479
+ const url = new URL(text);
480
+ if (url.protocol !== "https:" || url.username || url.password || url.hash)
481
+ throw new TypeError("HTTPS URL required");
482
+ return text;
483
+ },
484
+ httpsBase(value) {
485
+ ProviderValues.https(value);
486
+ const url = new URL(value);
487
+ if (url.search)
488
+ throw new TypeError("HTTPS base URL must not contain a query.");
489
+ return value.replace(/\/+$/u, "");
490
+ },
491
+ async boundedOperation(timeoutMilliseconds, externalSignal, operation) {
492
+ const controller = new AbortController();
493
+ const signal = externalSignal === undefined
494
+ ? controller.signal
495
+ : AbortSignal.any([externalSignal, controller.signal]);
496
+ let rejectAbort;
497
+ const aborted = new Promise((_resolve, reject) => {
498
+ rejectAbort = reject;
499
+ });
500
+ const onAbort = () => rejectAbort?.(new Error("Provider operation aborted."));
501
+ signal.addEventListener("abort", onAbort, { once: true });
502
+ const timer = setTimeout(() => {
503
+ controller.abort();
504
+ }, timeoutMilliseconds);
505
+ try {
506
+ if (signal.aborted)
507
+ throw new Error("Provider operation aborted.");
508
+ return await Promise.race([operation(signal), aborted]);
509
+ }
510
+ finally {
511
+ clearTimeout(timer);
512
+ signal.removeEventListener("abort", onAbort);
513
+ }
514
+ },
515
+ async waitForSignal(operation, signal) {
516
+ if (signal.aborted)
517
+ throw new Error("Provider operation aborted.");
518
+ let rejectAbort;
519
+ const aborted = new Promise((_resolve, reject) => {
520
+ rejectAbort = reject;
521
+ });
522
+ const onAbort = () => rejectAbort?.(new Error("Provider operation aborted."));
523
+ signal.addEventListener("abort", onAbort, { once: true });
524
+ try {
525
+ return await Promise.race([operation, aborted]);
526
+ }
527
+ finally {
528
+ signal.removeEventListener("abort", onAbort);
529
+ }
530
+ },
531
+ async abortableRead(reader, signal) {
532
+ if (signal === undefined)
533
+ return reader.read();
534
+ if (signal.aborted)
535
+ throw new Error("Provider operation aborted.");
536
+ return new Promise((resolve, reject) => {
537
+ const onAbort = () => {
538
+ void reader.cancel().catch(() => undefined);
539
+ reject(new Error("Provider operation aborted."));
540
+ };
541
+ signal.addEventListener("abort", onAbort, { once: true });
542
+ reader
543
+ .read()
544
+ .then(resolve, reject)
545
+ .finally(() => {
546
+ signal.removeEventListener("abort", onAbort);
547
+ });
548
+ });
549
+ },
550
+ safeNow(clock) {
551
+ const value = clock();
552
+ if (!Number.isSafeInteger(value) || value < 0)
553
+ throw new TypeError("clock");
554
+ return value;
555
+ },
556
+ cacheMilliseconds(headers) {
557
+ const directives = (headers.get("cache-control") ?? "")
558
+ .split(",")
559
+ .map((directive) => directive.trim().toLowerCase());
560
+ if (directives.includes("no-store") || directives.includes("no-cache"))
561
+ return 0;
562
+ const maxAge = directives
563
+ .map((directive) => /^max-age=(\d+)$/u.exec(directive)?.[1])
564
+ .find((value) => value !== undefined);
565
+ if (maxAge === undefined)
566
+ return 0;
567
+ const seconds = Math.min(Number(maxAge), MAX_CACHE_SECONDS);
568
+ const age = Math.max(0, Number(headers.get("age") ?? 0));
569
+ if (!Number.isSafeInteger(seconds) || !Number.isFinite(age))
570
+ return 0;
571
+ return Math.max(0, seconds - age) * 1000;
572
+ },
573
+ });
574
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { IncomingRequest, IncomingRequestInput } from "../index.js";
2
+ interface IncomingRequestDecoder {
3
+ decode(input: IncomingRequestInput): IncomingRequest | undefined;
4
+ }
5
+ /**
6
+ * Decodes the public request envelopes accepted by authentication gateways.
7
+ */
8
+ export declare const IncomingRequests: Readonly<IncomingRequestDecoder>;
9
+ export {};
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEzE,UAAU,sBAAsB;IAC9B,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,GAAG,SAAS,CAAC;CAClE;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,sBAAsB,CA4D5D,CAAC"}