@better-auth/core 1.7.0-rc.5 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/api/index.d.mts +28 -28
  2. package/dist/async_hooks/index.d.mts +1 -0
  3. package/dist/async_hooks/pure.index.d.mts +1 -0
  4. package/dist/context/endpoint-context.d.mts +1 -1
  5. package/dist/context/endpoint-context.mjs +4 -4
  6. package/dist/context/global.d.mts +1 -0
  7. package/dist/context/global.mjs +1 -1
  8. package/dist/context/request-state.d.mts +1 -0
  9. package/dist/context/request-state.mjs +3 -6
  10. package/dist/context/transaction.d.mts +3 -4
  11. package/dist/context/transaction.mjs +4 -4
  12. package/dist/db/adapter/factory.d.mts +5 -3
  13. package/dist/db/adapter/factory.mjs +1 -1
  14. package/dist/db/adapter/get-default-field-name.d.mts +9 -2
  15. package/dist/db/adapter/get-default-model-name.d.mts +5 -1
  16. package/dist/db/adapter/get-field-attributes.d.mts +11 -4
  17. package/dist/db/adapter/get-field-name.d.mts +9 -2
  18. package/dist/db/adapter/get-id-field.d.mts +12 -4
  19. package/dist/db/adapter/get-model-name.d.mts +5 -1
  20. package/dist/db/adapter/index.d.mts +32 -7
  21. package/dist/db/adapter/types.d.mts +17 -5
  22. package/dist/db/adapter/utils.d.mts +1 -0
  23. package/dist/db/database-index.d.mts +12 -2
  24. package/dist/db/get-tables.d.mts +0 -1
  25. package/dist/db/plugin.d.mts +3 -3
  26. package/dist/db/schema/account.d.mts +1 -1
  27. package/dist/db/schema/rate-limit.d.mts +1 -1
  28. package/dist/db/schema/session.d.mts +1 -1
  29. package/dist/db/schema/shared.d.mts +1 -0
  30. package/dist/db/schema/user.d.mts +1 -1
  31. package/dist/db/schema/verification.d.mts +1 -1
  32. package/dist/db/type.d.mts +11 -8
  33. package/dist/env/logger.d.mts +25 -25
  34. package/dist/error/codes.d.mts +1 -0
  35. package/dist/error/index.d.mts +1 -0
  36. package/dist/index.d.mts +1 -1
  37. package/dist/instrumentation/attributes.d.mts +1 -0
  38. package/dist/instrumentation/pure.index.d.mts +1 -0
  39. package/dist/instrumentation/tracer.mjs +1 -1
  40. package/dist/oauth2/authorization-params.d.mts +1 -0
  41. package/dist/oauth2/client-assertion.d.mts +13 -3
  42. package/dist/oauth2/client-credentials-token.d.mts +17 -3
  43. package/dist/oauth2/create-authorization-url.d.mts +21 -3
  44. package/dist/oauth2/dpop.d.mts +23 -2
  45. package/dist/oauth2/dpop.mjs +1 -1
  46. package/dist/oauth2/oauth-provider.d.mts +7 -13
  47. package/dist/oauth2/refresh-access-token.d.mts +19 -3
  48. package/dist/oauth2/refresh-access-token.mjs +1 -1
  49. package/dist/oauth2/reject-redirects.mjs +1 -1
  50. package/dist/oauth2/token-endpoint-auth.d.mts +1 -0
  51. package/dist/oauth2/utils.d.mts +1 -0
  52. package/dist/oauth2/utils.mjs +1 -1
  53. package/dist/oauth2/validate-authorization-code.d.mts +29 -5
  54. package/dist/oauth2/verify-id-token.d.mts +1 -1
  55. package/dist/oauth2/verify.d.mts +7 -5
  56. package/dist/oauth2/verify.mjs +2 -2
  57. package/dist/social-providers/apple.d.mts +18 -5
  58. package/dist/social-providers/atlassian.d.mts +15 -4
  59. package/dist/social-providers/cognito.d.mts +18 -5
  60. package/dist/social-providers/discord.d.mts +13 -4
  61. package/dist/social-providers/dropbox.d.mts +15 -4
  62. package/dist/social-providers/facebook.d.mts +18 -6
  63. package/dist/social-providers/figma.d.mts +15 -4
  64. package/dist/social-providers/github.d.mts +16 -4
  65. package/dist/social-providers/gitlab.d.mts +16 -4
  66. package/dist/social-providers/google.d.mts +25 -6
  67. package/dist/social-providers/huggingface.d.mts +15 -4
  68. package/dist/social-providers/index.d.mts +504 -113
  69. package/dist/social-providers/kakao.d.mts +13 -4
  70. package/dist/social-providers/kick.d.mts +15 -4
  71. package/dist/social-providers/line.d.mts +16 -4
  72. package/dist/social-providers/linear.d.mts +14 -4
  73. package/dist/social-providers/linkedin.d.mts +14 -4
  74. package/dist/social-providers/microsoft-entra-id.d.mts +14 -5
  75. package/dist/social-providers/microsoft-entra-id.mjs +1 -2
  76. package/dist/social-providers/naver.d.mts +22 -23
  77. package/dist/social-providers/notion.d.mts +14 -4
  78. package/dist/social-providers/paybin.d.mts +16 -4
  79. package/dist/social-providers/paypal.d.mts +13 -4
  80. package/dist/social-providers/polar.d.mts +15 -4
  81. package/dist/social-providers/railway.d.mts +15 -4
  82. package/dist/social-providers/reddit.d.mts +13 -4
  83. package/dist/social-providers/roblox.d.mts +13 -4
  84. package/dist/social-providers/salesforce.d.mts +15 -4
  85. package/dist/social-providers/slack.d.mts +13 -4
  86. package/dist/social-providers/spotify.d.mts +15 -4
  87. package/dist/social-providers/tiktok.d.mts +14 -6
  88. package/dist/social-providers/twitch.d.mts +13 -4
  89. package/dist/social-providers/twitter.d.mts +19 -26
  90. package/dist/social-providers/vercel.d.mts +15 -4
  91. package/dist/social-providers/vk.d.mts +16 -4
  92. package/dist/social-providers/wechat.d.mts +12 -4
  93. package/dist/social-providers/zoom.d.mts +18 -6
  94. package/dist/types/context.d.mts +2 -2
  95. package/dist/types/cookie.d.mts +1 -1
  96. package/dist/types/helper.d.mts +1 -1
  97. package/dist/types/index.d.mts +1 -1
  98. package/dist/types/init-options.d.mts +18 -26
  99. package/dist/types/plugin-client.d.mts +3 -1
  100. package/dist/types/plugin.d.mts +2 -2
  101. package/dist/utils/async.d.mts +1 -0
  102. package/dist/utils/db.d.mts +0 -1
  103. package/dist/utils/deprecate.d.mts +1 -0
  104. package/dist/utils/email.d.mts +4 -1
  105. package/dist/utils/error-codes.d.mts +2 -2
  106. package/dist/utils/host.d.mts +1 -27
  107. package/dist/utils/host.mjs +1 -1
  108. package/dist/utils/ip.d.mts +0 -1
  109. package/dist/utils/ip.mjs +1 -1
  110. package/dist/utils/is-api-error.d.mts +1 -0
  111. package/dist/utils/redirect-uri.d.mts +1 -0
  112. package/package.json +2 -2
  113. package/src/context/endpoint-context.ts +6 -4
  114. package/src/context/request-state.ts +5 -23
  115. package/src/context/transaction.ts +6 -4
  116. package/src/db/type.ts +2 -1
  117. package/src/types/init-options.ts +6 -4
