better-auth 1.2.6-beta.7 → 1.2.7-beta.1

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 (273) hide show
  1. package/dist/adapters/drizzle-adapter/index.cjs +186 -249
  2. package/dist/adapters/drizzle-adapter/index.d.cts +11 -49
  3. package/dist/adapters/drizzle-adapter/index.d.mts +11 -49
  4. package/dist/adapters/drizzle-adapter/index.d.ts +11 -49
  5. package/dist/adapters/drizzle-adapter/index.mjs +186 -249
  6. package/dist/adapters/index.cjs +26 -0
  7. package/dist/adapters/index.d.cts +17 -0
  8. package/dist/adapters/index.d.mts +17 -0
  9. package/dist/adapters/index.d.ts +17 -0
  10. package/dist/adapters/index.mjs +20 -0
  11. package/dist/adapters/kysely-adapter/index.cjs +7 -7
  12. package/dist/adapters/kysely-adapter/index.d.cts +17 -49
  13. package/dist/adapters/kysely-adapter/index.d.mts +17 -49
  14. package/dist/adapters/kysely-adapter/index.d.ts +17 -49
  15. package/dist/adapters/kysely-adapter/index.mjs +8 -8
  16. package/dist/adapters/memory-adapter/index.cjs +7 -8
  17. package/dist/adapters/memory-adapter/index.d.cts +9 -49
  18. package/dist/adapters/memory-adapter/index.d.mts +9 -49
  19. package/dist/adapters/memory-adapter/index.d.ts +9 -49
  20. package/dist/adapters/memory-adapter/index.mjs +8 -9
  21. package/dist/adapters/mongodb-adapter/index.cjs +2 -2
  22. package/dist/adapters/mongodb-adapter/index.d.cts +4 -4
  23. package/dist/adapters/mongodb-adapter/index.d.mts +4 -4
  24. package/dist/adapters/mongodb-adapter/index.d.ts +4 -4
  25. package/dist/adapters/mongodb-adapter/index.mjs +3 -3
  26. package/dist/adapters/prisma-adapter/index.cjs +130 -203
  27. package/dist/adapters/prisma-adapter/index.d.cts +17 -49
  28. package/dist/adapters/prisma-adapter/index.d.mts +17 -49
  29. package/dist/adapters/prisma-adapter/index.d.ts +17 -49
  30. package/dist/adapters/prisma-adapter/index.mjs +131 -204
  31. package/dist/adapters/test.cjs +710 -377
  32. package/dist/adapters/test.d.cts +64 -5
  33. package/dist/adapters/test.d.mts +64 -5
  34. package/dist/adapters/test.d.ts +64 -5
  35. package/dist/adapters/test.mjs +712 -380
  36. package/dist/api/index.cjs +61 -25
  37. package/dist/api/index.d.cts +3 -3
  38. package/dist/api/index.d.mts +3 -3
  39. package/dist/api/index.d.ts +3 -3
  40. package/dist/api/index.mjs +63 -27
  41. package/dist/client/index.d.cts +3 -3
  42. package/dist/client/index.d.mts +3 -3
  43. package/dist/client/index.d.ts +3 -3
  44. package/dist/client/plugins/index.cjs +13 -15
  45. package/dist/client/plugins/index.d.cts +80 -19
  46. package/dist/client/plugins/index.d.mts +80 -19
  47. package/dist/client/plugins/index.d.ts +80 -19
  48. package/dist/client/plugins/index.mjs +13 -16
  49. package/dist/client/react/index.cjs +4 -4
  50. package/dist/client/react/index.d.cts +3 -3
  51. package/dist/client/react/index.d.mts +3 -3
  52. package/dist/client/react/index.d.ts +3 -3
  53. package/dist/client/solid/index.d.cts +3 -3
  54. package/dist/client/solid/index.d.mts +3 -3
  55. package/dist/client/solid/index.d.ts +3 -3
  56. package/dist/client/svelte/index.d.cts +3 -3
  57. package/dist/client/svelte/index.d.mts +3 -3
  58. package/dist/client/svelte/index.d.ts +3 -3
  59. package/dist/client/vue/index.d.cts +3 -3
  60. package/dist/client/vue/index.d.mts +3 -3
  61. package/dist/client/vue/index.d.ts +3 -3
  62. package/dist/cookies/index.cjs +13 -2
  63. package/dist/cookies/index.d.cts +3 -3
  64. package/dist/cookies/index.d.mts +3 -3
  65. package/dist/cookies/index.d.ts +3 -3
  66. package/dist/cookies/index.mjs +13 -2
  67. package/dist/db/index.cjs +6 -5
  68. package/dist/db/index.d.cts +4 -4
  69. package/dist/db/index.d.mts +4 -4
  70. package/dist/db/index.d.ts +4 -4
  71. package/dist/db/index.mjs +7 -6
  72. package/dist/index.cjs +11 -7
  73. package/dist/index.d.cts +4 -4
  74. package/dist/index.d.mts +4 -4
  75. package/dist/index.d.ts +4 -4
  76. package/dist/index.mjs +14 -10
  77. package/dist/integrations/next-js.cjs +4 -5
  78. package/dist/integrations/next-js.d.cts +3 -3
  79. package/dist/integrations/next-js.d.mts +3 -3
  80. package/dist/integrations/next-js.d.ts +3 -3
  81. package/dist/integrations/next-js.mjs +5 -6
  82. package/dist/integrations/node.d.cts +3 -3
  83. package/dist/integrations/node.d.mts +3 -3
  84. package/dist/integrations/node.d.ts +3 -3
  85. package/dist/integrations/react-start.cjs +5 -6
  86. package/dist/integrations/react-start.d.cts +3 -3
  87. package/dist/integrations/react-start.d.mts +3 -3
  88. package/dist/integrations/react-start.d.ts +3 -3
  89. package/dist/integrations/react-start.mjs +6 -7
  90. package/dist/integrations/svelte-kit.d.cts +3 -3
  91. package/dist/integrations/svelte-kit.d.mts +3 -3
  92. package/dist/integrations/svelte-kit.d.ts +3 -3
  93. package/dist/oauth2/index.d.cts +5 -5
  94. package/dist/oauth2/index.d.mts +5 -5
  95. package/dist/oauth2/index.d.ts +5 -5
  96. package/dist/plugins/access/index.d.cts +1 -1
  97. package/dist/plugins/access/index.d.mts +1 -1
  98. package/dist/plugins/access/index.d.ts +1 -1
  99. package/dist/plugins/admin/access/index.d.cts +1 -1
  100. package/dist/plugins/admin/access/index.d.mts +1 -1
  101. package/dist/plugins/admin/access/index.d.ts +1 -1
  102. package/dist/plugins/admin/index.cjs +4 -4
  103. package/dist/plugins/admin/index.d.cts +74 -14
  104. package/dist/plugins/admin/index.d.mts +74 -14
  105. package/dist/plugins/admin/index.d.ts +74 -14
  106. package/dist/plugins/admin/index.mjs +5 -5
  107. package/dist/plugins/anonymous/index.cjs +4 -5
  108. package/dist/plugins/anonymous/index.d.cts +3 -3
  109. package/dist/plugins/anonymous/index.d.mts +3 -3
  110. package/dist/plugins/anonymous/index.d.ts +3 -3
  111. package/dist/plugins/anonymous/index.mjs +5 -6
  112. package/dist/plugins/bearer/index.cjs +2 -2
  113. package/dist/plugins/bearer/index.d.cts +3 -3
  114. package/dist/plugins/bearer/index.d.mts +3 -3
  115. package/dist/plugins/bearer/index.d.ts +3 -3
  116. package/dist/plugins/bearer/index.mjs +3 -3
  117. package/dist/plugins/captcha/index.cjs +110 -45
  118. package/dist/plugins/captcha/index.d.cts +26 -6
  119. package/dist/plugins/captcha/index.d.mts +26 -6
  120. package/dist/plugins/captcha/index.d.ts +26 -6
  121. package/dist/plugins/captcha/index.mjs +110 -45
  122. package/dist/plugins/custom-session/index.cjs +24 -5
  123. package/dist/plugins/custom-session/index.d.cts +25 -6
  124. package/dist/plugins/custom-session/index.d.mts +25 -6
  125. package/dist/plugins/custom-session/index.d.ts +25 -6
  126. package/dist/plugins/custom-session/index.mjs +25 -6
  127. package/dist/plugins/email-otp/index.cjs +96 -30
  128. package/dist/plugins/email-otp/index.d.cts +33 -10
  129. package/dist/plugins/email-otp/index.d.mts +33 -10
  130. package/dist/plugins/email-otp/index.d.ts +33 -10
  131. package/dist/plugins/email-otp/index.mjs +97 -31
  132. package/dist/plugins/generic-oauth/index.cjs +81 -20
  133. package/dist/plugins/generic-oauth/index.d.cts +46 -3
  134. package/dist/plugins/generic-oauth/index.d.mts +46 -3
  135. package/dist/plugins/generic-oauth/index.d.ts +46 -3
  136. package/dist/plugins/generic-oauth/index.mjs +82 -21
  137. package/dist/plugins/haveibeenpwned/index.cjs +98 -0
  138. package/dist/plugins/haveibeenpwned/index.d.cts +36 -0
  139. package/dist/plugins/haveibeenpwned/index.d.mts +36 -0
  140. package/dist/plugins/haveibeenpwned/index.d.ts +36 -0
  141. package/dist/plugins/haveibeenpwned/index.mjs +96 -0
  142. package/dist/plugins/index.cjs +583 -19
  143. package/dist/plugins/index.d.cts +7 -5
  144. package/dist/plugins/index.d.mts +7 -5
  145. package/dist/plugins/index.d.ts +7 -5
  146. package/dist/plugins/index.mjs +583 -21
  147. package/dist/plugins/jwt/index.cjs +45 -21
  148. package/dist/plugins/jwt/index.d.cts +52 -6
  149. package/dist/plugins/jwt/index.d.mts +52 -6
  150. package/dist/plugins/jwt/index.d.ts +52 -6
  151. package/dist/plugins/jwt/index.mjs +46 -22
  152. package/dist/plugins/magic-link/index.cjs +3 -3
  153. package/dist/plugins/magic-link/index.mjs +4 -4
  154. package/dist/plugins/multi-session/index.cjs +3 -3
  155. package/dist/plugins/multi-session/index.d.cts +3 -3
  156. package/dist/plugins/multi-session/index.d.mts +3 -3
  157. package/dist/plugins/multi-session/index.d.ts +3 -3
  158. package/dist/plugins/multi-session/index.mjs +4 -4
  159. package/dist/plugins/oauth-proxy/index.cjs +4 -4
  160. package/dist/plugins/oauth-proxy/index.d.cts +3 -3
  161. package/dist/plugins/oauth-proxy/index.d.mts +3 -3
  162. package/dist/plugins/oauth-proxy/index.d.ts +3 -3
  163. package/dist/plugins/oauth-proxy/index.mjs +5 -5
  164. package/dist/plugins/oidc-provider/index.cjs +227 -8
  165. package/dist/plugins/oidc-provider/index.d.cts +215 -3
  166. package/dist/plugins/oidc-provider/index.d.mts +215 -3
  167. package/dist/plugins/oidc-provider/index.d.ts +215 -3
  168. package/dist/plugins/oidc-provider/index.mjs +228 -9
  169. package/dist/plugins/one-tap/index.cjs +5 -5
  170. package/dist/plugins/one-tap/index.mjs +6 -6
  171. package/dist/plugins/one-time-token/index.cjs +119 -0
  172. package/dist/plugins/one-time-token/index.d.cts +134 -0
  173. package/dist/plugins/one-time-token/index.d.mts +134 -0
  174. package/dist/plugins/one-time-token/index.d.ts +134 -0
  175. package/dist/plugins/one-time-token/index.mjs +117 -0
  176. package/dist/plugins/open-api/index.cjs +3 -3
  177. package/dist/plugins/open-api/index.d.cts +3 -3
  178. package/dist/plugins/open-api/index.d.mts +3 -3
  179. package/dist/plugins/open-api/index.d.ts +3 -3
  180. package/dist/plugins/open-api/index.mjs +4 -4
  181. package/dist/plugins/organization/access/index.d.cts +1 -1
  182. package/dist/plugins/organization/access/index.d.mts +1 -1
  183. package/dist/plugins/organization/access/index.d.ts +1 -1
  184. package/dist/plugins/organization/index.cjs +4 -4
  185. package/dist/plugins/organization/index.d.cts +708 -55
  186. package/dist/plugins/organization/index.d.mts +708 -55
  187. package/dist/plugins/organization/index.d.ts +708 -55
  188. package/dist/plugins/organization/index.mjs +5 -5
  189. package/dist/plugins/passkey/index.cjs +82 -8
  190. package/dist/plugins/passkey/index.d.cts +72 -3
  191. package/dist/plugins/passkey/index.d.mts +72 -3
  192. package/dist/plugins/passkey/index.d.ts +72 -3
  193. package/dist/plugins/passkey/index.mjs +83 -9
  194. package/dist/plugins/phone-number/index.cjs +194 -26
  195. package/dist/plugins/phone-number/index.d.cts +132 -8
  196. package/dist/plugins/phone-number/index.d.mts +132 -8
  197. package/dist/plugins/phone-number/index.d.ts +132 -8
  198. package/dist/plugins/phone-number/index.mjs +195 -27
  199. package/dist/plugins/sso/index.cjs +190 -7
  200. package/dist/plugins/sso/index.d.cts +181 -15
  201. package/dist/plugins/sso/index.d.mts +181 -15
  202. package/dist/plugins/sso/index.d.ts +181 -15
  203. package/dist/plugins/sso/index.mjs +191 -8
  204. package/dist/plugins/two-factor/index.cjs +443 -92
  205. package/dist/plugins/two-factor/index.d.cts +230 -396
  206. package/dist/plugins/two-factor/index.d.mts +230 -396
  207. package/dist/plugins/two-factor/index.d.ts +230 -396
  208. package/dist/plugins/two-factor/index.mjs +431 -80
  209. package/dist/plugins/username/index.cjs +34 -31
  210. package/dist/plugins/username/index.d.cts +15 -12
  211. package/dist/plugins/username/index.d.mts +15 -12
  212. package/dist/plugins/username/index.d.ts +15 -12
  213. package/dist/plugins/username/index.mjs +35 -32
  214. package/dist/shared/better-auth.1DR6suCQ.mjs +307 -0
  215. package/dist/shared/{better-auth.BSsp73pg.cjs → better-auth.B7cZ2juS.cjs} +15 -14
  216. package/dist/shared/{better-auth.bKwabe3I.d.mts → better-auth.B88xucNq.d.mts} +529 -39
  217. package/dist/shared/{better-auth.CApEjVDP.cjs → better-auth.BW8BpneG.cjs} +4 -1
  218. package/dist/shared/{better-auth.BiQsvaIP.d.cts → better-auth.BcU1Kjyq.d.cts} +2051 -518
  219. package/dist/shared/better-auth.BfG24BjZ.cjs +118 -0
  220. package/dist/shared/{better-auth.A3TjrU8G.mjs → better-auth.Bk5IMdhM.mjs} +32 -12
  221. package/dist/shared/{better-auth.D9VnBkRI.mjs → better-auth.Bm9HxIzE.mjs} +47 -24
  222. package/dist/shared/{better-auth.BRf6Iynu.d.ts → better-auth.Bwc-6kOr.d.ts} +1 -1
  223. package/dist/shared/{better-auth.D-oLmHIj.d.mts → better-auth.CA2hFK4N.d.ts} +2051 -518
  224. package/dist/shared/{better-auth.Dmhe30iW.d.mts → better-auth.CGukGrxT.d.cts} +1 -1
  225. package/dist/shared/{better-auth.CsSpq0zL.cjs → better-auth.CHUzBidy.cjs} +46 -23
  226. package/dist/shared/{better-auth.DWRligF8.d.cts → better-auth.CT9J6rD-.d.cts} +539 -7
  227. package/dist/shared/better-auth.CVCo5Z2T.cjs +310 -0
  228. package/dist/shared/{better-auth.D4jH-sJA.mjs → better-auth.CWwVo_61.mjs} +458 -118
  229. package/dist/shared/{better-auth.Bi8FQwDD.d.cts → better-auth.CYegVoq1.d.cts} +1 -1
  230. package/dist/shared/{better-auth.Bi8FQwDD.d.mts → better-auth.CYegVoq1.d.mts} +1 -1
  231. package/dist/shared/{better-auth.Bi8FQwDD.d.ts → better-auth.CYegVoq1.d.ts} +1 -1
  232. package/dist/shared/{better-auth.CepcSj5H.mjs → better-auth.Cc72UxUH.mjs} +1 -2
  233. package/dist/shared/{better-auth.BWp5dztg.d.ts → better-auth.CmN4mlPh.d.ts} +539 -7
  234. package/dist/shared/{better-auth.DH3YjMQH.mjs → better-auth.Cqykj82J.mjs} +1 -1
  235. package/dist/shared/{better-auth.wcdMj2cT.d.mts → better-auth.DIt2e3lu.d.mts} +539 -7
  236. package/dist/shared/{better-auth.BANAxdkL.d.ts → better-auth.DNTAFSt1.d.ts} +529 -39
  237. package/dist/shared/{better-auth.DU2QNVc_.d.ts → better-auth.DQ7OSJbI.d.mts} +2051 -518
  238. package/dist/shared/{better-auth.DLTzKoOS.cjs → better-auth.DSVbLSt7.cjs} +4 -1
  239. package/dist/shared/{better-auth.B2Fw1vhH.d.cts → better-auth.DTiSPWEk.d.cts} +529 -39
  240. package/dist/shared/better-auth.DURsStt9.mjs +116 -0
  241. package/dist/shared/{better-auth.BIjcZ_vt.cjs → better-auth.DYoLD99C.cjs} +31 -11
  242. package/dist/shared/{better-auth.CV1L7TPV.cjs → better-auth.D_ZIX1O8.cjs} +317 -47
  243. package/dist/shared/{better-auth.C5H9XEzZ.cjs → better-auth.DcWKCjjf.cjs} +1 -2
  244. package/dist/shared/{better-auth.BDYXUcLv.cjs → better-auth.Dg0siV5C.cjs} +457 -117
  245. package/dist/shared/better-auth.DjryM8pE.cjs +760 -0
  246. package/dist/shared/{better-auth.DPBQN9Fs.mjs → better-auth.Dn_Ms1Uf.mjs} +318 -48
  247. package/dist/shared/{better-auth.DiG4KL2x.mjs → better-auth.OuYYTHC7.mjs} +4 -1
  248. package/dist/shared/{better-auth.DtC8i3pf.d.cts → better-auth.S1jimRbX.d.mts} +1 -1
  249. package/dist/shared/better-auth.SPmq4a4z.d.mts +344 -0
  250. package/dist/shared/{better-auth.cOCrlspr.mjs → better-auth.bkwPl2G4.mjs} +4 -1
  251. package/dist/shared/better-auth.cp2rC2iM.d.ts +344 -0
  252. package/dist/shared/better-auth.eVy4DZvP.d.cts +344 -0
  253. package/dist/shared/{better-auth.BrOpzmqo.mjs → better-auth.iKoUsdFE.mjs} +15 -14
  254. package/dist/shared/better-auth.rSYJCd3o.mjs +758 -0
  255. package/dist/social-providers/index.cjs +75 -3
  256. package/dist/social-providers/index.d.cts +2 -2
  257. package/dist/social-providers/index.d.mts +2 -2
  258. package/dist/social-providers/index.d.ts +2 -2
  259. package/dist/social-providers/index.mjs +77 -6
  260. package/dist/types/index.d.cts +4 -4
  261. package/dist/types/index.d.mts +4 -4
  262. package/dist/types/index.d.ts +4 -4
  263. package/package.json +42 -5
  264. package/dist/chunks/server.cjs +0 -905
  265. package/dist/chunks/server.mjs +0 -895
  266. package/dist/shared/better-auth.BcoSd9tC.mjs +0 -10
  267. package/dist/shared/better-auth.BnRFp-t0.mjs +0 -405
  268. package/dist/shared/better-auth.C1-vpKly.cjs +0 -12
  269. package/dist/shared/better-auth.ClTSOgiD.mjs +0 -140
  270. package/dist/shared/better-auth.DC8JQbiE.mjs +0 -173
  271. package/dist/shared/better-auth.DWHWPllD.cjs +0 -175
  272. package/dist/shared/better-auth.DqLjzBlO.cjs +0 -408
  273. package/dist/shared/better-auth.m575EIBC.cjs +0 -144
