better-auth 1.3.8-beta.1 → 1.3.8-beta.3

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 (306) hide show
  1. package/dist/adapters/drizzle-adapter/index.cjs +3 -3
  2. package/dist/adapters/drizzle-adapter/index.d.cts +3 -3
  3. package/dist/adapters/drizzle-adapter/index.d.mts +3 -3
  4. package/dist/adapters/drizzle-adapter/index.d.ts +3 -3
  5. package/dist/adapters/drizzle-adapter/index.mjs +3 -3
  6. package/dist/adapters/index.cjs +3 -3
  7. package/dist/adapters/index.d.cts +4 -4
  8. package/dist/adapters/index.d.mts +4 -4
  9. package/dist/adapters/index.d.ts +4 -4
  10. package/dist/adapters/index.mjs +3 -3
  11. package/dist/adapters/kysely-adapter/index.cjs +4 -4
  12. package/dist/adapters/kysely-adapter/index.d.cts +3 -3
  13. package/dist/adapters/kysely-adapter/index.d.mts +3 -3
  14. package/dist/adapters/kysely-adapter/index.d.ts +3 -3
  15. package/dist/adapters/kysely-adapter/index.mjs +4 -4
  16. package/dist/adapters/memory-adapter/index.cjs +4 -4
  17. package/dist/adapters/memory-adapter/index.d.cts +3 -3
  18. package/dist/adapters/memory-adapter/index.d.mts +3 -3
  19. package/dist/adapters/memory-adapter/index.d.ts +3 -3
  20. package/dist/adapters/memory-adapter/index.mjs +4 -4
  21. package/dist/adapters/mongodb-adapter/index.cjs +4 -4
  22. package/dist/adapters/mongodb-adapter/index.d.cts +3 -3
  23. package/dist/adapters/mongodb-adapter/index.d.mts +3 -3
  24. package/dist/adapters/mongodb-adapter/index.d.ts +3 -3
  25. package/dist/adapters/mongodb-adapter/index.mjs +4 -4
  26. package/dist/adapters/prisma-adapter/index.cjs +3 -3
  27. package/dist/adapters/prisma-adapter/index.d.cts +3 -3
  28. package/dist/adapters/prisma-adapter/index.d.mts +3 -3
  29. package/dist/adapters/prisma-adapter/index.d.ts +3 -3
  30. package/dist/adapters/prisma-adapter/index.mjs +3 -3
  31. package/dist/adapters/test.cjs +1 -1
  32. package/dist/adapters/test.d.cts +3 -3
  33. package/dist/adapters/test.d.mts +3 -3
  34. package/dist/adapters/test.d.ts +3 -3
  35. package/dist/adapters/test.mjs +1 -1
  36. package/dist/api/index.cjs +38 -37
  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 +9 -7
  41. package/dist/chunks/node-sqlite-dialect.cjs +171 -0
  42. package/dist/chunks/node-sqlite-dialect.mjs +165 -0
  43. package/dist/client/index.cjs +2 -2
  44. package/dist/client/index.d.cts +5 -5
  45. package/dist/client/index.d.mts +5 -5
  46. package/dist/client/index.d.ts +5 -5
  47. package/dist/client/index.mjs +2 -2
  48. package/dist/client/plugins/index.cjs +2 -0
  49. package/dist/client/plugins/index.d.cts +6 -5
  50. package/dist/client/plugins/index.d.mts +6 -5
  51. package/dist/client/plugins/index.d.ts +6 -5
  52. package/dist/client/plugins/index.mjs +1 -0
  53. package/dist/client/react/index.cjs +1 -1
  54. package/dist/client/react/index.d.cts +4 -4
  55. package/dist/client/react/index.d.mts +4 -4
  56. package/dist/client/react/index.d.ts +4 -4
  57. package/dist/client/react/index.mjs +1 -1
  58. package/dist/client/solid/index.cjs +1 -1
  59. package/dist/client/solid/index.d.cts +10 -10
  60. package/dist/client/solid/index.d.mts +10 -10
  61. package/dist/client/solid/index.d.ts +10 -10
  62. package/dist/client/solid/index.mjs +1 -1
  63. package/dist/client/svelte/index.cjs +1 -1
  64. package/dist/client/svelte/index.d.cts +10 -10
  65. package/dist/client/svelte/index.d.mts +10 -10
  66. package/dist/client/svelte/index.d.ts +10 -10
  67. package/dist/client/svelte/index.mjs +1 -1
  68. package/dist/client/vue/index.cjs +1 -1
  69. package/dist/client/vue/index.d.cts +4 -4
  70. package/dist/client/vue/index.d.mts +4 -4
  71. package/dist/client/vue/index.d.ts +4 -4
  72. package/dist/client/vue/index.mjs +1 -1
  73. package/dist/cookies/index.cjs +20 -430
  74. package/dist/cookies/index.d.cts +3 -3
  75. package/dist/cookies/index.d.mts +3 -3
  76. package/dist/cookies/index.d.ts +3 -3
  77. package/dist/cookies/index.mjs +10 -424
  78. package/dist/db/index.cjs +6 -6
  79. package/dist/db/index.d.cts +4 -4
  80. package/dist/db/index.d.mts +4 -4
  81. package/dist/db/index.d.ts +4 -4
  82. package/dist/db/index.mjs +6 -6
  83. package/dist/index.cjs +11 -10
  84. package/dist/index.d.cts +13 -13
  85. package/dist/index.d.mts +13 -13
  86. package/dist/index.d.ts +13 -13
  87. package/dist/index.mjs +11 -10
  88. package/dist/integrations/next-js.cjs +9 -6
  89. package/dist/integrations/next-js.d.cts +3 -3
  90. package/dist/integrations/next-js.d.mts +3 -3
  91. package/dist/integrations/next-js.d.ts +3 -3
  92. package/dist/integrations/next-js.mjs +8 -5
  93. package/dist/integrations/node.d.cts +3 -3
  94. package/dist/integrations/node.d.mts +3 -3
  95. package/dist/integrations/node.d.ts +3 -3
  96. package/dist/integrations/react-start.cjs +9 -6
  97. package/dist/integrations/react-start.d.cts +3 -3
  98. package/dist/integrations/react-start.d.mts +3 -3
  99. package/dist/integrations/react-start.d.ts +3 -3
  100. package/dist/integrations/react-start.mjs +8 -5
  101. package/dist/integrations/svelte-kit.cjs +6 -5
  102. package/dist/integrations/svelte-kit.d.cts +3 -3
  103. package/dist/integrations/svelte-kit.d.mts +3 -3
  104. package/dist/integrations/svelte-kit.d.ts +3 -3
  105. package/dist/integrations/svelte-kit.mjs +5 -4
  106. package/dist/oauth2/index.cjs +13 -10
  107. package/dist/oauth2/index.d.cts +34 -8
  108. package/dist/oauth2/index.d.mts +34 -8
  109. package/dist/oauth2/index.d.ts +34 -8
  110. package/dist/oauth2/index.mjs +11 -10
  111. package/dist/plugins/access/index.d.cts +1 -1
  112. package/dist/plugins/access/index.d.mts +1 -1
  113. package/dist/plugins/access/index.d.ts +1 -1
  114. package/dist/plugins/admin/access/index.d.cts +1 -1
  115. package/dist/plugins/admin/access/index.d.mts +1 -1
  116. package/dist/plugins/admin/access/index.d.ts +1 -1
  117. package/dist/plugins/admin/index.cjs +12 -11
  118. package/dist/plugins/admin/index.d.cts +7 -7
  119. package/dist/plugins/admin/index.d.mts +7 -7
  120. package/dist/plugins/admin/index.d.ts +7 -7
  121. package/dist/plugins/admin/index.mjs +12 -11
  122. package/dist/plugins/anonymous/index.cjs +12 -11
  123. package/dist/plugins/anonymous/index.d.cts +3 -3
  124. package/dist/plugins/anonymous/index.d.mts +3 -3
  125. package/dist/plugins/anonymous/index.d.ts +3 -3
  126. package/dist/plugins/anonymous/index.mjs +6 -5
  127. package/dist/plugins/bearer/index.cjs +7 -6
  128. package/dist/plugins/bearer/index.d.cts +3 -3
  129. package/dist/plugins/bearer/index.d.mts +3 -3
  130. package/dist/plugins/bearer/index.d.ts +3 -3
  131. package/dist/plugins/bearer/index.mjs +5 -4
  132. package/dist/plugins/captcha/index.d.cts +3 -3
  133. package/dist/plugins/captcha/index.d.mts +3 -3
  134. package/dist/plugins/captcha/index.d.ts +3 -3
  135. package/dist/plugins/custom-session/index.cjs +10 -9
  136. package/dist/plugins/custom-session/index.d.cts +3 -3
  137. package/dist/plugins/custom-session/index.d.mts +3 -3
  138. package/dist/plugins/custom-session/index.d.ts +3 -3
  139. package/dist/plugins/custom-session/index.mjs +5 -4
  140. package/dist/plugins/device-authorization/index.cjs +922 -0
  141. package/dist/plugins/device-authorization/index.d.cts +638 -0
  142. package/dist/plugins/device-authorization/index.d.mts +638 -0
  143. package/dist/plugins/device-authorization/index.d.ts +638 -0
  144. package/dist/plugins/device-authorization/index.mjs +905 -0
  145. package/dist/plugins/email-otp/index.cjs +16 -15
  146. package/dist/plugins/email-otp/index.d.cts +3 -3
  147. package/dist/plugins/email-otp/index.d.mts +3 -3
  148. package/dist/plugins/email-otp/index.d.ts +3 -3
  149. package/dist/plugins/email-otp/index.mjs +7 -6
  150. package/dist/plugins/generic-oauth/index.cjs +46 -31
  151. package/dist/plugins/generic-oauth/index.d.cts +5 -19
  152. package/dist/plugins/generic-oauth/index.d.mts +5 -19
  153. package/dist/plugins/generic-oauth/index.d.ts +5 -19
  154. package/dist/plugins/generic-oauth/index.mjs +38 -23
  155. package/dist/plugins/haveibeenpwned/index.cjs +5 -4
  156. package/dist/plugins/haveibeenpwned/index.d.cts +3 -3
  157. package/dist/plugins/haveibeenpwned/index.d.mts +3 -3
  158. package/dist/plugins/haveibeenpwned/index.d.ts +3 -3
  159. package/dist/plugins/haveibeenpwned/index.mjs +5 -4
  160. package/dist/plugins/index.cjs +30 -24
  161. package/dist/plugins/index.d.cts +8 -7
  162. package/dist/plugins/index.d.mts +8 -7
  163. package/dist/plugins/index.d.ts +8 -7
  164. package/dist/plugins/index.mjs +14 -11
  165. package/dist/plugins/jwt/index.cjs +58 -17
  166. package/dist/plugins/jwt/index.d.cts +14 -3
  167. package/dist/plugins/jwt/index.d.mts +14 -3
  168. package/dist/plugins/jwt/index.d.ts +14 -3
  169. package/dist/plugins/jwt/index.mjs +53 -12
  170. package/dist/plugins/magic-link/index.cjs +13 -12
  171. package/dist/plugins/magic-link/index.mjs +10 -9
  172. package/dist/plugins/multi-session/index.cjs +14 -13
  173. package/dist/plugins/multi-session/index.d.cts +3 -3
  174. package/dist/plugins/multi-session/index.d.mts +3 -3
  175. package/dist/plugins/multi-session/index.d.ts +3 -3
  176. package/dist/plugins/multi-session/index.mjs +7 -6
  177. package/dist/plugins/oauth-proxy/index.cjs +8 -7
  178. package/dist/plugins/oauth-proxy/index.d.cts +3 -3
  179. package/dist/plugins/oauth-proxy/index.d.mts +3 -3
  180. package/dist/plugins/oauth-proxy/index.d.ts +3 -3
  181. package/dist/plugins/oauth-proxy/index.mjs +5 -4
  182. package/dist/plugins/oidc-provider/index.cjs +6 -5
  183. package/dist/plugins/oidc-provider/index.d.cts +7 -7
  184. package/dist/plugins/oidc-provider/index.d.mts +7 -7
  185. package/dist/plugins/oidc-provider/index.d.ts +7 -7
  186. package/dist/plugins/oidc-provider/index.mjs +6 -5
  187. package/dist/plugins/one-tap/index.cjs +8 -7
  188. package/dist/plugins/one-tap/index.mjs +7 -6
  189. package/dist/plugins/one-time-token/index.cjs +11 -8
  190. package/dist/plugins/one-time-token/index.d.cts +3 -3
  191. package/dist/plugins/one-time-token/index.d.mts +3 -3
  192. package/dist/plugins/one-time-token/index.d.ts +3 -3
  193. package/dist/plugins/one-time-token/index.mjs +11 -8
  194. package/dist/plugins/open-api/index.cjs +7 -6
  195. package/dist/plugins/open-api/index.d.cts +3 -3
  196. package/dist/plugins/open-api/index.d.mts +3 -3
  197. package/dist/plugins/open-api/index.d.ts +3 -3
  198. package/dist/plugins/open-api/index.mjs +5 -4
  199. package/dist/plugins/organization/access/index.d.cts +1 -1
  200. package/dist/plugins/organization/access/index.d.mts +1 -1
  201. package/dist/plugins/organization/access/index.d.ts +1 -1
  202. package/dist/plugins/organization/index.cjs +13 -12
  203. package/dist/plugins/organization/index.d.cts +7 -7
  204. package/dist/plugins/organization/index.d.mts +7 -7
  205. package/dist/plugins/organization/index.d.ts +7 -7
  206. package/dist/plugins/organization/index.mjs +13 -12
  207. package/dist/plugins/passkey/index.cjs +23 -22
  208. package/dist/plugins/passkey/index.d.cts +3 -3
  209. package/dist/plugins/passkey/index.d.mts +3 -3
  210. package/dist/plugins/passkey/index.d.ts +3 -3
  211. package/dist/plugins/passkey/index.mjs +7 -6
  212. package/dist/plugins/phone-number/index.cjs +32 -31
  213. package/dist/plugins/phone-number/index.d.cts +3 -3
  214. package/dist/plugins/phone-number/index.d.mts +3 -3
  215. package/dist/plugins/phone-number/index.d.ts +3 -3
  216. package/dist/plugins/phone-number/index.mjs +9 -8
  217. package/dist/plugins/siwe/index.cjs +11 -10
  218. package/dist/plugins/siwe/index.d.cts +41 -0
  219. package/dist/plugins/siwe/index.d.mts +41 -0
  220. package/dist/plugins/siwe/index.d.ts +41 -0
  221. package/dist/plugins/siwe/index.mjs +9 -8
  222. package/dist/plugins/sso/index.cjs +11 -10
  223. package/dist/plugins/sso/index.d.cts +5 -5
  224. package/dist/plugins/sso/index.d.mts +5 -5
  225. package/dist/plugins/sso/index.d.ts +5 -5
  226. package/dist/plugins/sso/index.mjs +7 -6
  227. package/dist/plugins/two-factor/index.cjs +47 -46
  228. package/dist/plugins/two-factor/index.d.cts +3 -3
  229. package/dist/plugins/two-factor/index.d.mts +3 -3
  230. package/dist/plugins/two-factor/index.d.ts +3 -3
  231. package/dist/plugins/two-factor/index.mjs +5 -4
  232. package/dist/plugins/username/index.cjs +19 -18
  233. package/dist/plugins/username/index.d.cts +5 -5
  234. package/dist/plugins/username/index.d.mts +5 -5
  235. package/dist/plugins/username/index.d.ts +5 -5
  236. package/dist/plugins/username/index.mjs +10 -9
  237. package/dist/shared/{better-auth.CwsxfHfN.mjs → better-auth.B-xYKxwt.mjs} +9 -97
  238. package/dist/shared/{better-auth.Bf5MnLaK.d.cts → better-auth.B29NjI62.d.cts} +4 -4
  239. package/dist/shared/{better-auth.GpOOav9x.cjs → better-auth.B3274wGK.cjs} +7 -1
  240. package/dist/shared/{better-auth.p1GhhfhV.mjs → better-auth.B548OOOk.mjs} +32 -30
  241. package/dist/shared/better-auth.BMgeJg3r.cjs +17 -0
  242. package/dist/shared/{better-auth.BCerfnoo.cjs → better-auth.BNhZazTR.cjs} +20 -1
  243. package/dist/shared/{better-auth.DIfzDoPN.mjs → better-auth.BQNzC8cU.mjs} +1 -1
  244. package/dist/shared/{better-auth.gABN3TsS.mjs → better-auth.BSGkasIG.mjs} +2 -2
  245. package/dist/shared/{better-auth.6hiPn8Kd.d.mts → better-auth.BU9YW_qQ.d.cts} +6 -6
  246. package/dist/shared/{better-auth.0SyTY9U9.d.ts → better-auth.BWfwO5vl.d.cts} +21 -73
  247. package/dist/shared/{better-auth.BDEfedYa.d.mts → better-auth.BYJu3IQC.d.ts} +4 -4
  248. package/dist/shared/{better-auth.PgM8qMHr.mjs → better-auth.BZZKN1g7.mjs} +1 -1
  249. package/dist/shared/{better-auth.BtemoGGn.mjs → better-auth.B_3Nie7C.mjs} +2 -2
  250. package/dist/shared/{better-auth.CCCUvENJ.cjs → better-auth.BblrvPZ3.cjs} +1 -1
  251. package/dist/shared/better-auth.BfeJWAMn.mjs +497 -0
  252. package/dist/shared/{better-auth.DH3YjMQH.mjs → better-auth.BjBlybv-.mjs} +7 -1
  253. package/dist/shared/better-auth.BpA03GIs.mjs +15 -0
  254. package/dist/shared/{better-auth.DrzbcRgZ.cjs → better-auth.BpptWVxZ.cjs} +65 -64
  255. package/dist/shared/{better-auth.D85s0t2j.d.mts → better-auth.BqrGtIt2.d.mts} +1 -1
  256. package/dist/shared/{better-auth.C_0BlDB0.d.ts → better-auth.BvN9j5Ap.d.ts} +1 -1
  257. package/dist/shared/{better-auth.BS4wi0R-.d.mts → better-auth.Bxn_1Cii.d.ts} +21 -73
  258. package/dist/shared/{better-auth.DiE4yQHn.mjs → better-auth.C8Y2rhan.mjs} +5 -4
  259. package/dist/shared/{better-auth.Co0UDY4N.cjs → better-auth.CFZJKUMM.cjs} +10 -98
  260. package/dist/shared/{better-auth.CVQe8izV.mjs → better-auth.CGGao4aY.mjs} +7 -0
  261. package/dist/shared/{better-auth.NCWQv_ti.cjs → better-auth.CKjaHNrP.cjs} +39 -45
  262. package/dist/shared/{better-auth.CFtZttAn.cjs → better-auth.CL4S7WA5.cjs} +2 -2
  263. package/dist/shared/{better-auth.Bgs2SPcK.cjs → better-auth.CMnvkNNK.cjs} +2 -2
  264. package/dist/shared/{better-auth.BbDyeJdW.cjs → better-auth.CR4J09bm.cjs} +6 -5
  265. package/dist/shared/{better-auth.DMus0Wrm.mjs → better-auth.Cl1MyjEq.mjs} +254 -510
  266. package/dist/shared/{better-auth.Db2g2HxM.cjs → better-auth.CmdI9lHT.cjs} +1 -1
  267. package/dist/shared/{better-auth.DrQaSEU_.mjs → better-auth.CsvyivcG.mjs} +21 -27
  268. package/dist/shared/{better-auth.CVYnNkfw.cjs → better-auth.CtToz4qL.cjs} +7 -0
  269. package/dist/shared/{better-auth.YmpB7UaD.d.cts → better-auth.D2gg3ys1.d.cts} +1 -1
  270. package/dist/shared/{better-auth.Je5iPAGQ.d.mts → better-auth.D4yr0Ou1.d.ts} +200 -11
  271. package/dist/shared/{better-auth.HYhkNVyD.mjs → better-auth.D96SwENp.mjs} +20 -1
  272. package/dist/shared/better-auth.DF-MUmVw.mjs +479 -0
  273. package/dist/shared/{better-auth.BDR52Rf2.d.cts → better-auth.DTtXpZYr.d.cts} +2 -1
  274. package/dist/shared/{better-auth.BDR52Rf2.d.mts → better-auth.DTtXpZYr.d.mts} +2 -1
  275. package/dist/shared/{better-auth.BDR52Rf2.d.ts → better-auth.DTtXpZYr.d.ts} +2 -1
  276. package/dist/shared/{better-auth.BDBtglk1.mjs → better-auth.DVsI0DHa.mjs} +1 -1
  277. package/dist/shared/{better-auth.DX362szo.mjs → better-auth.DY8mXezF.mjs} +4 -3
  278. package/dist/shared/{better-auth.PFi3XfiT.mjs → better-auth.DZVMh_VM.mjs} +3 -2
  279. package/dist/shared/better-auth.DmBU2Klq.cjs +526 -0
  280. package/dist/shared/{better-auth._D1fz1Yx.d.ts → better-auth.DoFtnL_B.d.mts} +4 -4
  281. package/dist/shared/{better-auth.MrJBhiF6.mjs → better-auth.Dqe7GuxR.mjs} +4 -4
  282. package/dist/shared/{better-auth.CkqBZvXM.d.cts → better-auth.Du7MKGKS.d.cts} +200 -11
  283. package/dist/shared/{better-auth.X6YzBCDT.d.cts → better-auth.DymB1NxW.d.mts} +6 -6
  284. package/dist/shared/{better-auth.DnUZno9_.d.ts → better-auth.F1OUHOUm.d.mts} +200 -11
  285. package/dist/shared/{better-auth.CRyLLXtn.cjs → better-auth.UmJlYEfa.cjs} +395 -662
  286. package/dist/shared/{better-auth.WTr4EDT7.cjs → better-auth.cBJ0kvYy.cjs} +36 -35
  287. package/dist/shared/better-auth.l2-e84v_.cjs +491 -0
  288. package/dist/shared/{better-auth.CkEkCniR.d.cts → better-auth.oCjO5qEz.d.mts} +21 -73
  289. package/dist/shared/{better-auth.D4eTSyUO.cjs → better-auth.pXA_xs2e.cjs} +50 -48
  290. package/dist/shared/{better-auth.DrKKZc3v.cjs → better-auth.spuYC23a.cjs} +4 -4
  291. package/dist/shared/{better-auth.CLfudv58.d.ts → better-auth.tDeNcGKy.d.ts} +5 -5
  292. package/dist/shared/{better-auth.DbrEw0kN.cjs → better-auth.vPQBmXQL.cjs} +1 -1
  293. package/dist/social-providers/index.cjs +12 -10
  294. package/dist/social-providers/index.d.cts +2 -2
  295. package/dist/social-providers/index.d.mts +2 -2
  296. package/dist/social-providers/index.d.ts +2 -2
  297. package/dist/social-providers/index.mjs +11 -10
  298. package/dist/test-utils/index.cjs +16 -13
  299. package/dist/test-utils/index.d.cts +32 -116
  300. package/dist/test-utils/index.d.mts +32 -116
  301. package/dist/test-utils/index.d.ts +32 -116
  302. package/dist/test-utils/index.mjs +16 -13
  303. package/dist/types/index.d.cts +4 -4
  304. package/dist/types/index.d.mts +4 -4
  305. package/dist/types/index.d.ts +4 -4
  306. package/package.json +20 -4