@@ -1,12 +1,12 @@
1
1
  import { BetterAuthDBSchema, ModelNames, SecondaryStorage } from "../db/type.mjs";
2
2
  import { DBAdapter } from "../db/adapter/index.mjs";
3
3
  import { createLogger } from "../env/logger.mjs";
4
- import "../db/index.mjs";
5
4
  import { AuthContext } from "../types/context.mjs";
6
- import "../types/index.mjs";
7
5
  import { OAuthProvider } from "../oauth2/oauth-provider.mjs";
8
- import "../oauth2/index.mjs";
6
+ import * as _$better_call0 from "better-call";
9
7
  import { EndpointHandler, EndpointOptions, MiddlewareHandler, StrictEndpoint } from "better-call";
8
+ import * as _$_better_auth_core0 from "@better-auth/core";
9
+
10
10
  //#region src/api/index.d.ts
11
11
  /**
12
12
  * Response headers that forbid any intermediary (proxy, CDN, browser) from
@@ -26,10 +26,10 @@ declare const NO_STORE_HEADERS: {
26
26
  readonly "Cache-Control": "no-store";
27
27
  readonly Pragma: "no-cache";
28
28
  };
29
- declare const optionsMiddleware: import("better-call").Middleware<import("better-call").MiddlewareOptions, <InputCtx extends import("better-call").MiddlewareInputContext<import("better-call").MiddlewareOptions>>(inputContext: InputCtx) => Promise<AuthContext>>;
29
+ declare const optionsMiddleware: _$better_call0.Middleware<_$better_call0.MiddlewareOptions, <InputCtx extends _$better_call0.MiddlewareInputContext<_$better_call0.MiddlewareOptions>>(inputContext: InputCtx) => Promise<AuthContext>>;
30
30
  declare const createAuthMiddleware: {
31
- <Options extends import("better-call").MiddlewareOptions, R>(options: Options, handler: (ctx: import("better-call").MiddlewareContext<Options, import("@better-auth/core").PluginContext<import("@better-auth/core").BetterAuthOptions> & import("@better-auth/core").InfoContext & {
32
- options: import("@better-auth/core").BetterAuthOptions;
31
+ <Options extends _$better_call0.MiddlewareOptions, R>(options: Options, handler: (ctx: _$better_call0.MiddlewareContext<Options, _$_better_auth_core0.PluginContext<_$_better_auth_core0.BetterAuthOptions> & _$_better_auth_core0.InfoContext & {
32
+ options: _$_better_auth_core0.BetterAuthOptions;
33
33
  trustedOrigins: string[];
34
34
  trustedProviders: string[];
35
35
  isTrustedOrigin: (url: string, settings?: {
@@ -103,24 +103,24 @@ declare const createAuthMiddleware: {
103
103
  } & Record<string, any>;
104
104
  } | null) => void;
105
105
  socialProviders: OAuthProvider[];
106
- authCookies: import("@better-auth/core").BetterAuthCookies;
106
+ authCookies: _$_better_auth_core0.BetterAuthCookies;
107
107
  logger: ReturnType<typeof createLogger>;
108
108
  rateLimit: {
109
109
  enabled: boolean;
110
110
  window: number;
111
111
  max: number;
112
112
  storage: "memory" | "database" | "secondary-storage";
113
- } & Omit<import("@better-auth/core").BetterAuthRateLimitOptions, "enabled" | "window" | "max" | "storage">;
114
- adapter: DBAdapter<import("@better-auth/core").BetterAuthOptions>;
115
- internalAdapter: import("@better-auth/core").InternalAdapter<import("@better-auth/core").BetterAuthOptions>;
116
- createAuthCookie: (cookieName: string, overrideAttributes?: Partial<import("better-call").CookieOptions> | undefined) => import("@better-auth/core").BetterAuthCookie;
113
+ } & Omit<_$_better_auth_core0.BetterAuthRateLimitOptions, "enabled" | "window" | "max" | "storage">;
114
+ adapter: DBAdapter<_$_better_auth_core0.BetterAuthOptions>;
115
+ internalAdapter: _$_better_auth_core0.InternalAdapter<_$_better_auth_core0.BetterAuthOptions>;
116
+ createAuthCookie: (cookieName: string, overrideAttributes?: Partial<_$better_call0.CookieOptions> | undefined) => _$_better_auth_core0.BetterAuthCookie;
117
117
  secret: string;
118
- secretConfig: string | import("@better-auth/core").SecretConfig;
118
+ secretConfig: string | _$_better_auth_core0.SecretConfig;
119
119
  sessionConfig: {
120
120
  updateAge: number;
121
121
  expiresIn: number;
122
122
  freshAge: number;
123
- cookieCacheSigner?: import("@better-auth/core").CookieCacheSigner | undefined;
123
+ cookieCacheSigner?: _$_better_auth_core0.CookieCacheSigner | undefined;
124
124
  cookieRefreshCache: false | {
125
125
  enabled: true;
126
126
  updateAge: number;
@@ -141,7 +141,7 @@ declare const createAuthMiddleware: {
141
141
  minPasswordLength: number;
142
142
  maxPasswordLength: number;
143
143
  };
144
- checkPassword: (userId: string, ctx: import("@better-auth/core").GenericEndpointContext<import("@better-auth/core").BetterAuthOptions>) => Promise<boolean>;
144
+ checkPassword: (userId: string, ctx: _$_better_auth_core0.GenericEndpointContext<_$_better_auth_core0.BetterAuthOptions>) => Promise<boolean>;
145
145
  };
146
146
  tables: BetterAuthDBSchema;
147
147
  runMigrations: () => Promise<void>;
@@ -153,13 +153,13 @@ declare const createAuthMiddleware: {
153
153
  skipOriginCheck: boolean | string[];
154
154
  skipCSRFCheck: boolean;
155
155
  runInBackground: (promise: Promise<unknown>) => void;
156
- runInBackgroundOrAwait: (promise: Promise<unknown> | void) => import("@better-auth/core").Awaitable<unknown>;
156
+ runInBackgroundOrAwait: (promise: Promise<unknown> | void) => _$_better_auth_core0.Awaitable<unknown>;
157
157
  } & {
158
158
  returned?: unknown | undefined;
159
159
  responseHeaders?: Headers | undefined;
160
- }>) => Promise<R>): import("better-call").Middleware<Options, (inputContext: import("better-call").MiddlewareInputContext<Options>) => Promise<R>>;
161
- <Options extends import("better-call").MiddlewareOptions, R_1>(handler: (ctx: import("better-call").MiddlewareContext<Options, import("@better-auth/core").PluginContext<import("@better-auth/core").BetterAuthOptions> & import("@better-auth/core").InfoContext & {
162
- options: import("@better-auth/core").BetterAuthOptions;
160
+ }>) => Promise<R>): _$better_call0.Middleware<Options, (inputContext: _$better_call0.MiddlewareInputContext<Options>) => Promise<R>>;
161
+ <Options extends _$better_call0.MiddlewareOptions, R_1>(handler: (ctx: _$better_call0.MiddlewareContext<Options, _$_better_auth_core0.PluginContext<_$_better_auth_core0.BetterAuthOptions> & _$_better_auth_core0.InfoContext & {
162
+ options: _$_better_auth_core0.BetterAuthOptions;
163
163
  trustedOrigins: string[];
164
164
  trustedProviders: string[];
165
165
  isTrustedOrigin: (url: string, settings?: {
@@ -233,24 +233,24 @@ declare const createAuthMiddleware: {
233
233
  } & Record<string, any>;
234
234
  } | null) => void;
235
235
  socialProviders: OAuthProvider[];
236
- authCookies: import("@better-auth/core").BetterAuthCookies;
236
+ authCookies: _$_better_auth_core0.BetterAuthCookies;
237
237
  logger: ReturnType<typeof createLogger>;
238
238
  rateLimit: {
239
239
  enabled: boolean;
240
240
  window: number;
241
241
  max: number;
242
242
  storage: "memory" | "database" | "secondary-storage";
243
- } & Omit<import("@better-auth/core").BetterAuthRateLimitOptions, "enabled" | "window" | "max" | "storage">;
244
- adapter: DBAdapter<import("@better-auth/core").BetterAuthOptions>;
245
- internalAdapter: import("@better-auth/core").InternalAdapter<import("@better-auth/core").BetterAuthOptions>;
246
- createAuthCookie: (cookieName: string, overrideAttributes?: Partial<import("better-call").CookieOptions> | undefined) => import("@better-auth/core").BetterAuthCookie;
243
+ } & Omit<_$_better_auth_core0.BetterAuthRateLimitOptions, "enabled" | "window" | "max" | "storage">;
244
+ adapter: DBAdapter<_$_better_auth_core0.BetterAuthOptions>;
245
+ internalAdapter: _$_better_auth_core0.InternalAdapter<_$_better_auth_core0.BetterAuthOptions>;
246
+ createAuthCookie: (cookieName: string, overrideAttributes?: Partial<_$better_call0.CookieOptions> | undefined) => _$_better_auth_core0.BetterAuthCookie;
247
247
  secret: string;
248
- secretConfig: string | import("@better-auth/core").SecretConfig;
248
+ secretConfig: string | _$_better_auth_core0.SecretConfig;
249
249
  sessionConfig: {
250
250
  updateAge: number;
251
251
  expiresIn: number;
252
252
  freshAge: number;
253
- cookieCacheSigner?: import("@better-auth/core").CookieCacheSigner | undefined;
253
+ cookieCacheSigner?: _$_better_auth_core0.CookieCacheSigner | undefined;
254
254
  cookieRefreshCache: false | {
255
255
  enabled: true;
256
256
  updateAge: number;
@@ -271,7 +271,7 @@ declare const createAuthMiddleware: {
271
271
  minPasswordLength: number;
272
272
  maxPasswordLength: number;
273
273
  };
274
- checkPassword: (userId: string, ctx: import("@better-auth/core").GenericEndpointContext<import("@better-auth/core").BetterAuthOptions>) => Promise<boolean>;
274
+ checkPassword: (userId: string, ctx: _$_better_auth_core0.GenericEndpointContext<_$_better_auth_core0.BetterAuthOptions>) => Promise<boolean>;
275
275
  };
276
276
  tables: BetterAuthDBSchema;
277
277
  runMigrations: () => Promise<void>;
@@ -283,11 +283,11 @@ declare const createAuthMiddleware: {
283
283
  skipOriginCheck: boolean | string[];
284
284
  skipCSRFCheck: boolean;
285
285
  runInBackground: (promise: Promise<unknown>) => void;
286
- runInBackgroundOrAwait: (promise: Promise<unknown> | void) => import("@better-auth/core").Awaitable<unknown>;
286
+ runInBackgroundOrAwait: (promise: Promise<unknown> | void) => _$_better_auth_core0.Awaitable<unknown>;
287
287
  } & {
288
288
  returned?: unknown | undefined;
289
289
  responseHeaders?: Headers | undefined;
290
- }>) => Promise<R_1>): import("better-call").Middleware<Options, (inputContext: import("better-call").MiddlewareInputContext<Options>) => Promise<R_1>>;
290
+ }>) => Promise<R_1>): _$better_call0.Middleware<Options, (inputContext: _$better_call0.MiddlewareInputContext<Options>) => Promise<R_1>>;
291
291
  };
292
292
  type AuthEndpointHandler<Path extends string, Options extends EndpointOptions, R> = EndpointHandler<Path, Options, R, AuthContext>;
293
293
  type PathlessAuthEndpointHandler<Options extends EndpointOptions, R> = AuthEndpointHandler<string, Options, R>;
@@ -1,4 +1,5 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
+
2
3
  //#region src/async_hooks/index.d.ts
3
4
  declare function getAsyncLocalStorage(): Promise<typeof AsyncLocalStorage>;
4
5
  //#endregion
@@ -1,4 +1,5 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
+
2
3
  //#region src/async_hooks/pure.index.d.ts
3
4
  declare function getAsyncLocalStorage(): Promise<typeof AsyncLocalStorage>;
4
5
  //#endregion
@@ -1,7 +1,7 @@
1
1
  import { AuthContext } from "../types/context.mjs";
2
- import "../types/index.mjs";
3
2
  import { EndpointContext, InputContext } from "better-call";
4
3
  import { AsyncLocalStorage } from "@better-auth/core/async_hooks";
4
+
5
5
  //#region src/context/endpoint-context.d.ts
6
6
  type AuthEndpointContext = Partial<InputContext<string, any> & EndpointContext<string, any>> & {
7
7
  context: AuthContext;
@@ -3,10 +3,10 @@ import { getAsyncLocalStorage } from "@better-auth/core/async_hooks";
3
3
  //#region src/context/endpoint-context.ts
4
4
  const ensureAsyncStorage = async () => {
5
5
  const betterAuthGlobal = __getBetterAuthGlobal();
6
- if (!betterAuthGlobal.context.endpointContextAsyncStorage) {
7
- const AsyncLocalStorage = await getAsyncLocalStorage();
8
- betterAuthGlobal.context.endpointContextAsyncStorage = new AsyncLocalStorage();
9
- }
6
+ const existing = betterAuthGlobal.context.endpointContextAsyncStorage;
7
+ if (existing) return existing;
8
+ const AsyncLocalStorage = await getAsyncLocalStorage();
9
+ betterAuthGlobal.context.endpointContextAsyncStorage ??= new AsyncLocalStorage();
10
10
  return betterAuthGlobal.context.endpointContextAsyncStorage;
11
11
  };
12
12
  /**
@@ -1,4 +1,5 @@
1
1
  import { AsyncLocalStorage } from "@better-auth/core/async_hooks";
2
+
2
3
  //#region src/context/global.d.ts
3
4
  declare function getBetterAuthVersion(): string;
4
5
  //#endregion
@@ -2,7 +2,7 @@
2
2
  const symbol = Symbol.for("better-auth:global");
3
3
  let bind = null;
4
4
  const __context = {};
5
- const __betterAuthVersion = "1.7.0-rc.5";
5
+ const __betterAuthVersion = "1.7.0";
6
6
  /**
7
7
  * We store context instance in the globalThis.
8
8
  *
@@ -1,4 +1,5 @@
1
1
  import { AsyncLocalStorage } from "@better-auth/core/async_hooks";
2
+
2
3
  //#region src/context/request-state.d.ts
3
4
  type RequestStateWeakMap = WeakMap<object, any>;
4
5
  declare function getRequestStateAsyncLocalStorage(): Promise<AsyncLocalStorage<RequestStateWeakMap>>;
@@ -1,16 +1,13 @@
1
1
  import { __getBetterAuthGlobal } from "./global.mjs";
2
2
  import { getAsyncLocalStorage } from "@better-auth/core/async_hooks";
3
3
  //#region src/context/request-state.ts
4
- let asyncStorageInit = null;
5
4
  const ensureAsyncStorage = async () => {
6
5
  const betterAuthGlobal = __getBetterAuthGlobal();
7
6
  const existing = betterAuthGlobal.context.requestStateAsyncStorage;
8
7
  if (existing) return existing;
9
- if (!asyncStorageInit) asyncStorageInit = getAsyncLocalStorage().then((AsyncLocalStorage) => {
10
- betterAuthGlobal.context.requestStateAsyncStorage ??= new AsyncLocalStorage();
11
- return betterAuthGlobal.context.requestStateAsyncStorage;
12
- });
13
- return asyncStorageInit;
8
+ const AsyncLocalStorage = await getAsyncLocalStorage();
9
+ betterAuthGlobal.context.requestStateAsyncStorage ??= new AsyncLocalStorage();
10
+ return betterAuthGlobal.context.requestStateAsyncStorage;
14
11
  };
15
12
  async function getRequestStateAsyncLocalStorage() {
16
13
  return ensureAsyncStorage();
@@ -1,7 +1,7 @@
1
1
  import { DBAdapter, DBTransactionAdapter } from "../db/adapter/index.mjs";
2
2
  import { BetterAuthOptions } from "../types/init-options.mjs";
3
- import "../types/index.mjs";
4
- import { AsyncLocalStorage } from "node:async_hooks";
3
+ import { AsyncLocalStorage } from "@better-auth/core/async_hooks";
4
+
5
5
  //#region src/context/transaction.d.ts
6
6
  type StoredAdapter = DBTransactionAdapter<BetterAuthOptions>;
7
7
  type HookContext = {
@@ -25,8 +25,7 @@ declare const runWithTransaction: <R, Options extends BetterAuthOptions = Better
25
25
  * If not in a transaction, the hook will execute immediately.
26
26
  */
