@seamless-auth/oidc-provider 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +80 -10
  3. package/dist/accessTokenClaims.d.ts +11 -0
  4. package/dist/accessTokenClaims.js +30 -0
  5. package/dist/accessTokenClaims.js.map +1 -1
  6. package/dist/accountClaims.d.ts +51 -0
  7. package/dist/accountClaims.js +102 -0
  8. package/dist/accountClaims.js.map +1 -0
  9. package/dist/adapter.js +16 -3
  10. package/dist/adapter.js.map +1 -1
  11. package/dist/apiClient.d.ts +3 -2
  12. package/dist/apiClient.js +3 -2
  13. package/dist/apiClient.js.map +1 -1
  14. package/dist/brandingContrast.d.ts +4 -0
  15. package/dist/brandingContrast.js +59 -0
  16. package/dist/brandingContrast.js.map +1 -0
  17. package/dist/claimsMismatch.d.ts +15 -0
  18. package/dist/claimsMismatch.js +90 -0
  19. package/dist/claimsMismatch.js.map +1 -0
  20. package/dist/createOidcEdge.d.ts +5 -0
  21. package/dist/createOidcEdge.js +43 -7
  22. package/dist/createOidcEdge.js.map +1 -1
  23. package/dist/deviceFlow.d.ts +2 -6
  24. package/dist/deviceFlow.js +2 -10
  25. package/dist/deviceFlow.js.map +1 -1
  26. package/dist/env.d.ts +1 -4
  27. package/dist/env.js +46 -4
  28. package/dist/env.js.map +1 -1
  29. package/dist/errorPage.d.ts +10 -0
  30. package/dist/errorPage.js +24 -0
  31. package/dist/errorPage.js.map +1 -0
  32. package/dist/hostedPages.d.ts +1 -0
  33. package/dist/hostedPages.js +24 -1
  34. package/dist/hostedPages.js.map +1 -1
  35. package/dist/index.d.ts +1 -1
  36. package/dist/index.js +1 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/interactions.js +83 -30
  39. package/dist/interactions.js.map +1 -1
  40. package/dist/jwtAccessTokens.d.ts +1 -1
  41. package/dist/jwtAccessTokens.js +2 -1
  42. package/dist/jwtAccessTokens.js.map +1 -1
  43. package/dist/logout.d.ts +4 -0
  44. package/dist/logout.js +8 -1
  45. package/dist/logout.js.map +1 -1
  46. package/dist/providerConfig.d.ts +3 -3
  47. package/dist/providerConfig.js +22 -8
  48. package/dist/providerConfig.js.map +1 -1
  49. package/dist/requestContext.d.ts +1 -2
  50. package/dist/requestContext.js.map +1 -1
  51. package/dist/requestObjectErrors.d.ts +12 -0
  52. package/dist/requestObjectErrors.js +47 -0
  53. package/dist/requestObjectErrors.js.map +1 -0
  54. package/dist/resumeCookie.js +3 -1
  55. package/dist/resumeCookie.js.map +1 -1
  56. package/dist/server.js +2 -2
  57. package/dist/server.js.map +1 -1
  58. package/dist/signingKey.d.ts +31 -3
  59. package/dist/signingKey.js +104 -4
  60. package/dist/signingKey.js.map +1 -1
  61. package/dist/ui/assets/index-BLikvo1E.js +18 -0
  62. package/dist/ui/assets/index-DKah8G4b.css +1 -0
  63. package/dist/ui/index.html +2 -2
  64. package/package.json +11 -8
  65. package/dist/ui/assets/index-CydLXRvo.js +0 -18
  66. package/dist/ui/assets/index-y3LME-Gv.css +0 -1
