@better-auth/oauth-provider 1.7.10 → 1.8.0-beta.1

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.
@@ -1,9 +1,10 @@
1
- import { B as Prompt, E as OAuthConsent, F as OAuthResource, H as Scope, O as OAuthExtensionGrantHandlerInput, R as OAuthTokenResponse, a as GrantType, j as OAuthOptions, k as OAuthMetadataExtensionInput, l as TokenEndpointAuthMethod, n as AuthServerMetadata, o as OAuthClient, u as TokenType, w as OAuthClientRegistrationResponse, y as OAuthClientAdministrativeResponse } from "./oauth-DXiqbRzK.mjs";
2
- import { t as ClientJwks } from "./client-jwks-DY2QBrsl.mjs";
1
+ import { D as OAuthClientRegistrationResponse, F as OAuthMetadataExtensionInput, J as Scope, K as Prompt, L as OAuthOptions, P as OAuthInteractionRequestHandler, V as OAuthResource, W as OAuthTokenResponse, a as GrantType, j as OAuthExtensionGrantHandlerInput, k as OAuthConsent, l as TokenEndpointAuthMethod, n as AuthServerMetadata, o as OAuthClient, tt as clientRegistrationRequestSchema, u as TokenType, x as OAuthClientAdministrativeResponse } from "./oauth-CzT1PvAY.mjs";
3
2
  import * as _$better_call0 from "better-call";
3
+ import { EndpointContext, EndpointOptions, StrictEndpoint } from "better-call";
4
4
  import * as z from "zod";
5
- import * as _$jose from "jose";
6
5
  import * as _$better_auth_plugins0 from "better-auth/plugins";
6
+ import * as _$jose from "jose";
7
+ import { JSONWebKeySet } from "jose";
7
8
  import { DeviceAuthorizationGrant, DeviceAuthorizationPluginOptions } from "better-auth/plugins/device-authorization";
8
9
  import { AuthContext, GenericEndpointContext } from "@better-auth/core";
9
10
  import * as _$better_auth0 from "better-auth";
@@ -24,7 +25,7 @@ declare const DEVICE_CODE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_
24
25
  * polling and atomic-consumption state machine for this handler.
25
26
  */
26
27
  declare function exchangeOAuthDeviceCode(input: OAuthExtensionGrantHandlerInput): Promise<OAuthTokenResponse>;