27
27
  declare const queueAfterTransactionHook: (hook: () => Promise<void>, options?: {
28
- /** Handles a queued hook failure after the surrounding work has committed. */
29
- onError?: (error: unknown) => void | Promise<void>;
28
+ /** Handles a queued hook failure after the surrounding work has committed. */onError?: (error: unknown) => void | Promise<void>;
30
29
  }) => Promise<void>;
31
30
  //#endregion
32
31
  export { getCurrentAdapter, getCurrentDBAdapterAsyncLocalStorage, queueAfterTransactionHook, runWithAdapter, runWithTransaction };
@@ -3,10 +3,10 @@ import { getAsyncLocalStorage } from "@better-auth/core/async_hooks";
3
3
  //#region src/context/transaction.ts
4
4
  const ensureAsyncStorage = async () => {
5
5
  const betterAuthGlobal = __getBetterAuthGlobal();
6
- if (!betterAuthGlobal.context.adapterAsyncStorage) {
7
- const AsyncLocalStorage = await getAsyncLocalStorage();
8
- betterAuthGlobal.context.adapterAsyncStorage = new AsyncLocalStorage();
9
- }
6
+ const existing = betterAuthGlobal.context.adapterAsyncStorage;
7
+ if (existing) return existing;
8
+ const AsyncLocalStorage = await getAsyncLocalStorage();
9
+ betterAuthGlobal.context.adapterAsyncStorage ??= new AsyncLocalStorage();
10
10
  return betterAuthGlobal.context.adapterAsyncStorage;
11
11
  };