@@ -0,0 +1,59 @@
1
+ /*
2
+ * Copyright © 2026 Fells Code, LLC
3
+ * Licensed under the Apache License, Version 2.0
4
+ * See LICENSE file in the project root for full license information
5
+ */
6
+ /** The stylesheet's light palette (ui/src/styles.css), which unset colors fall back to. */
7
+ const DEFAULT_COLORS = {
8
+ primary: '#1f4fd1',
9
+ onPrimary: '#ffffff',
10
+ background: '#f5f6f8',
11
+ surface: '#ffffff',
12
+ text: '#1a1d21',
13
+ muted: '#4a515b',
14
+ };
15
+ /**
16
+ * The pairs the hosted pages draw. Text needs 4.5:1 (WCAG 1.4.3). The primary color is also
17
+ * the focus ring on the page background, which needs 3:1 (1.4.11).
18
+ */
19
+ const PAIRS = [
20
+ { foreground: 'text', background: 'background', minimum: 4.5 },
21
+ { foreground: 'text', background: 'surface', minimum: 4.5 },
22
+ { foreground: 'muted', background: 'background', minimum: 4.5 },
23
+ { foreground: 'muted', background: 'surface', minimum: 4.5 },
24
+ { foreground: 'onPrimary', background: 'primary', minimum: 4.5 },
25
+ { foreground: 'primary', background: 'surface', minimum: 4.5 },
26
+ { foreground: 'primary', background: 'background', minimum: 3 },
27
+ ];
28
+ function channel(value) {
29
+ const srgb = value / 255;
30
+ return srgb <= 0.04045 ? srgb / 12.92 : ((srgb + 0.055) / 1.055) ** 2.4;
31
+ }
32
+ function luminance(hex) {
33
+ const digits = hex.slice(1);
34
+ // An 8-digit color's alpha is ignored: the check reads it as opaque.
35
+ const full = digits.length === 3 ? [...digits].map((digit) => digit + digit).join('') : digits.slice(0, 6);
36
+ const [r, g, b] = [0, 2, 4].map((index) => channel(parseInt(full.slice(index, index + 2), 16)));
37
+ return 0.2126 * r + 0.7152 * g + 0.0722 * b;
38
+ }
39
+ export function contrastRatio(a, b) {
40
+ const [light, dark] = [luminance(a), luminance(b)].sort((x, y) => y - x);
41
+ return (light + 0.05) / (dark + 0.05);
42
+ }
43
+ /** The color pairs a branded palette leaves below WCAG 2.2 AA, as readable lines. */
44
+ export function brandingContrastProblems(hostedUi) {
45
+ const colors = hostedUi?.colors;
46
+ if (!colors || Object.keys(colors).length === 0) {
47
+ return [];
48
+ }
49
+ const palette = { ...DEFAULT_COLORS, ...colors };
50
+ return PAIRS.flatMap(({ foreground, background, minimum }) => {
51
+ const ratio = contrastRatio(palette[foreground], palette[background]);
52
+ return ratio < minimum
53
+ ? [
54
+ `${foreground} ${palette[foreground]} on ${background} ${palette[background]} is ${ratio.toFixed(2)}:1, needs ${minimum}:1`,
55
+ ]
56
+ : [];
57
+ });
58
+ }
59
+ //# sourceMappingURL=brandingContrast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brandingContrast.js","sourceRoot":"","sources":["../src/brandingContrast.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,2FAA2F;AAC3F,MAAM,cAAc,GAA8B;IAChD,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,KAAK,GAAwE;IACjF,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE;IAC9D,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE;IAC3D,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE;IAC/D,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE;IAC5D,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE;IAChE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE;IAC9D,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE;CAChE,CAAC;AAEF,SAAS,OAAO,CAAC,KAAa;IAC5B,MAAM,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC;IACzB,OAAO,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;AAC1E,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,qEAAqE;IACrE,MAAM,IAAI,GACR,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAChG,OAAO,MAAM,GAAG,CAAE,GAAG,MAAM,GAAG,CAAE,GAAG,MAAM,GAAG,CAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,CAAS;IAChD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,KAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAK,GAAG,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,wBAAwB,CAAC,QAA8B;IACrE,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC;IAChC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACjD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3D,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACtE,OAAO,KAAK,GAAG,OAAO;YACpB,CAAC,CAAC;gBACE,GAAG,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,OAAO,IAAI;aAC5H;YACH,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { errors, Provider } from 'oidc-provider';
2
+ import type { OidcApiClient } from './apiClient.js';
3
+ /** RFC 6749 section 5.2, with the 500 the library answers `server_error` with. */
4
+ export declare function claimsChangedError(): errors.OIDCProviderError;
5
+ /**
6
+ * A role or membership can change between the account read that built a token and the API's
7
+ * sign, and the API then refuses with `claims_mismatch`. The token is built again from a fresh
8
+ * read and signed once more. A second mismatch fails the request as `server_error`; every other
9
+ * refusal is left as it was.
10
+ *
11
+ * ID tokens (and signed userinfo) copy the account's claims when they are created, so those
12
+ * are swapped in place. An access token reads them again on `save` through `extraTokenClaims`,
13
+ * and the record a failed `save` stored under its jti is overwritten by the retry.
14
+ */
15
+ export declare function retryOnClaimsMismatch(provider: Provider, client: OidcApiClient): void;
@@ -0,0 +1,90 @@
1
+ /*
2
+ * Copyright © 2026 Fells Code, LLC
3
+ * Licensed under the Apache License, Version 2.0
4
+ * See LICENSE file in the project root for full license information
5
+ */
6
+ import { errors, Provider } from 'oidc-provider';
7
+ import { accountClaimsOf, providerAccountOf, withAccount } from './accountClaims.js';
8
+ import { OidcSignRefusedError } from './errors.js';
9
+ import { currentRequestContext } from './requestContext.js';
10
+ function isClaimsMismatch(error) {
11
+ return error instanceof OidcSignRefusedError && error.code === 'claims_mismatch';
12
+ }
13
+ /** RFC 6749 section 5.2, with the 500 the library answers `server_error` with. */
14
+ export function claimsChangedError() {
15
+ const error = new errors.OIDCProviderError(500, 'server_error');
16
+ error.expose = true;
17
+ error.error_description = 'the account changed while the token was being issued, try again';
18
+ return error;
19
+ }
20
+ /**
21
+ * Reads the account again for the session and client the request serves, and puts the new
22
+ * claims on the account the library loaded. Returns the claims it replaced, or undefined when
23
+ * the API no longer describes the account.
24
+ */
25
+ async function rereadAccount(client, ctx) {
26
+ const account = ctx?.oidc?.account;
27
+ const previous = providerAccountOf(account);
28
+ const clientId = ctx?.oidc?.client?.clientId;
29
+ const sessionId = currentRequestContext()?.sessionId;
30
+ if (!account || !previous || !clientId || !sessionId) {
31
+ return undefined;
32
+ }
33
+ const fresh = await client.account(account.accountId, { clientId, sessionId });
34
+ if (!fresh || fresh.sub !== previous.sub) {
35
+ return undefined;
36
+ }
37
+ withAccount(account, fresh);
38
+ return { previous, fresh };
39
+ }
40
+ /**
41
+ * A role or membership can change between the account read that built a token and the API's
42
+ * sign, and the API then refuses with `claims_mismatch`. The token is built again from a fresh
43
+ * read and signed once more. A second mismatch fails the request as `server_error`; every other
44
+ * refusal is left as it was.
45
+ *
46
+ * ID tokens (and signed userinfo) copy the account's claims when they are created, so those
47
+ * are swapped in place. An access token reads them again on `save` through `extraTokenClaims`,
48
+ * and the record a failed `save` stored under its jti is overwritten by the retry.
49
+ */
50
+ export function retryOnClaimsMismatch(provider, client) {
51
+ async function retrying(ctx, attempt, rebuild) {
52
+ try {
53
+ return await attempt();
54
+ }
55
+ catch (error) {
56
+ if (!isClaimsMismatch(error)) {
57
+ throw error;
58
+ }
59
+ const reread = await rereadAccount(client, ctx);
60
+ if (!reread) {
61
+ throw claimsChangedError();
62
+ }
63
+ rebuild(reread);
64
+ try {
65
+ return await attempt();
66
+ }
67
+ catch (retryError) {
68
+ throw isClaimsMismatch(retryError) ? claimsChangedError() : retryError;
69
+ }
70
+ }
71
+ }
72
+ const idToken = provider.IdToken.prototype;
73
+ const issue = idToken.issue;
74
+ idToken.issue = function (...args) {
75
+ return retrying(this.ctx ?? Provider.ctx, () => issue.apply(this, args), ({ previous, fresh }) => {
76
+ for (const key of Reflect.ownKeys(accountClaimsOf(previous))) {
77
+ if (key !== 'sub') {
78
+ delete this.available[key];
79
+ }
80
+ }
81
+ Object.assign(this.available, accountClaimsOf(fresh));
82
+ });
83
+ };
84
+ const accessToken = provider.AccessToken.prototype;
85
+ const save = accessToken.save;
86
+ accessToken.save = function (...args) {
87
+ return retrying(Provider.ctx, () => save.apply(this, args), () => undefined);
88
+ };
89
+ }
90
+ //# sourceMappingURL=claimsMismatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claimsMismatch.js","sourceRoot":"","sources":["../src/claimsMismatch.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,11 @@ export interface OidcEdgeOptions {
28
28
  * `trust proxy` set to match.