@@ -0,0 +1,491 @@
1
+ 'use strict';
2
+
3
+ const index = require('./better-auth.ANpbi45u.cjs');
4
+ const date = require('./better-auth.C1hdVENX.cjs');
5
+ const env = require('./better-auth.B6fIklBU.cjs');
6
+ const base64 = require('@better-auth/utils/base64');
7
+ const hmac = require('@better-auth/utils/hmac');
8
+ const json = require('./better-auth.vPQBmXQL.cjs');
9
+ const url = require('./better-auth.DRmln2Nr.cjs');
10
+ const binary = require('@better-auth/utils/binary');
11
+
12
+ const JOSE_REGEX = /^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;
13
+ const JOSE_MINUTE = 60;
14
+ const JOSE_HOUR = JOSE_MINUTE * 60;
15
+ const JOSE_DAY = JOSE_HOUR * 24;
16
+ const JOSE_WEEK = JOSE_DAY * 7;
17
+ const JOSE_YEAR = JOSE_DAY * 365.25;
18
+ const createTime = (value, format) => {
19
+ const toMilliseconds = () => {
20
+ switch (format) {
21
+ case "ms":
22
+ return value;
23
+ case "s":
24
+ return value * 1e3;
25
+ case "m":
26
+ return value * 1e3 * 60;
27
+ case "h":
28
+ return value * 1e3 * 60 * 60;
29
+ case "d":
30
+ return value * 1e3 * 60 * 60 * 24;
31
+ case "w":
32
+ return value * 1e3 * 60 * 60 * 24 * 7;
33
+ case "y":
34
+ return value * 1e3 * 60 * 60 * 24 * 365;
35
+ }
36
+ };
37
+ const time = {
38
+ t: `${value}${format}`,
39
+ value,
40
+ tFormat: format,
41
+ toMilliseconds,
42
+ toSeconds: () => time.toMilliseconds() / 1e3,
43
+ toMinutes: () => time.toSeconds() / 60,
44
+ toHours: () => time.toMinutes() / 60,
45
+ toDays: () => time.toHours() / 24,
46
+ toWeeks: () => time.toDays() / 7,
47
+ toYears: () => time.toDays() / 365,
48
+ getDate: () => new Date(Date.now() + time.toMilliseconds()),
49
+ add: (other) => {
50
+ const otherMs = typeof other === "string" ? parseTime(other).toMilliseconds() : other.toMilliseconds();
51
+ return createTime(time.toMilliseconds() + otherMs, "ms");
52
+ },
53
+ subtract: (other) => {
54
+ const otherMs = typeof other === "string" ? parseTime(other).toMilliseconds() : other.toMilliseconds();
55
+ return createTime(time.toMilliseconds() - otherMs, "ms");
56
+ },
57
+ multiply: (factor) => createTime(time.toMilliseconds() * factor, "ms"),
58
+ divide: (divisor) => createTime(time.toMilliseconds() / divisor, "ms"),
59
+ equals: (other) => {
60
+ const otherMs = typeof other === "string" ? parseTime(other).toMilliseconds() : other.toMilliseconds();
61
+ return time.toMilliseconds() === otherMs;
62
+ },
63
+ lessThan: (other) => {
64
+ const otherMs = typeof other === "string" ? parseTime(other).toMilliseconds() : other.toMilliseconds();
65
+ return time.toMilliseconds() < otherMs;
66
+ },
67
+ greaterThan: (other) => {
68
+ const otherMs = typeof other === "string" ? parseTime(other).toMilliseconds() : other.toMilliseconds();
69
+ return time.toMilliseconds() > otherMs;
70
+ },
71
+ format: (pattern) => {
72
+ const date = time.getDate();
73
+ return pattern.replace(/YYYY|MM|DD|HH|mm|ss/g, (match) => {
74
+ switch (match) {
75
+ case "YYYY":
76
+ return date.getFullYear().toString();
77
+ case "MM":
78
+ return (date.getMonth() + 1).toString().padStart(2, "0");
79
+ case "DD":
80
+ return date.getDate().toString().padStart(2, "0");
81
+ case "HH":
82
+ return date.getHours().toString().padStart(2, "0");
83
+ case "mm":
84
+ return date.getMinutes().toString().padStart(2, "0");
85
+ case "ss":
86
+ return date.getSeconds().toString().padStart(2, "0");
87
+ default:
88
+ return match;
89
+ }
90
+ });
91
+ },
92
+ fromNow: () => {
93
+ const ms = time.toMilliseconds();
94
+ if (ms < 0) return time.ago();
95
+ if (ms < 1e3) return "in a few seconds";
96
+ if (ms < 6e4) return `in ${Math.round(ms / 1e3)} seconds`;
97
+ if (ms < 36e5) return `in ${Math.round(ms / 6e4)} minutes`;
98
+ if (ms < 864e5) return `in ${Math.round(ms / 36e5)} hours`;
99
+ if (ms < 6048e5) return `in ${Math.round(ms / 864e5)} days`;
100
+ if (ms < 26298e5) return `in ${Math.round(ms / 6048e5)} weeks`;
101
+ if (ms < 315576e5) return `in ${Math.round(ms / 26298e5)} months`;
102
+ return `in ${Math.round(ms / 315576e5)} years`;
103
+ },
104
+ ago: () => {
105
+ const ms = -time.toMilliseconds();
106
+ if (ms < 0) return time.fromNow();
107
+ if (ms < 1e3) return "a few seconds ago";
108
+ if (ms < 6e4) return `${Math.round(ms / 1e3)} seconds ago`;
109
+ if (ms < 36e5) return `${Math.round(ms / 6e4)} minutes ago`;
110
+ if (ms < 864e5) return `${Math.round(ms / 36e5)} hours ago`;
111
+ if (ms < 6048e5) return `${Math.round(ms / 864e5)} days ago`;
112
+ if (ms < 26298e5) return `${Math.round(ms / 6048e5)} weeks ago`;
113
+ if (ms < 315576e5) return `${Math.round(ms / 26298e5)} months ago`;
114
+ return `${Math.round(ms / 315576e5)} years ago`;
115
+ }
116
+ };
117
+ return time;
118
+ };
119
+ const parseTime = (time) => {
120
+ const match = time.match(/^(\d+)(ms|s|m|h|d|w|y)$/);
121
+ if (!match) throw new Error("Invalid time format");
122
+ return createTime(parseInt(match[1]), match[2]);
123
+ };
124
+ const joseSecs = (str) => {
125
+ const matched = JOSE_REGEX.exec(str);
126
+ if (!matched || matched[4] && matched[1]) {
127
+ throw new TypeError("Invalid time period format");
128
+ }
129
+ const value = parseFloat(matched[2]);
130
+ const unit = matched[3].toLowerCase();
131
+ let numericDate;
132
+ switch (unit) {
133
+ case "sec":
134
+ case "secs":
135
+ case "second":
136
+ case "seconds":
137
+ case "s":
138
+ numericDate = Math.round(value);
139
+ break;
140
+ case "minute":
141
+ case "minutes":
142
+ case "min":
143
+ case "mins":
144
+ case "m":
145
+ numericDate = Math.round(value * JOSE_MINUTE);
146
+ break;
147
+ case "hour":
148
+ case "hours":
149
+ case "hr":
150
+ case "hrs":
151
+ case "h":
152
+ numericDate = Math.round(value * JOSE_HOUR);
153
+ break;
154
+ case "day":
155
+ case "days":
156
+ case "d":
157
+ numericDate = Math.round(value * JOSE_DAY);
158
+ break;
159
+ case "week":
160
+ case "weeks":
161
+ case "w":
162
+ numericDate = Math.round(value * JOSE_WEEK);
163
+ break;
164
+ // years matched
165
+ default:
166
+ numericDate = Math.round(value * JOSE_YEAR);
167
+ break;
168
+ }
169
+ if (matched[1] === "-" || matched[4] === "ago") {
170
+ return -numericDate;
171
+ }
172
+ return numericDate;
173
+ };
174
+
175
+ function parseSetCookieHeader(setCookie) {
176
+ const cookies = /* @__PURE__ */ new Map();
177
+ const cookieArray = setCookie.split(", ");
178
+ cookieArray.forEach((cookieString) => {
179
+ const parts = cookieString.split(";").map((part) => part.trim());
180
+ const [nameValue, ...attributes] = parts;
181
+ const [name, ...valueParts] = nameValue.split("=");
182
+ const value = valueParts.join("=");
183
+ if (!name || value === void 0) {
184
+ return;
185
+ }
186
+ const attrObj = { value };
187
+ attributes.forEach((attribute) => {
188
+ const [attrName, ...attrValueParts] = attribute.split("=");
189
+ const attrValue = attrValueParts.join("=");
190
+ const normalizedAttrName = attrName.trim().toLowerCase();
191
+ switch (normalizedAttrName) {
192
+ case "max-age":
193
+ attrObj["max-age"] = attrValue ? parseInt(attrValue.trim(), 10) : void 0;
194
+ break;
195
+ case "expires":
196
+ attrObj.expires = attrValue ? new Date(attrValue.trim()) : void 0;
197
+ break;
198
+ case "domain":
199
+ attrObj.domain = attrValue ? attrValue.trim() : void 0;
200
+ break;
201
+ case "path":
202
+ attrObj.path = attrValue ? attrValue.trim() : void 0;
203
+ break;
204
+ case "secure":
205
+ attrObj.secure = true;
206
+ break;
207
+ case "httponly":
208
+ attrObj.httponly = true;
209
+ break;
210
+ case "samesite":
211
+ attrObj.samesite = attrValue ? attrValue.trim().toLowerCase() : void 0;
212
+ break;
213
+ default:
214
+ attrObj[normalizedAttrName] = attrValue ? attrValue.trim() : true;
215
+ break;
216
+ }
217
+ });
218
+ cookies.set(name, attrObj);
219
+ });
220
+ return cookies;
221
+ }
222
+ function setCookieToHeader(headers) {
223
+ return (context) => {
224
+ const setCookieHeader = context.response.headers.get("set-cookie");
225
+ if (!setCookieHeader) {
226
+ return;
227
+ }
228
+ const cookieMap = /* @__PURE__ */ new Map();
229
+ const existingCookiesHeader = headers.get("cookie") || "";
230
+ existingCookiesHeader.split(";").forEach((cookie) => {
231
+ const [name, ...rest] = cookie.trim().split("=");
232
+ if (name && rest.length > 0) {
233
+ cookieMap.set(name, rest.join("="));
234
+ }
235
+ });
236
+ const setCookieHeaders = setCookieHeader.split(",");
237
+ setCookieHeaders.forEach((header) => {
238
+ const cookies = parseSetCookieHeader(header);
239
+ cookies.forEach((value, name) => {
240
+ cookieMap.set(name, value.value);
241
+ });
242
+ });
243
+ const updatedCookies = Array.from(cookieMap.entries()).map(([name, value]) => `${name}=${value}`).join("; ");
244
+ headers.set("cookie", updatedCookies);
245
+ };
246
+ }
247
+
248
+ function createCookieGetter(options) {
249
+ const secure = options.advanced?.useSecureCookies !== void 0 ? options.advanced?.useSecureCookies : options.baseURL !== void 0 ? options.baseURL.startsWith("https://") ? true : false : env.isProduction;
250
+ const secureCookiePrefix = secure ? "__Secure-" : "";
251
+ const crossSubdomainEnabled = !!options.advanced?.crossSubDomainCookies?.enabled;
252
+ const domain = crossSubdomainEnabled ? options.advanced?.crossSubDomainCookies?.domain || (options.baseURL ? new URL(options.baseURL).hostname : void 0) : void 0;
253
+ if (crossSubdomainEnabled && !domain) {
254
+ throw new index.BetterAuthError(
255
+ "baseURL is required when crossSubdomainCookies are enabled"
256
+ );
257
+ }
258
+ function createCookie(cookieName, overrideAttributes = {}) {
259
+ const prefix = options.advanced?.cookiePrefix || "better-auth";
260
+ const name = options.advanced?.cookies?.[cookieName]?.name || `${prefix}.${cookieName}`;
261
+ const attributes = options.advanced?.cookies?.[cookieName]?.attributes;
262
+ return {
263
+ name: `${secureCookiePrefix}${name}`,
264
+ attributes: {
265
+ secure: !!secureCookiePrefix,
266
+ sameSite: "lax",
267
+ path: "/",
268
+ httpOnly: true,
269
+ ...crossSubdomainEnabled ? { domain } : {},
270
+ ...options.advanced?.defaultCookieAttributes,
271
+ ...overrideAttributes,
272
+ ...attributes
273
+ }
274
+ };
275
+ }
276
+ return createCookie;
277
+ }
278
+ function getCookies(options) {
279
+ const createCookie = createCookieGetter(options);
280
+ const sessionMaxAge = options.session?.expiresIn || createTime(7, "d").toSeconds();
281
+ const sessionToken = createCookie("session_token", {
282
+ maxAge: sessionMaxAge
283
+ });
284
+ const sessionData = createCookie("session_data", {
285
+ maxAge: options.session?.cookieCache?.maxAge || 60 * 5
286
+ });
287
+ const dontRememberToken = createCookie("dont_remember");
288
+ return {
289
+ sessionToken: {
290
+ name: sessionToken.name,
291
+ options: sessionToken.attributes
292
+ },
293
+ /**
294
+ * This cookie is used to store the session data in the cookie
295
+ * This is useful for when you want to cache the session in the cookie
296
+ */
297
+ sessionData: {
298
+ name: sessionData.name,
299
+ options: sessionData.attributes
300
+ },
301
+ dontRememberToken: {
302
+ name: dontRememberToken.name,
303
+ options: dontRememberToken.attributes
304
+ }
305
+ };
306
+ }
307
+ async function setCookieCache(ctx, session) {
308
+ const shouldStoreSessionDataInCookie = ctx.context.options.session?.cookieCache?.enabled;
309
+ if (shouldStoreSessionDataInCookie) {
310
+ const filteredSession = Object.entries(session.session).reduce(
311
+ (acc, [key, value]) => {
312
+ const fieldConfig = ctx.context.options.session?.additionalFields?.[key];
313
+ if (!fieldConfig || fieldConfig.returned !== false) {
314
+ acc[key] = value;
315
+ }
316
+ return acc;
317
+ },
318
+ {}
319
+ );
320
+ const sessionData = { session: filteredSession, user: session.user };
321
+ const expiresAtDate = date.getDate(
322
+ ctx.context.authCookies.sessionData.options.maxAge || 60,
323
+ "sec"
324
+ ).getTime();
325
+ const data = base64.base64Url.encode(
326
+ JSON.stringify({
327
+ session: sessionData,
328
+ expiresAt: expiresAtDate,
329
+ signature: await hmac.createHMAC("SHA-256", "base64urlnopad").sign(
330
+ ctx.context.secret,
331
+ JSON.stringify({
332
+ ...sessionData,
333
+ expiresAt: expiresAtDate
334
+ })
335
+ )
336
+ }),
337
+ {
338
+ padding: false
339
+ }
340
+ );
341
+ if (data.length > 4093) {
342
+ throw new index.BetterAuthError(
343
+ "Session data is too large to store in the cookie. Please disable session cookie caching or reduce the size of the session data"
344
+ );
345
+ }
346
+ ctx.setCookie(
347
+ ctx.context.authCookies.sessionData.name,
348
+ data,
349
+ ctx.context.authCookies.sessionData.options
350
+ );
351
+ }
352
+ }
353
+ async function setSessionCookie(ctx, session, dontRememberMe, overrides) {
354
+ const dontRememberMeCookie = await ctx.getSignedCookie(
355
+ ctx.context.authCookies.dontRememberToken.name,
356
+ ctx.context.secret
357
+ );
358
+ dontRememberMe = dontRememberMe !== void 0 ? dontRememberMe : !!dontRememberMeCookie;
359
+ const options = ctx.context.authCookies.sessionToken.options;
360
+ const maxAge = dontRememberMe ? void 0 : ctx.context.sessionConfig.expiresIn;
361
+ await ctx.setSignedCookie(
362
+ ctx.context.authCookies.sessionToken.name,
363
+ session.session.token,
364
+ ctx.context.secret,
365
+ {
366
+ ...options,
367
+ maxAge,
368
+ ...overrides
369
+ }
370
+ );
371
+ if (dontRememberMe) {
372
+ await ctx.setSignedCookie(
373
+ ctx.context.authCookies.dontRememberToken.name,
374
+ "true",
375
+ ctx.context.secret,
376
+ ctx.context.authCookies.dontRememberToken.options
377
+ );
378
+ }
379
+ await setCookieCache(ctx, session);
380
+ ctx.context.setNewSession(session);
381
+ if (ctx.context.options.secondaryStorage) {
382
+ await ctx.context.secondaryStorage?.set(
383
+ session.session.token,
384
+ JSON.stringify({
385
+ user: session.user,
386
+ session: session.session
387
+ }),
388
+ Math.floor(
389
+ (new Date(session.session.expiresAt).getTime() - Date.now()) / 1e3
390
+ )
391
+ );
392
+ }
393
+ }
394
+ function deleteSessionCookie(ctx, skipDontRememberMe) {
395
+ ctx.setCookie(ctx.context.authCookies.sessionToken.name, "", {
396
+ ...ctx.context.authCookies.sessionToken.options,
397
+ maxAge: 0
398
+ });
399
+ ctx.setCookie(ctx.context.authCookies.sessionData.name, "", {
400
+ ...ctx.context.authCookies.sessionData.options,
401
+ maxAge: 0
402
+ });
403
+ if (!skipDontRememberMe) {
404
+ ctx.setCookie(ctx.context.authCookies.dontRememberToken.name, "", {
405
+ ...ctx.context.authCookies.dontRememberToken.options,
406
+ maxAge: 0
407
+ });
408
+ }
409
+ }
410
+ function parseCookies(cookieHeader) {
411
+ const cookies = cookieHeader.split("; ");
412
+ const cookieMap = /* @__PURE__ */ new Map();
413
+ cookies.forEach((cookie) => {
414
+ const [name, value] = cookie.split("=");
415
+ cookieMap.set(name, value);
416
+ });
417
+ return cookieMap;
418
+ }
419
+ const getSessionCookie = (request, config) => {
420
+ if (config?.cookiePrefix) {
421
+ if (config.cookieName) {
422
+ config.cookiePrefix = `${config.cookiePrefix}-`;
423
+ } else {
424
+ config.cookiePrefix = `${config.cookiePrefix}.`;
425
+ }
426
+ }
427
+ const headers = "headers" in request ? request.headers : request;
428
+ const req = request instanceof Request ? request : void 0;
429
+ url.getBaseURL(req?.url, config?.path, req);
430
+ const cookies = headers.get("cookie");
431
+ if (!cookies) {
432
+ return null;
433
+ }
434
+ const { cookieName = "session_token", cookiePrefix = "better-auth." } = config || {};
435
+ const name = `${cookiePrefix}${cookieName}`;
436
+ const secureCookieName = `__Secure-${name}`;
437
+ const parsedCookie = parseCookies(cookies);
438
+ const sessionToken = parsedCookie.get(name) || parsedCookie.get(secureCookieName);
439
+ if (sessionToken) {
440
+ return sessionToken;
441
+ }
442
+ return null;
443
+ };
444
+ const getCookieCache = async (request, config) => {
445
+ const headers = request instanceof Headers ? request : request.headers;
446
+ const cookies = headers.get("cookie");
447
+ if (!cookies) {
448
+ return null;
449
+ }
450
+ const { cookieName = "session_data", cookiePrefix = "better-auth" } = config || {};
451
+ const name = config?.isSecure !== void 0 ? config.isSecure ? `__Secure-${cookiePrefix}.${cookieName}` : `${cookiePrefix}.${cookieName}` : env.isProduction ? `__Secure-${cookiePrefix}.${cookieName}` : `${cookiePrefix}.${cookieName}`;
452
+ const parsedCookie = parseCookies(cookies);
453
+ const sessionData = parsedCookie.get(name);
454
+ if (sessionData) {
455
+ const sessionDataPayload = json.safeJSONParse(binary.binary.decode(base64.base64Url.decode(sessionData)));
456
+ if (!sessionDataPayload) {
457
+ return null;
458
+ }
459
+ const secret = config?.secret || env.env.BETTER_AUTH_SECRET;
460
+ if (!secret) {
461
+ throw new index.BetterAuthError(
462
+ "getCookieCache requires a secret to be provided. Either pass it as an option or set the BETTER_AUTH_SECRET environment variable"
463
+ );
464
+ }
465
+ const isValid = await hmac.createHMAC("SHA-256", "base64urlnopad").verify(
466
+ secret,
467
+ JSON.stringify({
468
+ ...sessionDataPayload.session,
469
+ expiresAt: sessionDataPayload.expiresAt
470
+ }),
471
+ sessionDataPayload.signature
472
+ );
473
+ if (!isValid) {
474
+ return null;
475
+ }
476
+ return sessionDataPayload.session;
477
+ }
478
+ return null;
479
+ };
480
+
481
+ exports.createCookieGetter = createCookieGetter;
482
+ exports.deleteSessionCookie = deleteSessionCookie;
483
+ exports.getCookieCache = getCookieCache;
484
+ exports.getCookies = getCookies;
485
+ exports.getSessionCookie = getSessionCookie;
486
+ exports.joseSecs = joseSecs;
487
+ exports.parseCookies = parseCookies;
488
+ exports.parseSetCookieHeader = parseSetCookieHeader;
489
+ exports.setCookieCache = setCookieCache;
490
+ exports.setCookieToHeader = setCookieToHeader;
491
+ exports.setSessionCookie = setSessionCookie;