12
12
  /**
@@ -7,9 +7,11 @@ import { initGetModelName } from "./get-model-name.mjs";
7
7
  import { AdapterFactoryConfig, AdapterFactoryCustomizeAdapterCreator, AdapterFactoryOptions, AdapterTestDebugLogs } from "./types.mjs";
8
8
  import { DBAdapter } from "./index.mjs";
9
9
  import { BetterAuthOptions } from "../../types/init-options.mjs";
10
- import "../../types/index.mjs";
11
10
  //#region src/db/adapter/factory.d.ts
12
11
  type AdapterFactory<Options extends BetterAuthOptions> = (options: Options) => DBAdapter<Options>;
13
- declare const createAdapterFactory: <Options extends BetterAuthOptions>({ adapter: customAdapter, config: cfg }: AdapterFactoryOptions) => AdapterFactory<Options>;
12
+ declare const createAdapterFactory: <Options extends BetterAuthOptions>({
13
+ adapter: customAdapter,
14
+ config: cfg
15
+ }: AdapterFactoryOptions) => AdapterFactory<Options>;
14
16
  //#endregion
15
- export { AdapterFactory, AdapterFactoryConfig, AdapterFactoryCustomizeAdapterCreator, AdapterFactoryOptions, AdapterTestDebugLogs, createAdapterFactory, initGetDefaultFieldName, initGetDefaultModelName, initGetFieldAttributes, initGetFieldName, initGetIdField, initGetModelName };
17
+ export { AdapterFactory, createAdapterFactory };
@@ -841,4 +841,4 @@ function formatAction(action) {
841
841
  return `${TTY_COLORS.dim}(${action})${TTY_COLORS.reset}`;
842
842
  }
843
843
  //#endregion
844
- export { createAdapterFactory, initGetDefaultFieldName, initGetDefaultModelName, initGetFieldAttributes, initGetFieldName, initGetIdField, initGetModelName };
844
+ export { createAdapterFactory };
@@ -1,9 +1,16 @@
1
1
  import { BetterAuthDBSchema } from "../type.mjs";
2
+
2
3
  //#region src/db/adapter/get-default-field-name.d.ts
3
- declare const initGetDefaultFieldName: ({ schema, usePlural }: {
4
+ declare const initGetDefaultFieldName: ({
5
+ schema,
6
+ usePlural
7
+ }: {
4
8
  schema: BetterAuthDBSchema;
5
9
  usePlural: boolean | undefined;
6
- }) => ({ field, model: unsafeModel }: {
10
+ }) => ({
11
+ field,
12
+ model: unsafeModel
13
+ }: {
7
14
  model: string;
8
15
  field: string;
9
16
  }) => string;
@@ -1,6 +1,10 @@
1
1
  import { BetterAuthDBSchema } from "../type.mjs";
2
+
2
3
  //#region src/db/adapter/get-default-model-name.d.ts
3
- declare const initGetDefaultModelName: ({ usePlural, schema }: {
4
+ declare const initGetDefaultModelName: ({
5
+ usePlural,
6
+ schema
7
+ }: {
4
8
  usePlural: boolean | undefined;
5
9
  schema: BetterAuthDBSchema;
6
10
  }) => (model: string) => string;
@@ -1,9 +1,13 @@
1
1
  import { BetterAuthDBSchema, DBFieldAttribute, DBFieldType } from "../type.mjs";
2
2
  import { BetterAuthOptions } from "../../types/init-options.mjs";
3
- import "../index.mjs";
4
- import "../../types/index.mjs";
5
3
  //#region src/db/adapter/get-field-attributes.d.ts
6
- declare const initGetFieldAttributes: ({ usePlural, schema, options, customIdGenerator, disableIdGeneration }: {
4
+ declare const initGetFieldAttributes: ({
5
+ usePlural,
6
+ schema,
7
+ options,
8
+ customIdGenerator,
9
+ disableIdGeneration
10
+ }: {
7
11
  usePlural?: boolean;
8
12
  schema: BetterAuthDBSchema;
9
13
  options: BetterAuthOptions;
@@ -11,7 +15,10 @@ declare const initGetFieldAttributes: ({ usePlural, schema, options, customIdGen
11
15
  customIdGenerator?: ((props: {
12
16
  model: string;
13
17
  }) => string) | undefined;
14
- }) => ({ model, field }: {
18
+ }) => ({
19
+ model,
20
+ field
21
+ }: {
15
22
  model: string;
16
23
  field: string;
17
24
  }) => DBFieldAttribute<DBFieldType>;
@@ -1,9 +1,16 @@
1
1
  import { BetterAuthDBSchema } from "../type.mjs";
2
+
2
3
  //#region src/db/adapter/get-field-name.d.ts
3
- declare const initGetFieldName: ({ schema, usePlural }: {
4
+ declare const initGetFieldName: ({
5
+ schema,
6
+ usePlural
7
+ }: {
4
8
  schema: BetterAuthDBSchema;
5
9
  usePlural: boolean | undefined;
6
- }) => ({ model: modelName, field: fieldName }: {
10
+ }) => ({
11
+ model: modelName,
12
+ field: fieldName
13
+ }: {
7
14
  model: string;
8
15
  field: string;
9
16
  }) => string;
@@ -1,9 +1,14 @@
1
1
  import { BetterAuthDBSchema, DBPrimitive } from "../type.mjs";
2
2
  import { BetterAuthOptions } from "../../types/init-options.mjs";
3
- import "../index.mjs";
4
- import "../../types/index.mjs";
5
3
  //#region src/db/adapter/get-id-field.d.ts
6
- declare const initGetIdField: ({ usePlural, schema, disableIdGeneration, options, customIdGenerator, supportsUUIDs }: {
4
+ declare const initGetIdField: ({
5
+ usePlural,
6
+ schema,
7
+ disableIdGeneration,
8
+ options,
9
+ customIdGenerator,
10
+ supportsUUIDs
11
+ }: {
7
12
  usePlural?: boolean;
8
13
  schema: BetterAuthDBSchema;
9
14
  options: BetterAuthOptions;
@@ -12,7 +17,10 @@ declare const initGetIdField: ({ usePlural, schema, disableIdGeneration, options
12
17
  model: string;
13
18
  }) => string) | undefined;
14
19
  supportsUUIDs?: boolean;
15
- }) => ({ customModelName, forceAllowId }: {
20
+ }) => ({
21
+ customModelName,
22
+ forceAllowId
23
+ }: {
16
24
  customModelName?: string;
17
25
  forceAllowId?: boolean;
18
26
  }) => {
@@ -1,6 +1,10 @@
1
1
  import { BetterAuthDBSchema } from "../type.mjs";
2
+
2
3
  //#region src/db/adapter/get-model-name.d.ts
3
- declare const initGetModelName: ({ usePlural, schema }: {
4
+ declare const initGetModelName: ({
5
+ usePlural,
6
+ schema
7
+ }: {
4
8
  usePlural: boolean | undefined;
5
9
  schema: BetterAuthDBSchema;
6
10
  }) => (model: string) => string;
@@ -9,7 +9,6 @@ import { AdapterFactoryConfig, AdapterFactoryCustomizeAdapterCreator, AdapterFac
9
9
  import { AdapterFactory, createAdapterFactory } from "./factory.mjs";
10
10
  import { deepmerge, withApplyDefault } from "./utils.mjs";
11
11
  import { BetterAuthOptions } from "../../types/init-options.mjs";
12
- import "../../types/index.mjs";
13
12
  //#region src/db/adapter/index.d.ts
14
13
  type DBAdapterDebugLogOption = boolean | {
15
14
  /**
@@ -489,7 +488,11 @@ type DBAdapter<Options extends BetterAuthOptions = BetterAuthOptions> = {
489
488
  };
490
489
  type CleanedWhere = Required<Where>;
491
490
  interface CustomAdapter {
492
- create: <T extends Record<string, any>>({ data, model, select }: {
491
+ create: <T extends Record<string, any>>({
492
+ data,
493
+ model,
494
+ select
495
+ }: {
493
496
  model: string;
494
497
  data: T;
495
498
  select?: string[] | undefined;
@@ -504,13 +507,26 @@ interface CustomAdapter {
504
507
  where: CleanedWhere[];
505
508
  update: Record<string, any>;
506
509
  }) => Promise<number>;
507
- findOne: <T>({ model, where, select, join }: {
510
+ findOne: <T>({
511
+ model,
512
+ where,
513
+ select,
514
+ join
515
+ }: {
508
516
  model: string;
509
517
  where: CleanedWhere[];
510
518
  select?: string[] | undefined;
511
519
  join?: JoinConfig | undefined;
512
520
  }) => Promise<T | null>;
513
- findMany: <T>({ model, where, limit, select, sortBy, offset, join }: {
521
+ findMany: <T>({
522
+ model,
523
+ where,
524
+ limit,
525
+ select,
526
+ sortBy,
527
+ offset,
528
+ join
529
+ }: {
514
530
  model: string;
515
531
  where?: CleanedWhere[] | undefined;
516
532
  limit: number;
@@ -522,11 +538,17 @@ interface CustomAdapter {
522
538
  offset?: number | undefined;
523
539
  join?: JoinConfig | undefined;
524
540
  }) => Promise<T[]>;
525
- delete: ({ model, where }: {
541
+ delete: ({
542
+ model,
543
+ where
544
+ }: {
526
545
  model: string;
527
546
  where: CleanedWhere[];
528
547
  }) => Promise<void>;
529
- deleteMany: ({ model, where }: {
548
+ deleteMany: ({
549
+ model,
550
+ where
551
+ }: {
530
552
  model: string;
531
553
  where: CleanedWhere[];
532
554
  }) => Promise<number>;
@@ -558,7 +580,10 @@ interface CustomAdapter {
558
580
  increment: Record<string, number>;
559
581
  set?: Record<string, unknown> | undefined;
560
582
  }) => Promise<T | null>;
561
- count: ({ model, where }: {
583
+ count: ({
584
+ model,
585
+ where
586
+ }: {
562
587
  model: string;
563
588
  where?: CleanedWhere[] | undefined;
564
589
  }) => Promise<number>;
@@ -1,7 +1,6 @@
1
1
  import { BetterAuthDBSchema, DBFieldAttribute } from "../type.mjs";
2
2
  import { CleanedWhere, CustomAdapter, DBAdapterFactoryConfig, DBTransactionAdapter, JoinConfig, Where } from "./index.mjs";
3
3
  import { BetterAuthOptions } from "../../types/init-options.mjs";
4
- import "../../types/index.mjs";
5
4
  //#region src/db/adapter/types.d.ts
6
5
  type AdapterFactoryOptions = {
7
6
  config: AdapterFactoryConfig;
@@ -36,7 +35,10 @@ type AdapterFactoryCustomizeAdapterCreator = (config: {
36
35
  /**
37
36
  * Get the field name which is expected to be saved in the database based on the user's schema.
38
37
  */
