authhero 8.20.0 → 8.22.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 (47) hide show
  1. package/dist/assets/u/widget/index.esm.js +1 -1
  2. package/dist/authhero.cjs +142 -142
  3. package/dist/authhero.d.ts +402 -82
  4. package/dist/authhero.mjs +15092 -17184
  5. package/dist/tsconfig.types.tsbuildinfo +1 -1
  6. package/dist/types/authentication-flows/passwordless.d.ts +4 -4
  7. package/dist/types/errors/is-http-exception-like.d.ts +11 -0
  8. package/dist/types/helpers/dcr/metadata-mapping.d.ts +1 -1
  9. package/dist/types/index.d.ts +280 -79
  10. package/dist/types/routes/auth-api/index.d.ts +18 -18
  11. package/dist/types/routes/auth-api/passwordless.d.ts +10 -10
  12. package/dist/types/routes/auth-api/register/index.d.ts +2 -2
  13. package/dist/types/routes/auth-api/revoke.d.ts +6 -6
  14. package/dist/types/routes/management-api/action-executions.d.ts +2 -2
  15. package/dist/types/routes/management-api/actions.d.ts +3 -1
  16. package/dist/types/routes/management-api/authentication-methods.d.ts +1 -1
  17. package/dist/types/routes/management-api/branding.d.ts +9 -9
  18. package/dist/types/routes/management-api/client-grants.d.ts +16 -0
  19. package/dist/types/routes/management-api/clients.d.ts +109 -13
  20. package/dist/types/routes/management-api/connections.d.ts +16 -15
  21. package/dist/types/routes/management-api/flows.d.ts +1 -0
  22. package/dist/types/routes/management-api/forms.d.ts +1 -0
  23. package/dist/types/routes/management-api/grants.d.ts +1 -0
  24. package/dist/types/routes/management-api/guardian.d.ts +5 -5
  25. package/dist/types/routes/management-api/hook-code.d.ts +2 -2
  26. package/dist/types/routes/management-api/hooks.d.ts +1 -0
  27. package/dist/types/routes/management-api/index.d.ts +276 -76
  28. package/dist/types/routes/management-api/log-streams.d.ts +6 -6
  29. package/dist/types/routes/management-api/logs.d.ts +42 -3
  30. package/dist/types/routes/management-api/migration-sources.d.ts +6 -6
  31. package/dist/types/routes/management-api/organizations.d.ts +36 -2
  32. package/dist/types/routes/management-api/prompts.d.ts +4 -4
  33. package/dist/types/routes/management-api/resource-servers.d.ts +1 -0
  34. package/dist/types/routes/management-api/roles.d.ts +2 -0
  35. package/dist/types/routes/management-api/tenant-export-import.d.ts +5 -5
  36. package/dist/types/routes/management-api/tenants.d.ts +5 -5
  37. package/dist/types/routes/management-api/themes.d.ts +6 -6
  38. package/dist/types/routes/management-api/users.d.ts +7 -2
  39. package/dist/types/routes/proxy-control-plane/wfp-tenant-hosts.d.ts +122 -0
  40. package/dist/types/routes/proxy-control-plane/wfp-tenant-hosts.test.d.ts +1 -0
  41. package/dist/types/routes/universal-login/common.d.ts +12 -12
  42. package/dist/types/routes/universal-login/flow-api.d.ts +4 -4
  43. package/dist/types/routes/universal-login/identifier.d.ts +2 -2
  44. package/dist/types/routes/universal-login/index.d.ts +2 -2
  45. package/dist/types/routes/universal-login/u2-index.d.ts +5 -5
  46. package/dist/types/routes/universal-login/u2-routes.d.ts +5 -5
  47. package/package.json +5 -5
