@seamless-auth/core 0.15.0 → 0.16.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 (77) hide show
  1. package/README.md +16 -2
  2. package/dist/applyResult.d.ts +11 -1
  3. package/dist/applyResult.d.ts.map +1 -1
  4. package/dist/applyResult.js +3 -1
  5. package/dist/applyResult.js.map +1 -1
  6. package/dist/getSeamlessUser.d.ts +14 -2
  7. package/dist/getSeamlessUser.d.ts.map +1 -1
  8. package/dist/getSeamlessUser.js +28 -10
  9. package/dist/getSeamlessUser.js.map +1 -1
  10. package/dist/guards.d.ts +39 -0
  11. package/dist/guards.d.ts.map +1 -1
  12. package/dist/guards.js +63 -0
  13. package/dist/guards.js.map +1 -1
  14. package/dist/handlers/finishLogin.d.ts +2 -0
  15. package/dist/handlers/finishLogin.d.ts.map +1 -1
  16. package/dist/handlers/finishLogin.js +4 -4
  17. package/dist/handlers/finishLogin.js.map +1 -1
  18. package/dist/handlers/login.d.ts +13 -5
  19. package/dist/handlers/login.d.ts.map +1 -1
  20. package/dist/handlers/login.js +6 -1
  21. package/dist/handlers/login.js.map +1 -1
  22. package/dist/handlers/oauthHandlers.d.ts +2 -0
  23. package/dist/handlers/oauthHandlers.d.ts.map +1 -1
  24. package/dist/handlers/oauthHandlers.js +4 -4
  25. package/dist/handlers/oauthHandlers.js.map +1 -1
  26. package/dist/handlers/pollMagicLinkConfirmationHandler.d.ts +2 -0
  27. package/dist/handlers/pollMagicLinkConfirmationHandler.d.ts.map +1 -1
  28. package/dist/handlers/pollMagicLinkConfirmationHandler.js +4 -4
  29. package/dist/handlers/pollMagicLinkConfirmationHandler.js.map +1 -1
  30. package/dist/handlers/refresh.d.ts +44 -0
  31. package/dist/handlers/refresh.d.ts.map +1 -0
  32. package/dist/handlers/refresh.js +70 -0
  33. package/dist/handlers/refresh.js.map +1 -0
  34. package/dist/handlers/register.d.ts +2 -0
  35. package/dist/handlers/register.d.ts.map +1 -1
  36. package/dist/handlers/register.js +3 -0
  37. package/dist/handlers/register.js.map +1 -1
  38. package/dist/handlers/switchOrganizationHandler.d.ts +2 -0
  39. package/dist/handlers/switchOrganizationHandler.d.ts.map +1 -1
  40. package/dist/handlers/switchOrganizationHandler.js +4 -4
  41. package/dist/handlers/switchOrganizationHandler.js.map +1 -1
  42. package/dist/handlers/verifyLoginOtpHandler.d.ts +2 -0
  43. package/dist/handlers/verifyLoginOtpHandler.d.ts.map +1 -1
  44. package/dist/handlers/verifyLoginOtpHandler.js +4 -4
  45. package/dist/handlers/verifyLoginOtpHandler.js.map +1 -1
  46. package/dist/index.d.ts +3 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +3 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/jwks.d.ts +3 -0
  51. package/dist/jwks.d.ts.map +1 -0
  52. package/dist/jwks.js +15 -0
  53. package/dist/jwks.js.map +1 -0
  54. package/dist/proxyRequest.d.ts +9 -2
  55. package/dist/proxyRequest.d.ts.map +1 -1
  56. package/dist/proxyRequest.js +24 -14
  57. package/dist/proxyRequest.js.map +1 -1
  58. package/dist/refreshAccessToken.d.ts +19 -0
  59. package/dist/refreshAccessToken.d.ts.map +1 -1
  60. package/dist/refreshAccessToken.js +71 -21
  61. package/dist/refreshAccessToken.js.map +1 -1
  62. package/dist/transport.d.ts +20 -0
  63. package/dist/transport.d.ts.map +1 -0
  64. package/dist/transport.js +12 -0
  65. package/dist/transport.js.map +1 -0
  66. package/dist/upstreamSession.d.ts +19 -0
  67. package/dist/upstreamSession.d.ts.map +1 -1
  68. package/dist/upstreamSession.js +20 -0
  69. package/dist/upstreamSession.js.map +1 -1
  70. package/dist/verifyAccessToken.d.ts +30 -0
  71. package/dist/verifyAccessToken.d.ts.map +1 -0
  72. package/dist/verifyAccessToken.js +44 -0
  73. package/dist/verifyAccessToken.js.map +1 -0
  74. package/dist/verifySignedAuthResponse.d.ts.map +1 -1
  75. package/dist/verifySignedAuthResponse.js +3 -16
  76. package/dist/verifySignedAuthResponse.js.map +1 -1
  77. package/package.json +1 -1