29
29
  */
30
30
  trustProxy?: boolean;
31
+ /**
32
+ * How often to re-read the API's provider keys, so a rotation is picked up. A key the API
33
+ * refuses as unknown reloads them at once as well. `0` turns the timer off.
34
+ */
35
+ signingKeyRefreshMs?: number;
31
36
  /** `false` keeps the adapter on its bundled route manifest. */
32
37
  fetchAdapterManifest?: boolean;
33
38
  /** The built hosted pages. Defaults to the copy this package ships in `dist/ui`. */
@@ -8,7 +8,9 @@ import { fileURLToPath } from 'node:url';
8
8
  import { createSeamlessAuthServer } from '@seamless-auth/express';
9
9
  import express from 'express';
10
10
  import Provider from 'oidc-provider';
11
+ import { releaseAuthorizationClaims } from './accountClaims.js';
11
12
  import { OidcApiClient } from './apiClient.js';
13
+ import { retryOnClaimsMismatch } from './claimsMismatch.js';
12
14
  import { verifyClientSecrets } from './clientSecrets.js';
13
15
  import { EdgeConfigCache } from './configCache.js';
14
16
  import { deviceFlowMiddleware } from './deviceFlow.js';
@@ -21,8 +23,9 @@ import { buildProviderConfiguration, PROVIDER_COOKIE_NAMES } from './providerCon
21
23
  import { createRateLimiter } from './rateLimit.js';