27
- declare function buildOAuthDeviceGrant(): {
28
+ declare function buildOAuthDeviceGrant(verificationUri: string | undefined): {
28
29
  requestSchemaFields: {
29
30
  client_secret: z.ZodOptional<z.ZodString>;
30
31
  client_assertion: z.ZodOptional<z.ZodString>;
@@ -73,6 +74,22 @@ declare function buildOAuthDeviceGrant(): {
73
74
  type: "string";
74
75
  required: false;
75
76
  };
77
+ referenceId: {
78
+ type: "string";
79
+ required: false;
80
+ };
81
+ authTime: {
82
+ type: "date";
83
+ required: false;
84
+ };
85
+ acr: {
86
+ type: "string";
87
+ required: false;
88
+ };
89
+ amr: {
90
+ type: "string[]";
91
+ required: false;
92
+ };
76
93
  };
77
94
  grants: {
78
95
  "urn:ietf:params:oauth:grant-type:device_code": typeof exchangeOAuthDeviceCode;
@@ -84,7 +101,7 @@ declare function buildOAuthDeviceGrant(): {
84
101
  ctx,
85
102
  request
86
103
  }: {
87
- ctx: _$better_auth0.GenericEndpointContext;
104
+ ctx: GenericEndpointContext;
88
105
  request: _$better_auth_plugins0.DeviceAuthorizationRequest & {
89
106
  client_secret?: string | undefined;
90
107
  client_assertion?: string | undefined;
@@ -98,28 +115,16 @@ declare function buildOAuthDeviceGrant(): {
98
115
  resources: string[] | null;
99
116
  };
100
117
  } | undefined>;
101
- assertSessionRedemption: ({
102
- deviceCode
118
+ assertStandaloneUse: ({
119
+ deviceCode,
120
+ use
103
121
  }: {
104
- ctx: _$better_auth0.GenericEndpointContext;
122
+ ctx: GenericEndpointContext;
105
123
  deviceCode: Record<string, unknown>;
124
+ use: "redeem" | "approve";
106
125
  }) => void;
107
- getVerificationContext: (deviceCode: Record<string, unknown>) => {
108
- resource: string | string[] | undefined;
109
- } | undefined;
110
- verificationOpenAPIProperties: {
111
- resource: {
112
- oneOf: ({
113
- type: string;
114
- items?: undefined;
115
- } | {
116
- type: string;
117
- items: {
118
- type: string;
119
- };
120
- })[];
121
- description: string;
122
- };
126
+ interactionRequests: {
127
+ user_code: OAuthInteractionRequestHandler;
123
128
  };
124
129
  };
125
130
  type OAuthDeviceGrant = ReturnType<typeof buildOAuthDeviceGrant>;
@@ -336,10 +341,10 @@ declare function oauthDeviceAuthorization(options?: OAuthDeviceAuthorizationOpti
336
341
  error: z.ZodObject<{
337
342
  error: z.ZodEnum<{
338
343
  invalid_request: "invalid_request";
339
- authorization_pending: "authorization_pending";
340
- slow_down: "slow_down";
341
344
  expired_token: "expired_token";
342
345
  access_denied: "access_denied";
346
+ authorization_pending: "authorization_pending";
347
+ slow_down: "slow_down";
343
348
  invalid_grant: "invalid_grant";
344
349
  }>;
345
350
  error_description: z.ZodString;
@@ -443,13 +448,11 @@ declare function oauthDeviceAuthorization(options?: OAuthDeviceAuthorizationOpti
443
448
  };
444
449
  };
445
450
  }, {
446
- user_code: string;
447
- status: string;
448
451
  client_id?: string | undefined;
449
452
  scope?: string | undefined;
450
- } & Partial<{
451
- resource: string | string[] | undefined;
452
- }>>;
453
+ user_code: string;
454
+ status: string;
455
+ }>;
453
456
  deviceApprove: _$better_call0.StrictEndpoint<"/device/approve", {
454
457
  method: "POST";
455
458
  body: z.ZodObject<{
@@ -460,7 +463,6 @@ declare function oauthDeviceAuthorization(options?: OAuthDeviceAuthorizationOpti
460
463
  invalid_request: "invalid_request";
461
464
  expired_token: "expired_token";
462
465
  access_denied: "access_denied";
463
- device_code_already_processed: "device_code_already_processed";
464
466
  unauthorized: "unauthorized";
465
467
  }>;
466
468
  error_description: z.ZodString;
@@ -555,7 +557,7 @@ declare function oauthDeviceAuthorization(options?: OAuthDeviceAuthorizationOpti
555
557
  options: {
556
558
  grant: DeviceAuthorizationGrant<Readonly<{
557
559
  [k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
558
- }>, Record<string, unknown>> | undefined;
560
+ }>> | undefined;
559
561
  expiresIn: _$better_auth_plugins0.TimeString;
560
562
  interval: _$better_auth_plugins0.TimeString;
561
563
  deviceCodeLength: number;
@@ -613,6 +615,63 @@ interface OAuthEndpointRedirectContext<Ctx = unknown> {
613
615
  ctx: Ctx;
614
616
  }
615
617
  type OAuthRedirectOnError<Ctx = unknown, Result = unknown> = (result: OAuthEndpointRedirectContext<Ctx>) => Result | Promise<Result>;
618
+ type ValidationErrorHookArgs = {
619
+ message: string;
620
+ issues: readonly z.core.$ZodIssue[];
621
+ };
622
+ type ValidationErrorHook = (args: ValidationErrorHookArgs) => unknown;
623
+ interface OAuthEndpointExtras<Ctx = EndpointContext<string, EndpointOptions, AuthContext>> {
624
+ /**
625
+ * Invoked when validation fails. Presence switches delivery from a JSON
626
+ * `APIError` envelope to this callback, which receives the request
627
+ * context so it can compute an RP redirect URL from already-parsed query
628
+ * params.
629
+ */
630
+ redirectOnError?: OAuthRedirectOnError<Ctx>;
631
+ /**
632
+ * Forwarded to `better-call` and awaited before the RFC envelope is
633
+ * synthesized, so callers can observe or transform issues.
634
+ */
635
+ onValidationError?: ValidationErrorHook;
636
+ /**
637
+ * First-path-segment → RFC code mapping. Nested failures like
638
+ * `jwks.keys[0].n` collapse to `jwks`; lift a nested schema to a
639
+ * top-level field when per-sub-field codes are required.
640
+ */
641
+ errorCodesByField?: Record<string, OAuthFieldErrorCode>;
642
+ /**
643
+ * RFC code returned when no `errorCodesByField` entry matches or the failure is
644
+ * structurally malformed (wrong type, duplicated params, bad format).
645
+ * @default "invalid_request"
646
+ */
647
+ defaultError?: OAuthErrorCode;
648
+ /**
649
+ * Re-reads the raw form before validation, because the form parser keeps
650
+ * only the last value of a repeated key. Empty values count as omitted and
651
+ * repeated parameters return `invalid_request` (RFC 6749 §3.2), except the
652
+ * names in `repeatable`, which become arrays. Enables `cloneRequest`.
653
+ */
654
+ formParams?: {
655
+ repeatable?: readonly string[];
656
+ };
657
+ }
658
+ /**
659
+ * Wraps `createAuthEndpoint` so zod schemas stay the single source of truth
660
+ * for body/query shape while validation failures serialize as the RFC 6749
661
+ * §5.2 error envelope `{ error, error_description }`.
662
+ *
663
+ * A failing issue is routed by its first path segment via `errorCodesByField`:
664
+ * - missing required (`invalid_type` + "received undefined") → `.missing`
665
+ * - unsupported value (`invalid_value`) or a value a refinement rejected
666
+ * (`custom`, also inside a union branch) → `.invalid`
667
+ * - anything else (wrong type, duplicated params, bad format) → `defaultError`
668
+ *
669
+ * For enum fields that need to distinguish missing from unsupported, compose
670
+ * as `z.string().pipe(z.enum([...]))` so duplicated params fail the outer
671
+ * `z.string()` as `invalid_type` instead of masquerading as an unsupported
672
+ * enum value.
673
+ */
674
+ declare function createOAuthEndpoint<Path extends string, Options extends EndpointOptions, R>(path: Path, options: Options & OAuthEndpointExtras<EndpointContext<Path, Options, AuthContext>>, handler: (ctx: EndpointContext<Path, Options, AuthContext>) => Promise<R>): StrictEndpoint<Path, Options, R>;
616
675
  //#endregion
617
676
  //#region src/authorize.d.ts
618
677
  type OAuthRedirectResult = {
@@ -624,6 +683,27 @@ type OAuthRedirectResult = {
624
683
  */
625
684
  declare function getIssuer(ctx: GenericEndpointContext, opts: OAuthOptions<Scope[]>): string;
626
685
  //#endregion
686
+ //#region src/client-jwks.d.ts
687
+ /** A client's inline public JWK Set, as registration and key rotation accept it. */
688
+ type ClientJwks = NonNullable<OAuthClient["jwks"]>;
689
+ type PublicClientJwksValidationResult = {
690
+ valid: true;
691
+ jwks: JSONWebKeySet;
692
+ } | {
693
+ valid: false;
694
+ error: "jwks must be an RFC 7517 JWK Set object with a non-empty keys array" | "jwks must contain only public asymmetric keys" | "jwks keys must be supported public JWKs with required key parameters" | "jwks key alg must be supported for private_key_jwt and compatible with its key type and signing curve";
695
+ };
696
+ /**
697
+ * Validates an OAuth client's public asymmetric JWK set.
698
+ *
699
+ * This boundary accepts only the RFC 7517 `{ keys: [...] }` representation.
700
+ * It performs no I/O and returns the validated set for downstream JOSE
701
+ * verification.
702
+ *
703
+ * @internal
704
+ */
705
+ declare function validatePublicClientJwks(input: unknown): PublicClientJwksValidationResult;
706
+ //#endregion
627
707
  //#region src/oauth.d.ts
628
708
  /**
629
709
  * Default scopes advertised and accepted when a configuration sets none. Shared
@@ -771,6 +851,8 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
771
851
  backchannel_logout_supported?: boolean | undefined;
772
852
  backchannel_logout_session_supported?: boolean | undefined;
773
853
  dpop_signing_alg_values_supported?: _$better_auth_plugins0.JWSAlgorithms[] | undefined;
854
+ frontchannel_logout_supported?: boolean | undefined;
855
+ frontchannel_logout_session_supported?: boolean | undefined;
774
856
  id_token_signing_alg_values_supported: _$better_auth_plugins0.JWSAlgorithms[] | ["HS256"];
775
857
  }>;
776
858
  oauth2Authorize: _$better_call0.StrictEndpoint<"/oauth2/authorize", {
@@ -792,17 +874,6 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
792
874
  items?: undefined;
793
875
  };
794
876
  description: string;
795
- } | {
796
- name: string;
797
- in: "query";
798
- required: true;
799
- schema: {
800
- type: "string";
801
- format?: undefined;
802
- minimum?: undefined;
803
- items?: undefined;
804
- };
805
- description: string;
806
877
  } | {
807
878
  name: string;
808
879
  in: "query";
@@ -997,7 +1068,9 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
997
1068
  }, OAuthRedirectResult>;
998
1069
  oauth2Token: _$better_call0.StrictEndpoint<"/oauth2/token", {
999
1070
  method: "POST";
1000
- cloneRequest: true;
1071
+ formParams: {
1072
+ repeatable: string[];
1073
+ };
1001
1074
  body: z.ZodObject<{
1002
1075
  grant_type: z.ZodString;
1003
1076
  client_id: z.ZodOptional<z.ZodString>;
@@ -1169,7 +1242,7 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
1169
1242
  }>;
1170
1243
  oauth2Introspect: _$better_call0.StrictEndpoint<"/oauth2/introspect", {
1171
1244
  method: "POST";
1172
- cloneRequest: true;
1245
+ formParams: {};
1173
1246
  body: z.ZodObject<{
1174
1247
  client_id: z.ZodOptional<z.ZodString>;
1175
1248
  client_secret: z.ZodOptional<z.ZodString>;
@@ -1302,7 +1375,7 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
1302
1375
  }, _$jose.JWTPayload>;
1303
1376
  oauth2Revoke: _$better_call0.StrictEndpoint<"/oauth2/revoke", {
1304
1377
  method: "POST";
1305
- cloneRequest: true;
1378
+ formParams: {};
1306
1379
  body: z.ZodObject<{
1307
1380
  client_id: z.ZodOptional<z.ZodString>;
1308
1381
  client_secret: z.ZodOptional<z.ZodString>;
@@ -1381,7 +1454,7 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
1381
1454
  };
1382
1455
  };
1383
1456
  };
1384
- }, null | undefined>;
1457
+ }, null>;
1385
1458
  oauth2UserInfo: _$better_call0.StrictEndpoint<"/oauth2/userinfo", {
1386
1459
  method: ("GET" | "POST")[];
1387
1460
  body: z.ZodOptional<z.ZodObject<{
@@ -1548,6 +1621,7 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
1548
1621
  "text/html": {
1549
1622
  schema: {
1550
1623
  type: "string";
1624
+ description: string;
1551
1625
  };
1552
1626
  };
1553
1627
  };
@@ -1569,42 +1643,7 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
1569
1643
  }, Response | OAuthRedirectResult | null>;
1570
1644
  registerOAuthClient: _$better_call0.StrictEndpoint<"/oauth2/register", {
1571
1645
  method: "POST";
1572
- body: z.ZodObject<{
1573
- redirect_uris: z.ZodOptional<z.ZodArray<z.ZodURL>>;
1574
- scope: z.ZodOptional<z.ZodString>;
1575
- client_name: z.ZodOptional<z.ZodString>;
1576
- client_uri: z.ZodOptional<z.ZodString>;
1577
- logo_uri: z.ZodOptional<z.ZodString>;
1578
- contacts: z.ZodOptional<z.ZodArray<z.ZodString>>;
1579
- tos_uri: z.ZodOptional<z.ZodString>;
1580
- policy_uri: z.ZodOptional<z.ZodString>;
1581
- software_id: z.ZodOptional<z.ZodString>;
1582
- software_version: z.ZodOptional<z.ZodString>;
1583
- software_statement: z.ZodOptional<z.ZodString>;
1584
- post_logout_redirect_uris: z.ZodOptional<z.ZodArray<z.ZodURL>>;
1585
- backchannel_logout_uri: z.ZodOptional<z.ZodURL>;
1586
- backchannel_logout_session_required: z.ZodOptional<z.ZodBoolean>;
1587
- token_endpoint_auth_method: z.ZodOptional<z.ZodString>;
1588
- jwks: z.ZodOptional<z.ZodObject<{
1589
- keys: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1590
- }, z.core.$strip>>;
1591
- jwks_uri: z.ZodOptional<z.ZodString>;
1592
- grant_types: z.ZodOptional<z.ZodArray<z.ZodString>>;
1593
- response_types: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1594
- code: "code";
1595
- }>>>;
1596
- application_type: z.ZodOptional<z.ZodEnum<{
1597
- web: "web";
1598
- native: "native";
1599
- }>>;
1600
- subject_type: z.ZodOptional<z.ZodEnum<{
1601
- public: "public";
1602
- pairwise: "pairwise";
1603
- }>>;
1604
- dpop_bound_access_tokens: z.ZodOptional<z.ZodBoolean>;
1605
- resources: z.ZodOptional<z.ZodArray<z.ZodString>>;
1606
- skip_consent: z.ZodOptional<z.ZodNever>;
1607
- }, z.core.$strip>;
1646
+ body: typeof clientRegistrationRequestSchema;
1608
1647
  errorCodesByField: {
1609
1648
  redirect_uris: "invalid_redirect_uri";
1610
1649
  post_logout_redirect_uris: "invalid_redirect_uri";
@@ -1712,6 +1751,15 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
1712
1751
  type: string;
1713
1752
  description: string;
1714
1753
  };
1754
+ frontchannel_logout_uri: {
1755
+ type: string;
1756
+ format: string;
1757
+ description: string;
1758
+ };
1759
+ frontchannel_logout_session_required: {
1760
+ type: string;
1761
+ description: string;
1762
+ };
1715
1763
  token_endpoint_auth_method: {
1716
1764
  type: string;
1717
1765
  description: string;
@@ -1775,6 +1823,8 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
1775
1823
  post_logout_redirect_uris: z.ZodOptional<z.ZodArray<z.ZodURL>>;
1776
1824
  backchannel_logout_uri: z.ZodOptional<z.ZodURL>;
1777
1825
  backchannel_logout_session_required: z.ZodOptional<z.ZodBoolean>;
1826
+ frontchannel_logout_uri: z.ZodOptional<z.ZodURL>;
1827
+ frontchannel_logout_session_required: z.ZodOptional<z.ZodBoolean>;
1778
1828
  token_endpoint_auth_method: z.ZodOptional<z.ZodString>;
1779
1829
  application_type: z.ZodOptional<z.ZodEnum<{
1780
1830
  web: "web";
@@ -1989,6 +2039,8 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
1989
2039
  post_logout_redirect_uris: z.ZodOptional<z.ZodArray<z.ZodURL>>;
1990
2040
  backchannel_logout_uri: z.ZodOptional<z.ZodURL>;
1991
2041
  backchannel_logout_session_required: z.ZodOptional<z.ZodBoolean>;
2042
+ frontchannel_logout_uri: z.ZodOptional<z.ZodURL>;
2043
+ frontchannel_logout_session_required: z.ZodOptional<z.ZodBoolean>;
1992
2044
  token_endpoint_auth_method: z.ZodOptional<z.ZodString>;
1993
2045
  application_type: z.ZodOptional<z.ZodEnum<{
1994
2046
  web: "web";
@@ -2268,8 +2320,10 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
2268
2320
  software_version: z.ZodOptional<z.ZodString>;
2269
2321
  software_statement: z.ZodOptional<z.ZodString>;
2270
2322
  post_logout_redirect_uris: z.ZodOptional<z.ZodArray<z.ZodURL>>;
2271
- backchannel_logout_uri: z.ZodOptional<z.ZodURL>;
2323
+ backchannel_logout_uri: z.ZodOptional<z.ZodNullable<z.ZodURL>>;
2272
2324
  backchannel_logout_session_required: z.ZodOptional<z.ZodBoolean>;
2325
+ frontchannel_logout_uri: z.ZodOptional<z.ZodNullable<z.ZodURL>>;
2326
+ frontchannel_logout_session_required: z.ZodOptional<z.ZodBoolean>;
2273
2327
  application_type: z.ZodOptional<z.ZodEnum<{
2274
2328
  web: "web";
2275
2329
  native: "native";
@@ -2334,8 +2388,10 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
2334
2388
  software_version: z.ZodOptional<z.ZodString>;
2335
2389
  software_statement: z.ZodOptional<z.ZodString>;
2336
2390
  post_logout_redirect_uris: z.ZodOptional<z.ZodArray<z.ZodURL>>;
2337
- backchannel_logout_uri: z.ZodOptional<z.ZodURL>;
2391
+ backchannel_logout_uri: z.ZodOptional<z.ZodNullable<z.ZodURL>>;
2338
2392
  backchannel_logout_session_required: z.ZodOptional<z.ZodBoolean>;
2393
+ frontchannel_logout_uri: z.ZodOptional<z.ZodNullable<z.ZodURL>>;
2394
+ frontchannel_logout_session_required: z.ZodOptional<z.ZodBoolean>;
2339
2395
  application_type: z.ZodOptional<z.ZodEnum<{
2340
2396
  web: "web";
2341
2397
  native: "native";
@@ -2702,6 +2758,10 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
2702
2758
  type: "string";
2703
2759
  required: false;
2704
2760
  };
2761
+ sectorIdentifier: {
2762
+ type: "string";
2763
+ required: false;
2764
+ };
2705
2765
  scopes: {
2706
2766
  type: "string[]";
2707
2767
  required: false;
@@ -2780,6 +2840,14 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
2780
2840
  type: "boolean";
2781
2841
  required: false;
2782
2842
  };
2843
+ frontchannelLogoutUri: {
2844
+ type: "string";
2845
+ required: false;
2846
+ };
2847
+ frontchannelLogoutSessionRequired: {
2848
+ type: "boolean";
2849
+ required: false;
2850
+ };
2783
2851
  tokenEndpointAuthMethod: {
2784
2852
  type: "string";
2785
2853
  required: false;
@@ -3003,6 +3071,14 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
3003
3071
  type: "date";
3004
3072
  required: false;
3005
3073
  };
3074
+ acr: {
3075
+ type: "string";
3076
+ required: false;
3077
+ };
3078
+ amr: {
3079
+ type: "string[]";
3080
+ required: false;
3081
+ };
3006
3082
  confirmation: {
3007
3083
  type: "json";
3008
3084
  required: false;
@@ -3180,4 +3256,4 @@ declare const oauthProvider: <O extends OAuthOptions<Scope[]>>(options: O) => {
3180
3256
  })[];
3181
3257
  };
3182
3258
  //#endregion
3183
- export { OAuthEndpointErrorResult as a, OAuthFieldErrorCode as c, DEVICE_CODE_GRANT_TYPE as d, OAuthDeviceAuthorizationOptions as f, getIssuer as i, OAuthFieldErrorCodeMap as l, getOAuthProviderState as n, OAuthEndpointRedirectContext as o, oauthDeviceAuthorization as p, oauthProvider as r, OAuthErrorCode as s, DEFAULT_OAUTH_SCOPES as t, OAuthRedirectOnError as u };
3259
+ export { validatePublicClientJwks as a, OAuthEndpointRedirectContext as c, OAuthFieldErrorCodeMap as d, OAuthRedirectOnError as f, oauthDeviceAuthorization as g, OAuthDeviceAuthorizationOptions as h, PublicClientJwksValidationResult as i, OAuthErrorCode as l, DEVICE_CODE_GRANT_TYPE as m, getOAuthProviderState as n, getIssuer as o, createOAuthEndpoint as p, oauthProvider as r, OAuthEndpointErrorResult as s, DEFAULT_OAUTH_SCOPES as t, OAuthFieldErrorCode as u };