@@ -0,0 +1,44 @@
1
+ import type { AuthTransport } from "../transport.js";
2
+ import type { ResultFailure } from "../result.js";
3
+ import type { CookiePayload } from "../ensureCookies.js";
4
+ export interface RefreshInput {
5
+ transport: AuthTransport;
6
+ /** The raw `Authorization` header. Bearer transport carries the refresh token here. */
7
+ authorization?: string;
8
+ /** The signed refresh cookie. Cookie transport carries the refresh token here. */
9
+ refreshCookie?: string;
10
+ serviceAuthorization?: string;
11
+ forwardedClientIp?: string;
12
+ forwardedUserAgent?: string;
13
+ }
14
+ export interface RefreshOptions {
15
+ authServerUrl: string;
16
+ audience: string;
17
+ cookieSecret: string;
18
+ serviceSecret: string;
19
+ keyId: string;
20
+ cookieDomain?: string;
21
+ accessCookieName: string;
22
+ refreshCookieName: string;
23
+ }
24
+ export interface RefreshResult extends ResultFailure {
25
+ status: number;
26
+ body?: unknown;
27
+ setCookies?: {
28
+ name: string;
29
+ value: CookiePayload;
30
+ ttl: number;
31
+ domain?: string;
32
+ }[];
33
+ clearCookies?: string[];
34
+ }
35
+ /**
36
+ * Rotates the session on request.
37
+ *
38
+ * Cookie clients rarely need this, since `ensureCookies` refreshes silently on
39
+ * the auth routes, but it gives them an explicit way to do it. Bearer clients
40
+ * depend on it: nothing refreshes for them, so when the access token expires
41
+ * they present the refresh token here and store the pair that comes back.
42
+ */
43
+ export declare function refreshHandler(input: RefreshInput, opts: RefreshOptions): Promise<RefreshResult>;
44
+ //# sourceMappingURL=refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../src/handlers/refresh.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,aAAa,CAAC;IACzB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;IACJ,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,aAAa,CAAC,CAkExB"}
@@ -0,0 +1,70 @@
1
+ import { extractBearerToken } from "../verifyAccessToken.js";
2
+ import { refreshAccessToken, refreshBearerSession, } from "../refreshAccessToken.js";
3
+ import { SERVICE_TOKEN_AUDIENCE, SERVICE_TOKEN_ISSUER } from "../apiContract.js";
4
+ import { sessionResult } from "../upstreamSession.js";
5
+ /**
6
+ * Rotates the session on request.
7
+ *
8
+ * Cookie clients rarely need this, since `ensureCookies` refreshes silently on
9
+ * the auth routes, but it gives them an explicit way to do it. Bearer clients
10
+ * depend on it: nothing refreshes for them, so when the access token expires
11
+ * they present the refresh token here and store the pair that comes back.
12
+ */
13
+ export async function refreshHandler(input, opts) {
14
+ const forwarding = {
15
+ forwardedClientIp: input.forwardedClientIp,
16
+ forwardedUserAgent: input.forwardedUserAgent,
17
+ };
18
+ const session = {
19
+ authServerUrl: opts.authServerUrl,
20
+ audience: opts.audience,
21
+ accessCookieName: opts.accessCookieName,
22
+ refreshCookieName: opts.refreshCookieName,
23
+ cookieDomain: opts.cookieDomain,
24
+ transport: input.transport,
25
+ };
26
+ if (input.transport === "bearer") {
27
+ const refreshToken = extractBearerToken(input.authorization);
28
+ if (!refreshToken) {
29
+ return { status: 401, errorCode: "refresh token required" };
30
+ }
31
+ const rotated = await refreshBearerSession(refreshToken, {
32
+ authServerUrl: opts.authServerUrl,
33
+ serviceAuthorization: input.serviceAuthorization,
34
+ ...forwarding,
35
+ });
36
+ if (rotated.status !== 200) {
37
+ return { status: rotated.status, errorBody: rotated.body };
38
+ }
39
+ return {
40
+ status: 200,
41
+ ...(await sessionResult(rotated.body, session)),
42
+ };
43
+ }
44
+ if (!input.refreshCookie) {
45
+ return { status: 401, errorCode: "refresh token required" };
46
+ }
47
+ const rotated = await refreshAccessToken(input.refreshCookie, {
48
+ authServerUrl: opts.authServerUrl,
49
+ cookieSecret: opts.cookieSecret,
50
+ serviceSecret: opts.serviceSecret,
51
+ // The refresh path mints an M2M service token, which the auth API validates
52
+ // against a fixed issuer and audience rather than the adopter-configured one.
53
+ issuer: SERVICE_TOKEN_ISSUER,
54
+ audience: SERVICE_TOKEN_AUDIENCE,
55
+ keyId: opts.keyId,
56
+ ...forwarding,
57
+ });
58
+ if (!rotated) {
59
+ return {
60
+ status: 401,
61
+ errorCode: "invalid_refresh_token",
62
+ clearCookies: [opts.accessCookieName, opts.refreshCookieName],
63
+ };
64
+ }
65
+ return {
66
+ status: 200,
67
+ ...(await sessionResult(rotated, session)),
68
+ };
69
+ }
70
+ //# sourceMappingURL=refresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/handlers/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAgC,MAAM,uBAAuB,CAAC;AAuCpF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAmB,EACnB,IAAoB;IAEpB,MAAM,UAAU,GAAG;QACjB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;IAEF,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAE7D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC;QAC9D,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,YAAY,EAAE;YACvD,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;YAChD,GAAG,UAAU;SACd,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC;QAED,OAAO;YACL,MAAM,EAAE,GAAG;YACX,GAAG,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,IAA+B,EAAE,OAAO,CAAC,CAAC;SAC3E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACzB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE;QAC5D,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,4EAA4E;QAC5E,8EAA8E;QAC9E,MAAM,EAAE,oBAAoB;QAC5B,QAAQ,EAAE,sBAAsB;QAChC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,UAAU;KACd,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,uBAAuB;YAClC,YAAY,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC;SAC9D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,GAAG;QACX,GAAG,CAAC,MAAM,aAAa,CAAC,OAAkC,EAAE,OAAO,CAAC,CAAC;KACtE,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { ResultFailure } from "../result.js";
2
2
  import type { CookiePayload } from "../ensureCookies.js";