22
24
  import { revokeSessionOnRefreshReuse } from './refreshReuse.js';
23
25
  import { runWithRequestContext } from './requestContext.js';
26
+ import { formPostRefusedRequestObjects } from './requestObjectErrors.js';
24
27
  import { hostOnlyResumeCookie } from './resumeCookie.js';
25
- import { signingKeysFrom } from './signingKey.js';
28
+ import { SigningKeyRing } from './signingKey.js';
26
29
  import { checkApiCompatibility } from './startup.js';
27
30
  import { auditRevocations } from './tokenAudit.js';
28
31
  export const ADAPTER_COOKIE_NAMES = {
@@ -40,7 +43,10 @@ export async function createOidcEdge(options) {
40
43
  });
41
44
  const config = await checkApiCompatibility(client);
42
45
  const configCache = new EdgeConfigCache(client, config);
43
- const signingKeys = signingKeysFrom(await client.jwks(), client);
46
+ const signingKeys = new SigningKeyRing(await client.jwks(), client);
47
+ if (options.signingKeyRefreshMs !== 0) {
48
+ signingKeys.startRefresh(options.signingKeyRefreshMs);
49
+ }
44
50
  const hostedPages = {
45
51
  uiDir: options.uiDir ?? fileURLToPath(new URL('./ui/', import.meta.url)),
46
52
  configCache,
@@ -50,23 +56,30 @@ export async function createOidcEdge(options) {
50
56
  client,
51
57
  config,
52
58
  configCache,
53
- signingKeys,
59
+ signingKeys: signingKeys.providerKeys,
54
60
  cookieKeys: options.cookieKeys,
55
61
  renderPage,
56
62
  adapterCookieSecret: options.adapterCookieSecret,
57
63
  accessCookieName: ADAPTER_COOKIE_NAMES.access,
58
64
  }));
59
65
  leaveBackchannelLogoutToApi(provider);
66
+ releaseAuthorizationClaims(provider);
67
+ retryOnClaimsMismatch(provider, client);
68
+ formPostRefusedRequestObjects(provider);
60
69
  provider.proxy = options.trustProxy === true;
61
70
  provider.use(hostOnlyResumeCookie(PROVIDER_COOKIE_NAMES.resume, '/authorize'));
62
71
  provider.use(verifyClientSecrets(client));
63
72
  provider.use(revokeSessionOnRefreshReuse(client));
64
73
  provider.use(auditRevocations(client));
65
74
  provider.use(endFirstPartySessionOnLogout(client, Object.values(ADAPTER_COOKIE_NAMES)));
66
- provider.use(acceptJwtAccessTokens(createJwtAccessTokenLookup(signingKeys, config.issuer), [
67
- '/token/introspection',
68
- '/token/revocation',
69
- ]));
75
+ provider.use(acceptJwtAccessTokens(createJwtAccessTokenLookup(() => signingKeys.keys, config.issuer), ['/token/introspection', '/token/revocation']));
76
+ // The library publishes the keys it was started with; this serves the API's current set.
77
+ provider.use(async (ctx, next) => {
78
+ await next();
79
+ if (ctx.oidc?.route === 'jwks' && ctx.status === 200) {
80
+ ctx.body = { keys: signingKeys.publicJwks };
81
+ }
82
+ });
70
83
  // The library answers a bare server_error and logs nothing, so this is the only trace.