@@ -0,0 +1,122 @@
1
+ import type { TenantsDataAdapter } from "@authhero/adapter-interfaces";
2
+ import type { ResolvedHost } from "@authhero/proxy";
3
+ import { type KvNamespaceWriter } from "@authhero/proxy";
4
+ /**
5
+ * Default dispatch-namespace binding name the synthesized route targets.
6
+ * Must match the `[[dispatch_namespaces]] binding = "..."` declared in the
7
+ * proxy Worker's wrangler config.
8
+ */
9
+ export declare const DEFAULT_WFP_DISPATCH_BINDING = "DISPATCHER";
10
+ /**
11
+ * Default script-name template, matching the WFP provisioner's default
12
+ * (`scriptNameTemplate` in `@authhero/cloudflare-adapter`). Only used when the
13
+ * tenant row carries no `worker_script_name` — the provisioner writes that
14
+ * back on provision, and it is always preferred.
15
+ */
16
+ export declare const DEFAULT_WFP_SCRIPT_NAME_TEMPLATE = "{tenant_id}";
17
+ /**
18
+ * The platform subdomain a WFP tenant is served on: `{tenant_id}.{issuerHost}`.
19
+ * Central so the publisher, the resolver, and any reconcile host-list
20
+ * derivation all agree on the exact host (and therefore the KV key).
21
+ */
22
+ export declare function wfpTenantHost(tenantId: string, issuerHost: string): string;
23
+ /**
24
+ * Whether a tenant id can be served on a platform subdomain at all. Ids that
25
+ * fail this (mixed case, dots, other URL-unsafe characters) are skipped by
26
+ * `wrapTenantsAdapterWithWfpKvPublish` — publishing them would create KV keys
27
+ * the resolver can never match. Give WFP tenants lowercase DNS-label ids.
28
+ */
29
+ export declare function isWfpSubdomainSafeTenantId(tenantId: string): boolean;
30
+ export interface WfpTenantHostResolverOptions {
31
+ /** Tenant lookup — typically the control plane's tenants adapter. */
32
+ tenants: Pick<TenantsDataAdapter, "get">;
33
+ /**
34
+ * The issuer host tenant subdomains hang off (e.g. `token.example.com`,
35
+ * from `new URL(env.ISSUER).host`). A host resolves only when it is exactly
36
+ * one label under this — `wpf.token.example.com`, not `a.b.token.example.com`.
37
+ */
38
+ issuerHost: string;
39
+ /** Dispatch-namespace binding name on the proxy Worker. */
40
+ dispatchBinding?: string;
41
+ /**
42
+ * Fallback script-name template (`{tenant_id}` placeholder) for tenants
43
+ * provisioned before `worker_script_name` was written back. Must match the
44
+ * provisioner's template.
45
+ */
46
+ scriptNameTemplate?: string;
47
+ /** Optional per-request timeout (ms) forwarded to the dispatch handler. */
48
+ dispatchTimeoutMs?: number;
49
+ }
50
+ /**
51
+ * Build a `resolveHost` that maps a WFP tenant's platform subdomain
52
+ * (`{tenant_id}.{issuerHost}`) to a synthetic `ResolvedHost` whose single
53
+ * route dispatches into the tenant's own Worker via the proxy's
54
+ * `dispatch_namespace` handler.
55
+ *
56
+ * Resolves only tenants with `deployment_type: "wfp"` AND
57
+ * `provisioning_state: "ready"` — anything else returns `null` so the host
58
+ * falls through to the proxy's fallback chain (typically the shared control
59
+ * plane), which keeps a tenant serviceable while it is still provisioning.
60
+ * No `custom_domains` row is involved; the mapping is derived entirely from
61
+ * the tenant row, which stays the durable source of truth.
62
+ *
63
+ * Compose it behind the custom-domains resolver with `composeHostResolvers`
64
+ * so an explicit `custom_domains` row for the same host always wins.
65
+ */
66
+ export declare function createWfpTenantHostResolver(options: WfpTenantHostResolverOptions): (host: string) => Promise<ResolvedHost | null>;
67
+ /**
68
+ * Chain host resolvers: first non-null wins, in argument order. Put the
69
+ * custom-domains resolver first so an explicit `custom_domains` row overrides
70
+ * a derived WFP tenant-subdomain route for the same host. Errors propagate —
71
+ * a failing layer should surface (and let the caller's own fallback take
72
+ * over), not be silently treated as a miss that could delete a live KV key.
73
+ */
74
+ export declare function composeHostResolvers(...resolvers: Array<(host: string) => Promise<ResolvedHost | null>>): (host: string) => Promise<ResolvedHost | null>;
75
+ export interface WfpTenantsKvPublishOptions {
76
+ /** Tenants adapter whose writes should be mirrored to KV. */
77
+ tenants: TenantsDataAdapter;
78
+ /** KV namespace the resolved host blobs are published to. */
79
+ kv: KvNamespaceWriter;
80
+ /**
81
+ * Cross-tenant host resolver used to recompute the blob after a write —
82
+ * pass the SAME composed resolver (custom domains first, then
83
+ * `createWfpTenantHostResolver`) that the control plane serves over HTTP,
84
+ * so every publisher computes identical blobs for a host.
85
+ */
86
+ resolveHost: (host: string) => Promise<ResolvedHost | null>;
87
+ /** The issuer host tenant subdomains hang off — see `wfpTenantHost`. */
88
+ issuerHost: string;
89
+ /** Key prefix; must match the proxy reader. Defaults to the shared default. */
90
+ keyPrefix?: string;
91
+ /**
92
+ * Optional `ctx.waitUntil` so the fire-and-forget KV publish runs to
93
+ * completion without blocking (or failing) the originating write. When
94
+ * omitted, the publish is detached with its rejection swallowed.
95
+ */
96
+ waitUntil?: (promise: Promise<unknown>) => void;
97
+ /** Optional hook invoked when a publish fails. */
98
+ onError?: (err: unknown, ctx: {
99
+ host: string;
100
+ op: string;
101
+ }) => void;
102
+ }
103
+ /**
104
+ * Wrap a control plane's `tenants` adapter so every WFP-tenant mutation
105
+ * republishes (or deletes) the tenant's platform-subdomain routing blob in KV
106
+ * — the tenants-table counterpart of `wrapProxyAdaptersWithKvPublish`.
107
+ *
108
+ * This is the single choke-point for WFP subdomain routing: the provisioner
109
+ * flips `provisioning_state` to `"ready"` through `tenants.update`, which
110
+ * publishes the dispatch route the moment the tenant Worker is servable —
111
+ * inline hook and durable-workflow paths alike, with no per-path wiring. A
112
+ * remove deletes the key, so a deprovisioned tenant's host falls back to the
113
+ * proxy's default chain instead of dispatching to a dead script.
114
+ *
115
+ * Shared (non-WFP) tenants never touch KV, and neither do wfp tenants whose
116
+ * id is not a lowercase DNS label (`isWfpSubdomainSafeTenantId`) — such ids
117
+ * cannot round-trip through a hostname, so publishing them would only create
118
+ * dead keys. Publishing is fire-and-forget; silent drift is corrected by the
119
+ * periodic reconcile (`backfillProxyHostsToKv` over `wfpTenantHost`-derived
120
+ * hosts).
121
+ */
122
+ export declare function wrapTenantsAdapterWithWfpKvPublish(options: WfpTenantsKvPublishOptions): TenantsDataAdapter;
@@ -72,12 +72,12 @@ export declare function initJSXRoute(ctx: Context<{
72
72
  background_color: string;
73
73
  background_image_url: string;
74
74
  page_layout: "center" | "left" | "right";
75
- logo_placement?: "none" | "widget" | "chip" | undefined;
75
+ logo_placement?: "widget" | "none" | "chip" | undefined;
76
76
  };
77
77
  widget: {
78
78
  header_text_alignment: "center" | "left" | "right";
79
79
  logo_height: number;
80
- logo_position: "none" | "center" | "left" | "right";
80
+ logo_position: "center" | "left" | "right" | "none";
81
81
  logo_url: string;
82
82
  social_buttons_layout: "bottom" | "top";
83
83
  };
@@ -357,7 +357,7 @@ export declare function initJSXRoute(ctx: Context<{
357
357
  active?: boolean | undefined;
358
358
  } | undefined;
359
359
  signup?: {
360
- status?: "optional" | "required" | "disabled" | undefined;
360
+ status?: "required" | "optional" | "disabled" | undefined;
361
361
  verification?: {
362
362
  active?: boolean | undefined;
363
363
  } | undefined;
@@ -374,7 +374,7 @@ export declare function initJSXRoute(ctx: Context<{
374
374
  active?: boolean | undefined;
375
375
  } | undefined;
376
376
  signup?: {
377
- status?: "optional" | "required" | "disabled" | undefined;
377
+ status?: "required" | "optional" | "disabled" | undefined;
378
378
  } | undefined;
379
379
  validation?: {
380
380
  max_length?: number | undefined;
@@ -391,7 +391,7 @@ export declare function initJSXRoute(ctx: Context<{
391
391
  active?: boolean | undefined;
392
392
  } | undefined;
393
393
  signup?: {
394
- status?: "optional" | "required" | "disabled" | undefined;
394
+ status?: "required" | "optional" | "disabled" | undefined;
395
395
  } | undefined;
396
396
  } | undefined;
397
397
  } | undefined;
@@ -448,7 +448,7 @@ export declare function initJSXRoute(ctx: Context<{
448
448
  custom_login_page_preview?: string | undefined;
449
449
  form_template?: string | undefined;
450
450
  addons?: Record<string, any> | undefined;
451
- token_endpoint_auth_method?: "none" | "private_key_jwt" | "client_secret_post" | "client_secret_basic" | "client_secret_jwt" | undefined;
451
+ token_endpoint_auth_method?: "none" | "client_secret_post" | "client_secret_basic" | "client_secret_jwt" | "private_key_jwt" | undefined;
452
452
  client_metadata?: Record<string, string> | undefined;
453
453
  hide_sign_up_disabled_error?: boolean | undefined;
454
454
  mobile?: Record<string, any> | undefined;
@@ -793,12 +793,12 @@ export declare function initJSXRouteWithSession(ctx: Context<{
793
793
  background_color: string;
794
794
  background_image_url: string;
795
795
  page_layout: "center" | "left" | "right";
796
- logo_placement?: "none" | "widget" | "chip" | undefined;
796
+ logo_placement?: "widget" | "none" | "chip" | undefined;
797
797
  };
798
798
  widget: {
799
799
  header_text_alignment: "center" | "left" | "right";
800
800
  logo_height: number;
801
- logo_position: "none" | "center" | "left" | "right";
801
+ logo_position: "center" | "left" | "right" | "none";
802
802
  logo_url: string;
803
803
  social_buttons_layout: "bottom" | "top";
804
804
  };
@@ -1078,7 +1078,7 @@ export declare function initJSXRouteWithSession(ctx: Context<{
1078
1078
  active?: boolean | undefined;
1079
1079
  } | undefined;
1080
1080
  signup?: {
1081
- status?: "optional" | "required" | "disabled" | undefined;
1081
+ status?: "required" | "optional" | "disabled" | undefined;
1082
1082
  verification?: {
1083
1083
  active?: boolean | undefined;
1084
1084
  } | undefined;
@@ -1095,7 +1095,7 @@ export declare function initJSXRouteWithSession(ctx: Context<{
1095
1095
  active?: boolean | undefined;
1096
1096
  } | undefined;
1097
1097
  signup?: {
1098
- status?: "optional" | "required" | "disabled" | undefined;
1098
+ status?: "required" | "optional" | "disabled" | undefined;
1099
1099
  } | undefined;
1100
1100
  validation?: {
1101
1101
  max_length?: number | undefined;
@@ -1112,7 +1112,7 @@ export declare function initJSXRouteWithSession(ctx: Context<{
1112
1112
  active?: boolean | undefined;
1113
1113
  } | undefined;
1114
1114
  signup?: {
1115
- status?: "optional" | "required" | "disabled" | undefined;
1115
+ status?: "required" | "optional" | "disabled" | undefined;
1116
1116
  } | undefined;
1117
1117
  } | undefined;
1118
1118
  } | undefined;
@@ -1169,7 +1169,7 @@ export declare function initJSXRouteWithSession(ctx: Context<{
1169
1169
  custom_login_page_preview?: string | undefined;
1170
1170
  form_template?: string | undefined;
1171
1171
  addons?: Record<string, any> | undefined;
1172
- token_endpoint_auth_method?: "none" | "private_key_jwt" | "client_secret_post" | "client_secret_basic" | "client_secret_jwt" | undefined;
1172
+ token_endpoint_auth_method?: "none" | "client_secret_post" | "client_secret_basic" | "client_secret_jwt" | "private_key_jwt" | undefined;
1173
1173
  client_metadata?: Record<string, string> | undefined;
1174
1174
  hide_sign_up_disabled_error?: boolean | undefined;
1175
1175
  mobile?: Record<string, any> | undefined;
@@ -27,7 +27,7 @@ export declare const flowApiRoutes: OpenAPIHono<{
27
27
  output: {
28
28
  screen: {
29
29
  action: string;
30
- method: "GET" | "POST";
30
+ method: "POST" | "GET";
31
31
  components: {
32
32
  id: string;
33
33
  type: string;
@@ -107,7 +107,7 @@ export declare const flowApiRoutes: OpenAPIHono<{
107
107
  output: {
108
108
  screen: {
109
109
  action: string;
110
- method: "GET" | "POST";
110
+ method: "POST" | "GET";
111
111
  components: {
112
112
  id: string;
113
113
  type: string;
@@ -204,7 +204,7 @@ export declare const flowApiRoutes: OpenAPIHono<{
204
204
  output: {
205
205
  screen: {
206
206
  action: string;
207
- method: "GET" | "POST";
207
+ method: "POST" | "GET";
208
208
  components: {
209
209
  id: string;
210
210
  type: string;
@@ -319,7 +319,7 @@ export declare const flowApiRoutes: OpenAPIHono<{
319
319
  output: {
320
320
  screen: {
321
321
  action: string;
322
- method: "GET" | "POST";
322
+ method: "POST" | "GET";
323
323
  components: {
324
324
  id: string;
325
325
  type: string;
@@ -30,7 +30,7 @@ export declare const identifierRoutes: OpenAPIHono<{
30
30
  } & {
31
31
  form: {
32
32
  username: string;
33
- login_selection?: "code" | "password" | undefined;
33
+ login_selection?: "password" | "code" | undefined;
34
34
  };
35
35
  };
36
36
  output: {};
@@ -44,7 +44,7 @@ export declare const identifierRoutes: OpenAPIHono<{
44
44
  } & {
45
45
  form: {
46
46
  username: string;
47
- login_selection?: "code" | "password" | undefined;
47
+ login_selection?: "password" | "code" | undefined;
48
48
  };
49
49
  };
50
50
  output: {};
@@ -515,7 +515,7 @@ export default function create(config: AuthHeroConfig): OpenAPIHono<{
515
515
  } & {
516
516
  form: {
517
517
  username: string;
518
- login_selection?: "code" | "password" | undefined;
518
+ login_selection?: "password" | "code" | undefined;
519
519
  };
520
520
  };
521
521
  output: {};
@@ -529,7 +529,7 @@ export default function create(config: AuthHeroConfig): OpenAPIHono<{
529
529
  } & {
530
530
  form: {
531
531
  username: string;
532
- login_selection?: "code" | "password" | undefined;
532
+ login_selection?: "password" | "code" | undefined;
533
533
  };
534
534
  };
535
535
  output: {};
@@ -165,7 +165,7 @@ export default function createU2App(config: AuthHeroConfig): OpenAPIHono<{
165
165
  $get: {
166
166
  input: {
167
167
  param: {
168
- screen: "signup" | "consent" | "login" | "reset-password" | "account" | "enter-password" | "impersonate" | "try-connection-result" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
168
+ screen: "login" | "signup" | "reset-password" | "consent" | "account" | "enter-password" | "impersonate" | "try-connection-result" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
169
169
  };
170
170
  } & {
171
171
  query: {
@@ -181,7 +181,7 @@ export default function createU2App(config: AuthHeroConfig): OpenAPIHono<{
181
181
  } | {
182
182
  input: {
183
183
  param: {
184
- screen: "signup" | "consent" | "login" | "reset-password" | "account" | "enter-password" | "impersonate" | "try-connection-result" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
184
+ screen: "login" | "signup" | "reset-password" | "consent" | "account" | "enter-password" | "impersonate" | "try-connection-result" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
185
185
  };
186
186
  } & {
187
187
  query: {
@@ -197,7 +197,7 @@ export default function createU2App(config: AuthHeroConfig): OpenAPIHono<{
197
197
  } | {
198
198
  input: {
199
199
  param: {
200
- screen: "signup" | "consent" | "login" | "reset-password" | "account" | "enter-password" | "impersonate" | "try-connection-result" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
200
+ screen: "login" | "signup" | "reset-password" | "consent" | "account" | "enter-password" | "impersonate" | "try-connection-result" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
201
201
  };
202
202
  } & {
203
203
  query: {
@@ -217,7 +217,7 @@ export default function createU2App(config: AuthHeroConfig): OpenAPIHono<{
217
217
  $post: {
218
218
  input: {
219
219
  param: {
220
- screen: "signup" | "consent" | "login" | "reset-password" | "enter-password" | "impersonate" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
220
+ screen: "login" | "signup" | "reset-password" | "consent" | "enter-password" | "impersonate" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
221
221
  };
222
222
  } & {
223
223
  query: {
@@ -235,7 +235,7 @@ export default function createU2App(config: AuthHeroConfig): OpenAPIHono<{
235
235
  } | {
236
236
  input: {
237
237
  param: {
238
- screen: "signup" | "consent" | "login" | "reset-password" | "enter-password" | "impersonate" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
238
+ screen: "login" | "signup" | "reset-password" | "consent" | "enter-password" | "impersonate" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
239
239
  };
240
240
  } & {
241
241
  query: {
@@ -170,7 +170,7 @@ export declare const u2Routes: OpenAPIHono<{
170
170
  $get: {
171
171
  input: {
172
172
  param: {
173
- screen: "signup" | "consent" | "login" | "reset-password" | "account" | "enter-password" | "impersonate" | "try-connection-result" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
173
+ screen: "login" | "signup" | "reset-password" | "consent" | "account" | "enter-password" | "impersonate" | "try-connection-result" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
174
174
  };
175
175
  } & {
176
176
  query: {
@@ -186,7 +186,7 @@ export declare const u2Routes: OpenAPIHono<{
186
186
  } | {
187
187
  input: {
188
188
  param: {
189
- screen: "signup" | "consent" | "login" | "reset-password" | "account" | "enter-password" | "impersonate" | "try-connection-result" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
189
+ screen: "login" | "signup" | "reset-password" | "consent" | "account" | "enter-password" | "impersonate" | "try-connection-result" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
190
190
  };
191
191
  } & {
192
192
  query: {
@@ -202,7 +202,7 @@ export declare const u2Routes: OpenAPIHono<{
202
202
  } | {
203
203
  input: {
204
204
  param: {
205
- screen: "signup" | "consent" | "login" | "reset-password" | "account" | "enter-password" | "impersonate" | "try-connection-result" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
205
+ screen: "login" | "signup" | "reset-password" | "consent" | "account" | "enter-password" | "impersonate" | "try-connection-result" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
206
206
  };
207
207
  } & {
208
208
  query: {
@@ -222,7 +222,7 @@ export declare const u2Routes: OpenAPIHono<{
222
222
  $post: {
223
223
  input: {
224
224
  param: {
225
- screen: "signup" | "consent" | "login" | "reset-password" | "enter-password" | "impersonate" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
225
+ screen: "login" | "signup" | "reset-password" | "consent" | "enter-password" | "impersonate" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
226
226
  };
227
227
  } & {
228
228
  query: {
@@ -240,7 +240,7 @@ export declare const u2Routes: OpenAPIHono<{
240
240
  } | {
241
241
  input: {
242
242
  param: {
243
- screen: "signup" | "consent" | "login" | "reset-password" | "enter-password" | "impersonate" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
243
+ screen: "login" | "signup" | "reset-password" | "consent" | "enter-password" | "impersonate" | "reset-password/request" | "reset-password/code" | "login/identifier" | "login/email-otp-challenge" | "login/sms-otp-challenge" | "login/login-passwordless-identifier" | "mfa/login-options" | "mfa/totp-challenge" | "mfa/totp-enrollment" | "mfa/phone-challenge" | "mfa/phone-enrollment" | "passkey/challenge" | "passkey/enrollment" | "passkey/enrollment-nudge" | "account/profile" | "account/security" | "account/security/totp-enrollment" | "account/security/phone-enrollment" | "account/linked" | "account/delete" | "account/passkeys" | "connect/start" | "connect/select-tenant";
244
244
  };
245
245
  } & {
246
246
  query: {
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "type": "git",
12
12
  "url": "https://github.com/markusahlstrand/authhero"
13
13
  },
14
- "version": "8.20.0",
14
+ "version": "8.22.0",
15
15
  "files": [
16
16
  "dist"
17
17
  ],
@@ -63,8 +63,8 @@
63
63
  "vite": "^8.0.14",
64
64
  "vite-plugin-dts": "^4.5.4",
65
65
  "vitest": "^4.1.7",
66
- "@authhero/kysely-adapter": "11.15.0",
67
- "@authhero/widget": "0.34.9"
66
+ "@authhero/kysely-adapter": "11.17.0",
67
+ "@authhero/widget": "0.34.11"
68
68
  },
69
69
  "dependencies": {
70
70
  "@peculiar/x509": "^1.14.0",
@@ -82,8 +82,8 @@
82
82
  "qrcode": "^1.5.4",
83
83
  "sanitize-html": "^2.17.4",
84
84
  "xstate": "^5.31.1",
85
- "@authhero/adapter-interfaces": "3.9.0",
86
- "@authhero/proxy": "0.8.5",
85
+ "@authhero/adapter-interfaces": "3.11.0",
86
+ "@authhero/proxy": "0.9.1",
87
87
  "@authhero/saml": "0.4.2"
88
88
  },
89
89
  "peerDependencies": {