3
+ import type { AuthTransport } from "../transport.js";
3
4
  export interface RegisterInput {
4
5
  body: unknown;
5
6
  }
@@ -11,6 +12,7 @@ export interface RegisterOptions {
11
12
  forwardedClientIp?: string;
12
13
  forwardedUserAgent?: string;
13
14
  serviceAuthorization?: string;
15
+ transport?: AuthTransport;
14
16
  }
15
17
  export interface RegisterResult extends ResultFailure {
16
18
  status: number;
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/handlers/register.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,cAAc,CAAC,CAmCzB"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/handlers/register.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,cAAc,CAAC,CAuCzB"}
@@ -21,6 +21,9 @@ export async function registerHandler(input, opts) {
21
21
  ...readPassthroughFailure(data),
22
22
  };
23
23
  }
24
+ if (opts.transport === "bearer") {
25
+ return { status: 200, body: data };
26
+ }
24
27
  return {
25
28
  status: 200,
26
29
  body: data,
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/handlers/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AA6B9D,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAoB,EACpB,IAAqB;IAErB,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,wBAAwB,EAAE;QACxE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,GAAG,CAAC,IAAI,CAAC,gBAAgB;YACvB,CAAC,CAAC;gBACE,OAAO,EAAE,yBAAyB;aACnC;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,sBAAsB,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,IAAI;QACV,UAAU,EAAE;YACV;gBACE,IAAI,EAAE,IAAI,CAAC,sBAAsB;gBACjC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;gBAC3C,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,MAAM,EAAE,IAAI,CAAC,YAAY;aAC1B;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/handlers/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AA+B9D,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAoB,EACpB,IAAqB;IAErB,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,wBAAwB,EAAE;QACxE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,GAAG,CAAC,IAAI,CAAC,gBAAgB;YACvB,CAAC,CAAC;gBACE,OAAO,EAAE,yBAAyB;aACnC;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,sBAAsB,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,IAAI;QACV,UAAU,EAAE;YACV;gBACE,IAAI,EAAE,IAAI,CAAC,sBAAsB;gBACjC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;gBAC3C,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,MAAM,EAAE,IAAI,CAAC,YAAY;aAC1B;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { AuthTransport } from "../transport.js";
1
2
  import type { ResultFailure } from "../result.js";
2
3
  import type { CookiePayload } from "../ensureCookies.js";
3
4
  export interface SwitchOrganizationInput {
@@ -12,6 +13,7 @@ export interface SwitchOrganizationOptions {
12
13
  audience: string;
13
14
  cookieDomain?: string;
14
15
  accessCookieName: string;
16
+ transport?: AuthTransport;
15
17
  }
16
18
  export interface SwitchOrganizationResult extends ResultFailure {
17
19
  status: number;
@@ -1 +1 @@
1
- {"version":3,"file":"switchOrganizationHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/switchOrganizationHandler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAsCnC"}
1
+ {"version":3,"file":"switchOrganizationHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/switchOrganizationHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAsCnC"}
@@ -1,5 +1,5 @@
1
1
  import { authFetch } from "../authFetch.js";
2
- import { issueSessionCookies, withoutSessionMaterial, } from "../upstreamSession.js";
2
+ import { sessionResult } from "../upstreamSession.js";
3
3
  import { readPassthroughFailure } from "../upstreamError.js";
4
4
  export async function switchOrganizationHandler(input, opts) {
5
5
  const up = await authFetch(`${opts.authServerUrl}/organizations/${encodeURIComponent(input.organizationId)}/switch`, {
@@ -24,13 +24,13 @@ export async function switchOrganizationHandler(input, opts) {
24
24
  }
25
25
  return {
26
26
  status: up.status,
27
- body: withoutSessionMaterial(data),
28
- setCookies: await issueSessionCookies(data, {
27
+ ...(await sessionResult(data, {
29
28
  authServerUrl: opts.authServerUrl,
30
29
  audience: opts.audience,
31
30
  accessCookieName: opts.accessCookieName,
32
31
  cookieDomain: opts.cookieDomain,
33
- }),
32
+ transport: opts.transport,
33
+ })),
34
34
  };
35
35
  }
36
36
  //# sourceMappingURL=switchOrganizationHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"switchOrganizationHandler.js","sourceRoot":"","sources":["../../src/handlers/switchOrganizationHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AA8B7D,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAA8B,EAC9B,IAA+B;IAE/B,MAAM,EAAE,GAAG,MAAM,SAAS,CACxB,GAAG,IAAI,CAAC,aAAa,kBAAkB,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EACxF;QACE,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CACF,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,sBAAsB,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC;QAClC,UAAU,EAAE,MAAM,mBAAmB,CAAC,IAAI,EAAE;YAC1C,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;KACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"switchOrganizationHandler.js","sourceRoot":"","sources":["../../src/handlers/switchOrganizationHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AA+B7D,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAA8B,EAC9B,IAA+B;IAE/B,MAAM,EAAE,GAAG,MAAM,SAAS,CACxB,GAAG,IAAI,CAAC,aAAa,kBAAkB,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EACxF;QACE,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CACF,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,sBAAsB,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE;YAC5B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { AuthTransport } from "../transport.js";
1
2
  import type { ResultFailure } from "../result.js";
2
3
  import type { CookiePayload } from "../ensureCookies.js";
3
4
  export interface VerifyLoginOtpInput {
@@ -14,6 +15,7 @@ export interface VerifyLoginOtpOptions {
14
15
  cookieDomain?: string;
15
16
  accessCookieName: string;
16
17
  refreshCookieName: string;
18
+ transport?: AuthTransport;
17
19
  }
18
20
  export interface VerifyLoginOtpResult extends ResultFailure {
19
21
  status: number;
@@ -1 +1 @@
1
- {"version":3,"file":"verifyLoginOtpHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/verifyLoginOtpHandler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAkDD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAO/B;AAED,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAK/B"}
1
+ {"version":3,"file":"verifyLoginOtpHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/verifyLoginOtpHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAkDD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAO/B;AAED,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAK/B"}
@@ -1,5 +1,5 @@
1
1
  import { authFetch } from "../authFetch.js";
2
- import { issueSessionCookies, withoutSessionMaterial, } from "../upstreamSession.js";
2
+ import { sessionResult } from "../upstreamSession.js";
3
3
  import { readPassthroughFailure } from "../upstreamError.js";
4
4
  // Shared by the login and registration OTP verify handlers: POST to the given
5
5
  // auth-server path and, when the response carries a session, validate the signed
@@ -30,14 +30,14 @@ async function verifyOtp(path, input, opts) {
30
30
  }
31
31
  return {
32
32
  status: up.status,
33
- body: withoutSessionMaterial(data),
34
- setCookies: await issueSessionCookies(data, {
33
+ ...(await sessionResult(data, {
35
34
  authServerUrl: opts.authServerUrl,
36
35
  audience: opts.audience,
37
36
  accessCookieName: opts.accessCookieName,
38
37
  refreshCookieName: opts.refreshCookieName,
39
38
  cookieDomain: opts.cookieDomain,
40
- }),
39
+ transport: opts.transport,
40
+ })),
41
41
  };
42
42
  }
43
43
  export async function verifyLoginOtpHandler(input, opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"verifyLoginOtpHandler.js","sourceRoot":"","sources":["../../src/handlers/verifyLoginOtpHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAgC7D,8EAA8E;AAC9E,iFAAiF;AACjF,gFAAgF;AAChF,kFAAkF;AAClF,yEAAyE;AACzE,KAAK,UAAU,SAAS,CACtB,IAAY,EACZ,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE,EAAE;QAC1D,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,sBAAsB,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACjB,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC;QAClC,UAAU,EAAE,MAAM,mBAAmB,CAAC,IAAI,EAAE;YAC1C,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,OAAO;QACpB,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,4BAA4B,CAAC;IAEnC,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAE3E,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"verifyLoginOtpHandler.js","sourceRoot":"","sources":["../../src/handlers/verifyLoginOtpHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAiC7D,8EAA8E;AAC9E,iFAAiF;AACjF,gFAAgF;AAChF,kFAAkF;AAClF,yEAAyE;AACzE,KAAK,UAAU,SAAS,CACtB,IAAY,EACZ,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE,EAAE;QAC1D,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,sBAAsB,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACjB,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE;YAC5B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,OAAO;QACpB,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,4BAA4B,CAAC;IAEnC,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAE3E,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export * from "./ensureCookies.js";
5
5
  export * from "./verifyCookieJwt.js";
6
6
  export * from "./verifyRefreshCookie.js";
7
7
  export * from "./verifySignedAuthResponse.js";
8
+ export * from "./verifyAccessToken.js";
8
9
  export * from "./refreshAccessToken.js";
9
10
  export * from "./getSeamlessUser.js";
10
11
  export * from "./logger.js";
@@ -13,6 +14,7 @@ export * from "./createServiceToken.js";
13
14
  export * from "./validateSecrets.js";
14
15
  export { hasScopedRole, roleGrantsAccess, } from "@seamless-auth/types/role/matching";
15
16
  export * from "./apiContract.js";
17
+ export * from "./transport.js";
16
18
  export * from "./applyResult.js";
17
19
  export * from "./proxyRequest.js";
18
20
  export * from "./result.js";
@@ -23,6 +25,7 @@ export * from "./handlers/finishLogin.js";
23
25
  export * from "./handlers/register.js";
24
26
  export * from "./handlers/finishRegister.js";
25
27
  export * from "./handlers/logout.js";
28
+ export * from "./handlers/refresh.js";
26
29
  export * from "./handlers/me.js";
27
30
  export * from "./handlers/requestOtpHandler.js";
28
31
  export * from "./handlers/verifyLoginOtpHandler.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AAKrC,OAAO,EACL,aAAa,EACb,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AAKrC,OAAO,EACL,aAAa,EACb,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@ export * from "./ensureCookies.js";
5
5
  export * from "./verifyCookieJwt.js";
6
6
  export * from "./verifyRefreshCookie.js";
7
7
  export * from "./verifySignedAuthResponse.js";
8
+ export * from "./verifyAccessToken.js";
8
9
  export * from "./refreshAccessToken.js";
9
10
  export * from "./getSeamlessUser.js";
10
11
  export * from "./logger.js";
@@ -17,6 +18,7 @@ export * from "./validateSecrets.js";
17
18
  // is the zod-free one, so importing core does not pull zod or the schema barrel.
18
19
  export { hasScopedRole, roleGrantsAccess, } from "@seamless-auth/types/role/matching";
19
20
  export * from "./apiContract.js";
21
+ export * from "./transport.js";
20
22
  export * from "./applyResult.js";
21
23
  export * from "./proxyRequest.js";
22
24
  export * from "./result.js";
@@ -27,6 +29,7 @@ export * from "./handlers/finishLogin.js";
27
29
  export * from "./handlers/register.js";
28
30
  export * from "./handlers/finishRegister.js";
29
31
  export * from "./handlers/logout.js";
32
+ export * from "./handlers/refresh.js";
30
33
  export * from "./handlers/me.js";
31
34
  export * from "./handlers/requestOtpHandler.js";
32
35
  export * from "./handlers/verifyLoginOtpHandler.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,OAAO,EACL,aAAa,EACb,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,OAAO,EACL,aAAa,EACb,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC"}
package/dist/jwks.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { createRemoteJWKSet } from "jose";
2
+ export declare function getAuthServerJwks(authServerUrl: string): ReturnType<typeof createRemoteJWKSet>;
3
+ //# sourceMappingURL=jwks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwks.d.ts","sourceRoot":"","sources":["../src/jwks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAO1C,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,GACpB,UAAU,CAAC,OAAO,kBAAkB,CAAC,CASvC"}
package/dist/jwks.js ADDED
@@ -0,0 +1,15 @@
1
+ import { createRemoteJWKSet } from "jose";
2
+ // jose caches keys and applies a refetch cooldown per JWKS instance, so the instance
3
+ // must outlive a single call. Memoize per JWKS URL (one per auth server, so the map
4
+ // stays tiny) instead of building a fresh, empty-cache instance on every verification.
5
+ const jwksByUrl = new Map();
6
+ export function getAuthServerJwks(authServerUrl) {
7
+ const jwksUrl = new URL("/.well-known/jwks.json", authServerUrl).toString();
8
+ let jwks = jwksByUrl.get(jwksUrl);
9
+ if (!jwks) {
10
+ jwks = createRemoteJWKSet(new URL(jwksUrl));
11
+ jwksByUrl.set(jwksUrl, jwks);
12
+ }
13
+ return jwks;
14
+ }
15
+ //# sourceMappingURL=jwks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwks.js","sourceRoot":"","sources":["../src/jwks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAE1C,qFAAqF;AACrF,oFAAoF;AACpF,uFAAuF;AACvF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiD,CAAC;AAE3E,MAAM,UAAU,iBAAiB,CAC/B,aAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE5E,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,kBAAkB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { AppliableResult } from "./applyResult.js";
2
2
  import { type AuthFetchOptions } from "./authFetch.js";
3
+ import type { AuthTransport } from "./transport.js";
3
4
  /**
4
5
  * Query parameters to forward upstream.
5
6
  *
@@ -27,6 +28,9 @@ export interface ProxyIdentityInput {
27
28
  accessCookieName: string;
28
29
  preAuthCookieName: string;
29
30
  registrationCookieName: string;
31
+ transport?: AuthTransport;
32
+ /** The raw `Authorization` header, read in bearer transport. */
33
+ authorization?: string;
30
34
  }
31
35
  export interface ProxyIdentityRejection {
32
36
  status: number;
@@ -38,8 +42,11 @@ export interface ProxyIdentityRejection {
38
42
  * Checks that a request carries the session a proxied route requires.
39
43
  *
40
44
  * Returns the rejection to send, or `undefined` when the request may proceed.
41
- * The cookie payload alone is not enough: it survives a refresh, so the route
42
- * also has to see the specific cookie for the identity it needs.
45
+ * In cookie transport the cookie payload alone is not enough: it survives a
46
+ * refresh, so the route also has to see the specific cookie for the identity it
47
+ * needs. In bearer transport the client presents the token for the identity
48
+ * itself, and the auth API is the one that checks which kind it is, so the
49
+ * adapter only insists that one was sent.
43
50
  */
44
51
  export declare function checkProxyIdentity(input: ProxyIdentityInput): ProxyIdentityRejection | undefined;
45
52
  export interface ProxyRequestOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"proxyRequest.d.ts","sourceRoot":"","sources":["../src/proxyRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAUjD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAiB3D;AAED,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,UAAU,GACjB,MAAM,CAKR;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,kBAAkB,GACxB,sBAAsB,GAAG,SAAS,CAwBpC;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,eAAe,CAAC,CAgB1B"}
1
+ {"version":3,"file":"proxyRequest.d.ts","sourceRoot":"","sources":["../src/proxyRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAUjD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAiB3D;AAED,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,UAAU,GACjB,MAAM,CAKR;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAQD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,kBAAkB,GACxB,sBAAsB,GAAG,SAAS,CA0BpC;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,eAAe,CAAC,CAgB1B"}
@@ -1,4 +1,5 @@
1
1
  import { authFetch } from "./authFetch.js";
2
+ import { extractBearerToken } from "./verifyAccessToken.js";
2
3
  function isScalar(value) {
3
4
  return (typeof value === "string" ||
4
5
  typeof value === "number" ||
@@ -33,14 +34,28 @@ export function buildUpstreamUrl(authServerUrl, path, query) {
33
34
  const qs = buildQueryString(query);
34
35
  return qs ? `${base}?${qs}` : base;
35
36
  }
37
+ const IDENTITY_REQUIRED = {
38
+ access: "access session required",
39
+ preAuth: "pre-auth session required",
40
+ register: "registration session required",
41
+ };
36
42
  /**
37
43
  * Checks that a request carries the session a proxied route requires.
38
44
  *
39
45
  * Returns the rejection to send, or `undefined` when the request may proceed.
40
- * The cookie payload alone is not enough: it survives a refresh, so the route
41
- * also has to see the specific cookie for the identity it needs.
46
+ * In cookie transport the cookie payload alone is not enough: it survives a
47
+ * refresh, so the route also has to see the specific cookie for the identity it
48
+ * needs. In bearer transport the client presents the token for the identity
49
+ * itself, and the auth API is the one that checks which kind it is, so the
50
+ * adapter only insists that one was sent.
42
51
  */
43
52
  export function checkProxyIdentity(input) {
53
+ const error = IDENTITY_REQUIRED[input.identity];
54
+ if (input.transport === "bearer") {
55
+ return extractBearerToken(input.authorization)
56
+ ? undefined
57
+ : { status: 401, errorCode: error };
58
+ }
44
59
  if (!input.subject) {
45
60
  return {
46
61
  status: 401,
@@ -48,19 +63,14 @@ export function checkProxyIdentity(input) {
48
63
  warn: "Missing expected cookie payload/sub.",
49
64
  };
50
65
  }
51
- const required = {
52
- access: { name: input.accessCookieName, error: "access session required" },
53
- preAuth: {
54
- name: input.preAuthCookieName,
55
- error: "pre-auth session required",
56
- },
57
- register: {
58
- name: input.registrationCookieName,
59
- error: "registration session required",
60
- },
66
+ const cookieName = {
67
+ access: input.accessCookieName,
68
+ preAuth: input.preAuthCookieName,
69
+ register: input.registrationCookieName,
61
70
  };
62
- const { name, error } = required[input.identity];
63
- return input.cookies[name] ? undefined : { status: 401, errorCode: error };
71
+ return input.cookies[cookieName[input.identity]]
72
+ ? undefined
73
+ : { status: 401, errorCode: error };
64
74
  }
65
75
  /**
66
76
  * Forwards a request to the auth API and returns its status and body unchanged.
@@ -1 +1 @@
1
- {"version":3,"file":"proxyRequest.js","sourceRoot":"","sources":["../src/proxyRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAyB,MAAM,gBAAgB,CAAC;AAYlE,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS,CAC3B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAkB;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,QAAQ,CAAC,IAAI,CAAC;oBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,aAAqB,EACrB,IAAY,EACZ,KAAkB;IAElB,MAAM,IAAI,GAAG,GAAG,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;IACzE,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAEnC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC;AAqBD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAyB;IAEzB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO;YACL,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,yBAAyB;YACpC,IAAI,EAAE,sCAAsC;SAC7C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAA2D;QACvE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,EAAE,yBAAyB,EAAE;QAC1E,OAAO,EAAE;YACP,IAAI,EAAE,KAAK,CAAC,iBAAiB;YAC7B,KAAK,EAAE,2BAA2B;SACnC;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,KAAK,CAAC,sBAAsB;YAClC,KAAK,EAAE,+BAA+B;SACvC;KACF,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEjD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC7E,CAAC;AAcD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;IAErC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAC9B,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAC3D;QACE,MAAM;QACN,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;KACjD,CACF,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"proxyRequest.js","sourceRoot":"","sources":["../src/proxyRequest.ts"],"names":[],"mappings":"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"}
@@ -21,5 +21,24 @@ type RefreshAccessTokenResult = {
21
21
  refreshTtl: number;
22
22
  };
23
23
  export declare function refreshAccessToken(refreshCookie: string, opts: RefreshAccessTokenOptions): Promise<RefreshAccessTokenResult | null>;
24
+ export interface RefreshBearerSessionOptions {
25
+ authServerUrl: string;
26
+ serviceAuthorization?: string;
27
+ forwardedClientIp?: string;
28
+ forwardedUserAgent?: string;
29
+ }
30
+ export interface RefreshBearerSessionResult {
31
+ status: number;
32
+ /** The auth API's body: the rotated session on success, its error otherwise. */
33
+ body: unknown;
34
+ }
35
+ /**
36
+ * Rotates a session for a bearer client, which holds the raw refresh token.
37
+ *
38
+ * Unlike the cookie path this returns the auth API's failure as-is, because the
39
+ * client reads it: `refresh_token_reused` means the chain is gone and the user
40
+ * must sign in again, which is a different outcome from a transient failure.
41
+ */
42
+ export declare function refreshBearerSession(refreshToken: string, opts: RefreshBearerSessionOptions): Promise<RefreshBearerSessionResult>;
24
43
  export {};
25
44
  //# sourceMappingURL=refreshAccessToken.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"refreshAccessToken.d.ts","sourceRoot":"","sources":["../src/refreshAccessToken.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,KAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAkCF,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CA0D1C"}
1
+ {"version":3,"file":"refreshAccessToken.d.ts","sourceRoot":"","sources":["../src/refreshAccessToken.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,KAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA6EF,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CA2B1C;AAWD,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,0BAA0B,CAAC,CA8BrC"}