better-auth 1.6.23 → 1.6.25

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 (245) hide show
  1. package/dist/adapters/index.d.mts +1 -6
  2. package/dist/api/dispatch.d.mts +0 -1
  3. package/dist/api/index.d.mts +476 -478
  4. package/dist/api/middlewares/authorization.d.mts +12 -8
  5. package/dist/api/middlewares/authorization.mjs +2 -1
  6. package/dist/api/middlewares/index.d.mts +2 -1
  7. package/dist/api/middlewares/origin-check.d.mts +3 -5
  8. package/dist/api/routes/account.d.mts +10 -13
  9. package/dist/api/routes/account.mjs +35 -7
  10. package/dist/api/routes/callback.d.mts +1 -3
  11. package/dist/api/routes/callback.mjs +4 -0
  12. package/dist/api/routes/email-verification.d.mts +4 -8
  13. package/dist/api/routes/email-verification.mjs +15 -2
  14. package/dist/api/routes/error.d.mts +1 -3
  15. package/dist/api/routes/index.d.mts +2 -1
  16. package/dist/api/routes/ok.d.mts +1 -3
  17. package/dist/api/routes/password.d.mts +7 -9
  18. package/dist/api/routes/password.mjs +14 -1
  19. package/dist/api/routes/session.d.mts +22 -24
  20. package/dist/api/routes/session.mjs +5 -1
  21. package/dist/api/routes/sign-in.d.mts +3 -5
  22. package/dist/api/routes/sign-in.mjs +84 -2
  23. package/dist/api/routes/sign-out.d.mts +1 -3
  24. package/dist/api/routes/sign-up.d.mts +3 -4
  25. package/dist/api/routes/sign-up.mjs +3 -2
  26. package/dist/api/routes/update-session.d.mts +3 -4
  27. package/dist/api/routes/update-user.d.mts +13 -14
  28. package/dist/api/routes/update-user.mjs +26 -1
  29. package/dist/auth/full.d.mts +1 -1
  30. package/dist/auth/minimal.d.mts +1 -1
  31. package/dist/client/config.d.mts +12 -14
  32. package/dist/client/config.mjs +2 -2
  33. package/dist/client/equality.d.mts +0 -1
  34. package/dist/client/index.d.mts +6 -5
  35. package/dist/client/lynx/index.d.mts +4 -5
  36. package/dist/client/lynx/lynx-store.d.mts +1 -2
  37. package/dist/client/parser.d.mts +7 -3
  38. package/dist/client/path-to-object.d.mts +3 -4
  39. package/dist/client/plugins/index.d.mts +1 -1
  40. package/dist/client/plugins/infer-plugin.d.mts +0 -1
  41. package/dist/client/query.d.mts +0 -1
  42. package/dist/client/query.mjs +38 -20
  43. package/dist/client/react/index.d.mts +4 -5
  44. package/dist/client/react/react-store.d.mts +1 -2
  45. package/dist/client/session-refresh.d.mts +0 -1
  46. package/dist/client/solid/index.d.mts +6 -6
  47. package/dist/client/solid/index.mjs +4 -2
  48. package/dist/client/svelte/index.d.mts +5 -6
  49. package/dist/client/types.d.mts +2 -2
  50. package/dist/client/vanilla.d.mts +2 -3
  51. package/dist/client/vue/index.d.mts +5 -6
  52. package/dist/context/create-context.mjs +3 -3
  53. package/dist/context/helpers.mjs +2 -2
  54. package/dist/cookies/cookie-utils.d.mts +1 -1
  55. package/dist/cookies/index.d.mts +6 -7
  56. package/dist/cookies/index.mjs +4 -0
  57. package/dist/cookies/session-store.d.mts +1 -0
  58. package/dist/cookies/session-store.mjs +6 -1
  59. package/dist/crypto/index.d.mts +2 -9
  60. package/dist/crypto/jwt.d.mts +0 -1
  61. package/dist/crypto/password.d.mts +1 -5
  62. package/dist/db/adapter-base.d.mts +0 -1
  63. package/dist/db/adapter-kysely.d.mts +0 -1
  64. package/dist/db/field-converter.d.mts +0 -1
  65. package/dist/db/field.d.mts +9 -10
  66. package/dist/db/get-migration.d.mts +0 -1
  67. package/dist/db/get-migration.mjs +8 -4
  68. package/dist/db/get-schema.d.mts +0 -1
  69. package/dist/db/internal-adapter.d.mts +0 -1
  70. package/dist/db/internal-adapter.mjs +61 -1
  71. package/dist/db/revoke-unproven-account-access.d.mts +0 -1
  72. package/dist/db/schema.d.mts +2 -2
  73. package/dist/db/to-zod.d.mts +3 -7
  74. package/dist/db/with-hooks.d.mts +0 -1
  75. package/dist/index.d.mts +4 -3
  76. package/dist/integrations/next-js.d.mts +4 -7
  77. package/dist/integrations/node.d.mts +2 -3
  78. package/dist/integrations/svelte-kit.d.mts +2 -9
  79. package/dist/integrations/tanstack-start-solid.d.mts +2 -5
  80. package/dist/integrations/tanstack-start.d.mts +2 -5
  81. package/dist/oauth2/link-account.d.mts +1 -1
  82. package/dist/oauth2/state.d.mts +0 -1
  83. package/dist/oauth2/utils.d.mts +0 -1
  84. package/dist/package.mjs +1 -1
  85. package/dist/plugins/access/access.d.mts +0 -1
  86. package/dist/plugins/access/types.d.mts +4 -5
  87. package/dist/plugins/additional-fields/client.d.mts +0 -1
  88. package/dist/plugins/admin/access/statement.d.mts +1 -0
  89. package/dist/plugins/admin/admin.d.mts +120 -125
  90. package/dist/plugins/admin/client.d.mts +30 -30
  91. package/dist/plugins/admin/client.mjs +1 -1
  92. package/dist/plugins/admin/error-codes.d.mts +23 -25
  93. package/dist/plugins/admin/index.d.mts +1 -1
  94. package/dist/plugins/admin/routes.mjs +9 -0
  95. package/dist/plugins/admin/schema.d.mts +1 -1
  96. package/dist/plugins/admin/types.d.mts +3 -2
  97. package/dist/plugins/anonymous/client.d.mts +9 -11
  98. package/dist/plugins/anonymous/client.mjs +1 -1
  99. package/dist/plugins/anonymous/error-codes.d.mts +8 -10
  100. package/dist/plugins/anonymous/index.d.mts +14 -18
  101. package/dist/plugins/anonymous/types.d.mts +1 -1
  102. package/dist/plugins/bearer/index.d.mts +4 -7
  103. package/dist/plugins/captcha/index.d.mts +5 -8
  104. package/dist/plugins/captcha/types.d.mts +0 -1
  105. package/dist/plugins/custom-session/client.d.mts +0 -1
  106. package/dist/plugins/custom-session/index.d.mts +7 -12
  107. package/dist/plugins/device-authorization/client.d.mts +0 -1
  108. package/dist/plugins/device-authorization/index.d.mts +19 -22
  109. package/dist/plugins/email-otp/client.d.mts +4 -6
  110. package/dist/plugins/email-otp/client.mjs +1 -1
  111. package/dist/plugins/email-otp/error-codes.d.mts +3 -5
  112. package/dist/plugins/email-otp/index.d.mts +67 -73
  113. package/dist/plugins/email-otp/routes.mjs +2 -0
  114. package/dist/plugins/email-otp/types.d.mts +0 -1
  115. package/dist/plugins/generic-oauth/client.d.mts +10 -11
  116. package/dist/plugins/generic-oauth/client.mjs +1 -1
  117. package/dist/plugins/generic-oauth/error-codes.d.mts +8 -10
  118. package/dist/plugins/generic-oauth/index.d.mts +40 -44
  119. package/dist/plugins/generic-oauth/providers/auth0.d.mts +0 -1
  120. package/dist/plugins/generic-oauth/providers/gumroad.d.mts +0 -1
  121. package/dist/plugins/generic-oauth/providers/hubspot.d.mts +0 -1
  122. package/dist/plugins/generic-oauth/providers/index.d.mts +2 -1
  123. package/dist/plugins/generic-oauth/providers/keycloak.d.mts +0 -1
  124. package/dist/plugins/generic-oauth/providers/line.d.mts +0 -1
  125. package/dist/plugins/generic-oauth/providers/microsoft-entra-id.d.mts +0 -1
  126. package/dist/plugins/generic-oauth/providers/okta.d.mts +0 -1
  127. package/dist/plugins/generic-oauth/providers/patreon.d.mts +0 -1
  128. package/dist/plugins/generic-oauth/providers/slack.d.mts +0 -1
  129. package/dist/plugins/generic-oauth/providers/yandex.d.mts +0 -1
  130. package/dist/plugins/generic-oauth/routes.mjs +14 -0
  131. package/dist/plugins/generic-oauth/types.d.mts +1 -2
  132. package/dist/plugins/haveibeenpwned/index.d.mts +3 -6
  133. package/dist/plugins/index.d.mts +4 -1
  134. package/dist/plugins/jwt/client.d.mts +2 -4
  135. package/dist/plugins/jwt/index.d.mts +8 -11
  136. package/dist/plugins/jwt/sign.d.mts +2 -2
  137. package/dist/plugins/jwt/types.d.mts +1 -1
  138. package/dist/plugins/jwt/utils.d.mts +2 -4
  139. package/dist/plugins/jwt/verify.d.mts +0 -1
  140. package/dist/plugins/last-login-method/client.mjs +13 -0
  141. package/dist/plugins/last-login-method/index.d.mts +11 -5
  142. package/dist/plugins/last-login-method/index.mjs +8 -0
  143. package/dist/plugins/magic-link/client.d.mts +0 -1
  144. package/dist/plugins/magic-link/index.d.mts +4 -5
  145. package/dist/plugins/magic-link/index.mjs +32 -1
  146. package/dist/plugins/mcp/authorize.mjs +12 -0
  147. package/dist/plugins/mcp/client/adapters.d.mts +0 -1
  148. package/dist/plugins/mcp/client/index.d.mts +2 -0
  149. package/dist/plugins/mcp/client/index.mjs +36 -11
  150. package/dist/plugins/mcp/index.d.mts +10 -11
  151. package/dist/plugins/multi-session/client.d.mts +2 -4
  152. package/dist/plugins/multi-session/client.mjs +1 -1
  153. package/dist/plugins/multi-session/error-codes.d.mts +1 -3
  154. package/dist/plugins/multi-session/index.d.mts +7 -11
  155. package/dist/plugins/multi-session/index.mjs +45 -0
  156. package/dist/plugins/oauth-popup/client.d.mts +6 -12
  157. package/dist/plugins/oauth-popup/client.mjs +5 -3
  158. package/dist/plugins/oauth-popup/error-codes.d.mts +4 -6
  159. package/dist/plugins/oauth-popup/index.d.mts +8 -12
  160. package/dist/plugins/oauth-popup/index.mjs +1 -1
  161. package/dist/plugins/oauth-popup/types.d.mts +1 -2
  162. package/dist/plugins/oauth-proxy/index.d.mts +6 -9
  163. package/dist/plugins/oauth-proxy/index.mjs +2 -2
  164. package/dist/plugins/oidc-provider/authorize.mjs +9 -0
  165. package/dist/plugins/oidc-provider/client.d.mts +1 -2
  166. package/dist/plugins/oidc-provider/index.d.mts +15 -17
  167. package/dist/plugins/oidc-provider/index.mjs +26 -2
  168. package/dist/plugins/oidc-provider/schema.d.mts +0 -1
  169. package/dist/plugins/oidc-provider/schema.mjs +37 -0
  170. package/dist/plugins/oidc-provider/types.d.mts +1 -1
  171. package/dist/plugins/one-tap/client.d.mts +3 -6
  172. package/dist/plugins/one-tap/client.mjs +3 -0
  173. package/dist/plugins/one-tap/index.d.mts +1 -3
  174. package/dist/plugins/one-tap/index.mjs +6 -1
  175. package/dist/plugins/one-time-token/client.d.mts +1 -2
  176. package/dist/plugins/one-time-token/index.d.mts +5 -6
  177. package/dist/plugins/one-time-token/index.mjs +30 -0
  178. package/dist/plugins/open-api/generator.d.mts +0 -1
  179. package/dist/plugins/open-api/generator.mjs +81 -5
  180. package/dist/plugins/open-api/index.d.mts +3 -5
  181. package/dist/plugins/organization/access/statement.d.mts +1 -0
  182. package/dist/plugins/organization/adapter.d.mts +56 -82
  183. package/dist/plugins/organization/adapter.mjs +17 -3
  184. package/dist/plugins/organization/client.d.mts +106 -105
  185. package/dist/plugins/organization/client.mjs +7 -4
  186. package/dist/plugins/organization/error-codes.d.mts +59 -61
  187. package/dist/plugins/organization/has-permission.d.mts +0 -1
  188. package/dist/plugins/organization/has-permission.mjs +1 -1
  189. package/dist/plugins/organization/index.d.mts +1 -1
  190. package/dist/plugins/organization/organization.d.mts +7 -7
  191. package/dist/plugins/organization/organization.mjs +434 -1
  192. package/dist/plugins/organization/permission.d.mts +2 -2
  193. package/dist/plugins/organization/routes/crud-access-control.d.mts +17 -17
  194. package/dist/plugins/organization/routes/crud-invites.d.mts +53 -54
  195. package/dist/plugins/organization/routes/crud-invites.mjs +1 -1
  196. package/dist/plugins/organization/routes/crud-members.d.mts +44 -46
  197. package/dist/plugins/organization/routes/crud-members.mjs +4 -1
  198. package/dist/plugins/organization/routes/crud-org.d.mts +47 -48
  199. package/dist/plugins/organization/routes/crud-org.mjs +2 -2
  200. package/dist/plugins/organization/routes/crud-team.d.mts +50 -51
  201. package/dist/plugins/organization/schema.d.mts +4 -4
  202. package/dist/plugins/organization/schema.mjs +1 -1
  203. package/dist/plugins/organization/types.d.mts +16 -16
  204. package/dist/plugins/phone-number/client.d.mts +13 -15
  205. package/dist/plugins/phone-number/client.mjs +1 -1
  206. package/dist/plugins/phone-number/error-codes.d.mts +12 -14
  207. package/dist/plugins/phone-number/index.d.mts +41 -47
  208. package/dist/plugins/phone-number/routes.mjs +15 -0
  209. package/dist/plugins/phone-number/types.d.mts +1 -1
  210. package/dist/plugins/siwe/client.d.mts +0 -1
  211. package/dist/plugins/siwe/index.d.mts +4 -5
  212. package/dist/plugins/test-utils/index.d.mts +2 -4
  213. package/dist/plugins/test-utils/types.d.mts +1 -0
  214. package/dist/plugins/two-factor/backup-codes/index.d.mts +4 -6
  215. package/dist/plugins/two-factor/backup-codes/index.mjs +52 -1
  216. package/dist/plugins/two-factor/client.d.mts +12 -15
  217. package/dist/plugins/two-factor/client.mjs +1 -1
  218. package/dist/plugins/two-factor/error-code.d.mts +10 -12
  219. package/dist/plugins/two-factor/index.d.mts +27 -31
  220. package/dist/plugins/two-factor/index.mjs +30 -0
  221. package/dist/plugins/two-factor/otp/index.d.mts +2 -4
  222. package/dist/plugins/two-factor/otp/index.mjs +42 -1
  223. package/dist/plugins/two-factor/totp/index.d.mts +4 -6
  224. package/dist/plugins/two-factor/totp/index.mjs +47 -0
  225. package/dist/plugins/two-factor/types.d.mts +1 -1
  226. package/dist/plugins/username/client.d.mts +9 -11
  227. package/dist/plugins/username/client.mjs +1 -1
  228. package/dist/plugins/username/error-codes.d.mts +8 -10
  229. package/dist/plugins/username/index.d.mts +17 -22
  230. package/dist/plugins/username/schema.d.mts +3 -5
  231. package/dist/state.d.mts +0 -1
  232. package/dist/state.mjs +4 -0
  233. package/dist/test-utils/test-instance.d.mts +5 -3
  234. package/dist/test-utils/test-instance.mjs +4 -1
  235. package/dist/types/adapter.d.mts +1 -1
  236. package/dist/types/api.d.mts +1 -2
  237. package/dist/types/auth.d.mts +0 -1
  238. package/dist/types/helper.d.mts +5 -5
  239. package/dist/types/index.d.mts +2 -2
  240. package/dist/types/models.d.mts +0 -1
  241. package/dist/types/plugins.d.mts +2 -3
  242. package/dist/utils/index.d.mts +2 -1
  243. package/dist/utils/request.mjs +23 -0
  244. package/dist/utils/url.d.mts +0 -1
  245. package/package.json +11 -11
