better-auth 1.4.8-beta.1 → 1.4.8-beta.2

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 (95) hide show
  1. package/dist/api/index.d.mts +393 -393
  2. package/dist/api/middlewares/origin-check.d.mts +3 -3
  3. package/dist/api/routes/account.d.mts +11 -11
  4. package/dist/api/routes/callback.d.mts +2 -2
  5. package/dist/api/routes/email-verification.d.mts +4 -4
  6. package/dist/api/routes/error.d.mts +2 -2
  7. package/dist/api/routes/ok.d.mts +2 -2
  8. package/dist/api/routes/reset-password.d.mts +5 -5
  9. package/dist/api/routes/session.d.mts +14 -14
  10. package/dist/api/routes/sign-in.d.mts +3 -3
  11. package/dist/api/routes/sign-out.d.mts +2 -2
  12. package/dist/api/routes/sign-up.d.mts +2 -2
  13. package/dist/api/routes/update-user.d.mts +13 -13
  14. package/dist/client/lynx/index.d.mts +15 -15
  15. package/dist/client/react/index.d.mts +13 -13
  16. package/dist/client/solid/index.d.mts +13 -13
  17. package/dist/client/svelte/index.d.mts +13 -13
  18. package/dist/client/vue/index.d.mts +15 -15
  19. package/dist/db/field.d.mts +6 -6
  20. package/dist/integrations/next-js.d.mts +4 -4
  21. package/dist/integrations/svelte-kit.d.mts +2 -2
  22. package/dist/integrations/tanstack-start.d.mts +4 -4
  23. package/dist/plugins/anonymous/index.d.mts +6 -5
  24. package/dist/plugins/anonymous/index.mjs +1 -0
  25. package/dist/plugins/anonymous/index.mjs.map +1 -1
  26. package/dist/plugins/api-key/index.d.mts +18 -18
  27. package/dist/plugins/bearer/index.d.mts +8 -7
  28. package/dist/plugins/bearer/index.mjs +2 -1
  29. package/dist/plugins/bearer/index.mjs.map +1 -1
  30. package/dist/plugins/captcha/index.d.mts +3 -2
  31. package/dist/plugins/captcha/index.mjs +2 -1
  32. package/dist/plugins/captcha/index.mjs.map +1 -1
  33. package/dist/plugins/custom-session/index.d.mts +6 -5
  34. package/dist/plugins/custom-session/index.mjs +2 -1
  35. package/dist/plugins/custom-session/index.mjs.map +1 -1
  36. package/dist/plugins/device-authorization/index.d.mts +35 -8
  37. package/dist/plugins/device-authorization/index.mjs +2 -1
  38. package/dist/plugins/device-authorization/index.mjs.map +1 -1
  39. package/dist/plugins/email-otp/index.d.mts +49 -48
  40. package/dist/plugins/email-otp/index.mjs +2 -1
  41. package/dist/plugins/email-otp/index.mjs.map +1 -1
  42. package/dist/plugins/generic-oauth/index.d.mts +1 -0
  43. package/dist/plugins/generic-oauth/index.mjs +1 -0
  44. package/dist/plugins/generic-oauth/index.mjs.map +1 -1
  45. package/dist/plugins/haveibeenpwned/index.d.mts +4 -3
  46. package/dist/plugins/haveibeenpwned/index.mjs +1 -0
  47. package/dist/plugins/haveibeenpwned/index.mjs.map +1 -1
  48. package/dist/plugins/index.d.mts +4 -3
  49. package/dist/plugins/jwt/index.d.mts +9 -9
  50. package/dist/plugins/last-login-method/index.d.mts +3 -2
  51. package/dist/plugins/last-login-method/index.mjs +2 -1
  52. package/dist/plugins/last-login-method/index.mjs.map +1 -1
  53. package/dist/plugins/magic-link/index.d.mts +5 -4
  54. package/dist/plugins/magic-link/index.mjs +2 -1
  55. package/dist/plugins/magic-link/index.mjs.map +1 -1
  56. package/dist/plugins/mcp/index.d.mts +11 -10
  57. package/dist/plugins/mcp/index.mjs +2 -1
  58. package/dist/plugins/mcp/index.mjs.map +1 -1
  59. package/dist/plugins/multi-session/index.d.mts +10 -9
  60. package/dist/plugins/multi-session/index.mjs +1 -0
  61. package/dist/plugins/multi-session/index.mjs.map +1 -1
  62. package/dist/plugins/oauth-proxy/index.d.mts +8 -8
  63. package/dist/plugins/oidc-provider/index.d.mts +13 -13
  64. package/dist/plugins/one-tap/index.d.mts +4 -3
  65. package/dist/plugins/one-tap/index.mjs +2 -1
  66. package/dist/plugins/one-tap/index.mjs.map +1 -1
  67. package/dist/plugins/one-time-token/index.d.mts +6 -5
  68. package/dist/plugins/one-time-token/index.mjs +2 -1
  69. package/dist/plugins/one-time-token/index.mjs.map +1 -1
  70. package/dist/plugins/open-api/index.d.mts +4 -3
  71. package/dist/plugins/open-api/index.mjs +2 -1
  72. package/dist/plugins/open-api/index.mjs.map +1 -1
  73. package/dist/plugins/organization/organization.d.mts +4 -4
  74. package/dist/plugins/organization/organization.mjs.map +1 -1
  75. package/dist/plugins/organization/routes/crud-access-control.d.mts +22 -22
  76. package/dist/plugins/organization/routes/crud-invites.d.mts +58 -58
  77. package/dist/plugins/organization/routes/crud-members.d.mts +62 -62
  78. package/dist/plugins/organization/routes/crud-org.d.mts +51 -51
  79. package/dist/plugins/organization/routes/crud-team.d.mts +76 -76
  80. package/dist/plugins/phone-number/index.d.mts +10 -9
  81. package/dist/plugins/phone-number/index.mjs +1 -0
  82. package/dist/plugins/phone-number/index.mjs.map +1 -1
  83. package/dist/plugins/siwe/index.d.mts +4 -3
  84. package/dist/plugins/siwe/index.mjs +2 -1
  85. package/dist/plugins/siwe/index.mjs.map +1 -1
  86. package/dist/plugins/two-factor/backup-codes/index.d.mts +5 -5
  87. package/dist/plugins/two-factor/index.d.mts +18 -18
  88. package/dist/plugins/two-factor/otp/index.d.mts +3 -3
  89. package/dist/plugins/two-factor/totp/index.d.mts +5 -5
  90. package/dist/plugins/username/index.d.mts +10 -9
  91. package/dist/plugins/username/index.mjs +1 -0
  92. package/dist/plugins/username/index.mjs.map +1 -1
  93. package/dist/test-utils/test-instance.d.mts +271 -271
  94. package/dist/utils/time.d.mts +29 -1
  95. package/package.json +7 -7
@@ -2,7 +2,7 @@ import { DeepPartial, Expand, HasRequiredKeys, LiteralNumber, LiteralUnion, Omit
2
2
  import { InferActions, InferClientAPI, InferErrorCodes, IsSignal } from "../types.mjs";
3
3
  import { BetterAuthClientOptions, BetterAuthClientPlugin } from "@better-auth/core";
4
4
  import { BASE_ERROR_CODES } from "@better-auth/core/error";
5
- import * as _better_fetch_fetch47 from "@better-fetch/fetch";
5
+ import * as _better_fetch_fetch15 from "@better-fetch/fetch";
6
6
  import { BetterFetchError } from "@better-fetch/fetch";
7
7
  import { Accessor } from "solid-js";
8
8
  export * from "nanostores";
@@ -46,21 +46,21 @@ declare function createAuthClient<Option extends BetterAuthClientOptions>(option
46
46
  error: null;
47
47
  } ? S : Res extends Record<string, any> ? Res : never : never>;
48
48
  };
