@_mustachio/openauth 0.13.2 → 0.13.3

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 (48) hide show
  1. package/dist/esm/domain/authorize.js +11 -3
  2. package/dist/esm/domain/callback.js +9 -2
  3. package/dist/esm/domain/method-dispatch.js +1 -0
  4. package/dist/esm/domain/method-route.js +2 -0
  5. package/dist/esm/domain/mount.js +29 -0
  6. package/dist/esm/http/handlers/method-route.js +8 -3
  7. package/dist/esm/index.js +3 -0
  8. package/dist/esm/methods/code.js +9 -8
  9. package/dist/esm/methods/oauth2-generic.js +2 -1
  10. package/dist/esm/methods/passkey.js +3 -2
  11. package/dist/esm/methods/password.js +9 -8
  12. package/dist/esm/methods/saml-sp/metadata.js +2 -1
  13. package/dist/types/domain/authorize.d.ts.map +1 -1
  14. package/dist/types/domain/callback.d.ts +6 -5
  15. package/dist/types/domain/callback.d.ts.map +1 -1
  16. package/dist/types/domain/method-dispatch.d.ts +5 -0
  17. package/dist/types/domain/method-dispatch.d.ts.map +1 -1
  18. package/dist/types/domain/method-route.d.ts +6 -0
  19. package/dist/types/domain/method-route.d.ts.map +1 -1
  20. package/dist/types/domain/mount.d.ts +90 -0
  21. package/dist/types/domain/mount.d.ts.map +1 -0
  22. package/dist/types/http/handlers/method-route.d.ts.map +1 -1
  23. package/dist/types/index.d.ts +16 -0
  24. package/dist/types/index.d.ts.map +1 -1
  25. package/dist/types/methods/code.d.ts.map +1 -1
  26. package/dist/types/methods/oauth2-generic.d.ts.map +1 -1
  27. package/dist/types/methods/passkey.d.ts.map +1 -1
  28. package/dist/types/methods/password.d.ts.map +1 -1
  29. package/dist/types/methods/saml-sp/metadata.d.ts.map +1 -1
  30. package/dist/types/types/idp.d.ts +16 -1
  31. package/dist/types/types/idp.d.ts.map +1 -1
  32. package/dist/types/types/method.d.ts +11 -0
  33. package/dist/types/types/method.d.ts.map +1 -1
  34. package/package.json +2 -1
  35. package/src/domain/authorize.ts +15 -4
  36. package/src/domain/callback.ts +18 -7
  37. package/src/domain/method-dispatch.ts +6 -0
  38. package/src/domain/method-route.ts +8 -0
  39. package/src/domain/mount.ts +113 -0
  40. package/src/http/handlers/method-route.ts +9 -5
  41. package/src/index.ts +17 -0
  42. package/src/methods/code.ts +15 -6
  43. package/src/methods/oauth2-generic.ts +6 -1
  44. package/src/methods/passkey.ts +6 -2
  45. package/src/methods/password.ts +19 -4
  46. package/src/methods/saml-sp/metadata.ts +5 -1
  47. package/src/types/idp.ts +16 -1
  48. package/src/types/method.ts +11 -0
@@ -4,6 +4,7 @@ import { err, isErr, ok } from "../types/result";
4
4
  import { safeAudit } from "./audit";
5
5
  import { randomId, randomToken } from "./crypto";
6
6
  import { dispatchMethod } from "./method-dispatch";
7
+ import { callbackTarget } from "./mount";
7
8
  import { mintStateEnvelope } from "./state-envelope";
8
9
  import { saveEncryptedCode } from "./token";
9
10
  var DEFAULT_FLOW_TTL_MS = 10 * 60 * 1000;
