@better-auth/core 1.4.0-beta.7 → 1.4.0-beta.9

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