@@ -1,5 +1,3 @@
1
- import * as _better_auth_core_db0 from "@better-auth/core/db";
2
-
3
1
  //#region src/plugins/username/schema.d.ts
4
2
  declare const getSchema: (normalizer: {
5
3
  username: (username: string) => string;
@@ -14,14 +12,14 @@ declare const getSchema: (normalizer: {
14
12
  unique: true;
15
13
  returned: true;
16
14
  transform: {
17
- input(value: _better_auth_core_db0.DBPrimitive): string | number | boolean | Date | Record<string, unknown> | unknown[] | null | undefined;
15
+ input(value: import("@better-auth/core/db").DBPrimitive): string | number | boolean | Date | Record<string, unknown> | unknown[] | null | undefined;
18
16
  };
19
17
  };
20
18
  displayUsername: {
21
19
  type: "string";
22
20
  required: false;
23
21
  transform: {
24
- input(value: _better_auth_core_db0.DBPrimitive): string | number | boolean | Date | Record<string, unknown> | unknown[] | null | undefined;
22
+ input(value: import("@better-auth/core/db").DBPrimitive): string | number | boolean | Date | Record<string, unknown> | unknown[] | null | undefined;
25
23
  };
26
24
  };
27
25
  };
@@ -29,4 +27,4 @@ declare const getSchema: (normalizer: {
29
27
  };
30
28
  type UsernameSchema = ReturnType<typeof getSchema>;
31
29
  //#endregion
32
- export { UsernameSchema };
30
+ export { UsernameSchema, getSchema };
package/dist/state.d.mts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { GenericEndpointContext } from "@better-auth/core";
2
2
  import { BetterAuthError } from "@better-auth/core/error";
3
3
  import * as z from "zod";
4
-
5
4
  //#region src/state.d.ts
6
5
  declare const stateDataSchema: z.ZodObject<{
7
6
  callbackURL: z.ZodString;
package/dist/state.mjs CHANGED
@@ -10,6 +10,10 @@ const stateDataSchema = z.looseObject({
10
10
  errorURL: z.string().optional(),
11
11
  newUserURL: z.string().optional(),
12
12
  expiresAt: z.number(),
13
+ /**
14
+ * CSRF nonce returned to the OAuth provider. When using cookie state storage,
15
+ * this must match the callback `state` query parameter.
16
+ */
13
17
  oauthState: z.string().optional(),
14
18
  link: z.object({
15
19
  email: z.string(),
@@ -1,11 +1,13 @@
1
1
  import { Session, User } from "../types/models.mjs";
2
2
  import { Auth } from "../types/auth.mjs";
3
+ import "../types/index.mjs";
4
+ import "../index.mjs";
3
5
  import { AuthClient } from "../client/vanilla.mjs";
6
+ import "../client/index.mjs";
4
7
  import { setCookieToHeader } from "../cookies/cookie-utils.mjs";
8
+ import "../cookies/index.mjs";
5
9
  import { Awaitable, BetterAuthClientOptions, BetterAuthOptions } from "@better-auth/core";
6
- import * as _better_auth_core_db_adapter0 from "@better-auth/core/db/adapter";
7
10
  import { SuccessContext } from "@better-fetch/fetch";
8
-
9
11
  //#region src/test-utils/test-instance.d.ts
10
12
  declare function getTestInstance<O extends Partial<BetterAuthOptions>, C extends BetterAuthClientOptions>(options?: O | undefined, config?: {
11
13
  clientOptions?: C;
@@ -48,7 +50,7 @@ declare function getTestInstance<O extends Partial<BetterAuthOptions>, C extends
48
50
  cookieSetter: typeof setCookieToHeader;
49
51
  customFetchImpl: (url: string | URL | Request, init?: RequestInit | undefined) => Promise<Response>;
50
52
  sessionSetter: (headers: Headers) => (context: SuccessContext) => void;
51
- db: _better_auth_core_db_adapter0.DBAdapter<BetterAuthOptions>;
53
+ db: import("@better-auth/core/db/adapter").DBAdapter<BetterAuthOptions>;
52
54
  runWithUser: (email: string, password: string, fn: (headers: Headers) => Awaitable<void>) => Promise<void>;
53
55
  }>;
54
56
  //#endregion
@@ -44,7 +44,10 @@ async function getTestInstance(options, config) {
44
44
  async function mongodbClient() {
45
45
  const { MongoClient } = await import("mongodb");
46
46
  const dbClient = async (connectionString, dbName) => {
47
- const client = new MongoClient(connectionString);
47
+ const client = new MongoClient(connectionString, {
48
+ serverSelectionTimeoutMS: 2e3,
49
+ connectTimeoutMS: 2e3
50
+ });
48
51
  await client.connect();
49
52
  return client.db(dbName);
50
53
  };
@@ -1,2 +1,2 @@
1
1
  import { DBAdapter as DBAdapter$1, DBAdapterInstance, DBAdapterSchemaCreation, DBTransactionAdapter, JoinConfig, JoinOption, Where as Where$1 } from "@better-auth/core/db/adapter";
2
- export { type DBAdapter$1 as DBAdapter, type DBAdapterInstance, type DBAdapterSchemaCreation, type DBTransactionAdapter, type JoinConfig, type JoinOption, type Where$1 as Where };
2
+ export type { DBAdapter$1 as DBAdapter, DBAdapterInstance, DBAdapterSchemaCreation, DBTransactionAdapter, JoinConfig, JoinOption, Where$1 as Where };
@@ -1,8 +1,7 @@
1
1
  import { PrettifyDeep, UnionToIntersection } from "./helper.mjs";
2
2
  import { Endpoint } from "better-call";
3
-
4
3
  //#region src/types/api.d.ts
5
- type FilteredAPI<API> = Omit<API, API extends { [key in infer K]: Endpoint } ? K extends string ? K extends "getSession" ? never : API[K]["options"]["metadata"] extends {
4
+ type FilteredAPI<API> = Omit<API, API extends { [key in infer K]: Endpoint; } ? K extends string ? K extends "getSession" ? never : API[K]["options"]["metadata"] extends {
6
5
  isAction: false;
7
6
  } | {
8
7
  scope: "http";
@@ -4,7 +4,6 @@ import { InferPluginContext, InferPluginErrorCodes } from "./plugins.mjs";
4
4
  import { router } from "../api/index.mjs";
5
5
  import { AuthContext, BetterAuthOptions } from "@better-auth/core";
6
6
  import { BASE_ERROR_CODES } from "@better-auth/core/error";
7
-
8
7
  //#region src/types/auth.d.ts
9
8
  type Auth<Options extends BetterAuthOptions = BetterAuthOptions> = {
10
9
  handler: (request: Request) => Promise<Response>;
@@ -1,22 +1,22 @@
1
1
  //#region src/types/helper.d.ts
2
2
  type IsAny<T> = 0 extends 1 & T ? true : false;
3
3
  type Prettify<T> = Omit<T, never>;
4
- type PrettifyDeep<T> = { [K in keyof T]: T[K] extends ((...args: any[]) => any) ? T[K] : T[K] extends object ? T[K] extends Array<any> ? T[K] : T[K] extends Date ? T[K] : PrettifyDeep<T[K]> : T[K] } & {};
4
+ type PrettifyDeep<T> = { [K in keyof T]: T[K] extends ((...args: any[]) => any) ? T[K] : T[K] extends object ? T[K] extends Array<any> ? T[K] : T[K] extends Date ? T[K] : PrettifyDeep<T[K]> : T[K]; } & {};
5
5
  type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
6
- type RequiredKeysOf<BaseType extends object> = Exclude<{ [Key in keyof BaseType]: BaseType extends Record<Key, BaseType[Key]> ? Key : never }[keyof BaseType], undefined>;
6
+ type RequiredKeysOf<BaseType extends object> = Exclude<{ [Key in keyof BaseType]: BaseType extends Record<Key, BaseType[Key]> ? Key : never; }[keyof BaseType], undefined>;
7
7
  type HasRequiredKeys<BaseType> = IsAny<BaseType> extends true ? false : [BaseType] extends [object] ? RequiredKeysOf<BaseType & object> extends never ? false : true : false;
8
- type StripEmptyObjects<T extends object> = { [K in keyof T]: T[K] };
8
+ type StripEmptyObjects<T extends object> = { [K in keyof T]: T[K]; };
9
9
  /**
10
10
  * Object merge replacing `Base`'s keys with `Override`'s.
11
11
  * The naive `Omit<Base, keyof Override> & Override` form breaks under generics.
12
12
  *
13
13
  * @see https://github.com/microsoft/TypeScript/issues/57466#issuecomment-1957988380
14
14
  */
15
- type OverrideMerge<Base, Override> = Base extends unknown ? Override extends unknown ? Prettify<{ [K in keyof Base as K extends keyof Override ? never : K]: Base[K] } & Override> : never : never;
15
+ type OverrideMerge<Base, Override> = Base extends unknown ? Override extends unknown ? Prettify<{ [K in keyof Base as K extends keyof Override ? never : K]: Base[K]; } & Override> : never : never;
16
16
  /**
17
17
  * Extracts a Record-typed field from a plugin, guarding against `any`.
18
18
  */
19
- type ExtractPluginField<T, Field extends string> = IsAny<T> extends true ? {} : T extends { [K in Field]?: Record<string, any> } ? T[Field] extends Record<string, any> ? T[Field] : {} : {};
19
+ type ExtractPluginField<T, Field extends string> = IsAny<T> extends true ? {} : T extends { [K in Field]?: Record<string, any>; } ? T[Field] extends Record<string, any> ? T[Field] : {} : {};
20
20
  /**
21
21
  * Walks a plugin tuple with tail-recursive accumulator (TS 4.5+),
22
22
  * extracting and intersecting the given field from each element.
@@ -6,5 +6,5 @@ import { Account, AdditionalSessionFieldsInput, AdditionalUserFieldsInput, Infer
6
6
  import { InferOptionSchema, InferPluginContext, InferPluginErrorCodes, InferPluginIDs } from "./plugins.mjs";
7
7
  import { Auth } from "./auth.mjs";
8
8
  import { BetterAuthAdvancedOptions, BetterAuthCookies, BetterAuthOptions, BetterAuthPlugin, BetterAuthRateLimitOptions, StoreIdentifierOption } from "@better-auth/core";
9
- export * from "@better-auth/core/social-providers";
10
- export { Account, AdditionalSessionFieldsInput, AdditionalUserFieldsInput, Auth, type BetterAuthAdvancedOptions, BetterAuthClientOptions, BetterAuthClientPlugin, type BetterAuthCookies, type BetterAuthOptions, type BetterAuthPlugin, type BetterAuthRateLimitOptions, ClientAtomListener, ClientStore, DBAdapter, DBAdapterInstance, DBAdapterSchemaCreation, DBTransactionAdapter, ExtractPluginField, FilteredAPI, HasRequiredKeys, InferAPI, InferActions, InferAdditionalFromClient, InferClientAPI, InferErrorCodes, InferOptionSchema, InferPluginContext, InferPluginErrorCodes, InferPluginFieldFromTuple, InferPluginIDs, InferPluginTypes, InferSessionAPI, InferSessionFromClient, InferUserFromClient, IsAny, IsSignal, JoinConfig, JoinOption, OverrideMerge, Prettify, PrettifyDeep, RateLimit, RequiredKeysOf, Session, SessionQueryParams, type StoreIdentifierOption, StripEmptyObjects, UnionToIntersection, User, Verification, Where };
9
+ export type * from "@better-auth/core/social-providers";
10
+ export { type Account, type AdditionalSessionFieldsInput, type AdditionalUserFieldsInput, type Auth, type BetterAuthAdvancedOptions, type BetterAuthClientOptions, type BetterAuthClientPlugin, type BetterAuthCookies, type BetterAuthOptions, type BetterAuthPlugin, type BetterAuthRateLimitOptions, type ClientAtomListener, type ClientStore, type DBAdapter, type DBAdapterInstance, type DBAdapterSchemaCreation, type DBTransactionAdapter, type ExtractPluginField, FilteredAPI, type HasRequiredKeys, InferAPI, InferActions, InferAdditionalFromClient, InferClientAPI, InferErrorCodes, type InferOptionSchema, type InferPluginContext, type InferPluginErrorCodes, type InferPluginFieldFromTuple, type InferPluginIDs, type InferPluginTypes, InferSessionAPI, InferSessionFromClient, InferUserFromClient, type IsAny, IsSignal, type JoinConfig, type JoinOption, type OverrideMerge, type Prettify, type PrettifyDeep, type RateLimit, type RequiredKeysOf, type Session, SessionQueryParams, type StoreIdentifierOption, type StripEmptyObjects, type UnionToIntersection, type User, type Verification, type Where };
@@ -1,7 +1,6 @@
1
1
  import { ExtractPluginField, InferPluginFieldFromTuple, UnionToIntersection } from "./helper.mjs";
2
2
  import { BetterAuthOptions } from "@better-auth/core";
3
3
  import { Account, InferDBFieldsFromOptionsInput, InferDBFieldsFromPluginsInput, RateLimit, Session as Session$1, User as User$1, Verification } from "@better-auth/core/db";
4
-
5
4
  //#region src/types/models.d.ts
6
5
  type AdditionalUserFieldsInput<Options extends BetterAuthOptions> = InferDBFieldsFromPluginsInput<"user", Options["plugins"]> & InferDBFieldsFromOptionsInput<Options["user"]>;
7
6
  type AdditionalSessionFieldsInput<Options extends BetterAuthOptions> = InferDBFieldsFromPluginsInput<"session", Options["plugins"]> & InferDBFieldsFromOptionsInput<Options["session"]>;
@@ -1,14 +1,13 @@
1
1
  import { ExtractPluginField, InferPluginFieldFromTuple, UnionToIntersection } from "./helper.mjs";
2
2
  import { AuthContext, BetterAuthOptions, BetterAuthPlugin } from "@better-auth/core";
3
3
  import { BetterAuthPluginDBSchema } from "@better-auth/core/db";
4
-
5
4
  //#region src/types/plugins.d.ts
6
5
  type InferOptionSchema<S extends BetterAuthPluginDBSchema> = S extends Record<string, {
7
6
  fields: infer Fields;
8
7
  }> ? { [K in keyof S]?: {
9
8
  modelName?: string | undefined;
10
- fields?: { [P in keyof Fields]?: string } | undefined;
11
- } } : never;
9
+ fields?: { [P in keyof Fields]?: string; } | undefined;
10
+ }; } : never;
12
11
  type InferPluginErrorCodes<O extends BetterAuthOptions> = O["plugins"] extends readonly [unknown, ...unknown[]] ? InferPluginFieldFromTuple<O["plugins"], "$ERROR_CODES"> : O["plugins"] extends Array<infer P> ? UnionToIntersection<ExtractPluginField<P, "$ERROR_CODES">> : {};
13
12
  type InferPluginIDs<O extends BetterAuthOptions> = O["plugins"] extends Array<infer P> ? UnionToIntersection<P extends BetterAuthPlugin ? P["id"] : never> : never;
14
13
  type ExtractInitContext<P extends BetterAuthPlugin> = P["init"] extends ((...args: any[]) => infer R) ? Awaited<R> extends {
@@ -1,4 +1,5 @@
1
1
  import { generateState, parseState } from "../oauth2/state.mjs";
2
2
  import { StateData, generateGenericState, parseGenericState } from "../state.mjs";
3
3
  import { HIDE_METADATA } from "./hide-metadata.mjs";
4
- import { getBaseURL, getHost, getHostFromSource, getOrigin, getProtocol, getProtocolFromSource, isDynamicBaseURLConfig, isRequestLike, matchesHostPattern, resolveBaseURL, resolveDynamicBaseURL, trimTrailingSlashes } from "./url.mjs";
4
+ import { getBaseURL, getHost, getHostFromSource, getOrigin, getProtocol, getProtocolFromSource, isDynamicBaseURLConfig, isRequestLike, matchesHostPattern, resolveBaseURL, resolveDynamicBaseURL, trimTrailingSlashes } from "./url.mjs";
5
+ export { HIDE_METADATA, type StateData, generateGenericState, generateState, getBaseURL, getHost, getHostFromSource, getOrigin, getProtocol, getProtocolFromSource, isDynamicBaseURLConfig, isRequestLike, matchesHostPattern, parseGenericState, parseState, resolveBaseURL, resolveDynamicBaseURL, trimTrailingSlashes };
@@ -0,0 +1,23 @@
1
+ //#region src/utils/request.ts
2
+ function safeCloneRequest(request) {
3
+ if (!request) return;
4
+ try {
5
+ return request.clone();
6
+ } catch {
7
+ return new Request(request.url, {
8
+ cache: request.cache,
9
+ credentials: request.credentials,
10
+ headers: request.headers,
11
+ integrity: request.integrity,
12
+ keepalive: request.keepalive,
13
+ method: request.method,
14
+ mode: request.mode,
15
+ redirect: request.redirect,
16
+ referrer: request.referrer,
17
+ referrerPolicy: request.referrerPolicy,
18
+ signal: request.signal
19
+ });
20
+ }
21
+ }
22
+ //#endregion
23
+ export { safeCloneRequest };
@@ -1,5 +1,4 @@
1
1
  import { BaseURLConfig, DynamicBaseURLConfig } from "@better-auth/core";
2
-
3
2
  //#region src/utils/url.d.ts
4
3
  declare function trimTrailingSlashes(value: string): string;
5
4
  declare function getBaseURL(url?: string, path?: string, request?: Request, loadEnv?: boolean, trustedProxyHeaders?: boolean | undefined): string | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "better-auth",
3
- "version": "1.6.23",
3
+ "version": "1.6.25",
4
4
  "description": "The most comprehensive authentication framework for TypeScript.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -489,13 +489,13 @@
489
489
  "kysely": "^0.28.17 || ^0.29.0",
490
490
  "nanostores": "^1.1.1",
491
491
  "zod": "^4.3.6",
492
- "@better-auth/core": "1.6.23",
493
- "@better-auth/drizzle-adapter": "1.6.23",
494
- "@better-auth/kysely-adapter": "1.6.23",
495
- "@better-auth/memory-adapter": "1.6.23",
496
- "@better-auth/mongo-adapter": "1.6.23",
497
- "@better-auth/prisma-adapter": "1.6.23",
498
- "@better-auth/telemetry": "1.6.23"
492
+ "@better-auth/core": "1.6.25",
493
+ "@better-auth/drizzle-adapter": "1.6.25",
494
+ "@better-auth/kysely-adapter": "1.6.25",
495
+ "@better-auth/memory-adapter": "1.6.25",
496
+ "@better-auth/mongo-adapter": "1.6.25",
497
+ "@better-auth/prisma-adapter": "1.6.25",
498
+ "@better-auth/telemetry": "1.6.25"
499
499
  },
500
500
  "devDependencies": {
501
501
  "@lynx-js/react": "^0.116.3",
@@ -512,14 +512,14 @@
512
512
  "happy-dom": "^20.8.9",
513
513
  "listhen": "^1.9.0",
514
514
  "msw": "^2.12.10",
515
- "next": "^16.2.6",
515
+ "next": "^16.2.11",
516
516
  "oauth2-mock-server": "^8.2.2",
517
517
  "react": "^19.2.4",
518
518
  "react-dom": "^19.2.4",
519
519
  "solid-js": "^1.9.11",
520
- "tsdown": "0.21.1",
520
+ "tsdown": "0.22.7",
521
521
  "type-fest": "^5.4.4",
522
- "typescript": "^5.9.3",
522
+ "typescript": "^6.0.3",
523
523
  "vite": "^7.3.2",
524
524
  "vitest": "^4.1.5",
525
525
  "vue": "^3.5.29"