@@ -54,9 +55,15 @@ async function startAuthorize(input, deps) {
54
55
  const nonce = (deps.newNonce ?? randomToken)();
55
56
  const flowTtl = deps.flowTtlMs ?? DEFAULT_FLOW_TTL_MS;
56
57
  const now = deps.clock();
57
- const callbackHost = deps.callbackHostFor?.(tenant.id) ?? new URL(deps.issuerUrl).host;
58
- const callbackPath = `/cb/${methodId}`;
59
- const callbackUrl = `${new URL(deps.issuerUrl).protocol}//${callbackHost}${callbackPath}`;
58
+ const {
59
+ host: callbackHost,
60
+ path: callbackPath,
61
+ url: callbackUrl
62
+ } = callbackTarget({
63
+ issuerUrl: deps.issuerUrl,
64
+ methodId,
65
+ callbackHost: deps.callbackHostFor?.(tenant.id)
66
+ });
60
67
  const record = {
61
68
  flowId,
62
69
  tenantId: tenant.id,
@@ -103,6 +110,7 @@ async function startAuthorize(input, deps) {
103
110
  flow: record,
104
111
  cookies: input.cookies,
105
112
  sessionStore: deps.sessionStore,
113
+ issuerUrl: deps.issuerUrl,
106
114
  dispatch: {
107
115
  state: stateEnvelope,
108
116
  callbackUrl,
@@ -4,6 +4,7 @@ import { err, isErr, ok } from "../types/result";
4
4
  import { safeAudit } from "./audit";
5
5
  import { randomToken } from "./crypto";
6
6
  import { dispatchMethod } from "./method-dispatch";
7
+ import { callbackTarget } from "./mount";
7
8
  import { saveEncryptedCode } from "./token";
8
9
  import { verifyStateEnvelope } from "./state-envelope";
9
10
  import { AUTH_CODE_TTL_MS } from "./authorize";
@@ -114,6 +115,7 @@ async function handleCallback(input, deps) {
114
115
  flow,
115
116
  cookies: input.cookies,
116
117
  sessionStore: deps.sessionStore,
118
+ issuerUrl: input.issuerUrl,
117
119
  dispatch: null
118
120
  });
119
121
  if (isErr(dispatched))
@@ -192,7 +194,7 @@ async function translate(result, flow, deps) {
192
194
  async function tryIdpInitiated(input, deps, url) {
193
195
  if (input.rawRequest.method !== "POST")
194
196
  return null;
195
- if (!input.tenant || !input.issuerUrl)
197
+ if (!input.tenant)
196
198
  return null;
197
199
  const segments = url.pathname.split("/").filter(Boolean);
198
200
  if (segments.length < 2 || segments[0] !== "cb")
@@ -204,7 +206,11 @@ async function tryIdpInitiated(input, deps, url) {
204
206
  const method = methodRes.value;
205
207
  if (method.unsolicitedCallback !== true)
206
208
  return null;
207
- const callbackUrl = `${url.protocol}//${url.host}/cb/${methodId}`;
209
+ const { url: callbackUrl } = callbackTarget({
210
+ issuerUrl: input.issuerUrl,
211
+ methodId,
212
+ callbackHost: url.host
213
+ });
208
214
  const dispatched = await dispatchMethod({
209
215
  method,
210
216
  route: "GET /callback",
@@ -214,6 +220,7 @@ async function tryIdpInitiated(input, deps, url) {
214
220
  flow: null,
215
221
  cookies: input.cookies,
216
222
  sessionStore: deps.sessionStore,
223
+ issuerUrl: input.issuerUrl,
217
224
  dispatch: { state: "", callbackUrl, issuerUrl: input.issuerUrl }
218
225
  });
219
226
  if (isErr(dispatched))
@@ -8,6 +8,7 @@ async function dispatchMethod(input) {
8
8
  }
9
9
  const ctx = {
10
10
  request: input.request,
11
+ issuerUrl: input.issuerUrl,
11
12
  subPath: input.subPath,
12
13
  tenant: input.tenant,
13
14
  flow: input.flow,
@@ -38,6 +38,7 @@ async function handleMethodRoute(input, deps) {
38
38
  flow,
39
39
  cookies: input.cookies,
40
40
  sessionStore: deps.sessionStore,
41
+ issuerUrl: input.issuerUrl,
41
42
  dispatch: null
42
43
  });
43
44
  if (isErr(dispatched))
@@ -120,6 +121,7 @@ async function handlePublicMethodRoute(input, deps) {
120
121
  flow: null,
121
122
  cookies: new Map,
122
123
  sessionStore: deps.sessionStore,
124
+ issuerUrl: input.dispatch.issuerUrl,
123
125
  dispatch: input.dispatch
124
126
  });
125
127
  if (isErr(dispatched))
@@ -0,0 +1,29 @@
1
+ // src/domain/mount.ts
2
+ function mountPath(issuerUrl) {
3
+ let pathname;
4
+ try {
5
+ pathname = new URL(issuerUrl).pathname;
6
+ } catch {
7
+ return "";
8
+ }
9
+ const segments = pathname.split("/").filter(Boolean);
10
+ return segments.length === 0 ? "" : `/${segments.join("/")}`;
11
+ }
12
+ function mountedPath(issuerUrl, path) {
13
+ return `${mountPath(issuerUrl)}${path}`;
14
+ }
15
+ function callbackTarget(input) {
16
+ const issuer = new URL(input.issuerUrl);
17
+ const host = input.callbackHost ?? issuer.host;
18
+ const path = `/cb/${input.methodId}`;
19
+ return {
20
+ host,
21
+ path,
22
+ url: `${issuer.protocol}//${host}${mountPath(input.issuerUrl)}${path}`
23
+ };
24
+ }
25
+ export {
26
+ callbackTarget,
27
+ mountPath,
28
+ mountedPath
29
+ };
@@ -3,6 +3,7 @@ import {
3
3
  handleMethodRoute,
4
4
  handlePublicMethodRoute
5
5
  } from "../../domain/method-route";
6
+ import { callbackTarget } from "../../domain/mount";
6
7
  import { authError } from "../../types/error";
7
8
  import { isErr } from "../../types/result";
8
9
  import { applyResponsePolicy, cacheControlHeader } from "../cookies";
@@ -24,8 +25,11 @@ function makeMethodRouteHandler(deps) {
24
25
  const resolved = await deps.methodCache.resolve(tenant.config, methodId);
25
26
  if (!isErr(resolved) && resolved.value.publicRoutes?.includes(routeKey)) {
26
27
  const issuerUrl = c.get("issuerUrl");
27
- const callbackHost = deps.callbackHostFor?.(tenant.id) ?? new URL(issuerUrl).host;
28
- const callbackUrl = `${new URL(issuerUrl).protocol}//${callbackHost}/cb/${methodId}`;
28
+ const { url: callbackUrl } = callbackTarget({
29
+ issuerUrl,
30
+ methodId,
31
+ callbackHost: deps.callbackHostFor?.(tenant.id)
32
+ });
29
33
  const pub = await handlePublicMethodRoute({
30
34
  rawRequest: c.req.raw,
31
35
  tenant,
@@ -75,7 +79,8 @@ function makeMethodRouteHandler(deps) {
75
79
  subPath,
76
80
  httpMethod,
77
81
  flowId,
78
- cookies
82
+ cookies,
83
+ issuerUrl: c.get("issuerUrl")
79
84
  }, {
80
85
  sessionStore: deps.sessionStore,
81
86
  tokenStore: deps.tokenStore,
package/dist/esm/index.js CHANGED
@@ -3,6 +3,7 @@ import { err, isErr, isOk, ok } from "./types/result";
3
3
  import { authError } from "./types/error";
4
4
  import { asTenantId } from "./types/tenant";
5
5
  import { revokeAllForSubject } from "./domain/revoke";
6
+ import { mountedPath, mountPath } from "./domain/mount";
6
7
  import { passwordMethod } from "./methods/password";
7
8
  import { codeMethod } from "./methods/code";
8
9
  import { m2mMethod } from "./methods/m2m";
@@ -119,6 +120,8 @@ export {
119
120
  linkedinFactory,
120
121
  m2mMethod,
121
122
  microsoftFactory,
123
+ mountPath,
124
+ mountedPath,
122
125
  oauth2Factory,
123
126
  oidcFactory,
124
127
  ok,
@@ -7,6 +7,7 @@ import {
7
7
  timingSafeEqualStr,
8
8
  utf8
9
9
  } from "../domain/crypto";
10
+ import { mountedPath } from "../domain/mount";
10
11
  import { renderForm } from "../ui/forms";
11
12
  var configSchema = z.object({
12
13
  codeLength: z.number().int().min(4).max(10).optional(),
@@ -44,11 +45,11 @@ function codeMethod(opts) {
44
45
  kind,
45
46
  type: "code",
46
47
  routes: {
47
- "GET /authorize": async (_ctx) => ({
48
+ "GET /authorize": async (ctx) => ({
48
49
  kind: "challenge",
49
50
  response: htmlResponse(renderForm({
50
51
  title: titleRequest,
51
- action: `/m/${id}/send`,
52
+ action: mountedPath(ctx.issuerUrl, `/m/${id}/send`),
52
53
  fields: destinationField(destinationKind),
53
54
  submit: "Send code"
54
55
  }))
@@ -68,7 +69,7 @@ async function handleSend(ctx, methodId, titleRequest, titleVerify, destinationK
68
69
  kind: "challenge",
69
70
  response: htmlResponse(renderForm({
70
71
  title: titleRequest,
71
- action: `/m/${methodId}/send`,
72
+ action: mountedPath(ctx.issuerUrl, `/m/${methodId}/send`),
72
73
  fields: destinationField(destinationKind),
73
74
  submit: "Send code",
74
75
  error: "Please enter a valid destination."
@@ -85,7 +86,7 @@ async function handleSend(ctx, methodId, titleRequest, titleVerify, destinationK
85
86
  kind: "challenge",
86
87
  response: htmlResponse(renderForm({
87
88
  title: titleVerify,
88
- action: `/m/${methodId}/verify`,
89
+ action: mountedPath(ctx.issuerUrl, `/m/${methodId}/verify`),
89
90
  fields: [
90
91
  {
91
92
  name: "code",
@@ -122,11 +123,11 @@ async function handleVerify(ctx, methodId, titleVerify, maxAttempts) {
122
123
  const form = await safeForm(ctx.request);
123
124
  const parsed = verifyBody.safeParse(form);
124
125
  if (!parsed.success) {
125
- return verifyError(methodId, state, titleVerify, "Please enter the code.");
126
+ return verifyError(ctx.issuerUrl, methodId, state, titleVerify, "Please enter the code.");
126
127
  }
127
128
  const submittedHash = base64url.encode(await sha256(utf8.encode(parsed.data.code)));
128
129
  if (!timingSafeEqualStr(submittedHash, state.codeHash)) {
129
- return verifyError(methodId, { ...state, attempts: state.attempts + 1 }, titleVerify, "Incorrect code. Please try again.");
130
+ return verifyError(ctx.issuerUrl, methodId, { ...state, attempts: state.attempts + 1 }, titleVerify, "Incorrect code. Please try again.");
130
131
  }
131
132
  return {
132
133
  kind: "success",
@@ -134,12 +135,12 @@ async function handleVerify(ctx, methodId, titleVerify, maxAttempts) {
134
135
  properties: { destination: state.destination }
135
136
  };
136
137
  }
137
- function verifyError(methodId, next, titleVerify, error) {
138
+ function verifyError(issuerUrl, methodId, next, titleVerify, error) {
138
139
  return {
139
140
  kind: "challenge",
140
141
  response: htmlResponse(renderForm({
141
142
  title: titleVerify,
142
- action: `/m/${methodId}/verify`,
143
+ action: mountedPath(issuerUrl, `/m/${methodId}/verify`),
143
144
  fields: [
144
145
  {
145
146
  name: "code",
@@ -1,6 +1,7 @@
1
1
  // src/methods/oauth2-generic.ts
2
2
  import * as oauth from "oauth4webapi";
3
3
  import { createRemoteJWKSet, jwtVerify } from "jose";
4
+ import { mountedPath } from "../domain/mount";
4
5
  import { authError } from "../types/error";
5
6
  async function buildOauth2Method(opts) {
6
7
  const pkceMode = opts.pkce ?? "S256";
@@ -76,7 +77,7 @@ async function exchangeAndSucceed(ctx, opts, jwks, deriveSubject) {
76
77
  error: authError.internalError("flow missing on callback")
77
78
  };
78
79
  }
79
- const callbackUrl = `${new URL(ctx.request.url).protocol}//${ctx.flow.callbackHost}${ctx.flow.callbackPath}`;
80
+ const callbackUrl = `${new URL(ctx.request.url).protocol}//${ctx.flow.callbackHost}${mountedPath(ctx.issuerUrl, ctx.flow.callbackPath)}`;
80
81
  const body = new URLSearchParams({
81
82
  grant_type: "authorization_code",
82
83
  code,
@@ -6,6 +6,7 @@ import {
6
6
  verifyAuthenticationResponse,
7
7
  verifyRegistrationResponse
8
8
  } from "@simplewebauthn/server";
9
+ import { mountedPath } from "../domain/mount";
9
10
  import { renderForm } from "../ui/forms";
10
11
  var configSchema = z.object({
11
12
  rpName: z.string().min(1),
@@ -36,11 +37,11 @@ function passkeyMethod(opts) {
36
37
  kind,
37
38
  type: "passkey",
38
39
  routes: {
39
- "GET /authorize": async () => ({
40
+ "GET /authorize": async (ctx) => ({
40
41
  kind: "challenge",
41
42
  response: htmlResponse(renderForm({
42
43
  title: settings.title,
43
- action: `/m/${id}/authenticate-options`,
44
+ action: mountedPath(ctx.issuerUrl, `/m/${id}/authenticate-options`),
44
45
  fields: [
45
46
  {
46
47
  name: "username",
@@ -1,6 +1,7 @@
1
1
  // src/methods/password.ts
2
2
  import { z } from "zod";
3
3
  import { argon2idHasher } from "./password-hash";
4
+ import { mountedPath } from "../domain/mount";
4
5
  import { renderForm } from "../ui/forms";
5
6
  var configSchema = z.object({}).strict();
6
7
  var loginBodySchema = z.object({
@@ -46,7 +47,7 @@ function passwordMethod(opts) {
46
47
  async function renderLogin(ctx, methodId, title) {
47
48
  const body = renderForm({
48
49
  title,
49
- action: `/m/${methodId}/login`,
50
+ action: mountedPath(ctx.issuerUrl, `/m/${methodId}/login`),
50
51
  fields: [
51
52
  {
52
53
  name: "email",
@@ -78,15 +79,15 @@ async function handleLogin(ctx, methodId, title, users, hasher) {
78
79
  const form = await safeForm(ctx.request);
79
80
  const parsed = loginBodySchema.safeParse(form);
80
81
  if (!parsed.success) {
81
- return reLoginWithError(methodId, title, "Please enter your email and password.");
82
+ return reLoginWithError(ctx.issuerUrl, methodId, title, "Please enter your email and password.");
82
83
  }
83
84
  const user = await users.findByEmail(parsed.data.email, ctx.tenant.id);
84
85
  if (!user) {
85
- return reLoginWithError(methodId, title, "Invalid email or password.");
86
+ return reLoginWithError(ctx.issuerUrl, methodId, title, "Invalid email or password.");
86
87
  }
87
88
  const verified = await hasher.verify(parsed.data.password, user.passwordHash);
88
89
  if (!verified) {
89
- return reLoginWithError(methodId, title, "Invalid email or password.");
90
+ return reLoginWithError(ctx.issuerUrl, methodId, title, "Invalid email or password.");
90
91
  }
91
92
  return {
92
93
  kind: "success",
@@ -101,11 +102,11 @@ async function handleRegister(ctx, methodId, title, create, users, hasher) {
101
102
  const form = await safeForm(ctx.request);
102
103
  const parsed = registerBodySchema.safeParse(form);
103
104
  if (!parsed.success) {
104
- return reLoginWithError(methodId, title, "Password must be at least 8 characters and email must be valid.");
105
+ return reLoginWithError(ctx.issuerUrl, methodId, title, "Password must be at least 8 characters and email must be valid.");
105
106
  }
106
107
  const existing = await users.findByEmail(parsed.data.email, ctx.tenant.id);
107
108
  if (existing) {
108
- return reLoginWithError(methodId, title, "An account with that email already exists.");
109
+ return reLoginWithError(ctx.issuerUrl, methodId, title, "An account with that email already exists.");
109
110
  }
110
111
  const passwordHash = await hasher.hash(parsed.data.password);
111
112
  const user = await create({
@@ -122,12 +123,12 @@ async function handleRegister(ctx, methodId, title, create, users, hasher) {
122
123
  }
123
124
  };
124
125
  }
125
- function reLoginWithError(methodId, title, error) {
126
+ function reLoginWithError(issuerUrl, methodId, title, error) {
126
127
  return {
127
128
  kind: "challenge",
128
129
  response: new Response(renderForm({
129
130
  title,
130
- action: `/m/${methodId}/login`,
131
+ action: mountedPath(issuerUrl, `/m/${methodId}/login`),
131
132
  fields: [
132
133
  {
133
134
  name: "email",
@@ -1,4 +1,5 @@
1
1
  // src/methods/saml-sp/metadata.ts
2
+ import { mountedPath } from "../../domain/mount";
2
3
  import { authError } from "../../types/error";
3
4
  import { resolveSpEntityId } from "./saml-instance";
4
5
  var NAME_ID_FORMAT_URN = {
@@ -46,7 +47,7 @@ async function buildSpMetadata(ctx, methodId, config) {
46
47
  }
47
48
  const spEntityId = resolveSpEntityId(config, ctx.dispatch.issuerUrl, ctx.tenant.id, methodId);
48
49
  const cb = new URL(ctx.dispatch.callbackUrl);
49
- const slsUrl = `${cb.protocol}//${cb.host}/m/${methodId}/sls`;
50
+ const slsUrl = `${cb.protocol}//${cb.host}${mountedPath(ctx.dispatch.issuerUrl, `/m/${methodId}/sls`)}`;
50
51
  const xml = buildSpMetadataXml({
51
52
  spEntityId,
52
53
  acsUrl: ctx.dispatch.callbackUrl,
@@ -1 +1 @@
1
- {"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../../src/domain/authorize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../../src/domain/authorize.ts"],"names":[],"mappings":"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"}
@@ -56,12 +56,13 @@ export type HandleCallbackInput = {
56
56
  */
57
57
  tenant?: TenantContext;
58
58
  /**
59
- * Per-request issuer URL (HTTP layer). Used only by the
60
- * IdP-initiated path to derive the SP entityID / ACS — the same
61
- * derivation the AuthnRequest and metadata paths use, so the values
62
- * cannot drift.
59
+ * Per-request issuer URL (HTTP layer). The IdP-initiated path derives
60
+ * the SP entityID / ACS from it — the same derivation the AuthnRequest
61
+ * and metadata paths use, so the values cannot drift — and every
62
+ * dispatched method receives it as `MethodContext.issuerUrl` to build
63
+ * mount-prefixed URLs of its own.
63
64
  */
64
- issuerUrl?: string;
65
+ issuerUrl: string;
65
66
  };
66
67
  export type HandleCallbackDeps = {
67
68
  configStore: ConfigStore;
@@ -1 +1 @@
1
- {"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../src/domain/callback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,OAAO,KAAK,EAAgB,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIlE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAM5C,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB,GACD;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,QAAQ,CAAA;IAClB,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAAA;AAE/D,MAAM,MAAM,mBAAmB,GAAG;IAChC,8DAA8D;IAC9D,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,EAAE,UAAU,CAAA;IACtB,iFAAiF;IACjF,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,YAAY,CAAA;IACvB,KAAK,EAAE,MAAM,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,MAAM,CAAA;IACxB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CACnB,GAAG,EAAE,OAAO,KACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAChE,CAAA;AA8BD,wBAAsB,cAAc,CAClC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAsH5C"}
1
+ {"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../src/domain/callback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,OAAO,KAAK,EAAgB,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIlE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAO5C,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB,GACD;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,QAAQ,CAAA;IAClB,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAAA;AAE/D,MAAM,MAAM,mBAAmB,GAAG;IAChC,8DAA8D;IAC9D,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB;;;;;;OAMG;IACH,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,EAAE,UAAU,CAAA;IACtB,iFAAiF;IACjF,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,YAAY,CAAA;IACvB,KAAK,EAAE,MAAM,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,MAAM,CAAA;IACxB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CACnB,GAAG,EAAE,OAAO,KACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAChE,CAAA;AA8BD,wBAAsB,cAAc,CAClC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAuH5C"}
@@ -24,6 +24,11 @@ export type DispatchInput = {
24
24
  flow: FlowRecord | null;
25
25
  cookies: ReadonlyMap<string, string>;
26
26
  sessionStore: SessionStore;
27
+ /**
28
+ * Issuer URL of this IdP. Always required — unlike `dispatch`, methods
29
+ * need it on every route to emit mount-prefixed URLs of their own.
30
+ */
31
+ issuerUrl: string;
27
32
  /** Populated at `GET /authorize`; null on callbacks. */
28
33
  dispatch: MethodDispatchData | null;
29
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"method-dispatch.d.ts","sourceRoot":"","sources":["../../../src/domain/method-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EAEV,kBAAkB,EAClB,YAAY,EAEb,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,iBAAiB,CAAA;AAE9D,MAAM,MAAM,QAAQ,GAAG,GAAG,KAAK,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;AAEpD,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,QAAQ,CAAA;IACf,MAAM,EAAE,aAAa,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,YAAY,EAAE,YAAY,CAAA;IAC1B,wDAAwD;IACxD,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAA;CACpC,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAqD5D"}
1
+ {"version":3,"file":"method-dispatch.d.ts","sourceRoot":"","sources":["../../../src/domain/method-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EAEV,kBAAkB,EAClB,YAAY,EAEb,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,iBAAiB,CAAA;AAE9D,MAAM,MAAM,QAAQ,GAAG,GAAG,KAAK,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;AAEpD,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,QAAQ,CAAA;IACf,MAAM,EAAE,aAAa,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,YAAY,EAAE,YAAY,CAAA;IAC1B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAA;CACpC,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAsD5D"}
@@ -64,6 +64,12 @@ export type HandleMethodRouteInput = {
64
64
  /** flowId from the `idp.flow` cookie. */
65
65
  flowId: string;
66
66
  cookies: ReadonlyMap<string, string>;
67
+ /**
68
+ * Issuer URL — passed to the method so it can emit mount-prefixed URLs
69
+ * (a re-rendered form action, say). The inbound request URL cannot
70
+ * supply this: a proxy has already stripped the mount prefix from it.
71
+ */
72
+ issuerUrl: string;
67
73
  };
68
74
  export type HandleMethodRouteDeps = {
69
75
  sessionStore: SessionStore;
@@ -1 +1 @@
1
- {"version":3,"file":"method-route.d.ts","sourceRoot":"","sources":["../../../src/domain/method-route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"method-route.d.ts","sourceRoot":"","sources":["../../../src/domain/method-route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Mount prefix — where this IdP sits under its origin.
3
+ *
4
+ * The library serves its routes at its own root (`/authorize`, `/m/*`,
5
+ * `/cb/*`); a deployment may sit behind a reverse proxy that strips a path
6
+ * prefix before forwarding. Routing is unaffected — but every URL the
7
+ * library *emits* (form actions, upstream `redirect_uri`s, SAML metadata)
8
+ * is consumed on the public side of that proxy and must carry the prefix.
9
+ *
10
+ * `issuerUrl` already carries it. It is the single source of truth: there
11
+ * is deliberately no `basePath` option, because two sources could disagree
12
+ * and the `iss` claim would then contradict the URLs we hand out.
13
+ *
14
+ * All emitted-URL construction goes through this module. `metadata.test.ts`
15
+ * is an anti-drift test asserting the SAML entityID/ACS equal what
16
+ * `buildAuthnRequestRedirect` derives; funnelling every site through
17
+ * `callbackTarget` is what keeps that true.
18
+ */
19
+ /**
20
+ * The normalised mount prefix of `issuerUrl`: `""` for a root-mounted
21
+ * deployment, otherwise a leading-slash, no-trailing-slash path.
22
+ *
23
+ * https://example.com -> ""
24
+ * https://example.com/ -> ""
25
+ * https://example.com/idp -> "/idp"
26
+ * https://example.com/idp/ -> "/idp"
27
+ * https://example.com//idp// -> "/idp"
28
+ *
29
+ * A root-mounted issuer must yield `""` and not `"/"`, so that existing
30
+ * deployments emit byte-identical URLs to before this existed.
31
+ *
32
+ * An unparseable `issuerUrl` yields `""` rather than throwing: emitting a
33
+ * root-relative URL degrades to the pre-existing behaviour, whereas
34
+ * throwing would turn a misconfiguration into a 500 from inside form
35
+ * rendering. Misconfiguration still fails loudly at `/authorize`, which
36
+ * parses `issuerUrl` for the callback host.
37
+ */
38
+ export declare function mountPath(issuerUrl: string): string;
39
+ /**
40
+ * A path-absolute URL for one of the library's own routes, carrying the
41
+ * deployment's mount prefix. `path` is the route as the service itself
42
+ * serves it, with a leading slash.
43
+ *
44
+ * mountedPath("https://x/idp", "/m/code/send") -> "/idp/m/code/send"
45
+ * mountedPath("https://x", "/m/code/send") -> "/m/code/send"
46
+ */
47
+ export declare function mountedPath(issuerUrl: string, path: string): string;
48
+ /**
49
+ * Where a method's callback lives, in the two forms the framework needs.
50
+ *
51
+ * The distinction matters under a path-mounted deployment and is the
52
+ * reason these are derived together rather than one from the other:
53
+ * `url` is public (registered with upstream providers, advertised in SAML
54
+ * metadata) and carries the mount prefix, while `path` is what the
55
+ * inbound request actually looks like after the proxy has stripped that
56
+ * prefix, and so must not.
57
+ */
58
+ export type CallbackTarget = {
59
+ /** Public, fully-qualified callback URL. Carries the mount prefix. */
60
+ url: string;
61
+ /** Host the callback is expected to arrive on. */
62
+ host: string;
63
+ /**
64
+ * Expected pathname of the inbound request — this service's own route,
65
+ * *without* the mount prefix, because the proxy has already stripped it.
66
+ * Persisted on `FlowRecord.callbackPath` and matched in `domain/callback.ts`.
67
+ */
68
+ path: string;
69
+ };
70
+ /**
71
+ * The single derivation point for a method's callback URL.
72
+ *
73
+ * `callbackHost` is the optional per-tenant override from
74
+ * `IdPOptions.callbackHostFor`. **The issuer's mount prefix applies even
75
+ * when that override is in effect.** `callbackHostFor` exists to partition
76
+ * callbacks across hostnames so a tenant is recoverable from the `Host`
77
+ * header before the state envelope is verified (tenant-recovery mechanism
78
+ * #2) — it varies the authority of the *same* deployment, not the
79
+ * deployment itself. Those hosts are served by this service behind the
80
+ * same proxy, so they share its mount. A deployment needing partitioned
81
+ * hosts mounted differently from the issuer is describing two mounts,
82
+ * which one `issuerUrl` cannot express and a second option must not be
83
+ * introduced to paper over.
84
+ */
85
+ export declare function callbackTarget(input: {
86
+ issuerUrl: string;
87
+ methodId: string;
88
+ callbackHost?: string | undefined;
89
+ }): CallbackTarget;
90
+ //# sourceMappingURL=mount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../../src/domain/mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CASnD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC,GAAG,cAAc,CASjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"method-route.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/method-route.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGvD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,OAClC,WAAW,KAAG,OAAO,CAAC,QAAQ,CAAC,CAuJjD"}
1
+ {"version":3,"file":"method-route.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/method-route.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGvD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,OAClC,WAAW,KAAG,OAAO,CAAC,QAAQ,CAAC,CA0JjD"}
@@ -38,6 +38,22 @@ export type { TokenStore } from "./ports/token-store";
38
38
  * ARCHITECTURE.md "Reuse detection scope").
39
39
  */
40
40
  export { revokeAllForSubject } from "./domain/revoke";
41
+ /**
42
+ * Build a path-absolute URL for one of the library's own routes, carrying
43
+ * the mount prefix from `issuerUrl`.
44
+ *
45
+ * Custom methods that render their own URLs — a form `action`, say — must
46
+ * use this rather than a path-absolute literal, or the URL will 404 under
47
+ * a deployment mounted behind a proxy at a path prefix. Root-mounted
48
+ * issuers yield the literal unchanged.
49
+ *
50
+ * mountedPath(ctx.issuerUrl, `/m/${id}/send`)
51
+ * // "https://x" -> "/m/mycode/send"
52
+ * // "https://x/idp" -> "/idp/m/mycode/send"
53
+ *
54
+ * See INTEGRATION.md § 8.
55
+ */
56
+ export { mountedPath, mountPath } from "./domain/mount";
41
57
  export { passwordMethod } from "./methods/password";
42
58
  export type { PasswordMethodOptions, PasswordProperties, PasswordUser, PasswordUserStore, PasswordState, } from "./methods/password";
43
59
  export { codeMethod } from "./methods/code";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../../src/methods/code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,OAAO,KAAK,EAEV,iBAAiB,EAGlB,MAAM,iBAAiB,CAAA;AAGxB,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE;QAChB,WAAW,EAAE,MAAM,CAAA;QACnB,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,MAAM,CAAA;CAC5B,CAAA;AAED;;;;GAIG;AACH,QAAA,MAAM,YAAY;IAChB,6BAA6B;;IAE7B,qEAAqE;;IAErE,uBAAuB;;IAEvB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO3B,CAAA;AACF,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAS9C,wBAAgB,UAAU,CACxB,IAAI,EAAE,iBAAiB,GACtB,iBAAiB,CAAC,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,CAgD1D"}
1
+ {"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../../src/methods/code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,OAAO,KAAK,EAEV,iBAAiB,EAGlB,MAAM,iBAAiB,CAAA;AAIxB,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE;QAChB,WAAW,EAAE,MAAM,CAAA;QACnB,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,MAAM,CAAA;CAC5B,CAAA;AAED;;;;GAIG;AACH,QAAA,MAAM,YAAY;IAChB,6BAA6B;;IAE7B,qEAAqE;;IAErE,uBAAuB;;IAEvB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO3B,CAAA;AACF,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAS9C,wBAAgB,UAAU,CACxB,IAAI,EAAE,iBAAiB,GACtB,iBAAiB,CAAC,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,CAgD1D"}
@@ -1 +1 @@
1
- {"version":3,"file":"oauth2-generic.d.ts","sourceRoot":"","sources":["../../../src/methods/oauth2-generic.ts"],"names":[],"mappings":"AA8BA;;;;;;GAMG;AACH,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAG5C,OAAO,KAAK,EAAE,UAAU,EAA+B,MAAM,iBAAiB,CAAA;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,wFAAwF;QACxF,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,4DAA4D;IAC5D,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,4FAA4F;IAC5F,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,6EAA6E;AAC7E,MAAM,MAAM,WAAW,GAAG;IACxB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAA;IACV,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,8EAA8E;IAC9E,IAAI,CAAC,EAAE,UAAU,CAAA;IAEjB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;IAEhB,qBAAqB;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IACpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAA;KAC9B,KAAK,MAAM,CAAA;CACb,CAAA;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,CA6BpD"}
1
+ {"version":3,"file":"oauth2-generic.d.ts","sourceRoot":"","sources":["../../../src/methods/oauth2-generic.ts"],"names":[],"mappings":"AA8BA;;;;;;GAMG;AACH,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAI5C,OAAO,KAAK,EAAE,UAAU,EAA+B,MAAM,iBAAiB,CAAA;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,wFAAwF;QACxF,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,4DAA4D;IAC5D,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,4FAA4F;IAC5F,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,6EAA6E;AAC7E,MAAM,MAAM,WAAW,GAAG;IACxB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAA;IACV,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,8EAA8E;IAC9E,IAAI,CAAC,EAAE,UAAU,CAAA;IAEjB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;IAEhB,qBAAqB;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IACpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAA;KAC9B,KAAK,MAAM,CAAA;CACb,CAAA;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,CA6BpD"}