better-auth 1.7.12 → 1.7.13
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.
- package/dist/adapters/index.d.mts +5 -10
- package/dist/api/dispatch.d.mts +3 -5
- package/dist/api/dispatch.mjs +6 -4
- package/dist/api/index.d.mts +506 -508
- package/dist/api/index.mjs +35 -34
- package/dist/api/middlewares/authorization.d.mts +15 -12
- package/dist/api/middlewares/authorization.mjs +2 -1
- package/dist/api/middlewares/index.d.mts +2 -1
- package/dist/api/middlewares/origin-check.d.mts +4 -7
- package/dist/api/routes/account.d.mts +11 -15
- package/dist/api/routes/account.mjs +7 -4
- package/dist/api/routes/callback.d.mts +2 -5
- package/dist/api/routes/callback.mjs +4 -2
- package/dist/api/routes/email-verification.d.mts +7 -12
- package/dist/api/routes/error.d.mts +2 -5
- package/dist/api/routes/index.d.mts +2 -1
- package/dist/api/routes/ok.d.mts +2 -5
- package/dist/api/routes/password.d.mts +8 -11
- package/dist/api/routes/password.mjs +3 -2
- package/dist/api/routes/session.d.mts +26 -29
- package/dist/api/routes/sign-in.d.mts +4 -6
- package/dist/api/routes/sign-out.d.mts +2 -5
- package/dist/api/routes/sign-up.d.mts +4 -6
- package/dist/api/routes/update-session.d.mts +4 -6
- package/dist/api/routes/update-user.d.mts +14 -16
- package/dist/api/routes/update-user.mjs +1 -1
- package/dist/api/state/oauth.d.mts +0 -3
- package/dist/api/state/oauth.mjs +2 -1
- package/dist/auth/full.d.mts +3 -4
- package/dist/auth/minimal.d.mts +3 -3
- package/dist/client/broadcast-channel.d.mts +6 -7
- package/dist/client/config.d.mts +15 -19
- package/dist/client/config.mjs +2 -2
- package/dist/client/equality.d.mts +3 -5
- package/dist/client/focus-manager.d.mts +4 -5
- package/dist/client/index.d.mts +8 -7
- package/dist/client/lynx/index.d.mts +6 -7
- package/dist/client/lynx/index.mjs +3 -2
- package/dist/client/lynx/lynx-store.d.mts +3 -4
- package/dist/client/online-manager.d.mts +4 -5
- package/dist/client/parser.d.mts +9 -5
- package/dist/client/path-to-object.d.mts +13 -14
- package/dist/client/plugins/index.d.mts +1 -1
- package/dist/client/plugins/infer-plugin.d.mts +2 -4
- package/dist/client/query.d.mts +4 -6
- package/dist/client/react/index.d.mts +6 -7
- package/dist/client/react/index.mjs +3 -2
- package/dist/client/react/react-store.d.mts +3 -4
- package/dist/client/session-atom.d.mts +4 -4
- package/dist/client/session-refresh.d.mts +3 -5
- package/dist/client/solid/index.d.mts +6 -7
- package/dist/client/solid/index.mjs +3 -2
- package/dist/client/svelte/index.d.mts +6 -7
- package/dist/client/svelte/index.mjs +3 -2
- package/dist/client/types.d.mts +11 -11
- package/dist/client/vanilla.d.mts +4 -5
- package/dist/client/vanilla.mjs +3 -2
- package/dist/client/vue/index.d.mts +6 -7
- package/dist/client/vue/index.mjs +3 -2
- package/dist/context/create-context.mjs +7 -7
- package/dist/context/helpers.mjs +9 -7
- package/dist/cookies/cookie-utils.d.mts +13 -13
- package/dist/cookies/cookie-utils.mjs +1 -3
- package/dist/cookies/index.d.mts +17 -18
- package/dist/cookies/index.mjs +11 -7
- package/dist/cookies/jwt.mjs +2 -1
- package/dist/cookies/session-store.d.mts +6 -5
- package/dist/cookies/session-store.mjs +3 -2
- package/dist/crypto/buffer.d.mts +2 -3
- package/dist/crypto/index.d.mts +9 -16
- package/dist/crypto/index.mjs +2 -1
- package/dist/crypto/jwt.d.mts +5 -7
- package/dist/crypto/jwt.mjs +2 -1
- package/dist/crypto/password.d.mts +1 -5
- package/dist/crypto/random.d.mts +2 -3
- package/dist/db/adapter-base.d.mts +2 -4
- package/dist/db/adapter-kysely.d.mts +2 -4
- package/dist/db/field-converter.d.mts +3 -5
- package/dist/db/field.d.mts +11 -12
- package/dist/db/get-migration.d.mts +4 -8
- package/dist/db/get-migration.mjs +22 -22
- package/dist/db/get-schema.d.mts +2 -4
- package/dist/db/internal-adapter.d.mts +2 -4
- package/dist/db/internal-adapter.mjs +6 -4
- package/dist/db/revoke-unproven-account-access.d.mts +3 -4
- package/dist/db/schema.d.mts +15 -16
- package/dist/db/schema.mjs +6 -3
- package/dist/db/to-zod.d.mts +5 -9
- package/dist/db/with-hooks.d.mts +3 -5
- package/dist/index.d.mts +4 -3
- package/dist/integrations/next-js.d.mts +7 -11
- package/dist/integrations/node.d.mts +5 -7
- package/dist/integrations/node.mjs +4 -2
- package/dist/integrations/solid-start.d.mts +2 -3
- package/dist/integrations/svelte-kit.d.mts +6 -14
- package/dist/integrations/tanstack-start-solid.d.mts +4 -8
- package/dist/integrations/tanstack-start.d.mts +4 -8
- package/dist/oauth2/link-account.d.mts +5 -11
- package/dist/oauth2/link-account.mjs +12 -6
- package/dist/oauth2/state.d.mts +5 -7
- package/dist/oauth2/state.mjs +1 -1
- package/dist/oauth2/utils.d.mts +4 -6
- package/dist/package.mjs +1 -1
- package/dist/plugins/access/access.d.mts +4 -6
- package/dist/plugins/access/index.mjs +1 -2
- package/dist/plugins/access/types.d.mts +12 -14
- package/dist/plugins/additional-fields/client.d.mts +2 -4
- package/dist/plugins/admin/access/index.mjs +1 -2
- package/dist/plugins/admin/access/statement.d.mts +7 -7
- package/dist/plugins/admin/admin.d.mts +122 -128
- package/dist/plugins/admin/client.d.mts +32 -32
- package/dist/plugins/admin/client.mjs +1 -1
- package/dist/plugins/admin/error-codes.d.mts +25 -28
- package/dist/plugins/admin/index.d.mts +1 -1
- package/dist/plugins/admin/index.mjs +1 -2
- package/dist/plugins/admin/schema.d.mts +3 -4
- package/dist/plugins/admin/types.d.mts +8 -8
- package/dist/plugins/anonymous/client.d.mts +10 -12
- package/dist/plugins/anonymous/client.mjs +1 -1
- package/dist/plugins/anonymous/error-codes.d.mts +10 -13
- package/dist/plugins/anonymous/index.d.mts +17 -21
- package/dist/plugins/anonymous/schema.d.mts +2 -3
- package/dist/plugins/anonymous/types.d.mts +5 -6
- package/dist/plugins/bearer/index.d.mts +7 -11
- package/dist/plugins/captcha/constants.d.mts +2 -3
- package/dist/plugins/captcha/index.d.mts +6 -9
- package/dist/plugins/captcha/types.d.mts +11 -13
- package/dist/plugins/custom-session/client.d.mts +2 -4
- package/dist/plugins/custom-session/index.d.mts +10 -16
- package/dist/plugins/device-authorization/client.d.mts +2 -4
- package/dist/plugins/device-authorization/index.d.mts +39 -44
- package/dist/plugins/device-authorization/index.mjs +10 -9
- package/dist/plugins/device-authorization/routes.d.mts +7 -5
- package/dist/plugins/device-authorization/routes.mjs +6 -5
- package/dist/plugins/device-authorization/schema.d.mts +2 -3
- package/dist/plugins/email-otp/client.d.mts +5 -7
- package/dist/plugins/email-otp/client.mjs +1 -1
- package/dist/plugins/email-otp/error-codes.d.mts +5 -8
- package/dist/plugins/email-otp/index.d.mts +69 -76
- package/dist/plugins/email-otp/otp-token.mjs +19 -7
- package/dist/plugins/email-otp/types.d.mts +2 -4
- package/dist/plugins/generic-oauth/index.d.mts +9 -13
- package/dist/plugins/generic-oauth/index.mjs +6 -4
- package/dist/plugins/generic-oauth/providers/auth0.d.mts +3 -5
- package/dist/plugins/generic-oauth/providers/gumroad.d.mts +3 -5
- package/dist/plugins/generic-oauth/providers/hubspot.d.mts +3 -5
- package/dist/plugins/generic-oauth/providers/hubspot.mjs +2 -1
- package/dist/plugins/generic-oauth/providers/index.d.mts +2 -1
- package/dist/plugins/generic-oauth/providers/keycloak.d.mts +3 -5
- package/dist/plugins/generic-oauth/providers/line.d.mts +3 -5
- package/dist/plugins/generic-oauth/providers/microsoft-entra-id.d.mts +3 -5
- package/dist/plugins/generic-oauth/providers/okta.d.mts +3 -5
- package/dist/plugins/generic-oauth/providers/patreon.d.mts +3 -5
- package/dist/plugins/generic-oauth/providers/slack.d.mts +3 -5
- package/dist/plugins/generic-oauth/providers/yandex.d.mts +3 -5
- package/dist/plugins/generic-oauth/types.d.mts +6 -7
- package/dist/plugins/haveibeenpwned/index.d.mts +7 -11
- package/dist/plugins/index.d.mts +4 -1
- package/dist/plugins/jwt/client.d.mts +2 -3
- package/dist/plugins/jwt/index.d.mts +11 -14
- package/dist/plugins/jwt/index.mjs +1 -1
- package/dist/plugins/jwt/schema.d.mts +2 -3
- package/dist/plugins/jwt/sign.d.mts +9 -8
- package/dist/plugins/jwt/types.d.mts +7 -8
- package/dist/plugins/jwt/utils.d.mts +6 -9
- package/dist/plugins/jwt/verify.d.mts +2 -4
- package/dist/plugins/last-login-method/client.d.mts +3 -4
- package/dist/plugins/last-login-method/index.d.mts +5 -9
- package/dist/plugins/last-login-method/index.mjs +1 -1
- package/dist/plugins/magic-link/client.d.mts +2 -4
- package/dist/plugins/magic-link/index.d.mts +7 -10
- package/dist/plugins/magic-link/index.mjs +20 -17
- package/dist/plugins/multi-session/client.d.mts +3 -5
- package/dist/plugins/multi-session/client.mjs +1 -1
- package/dist/plugins/multi-session/error-codes.d.mts +3 -6
- package/dist/plugins/multi-session/index.d.mts +10 -14
- package/dist/plugins/oauth-popup/client.d.mts +11 -17
- package/dist/plugins/oauth-popup/client.mjs +6 -4
- package/dist/plugins/oauth-popup/constants.d.mts +5 -6
- package/dist/plugins/oauth-popup/error-codes.d.mts +6 -9
- package/dist/plugins/oauth-popup/index.d.mts +11 -15
- package/dist/plugins/oauth-popup/index.mjs +8 -7
- package/dist/plugins/oauth-popup/types.d.mts +4 -6
- package/dist/plugins/oauth-proxy/index.d.mts +11 -15
- package/dist/plugins/oauth-proxy/index.mjs +10 -7
- package/dist/plugins/one-tap/client.d.mts +6 -9
- package/dist/plugins/one-tap/index.d.mts +4 -7
- package/dist/plugins/one-time-token/client.d.mts +2 -3
- package/dist/plugins/one-time-token/index.d.mts +8 -10
- package/dist/plugins/open-api/generator.d.mts +8 -8
- package/dist/plugins/open-api/generator.mjs +5 -5
- package/dist/plugins/open-api/index.d.mts +5 -7
- package/dist/plugins/organization/access/index.mjs +1 -2
- package/dist/plugins/organization/access/statement.d.mts +8 -8
- package/dist/plugins/organization/adapter.d.mts +60 -87
- package/dist/plugins/organization/adapter.mjs +14 -10
- package/dist/plugins/organization/client.d.mts +108 -107
- package/dist/plugins/organization/client.mjs +9 -5
- package/dist/plugins/organization/error-codes.d.mts +61 -64
- package/dist/plugins/organization/has-permission.d.mts +2 -4
- package/dist/plugins/organization/has-permission.mjs +1 -1
- package/dist/plugins/organization/index.d.mts +1 -1
- package/dist/plugins/organization/organization.d.mts +20 -20
- package/dist/plugins/organization/organization.mjs +13 -8
- package/dist/plugins/organization/permission.d.mts +4 -5
- package/dist/plugins/organization/routes/crud-access-control.d.mts +28 -28
- package/dist/plugins/organization/routes/crud-invites.d.mts +64 -65
- package/dist/plugins/organization/routes/crud-invites.mjs +21 -18
- package/dist/plugins/organization/routes/crud-members.d.mts +53 -56
- package/dist/plugins/organization/routes/crud-members.mjs +23 -21
- package/dist/plugins/organization/routes/crud-org.d.mts +63 -65
- package/dist/plugins/organization/routes/crud-org.mjs +4 -2
- package/dist/plugins/organization/routes/crud-team.d.mts +65 -66
- package/dist/plugins/organization/routes/crud-team.mjs +4 -2
- package/dist/plugins/organization/schema.d.mts +33 -33
- package/dist/plugins/organization/schema.mjs +1 -1
- package/dist/plugins/organization/types.d.mts +16 -17
- package/dist/plugins/phone-number/client.d.mts +14 -16
- package/dist/plugins/phone-number/client.mjs +1 -1
- package/dist/plugins/phone-number/error-codes.d.mts +14 -17
- package/dist/plugins/phone-number/index.d.mts +48 -54
- package/dist/plugins/phone-number/schema.d.mts +2 -3
- package/dist/plugins/phone-number/types.d.mts +4 -5
- package/dist/plugins/siwe/client.d.mts +2 -4
- package/dist/plugins/siwe/index.d.mts +7 -9
- package/dist/plugins/siwe/index.mjs +1 -1
- package/dist/plugins/siwe/parse-message.mjs +1 -3
- package/dist/plugins/siwe/schema.d.mts +3 -4
- package/dist/plugins/siwe/types.d.mts +4 -4
- package/dist/plugins/test-utils/auth-helpers.mjs +4 -2
- package/dist/plugins/test-utils/index.d.mts +3 -5
- package/dist/plugins/test-utils/types.d.mts +7 -7
- package/dist/plugins/two-factor/backup-codes/index.d.mts +11 -14
- package/dist/plugins/two-factor/backup-codes/index.mjs +12 -6
- package/dist/plugins/two-factor/client.d.mts +16 -19
- package/dist/plugins/two-factor/client.mjs +1 -1
- package/dist/plugins/two-factor/constant.mjs +1 -1
- package/dist/plugins/two-factor/error-code.d.mts +15 -18
- package/dist/plugins/two-factor/index.d.mts +31 -35
- package/dist/plugins/two-factor/index.mjs +6 -3
- package/dist/plugins/two-factor/otp/index.d.mts +5 -8
- package/dist/plugins/two-factor/otp/index.mjs +159 -154
- package/dist/plugins/two-factor/schema.d.mts +2 -3
- package/dist/plugins/two-factor/totp/index.d.mts +7 -10
- package/dist/plugins/two-factor/totp/index.mjs +153 -148
- package/dist/plugins/two-factor/types.d.mts +6 -7
- package/dist/plugins/username/client.d.mts +12 -14
- package/dist/plugins/username/client.mjs +1 -1
- package/dist/plugins/username/error-codes.d.mts +11 -14
- package/dist/plugins/username/index.d.mts +26 -31
- package/dist/plugins/username/schema.d.mts +7 -10
- package/dist/state.d.mts +4 -5
- package/dist/test-utils/headers.d.mts +2 -3
- package/dist/test-utils/http-test-instance.d.mts +26 -29
- package/dist/test-utils/test-instance.d.mts +7 -6
- package/dist/test-utils/test-instance.mjs +4 -2
- package/dist/types/adapter.d.mts +1 -1
- package/dist/types/api.d.mts +4 -6
- package/dist/types/auth.d.mts +2 -4
- package/dist/types/helper.d.mts +11 -12
- package/dist/types/index.d.mts +2 -2
- package/dist/types/models.d.mts +4 -5
- package/dist/types/plugins.d.mts +7 -8
- package/dist/utils/hide-metadata.d.mts +2 -3
- package/dist/utils/index.d.mts +2 -1
- package/dist/utils/is-api-error.mjs +1 -2
- package/dist/utils/time.d.mts +4 -4
- package/dist/utils/url.d.mts +13 -15
- package/dist/utils/wildcard.mjs +5 -3
- package/package.json +12 -12
|
@@ -3,10 +3,7 @@ import { DeviceCode } from "./schema.mjs";
|
|
|
3
3
|
import { DeviceCodeRedemptionAuthorization, DeviceCodeRedemptionResult, redeemDeviceCode } from "./routes.mjs";
|
|
4
4
|
import { GenericEndpointContext, StandardSchemaV1 } from "@better-auth/core";
|
|
5
5
|
import { DBFieldAttribute } from "@better-auth/core/db";
|
|
6
|
-
import * as _$_better_auth_core_utils_error_codes0 from "@better-auth/core/utils/error-codes";
|
|
7
|
-
import * as _$better_call0 from "better-call";
|
|
8
6
|
import * as z from "zod";
|
|
9
|
-
|
|
10
7
|
//#region src/plugins/device-authorization/index.d.ts
|
|
11
8
|
declare module "@better-auth/core" {
|
|
12
9
|
interface BetterAuthPluginRegistry<AuthOptions, Options> {
|
|
@@ -15,7 +12,7 @@ declare module "@better-auth/core" {
|
|
|
15
12
|
};
|
|
16
13
|
}
|
|
17
14
|
}
|
|
18
|
-
declare const deviceAuthorizationOptionsSchema: z.ZodObject<{
|
|
15
|
+
export declare const deviceAuthorizationOptionsSchema: z.ZodObject<{
|
|
19
16
|
expiresIn: z.ZodDefault<z.ZodCustom<TimeString, TimeString>>;
|
|
20
17
|
interval: z.ZodDefault<z.ZodCustom<TimeString, TimeString>>;
|
|
21
18
|
deviceCodeLength: z.ZodDefault<z.ZodNumber>;
|
|
@@ -57,14 +54,14 @@ declare const deviceAuthorizationOptionsSchema: z.ZodObject<{
|
|
|
57
54
|
} | undefined;
|
|
58
55
|
}>>;
|
|
59
56
|
}, z.core.$strip>;
|
|
60
|
-
type DeviceAuthorizationOptions = z.infer<typeof deviceAuthorizationOptionsSchema>;
|
|
61
|
-
interface DeviceAuthorizationRequest {
|
|
57
|
+
export type DeviceAuthorizationOptions = z.infer<typeof deviceAuthorizationOptionsSchema>;
|
|
58
|
+
export interface DeviceAuthorizationRequest {
|
|
62
59
|
client_id?: string | undefined;
|
|
63
60
|
user_id?: string | undefined;
|
|
64
61
|
scope?: string | undefined;
|
|
65
62
|
}
|
|
66
63
|
/** The client binding and grant-owned fields produced by request authorization. */
|
|
67
|
-
interface DeviceAuthorizationGrantAuthorization {
|
|
64
|
+
export interface DeviceAuthorizationGrantAuthorization {
|
|
68
65
|
/** The client identifier that owns the device code. */
|
|
69
66
|
clientId: string;
|
|
70
67
|
/** Additional grant-owned fields persisted with the device code. */
|
|
@@ -74,7 +71,7 @@ interface DeviceAuthorizationGrantAuthorization {
|
|
|
74
71
|
* A token grant that contributes its request state to device authorization
|
|
75
72
|
* without expanding the standalone plugin's database or endpoint contracts.
|
|
76
73
|
*/
|
|
77
|
-
interface DeviceAuthorizationGrant<RequestFields extends z.ZodRawShape = z.ZodRawShape, VerificationContext extends Record<string, unknown> = Record<string, unknown>> {
|
|
74
|
+
export interface DeviceAuthorizationGrant<RequestFields extends z.ZodRawShape = z.ZodRawShape, VerificationContext extends Record<string, unknown> = Record<string, unknown>> {
|
|
78
75
|
/** Additional request fields accepted only when this grant is configured. */
|
|
79
76
|
requestSchemaFields: RequestFields;
|
|
80
77
|
/** Additional request errors introduced by the grant's protocol extensions. */
|
|
@@ -100,10 +97,11 @@ interface DeviceAuthorizationGrant<RequestFields extends z.ZodRawShape = z.ZodRa
|
|
|
100
97
|
/** OpenAPI properties matching `getVerificationContext()`. */
|
|
101
98
|
verificationOpenAPIProperties?: Record<string, Record<string, unknown>>;
|
|
102
99
|
}
|
|
103
|
-
type DeviceAuthorizationPluginOptions<Grant extends DeviceAuthorizationGrant | undefined = undefined> = Partial<DeviceAuthorizationOptions> & {
|
|
104
|
-
/** Optional token grant that extends the device authorization flow. */
|
|
100
|
+
export type DeviceAuthorizationPluginOptions<Grant extends DeviceAuthorizationGrant | undefined = undefined> = Partial<DeviceAuthorizationOptions> & {
|
|
101
|
+
/** Optional token grant that extends the device authorization flow. */
|
|
102
|
+
grant?: Grant;
|
|
105
103
|
};
|
|
106
|
-
declare const deviceAuthorization: <Grant extends DeviceAuthorizationGrant | undefined = undefined>(options?: DeviceAuthorizationPluginOptions<Grant>) => {
|
|
104
|
+
export declare const deviceAuthorization: <Grant extends DeviceAuthorizationGrant | undefined = undefined>(options?: DeviceAuthorizationPluginOptions<Grant>) => {
|
|
107
105
|
id: "device-authorization";
|
|
108
106
|
version: string;
|
|
109
107
|
schema: {
|
|
@@ -153,7 +151,7 @@ declare const deviceAuthorization: <Grant extends DeviceAuthorizationGrant | und
|
|
|
153
151
|
};
|
|
154
152
|
};
|
|
155
153
|
endpoints: {
|
|
156
|
-
deviceCode:
|
|
154
|
+
deviceCode: import("better-call").StrictEndpoint<"/device/code", {
|
|
157
155
|
method: "POST";
|
|
158
156
|
cloneRequest: true;
|
|
159
157
|
body: z.ZodObject<(("scope" | "user_id" | "client_id") & keyof (Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
@@ -164,15 +162,15 @@ declare const deviceAuthorization: <Grant extends DeviceAuthorizationGrant | und
|
|
|
164
162
|
scope: z.ZodOptional<z.ZodString>;
|
|
165
163
|
} & ((Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
166
164
|
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
167
|
-
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) extends infer T_1 ? { -readonly [P in keyof T_1]: T_1[P] } : never) : ({
|
|
165
|
+
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) extends (infer T_1) ? { -readonly [P in keyof T_1]: T_1[P]; } : never) : ({
|
|
168
166
|
client_id: z.ZodString;
|
|
169
167
|
user_id: z.ZodOptional<z.ZodString>;
|
|
170
168
|
scope: z.ZodOptional<z.ZodString>;
|
|
171
|
-
} extends infer T_2 extends z.core.util.SomeObject ? { [K in keyof T_2 as K extends keyof (Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
169
|
+
} extends (infer T_2 extends z.core.util.SomeObject) ? { [K in keyof T_2 as K extends keyof (Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
172
170
|
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
173
|
-
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) ? never : K]: T_2[K] } : never) & (((Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
171
|
+
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) ? never : K]: T_2[K]; } : never) & (((Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
174
172
|
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
175
|
-
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) extends infer T_4 ? { -readonly [P in keyof T_4]: T_4[P] } : never) extends infer T_3 extends z.core.util.SomeObject ? { [K_1 in keyof T_3]: T_3[K_1] } : never)) extends infer T ? { [k in keyof T]: T[k] } : never, z.core.$strip> | z.ZodObject<(("scope" | "user_id" | "client_id") & keyof (Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
173
|
+
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) extends (infer T_4) ? { -readonly [P in keyof T_4]: T_4[P]; } : never) extends (infer T_3 extends z.core.util.SomeObject) ? { [K_1 in keyof T_3]: T_3[K_1]; } : never)) extends (infer T) ? { [k in keyof T]: T[k]; } : never, z.core.$strip> | z.ZodObject<(("scope" | "user_id" | "client_id") & keyof (Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
176
174
|
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
177
175
|
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) extends never ? {
|
|
178
176
|
user_id: z.ZodOptional<z.ZodString>;
|
|
@@ -180,27 +178,24 @@ declare const deviceAuthorization: <Grant extends DeviceAuthorizationGrant | und
|
|
|
180
178
|
client_id: z.ZodOptional<z.ZodString>;
|
|
181
179
|
} & ((Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
182
180
|
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
183
|
-
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) extends infer T_6 ? { -readonly [P in keyof T_6]: T_6[P] } : never) : ({
|
|
181
|
+
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) extends (infer T_6) ? { -readonly [P in keyof T_6]: T_6[P]; } : never) : ({
|
|
184
182
|
user_id: z.ZodOptional<z.ZodString>;
|
|
185
183
|
scope: z.ZodOptional<z.ZodString>;
|
|
186
184
|
client_id: z.ZodOptional<z.ZodString>;
|
|
187
|
-
} extends infer T_7 extends z.core.util.SomeObject ? { [K_2 in keyof T_7 as K_2 extends keyof (Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
185
|
+
} extends (infer T_7 extends z.core.util.SomeObject) ? { [K_2 in keyof T_7 as K_2 extends keyof (Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
188
186
|
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
189
|
-
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) ? never : K_2]: T_7[K_2] } : never) & (((Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
187
|
+
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) ? never : K_2]: T_7[K_2]; } : never) & (((Grant extends DeviceAuthorizationGrant<infer RequestFields extends Readonly<{
|
|
190
188
|
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
191
|
-
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) extends infer T_9 ? { -readonly [P in keyof T_9]: T_9[P] } : never) extends infer T_8 extends z.core.util.SomeObject ? { [K_1 in keyof T_8]: T_8[K_1] } : never)) extends infer T_5 ? { [k_1 in keyof T_5]: T_5[k_1] } : never, z.core.$strip>;
|
|
189
|
+
}>, Record<string, unknown>> ? RequestFields : Record<never, never>) extends (infer T_9) ? { -readonly [P in keyof T_9]: T_9[P]; } : never) extends (infer T_8 extends z.core.util.SomeObject) ? { [K_1 in keyof T_8]: T_8[K_1]; } : never)) extends (infer T_5) ? { [k_1 in keyof T_5]: T_5[k_1]; } : never, z.core.$strip>;
|
|
192
190
|
error: z.ZodObject<{
|
|
193
191
|
error: z.ZodEnum<{ [k_3 in (readonly ["invalid_request", "invalid_client", "unauthorized_client", "invalid_scope", ...Grant extends {
|
|
194
192
|
requestErrorCodes: infer ErrorCodes extends readonly string[];
|
|
195
|
-
} ? ErrorCodes : readonly [], "server_error"])[number]]: k_3 } extends infer T_10 ? { [k_2 in keyof T_10]: T_10[k_2] } : never>;
|
|
193
|
+
} ? ErrorCodes : readonly [], "server_error"])[number]]: k_3; } extends (infer T_10) ? { [k_2 in keyof T_10]: T_10[k_2]; } : never>;
|
|
196
194
|
error_description: z.ZodString;
|
|
197
195
|
}, z.core.$strip>;
|
|
198
|
-
onValidationError: ({
|
|
199
|
-
issues,
|
|
200
|
-
message
|
|
201
|
-
}: {
|
|
196
|
+
onValidationError: ({ issues, message }: {
|
|
202
197
|
message: string;
|
|
203
|
-
issues: readonly
|
|
198
|
+
issues: readonly import("better-call").StandardSchemaV1.Issue[];
|
|
204
199
|
}) => never;
|
|
205
200
|
metadata: {
|
|
206
201
|
noStore: boolean;
|
|
@@ -297,7 +292,7 @@ declare const deviceAuthorization: <Grant extends DeviceAuthorizationGrant | und
|
|
|
297
292
|
expires_in: number;
|
|
298
293
|
interval: number;
|
|
299
294
|
}>;
|
|
300
|
-
deviceToken:
|
|
295
|
+
deviceToken: import("better-call").StrictEndpoint<"/device/token", {
|
|
301
296
|
method: "POST";
|
|
302
297
|
body: z.ZodObject<{
|
|
303
298
|
grant_type: z.ZodLiteral<"urn:ietf:params:oauth:grant-type:device_code">;
|
|
@@ -366,7 +361,7 @@ declare const deviceAuthorization: <Grant extends DeviceAuthorizationGrant | und
|
|
|
366
361
|
expires_in: number;
|
|
367
362
|
scope: string;
|
|
368
363
|
}>;
|
|
369
|
-
deviceVerify:
|
|
364
|
+
deviceVerify: import("better-call").StrictEndpoint<"/device", {
|
|
370
365
|
method: "GET";
|
|
371
366
|
query: z.ZodObject<{
|
|
372
367
|
user_code: z.ZodString;
|
|
@@ -421,7 +416,7 @@ declare const deviceAuthorization: <Grant extends DeviceAuthorizationGrant | und
|
|
|
421
416
|
} & Partial<Grant extends DeviceAuthorizationGrant<infer _RequestFields extends Readonly<{
|
|
422
417
|
[k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
423
418
|
}>, infer VerificationContext extends Record<string, unknown>> ? VerificationContext : Record<never, never>>>;
|
|
424
|
-
deviceApprove:
|
|
419
|
+
deviceApprove: import("better-call").StrictEndpoint<"/device/approve", {
|
|
425
420
|
method: "POST";
|
|
426
421
|
body: z.ZodObject<{
|
|
427
422
|
userCode: z.ZodString;
|
|
@@ -462,7 +457,7 @@ declare const deviceAuthorization: <Grant extends DeviceAuthorizationGrant | und
|
|
|
462
457
|
}, {
|
|
463
458
|
success: boolean;
|
|
464
459
|
}>;
|
|
465
|
-
deviceDeny:
|
|
460
|
+
deviceDeny: import("better-call").StrictEndpoint<"/device/deny", {
|
|
466
461
|
method: "POST";
|
|
467
462
|
body: z.ZodObject<{
|
|
468
463
|
userCode: z.ZodString;
|
|
@@ -509,19 +504,19 @@ declare const deviceAuthorization: <Grant extends DeviceAuthorizationGrant | und
|
|
|
509
504
|
max: number;
|
|
510
505
|
}[];
|
|
511
506
|
$ERROR_CODES: {
|
|
512
|
-
USER_NOT_FOUND:
|
|
513
|
-
FAILED_TO_CREATE_SESSION:
|
|
514
|
-
INVALID_DEVICE_CODE:
|
|
515
|
-
EXPIRED_DEVICE_CODE:
|
|
516
|
-
EXPIRED_USER_CODE:
|
|
517
|
-
AUTHORIZATION_PENDING:
|
|
518
|
-
ACCESS_DENIED:
|
|
519
|
-
INVALID_USER_CODE:
|
|
520
|
-
DEVICE_CODE_ALREADY_PROCESSED:
|
|
521
|
-
DEVICE_CODE_NOT_CLAIMED:
|
|
522
|
-
POLLING_TOO_FREQUENTLY:
|
|
523
|
-
INVALID_DEVICE_CODE_STATUS:
|
|
524
|
-
AUTHENTICATION_REQUIRED:
|
|
507
|
+
USER_NOT_FOUND: import("@better-auth/core/utils/error-codes").RawError<"USER_NOT_FOUND">;
|
|
508
|
+
FAILED_TO_CREATE_SESSION: import("@better-auth/core/utils/error-codes").RawError<"FAILED_TO_CREATE_SESSION">;
|
|
509
|
+
INVALID_DEVICE_CODE: import("@better-auth/core/utils/error-codes").RawError<"INVALID_DEVICE_CODE">;
|
|
510
|
+
EXPIRED_DEVICE_CODE: import("@better-auth/core/utils/error-codes").RawError<"EXPIRED_DEVICE_CODE">;
|
|
511
|
+
EXPIRED_USER_CODE: import("@better-auth/core/utils/error-codes").RawError<"EXPIRED_USER_CODE">;
|
|
512
|
+
AUTHORIZATION_PENDING: import("@better-auth/core/utils/error-codes").RawError<"AUTHORIZATION_PENDING">;
|
|
513
|
+
ACCESS_DENIED: import("@better-auth/core/utils/error-codes").RawError<"ACCESS_DENIED">;
|
|
514
|
+
INVALID_USER_CODE: import("@better-auth/core/utils/error-codes").RawError<"INVALID_USER_CODE">;
|
|
515
|
+
DEVICE_CODE_ALREADY_PROCESSED: import("@better-auth/core/utils/error-codes").RawError<"DEVICE_CODE_ALREADY_PROCESSED">;
|
|
516
|
+
DEVICE_CODE_NOT_CLAIMED: import("@better-auth/core/utils/error-codes").RawError<"DEVICE_CODE_NOT_CLAIMED">;
|
|
517
|
+
POLLING_TOO_FREQUENTLY: import("@better-auth/core/utils/error-codes").RawError<"POLLING_TOO_FREQUENTLY">;
|
|
518
|
+
INVALID_DEVICE_CODE_STATUS: import("@better-auth/core/utils/error-codes").RawError<"INVALID_DEVICE_CODE_STATUS">;
|
|
519
|
+
AUTHENTICATION_REQUIRED: import("@better-auth/core/utils/error-codes").RawError<"AUTHENTICATION_REQUIRED">;
|
|
525
520
|
};
|
|
526
521
|
options: {
|
|
527
522
|
grant: DeviceAuthorizationGrant<Readonly<{
|
|
@@ -555,4 +550,4 @@ declare const deviceAuthorization: <Grant extends DeviceAuthorizationGrant | und
|
|
|
555
550
|
};
|
|
556
551
|
};
|
|
557
552
|
//#endregion
|
|
558
|
-
export {
|
|
553
|
+
export { type DeviceCode, type DeviceCodeRedemptionAuthorization, type DeviceCodeRedemptionResult, type TimeString, type ms, redeemDeviceCode, type sec };
|
|
@@ -28,12 +28,12 @@ const deviceAuthorizationOptionsSchema = z.object({
|
|
|
28
28
|
verificationUri: z.string().optional().describe("The URI where users verify their device code. Can be an absolute URL (https://example.com/device) or relative path (/custom-path). This will be returned as verification_uri in the device code response. If not provided, defaults to /device."),
|
|
29
29
|
schema: z.custom(() => true).optional()
|
|
30
30
|
});
|
|
31
|
-
const deviceAuthorizationRequestFields = new Set([
|
|
31
|
+
const deviceAuthorizationRequestFields = /* @__PURE__ */ new Set([
|
|
32
32
|
"client_id",
|
|
33
33
|
"user_id",
|
|
34
34
|
"scope"
|
|
35
35
|
]);
|
|
36
|
-
const deviceVerificationResponseFields = new Set([
|
|
36
|
+
const deviceVerificationResponseFields = /* @__PURE__ */ new Set([
|
|
37
37
|
"user_code",
|
|
38
38
|
"status",
|
|
39
39
|
"client_id",
|
|
@@ -52,16 +52,17 @@ const deviceAuthorization = (options = {}) => {
|
|
|
52
52
|
const grant = configuredGrant;
|
|
53
53
|
const opts = deviceAuthorizationOptionsSchema.parse(deviceAuthorizationOptions);
|
|
54
54
|
assertGrantFieldsAreAdditional(grant);
|
|
55
|
+
const grantSchema = { deviceCode: {
|
|
56
|
+
...schema.deviceCode,
|
|
57
|
+
fields: {
|
|
58
|
+
...schema.deviceCode.fields,
|
|
59
|
+
...grant?.deviceCodeSchemaFields
|
|
60
|
+
}
|
|
61
|
+
} };
|
|
55
62
|
return {
|
|
56
63
|
id: "device-authorization",
|
|
57
64
|
version: PACKAGE_VERSION,
|
|
58
|
-
schema: mergeSchema(
|
|
59
|
-
...schema.deviceCode,
|
|
60
|
-
fields: {
|
|
61
|
-
...schema.deviceCode.fields,
|
|
62
|
-
...grant?.deviceCodeSchemaFields
|
|
63
|
-
}
|
|
64
|
-
} }, options.schema),
|
|
65
|
+
schema: mergeSchema(grantSchema, options.schema),
|
|
65
66
|
endpoints: {
|
|
66
67
|
deviceCode: deviceCode(opts, grant),
|
|
67
68
|
deviceToken: deviceToken(opts, grant),
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { Where } from "../../types/adapter.mjs";
|
|
2
2
|
import { User } from "../../types/models.mjs";
|
|
3
|
+
import "../../types/index.mjs";
|
|
3
4
|
import { DeviceCode } from "./schema.mjs";
|
|
5
|
+
import "./index.mjs";
|
|
4
6
|
import { GenericEndpointContext } from "@better-auth/core";
|
|
7
|
+
import "zod";
|
|
5
8
|
//#region src/plugins/device-authorization/routes.d.ts
|
|
6
|
-
interface DeviceCodeRedemptionAuthorization<AuthorizationContext> {
|
|
9
|
+
export interface DeviceCodeRedemptionAuthorization<AuthorizationContext> {
|
|
7
10
|
/** Additional ownership predicate used by the atomic claim. */
|
|
8
11
|
ownershipWhere: Where;
|
|
9
12
|
/** Issuer-specific state that survives until token issuance. */
|
|
10
13
|
context: AuthorizationContext;
|
|
11
14
|
}
|
|
12
|
-
interface DeviceCodeRedemptionResult<DeviceCodeFields extends Record<string, unknown>, AuthorizationContext, RedemptionContext> {
|
|
15
|
+
export interface DeviceCodeRedemptionResult<DeviceCodeFields extends Record<string, unknown>, AuthorizationContext, RedemptionContext> {
|
|
13
16
|
claimedDeviceCode: DeviceCode & DeviceCodeFields & {
|
|
14
17
|
userId: string;
|
|
15
18
|
};
|
|
@@ -22,11 +25,10 @@ interface DeviceCodeRedemptionResult<DeviceCodeFields extends Record<string, unk
|
|
|
22
25
|
* token issuer. Issuers supply ownership checks and grant-specific validation,
|
|
23
26
|
* but cannot bypass expiry, polling, denial, or atomic consumption.
|
|
24
27
|
*/
|
|
25
|
-
declare function redeemDeviceCode<DeviceCodeFields extends Record<string, unknown>, AuthorizationContext, RedemptionContext>(input: {
|
|
28
|
+
export declare function redeemDeviceCode<DeviceCodeFields extends Record<string, unknown>, AuthorizationContext, RedemptionContext>(input: {
|
|
26
29
|
ctx: GenericEndpointContext;
|
|
27
30
|
deviceCode: string;
|
|
28
31
|
authorizeRedemption: (deviceCode: DeviceCode & DeviceCodeFields) => DeviceCodeRedemptionAuthorization<AuthorizationContext> | Promise<DeviceCodeRedemptionAuthorization<AuthorizationContext>>;
|
|
29
32
|
prepareRedemption: (deviceCode: DeviceCode & DeviceCodeFields, authorizationContext: AuthorizationContext) => RedemptionContext | Promise<RedemptionContext>;
|
|
30
33
|
}): Promise<DeviceCodeRedemptionResult<DeviceCodeFields, AuthorizationContext, RedemptionContext>>;
|
|
31
|
-
//#endregion
|
|
32
|
-
export { DeviceCodeRedemptionAuthorization, DeviceCodeRedemptionResult, redeemDeviceCode };
|
|
34
|
+
//#endregion
|
|
@@ -8,7 +8,7 @@ import * as z from "zod";
|
|
|
8
8
|
//#region src/plugins/device-authorization/routes.ts
|
|
9
9
|
const defaultCharset = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
|
|
10
10
|
const MAX_DEVICE_CODE_GENERATION_ATTEMPTS = 3;
|
|
11
|
-
const UNIQUE_CONSTRAINT_ERROR_IDENTIFIERS = new Set([
|
|
11
|
+
const UNIQUE_CONSTRAINT_ERROR_IDENTIFIERS = /* @__PURE__ */ new Set([
|
|
12
12
|
"11000",
|
|
13
13
|
"1062",
|
|
14
14
|
"2067",
|
|
@@ -108,14 +108,15 @@ const deviceCode = (opts, grant) => {
|
|
|
108
108
|
const requestSchema = (grant ? deviceCodeBodySchema.extend({ client_id: z.string().optional() }) : deviceCodeBodySchema).extend(requestFields);
|
|
109
109
|
const requestErrorCodes = [...deviceCodeBaseErrorCodes, ...grant?.requestErrorCodes ?? []];
|
|
110
110
|
const endpointErrorCodes = [...requestErrorCodes, "server_error"];
|
|
111
|
+
const requestErrorSchema = z.object({
|
|
112
|
+
error: z.enum(endpointErrorCodes).meta({ description: "Error code" }),
|
|
113
|
+
error_description: z.string().meta({ description: "Detailed error description" })
|
|
114
|
+
});
|
|
111
115
|
return createAuthEndpoint("/device/code", {
|
|
112
116
|
method: "POST",
|
|
113
117
|
cloneRequest: true,
|
|
114
118
|
body: requestSchema,
|
|
115
|
-
error:
|
|
116
|
-
error: z.enum(endpointErrorCodes).meta({ description: "Error code" }),
|
|
117
|
-
error_description: z.string().meta({ description: "Detailed error description" })
|
|
118
|
-
}),
|
|
119
|
+
error: requestErrorSchema,
|
|
119
120
|
onValidationError: ({ issues, message }) => {
|
|
120
121
|
grant?.onRequestValidationError?.(issues);
|
|
121
122
|
throw new APIError("BAD_REQUEST", {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as z from "zod";
|
|
2
|
-
|
|
3
2
|
//#region src/plugins/device-authorization/schema.d.ts
|
|
4
3
|
declare const deviceCode: z.ZodObject<{
|
|
5
4
|
id: z.ZodString;
|
|
@@ -13,6 +12,6 @@ declare const deviceCode: z.ZodObject<{
|
|
|
13
12
|
clientId: z.ZodOptional<z.ZodString>;
|
|
14
13
|
scope: z.ZodOptional<z.ZodString>;
|
|
15
14
|
}, z.core.$strip>;
|
|
16
|
-
type DeviceCode = z.infer<typeof deviceCode>;
|
|
15
|
+
export type DeviceCode = z.infer<typeof deviceCode>;
|
|
17
16
|
//#endregion
|
|
18
|
-
export {
|
|
17
|
+
export {};
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { emailOTP } from "./index.mjs";
|
|
2
2
|
import { EMAIL_OTP_ERROR_CODES } from "./error-codes.mjs";
|
|
3
|
-
import * as _$_better_auth_core_utils_error_codes0 from "@better-auth/core/utils/error-codes";
|
|
4
|
-
|
|
5
3
|
//#region src/plugins/email-otp/client.d.ts
|
|
6
|
-
declare const emailOTPClient: () => {
|
|
4
|
+
export declare const emailOTPClient: () => {
|
|
7
5
|
id: "email-otp";
|
|
8
6
|
version: string;
|
|
9
7
|
$InferServerPlugin: ReturnType<typeof emailOTP>;
|
|
@@ -12,10 +10,10 @@ declare const emailOTPClient: () => {
|
|
|
12
10
|
signal: "$sessionSignal";
|
|
13
11
|
}[];
|
|
14
12
|
$ERROR_CODES: {
|
|
15
|
-
OTP_EXPIRED:
|
|
16
|
-
INVALID_OTP:
|
|
17
|
-
TOO_MANY_ATTEMPTS:
|
|
13
|
+
OTP_EXPIRED: import("@better-auth/core/utils/error-codes").RawError<"OTP_EXPIRED">;
|
|
14
|
+
INVALID_OTP: import("@better-auth/core/utils/error-codes").RawError<"INVALID_OTP">;
|
|
15
|
+
TOO_MANY_ATTEMPTS: import("@better-auth/core/utils/error-codes").RawError<"TOO_MANY_ATTEMPTS">;
|
|
18
16
|
};
|
|
19
17
|
};
|
|
20
18
|
//#endregion
|
|
21
|
-
export {
|
|
19
|
+
export { EMAIL_OTP_ERROR_CODES };
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import * as _$_better_auth_core_utils_error_codes0 from "@better-auth/core/utils/error-codes";
|
|
2
|
-
|
|
3
1
|
//#region src/plugins/email-otp/error-codes.d.ts
|
|
4
|
-
declare const EMAIL_OTP_ERROR_CODES: {
|
|
5
|
-
OTP_EXPIRED:
|
|
6
|
-
INVALID_OTP:
|
|
7
|
-
TOO_MANY_ATTEMPTS:
|
|
2
|
+
export declare const EMAIL_OTP_ERROR_CODES: {
|
|
3
|
+
OTP_EXPIRED: import("@better-auth/core/utils/error-codes").RawError<"OTP_EXPIRED">;
|
|
4
|
+
INVALID_OTP: import("@better-auth/core/utils/error-codes").RawError<"INVALID_OTP">;
|
|
5
|
+
TOO_MANY_ATTEMPTS: import("@better-auth/core/utils/error-codes").RawError<"TOO_MANY_ATTEMPTS">;
|
|
8
6
|
};
|
|
9
|
-
//#endregion
|
|
10
|
-
export { EMAIL_OTP_ERROR_CODES };
|
|
7
|
+
//#endregion
|