@@ -1,10 +0,0 @@
1
- const TWO_FACTOR_ERROR_CODES = {
2
- OTP_NOT_ENABLED: "OTP not enabled",
3
- OTP_HAS_EXPIRED: "OTP has expired",
4
- TOTP_NOT_ENABLED: "TOTP not enabled",
5
- TWO_FACTOR_NOT_ENABLED: "Two factor isn't enabled",
6
- BACKUP_CODES_NOT_ENABLED: "Backup codes aren't enabled",
7
- INVALID_BACKUP_CODE: "Invalid backup code"
8
- };
9
-
10
- export { TWO_FACTOR_ERROR_CODES as T };
@@ -1,405 +0,0 @@
1
- import { Kysely, SqliteDialect, MysqlDialect, PostgresDialect, MssqlDialect } from 'kysely';
2
- import './better-auth.CepcSj5H.mjs';
3
- import './better-auth.8zoxzg-F.mjs';
4
- import { g as generateId } from './better-auth.BUPPRXfK.mjs';
5
- import 'zod';
6
- import 'better-call';
7
- import '@better-auth/utils/hash';
8
- import '@noble/ciphers/chacha';
9
- import '@noble/ciphers/utils';
10
- import '@noble/ciphers/webcrypto';
11
- import '@better-auth/utils/base64';
12
- import 'jose';
13
- import '@noble/hashes/scrypt';
14
- import '@better-auth/utils';
15
- import '@better-auth/utils/hex';
16
- import '@noble/hashes/utils';
17
- import './better-auth.B4Qoxdgc.mjs';
18
- import './better-auth.DH3YjMQH.mjs';
19
- import { g as getAuthTables } from './better-auth.DORkW_Ge.mjs';
20
- import { w as withApplyDefault } from './better-auth.0TC26uRi.mjs';
21
-
22
- function getDatabaseType(db) {
23
- if (!db) {
24
- return null;
25
- }
26
- if ("dialect" in db) {
27
- return getDatabaseType(db.dialect);
28
- }
29
- if ("createDriver" in db) {
30
- if (db instanceof SqliteDialect) {
31
- return "sqlite";
32
- }
33
- if (db instanceof MysqlDialect) {
34
- return "mysql";
35
- }
36
- if (db instanceof PostgresDialect) {
37
- return "postgres";
38
- }
39
- if (db instanceof MssqlDialect) {
40
- return "mssql";
41
- }
42
- }
43
- if ("aggregate" in db) {
44
- return "sqlite";
45
- }
46
- if ("getConnection" in db) {
47
- return "mysql";
48
- }
49
- if ("connect" in db) {
50
- return "postgres";
51
- }
52
- return null;
53
- }
54
- const createKyselyAdapter = async (config) => {
55
- const db = config.database;
56
- if (!db) {
57
- return {
58
- kysely: null,
59
- databaseType: null
60
- };
61
- }
62
- if ("db" in db) {
63
- return {
64
- kysely: db.db,
65
- databaseType: db.type
66
- };
67
- }
68
- if ("dialect" in db) {
69
- return {
70
- kysely: new Kysely({ dialect: db.dialect }),
71
- databaseType: db.type
72
- };
73
- }
74
- let dialect = void 0;
75
- const databaseType = getDatabaseType(db);
76
- if ("createDriver" in db) {
77
- dialect = db;
78
- }
79
- if ("aggregate" in db) {
80
- dialect = new SqliteDialect({
81
- database: db
82
- });
83
- }
84
- if ("getConnection" in db) {
85
- dialect = new MysqlDialect(db);
86
- }
87
- if ("connect" in db) {
88
- dialect = new PostgresDialect({
89
- pool: db
90
- });
91
- }
92
- return {
93
- kysely: dialect ? new Kysely({ dialect }) : null,
94
- databaseType
95
- };
96
- };
97
-
98
- const createTransform = (db, options, config) => {
99
- const schema = getAuthTables(options);
100
- function getField(model, field) {
101
- if (field === "id") {
102
- return field;
103
- }
104
- const f = schema[model].fields[field];
105
- if (!f) {
106
- console.log("Field not found", model, field);
107
- }
108
- return f.fieldName || field;
109
- }
110
- function transformValueToDB(value, model, field) {
111
- if (field === "id") {
112
- return value;
113
- }
114
- const { type = "sqlite" } = config || {};
115
- const f = schema[model].fields[field];
116
- if (f.type === "boolean" && (type === "sqlite" || type === "mssql") && value !== null && value !== void 0) {
117
- return value ? 1 : 0;
118
- }
119
- if (f.type === "date" && value && value instanceof Date) {
120
- return type === "sqlite" ? value.toISOString() : value;
121
- }
122
- return value;
123
- }
124
- function transformValueFromDB(value, model, field) {
125
- const { type = "sqlite" } = config || {};
126
- const f = schema[model].fields[field];
127
- if (f.type === "boolean" && (type === "sqlite" || type === "mssql") && value !== null) {
128
- return value === 1;
129
- }
130
- if (f.type === "date" && value) {
131
- return new Date(value);
132
- }
133
- return value;
134
- }
135
- function getModelName(model) {
136
- return schema[model].modelName;
137
- }
138
- const useDatabaseGeneratedId = options?.advanced?.generateId === false;
139
- return {
140
- transformInput(data, model, action) {
141
- const transformedData = useDatabaseGeneratedId || action === "update" ? {} : {
142
- id: options.advanced?.generateId ? options.advanced.generateId({
143
- model
144
- }) : data.id || generateId()
145
- };
146
- const fields = schema[model].fields;
147
- for (const field in fields) {
148
- const value = data[field];
149
- transformedData[fields[field].fieldName || field] = withApplyDefault(
150
- transformValueToDB(value, model, field),
151
- fields[field],
152
- action
153
- );
154
- }
155
- return transformedData;
156
- },
157
- transformOutput(data, model, select = []) {
158
- if (!data) return null;
159
- const transformedData = data.id ? select.length === 0 || select.includes("id") ? {
160
- id: data.id
161
- } : {} : {};
162
- const tableSchema = schema[model].fields;
163
- for (const key in tableSchema) {
164
- if (select.length && !select.includes(key)) {
165
- continue;
166
- }
167
- const field = tableSchema[key];
168
- if (field) {
169
- transformedData[key] = transformValueFromDB(
170
- data[field.fieldName || key],
171
- model,
172
- key
173
- );
174
- }
175
- }
176
- return transformedData;
177
- },
178
- convertWhereClause(model, w) {
179
- if (!w)
180
- return {
181
- and: null,
182
- or: null
183
- };
184
- const conditions = {
185
- and: [],
186
- or: []
187
- };
188
- w.forEach((condition) => {
189
- let {
190
- field: _field,
191
- value,
192
- operator = "=",
193
- connector = "AND"
194
- } = condition;
195
- const field = getField(model, _field);
196
- value = transformValueToDB(value, model, _field);
197
- const expr = (eb) => {
198
- if (operator.toLowerCase() === "in") {
199
- return eb(field, "in", Array.isArray(value) ? value : [value]);
200
- }
201
- if (operator === "contains") {
202
- return eb(field, "like", `%${value}%`);
203
- }
204
- if (operator === "starts_with") {
205
- return eb(field, "like", `${value}%`);
206
- }
207
- if (operator === "ends_with") {
208
- return eb(field, "like", `%${value}`);
209
- }
210
- if (operator === "eq") {
211
- return eb(field, "=", value);
212
- }
213
- if (operator === "ne") {
214
- return eb(field, "<>", value);
215
- }
216
- if (operator === "gt") {
217
- return eb(field, ">", value);
218
- }
219
- if (operator === "gte") {
220
- return eb(field, ">=", value);
221
- }
222
- if (operator === "lt") {
223
- return eb(field, "<", value);
224
- }
225
- if (operator === "lte") {
226
- return eb(field, "<=", value);
227
- }
228
- return eb(field, operator, value);
229
- };
230
- if (connector === "OR") {
231
- conditions.or.push(expr);
232
- } else {
233
- conditions.and.push(expr);
234
- }
235
- });
236
- return {
237
- and: conditions.and.length ? conditions.and : null,
238
- or: conditions.or.length ? conditions.or : null
239
- };
240
- },
241
- async withReturning(values, builder, model, where) {
242
- let res;
243
- if (config?.type === "mysql") {
244
- await builder.execute();
245
- const field = values.id ? "id" : where[0].field ? where[0].field : "id";
246
- const value = values[field] || where[0].value;
247
- res = await db.selectFrom(getModelName(model)).selectAll().where(getField(model, field), "=", value).executeTakeFirst();
248
- return res;
249
- }
250
- if (config?.type === "mssql") {
251
- res = await builder.outputAll("inserted").executeTakeFirst();
252
- return res;
253
- }
254
- res = await builder.returningAll().executeTakeFirst();
255
- return res;
256
- },
257
- getModelName,
258
- getField
259
- };
260
- };
261
- const kyselyAdapter = (db, config) => (opts) => {
262
- const {
263
- transformInput,
264
- withReturning,
265
- transformOutput,
266
- convertWhereClause,
267
- getModelName,
268
- getField
269
- } = createTransform(db, opts, config);
270
- return {
271
- id: "kysely",
272
- async create(data) {
273
- const { model, data: values, select } = data;
274
- const transformed = transformInput(values, model, "create");
275
- const builder = db.insertInto(getModelName(model)).values(transformed);
276
- return transformOutput(
277
- await withReturning(transformed, builder, model, []),
278
- model,
279
- select
280
- );
281
- },
282
- async findOne(data) {
283
- const { model, where, select } = data;
284
- const { and, or } = convertWhereClause(model, where);
285
- let query = db.selectFrom(getModelName(model)).selectAll();
286
- if (and) {
287
- query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
288
- }
289
- if (or) {
290
- query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
291
- }
292
- const res = await query.executeTakeFirst();
293
- if (!res) return null;
294
- return transformOutput(res, model, select);
295
- },
296
- async findMany(data) {
297
- const { model, where, limit, offset, sortBy } = data;
298
- const { and, or } = convertWhereClause(model, where);
299
- let query = db.selectFrom(getModelName(model));
300
- if (and) {
301
- query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
302
- }
303
- if (or) {
304
- query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
305
- }
306
- if (config?.type === "mssql") {
307
- if (!offset) {
308
- query = query.top(limit || 100);
309
- }
310
- } else {
311
- query = query.limit(limit || 100);
312
- }
313
- if (sortBy) {
314
- query = query.orderBy(
315
- getField(model, sortBy.field),
316
- sortBy.direction
317
- );
318
- }
319
- if (offset) {
320
- if (config?.type === "mssql") {
321
- if (!sortBy) {
322
- query = query.orderBy(getField(model, "id"));
323
- }
324
- query = query.offset(offset).fetch(limit || 100);
325
- } else {
326
- query = query.offset(offset);
327
- }
328
- }
329
- const res = await query.selectAll().execute();
330
- if (!res) return [];
331
- return res.map((r) => transformOutput(r, model));
332
- },
333
- async update(data) {
334
- const { model, where, update: values } = data;
335
- const { and, or } = convertWhereClause(model, where);
336
- const transformedData = transformInput(values, model, "update");
337
- let query = db.updateTable(getModelName(model)).set(transformedData);
338
- if (and) {
339
- query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
340
- }
341
- if (or) {
342
- query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
343
- }
344
- const res = await transformOutput(
345
- await withReturning(transformedData, query, model, where),
346
- model
347
- );
348
- return res;
349
- },
350
- async updateMany(data) {
351
- const { model, where, update: values } = data;
352
- const { and, or } = convertWhereClause(model, where);
353
- const transformedData = transformInput(values, model, "update");
354
- let query = db.updateTable(getModelName(model)).set(transformedData);
355
- if (and) {
356
- query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
357
- }
358
- if (or) {
359
- query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
360
- }
361
- const res = await query.execute();
362
- return res.length;
363
- },
364
- async count(data) {
365
- const { model, where } = data;
366
- const { and, or } = convertWhereClause(model, where);
367
- let query = db.selectFrom(getModelName(model)).select(db.fn.count("id").as("count"));
368
- if (and) {
369
- query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
370
- }
371
- if (or) {
372
- query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
373
- }
374
- const res = await query.execute();
375
- return res[0].count;
376
- },
377
- async delete(data) {
378
- const { model, where } = data;
379
- const { and, or } = convertWhereClause(model, where);
380
- let query = db.deleteFrom(getModelName(model));
381
- if (and) {
382
- query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
383
- }
384
- if (or) {
385
- query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
386
- }
387
- await query.execute();
388
- },
389
- async deleteMany(data) {
390
- const { model, where } = data;
391
- const { and, or } = convertWhereClause(model, where);
392
- let query = db.deleteFrom(getModelName(model));
393
- if (and) {
394
- query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
395
- }
396
- if (or) {
397
- query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
398
- }
399
- return (await query.execute()).length;
400
- },
401
- options: config
402
- };
403
- };
404
-
405
- export { createKyselyAdapter as c, kyselyAdapter as k };
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- const TWO_FACTOR_ERROR_CODES = {
4
- OTP_NOT_ENABLED: "OTP not enabled",
5
- OTP_HAS_EXPIRED: "OTP has expired",
6
- TOTP_NOT_ENABLED: "TOTP not enabled",
7
- TWO_FACTOR_NOT_ENABLED: "Two factor isn't enabled",
8
- BACKUP_CODES_NOT_ENABLED: "Backup codes aren't enabled",
9
- INVALID_BACKUP_CODE: "Invalid backup code"
10
- };
11
-
12
- exports.TWO_FACTOR_ERROR_CODES = TWO_FACTOR_ERROR_CODES;
@@ -1,140 +0,0 @@
1
- import { APIError } from 'better-call';
2
- import { c as createAuthMiddleware, g as getSessionFromCtx } from './better-auth.D4jH-sJA.mjs';
3
- import { setSessionCookie } from '../cookies/index.mjs';
4
- import { z } from 'zod';
5
- import './better-auth.CepcSj5H.mjs';
6
- import './better-auth.8zoxzg-F.mjs';
7
- import './better-auth.DH3YjMQH.mjs';
8
- import 'defu';
9
- import { createHMAC } from '@better-auth/utils/hmac';
10
-
11
- const TWO_FACTOR_COOKIE_NAME = "two_factor";
12
- const TRUST_DEVICE_COOKIE_NAME = "trust_device";
13
-
14
- const verifyTwoFactorMiddleware = createAuthMiddleware(
15
- {
16
- body: z.object({
17
- /**
18
- * if true, the device will be trusted
19
- * for 30 days. It'll be refreshed on
20
- * every sign in request within this time.
21
- */
22
- trustDevice: z.boolean().optional()
23
- })
24
- },
25
- async (ctx) => {
26
- const session = await getSessionFromCtx(ctx);
27
- if (!session) {
28
- const cookieName = ctx.context.createAuthCookie(TWO_FACTOR_COOKIE_NAME);
29
- const userId = await ctx.getSignedCookie(
30
- cookieName.name,
31
- ctx.context.secret
32
- );
33
- if (!userId) {
34
- throw new APIError("UNAUTHORIZED", {
35
- message: "invalid two factor cookie"
36
- });
37
- }
38
- const user = await ctx.context.internalAdapter.findUserById(
39
- userId
40
- );
41
- if (!user) {
42
- throw new APIError("UNAUTHORIZED", {
43
- message: "invalid two factor cookie"
44
- });
45
- }
46
- const dontRememberMe = await ctx.getSignedCookie(
47
- ctx.context.authCookies.dontRememberToken.name,
48
- ctx.context.secret
49
- );
50
- const session2 = await ctx.context.internalAdapter.createSession(
51
- userId,
52
- ctx.request,
53
- !!dontRememberMe
54
- );
55
- if (!session2) {
56
- throw new APIError("INTERNAL_SERVER_ERROR", {
57
- message: "failed to create session"
58
- });
59
- }
60
- return {
61
- valid: async (ctx2) => {
62
- await setSessionCookie(ctx2, {
63
- session: session2,
64
- user
65
- });
66
- if (ctx2.body.trustDevice) {
67
- const trustDeviceCookie = ctx2.context.createAuthCookie(
68
- TRUST_DEVICE_COOKIE_NAME,
69
- {
70
- maxAge: 30 * 24 * 60 * 60
71
- // 30 days, it'll be refreshed on sign in requests
72
- }
73
- );
74
- const token = await createHMAC("SHA-256", "base64urlnopad").sign(
75
- ctx2.context.secret,
76
- `${user.id}!${session2.token}`
77
- );
78
- await ctx2.setSignedCookie(
79
- trustDeviceCookie.name,
80
- `${token}!${session2.token}`,
81
- ctx2.context.secret,
82
- trustDeviceCookie.attributes
83
- );
84
- ctx2.setCookie(ctx2.context.authCookies.dontRememberToken.name, "", {
85
- maxAge: 0
86
- });
87
- ctx2.setCookie(cookieName.name, "", {
88
- maxAge: 0
89
- });
90
- }
91
- return ctx2.json({
92
- token: session2.token,
93
- user: {
94
- id: user.id,
95
- email: user.email,
96
- emailVerified: user.emailVerified,
97
- name: user.name,
98
- image: user.image,
99
- createdAt: user.createdAt,
100
- updatedAt: user.updatedAt
101
- }
102
- });
103
- },
104
- invalid: async () => {
105
- throw new APIError("UNAUTHORIZED", {
106
- message: "invalid two factor authentication"
107
- });
108
- },
109
- session: {
110
- session: session2,
111
- user
112
- }
113
- };
114
- }
115
- return {
116
- valid: async (ctx2) => {
117
- return ctx2.json({
118
- token: session.session.token,
119
- user: {
120
- id: session.user.id,
121
- email: session.user.email,
122
- emailVerified: session.user.emailVerified,
123
- name: session.user.name,
124
- image: session.user.image,
125
- createdAt: session.user.createdAt,
126
- updatedAt: session.user.updatedAt
127
- }
128
- });
129
- },
130
- invalid: async () => {
131
- throw new APIError("UNAUTHORIZED", {
132
- message: "invalid two factor authentication"
133
- });
134
- },
135
- session
136
- };
137
- }
138
- );
139
-
140
- export { TRUST_DEVICE_COOKIE_NAME as T, TWO_FACTOR_COOKIE_NAME as a, verifyTwoFactorMiddleware as v };