39
- getFieldName: ({ model, field }: {
38
+ getFieldName: ({
39
+ model,
40
+ field
41
+ }: {
40
42
  model: string;
41
43
  field: string;
42
44
  }) => string;
@@ -64,7 +66,10 @@ type AdapterFactoryCustomizeAdapterCreator = (config: {
64
66
  * 2. When using a custom fieldName, doing something like `schema[model].fields[field]` will not work.
65
67
  *
66
68
  */
67
- getDefaultFieldName: ({ model, field }: {
69
+ getDefaultFieldName: ({
70
+ model,
71
+ field
72
+ }: {
68
73
  model: string;
69
74
  field: string;
70
75
  }) => string;
@@ -73,13 +78,20 @@ type AdapterFactoryCustomizeAdapterCreator = (config: {
73
78
  *
74
79
  * Note: any model name or field name is allowed, whether default to schema or not.
75
80
  */
76
- getFieldAttributes: ({ model, field }: {
81
+ getFieldAttributes: ({
82
+ model,
83
+ field
84
+ }: {
77
85
  model: string;
78
86
  field: string;
79
87
  }) => DBFieldAttribute;
80
88
  transformInput: (data: Record<string, unknown>, defaultModelName: string, action: "create" | "update", forceAllowId?: boolean | undefined) => Promise<Record<string, unknown>>;
81
89
  transformOutput: (data: Record<string, unknown>, defaultModelName: string, select?: string[] | undefined, joinConfig?: JoinConfig | undefined) => Promise<Record<string, unknown>>;
82
- transformWhereClause: <W extends Where[] | undefined>({ model, where, action }: {
90
+ transformWhereClause: <W extends Where[] | undefined>({
91
+ model,
92
+ where,
93
+ action
94
+ }: {
83
95
  where: W;
84
96
  model: string;
85
97
  action: "create" | "update" | "findOne" | "findMany" | "updateMany" | "delete" | "deleteMany" | "consumeOne" | "incrementOne" | "count";
@@ -1,4 +1,5 @@
1
1
  import { DBFieldAttribute } from "../type.mjs";
2
+
2
3
  //#region src/db/adapter/utils.d.ts
3
4
  declare function withApplyDefault(value: any, field: DBFieldAttribute, action: "create" | "update" | "findOne" | "findMany"): any;
4
5
  declare function deepmerge<T>(target: T, source: Partial<T>): T;
@@ -1,4 +1,5 @@
1
1
  import { DBFieldAttribute, DBTableIndex } from "./type.mjs";
2
+
2
3
  //#region src/db/database-index.d.ts
3
4
  declare function getPortableDatabaseIdentifierKey(identifier: string): string;
4
5
  /** A table-level index resolved to physical database columns. */
@@ -18,7 +19,11 @@ declare function getDatabaseIndexName(tableName: string, index: DBTableIndex): s
18
19
  /** Returns the database name used by legacy field-level index metadata. */
19
20
  declare function getDatabaseFieldIndexName(tableName: string, columnName: string, unique: boolean): string;
20
21
  /** Resolves logical index fields to their configured database column names. */
21
- declare function resolveDatabaseTableIndexes({ fields, indexes, tableName }: {
22
+ declare function resolveDatabaseTableIndexes({
23
+ fields,
24
+ indexes,
25
+ tableName
26
+ }: {
22
27
  fields: Readonly<Record<string, DBFieldAttribute>>;
23
28
  indexes: readonly DBTableIndex[] | undefined;
24
29
  tableName: string;
@@ -27,7 +32,12 @@ declare function resolveDatabaseTableIndexes({ fields, indexes, tableName }: {
27
32
  * Returns a safe generated string length for a column across all of its table
28
33
  * indexes in byte-limited SQL dialects.
29
34
  */
30
- declare function getDatabaseIndexStringLength({ columnName, dialect, fields, indexes }: {
35
+ declare function getDatabaseIndexStringLength({
36
+ columnName,
37
+ dialect,
38
+ fields,
39
+ indexes
40
+ }: {
31
41
  columnName: string;
32
42
  dialect: BoundedDatabaseIndexDialect;
33
43
  fields: Readonly<Record<string, DBFieldAttribute>>;
@@ -1,7 +1,6 @@
1
1
  import { BetterAuthDBSchema } from "./type.mjs";
2
2
  import { ResolvedDBTableIndex } from "./database-index.mjs";
3
3
  import { BetterAuthOptions } from "../types/init-options.mjs";
4
- import "../types/index.mjs";
5
4
  //#region src/db/get-tables.d.ts
6
5
  declare function getAuthTablesWithResolvedIndexes(options: BetterAuthOptions): {
7
6
  indexesByTable: ReadonlyMap<string, readonly ResolvedDBTableIndex[]>;
@@ -1,13 +1,13 @@
1
1
  import { DBFieldAttribute, DBTableIndex } from "./type.mjs";
2
+
2
3
  //#region src/db/plugin.d.ts
3
4
  type BetterAuthPluginDBSchema = { [table in string]: {
4
5
  fields: {
5
6
  [field: string]: DBFieldAttribute;
6
- };
7
- /** Table-level indexes, including compound indexes. */
7
+ }; /** Table-level indexes, including compound indexes. */
8
8
  indexes?: readonly DBTableIndex[] | undefined;
9
9
  disableMigration?: boolean | undefined;
10
10
  modelName?: string | undefined;
11
- }; };
11
+ } };
12
12
  //#endregion
13
13
  export { BetterAuthPluginDBSchema };
@@ -1,8 +1,8 @@
1
1
  import { InferDBFieldsFromOptions, InferDBFieldsFromPlugins } from "../type.mjs";
2
2
  import { Prettify } from "../../types/helper.mjs";
3
3
  import { BetterAuthOptions } from "../../types/init-options.mjs";
4
- import "../../types/index.mjs";
5
4
  import * as z from "zod";
5
+
6
6
  //#region src/db/schema/account.d.ts
7
7
  declare const accountSchema: z.ZodObject<{
8
8
  id: z.ZodString;
@@ -1,8 +1,8 @@
1
1
  import { InferDBFieldsFromOptions, InferDBFieldsFromPlugins } from "../type.mjs";
2
2
  import { Prettify } from "../../types/helper.mjs";
3
3
  import { BetterAuthOptions } from "../../types/init-options.mjs";
4
- import "../../types/index.mjs";
5
4
  import * as z from "zod";
5
+
6
6
  //#region src/db/schema/rate-limit.d.ts
7
7
  declare const rateLimitSchema: z.ZodObject<{
8
8
  key: z.ZodString;