@better-auth/core 1.3.26 → 1.3.28

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 (130) hide show
  1. package/.turbo/turbo-build.log +60 -9
  2. package/build.config.ts +7 -0
  3. package/dist/db/adapter/index.cjs +2 -0
  4. package/dist/db/adapter/index.d.cts +14 -0
  5. package/dist/db/adapter/index.d.mts +14 -0
  6. package/dist/db/adapter/index.d.ts +14 -0
  7. package/dist/db/adapter/index.mjs +1 -0
  8. package/dist/db/index.cjs +89 -0
  9. package/dist/db/index.d.cts +16 -107
  10. package/dist/db/index.d.mts +16 -107
  11. package/dist/db/index.d.ts +16 -107
  12. package/dist/db/index.mjs +69 -0
  13. package/dist/env/index.cjs +312 -0
  14. package/dist/env/index.d.cts +36 -0
  15. package/dist/env/index.d.mts +36 -0
  16. package/dist/env/index.d.ts +36 -0
  17. package/dist/env/index.mjs +297 -0
  18. package/dist/error/index.cjs +44 -0
  19. package/dist/error/index.d.cts +33 -0
  20. package/dist/error/index.d.mts +33 -0
  21. package/dist/error/index.d.ts +33 -0
  22. package/dist/error/index.mjs +41 -0
  23. package/dist/index.d.cts +179 -1
  24. package/dist/index.d.mts +179 -1
  25. package/dist/index.d.ts +179 -1
  26. package/dist/middleware/index.cjs +25 -0
  27. package/dist/middleware/index.d.cts +14 -0
  28. package/dist/middleware/index.d.mts +14 -0
  29. package/dist/middleware/index.d.ts +14 -0
  30. package/dist/middleware/index.mjs +21 -0
  31. package/dist/oauth2/index.cjs +368 -0
  32. package/dist/oauth2/index.d.cts +100 -0
  33. package/dist/oauth2/index.d.mts +100 -0
  34. package/dist/oauth2/index.d.ts +100 -0
  35. package/dist/oauth2/index.mjs +357 -0
  36. package/dist/shared/core.BJPBStdk.d.ts +1693 -0
  37. package/dist/shared/core.Bl6TpxyD.d.mts +181 -0
  38. package/dist/shared/core.Bqe5IGAi.d.ts +13 -0
  39. package/dist/shared/core.BwoNUcJQ.d.cts +53 -0
  40. package/dist/shared/core.BwoNUcJQ.d.mts +53 -0
  41. package/dist/shared/core.BwoNUcJQ.d.ts +53 -0
  42. package/dist/shared/core.CajxAutx.d.cts +143 -0
  43. package/dist/shared/core.CajxAutx.d.mts +143 -0
  44. package/dist/shared/core.CajxAutx.d.ts +143 -0
  45. package/dist/shared/core.CkkLHQWc.d.mts +1693 -0
  46. package/dist/shared/core.DkdZ1o38.d.ts +181 -0
  47. package/dist/shared/core.Dl-70uns.d.cts +84 -0
  48. package/dist/shared/core.Dl-70uns.d.mts +84 -0
  49. package/dist/shared/core.Dl-70uns.d.ts +84 -0
  50. package/dist/shared/core.DyEdx0m7.d.cts +181 -0
  51. package/dist/shared/core.E9DfzGLz.d.mts +13 -0
  52. package/dist/shared/core.HqYn20Fi.d.cts +13 -0
  53. package/dist/shared/core.gYIBmdi1.d.cts +1693 -0
  54. package/dist/social-providers/index.cjs +2793 -0
  55. package/dist/social-providers/index.d.cts +3903 -0
  56. package/dist/social-providers/index.d.mts +3903 -0
  57. package/dist/social-providers/index.d.ts +3903 -0
  58. package/dist/social-providers/index.mjs +2743 -0
  59. package/dist/utils/index.cjs +7 -0
  60. package/dist/utils/index.d.cts +10 -0
  61. package/dist/utils/index.d.mts +10 -0
  62. package/dist/utils/index.d.ts +10 -0
  63. package/dist/utils/index.mjs +5 -0
  64. package/package.json +109 -2
  65. package/src/db/adapter/index.ts +448 -0
  66. package/src/db/index.ts +13 -0
  67. package/src/db/plugin.ts +11 -0
  68. package/src/db/schema/account.ts +34 -0
  69. package/src/db/schema/rate-limit.ts +21 -0
  70. package/src/db/schema/session.ts +17 -0
  71. package/src/db/schema/shared.ts +7 -0
  72. package/src/db/schema/user.ts +16 -0
  73. package/src/db/schema/verification.ts +15 -0
  74. package/src/db/type.ts +50 -0
  75. package/src/env/color-depth.ts +172 -0
  76. package/src/env/env-impl.ts +123 -0
  77. package/src/env/index.ts +23 -0
  78. package/src/env/logger.test.ts +33 -0
  79. package/src/env/logger.ts +145 -0
  80. package/src/error/codes.ts +31 -0
  81. package/src/error/index.ts +11 -0
  82. package/src/index.ts +1 -1
  83. package/src/middleware/index.ts +33 -0
  84. package/src/oauth2/client-credentials-token.ts +102 -0
  85. package/src/oauth2/create-authorization-url.ts +85 -0
  86. package/src/oauth2/index.ts +22 -0
  87. package/src/oauth2/oauth-provider.ts +194 -0
  88. package/src/oauth2/refresh-access-token.ts +124 -0
  89. package/src/oauth2/utils.ts +36 -0
  90. package/src/oauth2/validate-authorization-code.ts +156 -0
  91. package/src/social-providers/apple.ts +213 -0
  92. package/src/social-providers/atlassian.ts +130 -0
  93. package/src/social-providers/cognito.ts +269 -0
  94. package/src/social-providers/discord.ts +172 -0
  95. package/src/social-providers/dropbox.ts +112 -0
  96. package/src/social-providers/facebook.ts +204 -0
  97. package/src/social-providers/figma.ts +115 -0
  98. package/src/social-providers/github.ts +154 -0
  99. package/src/social-providers/gitlab.ts +152 -0
  100. package/src/social-providers/google.ts +171 -0
  101. package/src/social-providers/huggingface.ts +116 -0
  102. package/src/social-providers/index.ts +118 -0
  103. package/src/social-providers/kakao.ts +178 -0
  104. package/src/social-providers/kick.ts +95 -0
  105. package/src/social-providers/line.ts +169 -0
  106. package/src/social-providers/linear.ts +120 -0
  107. package/src/social-providers/linkedin.ts +110 -0
  108. package/src/social-providers/microsoft-entra-id.ts +243 -0
  109. package/src/social-providers/naver.ts +112 -0
  110. package/src/social-providers/notion.ts +106 -0
  111. package/src/social-providers/paypal.ts +261 -0
  112. package/src/social-providers/reddit.ts +122 -0
  113. package/src/social-providers/roblox.ts +110 -0
  114. package/src/social-providers/salesforce.ts +157 -0
  115. package/src/social-providers/slack.ts +114 -0
  116. package/src/social-providers/spotify.ts +93 -0
  117. package/src/social-providers/tiktok.ts +211 -0
  118. package/src/social-providers/twitch.ts +111 -0
  119. package/src/social-providers/twitter.ts +194 -0
  120. package/src/social-providers/vk.ts +128 -0
  121. package/src/social-providers/zoom.ts +218 -0
  122. package/src/types/context.ts +313 -0
  123. package/src/types/cookie.ts +7 -0
  124. package/src/types/helper.ts +5 -0
  125. package/src/types/index.ts +20 -1
  126. package/src/types/init-options.ts +1161 -0
  127. package/src/types/plugin-client.ts +69 -0
  128. package/src/types/plugin.ts +134 -0
  129. package/src/utils/error-codes.ts +51 -0
  130. package/src/utils/index.ts +1 -0
