better-auth 1.2.0-beta.1 → 1.2.0-beta.11

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 (205) hide show
  1. package/dist/adapters/drizzle.cjs +12 -5
  2. package/dist/adapters/drizzle.d.cts +6 -2
  3. package/dist/adapters/drizzle.d.ts +6 -2
  4. package/dist/adapters/drizzle.js +11 -4
  5. package/dist/adapters/kysely.cjs +5 -5
  6. package/dist/adapters/kysely.d.cts +6 -2
  7. package/dist/adapters/kysely.d.ts +6 -2
  8. package/dist/adapters/kysely.js +3 -3
  9. package/dist/adapters/memory.cjs +4 -4
  10. package/dist/adapters/memory.d.cts +6 -2
  11. package/dist/adapters/memory.d.ts +6 -2
  12. package/dist/adapters/memory.js +3 -3
  13. package/dist/adapters/mongodb.cjs +26 -8
  14. package/dist/adapters/mongodb.d.cts +6 -2
  15. package/dist/adapters/mongodb.d.ts +6 -2
  16. package/dist/adapters/mongodb.js +24 -6
  17. package/dist/adapters/prisma.cjs +18 -5
  18. package/dist/adapters/prisma.d.cts +6 -2
  19. package/dist/adapters/prisma.d.ts +6 -2
  20. package/dist/adapters/prisma.js +16 -3
  21. package/dist/adapters/test.cjs +1 -1
  22. package/dist/adapters/test.d.cts +2 -2
  23. package/dist/adapters/test.d.ts +2 -2
  24. package/dist/adapters/test.js +1 -1
  25. package/dist/api.cjs +48 -44
  26. package/dist/api.d.cts +3 -3
  27. package/dist/api.d.ts +3 -3
  28. package/dist/api.js +5 -5
  29. package/dist/{auth-DcMc3BIq.d.ts → auth-C-uLTIcY.d.ts} +12002 -7646
  30. package/dist/{auth-D4rdpxtI.d.cts → auth-lDfjrjVd.d.cts} +12002 -7646
  31. package/dist/{chunk-MGJLVQOV.js → chunk-2OAHQPLI.js} +100 -38
  32. package/dist/{chunk-5E75URIA.cjs → chunk-2Z6CVQHH.cjs} +0 -4
  33. package/dist/{chunk-WVLPJXQR.cjs → chunk-3FWLBBDV.cjs} +109 -51
  34. package/dist/{chunk-WDOY7YUW.cjs → chunk-6P33VPUY.cjs} +106 -44
  35. package/dist/{chunk-ADGXBH3Y.js → chunk-6XMAWIGH.js} +29 -26
  36. package/dist/{chunk-G7HOSQ5N.cjs → chunk-75MYIQ34.cjs} +15 -18
  37. package/dist/{chunk-YW3B2ST3.js → chunk-BY25AMN4.js} +116 -5
  38. package/dist/{chunk-LZ5DEQVH.cjs → chunk-C4T7TNDG.cjs} +3 -3
  39. package/dist/{chunk-PJ4KWXLQ.cjs → chunk-DH5E7574.cjs} +8 -8
  40. package/dist/{chunk-5RY45WFV.js → chunk-DIIVSN3J.js} +36 -13
  41. package/dist/{chunk-OSBTXYDD.cjs → chunk-GQKBG2VQ.cjs} +125 -14
  42. package/dist/{chunk-BKFMDM3P.js → chunk-HRI7BYTU.js} +115 -16
  43. package/dist/{chunk-6O2GLU2U.cjs → chunk-ICONG5HP.cjs} +18 -13
  44. package/dist/{chunk-3EY3LSQR.js → chunk-IVS5VS3V.js} +75 -36
  45. package/dist/{chunk-YRUDZRY3.cjs → chunk-IYCSNEDU.cjs} +79 -56
  46. package/dist/{chunk-NU4SXYJ5.cjs → chunk-JDAHD767.cjs} +198 -42
  47. package/dist/{chunk-UP6VJQDB.js → chunk-JHLVXVME.js} +17 -10
  48. package/dist/{chunk-WLXFBYQ6.cjs → chunk-JU56U5MW.cjs} +79 -9
  49. package/dist/{chunk-QFYRLTM5.cjs → chunk-JYPC7ZAL.cjs} +52 -49
  50. package/dist/{chunk-UHGAA4GH.cjs → chunk-KNVDJ4WK.cjs} +5 -5
  51. package/dist/{chunk-CVDYU5OC.js → chunk-M6SPJGF4.js} +5 -8
  52. package/dist/{chunk-BAPXDO3E.cjs → chunk-MKNA7SED.cjs} +125 -26
  53. package/dist/{chunk-GTM45OYP.cjs → chunk-NQFRXDEY.cjs} +3 -3
  54. package/dist/{chunk-FXNG3YQA.js → chunk-NXQP77NI.js} +146 -79
  55. package/dist/{chunk-FA6UYV37.js → chunk-PR54V2QL.js} +29 -10
  56. package/dist/{chunk-JLATHUM5.cjs → chunk-QBYD37C7.cjs} +21 -14
  57. package/dist/{chunk-E6LJZ5ME.js → chunk-QFIG4XKQ.js} +1 -1
  58. package/dist/{chunk-764RYNTE.cjs → chunk-QS2XIJC4.cjs} +63 -29
  59. package/dist/{chunk-GTQM7JU7.js → chunk-R42K7GPF.js} +3 -1
  60. package/dist/{chunk-3BWJXTLC.cjs → chunk-RHWADEUT.cjs} +81 -58
  61. package/dist/{chunk-JNZYTS3B.js → chunk-RS2A52JD.js} +1 -1
  62. package/dist/{chunk-5OBRFII2.js → chunk-SIAKIOPW.js} +81 -23
  63. package/dist/{chunk-V6RGXSG4.cjs → chunk-SVC7H7K4.cjs} +3 -1
  64. package/dist/{chunk-EM73ZZSP.cjs → chunk-TID6AR5K.cjs} +49 -30
  65. package/dist/{chunk-VXDYNCOX.js → chunk-TODG5RSV.js} +172 -19
  66. package/dist/{chunk-VPCROEJW.cjs → chunk-TZ2VLKIG.cjs} +170 -103
  67. package/dist/{chunk-WGCTQNSQ.js → chunk-UHBMFLSF.js} +1 -1
  68. package/dist/{chunk-PIWBUHRB.cjs → chunk-UPQLFVFU.cjs} +83 -43
  69. package/dist/{chunk-B5UCLTPZ.cjs → chunk-UQC2FUXC.cjs} +2 -1
  70. package/dist/{chunk-RGG6OEA3.js → chunk-VUXQHI6K.js} +60 -26
  71. package/dist/{chunk-2LQ7T2GE.js → chunk-WUUDJ3TF.js} +3 -3
  72. package/dist/{chunk-HZBNUY7E.js → chunk-WZ6OIVJK.js} +2 -1
  73. package/dist/{chunk-5XAVWKUN.js → chunk-X4X6WCXH.js} +74 -4
  74. package/dist/{chunk-NPO64SVN.js → chunk-ZFUBVSZD.js} +0 -4
  75. package/dist/{chunk-S6MI7ZLE.js → chunk-ZKNBNGHR.js} +12 -7
  76. package/dist/{chunk-5KMF6HGF.js → chunk-ZUGWIOG4.js} +75 -52
  77. package/dist/client/plugins.cjs +215 -21
  78. package/dist/client/plugins.d.cts +176 -10
  79. package/dist/client/plugins.d.ts +176 -10
  80. package/dist/client/plugins.js +214 -14
  81. package/dist/client.d.cts +6 -7
  82. package/dist/client.d.ts +6 -7
  83. package/dist/cookies.d.cts +2 -2
  84. package/dist/cookies.d.ts +2 -2
  85. package/dist/db.cjs +29 -29
  86. package/dist/db.d.cts +6 -6
  87. package/dist/db.d.ts +6 -6
  88. package/dist/db.js +3 -3
  89. package/dist/index-BX_H-j6k.d.cts +7755 -0
  90. package/dist/{index-Ba5bMY6A.d.cts → index-BuRgaJZR.d.cts} +194 -2
  91. package/dist/index-D5zWKzf9.d.ts +7755 -0
  92. package/dist/{index-XrJz4AYF.d.ts → index-moQjyfmm.d.ts} +194 -2
  93. package/dist/index.cjs +19 -19
  94. package/dist/index.d.cts +3 -3
  95. package/dist/index.d.ts +3 -3
  96. package/dist/index.js +9 -9
  97. package/dist/next-js.cjs +24 -24
  98. package/dist/next-js.d.cts +2 -2
  99. package/dist/next-js.d.ts +2 -2
  100. package/dist/next-js.js +23 -23
  101. package/dist/node.d.cts +2 -2
  102. package/dist/node.d.ts +2 -2
  103. package/dist/oauth2.cjs +9 -9
  104. package/dist/oauth2.d.cts +6 -5
  105. package/dist/oauth2.d.ts +6 -5
  106. package/dist/oauth2.js +2 -2
  107. package/dist/plugins/admin.cjs +7 -7
  108. package/dist/plugins/admin.d.cts +163 -32
  109. package/dist/plugins/admin.d.ts +163 -32
  110. package/dist/plugins/admin.js +6 -6
  111. package/dist/plugins/anonymous.cjs +7 -7
  112. package/dist/plugins/anonymous.d.cts +8 -4
  113. package/dist/plugins/anonymous.d.ts +8 -4
  114. package/dist/plugins/anonymous.js +6 -6
  115. package/dist/plugins/bearer.cjs +7 -7
  116. package/dist/plugins/bearer.d.cts +2 -2
  117. package/dist/plugins/bearer.d.ts +2 -2
  118. package/dist/plugins/bearer.js +6 -6
  119. package/dist/{plugin → plugins}/custom-session.cjs +7 -7
  120. package/dist/{plugin → plugins}/custom-session.d.cts +8 -4
  121. package/dist/{plugin → plugins}/custom-session.d.ts +8 -4
  122. package/dist/{plugin → plugins}/custom-session.js +6 -6
  123. package/dist/plugins/email-otp.cjs +7 -7
  124. package/dist/plugins/email-otp.d.cts +44 -16
  125. package/dist/plugins/email-otp.d.ts +44 -16
  126. package/dist/plugins/email-otp.js +6 -6
  127. package/dist/plugins/generic-oauth.cjs +7 -7
  128. package/dist/plugins/generic-oauth.d.cts +95 -6
  129. package/dist/plugins/generic-oauth.d.ts +95 -6
  130. package/dist/plugins/generic-oauth.js +6 -6
  131. package/dist/plugins/jwt.cjs +7 -7
  132. package/dist/plugins/jwt.d.cts +28 -6
  133. package/dist/plugins/jwt.d.ts +28 -6
  134. package/dist/plugins/jwt.js +6 -6
  135. package/dist/plugins/magic-link.cjs +7 -7
  136. package/dist/plugins/magic-link.d.cts +16 -4
  137. package/dist/plugins/magic-link.d.ts +16 -4
  138. package/dist/plugins/magic-link.js +6 -6
  139. package/dist/plugins/multi-session.cjs +7 -7
  140. package/dist/plugins/multi-session.d.cts +20 -8
  141. package/dist/plugins/multi-session.d.ts +20 -8
  142. package/dist/plugins/multi-session.js +6 -6
  143. package/dist/plugins/oidc-provider.cjs +7 -7
  144. package/dist/plugins/oidc-provider.d.cts +58 -15
  145. package/dist/plugins/oidc-provider.d.ts +58 -15
  146. package/dist/plugins/oidc-provider.js +6 -6
  147. package/dist/plugins/one-tap.cjs +7 -7
  148. package/dist/plugins/one-tap.d.cts +13 -2
  149. package/dist/plugins/one-tap.d.ts +13 -2
  150. package/dist/plugins/one-tap.js +6 -6
  151. package/dist/plugins/open-api.cjs +8 -8
  152. package/dist/plugins/open-api.d.cts +14 -6
  153. package/dist/plugins/open-api.d.ts +14 -6
  154. package/dist/plugins/open-api.js +7 -7
  155. package/dist/plugins/organization.cjs +7 -7
  156. package/dist/plugins/organization.d.cts +3 -3
  157. package/dist/plugins/organization.d.ts +3 -3
  158. package/dist/plugins/organization.js +6 -6
  159. package/dist/plugins/passkey.cjs +19 -31
  160. package/dist/plugins/passkey.d.cts +45 -148
  161. package/dist/plugins/passkey.d.ts +45 -148
  162. package/dist/plugins/passkey.js +5 -9
  163. package/dist/plugins/phone-number.cjs +7 -7
  164. package/dist/plugins/phone-number.d.cts +122 -9
  165. package/dist/plugins/phone-number.d.ts +122 -9
  166. package/dist/plugins/phone-number.js +6 -6
  167. package/dist/plugins/sso.cjs +27 -19
  168. package/dist/plugins/sso.d.cts +24 -8
  169. package/dist/plugins/sso.d.ts +24 -8
  170. package/dist/plugins/sso.js +14 -6
  171. package/dist/plugins/two-factor.cjs +7 -7
  172. package/dist/plugins/two-factor.d.cts +62 -22
  173. package/dist/plugins/two-factor.d.ts +62 -22
  174. package/dist/plugins/two-factor.js +6 -6
  175. package/dist/plugins/username.cjs +7 -7
  176. package/dist/plugins/username.d.cts +36 -4
  177. package/dist/plugins/username.d.ts +36 -4
  178. package/dist/plugins/username.js +6 -6
  179. package/dist/plugins.cjs +43 -43
  180. package/dist/plugins.d.cts +11 -7
  181. package/dist/plugins.d.ts +11 -7
  182. package/dist/plugins.js +23 -23
  183. package/dist/react.d.cts +7 -9
  184. package/dist/react.d.ts +7 -9
  185. package/dist/social.cjs +32 -20
  186. package/dist/social.d.cts +1 -1
  187. package/dist/social.d.ts +1 -1
  188. package/dist/social.js +3 -3
  189. package/dist/solid.d.cts +7 -7
  190. package/dist/solid.d.ts +7 -7
  191. package/dist/{state-Cm8el5M1.d.ts → state-CLmFUxz3.d.ts} +1 -1
  192. package/dist/{state-DcraY2_H.d.cts → state-CZgzjtR5.d.cts} +1 -1
  193. package/dist/svelte-kit.d.cts +2 -2
  194. package/dist/svelte-kit.d.ts +2 -2
  195. package/dist/svelte.d.cts +7 -7
  196. package/dist/svelte.d.ts +7 -7
  197. package/dist/types.d.cts +4 -4
  198. package/dist/types.d.ts +4 -4
  199. package/dist/vue.d.cts +7 -7
  200. package/dist/vue.d.ts +7 -7
  201. package/package.json +4 -4
  202. package/dist/chunk-4WCY4Y5J.js +0 -173
  203. package/dist/chunk-5AZFOKWY.cjs +0 -176
  204. package/dist/index-CvlKSqnF.d.cts +0 -4023
  205. package/dist/index-Ivs2EsUL.d.ts +0 -4023
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkB5UCLTPZ_cjs = require('./chunk-B5UCLTPZ.cjs');
3
+ var chunkUQC2FUXC_cjs = require('./chunk-UQC2FUXC.cjs');
4
4
  var chunkH74YRRNV_cjs = require('./chunk-H74YRRNV.cjs');