71
84
  provider.on('server_error', (_ctx, error) => {
72
85
  console.error(`[oidc-provider] ${error.name}: ${error.message}`);
@@ -129,6 +142,29 @@ export async function createOidcEdge(options) {
129
142
  ];
130
143
  router.post(`${issuerBase}/device`, ...userCodeLimiters);
131
144
  router.use(issuerUrl.pathname, provider.callback());
145
+ router.use(jsonErrorHandler);
132
146
  return { router, provider, issuer: config.issuer, config, client };
133
147
  }
148
+ /**
149
+ * Express's own handler answers HTML, with a stack trace whenever `NODE_ENV` is not
150
+ * production. A client error from a body parser keeps its status; anything else is logged
151
+ * by name and message only, and answered as a bare `server_error`.
152
+ */
153
+ function jsonErrorHandler(error, _req, res, next) {
154
+ if (res.headersSent) {
155
+ next(error);
156
+ return;
157
+ }
158
+ const status = typeof error === 'object' && error !== null && 'status' in error
159
+ ? Number(error.status)
160
+ : undefined;
161
+ if (status !== undefined && status >= 400 && status < 500) {
162
+ res.status(status).json({ error: 'invalid_request' });
163
+ return;
164
+ }
165
+ const name = error instanceof Error ? error.name : 'Error';
166
+ const message = error instanceof Error ? error.message : String(error);
167
+ console.error(`[oidc-provider] ${name}: ${message}`);
168
+ res.status(500).json({ error: 'server_error' });
169
+ }
134
170
  //# sourceMappingURL=createOidcEdge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createOidcEdge.js","sourceRoot":"","sources":["../src/createOidcEdge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createOidcEdge.js","sourceRoot":"","sources":["../src/createOidcEdge.ts"],"names":[],"mappings":"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"}
@@ -30,12 +30,8 @@ export declare class DevicePollThrottle {
30
30
  constructor(now?: () => number);
31
31
  check(deviceCode: string): void;
32
32
  }
33
- /**
34
- * Marks token endpoint posts, and adds `interval` to the device authorization response. The
35
- * provider is mounted at the issuer's path, so paths here are relative to it, and the
36
- * library's router ignores case.
37
- */
38
- export declare function deviceFlowMiddleware(tokenPath?: string): (ctx: KoaContextWithOIDC, next: () => Promise<unknown>) => Promise<void>;
33
+ /** Adds `interval` to the device authorization response. */
34
+ export declare function deviceFlowMiddleware(): (ctx: KoaContextWithOIDC, next: () => Promise<unknown>) => Promise<void>;
39
35
  /** The device verification pages (RFC 8628 section 3.3), rendered by the hosted UI. */
40
36
  export declare function createDevicePages(render: HostedPageRenderer, client: OidcApiClient): {
41
37
  charset: "base-20";
@@ -78,17 +78,9 @@ export class DevicePollThrottle {
78
78
  });
79
79
  }
80
80
  }