@@ -0,0 +1,313 @@
1
+ import type {
2
+ Account,
3
+ BetterAuthDBSchema,
4
+ SecondaryStorage,
5
+ Session,
6
+ User,
7
+ Verification,
8
+ } from "../db";
9
+ import type { OAuthProvider } from "../oauth2";
10
+ import { createLogger } from "../env";
11
+ import type { DBAdapter, DBTransactionAdapter, Where } from "../db/adapter";
12
+ import type { BetterAuthCookies } from "./cookie";
13
+ import type { Models } from "../db/type";
14
+ import type { LiteralUnion } from "./helper";
15
+ import type { CookieOptions, EndpointContext } from "better-call";
16
+ import type {
17
+ BetterAuthOptions,
18
+ BetterAuthRateLimitOptions,
19
+ } from "./init-options";
20
+
21
+ export type GenericEndpointContext<
22
+ Options extends BetterAuthOptions = BetterAuthOptions,
23
+ > = EndpointContext<string, any> & {
24
+ context: AuthContext<Options>;
25
+ };
26
+
27
+ export interface InternalAdapter<
28
+ Options extends BetterAuthOptions = BetterAuthOptions,
29
+ > {
30
+ createOAuthUser(
31
+ user: Omit<User, "id" | "createdAt" | "updatedAt">,
32
+ account: Omit<Account, "userId" | "id" | "createdAt" | "updatedAt"> &
33
+ Partial<Account>,
34
+ context?: GenericEndpointContext<Options>,
35
+ ): Promise<{ user: User; account: Account }>;
36
+
37
+ createUser<T extends Record<string, any>>(
38
+ user: Omit<User, "id" | "createdAt" | "updatedAt" | "emailVerified"> &
39
+ Partial<User> &
40
+ Record<string, any>,
41
+ context?: GenericEndpointContext<Options>,
42
+ trxAdapter?: DBTransactionAdapter<Options>,
43
+ ): Promise<T & User>;
44
+
45
+ createAccount<T extends Record<string, any>>(
46
+ account: Omit<Account, "id" | "createdAt" | "updatedAt"> &
47
+ Partial<Account> &
48
+ T,
49
+ context?: GenericEndpointContext<Options>,
50
+ trxAdapter?: DBTransactionAdapter<Options>,
51
+ ): Promise<T & Account>;
52
+
53
+ listSessions(
54
+ userId: string,
55
+ trxAdapter?: DBTransactionAdapter<Options>,
56
+ ): Promise<Session[]>;
57
+
58
+ listUsers(
59
+ limit?: number,
60
+ offset?: number,
61
+ sortBy?: { field: string; direction: "asc" | "desc" },
62
+ where?: Where[],
63
+ trxAdapter?: DBTransactionAdapter<Options>,
64
+ ): Promise<User[]>;
65
+
66
+ countTotalUsers(
67
+ where?: Where[],
68
+ trxAdapter?: DBTransactionAdapter<Options>,
69
+ ): Promise<number>;
70
+
71
+ deleteUser(
72
+ userId: string,
73
+ trxAdapter?: DBTransactionAdapter<Options>,
74
+ ): Promise<void>;
75
+
76
+ createSession(
77
+ userId: string,
78
+ ctx: GenericEndpointContext<Options>,
79
+ dontRememberMe?: boolean,
80
+ override?: Partial<Session> & Record<string, any>,
81
+ overrideAll?: boolean,
82
+ trxAdapter?: DBTransactionAdapter<Options>,
83
+ ): Promise<Session>;
84
+
85
+ findSession(
86
+ token: string,
87
+ trxAdapter?: DBTransactionAdapter<Options>,
88
+ ): Promise<{
89
+ session: Session & Record<string, any>;
90
+ user: User & Record<string, any>;
91
+ } | null>;
92
+
93
+ findSessions(
94
+ sessionTokens: string[],
95
+ trxAdapter?: DBTransactionAdapter<Options>,
96
+ ): Promise<{ session: Session; user: User }[]>;
97
+
98
+ updateSession(
99
+ sessionToken: string,
100
+ session: Partial<Session> & Record<string, any>,
101
+ context?: GenericEndpointContext<Options>,
102
+ trxAdapter?: DBTransactionAdapter<Options>,
103
+ ): Promise<Session | null>;
104
+
105
+ deleteSession(
106
+ token: string,
107
+ trxAdapter?: DBTransactionAdapter<Options>,
108
+ ): Promise<void>;
109
+
110
+ deleteAccounts(
111
+ userId: string,
112
+ trxAdapter?: DBTransactionAdapter<Options>,
113
+ ): Promise<void>;
114
+
115
+ deleteAccount(
116
+ accountId: string,
117
+ trxAdapter?: DBTransactionAdapter<Options>,
118
+ ): Promise<void>;
119
+
120
+ deleteSessions(
121
+ userIdOrSessionTokens: string | string[],
122
+ trxAdapter?: DBTransactionAdapter<Options>,
123
+ ): Promise<void>;
124
+
125
+ findOAuthUser(
126
+ email: string,
127
+ accountId: string,
128
+ providerId: string,
129
+ trxAdapter?: DBTransactionAdapter<Options>,
130
+ ): Promise<{ user: User; accounts: Account[] } | null>;
131
+
132
+ findUserByEmail(
133
+ email: string,
134
+ options?: { includeAccounts: boolean },
135
+ trxAdapter?: DBTransactionAdapter<Options>,
136
+ ): Promise<{ user: User; accounts: Account[] } | null>;
137
+
138
+ findUserById(
139
+ userId: string,
140
+ trxAdapter?: DBTransactionAdapter<Options>,
141
+ ): Promise<User | null>;
142
+
143
+ linkAccount(
144
+ account: Omit<Account, "id" | "createdAt" | "updatedAt"> & Partial<Account>,
145
+ context?: GenericEndpointContext<Options>,
146
+ trxAdapter?: DBTransactionAdapter<Options>,
147
+ ): Promise<Account>;
148
+
149
+ // fixme: any type
150
+ updateUser(
151
+ userId: string,
152
+ data: Partial<User> & Record<string, any>,
153
+ context?: GenericEndpointContext<Options>,
154
+ trxAdapter?: DBTransactionAdapter<Options>,
155
+ ): Promise<any>;
156
+
157
+ updateUserByEmail(
158
+ email: string,
159
+ data: Partial<User & Record<string, any>>,
160
+ context?: GenericEndpointContext<Options>,
161
+ trxAdapter?: DBTransactionAdapter<Options>,
162
+ ): Promise<User>;
163
+
164
+ updatePassword(
165
+ userId: string,
166
+ password: string,
167
+ context?: GenericEndpointContext<Options>,
168
+ trxAdapter?: DBTransactionAdapter<Options>,
169
+ ): Promise<void>;
170
+
171
+ findAccounts(
172
+ userId: string,
173
+ trxAdapter?: DBTransactionAdapter<Options>,
174
+ ): Promise<Account[]>;
175
+
176
+ findAccount(
177
+ accountId: string,
178
+ trxAdapter?: DBTransactionAdapter<Options>,
179
+ ): Promise<Account | null>;
180
+
181
+ findAccountByProviderId(
182
+ accountId: string,
183
+ providerId: string,
184
+ trxAdapter?: DBTransactionAdapter<Options>,
185
+ ): Promise<Account | null>;
186
+
187
+ findAccountByUserId(
188
+ userId: string,
189
+ trxAdapter?: DBTransactionAdapter<Options>,
190
+ ): Promise<Account[]>;
191
+
192
+ updateAccount(
193
+ id: string,
194
+ data: Partial<Account>,
195
+ context?: GenericEndpointContext<Options>,
196
+ trxAdapter?: DBTransactionAdapter<Options>,
197
+ ): Promise<Account>;
198
+
199
+ createVerificationValue(
200
+ data: Omit<Verification, "createdAt" | "id" | "updatedAt"> &
201
+ Partial<Verification>,
202
+ context?: GenericEndpointContext<Options>,
203
+ trxAdapter?: DBTransactionAdapter<Options>,
204
+ ): Promise<Verification>;
205
+
206
+ findVerificationValue(
207
+ identifier: string,
208
+ trxAdapter?: DBTransactionAdapter<Options>,
209
+ ): Promise<Verification | null>;
210
+
211
+ deleteVerificationValue(
212
+ id: string,
213
+ trxAdapter?: DBTransactionAdapter<Options>,
214
+ ): Promise<void>;
215
+
216
+ deleteVerificationByIdentifier(
217
+ identifier: string,
218
+ trxAdapter?: DBTransactionAdapter<Options>,
219
+ ): Promise<void>;
220
+
221
+ updateVerificationValue(
222
+ id: string,
223
+ data: Partial<Verification>,
224
+ context?: GenericEndpointContext<Options>,
225
+ trxAdapter?: DBTransactionAdapter<Options>,
226
+ ): Promise<Verification>;
227
+ }
228
+
229
+ type CreateCookieGetterFn = (
230
+ cookieName: string,
231
+ overrideAttributes?: Partial<CookieOptions>,
232
+ ) => {
233
+ name: string;
234
+ attributes: CookieOptions;
235
+ };
236
+
237
+ type CheckPasswordFn<Options extends BetterAuthOptions = BetterAuthOptions> = (
238
+ userId: string,
239
+ ctx: GenericEndpointContext<Options>,
240
+ ) => Promise<boolean>;
241
+
242
+ export type AuthContext<Options extends BetterAuthOptions = BetterAuthOptions> =
243
+ {
244
+ options: Options;
245
+ appName: string;
246
+ baseURL: string;
247
+ trustedOrigins: string[];
248
+ oauthConfig?: {
249
+ /**
250
+ * This is dangerous and should only be used in dev or staging environments.
251
+ */
252
+ skipStateCookieCheck?: boolean;
253
+ };
254
+ /**
255
+ * New session that will be set after the request
256
+ * meaning: there is a `set-cookie` header that will set
257
+ * the session cookie. This is the fetched session. And it's set
258
+ * by `setNewSession` method.
259
+ */
260
+ newSession: {
261
+ session: Session & Record<string, any>;
262
+ user: User & Record<string, any>;
263
+ } | null;
264
+ session: {
265
+ session: Session & Record<string, any>;
266
+ user: User & Record<string, any>;
267
+ } | null;
268
+ setNewSession: (
269
+ session: {
270
+ session: Session & Record<string, any>;
271
+ user: User & Record<string, any>;
272
+ } | null,
273
+ ) => void;
274
+ socialProviders: OAuthProvider[];
275
+ authCookies: BetterAuthCookies;
276
+ logger: ReturnType<typeof createLogger>;
277
+ rateLimit: {
278
+ enabled: boolean;
279
+ window: number;
280
+ max: number;
281
+ storage: "memory" | "database" | "secondary-storage";
282
+ } & BetterAuthRateLimitOptions;
283
+ adapter: DBAdapter<Options>;
284
+ internalAdapter: InternalAdapter<Options>;
285
+ createAuthCookie: CreateCookieGetterFn;
286
+ secret: string;
287
+ sessionConfig: {
288
+ updateAge: number;
289
+ expiresIn: number;
290
+ freshAge: number;
291
+ };
292
+ generateId: (options: {
293
+ model: LiteralUnion<Models, string>;
294
+ size?: number;
295
+ }) => string | false;
296
+ secondaryStorage: SecondaryStorage | undefined;
297
+ password: {
298
+ hash: (password: string) => Promise<string>;
299
+ verify: (data: { password: string; hash: string }) => Promise<boolean>;
300
+ config: {
301
+ minPasswordLength: number;
302
+ maxPasswordLength: number;
303
+ };
304
+ checkPassword: CheckPasswordFn<Options>;
305
+ };
306
+ tables: BetterAuthDBSchema;
307
+ runMigrations: () => Promise<void>;
308
+ publishTelemetry: (event: {
309
+ type: string;
310
+ anonymousId?: string;
311
+ payload: Record<string, any>;
312
+ }) => Promise<void>;
313
+ };
@@ -0,0 +1,7 @@
1
+ import type { CookieOptions } from "better-call";
2
+
3
+ export type BetterAuthCookies = {
4
+ sessionToken: { name: string; options: CookieOptions };
5
+ sessionData: { name: string; options: CookieOptions };
6
+ dontRememberToken: { name: string; options: CookieOptions };
7
+ };
@@ -1 +1,6 @@
1
+ type Primitive = string | number | symbol | bigint | boolean | null | undefined;
2
+
1
3
  export type LiteralString = "" | (string & Record<never, never>);
4
+ export type LiteralUnion<LiteralType, BaseType extends Primitive> =
5
+ | LiteralType
6
+ | (BaseType & Record<never, never>);
@@ -1 +1,20 @@
1
- export * from "./helper";
1
+ export type * from "./helper";
2
+ export type {
3
+ BetterAuthAdvancedOptions,
4
+ GenerateIdFn,
5
+ BetterAuthRateLimitOptions,
6
+ BetterAuthOptions,
7
+ } from "./init-options";
8
+ export type { BetterAuthCookies } from "./cookie";
9
+ export type {
10
+ AuthContext,
11
+ GenericEndpointContext,
12
+ InternalAdapter,
13
+ } from "./context";
14
+ export type { BetterAuthPlugin } from "./plugin";
15
+ export type {
16
+ BetterAuthClientPlugin,
17
+ BetterAuthClientOptions,
18
+ ClientStore,
19
+ ClientAtomListener,
20
+ } from "./plugin-client";