5
5
  var chunkOA7Z7IZT_cjs = require('./chunk-OA7Z7IZT.cjs');
6
6
  var chunk2HPSCSV7_cjs = require('./chunk-2HPSCSV7.cjs');
@@ -87,18 +87,21 @@ var createKyselyAdapter = async (config) => {
87
87
  // src/db/with-hooks.ts
88
88
  function getWithHooks(adapter, ctx) {
89
89
  const hooks = ctx.hooks;
90
- async function createWithHooks(data, model, customCreateFn) {
90
+ async function createWithHooks(data, model, customCreateFn, context) {
91
91
  let actualData = data;
92
92
  for (const hook of hooks || []) {
93
93
  const toRun = hook[model]?.create?.before;
94
94
  if (toRun) {
95
- const result = await toRun(data);
95
+ const result = await toRun(actualData, context);
96
96
  if (result === false) {
97
97
  return null;
98
98
  }
99
99
  const isObject = typeof result === "object" && "data" in result;
100
100
  if (isObject) {
101
- actualData = result.data;
101
+ actualData = {
102
+ ...actualData,
103
+ ...result.data
104
+ };
102
105
  }
103
106
  }
104
107
  }
@@ -110,17 +113,17 @@ function getWithHooks(adapter, ctx) {
110
113
  for (const hook of hooks || []) {
111
114
  const toRun = hook[model]?.create?.after;
112
115
  if (toRun) {
113
- await toRun(created);
116
+ await toRun(created, context);
114
117
  }
115
118
  }
116
119
  return created;
117
120
  }
118
- async function updateWithHooks(data, where, model, customUpdateFn) {
121
+ async function updateWithHooks(data, where, model, customUpdateFn, context) {
119
122
  let actualData = data;
120
123
  for (const hook of hooks || []) {
121
124
  const toRun = hook[model]?.update?.before;
122
125
  if (toRun) {
123
- const result = await toRun(data);
126
+ const result = await toRun(data, context);
124
127
  if (result === false) {
125
128
  return null;
126
129
  }
@@ -137,17 +140,17 @@ function getWithHooks(adapter, ctx) {
137
140
  for (const hook of hooks || []) {
138
141
  const toRun = hook[model]?.update?.after;
139
142
  if (toRun) {
140
- await toRun(updated);
143
+ await toRun(updated, context);
141
144
  }
142
145
  }
143
146
  return updated;
144
147
  }
145
- async function updateManyWithHooks(data, where, model, customUpdateFn) {
148
+ async function updateManyWithHooks(data, where, model, customUpdateFn, context) {
146
149
  let actualData = data;
147
150
  for (const hook of hooks || []) {
148
151
  const toRun = hook[model]?.update?.before;
149
152
  if (toRun) {
150
- const result = await toRun(data);
153
+ const result = await toRun(data, context);
151
154
  if (result === false) {
152
155
  return null;
153
156
  }
@@ -164,7 +167,7 @@ function getWithHooks(adapter, ctx) {
164
167
  for (const hook of hooks || []) {
165
168
  const toRun = hook[model]?.update?.after;
166
169
  if (toRun) {
167
- await toRun(updated);
170
+ await toRun(updated, context);
168
171
  }
169
172
  }
170
173
  return updated;
@@ -183,14 +186,16 @@ var createInternalAdapter = (adapter, ctx) => {
183
186
  const sessionExpiration = options.session?.expiresIn || 60 * 60 * 24 * 7;
184
187
  const { createWithHooks, updateWithHooks, updateManyWithHooks } = getWithHooks(adapter, ctx);
185
188
  return {
186
- createOAuthUser: async (user, account) => {
189
+ createOAuthUser: async (user, account, context) => {
187
190
  const createdUser = await createWithHooks(
188
191
  {
189
192
  createdAt: /* @__PURE__ */ new Date(),
190
193
  updatedAt: /* @__PURE__ */ new Date(),
191
194
  ...user
192
195
  },
193
- "user"
196
+ "user",
197
+ void 0,
198
+ context
194
199
  );
195
200
  const createdAccount = await createWithHooks(
196
201
  {
@@ -199,14 +204,16 @@ var createInternalAdapter = (adapter, ctx) => {
199
204
  createdAt: /* @__PURE__ */ new Date(),
200
205
  updatedAt: /* @__PURE__ */ new Date()
201
206
  },
202
- "account"
207
+ "account",
208
+ void 0,
209
+ context
203
210
  );
204
211
  return {
205
212
  user: createdUser,
206
213
  account: createdAccount
207
214
  };
208
215
  },
209
- createUser: async (user) => {
216
+ createUser: async (user, context) => {
210
217
  const createdUser = await createWithHooks(
211
218
  {
212
219
  createdAt: /* @__PURE__ */ new Date(),
@@ -215,18 +222,22 @@ var createInternalAdapter = (adapter, ctx) => {
215
222
  ...user,
216
223
  email: user.email.toLowerCase()
217
224
  },
218
- "user"
225
+ "user",
226
+ void 0,
227
+ context
219
228
  );
220
229
  return createdUser;
221
230
  },
222
- createAccount: async (account) => {
231
+ createAccount: async (account, context) => {
223
232
  const createdAccount = await createWithHooks(
224
233
  {
225
234
  createdAt: /* @__PURE__ */ new Date(),
226
235
  updatedAt: /* @__PURE__ */ new Date(),
227
236
  ...account
228
237
  },
229
- "account"
238
+ "account",
239
+ void 0,
240
+ context
230
241
  );
231
242
  return createdAccount;
232
243
  },
@@ -244,7 +255,7 @@ var createInternalAdapter = (adapter, ctx) => {
244
255
  const sessionStringified = await secondaryStorage.get(session.token);
245
256
  if (sessionStringified) {
246
257
  const s = JSON.parse(sessionStringified);
247
- const parsedSession = chunkB5UCLTPZ_cjs.parseSessionOutput(ctx.options, {
258
+ const parsedSession = chunkUQC2FUXC_cjs.parseSessionOutput(ctx.options, {
248
259
  ...s.session,
249
260
  expiresAt: new Date(s.session.expiresAt)
250
261
  });
@@ -274,6 +285,12 @@ var createInternalAdapter = (adapter, ctx) => {
274
285
  });
275
286
  return users;
276
287
  },
288
+ countTotalUsers: async () => {
289
+ const total = await adapter.count({
290
+ model: "user"
291
+ });
292
+ return total;
293
+ },
277
294
  deleteUser: async (userId) => {
278
295
  if (secondaryStorage) {
279
296
  await secondaryStorage.delete(`active-sessions-${userId}`);
@@ -308,11 +325,11 @@ var createInternalAdapter = (adapter, ctx) => {
308
325
  ]
309
326
  });
310
327
  },
311
- createSession: async (userId, request, dontRememberMe, override) => {
328
+ createSession: async (userId, request, dontRememberMe, override, context, overrideAll) => {
312
329
  const headers = request instanceof Request ? request.headers : request;
313
330
  const { id: _, ...rest } = override || {};
314
331
  const data = {
315
- ipAddress: request ? chunkB5UCLTPZ_cjs.getIp(request, ctx.options) || "" : "",
332
+ ipAddress: request ? chunkUQC2FUXC_cjs.getIp(request, ctx.options) || "" : "",
316
333
  userAgent: headers?.get("user-agent") || "",
317
334
  ...rest,
318
335
  /**
@@ -324,7 +341,8 @@ var createInternalAdapter = (adapter, ctx) => {
324
341
  userId,
325
342
  token: chunkH74YRRNV_cjs.generateId(32),
326
343
  createdAt: /* @__PURE__ */ new Date(),
327
- updatedAt: /* @__PURE__ */ new Date()
344
+ updatedAt: /* @__PURE__ */ new Date(),
345
+ ...overrideAll ? rest : {}
328
346
  };
329
347
  const res = await createWithHooks(
330
348
  data,
@@ -352,7 +370,8 @@ var createInternalAdapter = (adapter, ctx) => {
352
370
  return sessionData;
353
371
  },
354
372
  executeMainFn: options.session?.storeSessionInDatabase
355
- } : void 0
373
+ } : void 0,
374
+ context
356
375
  );
357
376
  return res;
358
377
  },
@@ -363,13 +382,13 @@ var createInternalAdapter = (adapter, ctx) => {
363
382
  return null;
364
383
  }
365
384
  const s = JSON.parse(sessionStringified);
366
- const parsedSession2 = chunkB5UCLTPZ_cjs.parseSessionOutput(ctx.options, {
385
+ const parsedSession2 = chunkUQC2FUXC_cjs.parseSessionOutput(ctx.options, {
367
386
  ...s.session,
368
387
  expiresAt: new Date(s.session.expiresAt),
369
388
  createdAt: new Date(s.session.createdAt),
370
389
  updatedAt: new Date(s.session.updatedAt)
371
390
  });
372
- const parsedUser2 = chunkB5UCLTPZ_cjs.parseUserOutput(ctx.options, {
391
+ const parsedUser2 = chunkUQC2FUXC_cjs.parseUserOutput(ctx.options, {
373
392
  ...s.user,
374
393
  createdAt: new Date(s.user.createdAt),
375
394
  updatedAt: new Date(s.user.updatedAt)
@@ -403,8 +422,8 @@ var createInternalAdapter = (adapter, ctx) => {
403
422
  if (!user) {
404
423
  return null;
405
424
  }
406
- const parsedSession = chunkB5UCLTPZ_cjs.parseSessionOutput(ctx.options, session);
407
- const parsedUser = chunkB5UCLTPZ_cjs.parseUserOutput(ctx.options, user);
425
+ const parsedSession = chunkUQC2FUXC_cjs.parseSessionOutput(ctx.options, session);
426
+ const parsedUser = chunkUQC2FUXC_cjs.parseUserOutput(ctx.options, user);
408
427
  return {
409
428
  session: parsedSession,
410
429
  user: parsedUser
@@ -466,7 +485,7 @@ var createInternalAdapter = (adapter, ctx) => {
466
485
  };
467
486
  });
468
487
  },
469
- updateSession: async (sessionToken, session) => {
488
+ updateSession: async (sessionToken, session, context) => {
470
489
  const updatedSession = await updateWithHooks(
471
490
  session,
472
491
  [{ field: "token", value: sessionToken }],
@@ -487,7 +506,8 @@ var createInternalAdapter = (adapter, ctx) => {
487
506
  }
488
507
  },
489
508
  executeMainFn: options.session?.storeSessionInDatabase
490
- } : void 0
509
+ } : void 0,
510
+ context
491
511
  );
492
512
  return updatedSession;
493
513
  },
@@ -672,18 +692,20 @@ var createInternalAdapter = (adapter, ctx) => {
672
692
  });
673
693
  return user;
674
694
  },
675
- linkAccount: async (account) => {
695
+ linkAccount: async (account, context) => {
676
696
  const _account = await createWithHooks(
677
697
  {
678
698
  ...account,
679
699
  createdAt: /* @__PURE__ */ new Date(),
680
700
  updatedAt: /* @__PURE__ */ new Date()
681
701
  },
682
- "account"
702
+ "account",
703
+ void 0,
704
+ context
683
705
  );
684
706
  return _account;
685
707
  },
686
- updateUser: async (userId, data) => {
708
+ updateUser: async (userId, data, context) => {
687
709
  const user = await updateWithHooks(
688
710
  data,
689
711
  [
@@ -692,24 +714,28 @@ var createInternalAdapter = (adapter, ctx) => {
692
714
  value: userId
693
715
  }
694
716
  ],
695
- "user"
717
+ "user",
718
+ void 0,
719
+ context
696
720
  );
697
721
  return user;
698
722
  },
699
- updateUserByEmail: async (email, data) => {
723
+ updateUserByEmail: async (email, data, context) => {
700
724
  const user = await updateWithHooks(
701
725
  data,
702
726
  [
703
727
  {
704
728
  field: "email",
705
- value: email
729
+ value: email.toLowerCase()
706
730
  }
707
731
  ],
708
- "user"
732
+ "user",
733
+ void 0,
734
+ context
709
735
  );
710
736
  return user;
711
737
  },
712
- updatePassword: async (userId, password) => {
738
+ updatePassword: async (userId, password, context) => {
713
739
  await updateManyWithHooks(
714
740
  {
715
741
  password
@@ -724,7 +750,9 @@ var createInternalAdapter = (adapter, ctx) => {
724
750
  value: "credential"
725
751
  }
726
752
  ],
727
- "account"
753
+ "account",
754
+ void 0,
755
+ context
728
756
  );
729
757
  },
730
758
  findAccounts: async (userId) => {
@@ -763,22 +791,26 @@ var createInternalAdapter = (adapter, ctx) => {
763
791
  });
764
792
  return account;
765
793
  },
766
- updateAccount: async (accountId, data) => {
794
+ updateAccount: async (accountId, data, context) => {
767
795
  const account = await updateWithHooks(
768
796
  data,
769
797
  [{ field: "id", value: accountId }],
770
- "account"
798
+ "account",
799
+ void 0,
800
+ context
771
801
  );
772
802
  return account;
773
803
  },
774
- createVerificationValue: async (data) => {
804
+ createVerificationValue: async (data, context) => {
775
805
  const verification = await createWithHooks(
776
806
  {
777
807
  createdAt: /* @__PURE__ */ new Date(),
778
808
  updatedAt: /* @__PURE__ */ new Date(),
779
809
  ...data
780
810
  },
781
- "verification"
811
+ "verification",
812
+ void 0,
813
+ context
782
814
  );
783
815
  return verification;
784
816
  },
@@ -797,6 +829,18 @@ var createInternalAdapter = (adapter, ctx) => {
797
829
  },
798
830
  limit: 1
799
831
  });
832
+ if (!options.verification?.disableCleanup) {
833
+ await adapter.deleteMany({
834
+ model: "verification",
835
+ where: [
836
+ {
837
+ field: "expiresAt",
838
+ value: (/* @__PURE__ */ new Date()).toISOString(),
839
+ operator: "lt"
840
+ }
841
+ ]
842
+ });
843
+ }
800
844
  const lastVerification = verification[0];
801
845
  return lastVerification;
802
846
  },
@@ -822,11 +866,13 @@ var createInternalAdapter = (adapter, ctx) => {
822
866
  ]
823
867
  });
824
868
  },
825
- updateVerificationValue: async (id, data) => {
869
+ updateVerificationValue: async (id, data, context) => {
826
870
  const verification = await updateWithHooks(
827
871
  data,
828
872
  [{ field: "id", value: id }],
829
- "verification"
873
+ "verification",
874
+ void 0,
875
+ context
830
876
  );
831
877
  return verification;
832
878
  }
@@ -1251,6 +1297,9 @@ var memoryAdapter = (db) => (options) => {
1251
1297
  }
1252
1298
  return table.map((record) => transformOutput(record, model));
1253
1299
  },
1300
+ count: async ({ model }) => {
1301
+ return db[model].length;
1302
+ },
1254
1303
  update: async ({ model, where, update }) => {
1255
1304
  const table = db[model];
1256
1305
  const res = convertWhereClause(where, table, model);
@@ -1860,6 +1909,19 @@ var kyselyAdapter = (db, config) => (opts) => {
1860
1909
  const res = await query.execute();
1861
1910
  return res.length;
1862
1911
  },
1912
+ async count(data) {
1913
+ const { model, where } = data;
1914
+ const { and, or } = convertWhereClause(model, where);
1915
+ let query = db.selectFrom(getModelName(model)).select(db.fn.count("id").as("count"));
1916
+ if (and) {
1917
+ query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
1918
+ }
1919
+ if (or) {
1920
+ query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
1921
+ }
1922
+ const res = await query.execute();
1923
+ return res[0].count;
1924
+ },
1863
1925
  async delete(data) {
1864
1926
  const { model, where } = data;
1865
1927
  const { and, or } = convertWhereClause(model, where);
@@ -1,5 +1,5 @@
1
1
  import { getEndpointResponse } from './chunk-JEYF2ARX.js';
2
- import { createAuthEndpoint, APIError, createAuthMiddleware } from './chunk-3EY3LSQR.js';
2
+ import { createAuthEndpoint, APIError, createAuthMiddleware } from './chunk-IVS5VS3V.js';
3
3
  import { setSessionCookie } from './chunk-QQGZ3XGI.js';
4
4
  import { generateRandomString } from './chunk-DBPOZRMS.js';
5
5
  import { getDate } from './chunk-FURNA6HY.js';
@@ -251,9 +251,6 @@ var emailOTP = (options) => {
251
251
  });
252
252
  }
253
253
  if (verificationValue.expiresAt < /* @__PURE__ */ new Date()) {
254
- await ctx.context.internalAdapter.deleteVerificationValue(
255
- verificationValue.id
256
- );
257
254
  throw new APIError("BAD_REQUEST", {
258
255
  message: ERROR_CODES.OTP_EXPIRED
259
256
  });
@@ -278,7 +275,8 @@ var emailOTP = (options) => {
278
275
  {
279
276
  email,
280
277
  emailVerified: true
281
- }
278
+ },
279
+ ctx
282
280
  );
283
281
  if (ctx.context.options.emailVerification?.autoSignInAfterVerification) {
284
282
  const session = await ctx.context.internalAdapter.createSession(
@@ -367,9 +365,6 @@ var emailOTP = (options) => {
367
365
  });
368
366
  }
369
367
  if (verificationValue.expiresAt < /* @__PURE__ */ new Date()) {
370
- await ctx.context.internalAdapter.deleteVerificationValue(
371
- verificationValue.id
372
- );
373
368
  throw new APIError("BAD_REQUEST", {
374
369
  message: ERROR_CODES.OTP_EXPIRED
375
370
  });
@@ -390,11 +385,14 @@ var emailOTP = (options) => {
390
385
  message: ERROR_CODES.USER_NOT_FOUND
391
386
  });
392
387
  }
393
- const newUser = await ctx.context.internalAdapter.createUser({
394
- email,
395
- emailVerified: true,
396
- name: email
397
- });
388
+ const newUser = await ctx.context.internalAdapter.createUser(
389
+ {
390
+ email,
391
+ emailVerified: true,
392
+ name: ""
393
+ },
394
+ ctx
395
+ );
398
396
  const session2 = await ctx.context.internalAdapter.createSession(
399
397
  newUser.id,
400
398
  ctx.request
@@ -417,9 +415,13 @@ var emailOTP = (options) => {
417
415
  });
418
416
  }
419
417
  if (!user.user.emailVerified) {
420
- await ctx.context.internalAdapter.updateUser(user.user.id, {
421
- emailVerified: true
422
- });
418
+ await ctx.context.internalAdapter.updateUser(
419
+ user.user.id,
420
+ {
421
+ emailVerified: true
422
+ },
423
+ ctx
424
+ );
423
425
  }
424
426
  const session = await ctx.context.internalAdapter.createSession(
425
427
  user.user.id,
@@ -562,9 +564,6 @@ var emailOTP = (options) => {
562
564
  });
563
565
  }
564
566
  if (verificationValue.expiresAt < /* @__PURE__ */ new Date()) {
565
- await ctx.context.internalAdapter.deleteVerificationValue(
566
- verificationValue.id
567
- );
568
567
  throw new APIError("BAD_REQUEST", {
569
568
  message: ERROR_CODES.OTP_EXPIRED
570
569
  });
@@ -585,16 +584,20 @@ var emailOTP = (options) => {
585
584
  (account2) => account2.providerId === "credential"
586
585
  );
587
586
  if (!account) {
588
- await ctx.context.internalAdapter.createAccount({
589
- userId: user.user.id,
590
- providerId: "credential",
591
- accountId: user.user.id,
592
- password: passwordHash
593
- });
587
+ await ctx.context.internalAdapter.createAccount(
588
+ {
589
+ userId: user.user.id,
590
+ providerId: "credential",
591
+ accountId: user.user.id,
592
+ password: passwordHash
593
+ },
594
+ ctx
595
+ );
594
596
  } else {
595
597
  await ctx.context.internalAdapter.updatePassword(
596
598
  user.user.id,
597
- passwordHash
599
+ passwordHash,
600
+ ctx
598
601
  );
599
602
  }
600
603
  return ctx.json({
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkPIWBUHRB_cjs = require('./chunk-PIWBUHRB.cjs');
3
+ var chunkUPQLFVFU_cjs = require('./chunk-UPQLFVFU.cjs');
4
4
  var chunkV6HE2MP7_cjs = require('./chunk-V6HE2MP7.cjs');
5
5
  var zod = require('zod');
6
6
 
@@ -16,7 +16,7 @@ var multiSession = (options) => {
16
16
  return {
17
17
  id: "multi-session",
18
18
  endpoints: {
19
- listDeviceSessions: chunkPIWBUHRB_cjs.createAuthEndpoint(
19
+ listDeviceSessions: chunkUPQLFVFU_cjs.createAuthEndpoint(
20
20
  "/multi-session/list-device-sessions",
21
21
  {
22
22
  method: "GET",
@@ -39,7 +39,7 @@ var multiSession = (options) => {
39
39
  return ctx.json(validSessions);
40
40
  }
41
41
  ),
42
- setActiveSession: chunkPIWBUHRB_cjs.createAuthEndpoint(
42
+ setActiveSession: chunkUPQLFVFU_cjs.createAuthEndpoint(
43
43
  "/multi-session/set-active",
44
44
  {
45
45
  method: "POST",
@@ -49,7 +49,7 @@ var multiSession = (options) => {
49
49
  })
50
50
  }),
51
51
  requireHeaders: true,
52
- use: [chunkPIWBUHRB_cjs.sessionMiddleware],
52
+ use: [chunkUPQLFVFU_cjs.sessionMiddleware],
53
53
  metadata: {
54
54
  openapi: {
55
55
  description: "Set the active session",
@@ -81,7 +81,7 @@ var multiSession = (options) => {
81
81
  ctx.context.secret
82
82
  );
83
83
  if (!sessionCookie) {
84
- throw new chunkPIWBUHRB_cjs.APIError("UNAUTHORIZED", {
84
+ throw new chunkUPQLFVFU_cjs.APIError("UNAUTHORIZED", {
85
85
  message: ERROR_CODES.INVALID_SESSION_TOKEN
86
86
  });
87
87
  }
@@ -91,7 +91,7 @@ var multiSession = (options) => {
91
91
  ...ctx.context.authCookies.sessionToken.options,
92
92
  maxAge: 0
93
93
  });
94
- throw new chunkPIWBUHRB_cjs.APIError("UNAUTHORIZED", {
94
+ throw new chunkUPQLFVFU_cjs.APIError("UNAUTHORIZED", {
95
95
  message: ERROR_CODES.INVALID_SESSION_TOKEN
96
96
  });
97
97
  }
@@ -99,7 +99,7 @@ var multiSession = (options) => {
99
99
  return ctx.json(session);
100
100
  }
101
101
  ),
102
- revokeDeviceSession: chunkPIWBUHRB_cjs.createAuthEndpoint(
102
+ revokeDeviceSession: chunkUPQLFVFU_cjs.createAuthEndpoint(
103
103
  "/multi-session/revoke",
104
104
  {
105
105
  method: "POST",
@@ -109,7 +109,7 @@ var multiSession = (options) => {
109
109
  })
110
110
  }),
111
111
  requireHeaders: true,
112
- use: [chunkPIWBUHRB_cjs.sessionMiddleware],
112
+ use: [chunkUPQLFVFU_cjs.sessionMiddleware],
113
113
  metadata: {
114
114
  openapi: {
115
115
  description: "Revoke a device session",
@@ -141,7 +141,7 @@ var multiSession = (options) => {
141
141
  ctx.context.secret
142
142
  );
143
143
  if (!sessionCookie) {
144
- throw new chunkPIWBUHRB_cjs.APIError("UNAUTHORIZED", {
144
+ throw new chunkUPQLFVFU_cjs.APIError("UNAUTHORIZED", {
145
145
  message: ERROR_CODES.INVALID_SESSION_TOKEN
146
146
  });
147
147
  }
@@ -188,21 +188,18 @@ var multiSession = (options) => {
188
188
  after: [
189
189
  {
190
190
  matcher: () => true,
191
- handler: chunkPIWBUHRB_cjs.createAuthMiddleware(async (ctx) => {
191
+ handler: chunkUPQLFVFU_cjs.createAuthMiddleware(async (ctx) => {
192
192
  const cookieString = ctx.context.responseHeaders?.get("set-cookie");
193
193
  if (!cookieString) return;
194
194
  const setCookies = chunkV6HE2MP7_cjs.parseSetCookieHeader(cookieString);
195
195
  const sessionCookieConfig = ctx.context.authCookies.sessionToken;
196
- const sessionToken = setCookies.get(
197
- sessionCookieConfig.name
198
- )?.value;
196
+ const sessionToken = ctx.context.newSession?.session.token;
199
197
  if (!sessionToken) return;
200
198
  const cookies = chunkV6HE2MP7_cjs.parseCookies(ctx.headers?.get("cookie") || "");
201
- const rawSession = sessionToken.split(".")[0];
202
- if (!rawSession) {
199
+ if (!sessionToken) {
203
200
  return;
204
201
  }
205
- const cookieName = `${sessionCookieConfig.name}_multi-${rawSession}`;
202
+ const cookieName = `${sessionCookieConfig.name}_multi-${sessionToken}`;
206
203
  if (setCookies.get(cookieName) || cookies.get(cookieName)) return;
207
204
  const currentMultiSessions = Object.keys(Object.fromEntries(cookies)).filter(
208
205
  isMultiSessionCookie
@@ -212,7 +209,7 @@ var multiSession = (options) => {
212
209
  }
213
210
  await ctx.setSignedCookie(
214
211
  cookieName,
215
- rawSession,
212
+ sessionToken,
216
213
  ctx.context.secret,
217
214
  sessionCookieConfig.options
218
215
  );
@@ -220,7 +217,7 @@ var multiSession = (options) => {
220
217
  },
221
218
  {
222
219
  matcher: (context) => context.path === "/sign-out",
223
- handler: chunkPIWBUHRB_cjs.createAuthMiddleware(async (ctx) => {
220
+ handler: chunkUPQLFVFU_cjs.createAuthMiddleware(async (ctx) => {
224
221
  const cookieHeader = ctx.headers?.get("cookie");
225
222
  if (!cookieHeader) return;
226
223
  const cookies = Object.fromEntries(chunkV6HE2MP7_cjs.parseCookies(cookieHeader));