81
- /**
82
- * Marks token endpoint posts, and adds `interval` to the device authorization response. The
83
- * provider is mounted at the issuer's path, so paths here are relative to it, and the
84
- * library's router ignores case.
85
- */
86
- export function deviceFlowMiddleware(tokenPath = '/token') {
81
+ /** Adds `interval` to the device authorization response. */
82
+ export function deviceFlowMiddleware() {
87
83
  return async (ctx, next) => {
88
- const context = currentRequestContext();
89
- if (context && ctx.method === 'POST' && ctx.path.toLowerCase() === tokenPath) {
90
- context.tokenRequest = true;
91
- }
92
84
  await next();
93
85
  if (ctx.oidc?.route === 'device_authorization' &&
94
86
  ctx.status === 200 &&
@@ -1 +1 @@
1
- {"version":3,"file":"deviceFlow.js","sourceRoot":"","sources":["../src/deviceFlow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deviceFlow.js","sourceRoot":"","sources":["../src/deviceFlow.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts CHANGED
@@ -7,10 +7,7 @@ export declare const EnvSchema: z.ZodObject<{
7
7
  SEAMLESS_JWKS_KID: z.ZodOptional<z.ZodString>;
8
8
  SEAMLESS_COOKIE_SECRET: z.ZodString;
9
9
  OIDC_COOKIE_KEYS: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>, z.ZodArray<z.ZodString>>;
10
- TRUST_PROXY: z.ZodPipe<z.ZodDefault<z.ZodEnum<{
11
- true: "true";
12
- false: "false";
13
- }>>, z.ZodTransform<boolean, "true" | "false">>;
10
+ TRUST_PROXY: z.ZodPipe<z.ZodDefault<z.ZodString>, z.ZodTransform<number | false | string[], string>>;
14
11
  }, z.core.$strip>;
15
12
  export type Env = z.infer<typeof EnvSchema>;
16
13
  export declare function parseEnv(source?: NodeJS.ProcessEnv): Env;
package/dist/env.js CHANGED
@@ -3,12 +3,54 @@
3
3
  * Licensed under the Apache License, Version 2.0
4
4
  * See LICENSE file in the project root for full license information
5
5
  */
6
+ import { isIP } from 'node:net';
6
7
  import { z } from 'zod';
7
8
  const SECRET_MIN_LENGTH = 32;
8
- const booleanString = z
9
- .enum(['true', 'false'])
9
+ // Express's own names for the private ranges, which `trust proxy` accepts in a list.
10
+ const NAMED_RANGES = new Set(['loopback', 'linklocal', 'uniquelocal']);
11
+ function isProxyAddress(entry) {
12
+ if (NAMED_RANGES.has(entry)) {
13
+ return true;
14
+ }
15
+ const [address = '', prefix, extra] = entry.split('/');
16
+ const version = isIP(address);
17
+ if (version === 0 || extra !== undefined) {
18
+ return false;
19
+ }
20
+ if (prefix === undefined) {
21
+ return true;
22
+ }
23
+ const bits = Number(prefix);
24
+ return /^\d+$/.test(prefix) && bits <= (version === 4 ? 32 : 128);
25
+ }
26
+ /**
27
+ * Express's `trust proxy`: `false`, the number of proxies in front of this service, or the
28
+ * addresses and subnets of the ones it trusts. `true` keeps its old meaning of one proxy.
29
+ */
30
+ const trustProxy = z
31
+ .string()
10
32
  .default('false')
11
- .transform((value) => value === 'true');
33
+ .transform((value, ctx) => {
34
+ const trimmed = value.trim();
35
+ if (trimmed === '' || trimmed === 'false' || trimmed === '0') {
36
+ return false;
37
+ }
38
+ if (trimmed === 'true') {
39
+ return 1;
40
+ }
41
+ if (/^\d+$/.test(trimmed)) {
42
+ return Number(trimmed);
43
+ }
44
+ const entries = trimmed
45
+ .split(',')
46
+ .map((entry) => entry.trim())
47
+ .filter(Boolean);
48
+ if (entries.length === 0 || !entries.every(isProxyAddress)) {
49
+ ctx.addIssue({ code: 'custom', message: 'expected a hop count or addresses and subnets' });
50
+ return z.NEVER;
51
+ }
52
+ return entries;
53
+ });
12
54
  export const EnvSchema = z.object({
13
55
  PORT: z.coerce.number().int().min(1).max(65535).default(5314),
14
56
  SEAMLESS_API_URL: z.url(),
@@ -23,7 +65,7 @@ export const EnvSchema = z.object({
23
65
  .map((key) => key.trim())
24
66
  .filter(Boolean))
25
67
  .pipe(z.array(z.string().min(SECRET_MIN_LENGTH)).min(1)),
26
- TRUST_PROXY: booleanString,
68
+ TRUST_PROXY: trustProxy,
27
69
  });
28
70
  export function parseEnv(source = process.env) {
29
71
  const parsed = EnvSchema.safeParse(source);
package/dist/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,aAAa,GAAG,CAAC;KACpB,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvB,OAAO,CAAC,OAAO,CAAC;KAChB,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;AAE1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7D,gBAAgB,EAAE,CAAC,CAAC,GAAG,EAAE;IACzB,mBAAmB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACvC,2BAA2B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC9D,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACzD,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CACnB,KAAK;SACF,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,OAAO,CAAC,CACnB;SACA,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1D,WAAW,EAAE,aAAa;CAC3B,CAAC,CAAC;AAIH,MAAM,UAAU,QAAQ,CAAC,SAA4B,OAAO,CAAC,GAAG;IAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Configuration, KoaContextWithOIDC } from 'oidc-provider';
2
+ import type { HostedPageRenderer } from './hostedPages.js';
3
+ type ErrorOut = Parameters<NonNullable<Configuration['renderError']>>[1];
4
+ /**
5
+ * The page for an error the provider cannot send back to the app: an unknown client, an
6
+ * unregistered redirect_uri or post_logout_redirect_uri, a broken id_token_hint. Only the
7
+ * code and description go to the page, as data the UI renders as text. `state` is left out.
8
+ */
9
+ export declare function createErrorPage(render: HostedPageRenderer): (ctx: KoaContextWithOIDC, out: ErrorOut) => Promise<void>;
10
+ export {};
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Copyright © 2026 Fells Code, LLC
3
+ * Licensed under the Apache License, Version 2.0
4
+ * See LICENSE file in the project root for full license information
5
+ */
6
+ /**
7
+ * The page for an error the provider cannot send back to the app: an unknown client, an
8
+ * unregistered redirect_uri or post_logout_redirect_uri, a broken id_token_hint. Only the
9
+ * code and description go to the page, as data the UI renders as text. `state` is left out.
10
+ */
11
+ export function createErrorPage(render) {
12
+ return async (ctx, out) => {
13
+ const error = typeof out.error === 'string' ? out.error : 'server_error';
14
+ // The library's own text for an unexposed error is "oops! something went wrong".
15
+ const description = error !== 'server_error' && typeof out.error_description === 'string'
16
+ ? out.error_description
17
+ : 'Something went wrong on our side.';
18
+ const { html, headers } = await render({ view: 'error', error, description });
19
+ ctx.set(headers);
20
+ ctx.type = 'html';
21
+ ctx.body = html;
22
+ };
23
+ }
24
+ //# sourceMappingURL=errorPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorPage.js","sourceRoot":"","sources":["../src/errorPage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAA0B;IACxD,OAAO,KAAK,EAAE,GAAuB,EAAE,GAAa,EAAiB,EAAE;QACrE,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC;QACzE,iFAAiF;QACjF,MAAM,WAAW,GACf,KAAK,KAAK,cAAc,IAAI,OAAO,GAAG,CAAC,iBAAiB,KAAK,QAAQ;YACnE,CAAC,CAAC,GAAG,CAAC,iBAAiB;YACvB,CAAC,CAAC,mCAAmC,CAAC;QAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9E,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjB,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;QAClB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
@@ -37,6 +37,7 @@ export declare function brandingFor(appName: string, hostedUi: HostedUi | undefi
37
37
  export type HostedPageData = Record<string, unknown> & {
38
38
  view: string;
39
39
  };
40
+ export declare function pageTitle(appName: string, page?: HostedPageData): string;
40
41
  export declare function renderIndex(template: string, branding: HostedBranding, nonce: string, style?: BrandingStyle, page?: HostedPageData): string;
41
42
  export interface RenderedPage {
42
43
  html: string;
@@ -7,6 +7,7 @@ import { randomBytes } from 'node:crypto';
7
7
  import { readFileSync } from 'node:fs';
8
8
  import { join } from 'node:path';
9
9
  import express from 'express';
10
+ import { brandingContrastProblems } from './brandingContrast.js';
10
11
  /**
11
12
  * Paths the SPA renders. The adapter's bundled screens (`@seamless-auth/react` AuthRoutes)
12
13
  * own most of them, and the API builds magic link and recovery URLs from some.
@@ -104,10 +105,23 @@ export function brandingFor(appName, hostedUi) {
104
105
  ...(hostedUi?.logoUrl ? { logoUrl: hostedUi.logoUrl } : {}),
105
106
  };
106
107
  }
108
+ /** WCAG 2.4.2: a page the provider renders is titled for what it does, not "Sign in". */
109
+ const PAGE_TITLES = {
110
+ logout: (app) => `Sign out of ${app}`,
111
+ signed_out: (app) => `Signed out of ${app}`,
112
+ device_input: (app) => `Sign in on a device with ${app}`,
113
+ device_confirm: (app) => `Sign in on a device with ${app}`,
114
+ device_done: (app) => `Device signed in with ${app}`,
115
+ error: (app) => `${app}: we could not continue`,
116
+ };
117
+ export function pageTitle(appName, page) {
118
+ const title = page ? PAGE_TITLES[page.view] : undefined;
119
+ return title ? title(appName) : `Sign in to ${appName}`;
120
+ }
107
121
  export function renderIndex(template, branding, nonce, style, page) {
108
122
  const head = [
109
123
  `<meta name="seamless-csp-nonce" content="${nonce}" />`,
110
- `<title>Sign in to ${escapeHtml(branding.appName)}</title>`,
124
+ `<title>${escapeHtml(pageTitle(branding.appName, page))}</title>`,
111
125
  `<script type="application/json" id="seamless-hosted">${inlineJson(branding)}</script>`,
112
126
  ...(page
113
127
  ? [`<script type="application/json" id="seamless-page">${inlineJson(page)}</script>`]
@@ -135,8 +149,17 @@ export function createHostedPageRenderer(options) {
135
149
  if (!template.includes(HEAD_PLACEHOLDER)) {
136
150
  throw new Error(`${options.uiDir}/index.html has no ${HEAD_PLACEHOLDER} placeholder`);
137
151
  }
152
+ let checkedColors;
138
153
  return async (page, formActions) => {
139
154
  const config = await options.configCache.get();
155
+ const colors = JSON.stringify(config.hostedUi?.colors ?? null);
156
+ if (colors !== checkedColors) {
157
+ checkedColors = colors;
158
+ const problems = brandingContrastProblems(config.hostedUi);
159
+ if (problems.length > 0) {
160
+ console.warn(`[oidc-provider] hosted_ui colors fall below WCAG 2.2 AA contrast on the hosted pages: ${problems.join('; ')}`);
161
+ }
162
+ }
140
163
  const nonce = randomBytes(16).toString('base64');
141
164
  const branding = brandingFor(config.appName, config.hostedUi);
142
165
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"hostedPages.js","sourceRoot":"","sources":["../src/hostedPages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,OAAwB,MAAM,SAAS,CAAC;AAI/C;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,GAAG;IACH,mBAAmB;IACnB,QAAQ;IACR,gBAAgB;IAChB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,iBAAiB;IACjB,mBAAmB;IACnB,kBAAkB;IAClB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,kBAAkB;CACV,CAAC;AAEX,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAOhD,MAAM,eAAe,GAAG;IACtB,OAAO,EAAE,0BAA0B;IACnC,SAAS,EAAE,6BAA6B;IACxC,UAAU,EAAE,6BAA6B;IACzC,OAAO,EAAE,0BAA0B;IACnC,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,wBAAwB;CACvB,CAAC;AAQX,uFAAuF;AACvF,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SACzB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;SACxB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;SACxB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;SACxB,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;SAC7B,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,OAAgB,EAChB,cAAiC,EAAE;IAEnC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,uFAAuF;IACvF,4DAA4D;IAC5D,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO;QACL,oBAAoB;QACpB,mBAAmB;QACnB,2BAA2B,KAAK,GAAG;QACnC,uBAAuB,UAAU,EAAE;QACnC,iBAAiB;QACjB,oBAAoB;QACpB,qBAAqB;QACrB,qBAAqB,WAAW,EAAE;QAClC,wBAAwB;QACxB,iBAAiB;KAClB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAQD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAA8B;IAC1D,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAmC,CAAC,CAAC;QACtE,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,IAAI,OAAO,EAAE,CAAC;QACZ,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,QAAQ,EAAE,UAAU,EAAE,CAAC;QACzB,YAAY,CAAC,IAAI,CAAC,0BAA0B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC;QAC5B,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE;QAC3D,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,QAA8B;IACzE,OAAO;QACL,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,OAAO;QACrC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAKD,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,QAAwB,EACxB,KAAa,EACb,KAAqB,EACrB,IAAqB;IAErB,MAAM,IAAI,GAAG;QACX,4CAA4C,KAAK,MAAM;QACvD,qBAAqB,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;QAC3D,wDAAwD,UAAU,CAAC,QAAQ,CAAC,WAAW;QACvF,GAAG,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,sDAAsD,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;YACrF,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK;YACP,CAAC,CAAC;gBACE,iBAAiB,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,UAAU;aAC/F;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjB,OAAO,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,OAAgB,EAAE,WAA+B;IACnF,OAAO;QACL,yBAAyB,EAAE,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC;QAC7E,eAAe,EAAE,UAAU;QAC3B,4BAA4B,EAAE,aAAa;QAC3C,iBAAiB,EAAE,aAAa;QAChC,wBAAwB,EAAE,SAAS;QACnC,iBAAiB,EAAE,MAAM;KAC1B,CAAC;AACJ,CAAC;AAYD,MAAM,UAAU,wBAAwB,CAAC,OAA2B;IAClE,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,sBAAsB,gBAAgB,cAAc,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;QACjC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9D,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;YAClF,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;SAC3D,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAA2B,EAC3B,SAA6B,wBAAwB,CAAC,OAAO,CAAC;IAE9D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAEhC,MAAM,CAAC,GAAG,CACR,SAAS,EACT,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;QAC5C,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;YAClB,GAAG,CAAC,SAAS,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACrD,MAAM,EAAE;aACL,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;YAC1B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC,CAAC;aACD,KAAK,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"hostedPages.js","sourceRoot":"","sources":["../src/hostedPages.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -16,5 +16,5 @@ export { createSameOriginGuard } from './originGuard.js';
16
16
  export { buildProviderConfiguration, loadExistingGrant, PROVIDER_COOKIE_NAMES, } from './providerConfig.js';
17
17
  export type { EdgeRequestContext } from './requestContext.js';
18
18
  export { adoptSession, bindSession, currentRequestContext, runWithRequestContext, } from './requestContext.js';
19
- export { ApiSigningKey, classifyToken, signingKeysFrom, UnsignableTokenError, } from './signingKey.js';
19
+ export { ApiSigningKey, classifyToken, SIGNING_KEY_REFRESH_MS, SigningKeyRing, signingKeysFrom, UnsignableTokenError, } from './signingKey.js';
20
20
  export { checkApiCompatibility } from './startup.js';