49
- $fetch: _better_fetch_fetch47.BetterFetch<{
50
- plugins: (_better_fetch_fetch47.BetterFetchPlugin<Record<string, any>> | {
49
+ $fetch: _better_fetch_fetch15.BetterFetch<{
50
+ plugins: (_better_fetch_fetch15.BetterFetchPlugin<Record<string, any>> | {
51
51
  id: string;
52
52
  name: string;
53
53
  hooks: {
54
- onSuccess(context: _better_fetch_fetch47.SuccessContext<any>): void;
54
+ onSuccess(context: _better_fetch_fetch15.SuccessContext<any>): void;
55
55
  };
56
56
  } | {
57
57
  id: string;
58
58
  name: string;
59
59
  hooks: {
60
- onSuccess: ((context: _better_fetch_fetch47.SuccessContext<any>) => Promise<void> | void) | undefined;
61
- onError: ((context: _better_fetch_fetch47.ErrorContext) => Promise<void> | void) | undefined;
62
- onRequest: (<T extends Record<string, any>>(context: _better_fetch_fetch47.RequestContext<T>) => Promise<_better_fetch_fetch47.RequestContext | void> | _better_fetch_fetch47.RequestContext | void) | undefined;
63
- onResponse: ((context: _better_fetch_fetch47.ResponseContext) => Promise<Response | void | _better_fetch_fetch47.ResponseContext> | Response | _better_fetch_fetch47.ResponseContext | void) | undefined;
60
+ onSuccess: ((context: _better_fetch_fetch15.SuccessContext<any>) => Promise<void> | void) | undefined;
61
+ onError: ((context: _better_fetch_fetch15.ErrorContext) => Promise<void> | void) | undefined;
62
+ onRequest: (<T extends Record<string, any>>(context: _better_fetch_fetch15.RequestContext<T>) => Promise<_better_fetch_fetch15.RequestContext | void> | _better_fetch_fetch15.RequestContext | void) | undefined;
63
+ onResponse: ((context: _better_fetch_fetch15.ResponseContext) => Promise<Response | void | _better_fetch_fetch15.ResponseContext> | Response | _better_fetch_fetch15.ResponseContext | void) | undefined;
64
64
  };
65
65
  })[];
66
66
  cache?: RequestCache | undefined;
@@ -80,12 +80,12 @@ declare function createAuthClient<Option extends BetterAuthClientOptions>(option
80
80
  referrerPolicy?: ReferrerPolicy | undefined;
81
81
  signal?: (AbortSignal | null) | undefined;
82
82
  window?: null | undefined;
83
- onRetry?: ((response: _better_fetch_fetch47.ResponseContext) => Promise<void> | void) | undefined;
83
+ onRetry?: ((response: _better_fetch_fetch15.ResponseContext) => Promise<void> | void) | undefined;
84
84
  hookOptions?: {
85
85
  cloneResponse?: boolean;
86
86
  } | undefined;
87
87
  timeout?: number | undefined;
88
- customFetchImpl: _better_fetch_fetch47.FetchEsque;
88
+ customFetchImpl: _better_fetch_fetch15.FetchEsque;
89
89
  baseURL: string;
90
90
  throw?: boolean | undefined;
91
91
  auth?: ({
@@ -105,10 +105,10 @@ declare function createAuthClient<Option extends BetterAuthClientOptions>(option
105
105
  params?: any;
106
106
  duplex?: "full" | "half" | undefined;
107
107
  jsonParser: (text: string) => Promise<any> | any;
108
- retry?: _better_fetch_fetch47.RetryOptions | undefined;
108
+ retry?: _better_fetch_fetch15.RetryOptions | undefined;
109
109
  retryAttempt?: number | undefined;
110
- output?: (_better_fetch_fetch47.StandardSchemaV1 | typeof Blob | typeof File) | undefined;
111
- errorSchema?: _better_fetch_fetch47.StandardSchemaV1 | undefined;
110
+ output?: (_better_fetch_fetch15.StandardSchemaV1 | typeof Blob | typeof File) | undefined;
111
+ errorSchema?: _better_fetch_fetch15.StandardSchemaV1 | undefined;
112
112
  disableValidation?: boolean | undefined;
113
113
  disableSignal?: boolean | undefined;
114
114
  }, unknown, unknown, {}>;
@@ -4,7 +4,7 @@ import { BetterAuthClientOptions, BetterAuthClientPlugin } from "@better-auth/co
4
4
  import { BASE_ERROR_CODES } from "@better-auth/core/error";
5
5
  import * as nanostores0 from "nanostores";
6
6
  import { Atom } from "nanostores";
7
- import * as _better_fetch_fetch0 from "@better-fetch/fetch";
7
+ import * as _better_fetch_fetch31 from "@better-fetch/fetch";
8
8
  import { BetterFetchError } from "@better-fetch/fetch";
9
9
  export * from "nanostores";
10
10
  export * from "@better-fetch/fetch";
@@ -32,21 +32,21 @@ declare function createAuthClient<Option extends BetterAuthClientOptions>(option
32
32
  isPending: boolean;
33
33
  isRefetching: boolean;
34
34
  }>;
35
- $fetch: _better_fetch_fetch0.BetterFetch<{
36
- plugins: (_better_fetch_fetch0.BetterFetchPlugin<Record<string, any>> | {
35
+ $fetch: _better_fetch_fetch31.BetterFetch<{
36
+ plugins: (_better_fetch_fetch31.BetterFetchPlugin<Record<string, any>> | {
37
37
  id: string;
38
38
  name: string;
39
39
  hooks: {
40
- onSuccess(context: _better_fetch_fetch0.SuccessContext<any>): void;
40
+ onSuccess(context: _better_fetch_fetch31.SuccessContext<any>): void;
41
41
  };
42
42
  } | {
43
43
  id: string;
44
44
  name: string;
45
45
  hooks: {
46
- onSuccess: ((context: _better_fetch_fetch0.SuccessContext<any>) => Promise<void> | void) | undefined;
47
- onError: ((context: _better_fetch_fetch0.ErrorContext) => Promise<void> | void) | undefined;
48
- onRequest: (<T extends Record<string, any>>(context: _better_fetch_fetch0.RequestContext<T>) => Promise<_better_fetch_fetch0.RequestContext | void> | _better_fetch_fetch0.RequestContext | void) | undefined;
49
- onResponse: ((context: _better_fetch_fetch0.ResponseContext) => Promise<Response | void | _better_fetch_fetch0.ResponseContext> | Response | _better_fetch_fetch0.ResponseContext | void) | undefined;
46
+ onSuccess: ((context: _better_fetch_fetch31.SuccessContext<any>) => Promise<void> | void) | undefined;
47
+ onError: ((context: _better_fetch_fetch31.ErrorContext) => Promise<void> | void) | undefined;
48
+ onRequest: (<T extends Record<string, any>>(context: _better_fetch_fetch31.RequestContext<T>) => Promise<_better_fetch_fetch31.RequestContext | void> | _better_fetch_fetch31.RequestContext | void) | undefined;
49
+ onResponse: ((context: _better_fetch_fetch31.ResponseContext) => Promise<Response | void | _better_fetch_fetch31.ResponseContext> | Response | _better_fetch_fetch31.ResponseContext | void) | undefined;
50
50
  };
51
51
  })[];
52
52
  cache?: RequestCache | undefined;
@@ -66,12 +66,12 @@ declare function createAuthClient<Option extends BetterAuthClientOptions>(option
66
66
  referrerPolicy?: ReferrerPolicy | undefined;
67
67
  signal?: (AbortSignal | null) | undefined;
68
68
  window?: null | undefined;
69
- onRetry?: ((response: _better_fetch_fetch0.ResponseContext) => Promise<void> | void) | undefined;
69
+ onRetry?: ((response: _better_fetch_fetch31.ResponseContext) => Promise<void> | void) | undefined;
70
70
  hookOptions?: {
71
71
  cloneResponse?: boolean;
72
72
  } | undefined;
73
73
  timeout?: number | undefined;
74
- customFetchImpl: _better_fetch_fetch0.FetchEsque;
74
+ customFetchImpl: _better_fetch_fetch31.FetchEsque;
75
75
  baseURL: string;
76
76
  throw?: boolean | undefined;
77
77
  auth?: ({
@@ -91,10 +91,10 @@ declare function createAuthClient<Option extends BetterAuthClientOptions>(option
91
91
  params?: any;
92
92
  duplex?: "full" | "half" | undefined;
93
93
  jsonParser: (text: string) => Promise<any> | any;
94
- retry?: _better_fetch_fetch0.RetryOptions | undefined;
94
+ retry?: _better_fetch_fetch31.RetryOptions | undefined;
95
95
  retryAttempt?: number | undefined;
96
- output?: (_better_fetch_fetch0.StandardSchemaV1 | typeof Blob | typeof File) | undefined;
97
- errorSchema?: _better_fetch_fetch0.StandardSchemaV1 | undefined;
96
+ output?: (_better_fetch_fetch31.StandardSchemaV1 | typeof Blob | typeof File) | undefined;
97
+ errorSchema?: _better_fetch_fetch31.StandardSchemaV1 | undefined;
98
98
  disableValidation?: boolean | undefined;
99
99
  disableSignal?: boolean | undefined;
100
100
  }, unknown, unknown, {}>;
@@ -2,8 +2,8 @@ import { DeepPartial, Expand, HasRequiredKeys, LiteralNumber, LiteralUnion, Omit
2
2
  import { InferActions, InferClientAPI, InferErrorCodes, IsSignal } from "../types.mjs";
3
3
  import { BetterAuthClientOptions, BetterAuthClientPlugin } from "@better-auth/core";
4
4
  import { BASE_ERROR_CODES } from "@better-auth/core/error";
5
- import * as nanostores1 from "nanostores";
6
- import * as _better_fetch_fetch31 from "@better-fetch/fetch";
5
+ import * as nanostores2 from "nanostores";
6
+ import * as _better_fetch_fetch63 from "@better-fetch/fetch";
7
7
  import { BetterFetchError } from "@better-fetch/fetch";
8
8
  import { DeepReadonly, Ref } from "vue";
9
9
  export * from "nanostores";
@@ -70,21 +70,21 @@ declare function createAuthClient<Option extends BetterAuthClientOptions>(option
70
70
  error: null;
71
71
  } ? S : Res extends Record<string, any> ? Res : never : never>;
72
72
  };
73
- $fetch: _better_fetch_fetch31.BetterFetch<{
74
- plugins: (_better_fetch_fetch31.BetterFetchPlugin<Record<string, any>> | {
73
+ $fetch: _better_fetch_fetch63.BetterFetch<{
74
+ plugins: (_better_fetch_fetch63.BetterFetchPlugin<Record<string, any>> | {
75
75
  id: string;
76
76
  name: string;
77
77
  hooks: {
78
- onSuccess(context: _better_fetch_fetch31.SuccessContext<any>): void;
78
+ onSuccess(context: _better_fetch_fetch63.SuccessContext<any>): void;
79
79
  };
80
80
  } | {
81
81
  id: string;
82
82
  name: string;
83
83
  hooks: {
84
- onSuccess: ((context: _better_fetch_fetch31.SuccessContext<any>) => Promise<void> | void) | undefined;
85
- onError: ((context: _better_fetch_fetch31.ErrorContext) => Promise<void> | void) | undefined;
86
- onRequest: (<T extends Record<string, any>>(context: _better_fetch_fetch31.RequestContext<T>) => Promise<_better_fetch_fetch31.RequestContext | void> | _better_fetch_fetch31.RequestContext | void) | undefined;
87
- onResponse: ((context: _better_fetch_fetch31.ResponseContext) => Promise<Response | void | _better_fetch_fetch31.ResponseContext> | Response | _better_fetch_fetch31.ResponseContext | void) | undefined;
84
+ onSuccess: ((context: _better_fetch_fetch63.SuccessContext<any>) => Promise<void> | void) | undefined;
85
+ onError: ((context: _better_fetch_fetch63.ErrorContext) => Promise<void> | void) | undefined;
86
+ onRequest: (<T extends Record<string, any>>(context: _better_fetch_fetch63.RequestContext<T>) => Promise<_better_fetch_fetch63.RequestContext | void> | _better_fetch_fetch63.RequestContext | void) | undefined;
87
+ onResponse: ((context: _better_fetch_fetch63.ResponseContext) => Promise<Response | void | _better_fetch_fetch63.ResponseContext> | Response | _better_fetch_fetch63.ResponseContext | void) | undefined;
88
88
  };
89
89
  })[];
90
90
  cache?: RequestCache | undefined;
@@ -104,12 +104,12 @@ declare function createAuthClient<Option extends BetterAuthClientOptions>(option
104
104
  referrerPolicy?: ReferrerPolicy | undefined;
105
105
  signal?: (AbortSignal | null) | undefined;
106
106
  window?: null | undefined;
107
- onRetry?: ((response: _better_fetch_fetch31.ResponseContext) => Promise<void> | void) | undefined;
107
+ onRetry?: ((response: _better_fetch_fetch63.ResponseContext) => Promise<void> | void) | undefined;
108
108
  hookOptions?: {
109
109
  cloneResponse?: boolean;
110
110
  } | undefined;
111
111
  timeout?: number | undefined;
112
- customFetchImpl: _better_fetch_fetch31.FetchEsque;
112
+ customFetchImpl: _better_fetch_fetch63.FetchEsque;
113
113
  baseURL: string;
114
114
  throw?: boolean | undefined;
115
115
  auth?: ({
@@ -129,17 +129,17 @@ declare function createAuthClient<Option extends BetterAuthClientOptions>(option
129
129
  params?: any;
130
130
  duplex?: "full" | "half" | undefined;
131
131
  jsonParser: (text: string) => Promise<any> | any;
132
- retry?: _better_fetch_fetch31.RetryOptions | undefined;
132
+ retry?: _better_fetch_fetch63.RetryOptions | undefined;
133
133
  retryAttempt?: number | undefined;
134
- output?: (_better_fetch_fetch31.StandardSchemaV1 | typeof Blob | typeof File) | undefined;
135
- errorSchema?: _better_fetch_fetch31.StandardSchemaV1 | undefined;
134
+ output?: (_better_fetch_fetch63.StandardSchemaV1 | typeof Blob | typeof File) | undefined;
135
+ errorSchema?: _better_fetch_fetch63.StandardSchemaV1 | undefined;
136
136
  disableValidation?: boolean | undefined;
137
137
  disableSignal?: boolean | undefined;
138
138
  }, unknown, unknown, {}>;
139
139
  $store: {
140
140
  notify: (signal?: (Omit<string, "$sessionSignal"> | "$sessionSignal") | undefined) => void;
141
141
  listen: (signal: Omit<string, "$sessionSignal"> | "$sessionSignal", listener: (value: boolean, oldValue?: boolean | undefined) => void) => void;
142
- atoms: Record<string, nanostores1.WritableAtom<any>>;
142
+ atoms: Record<string, nanostores2.WritableAtom<any>>;
143
143
  };
144
144
  $ERROR_CODES: PrettifyDeep<InferErrorCodes<Option> & typeof BASE_ERROR_CODES>;
145
145
  };
@@ -1,6 +1,6 @@
1
- import * as _better_auth_core21 from "@better-auth/core";
1
+ import * as _better_auth_core24 from "@better-auth/core";
2
2
  import { BetterAuthOptions } from "@better-auth/core";
3
- import * as _better_auth_core_db7 from "@better-auth/core/db";
3
+ import * as _better_auth_core_db9 from "@better-auth/core/db";
4
4
  import { DBFieldAttribute, DBFieldAttributeConfig, DBFieldType } from "@better-auth/core/db";
5
5
  import * as _standard_schema_spec0 from "@standard-schema/spec";
6
6
 
@@ -9,11 +9,11 @@ declare const createFieldAttribute: <T extends DBFieldType, C extends DBFieldAtt
9
9
  required?: boolean | undefined;
10
10
  returned?: boolean | undefined;
11
11
  input?: boolean | undefined;
12
- defaultValue?: (_better_auth_core_db7.DBPrimitive | (() => _better_auth_core_db7.DBPrimitive)) | undefined;
13
- onUpdate?: (() => _better_auth_core_db7.DBPrimitive) | undefined;
12
+ defaultValue?: (_better_auth_core_db9.DBPrimitive | (() => _better_auth_core_db9.DBPrimitive)) | undefined;
13
+ onUpdate?: (() => _better_auth_core_db9.DBPrimitive) | undefined;
14
14
  transform?: {
15
- input?: (value: _better_auth_core_db7.DBPrimitive) => _better_auth_core21.Awaitable<_better_auth_core_db7.DBPrimitive>;
16
- output?: (value: _better_auth_core_db7.DBPrimitive) => _better_auth_core21.Awaitable<_better_auth_core_db7.DBPrimitive>;
15
+ input?: (value: _better_auth_core_db9.DBPrimitive) => _better_auth_core24.Awaitable<_better_auth_core_db9.DBPrimitive>;
16
+ output?: (value: _better_auth_core_db9.DBPrimitive) => _better_auth_core24.Awaitable<_better_auth_core_db9.DBPrimitive>;
17
17
  } | undefined;
18
18
  references?: {
19
19
  model: string;
@@ -1,5 +1,5 @@
1
- import * as _better_auth_core8 from "@better-auth/core";
2
- import * as better_call165 from "better-call";
1
+ import * as _better_auth_core1 from "@better-auth/core";
2
+ import * as better_call133 from "better-call";
3
3
 
4
4
  //#region src/integrations/next-js.d.ts
5
5
  declare function toNextJsHandler(auth: {
@@ -15,8 +15,8 @@ declare const nextCookies: () => {
15
15
  id: "next-cookies";
16
16
  hooks: {
17
17
  after: {
18
- matcher(ctx: _better_auth_core8.HookEndpointContext): true;
19
- handler: (inputContext: better_call165.MiddlewareInputContext<better_call165.MiddlewareOptions>) => Promise<void>;
18
+ matcher(ctx: _better_auth_core1.HookEndpointContext): true;
19
+ handler: (inputContext: better_call133.MiddlewareInputContext<better_call133.MiddlewareOptions>) => Promise<void>;
20
20
  }[];
21
21
  };
22
22
  };
@@ -1,5 +1,5 @@
1
1
  import { BetterAuthOptions } from "../types/index.mjs";
2
- import * as better_call124 from "better-call";
2
+ import * as better_call131 from "better-call";
3
3
  import { RequestEvent } from "@sveltejs/kit";
4
4
 
5
5
  //#region src/integrations/svelte-kit.d.ts
@@ -29,7 +29,7 @@ declare const sveltekitCookies: (getRequestEvent: () => RequestEvent<any, any>)
29
29
  hooks: {
30
30
  after: {
31
31
  matcher(): true;
32
- handler: (inputContext: better_call124.MiddlewareInputContext<better_call124.MiddlewareOptions>) => Promise<void>;
32
+ handler: (inputContext: better_call131.MiddlewareInputContext<better_call131.MiddlewareOptions>) => Promise<void>;
33
33
  }[];
34
34
  };
35
35
  };
@@ -1,13 +1,13 @@
1
- import * as _better_auth_core6 from "@better-auth/core";
2
- import * as better_call150 from "better-call";
1
+ import * as _better_auth_core2 from "@better-auth/core";
2
+ import * as better_call135 from "better-call";
3
3
 
4
4
  //#region src/integrations/tanstack-start.d.ts
5
5
  declare const tanstackStartCookies: () => {
6
6
  id: "tanstack-start-cookies";
7
7
  hooks: {
8
8
  after: {
9
- matcher(ctx: _better_auth_core6.HookEndpointContext): true;
10
- handler: (inputContext: better_call150.MiddlewareInputContext<better_call150.MiddlewareOptions>) => Promise<void>;
9
+ matcher(ctx: _better_auth_core2.HookEndpointContext): true;
10
+ handler: (inputContext: better_call135.MiddlewareInputContext<better_call135.MiddlewareOptions>) => Promise<void>;
11
11
  }[];
12
12
  };
13
13
  };
@@ -1,12 +1,12 @@
1
1
  import { AnonymousOptions } from "./types.mjs";
2
- import * as _better_auth_core0 from "@better-auth/core";
3
- import * as better_call0 from "better-call";
2
+ import * as _better_auth_core3 from "@better-auth/core";
3
+ import * as better_call137 from "better-call";
4
4
 
5
5
  //#region src/plugins/anonymous/index.d.ts
6
6
  declare const anonymous: (options?: AnonymousOptions | undefined) => {
7
7
  id: "anonymous";
8
8
  endpoints: {
9
- signInAnonymous: better_call0.StrictEndpoint<"/sign-in/anonymous", {
9
+ signInAnonymous: better_call137.StrictEndpoint<"/sign-in/anonymous", {
10
10
  method: "POST";
11
11
  metadata: {
12
12
  openapi: {
@@ -47,10 +47,11 @@ declare const anonymous: (options?: AnonymousOptions | undefined) => {
47
47
  };
48
48
  hooks: {
49
49
  after: {
50
- matcher(ctx: _better_auth_core0.HookEndpointContext): boolean;
51
- handler: (inputContext: better_call0.MiddlewareInputContext<better_call0.MiddlewareOptions>) => Promise<void>;
50
+ matcher(ctx: _better_auth_core3.HookEndpointContext): boolean;
51
+ handler: (inputContext: better_call137.MiddlewareInputContext<better_call137.MiddlewareOptions>) => Promise<void>;
52
52
  }[];
53
53
  };
54
+ options: AnonymousOptions | undefined;
54
55
  schema: {
55
56
  user: {
56
57
  fields: {
@@ -100,6 +100,7 @@ const anonymous = (options) => {
100
100
  if (!options?.disableDeleteAnonymousUser) await ctx.context.internalAdapter.deleteUser(session.user.id);
101
101
  })
102
102
  }] },
103
+ options,
103
104
  schema: mergeSchema(schema, options?.schema),
104
105
  $ERROR_CODES: ANONYMOUS_ERROR_CODES
105
106
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/plugins/anonymous/index.ts"],"sourcesContent":["import type { BetterAuthPlugin } from \"@better-auth/core\";\nimport {\n\tcreateAuthEndpoint,\n\tcreateAuthMiddleware,\n} from \"@better-auth/core/api\";\nimport { generateId } from \"@better-auth/core/utils\";\nimport * as z from \"zod\";\nimport { APIError, getSessionFromCtx } from \"../../api\";\nimport { parseSetCookieHeader, setSessionCookie } from \"../../cookies\";\nimport { mergeSchema } from \"../../db/schema\";\nimport { ANONYMOUS_ERROR_CODES } from \"./error-codes\";\nimport { schema } from \"./schema\";\nimport type { AnonymousOptions } from \"./types\";\n\nasync function getAnonUserEmail(\n\toptions: AnonymousOptions | undefined,\n): Promise<string> {\n\tconst customEmail = await options?.generateRandomEmail?.();\n\tif (customEmail) {\n\t\tconst validation = z.email().safeParse(customEmail);\n\t\tif (!validation.success) {\n\t\t\tthrow new APIError(\"BAD_REQUEST\", {\n\t\t\t\tmessage: ANONYMOUS_ERROR_CODES.INVALID_EMAIL_FORMAT,\n\t\t\t});\n\t\t}\n\t\treturn customEmail;\n\t}\n\n\tconst id = generateId();\n\tif (options?.emailDomainName) {\n\t\treturn `temp-${id}@${options.emailDomainName}`;\n\t}\n\n\treturn `temp@${id}.com`;\n}\n\nexport const anonymous = (options?: AnonymousOptions | undefined) => {\n\treturn {\n\t\tid: \"anonymous\",\n\t\tendpoints: {\n\t\t\tsignInAnonymous: createAuthEndpoint(\n\t\t\t\t\"/sign-in/anonymous\",\n\t\t\t\t{\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\topenapi: {\n\t\t\t\t\t\t\tdescription: \"Sign in anonymously\",\n\t\t\t\t\t\t\tresponses: {\n\t\t\t\t\t\t\t\t200: {\n\t\t\t\t\t\t\t\t\tdescription: \"Sign in anonymously\",\n\t\t\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\t\t\t\"application/json\": {\n\t\t\t\t\t\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tuser: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$ref: \"#/components/schemas/User\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\tsession: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$ref: \"#/components/schemas/Session\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tasync (ctx) => {\n\t\t\t\t\t// If the current request already has a valid anonymous session, we should\n\t\t\t\t\t// reject any further attempts to create another anonymous user. This\n\t\t\t\t\t// prevents an anonymous user from signing in anonymously again while they\n\t\t\t\t\t// are already authenticated.\n\t\t\t\t\tconst existingSession = await getSessionFromCtx<{\n\t\t\t\t\t\tisAnonymous: boolean;\n\t\t\t\t\t}>(ctx, { disableRefresh: true });\n\t\t\t\t\tif (existingSession?.user.isAnonymous) {\n\t\t\t\t\t\tthrow new APIError(\"BAD_REQUEST\", {\n\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\tANONYMOUS_ERROR_CODES.ANONYMOUS_USERS_CANNOT_SIGN_IN_AGAIN_ANONYMOUSLY,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst email = await getAnonUserEmail(options);\n\t\t\t\t\tconst name = (await options?.generateName?.(ctx)) || \"Anonymous\";\n\t\t\t\t\tconst newUser = await ctx.context.internalAdapter.createUser({\n\t\t\t\t\t\temail,\n\t\t\t\t\t\temailVerified: false,\n\t\t\t\t\t\tisAnonymous: true,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\t\tupdatedAt: new Date(),\n\t\t\t\t\t});\n\t\t\t\t\tif (!newUser) {\n\t\t\t\t\t\tthrow ctx.error(\"INTERNAL_SERVER_ERROR\", {\n\t\t\t\t\t\t\tmessage: ANONYMOUS_ERROR_CODES.FAILED_TO_CREATE_USER,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tconst session = await ctx.context.internalAdapter.createSession(\n\t\t\t\t\t\tnewUser.id,\n\t\t\t\t\t);\n\t\t\t\t\tif (!session) {\n\t\t\t\t\t\treturn ctx.json(null, {\n\t\t\t\t\t\t\tstatus: 400,\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tmessage: ANONYMOUS_ERROR_CODES.COULD_NOT_CREATE_SESSION,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tawait setSessionCookie(ctx, {\n\t\t\t\t\t\tsession,\n\t\t\t\t\t\tuser: newUser,\n\t\t\t\t\t});\n\t\t\t\t\treturn ctx.json({\n\t\t\t\t\t\ttoken: session.token,\n\t\t\t\t\t\tuser: {\n\t\t\t\t\t\t\tid: newUser.id,\n\t\t\t\t\t\t\temail: newUser.email,\n\t\t\t\t\t\t\temailVerified: newUser.emailVerified,\n\t\t\t\t\t\t\tname: newUser.name,\n\t\t\t\t\t\t\tcreatedAt: newUser.createdAt,\n\t\t\t\t\t\t\tupdatedAt: newUser.updatedAt,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t),\n\t\t},\n\t\thooks: {\n\t\t\tafter: [\n\t\t\t\t{\n\t\t\t\t\tmatcher(ctx) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tctx.path.startsWith(\"/sign-in\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/sign-up\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/callback\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/oauth2/callback\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/magic-link/verify\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/email-otp/verify-email\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/one-tap/callback\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/passkey/verify-authentication\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/phone-number/verify\")\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\thandler: createAuthMiddleware(async (ctx) => {\n\t\t\t\t\t\tconst setCookie = ctx.context.responseHeaders?.get(\"set-cookie\");\n\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * We can consider the user is about to sign in or sign up\n\t\t\t\t\t\t * if the response contains a session token.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst sessionTokenName = ctx.context.authCookies.sessionToken.name;\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * The user is about to link their account.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst sessionCookie = parseSetCookieHeader(setCookie || \"\")\n\t\t\t\t\t\t\t.get(sessionTokenName)\n\t\t\t\t\t\t\t?.value.split(\".\")[0]!;\n\n\t\t\t\t\t\tif (!sessionCookie) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Make sure the user had an anonymous session.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst session = await getSessionFromCtx<{ isAnonymous: boolean }>(\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisableRefresh: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (!session || !session.user.isAnonymous) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ctx.path === \"/sign-in/anonymous\" && !ctx.context.newSession) {\n\t\t\t\t\t\t\tthrow new APIError(\"BAD_REQUEST\", {\n\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\tANONYMOUS_ERROR_CODES.ANONYMOUS_USERS_CANNOT_SIGN_IN_AGAIN_ANONYMOUSLY,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst newSession = ctx.context.newSession;\n\t\t\t\t\t\tif (!newSession) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// At this point the user is linking their previous anonymous account with a\n\t\t\t\t\t\t// new credential (email / social). Invoke the provided callback so that the\n\t\t\t\t\t\t// integrator can perform any additional logic such as transferring data\n\t\t\t\t\t\t// from the anonymous user to the new user.\n\t\t\t\t\t\tif (options?.onLinkAccount) {\n\t\t\t\t\t\t\tawait options?.onLinkAccount?.({\n\t\t\t\t\t\t\t\tanonymousUser: session,\n\t\t\t\t\t\t\t\tnewUser: newSession,\n\t\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!options?.disableDeleteAnonymousUser) {\n\t\t\t\t\t\t\tawait ctx.context.internalAdapter.deleteUser(session.user.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tschema: mergeSchema(schema, options?.schema),\n\t\t$ERROR_CODES: ANONYMOUS_ERROR_CODES,\n\t} satisfies BetterAuthPlugin;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/plugins/anonymous/index.ts"],"sourcesContent":["import type { BetterAuthPlugin } from \"@better-auth/core\";\nimport {\n\tcreateAuthEndpoint,\n\tcreateAuthMiddleware,\n} from \"@better-auth/core/api\";\nimport { generateId } from \"@better-auth/core/utils\";\nimport * as z from \"zod\";\nimport { APIError, getSessionFromCtx } from \"../../api\";\nimport { parseSetCookieHeader, setSessionCookie } from \"../../cookies\";\nimport { mergeSchema } from \"../../db/schema\";\nimport { ANONYMOUS_ERROR_CODES } from \"./error-codes\";\nimport { schema } from \"./schema\";\nimport type { AnonymousOptions } from \"./types\";\n\nasync function getAnonUserEmail(\n\toptions: AnonymousOptions | undefined,\n): Promise<string> {\n\tconst customEmail = await options?.generateRandomEmail?.();\n\tif (customEmail) {\n\t\tconst validation = z.email().safeParse(customEmail);\n\t\tif (!validation.success) {\n\t\t\tthrow new APIError(\"BAD_REQUEST\", {\n\t\t\t\tmessage: ANONYMOUS_ERROR_CODES.INVALID_EMAIL_FORMAT,\n\t\t\t});\n\t\t}\n\t\treturn customEmail;\n\t}\n\n\tconst id = generateId();\n\tif (options?.emailDomainName) {\n\t\treturn `temp-${id}@${options.emailDomainName}`;\n\t}\n\n\treturn `temp@${id}.com`;\n}\n\nexport const anonymous = (options?: AnonymousOptions | undefined) => {\n\treturn {\n\t\tid: \"anonymous\",\n\t\tendpoints: {\n\t\t\tsignInAnonymous: createAuthEndpoint(\n\t\t\t\t\"/sign-in/anonymous\",\n\t\t\t\t{\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\topenapi: {\n\t\t\t\t\t\t\tdescription: \"Sign in anonymously\",\n\t\t\t\t\t\t\tresponses: {\n\t\t\t\t\t\t\t\t200: {\n\t\t\t\t\t\t\t\t\tdescription: \"Sign in anonymously\",\n\t\t\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\t\t\t\"application/json\": {\n\t\t\t\t\t\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tuser: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$ref: \"#/components/schemas/User\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\tsession: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$ref: \"#/components/schemas/Session\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tasync (ctx) => {\n\t\t\t\t\t// If the current request already has a valid anonymous session, we should\n\t\t\t\t\t// reject any further attempts to create another anonymous user. This\n\t\t\t\t\t// prevents an anonymous user from signing in anonymously again while they\n\t\t\t\t\t// are already authenticated.\n\t\t\t\t\tconst existingSession = await getSessionFromCtx<{\n\t\t\t\t\t\tisAnonymous: boolean;\n\t\t\t\t\t}>(ctx, { disableRefresh: true });\n\t\t\t\t\tif (existingSession?.user.isAnonymous) {\n\t\t\t\t\t\tthrow new APIError(\"BAD_REQUEST\", {\n\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\tANONYMOUS_ERROR_CODES.ANONYMOUS_USERS_CANNOT_SIGN_IN_AGAIN_ANONYMOUSLY,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst email = await getAnonUserEmail(options);\n\t\t\t\t\tconst name = (await options?.generateName?.(ctx)) || \"Anonymous\";\n\t\t\t\t\tconst newUser = await ctx.context.internalAdapter.createUser({\n\t\t\t\t\t\temail,\n\t\t\t\t\t\temailVerified: false,\n\t\t\t\t\t\tisAnonymous: true,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\t\tupdatedAt: new Date(),\n\t\t\t\t\t});\n\t\t\t\t\tif (!newUser) {\n\t\t\t\t\t\tthrow ctx.error(\"INTERNAL_SERVER_ERROR\", {\n\t\t\t\t\t\t\tmessage: ANONYMOUS_ERROR_CODES.FAILED_TO_CREATE_USER,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tconst session = await ctx.context.internalAdapter.createSession(\n\t\t\t\t\t\tnewUser.id,\n\t\t\t\t\t);\n\t\t\t\t\tif (!session) {\n\t\t\t\t\t\treturn ctx.json(null, {\n\t\t\t\t\t\t\tstatus: 400,\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tmessage: ANONYMOUS_ERROR_CODES.COULD_NOT_CREATE_SESSION,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tawait setSessionCookie(ctx, {\n\t\t\t\t\t\tsession,\n\t\t\t\t\t\tuser: newUser,\n\t\t\t\t\t});\n\t\t\t\t\treturn ctx.json({\n\t\t\t\t\t\ttoken: session.token,\n\t\t\t\t\t\tuser: {\n\t\t\t\t\t\t\tid: newUser.id,\n\t\t\t\t\t\t\temail: newUser.email,\n\t\t\t\t\t\t\temailVerified: newUser.emailVerified,\n\t\t\t\t\t\t\tname: newUser.name,\n\t\t\t\t\t\t\tcreatedAt: newUser.createdAt,\n\t\t\t\t\t\t\tupdatedAt: newUser.updatedAt,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t),\n\t\t},\n\t\thooks: {\n\t\t\tafter: [\n\t\t\t\t{\n\t\t\t\t\tmatcher(ctx) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tctx.path.startsWith(\"/sign-in\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/sign-up\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/callback\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/oauth2/callback\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/magic-link/verify\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/email-otp/verify-email\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/one-tap/callback\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/passkey/verify-authentication\") ||\n\t\t\t\t\t\t\tctx.path.startsWith(\"/phone-number/verify\")\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\thandler: createAuthMiddleware(async (ctx) => {\n\t\t\t\t\t\tconst setCookie = ctx.context.responseHeaders?.get(\"set-cookie\");\n\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * We can consider the user is about to sign in or sign up\n\t\t\t\t\t\t * if the response contains a session token.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst sessionTokenName = ctx.context.authCookies.sessionToken.name;\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * The user is about to link their account.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst sessionCookie = parseSetCookieHeader(setCookie || \"\")\n\t\t\t\t\t\t\t.get(sessionTokenName)\n\t\t\t\t\t\t\t?.value.split(\".\")[0]!;\n\n\t\t\t\t\t\tif (!sessionCookie) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Make sure the user had an anonymous session.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst session = await getSessionFromCtx<{ isAnonymous: boolean }>(\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisableRefresh: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (!session || !session.user.isAnonymous) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ctx.path === \"/sign-in/anonymous\" && !ctx.context.newSession) {\n\t\t\t\t\t\t\tthrow new APIError(\"BAD_REQUEST\", {\n\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\tANONYMOUS_ERROR_CODES.ANONYMOUS_USERS_CANNOT_SIGN_IN_AGAIN_ANONYMOUSLY,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst newSession = ctx.context.newSession;\n\t\t\t\t\t\tif (!newSession) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// At this point the user is linking their previous anonymous account with a\n\t\t\t\t\t\t// new credential (email / social). Invoke the provided callback so that the\n\t\t\t\t\t\t// integrator can perform any additional logic such as transferring data\n\t\t\t\t\t\t// from the anonymous user to the new user.\n\t\t\t\t\t\tif (options?.onLinkAccount) {\n\t\t\t\t\t\t\tawait options?.onLinkAccount?.({\n\t\t\t\t\t\t\t\tanonymousUser: session,\n\t\t\t\t\t\t\t\tnewUser: newSession,\n\t\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!options?.disableDeleteAnonymousUser) {\n\t\t\t\t\t\t\tawait ctx.context.internalAdapter.deleteUser(session.user.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\toptions,\n\t\tschema: mergeSchema(schema, options?.schema),\n\t\t$ERROR_CODES: ANONYMOUS_ERROR_CODES,\n\t} satisfies BetterAuthPlugin;\n};\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { ApiKey, ApiKeyOptions } from "./types.mjs";
2
- import * as _better_auth_core24 from "@better-auth/core";
3
- import * as _better_auth_core_db14 from "@better-auth/core/db";
2
+ import * as _better_auth_core22 from "@better-auth/core";
3
+ import * as _better_auth_core_db7 from "@better-auth/core/db";
4
4
  import * as zod518 from "zod";
5
- import * as better_call244 from "better-call";
5
+ import * as better_call255 from "better-call";
6
6
  import * as zod_v4_core75 from "zod/v4/core";
7
7
 
8
8
  //#region src/plugins/api-key/index.d.ts
@@ -66,8 +66,8 @@ declare const apiKey: (options?: ApiKeyOptions | undefined) => {
66
66
  };
67
67
  hooks: {
68
68
  before: {
69
- matcher: (ctx: _better_auth_core24.HookEndpointContext) => boolean;
70
- handler: (inputContext: better_call244.MiddlewareInputContext<better_call244.MiddlewareOptions>) => Promise<{
69
+ matcher: (ctx: _better_auth_core22.HookEndpointContext) => boolean;
70
+ handler: (inputContext: better_call255.MiddlewareInputContext<better_call255.MiddlewareOptions>) => Promise<{
71
71
  user: {
72
72
  id: string;
73
73
  createdAt: Date;
@@ -88,7 +88,7 @@ declare const apiKey: (options?: ApiKeyOptions | undefined) => {
88
88
  expiresAt: Date;
89
89
  };
90
90
  } | {
91
- context: better_call244.MiddlewareContext<better_call244.MiddlewareOptions, _better_auth_core24.AuthContext & {
91
+ context: better_call255.MiddlewareContext<better_call255.MiddlewareOptions, _better_auth_core22.AuthContext & {
92
92
  returned?: unknown | undefined;
93
93
  responseHeaders?: Headers | undefined;
94
94
  }>;
@@ -111,7 +111,7 @@ declare const apiKey: (options?: ApiKeyOptions | undefined) => {
111
111
  *
112
112
  * @see [Read our docs to learn more.](https://better-auth.com/docs/plugins/api-key#api-method-api-key-create)
113
113
  */
114
- createApiKey: better_call244.StrictEndpoint<"/api-key/create", {
114
+ createApiKey: better_call255.StrictEndpoint<"/api-key/create", {
115
115
  method: "POST";
116
116
  body: zod518.ZodObject<{
117
117
  name: zod518.ZodOptional<zod518.ZodString>;
@@ -291,7 +291,7 @@ declare const apiKey: (options?: ApiKeyOptions | undefined) => {
291
291
  *
292
292
  * @see [Read our docs to learn more.](https://better-auth.com/docs/plugins/api-key#api-method-api-key-verify)
293
293
  */
294
- verifyApiKey: better_call244.StrictEndpoint<string, {
294
+ verifyApiKey: better_call255.StrictEndpoint<string, {
295
295
  method: "POST";
296
296
  body: zod518.ZodObject<{
297
297
  key: zod518.ZodString;
@@ -324,12 +324,12 @@ declare const apiKey: (options?: ApiKeyOptions | undefined) => {
324
324
  *
325
325
  * @see [Read our docs to learn more.](https://better-auth.com/docs/plugins/api-key#api-method-api-key-get)
326
326
  */
327
- getApiKey: better_call244.StrictEndpoint<"/api-key/get", {
327
+ getApiKey: better_call255.StrictEndpoint<"/api-key/get", {
328
328
  method: "GET";
329
329
  query: zod518.ZodObject<{
330
330
  id: zod518.ZodString;
331
331
  }, zod_v4_core75.$strip>;
332
- use: ((inputContext: better_call244.MiddlewareInputContext<better_call244.MiddlewareOptions>) => Promise<{
332
+ use: ((inputContext: better_call255.MiddlewareInputContext<better_call255.MiddlewareOptions>) => Promise<{
333
333
  session: {
334
334
  session: Record<string, any> & {
335
335
  id: string;
@@ -511,7 +511,7 @@ declare const apiKey: (options?: ApiKeyOptions | undefined) => {
511
511
  *
512
512
  * @see [Read our docs to learn more.](https://better-auth.com/docs/plugins/api-key#api-method-api-key-update)
513
513
  */
514
- updateApiKey: better_call244.StrictEndpoint<"/api-key/update", {
514
+ updateApiKey: better_call255.StrictEndpoint<"/api-key/update", {
515
515
  method: "POST";
516
516
  body: zod518.ZodObject<{
517
517
  keyId: zod518.ZodString;
@@ -687,12 +687,12 @@ declare const apiKey: (options?: ApiKeyOptions | undefined) => {
687
687
  *
688
688
  * @see [Read our docs to learn more.](https://better-auth.com/docs/plugins/api-key#api-method-api-key-delete)
689
689
  */
690
- deleteApiKey: better_call244.StrictEndpoint<"/api-key/delete", {
690
+ deleteApiKey: better_call255.StrictEndpoint<"/api-key/delete", {
691
691
  method: "POST";
692
692
  body: zod518.ZodObject<{
693
693
  keyId: zod518.ZodString;
694
694
  }, zod_v4_core75.$strip>;
695
- use: ((inputContext: better_call244.MiddlewareInputContext<better_call244.MiddlewareOptions>) => Promise<{
695
+ use: ((inputContext: better_call255.MiddlewareInputContext<better_call255.MiddlewareOptions>) => Promise<{
696
696
  session: {
697
697
  session: Record<string, any> & {
698
698
  id: string;
@@ -773,9 +773,9 @@ declare const apiKey: (options?: ApiKeyOptions | undefined) => {
773
773
  *
774
774
  * @see [Read our docs to learn more.](https://better-auth.com/docs/plugins/api-key#api-method-api-key-list)
775
775
  */
776
- listApiKeys: better_call244.StrictEndpoint<"/api-key/list", {
776
+ listApiKeys: better_call255.StrictEndpoint<"/api-key/list", {
777
777
  method: "GET";
778
- use: ((inputContext: better_call244.MiddlewareInputContext<better_call244.MiddlewareOptions>) => Promise<{
778
+ use: ((inputContext: better_call255.MiddlewareInputContext<better_call255.MiddlewareOptions>) => Promise<{
779
779
  session: {
780
780
  session: Record<string, any> & {
781
781
  id: string;
@@ -957,7 +957,7 @@ declare const apiKey: (options?: ApiKeyOptions | undefined) => {
957
957
  *
958
958
  * @see [Read our docs to learn more.](https://better-auth.com/docs/plugins/api-key#api-method-api-key-delete-all-expired-api-keys)
959
959
  */
960
- deleteAllExpiredApiKeys: better_call244.StrictEndpoint<string, {
960
+ deleteAllExpiredApiKeys: better_call255.StrictEndpoint<string, {
961
961
  method: "POST";
962
962
  }, {
963
963
  success: boolean;
@@ -1079,8 +1079,8 @@ declare const apiKey: (options?: ApiKeyOptions | undefined) => {
1079
1079
  required: false;
1080
1080
  input: true;
1081
1081
  transform: {
1082
- input(value: _better_auth_core_db14.DBPrimitive): string;
1083
- output(value: _better_auth_core_db14.DBPrimitive): any;
1082
+ input(value: _better_auth_core_db7.DBPrimitive): string;
1083
+ output(value: _better_auth_core_db7.DBPrimitive): any;
1084
1084
  };
1085
1085
  };
1086
1086
  };
@@ -1,5 +1,5 @@
1
- import * as _better_auth_core0 from "@better-auth/core";
2
- import * as better_call126 from "better-call";
1
+ import * as _better_auth_core4 from "@better-auth/core";
2
+ import * as better_call140 from "better-call";
3
3
 
4
4
  //#region src/plugins/bearer/index.d.ts
5
5
  interface BearerOptions {
@@ -19,19 +19,20 @@ declare const bearer: (options?: BearerOptions | undefined) => {
19
19
  id: "bearer";
20
20
  hooks: {
21
21
  before: {
22
- matcher(context: _better_auth_core0.HookEndpointContext): boolean;
23
- handler: (inputContext: better_call126.MiddlewareInputContext<better_call126.MiddlewareOptions>) => Promise<{
22
+ matcher(context: _better_auth_core4.HookEndpointContext): boolean;
23
+ handler: (inputContext: better_call140.MiddlewareInputContext<better_call140.MiddlewareOptions>) => Promise<{
24
24
  context: {
25
25
  headers: Headers;
26
26
  };
27
27
  } | undefined>;
28
28
  }[];
29
29
  after: {
30
- matcher(context: _better_auth_core0.HookEndpointContext): true;
31
- handler: (inputContext: better_call126.MiddlewareInputContext<better_call126.MiddlewareOptions>) => Promise<void>;
30
+ matcher(context: _better_auth_core4.HookEndpointContext): true;
31
+ handler: (inputContext: better_call140.MiddlewareInputContext<better_call140.MiddlewareOptions>) => Promise<void>;
32
32
  }[];
33
33
  };
34
+ options: BearerOptions | undefined;
34
35
  };
35
36
  //#endregion
36
- export { bearer };
37
+ export { BearerOptions, bearer };
37
38
  //# sourceMappingURL=index.d.mts.map
@@ -56,7 +56,8 @@ const bearer = (options) => {
56
56
  ctx.setHeader("Access-Control-Expose-Headers", Array.from(headersSet).join(", "));
57
57
  })
58
58
  }]
59
- }
59
+ },
60
+ options
60
61
  };
61
62
  };
62
63
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/plugins/bearer/index.ts"],"sourcesContent":["import type { BetterAuthPlugin } from \"@better-auth/core\";\nimport { createAuthMiddleware } from \"@better-auth/core/api\";\nimport { createHMAC } from \"@better-auth/utils/hmac\";\nimport { serializeSignedCookie } from \"better-call\";\nimport { parseSetCookieHeader } from \"../../cookies\";\n\ninterface BearerOptions {\n\t/**\n\t * If true, only signed tokens\n\t * will be converted to session\n\t * cookies\n\t *\n\t * @default false\n\t */\n\trequireSignature?: boolean | undefined;\n}\n\n/**\n * Converts bearer token to session cookie\n */\nexport const bearer = (options?: BearerOptions | undefined) => {\n\treturn {\n\t\tid: \"bearer\",\n\t\thooks: {\n\t\t\tbefore: [\n\t\t\t\t{\n\t\t\t\t\tmatcher(context) {\n\t\t\t\t\t\treturn Boolean(\n\t\t\t\t\t\t\tcontext.request?.headers.get(\"authorization\") ||\n\t\t\t\t\t\t\t\tcontext.headers?.get(\"authorization\"),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\thandler: createAuthMiddleware(async (c) => {\n\t\t\t\t\t\tconst token =\n\t\t\t\t\t\t\tc.request?.headers.get(\"authorization\")?.replace(\"Bearer \", \"\") ||\n\t\t\t\t\t\t\tc.headers?.get(\"Authorization\")?.replace(\"Bearer \", \"\");\n\t\t\t\t\t\tif (!token) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet signedToken = \"\";\n\t\t\t\t\t\tif (token.includes(\".\")) {\n\t\t\t\t\t\t\tsignedToken = token.replace(\"=\", \"\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (options?.requireSignature) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsignedToken = (\n\t\t\t\t\t\t\t\tawait serializeSignedCookie(\"\", token, c.context.secret)\n\t\t\t\t\t\t\t).replace(\"=\", \"\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst decodedToken = decodeURIComponent(signedToken);\n\t\t\t\t\t\t\tconst isValid = await createHMAC(\n\t\t\t\t\t\t\t\t\"SHA-256\",\n\t\t\t\t\t\t\t\t\"base64urlnopad\",\n\t\t\t\t\t\t\t).verify(\n\t\t\t\t\t\t\t\tc.context.secret,\n\t\t\t\t\t\t\t\tdecodedToken.split(\".\")[0]!,\n\t\t\t\t\t\t\t\tdecodedToken.split(\".\")[1]!,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (!isValid) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst existingHeaders = (c.request?.headers ||\n\t\t\t\t\t\t\tc.headers) as Headers;\n\t\t\t\t\t\tconst headers = new Headers({\n\t\t\t\t\t\t\t...Object.fromEntries(existingHeaders?.entries()),\n\t\t\t\t\t\t});\n\t\t\t\t\t\theaders.append(\n\t\t\t\t\t\t\t\"cookie\",\n\t\t\t\t\t\t\t`${c.context.authCookies.sessionToken.name}=${signedToken}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t],\n\t\t\tafter: [\n\t\t\t\t{\n\t\t\t\t\tmatcher(context) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t},\n\t\t\t\t\thandler: createAuthMiddleware(async (ctx) => {\n\t\t\t\t\t\tconst setCookie = ctx.context.responseHeaders?.get(\"set-cookie\");\n\t\t\t\t\t\tif (!setCookie) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst parsedCookies = parseSetCookieHeader(setCookie);\n\t\t\t\t\t\tconst cookieName = ctx.context.authCookies.sessionToken.name;\n\t\t\t\t\t\tconst sessionCookie = parsedCookies.get(cookieName);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!sessionCookie ||\n\t\t\t\t\t\t\t!sessionCookie.value ||\n\t\t\t\t\t\t\tsessionCookie[\"max-age\"] === 0\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst token = sessionCookie.value;\n\t\t\t\t\t\tconst exposedHeaders =\n\t\t\t\t\t\t\tctx.context.responseHeaders?.get(\n\t\t\t\t\t\t\t\t\"access-control-expose-headers\",\n\t\t\t\t\t\t\t) || \"\";\n\t\t\t\t\t\tconst headersSet = new Set(\n\t\t\t\t\t\t\texposedHeaders\n\t\t\t\t\t\t\t\t.split(\",\")\n\t\t\t\t\t\t\t\t.map((header) => header.trim())\n\t\t\t\t\t\t\t\t.filter(Boolean),\n\t\t\t\t\t\t);\n\t\t\t\t\t\theadersSet.add(\"set-auth-token\");\n\t\t\t\t\t\tctx.setHeader(\"set-auth-token\", token);\n\t\t\t\t\t\tctx.setHeader(\n\t\t\t\t\t\t\t\"Access-Control-Expose-Headers\",\n\t\t\t\t\t\t\tArray.from(headersSet).join(\", \"),\n\t\t\t\t\t\t);\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t} satisfies BetterAuthPlugin;\n};\n"],"mappings":";;;;;;;;;;AAoBA,MAAa,UAAU,YAAwC;AAC9D,QAAO;EACN,IAAI;EACJ,OAAO;GACN,QAAQ,CACP;IACC,QAAQ,SAAS;AAChB,YAAO,QACN,QAAQ,SAAS,QAAQ,IAAI,gBAAgB,IAC5C,QAAQ,SAAS,IAAI,gBAAgB,CACtC;;IAEF,SAAS,qBAAqB,OAAO,MAAM;KAC1C,MAAM,QACL,EAAE,SAAS,QAAQ,IAAI,gBAAgB,EAAE,QAAQ,WAAW,GAAG,IAC/D,EAAE,SAAS,IAAI,gBAAgB,EAAE,QAAQ,WAAW,GAAG;AACxD,SAAI,CAAC,MACJ;KAGD,IAAI,cAAc;AAClB,SAAI,MAAM,SAAS,IAAI,CACtB,eAAc,MAAM,QAAQ,KAAK,GAAG;UAC9B;AACN,UAAI,SAAS,iBACZ;AAED,qBACC,MAAM,sBAAsB,IAAI,OAAO,EAAE,QAAQ,OAAO,EACvD,QAAQ,KAAK,GAAG;;AAEnB,SAAI;MACH,MAAM,eAAe,mBAAmB,YAAY;AASpD,UAAI,CARY,MAAM,WACrB,WACA,iBACA,CAAC,OACD,EAAE,QAAQ,QACV,aAAa,MAAM,IAAI,CAAC,IACxB,aAAa,MAAM,IAAI,CAAC,GACxB,CAEA;aAEM;AACP;;KAED,MAAM,kBAAmB,EAAE,SAAS,WACnC,EAAE;KACH,MAAM,UAAU,IAAI,QAAQ,EAC3B,GAAG,OAAO,YAAY,iBAAiB,SAAS,CAAC,EACjD,CAAC;AACF,aAAQ,OACP,UACA,GAAG,EAAE,QAAQ,YAAY,aAAa,KAAK,GAAG,cAC9C;AACD,YAAO,EACN,SAAS,EACR,SACA,EACD;MACA;IACF,CACD;GACD,OAAO,CACN;IACC,QAAQ,SAAS;AAChB,YAAO;;IAER,SAAS,qBAAqB,OAAO,QAAQ;KAC5C,MAAM,YAAY,IAAI,QAAQ,iBAAiB,IAAI,aAAa;AAChE,SAAI,CAAC,UACJ;KAED,MAAM,gBAAgB,qBAAqB,UAAU;KACrD,MAAM,aAAa,IAAI,QAAQ,YAAY,aAAa;KACxD,MAAM,gBAAgB,cAAc,IAAI,WAAW;AACnD,SACC,CAAC,iBACD,CAAC,cAAc,SACf,cAAc,eAAe,EAE7B;KAED,MAAM,QAAQ,cAAc;KAC5B,MAAM,iBACL,IAAI,QAAQ,iBAAiB,IAC5B,gCACA,IAAI;KACN,MAAM,aAAa,IAAI,IACtB,eACE,MAAM,IAAI,CACV,KAAK,WAAW,OAAO,MAAM,CAAC,CAC9B,OAAO,QAAQ,CACjB;AACD,gBAAW,IAAI,iBAAiB;AAChC,SAAI,UAAU,kBAAkB,MAAM;AACtC,SAAI,UACH,iCACA,MAAM,KAAK,WAAW,CAAC,KAAK,KAAK,CACjC;MACA;IACF,CACD;GACD;EACD"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/plugins/bearer/index.ts"],"sourcesContent":["import type { BetterAuthPlugin } from \"@better-auth/core\";\nimport { createAuthMiddleware } from \"@better-auth/core/api\";\nimport { createHMAC } from \"@better-auth/utils/hmac\";\nimport { serializeSignedCookie } from \"better-call\";\nimport { parseSetCookieHeader } from \"../../cookies\";\n\nexport interface BearerOptions {\n\t/**\n\t * If true, only signed tokens\n\t * will be converted to session\n\t * cookies\n\t *\n\t * @default false\n\t */\n\trequireSignature?: boolean | undefined;\n}\n\n/**\n * Converts bearer token to session cookie\n */\nexport const bearer = (options?: BearerOptions | undefined) => {\n\treturn {\n\t\tid: \"bearer\",\n\t\thooks: {\n\t\t\tbefore: [\n\t\t\t\t{\n\t\t\t\t\tmatcher(context) {\n\t\t\t\t\t\treturn Boolean(\n\t\t\t\t\t\t\tcontext.request?.headers.get(\"authorization\") ||\n\t\t\t\t\t\t\t\tcontext.headers?.get(\"authorization\"),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\thandler: createAuthMiddleware(async (c) => {\n\t\t\t\t\t\tconst token =\n\t\t\t\t\t\t\tc.request?.headers.get(\"authorization\")?.replace(\"Bearer \", \"\") ||\n\t\t\t\t\t\t\tc.headers?.get(\"Authorization\")?.replace(\"Bearer \", \"\");\n\t\t\t\t\t\tif (!token) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet signedToken = \"\";\n\t\t\t\t\t\tif (token.includes(\".\")) {\n\t\t\t\t\t\t\tsignedToken = token.replace(\"=\", \"\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (options?.requireSignature) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsignedToken = (\n\t\t\t\t\t\t\t\tawait serializeSignedCookie(\"\", token, c.context.secret)\n\t\t\t\t\t\t\t).replace(\"=\", \"\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst decodedToken = decodeURIComponent(signedToken);\n\t\t\t\t\t\t\tconst isValid = await createHMAC(\n\t\t\t\t\t\t\t\t\"SHA-256\",\n\t\t\t\t\t\t\t\t\"base64urlnopad\",\n\t\t\t\t\t\t\t).verify(\n\t\t\t\t\t\t\t\tc.context.secret,\n\t\t\t\t\t\t\t\tdecodedToken.split(\".\")[0]!,\n\t\t\t\t\t\t\t\tdecodedToken.split(\".\")[1]!,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (!isValid) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst existingHeaders = (c.request?.headers ||\n\t\t\t\t\t\t\tc.headers) as Headers;\n\t\t\t\t\t\tconst headers = new Headers({\n\t\t\t\t\t\t\t...Object.fromEntries(existingHeaders?.entries()),\n\t\t\t\t\t\t});\n\t\t\t\t\t\theaders.append(\n\t\t\t\t\t\t\t\"cookie\",\n\t\t\t\t\t\t\t`${c.context.authCookies.sessionToken.name}=${signedToken}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t],\n\t\t\tafter: [\n\t\t\t\t{\n\t\t\t\t\tmatcher(context) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t},\n\t\t\t\t\thandler: createAuthMiddleware(async (ctx) => {\n\t\t\t\t\t\tconst setCookie = ctx.context.responseHeaders?.get(\"set-cookie\");\n\t\t\t\t\t\tif (!setCookie) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst parsedCookies = parseSetCookieHeader(setCookie);\n\t\t\t\t\t\tconst cookieName = ctx.context.authCookies.sessionToken.name;\n\t\t\t\t\t\tconst sessionCookie = parsedCookies.get(cookieName);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!sessionCookie ||\n\t\t\t\t\t\t\t!sessionCookie.value ||\n\t\t\t\t\t\t\tsessionCookie[\"max-age\"] === 0\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst token = sessionCookie.value;\n\t\t\t\t\t\tconst exposedHeaders =\n\t\t\t\t\t\t\tctx.context.responseHeaders?.get(\n\t\t\t\t\t\t\t\t\"access-control-expose-headers\",\n\t\t\t\t\t\t\t) || \"\";\n\t\t\t\t\t\tconst headersSet = new Set(\n\t\t\t\t\t\t\texposedHeaders\n\t\t\t\t\t\t\t\t.split(\",\")\n\t\t\t\t\t\t\t\t.map((header) => header.trim())\n\t\t\t\t\t\t\t\t.filter(Boolean),\n\t\t\t\t\t\t);\n\t\t\t\t\t\theadersSet.add(\"set-auth-token\");\n\t\t\t\t\t\tctx.setHeader(\"set-auth-token\", token);\n\t\t\t\t\t\tctx.setHeader(\n\t\t\t\t\t\t\t\"Access-Control-Expose-Headers\",\n\t\t\t\t\t\t\tArray.from(headersSet).join(\", \"),\n\t\t\t\t\t\t);\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\toptions,\n\t} satisfies BetterAuthPlugin;\n};\n"],"mappings":";;;;;;;;;;AAoBA,MAAa,UAAU,YAAwC;AAC9D,QAAO;EACN,IAAI;EACJ,OAAO;GACN,QAAQ,CACP;IACC,QAAQ,SAAS;AAChB,YAAO,QACN,QAAQ,SAAS,QAAQ,IAAI,gBAAgB,IAC5C,QAAQ,SAAS,IAAI,gBAAgB,CACtC;;IAEF,SAAS,qBAAqB,OAAO,MAAM;KAC1C,MAAM,QACL,EAAE,SAAS,QAAQ,IAAI,gBAAgB,EAAE,QAAQ,WAAW,GAAG,IAC/D,EAAE,SAAS,IAAI,gBAAgB,EAAE,QAAQ,WAAW,GAAG;AACxD,SAAI,CAAC,MACJ;KAGD,IAAI,cAAc;AAClB,SAAI,MAAM,SAAS,IAAI,CACtB,eAAc,MAAM,QAAQ,KAAK,GAAG;UAC9B;AACN,UAAI,SAAS,iBACZ;AAED,qBACC,MAAM,sBAAsB,IAAI,OAAO,EAAE,QAAQ,OAAO,EACvD,QAAQ,KAAK,GAAG;;AAEnB,SAAI;MACH,MAAM,eAAe,mBAAmB,YAAY;AASpD,UAAI,CARY,MAAM,WACrB,WACA,iBACA,CAAC,OACD,EAAE,QAAQ,QACV,aAAa,MAAM,IAAI,CAAC,IACxB,aAAa,MAAM,IAAI,CAAC,GACxB,CAEA;aAEM;AACP;;KAED,MAAM,kBAAmB,EAAE,SAAS,WACnC,EAAE;KACH,MAAM,UAAU,IAAI,QAAQ,EAC3B,GAAG,OAAO,YAAY,iBAAiB,SAAS,CAAC,EACjD,CAAC;AACF,aAAQ,OACP,UACA,GAAG,EAAE,QAAQ,YAAY,aAAa,KAAK,GAAG,cAC9C;AACD,YAAO,EACN,SAAS,EACR,SACA,EACD;MACA;IACF,CACD;GACD,OAAO,CACN;IACC,QAAQ,SAAS;AAChB,YAAO;;IAER,SAAS,qBAAqB,OAAO,QAAQ;KAC5C,MAAM,YAAY,IAAI,QAAQ,iBAAiB,IAAI,aAAa;AAChE,SAAI,CAAC,UACJ;KAED,MAAM,gBAAgB,qBAAqB,UAAU;KACrD,MAAM,aAAa,IAAI,QAAQ,YAAY,aAAa;KACxD,MAAM,gBAAgB,cAAc,IAAI,WAAW;AACnD,SACC,CAAC,iBACD,CAAC,cAAc,SACf,cAAc,eAAe,EAE7B;KAED,MAAM,QAAQ,cAAc;KAC5B,MAAM,iBACL,IAAI,QAAQ,iBAAiB,IAC5B,gCACA,IAAI;KACN,MAAM,aAAa,IAAI,IACtB,eACE,MAAM,IAAI,CACV,KAAK,WAAW,OAAO,MAAM,CAAC,CAC9B,OAAO,QAAQ,CACjB;AACD,gBAAW,IAAI,iBAAiB;AAChC,SAAI,UAAU,kBAAkB,MAAM;AACtC,SAAI,UACH,iCACA,MAAM,KAAK,WAAW,CAAC,KAAK,KAAK,CACjC;MACA;IACF,CACD;GACD;EACD;EACA"}
@@ -1,12 +1,13 @@
1
1
  import { CaptchaOptions } from "./types.mjs";
2
- import * as _better_auth_core2 from "@better-auth/core";
2
+ import * as _better_auth_core6 from "@better-auth/core";
3
3
 
4
4
  //#region src/plugins/captcha/index.d.ts
5
5
  declare const captcha: (options: CaptchaOptions) => {
6
6
  id: "captcha";
7
- onRequest: (request: Request, ctx: _better_auth_core2.AuthContext) => Promise<{
7
+ onRequest: (request: Request, ctx: _better_auth_core6.AuthContext) => Promise<{
8
8
  response: Response;
9
9
  } | undefined>;
10
+ options: CaptchaOptions;
10
11
  };
11
12
  //#endregion
12
13
  export { captcha };
@@ -51,7 +51,8 @@ const captcha = (options) => ({
51
51
  status: 500
52
52
  });
53
53
  }
54
- }
54
+ },
55
+ options
55
56
  });
56
57
 
57
58
  //#endregion