@sirketio/auth 0.0.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 (594) hide show
  1. package/dist/_virtual/_rolldown/runtime.mjs +36 -0
  2. package/dist/adapter/index.d.mts +4 -0
  3. package/dist/adapter/index.mjs +7 -0
  4. package/dist/api/index.d.mts +3872 -0
  5. package/dist/api/index.mjs +206 -0
  6. package/dist/api/index.mjs.map +1 -0
  7. package/dist/api/middlewares/index.d.mts +1 -0
  8. package/dist/api/middlewares/index.mjs +3 -0
  9. package/dist/api/middlewares/origin-check.d.mts +18 -0
  10. package/dist/api/middlewares/origin-check.mjs +140 -0
  11. package/dist/api/middlewares/origin-check.mjs.map +1 -0
  12. package/dist/api/rate-limiter/index.mjs +204 -0
  13. package/dist/api/rate-limiter/index.mjs.map +1 -0
  14. package/dist/api/routes/account.d.mts +410 -0
  15. package/dist/api/routes/account.mjs +493 -0
  16. package/dist/api/routes/account.mjs.map +1 -0
  17. package/dist/api/routes/callback.d.mts +31 -0
  18. package/dist/api/routes/callback.mjs +179 -0
  19. package/dist/api/routes/callback.mjs.map +1 -0
  20. package/dist/api/routes/email-verification.d.mts +161 -0
  21. package/dist/api/routes/email-verification.mjs +299 -0
  22. package/dist/api/routes/email-verification.mjs.map +1 -0
  23. package/dist/api/routes/error.d.mts +28 -0
  24. package/dist/api/routes/error.mjs +386 -0
  25. package/dist/api/routes/error.mjs.map +1 -0
  26. package/dist/api/routes/index.d.mts +11 -0
  27. package/dist/api/routes/index.mjs +13 -0
  28. package/dist/api/routes/ok.d.mts +36 -0
  29. package/dist/api/routes/ok.mjs +30 -0
  30. package/dist/api/routes/ok.mjs.map +1 -0
  31. package/dist/api/routes/password.d.mts +182 -0
  32. package/dist/api/routes/password.mjs +198 -0
  33. package/dist/api/routes/password.mjs.map +1 -0
  34. package/dist/api/routes/session.d.mts +415 -0
  35. package/dist/api/routes/session.mjs +483 -0
  36. package/dist/api/routes/session.mjs.map +1 -0
  37. package/dist/api/routes/sign-in.d.mts +171 -0
  38. package/dist/api/routes/sign-in.mjs +263 -0
  39. package/dist/api/routes/sign-in.mjs.map +1 -0
  40. package/dist/api/routes/sign-out.d.mts +36 -0
  41. package/dist/api/routes/sign-out.mjs +33 -0
  42. package/dist/api/routes/sign-out.mjs.map +1 -0
  43. package/dist/api/routes/sign-up.d.mts +160 -0
  44. package/dist/api/routes/sign-up.mjs +227 -0
  45. package/dist/api/routes/sign-up.mjs.map +1 -0
  46. package/dist/api/routes/update-user.d.mts +445 -0
  47. package/dist/api/routes/update-user.mjs +493 -0
  48. package/dist/api/routes/update-user.mjs.map +1 -0
  49. package/dist/api/state/oauth.d.mts +18 -0
  50. package/dist/api/state/oauth.mjs +8 -0
  51. package/dist/api/state/oauth.mjs.map +1 -0
  52. package/dist/api/state/should-session-refresh.d.mts +13 -0
  53. package/dist/api/state/should-session-refresh.mjs +16 -0
  54. package/dist/api/state/should-session-refresh.mjs.map +1 -0
  55. package/dist/api/to-auth-endpoints.mjs +197 -0
  56. package/dist/api/to-auth-endpoints.mjs.map +1 -0
  57. package/dist/auth/base.mjs +45 -0
  58. package/dist/auth/base.mjs.map +1 -0
  59. package/dist/auth/minimal.d.mts +12 -0
  60. package/dist/auth/minimal.mjs +14 -0
  61. package/dist/auth/minimal.mjs.map +1 -0
  62. package/dist/auth/trusted-origins.mjs +31 -0
  63. package/dist/auth/trusted-origins.mjs.map +1 -0
  64. package/dist/client/broadcast-channel.d.mts +20 -0
  65. package/dist/client/broadcast-channel.mjs +46 -0
  66. package/dist/client/broadcast-channel.mjs.map +1 -0
  67. package/dist/client/config.mjs +90 -0
  68. package/dist/client/config.mjs.map +1 -0
  69. package/dist/client/fetch-plugins.mjs +18 -0
  70. package/dist/client/fetch-plugins.mjs.map +1 -0
  71. package/dist/client/focus-manager.d.mts +11 -0
  72. package/dist/client/focus-manager.mjs +32 -0
  73. package/dist/client/focus-manager.mjs.map +1 -0
  74. package/dist/client/index.d.mts +33 -0
  75. package/dist/client/index.mjs +21 -0
  76. package/dist/client/index.mjs.map +1 -0
  77. package/dist/client/online-manager.d.mts +12 -0
  78. package/dist/client/online-manager.mjs +35 -0
  79. package/dist/client/online-manager.mjs.map +1 -0
  80. package/dist/client/parser.mjs +73 -0
  81. package/dist/client/parser.mjs.map +1 -0
  82. package/dist/client/path-to-object.d.mts +65 -0
  83. package/dist/client/plugins/index.d.mts +53 -0
  84. package/dist/client/plugins/index.mjs +30 -0
  85. package/dist/client/plugins/infer-plugin.d.mts +16 -0
  86. package/dist/client/plugins/infer-plugin.mjs +11 -0
  87. package/dist/client/plugins/infer-plugin.mjs.map +1 -0
  88. package/dist/client/proxy.mjs +79 -0
  89. package/dist/client/proxy.mjs.map +1 -0
  90. package/dist/client/query.d.mts +23 -0
  91. package/dist/client/query.mjs +98 -0
  92. package/dist/client/query.mjs.map +1 -0
  93. package/dist/client/react/index.d.mts +128 -0
  94. package/dist/client/react/index.mjs +24 -0
  95. package/dist/client/react/index.mjs.map +1 -0
  96. package/dist/client/react/react-store.d.mts +47 -0
  97. package/dist/client/react/react-store.mjs +47 -0
  98. package/dist/client/react/react-store.mjs.map +1 -0
  99. package/dist/client/session-atom.mjs +29 -0
  100. package/dist/client/session-atom.mjs.map +1 -0
  101. package/dist/client/session-refresh.d.mts +28 -0
  102. package/dist/client/session-refresh.mjs +140 -0
  103. package/dist/client/session-refresh.mjs.map +1 -0
  104. package/dist/client/types.d.mts +41 -0
  105. package/dist/client/vanilla.d.mts +127 -0
  106. package/dist/client/vanilla.mjs +20 -0
  107. package/dist/client/vanilla.mjs.map +1 -0
  108. package/dist/context/create-context.mjs +211 -0
  109. package/dist/context/create-context.mjs.map +1 -0
  110. package/dist/context/helpers.mjs +83 -0
  111. package/dist/context/helpers.mjs.map +1 -0
  112. package/dist/context/init.mjs +20 -0
  113. package/dist/context/init.mjs.map +1 -0
  114. package/dist/cookies/cookie-utils.d.mts +29 -0
  115. package/dist/cookies/cookie-utils.mjs +105 -0
  116. package/dist/cookies/cookie-utils.mjs.map +1 -0
  117. package/dist/cookies/index.d.mts +121 -0
  118. package/dist/cookies/index.mjs +261 -0
  119. package/dist/cookies/index.mjs.map +1 -0
  120. package/dist/cookies/session-store.d.mts +36 -0
  121. package/dist/cookies/session-store.mjs +200 -0
  122. package/dist/cookies/session-store.mjs.map +1 -0
  123. package/dist/crypto/buffer.d.mts +8 -0
  124. package/dist/crypto/buffer.mjs +18 -0
  125. package/dist/crypto/buffer.mjs.map +1 -0
  126. package/dist/crypto/index.d.mts +27 -0
  127. package/dist/crypto/index.mjs +38 -0
  128. package/dist/crypto/index.mjs.map +1 -0
  129. package/dist/crypto/jwt.d.mts +8 -0
  130. package/dist/crypto/jwt.mjs +95 -0
  131. package/dist/crypto/jwt.mjs.map +1 -0
  132. package/dist/crypto/password.d.mts +12 -0
  133. package/dist/crypto/password.mjs +36 -0
  134. package/dist/crypto/password.mjs.map +1 -0
  135. package/dist/crypto/random.d.mts +5 -0
  136. package/dist/crypto/random.mjs +8 -0
  137. package/dist/crypto/random.mjs.map +1 -0
  138. package/dist/db/adapter-base.d.mts +8 -0
  139. package/dist/db/adapter-base.mjs +19 -0
  140. package/dist/db/adapter-base.mjs.map +1 -0
  141. package/dist/db/field-converter.d.mts +8 -0
  142. package/dist/db/field-converter.mjs +21 -0
  143. package/dist/db/field-converter.mjs.map +1 -0
  144. package/dist/db/field.d.mts +42 -0
  145. package/dist/db/get-schema.d.mts +11 -0
  146. package/dist/db/get-schema.mjs +39 -0
  147. package/dist/db/get-schema.mjs.map +1 -0
  148. package/dist/db/index.d.mts +18 -0
  149. package/dist/db/index.mjs +34 -0
  150. package/dist/db/index.mjs.map +1 -0
  151. package/dist/db/internal-adapter.d.mts +14 -0
  152. package/dist/db/internal-adapter.mjs +616 -0
  153. package/dist/db/internal-adapter.mjs.map +1 -0
  154. package/dist/db/schema.d.mts +49 -0
  155. package/dist/db/schema.mjs +118 -0
  156. package/dist/db/schema.mjs.map +1 -0
  157. package/dist/db/to-zod.d.mts +36 -0
  158. package/dist/db/to-zod.mjs +26 -0
  159. package/dist/db/to-zod.mjs.map +1 -0
  160. package/dist/db/verification-token-storage.mjs +28 -0
  161. package/dist/db/verification-token-storage.mjs.map +1 -0
  162. package/dist/db/with-hooks.d.mts +33 -0
  163. package/dist/db/with-hooks.mjs +159 -0
  164. package/dist/db/with-hooks.mjs.map +1 -0
  165. package/dist/index.d.mts +53 -0
  166. package/dist/index.mjs +27 -0
  167. package/dist/integrations/next-js.d.mts +29 -0
  168. package/dist/integrations/next-js.mjs +85 -0
  169. package/dist/integrations/next-js.mjs.map +1 -0
  170. package/dist/oauth2/index.d.mts +5 -0
  171. package/dist/oauth2/index.mjs +7 -0
  172. package/dist/oauth2/link-account.d.mts +48 -0
  173. package/dist/oauth2/link-account.mjs +143 -0
  174. package/dist/oauth2/link-account.mjs.map +1 -0
  175. package/dist/oauth2/state.d.mts +26 -0
  176. package/dist/oauth2/state.mjs +51 -0
  177. package/dist/oauth2/state.mjs.map +1 -0
  178. package/dist/oauth2/utils.d.mts +8 -0
  179. package/dist/oauth2/utils.mjs +31 -0
  180. package/dist/oauth2/utils.mjs.map +1 -0
  181. package/dist/plugins/access/access.d.mts +30 -0
  182. package/dist/plugins/access/access.mjs +46 -0
  183. package/dist/plugins/access/access.mjs.map +1 -0
  184. package/dist/plugins/access/index.d.mts +3 -0
  185. package/dist/plugins/access/index.mjs +3 -0
  186. package/dist/plugins/access/types.d.mts +17 -0
  187. package/dist/plugins/additional-fields/client.d.mts +96 -0
  188. package/dist/plugins/additional-fields/client.mjs +11 -0
  189. package/dist/plugins/additional-fields/client.mjs.map +1 -0
  190. package/dist/plugins/admin/access/index.d.mts +2 -0
  191. package/dist/plugins/admin/access/index.mjs +3 -0
  192. package/dist/plugins/admin/access/statement.d.mts +118 -0
  193. package/dist/plugins/admin/access/statement.mjs +53 -0
  194. package/dist/plugins/admin/access/statement.mjs.map +1 -0
  195. package/dist/plugins/admin/admin.d.mts +911 -0
  196. package/dist/plugins/admin/admin.mjs +95 -0
  197. package/dist/plugins/admin/admin.mjs.map +1 -0
  198. package/dist/plugins/admin/client.d.mts +76 -0
  199. package/dist/plugins/admin/client.mjs +36 -0
  200. package/dist/plugins/admin/client.mjs.map +1 -0
  201. package/dist/plugins/admin/error-codes.d.mts +29 -0
  202. package/dist/plugins/admin/error-codes.mjs +30 -0
  203. package/dist/plugins/admin/error-codes.mjs.map +1 -0
  204. package/dist/plugins/admin/has-permission.mjs +16 -0
  205. package/dist/plugins/admin/has-permission.mjs.map +1 -0
  206. package/dist/plugins/admin/index.d.mts +3 -0
  207. package/dist/plugins/admin/index.mjs +3 -0
  208. package/dist/plugins/admin/routes.mjs +841 -0
  209. package/dist/plugins/admin/routes.mjs.map +1 -0
  210. package/dist/plugins/admin/schema.d.mts +40 -0
  211. package/dist/plugins/admin/schema.mjs +34 -0
  212. package/dist/plugins/admin/schema.mjs.map +1 -0
  213. package/dist/plugins/admin/types.d.mts +89 -0
  214. package/dist/plugins/api-key/adapter.mjs +468 -0
  215. package/dist/plugins/api-key/adapter.mjs.map +1 -0
  216. package/dist/plugins/api-key/client.d.mts +46 -0
  217. package/dist/plugins/api-key/client.mjs +19 -0
  218. package/dist/plugins/api-key/client.mjs.map +1 -0
  219. package/dist/plugins/api-key/error-codes.d.mts +33 -0
  220. package/dist/plugins/api-key/error-codes.mjs +34 -0
  221. package/dist/plugins/api-key/error-codes.mjs.map +1 -0
  222. package/dist/plugins/api-key/index.d.mts +1251 -0
  223. package/dist/plugins/api-key/index.mjs +134 -0
  224. package/dist/plugins/api-key/index.mjs.map +1 -0
  225. package/dist/plugins/api-key/rate-limit.mjs +74 -0
  226. package/dist/plugins/api-key/rate-limit.mjs.map +1 -0
  227. package/dist/plugins/api-key/routes/create-api-key.mjs +252 -0
  228. package/dist/plugins/api-key/routes/create-api-key.mjs.map +1 -0
  229. package/dist/plugins/api-key/routes/delete-all-expired-api-keys.mjs +24 -0
  230. package/dist/plugins/api-key/routes/delete-all-expired-api-keys.mjs.map +1 -0
  231. package/dist/plugins/api-key/routes/delete-api-key.mjs +74 -0
  232. package/dist/plugins/api-key/routes/delete-api-key.mjs.map +1 -0
  233. package/dist/plugins/api-key/routes/get-api-key.mjs +158 -0
  234. package/dist/plugins/api-key/routes/get-api-key.mjs.map +1 -0
  235. package/dist/plugins/api-key/routes/index.mjs +71 -0
  236. package/dist/plugins/api-key/routes/index.mjs.map +1 -0
  237. package/dist/plugins/api-key/routes/list-api-keys.mjs +194 -0
  238. package/dist/plugins/api-key/routes/list-api-keys.mjs.map +1 -0
  239. package/dist/plugins/api-key/routes/update-api-key.mjs +248 -0
  240. package/dist/plugins/api-key/routes/update-api-key.mjs.map +1 -0
  241. package/dist/plugins/api-key/routes/verify-api-key.mjs +224 -0
  242. package/dist/plugins/api-key/routes/verify-api-key.mjs.map +1 -0
  243. package/dist/plugins/api-key/schema.d.mts +199 -0
  244. package/dist/plugins/api-key/schema.mjs +130 -0
  245. package/dist/plugins/api-key/schema.mjs.map +1 -0
  246. package/dist/plugins/api-key/types.d.mts +346 -0
  247. package/dist/plugins/bearer/index.d.mts +45 -0
  248. package/dist/plugins/bearer/index.mjs +66 -0
  249. package/dist/plugins/bearer/index.mjs.map +1 -0
  250. package/dist/plugins/captcha/constants.d.mts +10 -0
  251. package/dist/plugins/captcha/constants.mjs +22 -0
  252. package/dist/plugins/captcha/constants.mjs.map +1 -0
  253. package/dist/plugins/captcha/error-codes.mjs +16 -0
  254. package/dist/plugins/captcha/error-codes.mjs.map +1 -0
  255. package/dist/plugins/captcha/index.d.mts +21 -0
  256. package/dist/plugins/captcha/index.mjs +62 -0
  257. package/dist/plugins/captcha/index.mjs.map +1 -0
  258. package/dist/plugins/captcha/types.d.mts +28 -0
  259. package/dist/plugins/captcha/utils.mjs +11 -0
  260. package/dist/plugins/captcha/utils.mjs.map +1 -0
  261. package/dist/plugins/captcha/verify-handlers/captchafox.mjs +28 -0
  262. package/dist/plugins/captcha/verify-handlers/captchafox.mjs.map +1 -0
  263. package/dist/plugins/captcha/verify-handlers/cloudflare-turnstile.mjs +26 -0
  264. package/dist/plugins/captcha/verify-handlers/cloudflare-turnstile.mjs.map +1 -0
  265. package/dist/plugins/captcha/verify-handlers/google-recaptcha.mjs +30 -0
  266. package/dist/plugins/captcha/verify-handlers/google-recaptcha.mjs.map +1 -0
  267. package/dist/plugins/captcha/verify-handlers/h-captcha.mjs +28 -0
  268. package/dist/plugins/captcha/verify-handlers/h-captcha.mjs.map +1 -0
  269. package/dist/plugins/captcha/verify-handlers/index.mjs +6 -0
  270. package/dist/plugins/custom-session/client.d.mts +17 -0
  271. package/dist/plugins/custom-session/client.mjs +11 -0
  272. package/dist/plugins/custom-session/client.mjs.map +1 -0
  273. package/dist/plugins/custom-session/index.d.mts +72 -0
  274. package/dist/plugins/custom-session/index.mjs +78 -0
  275. package/dist/plugins/custom-session/index.mjs.map +1 -0
  276. package/dist/plugins/device-authorization/client.d.mts +17 -0
  277. package/dist/plugins/device-authorization/client.mjs +18 -0
  278. package/dist/plugins/device-authorization/client.mjs.map +1 -0
  279. package/dist/plugins/device-authorization/error-codes.mjs +21 -0
  280. package/dist/plugins/device-authorization/error-codes.mjs.map +1 -0
  281. package/dist/plugins/device-authorization/index.d.mts +424 -0
  282. package/dist/plugins/device-authorization/index.mjs +50 -0
  283. package/dist/plugins/device-authorization/index.mjs.map +1 -0
  284. package/dist/plugins/device-authorization/routes.mjs +510 -0
  285. package/dist/plugins/device-authorization/routes.mjs.map +1 -0
  286. package/dist/plugins/device-authorization/schema.mjs +57 -0
  287. package/dist/plugins/device-authorization/schema.mjs.map +1 -0
  288. package/dist/plugins/email-otp/client.d.mts +21 -0
  289. package/dist/plugins/email-otp/client.mjs +18 -0
  290. package/dist/plugins/email-otp/client.mjs.map +1 -0
  291. package/dist/plugins/email-otp/error-codes.d.mts +11 -0
  292. package/dist/plugins/email-otp/error-codes.mjs +12 -0
  293. package/dist/plugins/email-otp/error-codes.mjs.map +1 -0
  294. package/dist/plugins/email-otp/index.d.mts +428 -0
  295. package/dist/plugins/email-otp/index.mjs +130 -0
  296. package/dist/plugins/email-otp/index.mjs.map +1 -0
  297. package/dist/plugins/email-otp/otp-token.mjs +29 -0
  298. package/dist/plugins/email-otp/otp-token.mjs.map +1 -0
  299. package/dist/plugins/email-otp/routes.mjs +631 -0
  300. package/dist/plugins/email-otp/routes.mjs.map +1 -0
  301. package/dist/plugins/email-otp/types.d.mts +86 -0
  302. package/dist/plugins/email-otp/utils.mjs +17 -0
  303. package/dist/plugins/email-otp/utils.mjs.map +1 -0
  304. package/dist/plugins/generic-oauth/client.d.mts +33 -0
  305. package/dist/plugins/generic-oauth/client.mjs +14 -0
  306. package/dist/plugins/generic-oauth/client.mjs.map +1 -0
  307. package/dist/plugins/generic-oauth/error-codes.d.mts +16 -0
  308. package/dist/plugins/generic-oauth/error-codes.mjs +17 -0
  309. package/dist/plugins/generic-oauth/error-codes.mjs.map +1 -0
  310. package/dist/plugins/generic-oauth/index.d.mts +201 -0
  311. package/dist/plugins/generic-oauth/index.mjs +145 -0
  312. package/dist/plugins/generic-oauth/index.mjs.map +1 -0
  313. package/dist/plugins/generic-oauth/providers/auth0.d.mts +37 -0
  314. package/dist/plugins/generic-oauth/providers/auth0.mjs +62 -0
  315. package/dist/plugins/generic-oauth/providers/auth0.mjs.map +1 -0
  316. package/dist/plugins/generic-oauth/providers/gumroad.d.mts +32 -0
  317. package/dist/plugins/generic-oauth/providers/gumroad.mjs +60 -0
  318. package/dist/plugins/generic-oauth/providers/gumroad.mjs.map +1 -0
  319. package/dist/plugins/generic-oauth/providers/hubspot.d.mts +37 -0
  320. package/dist/plugins/generic-oauth/providers/hubspot.mjs +60 -0
  321. package/dist/plugins/generic-oauth/providers/hubspot.mjs.map +1 -0
  322. package/dist/plugins/generic-oauth/providers/index.d.mts +9 -0
  323. package/dist/plugins/generic-oauth/providers/index.mjs +11 -0
  324. package/dist/plugins/generic-oauth/providers/keycloak.d.mts +37 -0
  325. package/dist/plugins/generic-oauth/providers/keycloak.mjs +62 -0
  326. package/dist/plugins/generic-oauth/providers/keycloak.mjs.map +1 -0
  327. package/dist/plugins/generic-oauth/providers/line.d.mts +55 -0
  328. package/dist/plugins/generic-oauth/providers/line.mjs +91 -0
  329. package/dist/plugins/generic-oauth/providers/line.mjs.map +1 -0
  330. package/dist/plugins/generic-oauth/providers/microsoft-entra-id.d.mts +37 -0
  331. package/dist/plugins/generic-oauth/providers/microsoft-entra-id.mjs +66 -0
  332. package/dist/plugins/generic-oauth/providers/microsoft-entra-id.mjs.map +1 -0
  333. package/dist/plugins/generic-oauth/providers/okta.d.mts +37 -0
  334. package/dist/plugins/generic-oauth/providers/okta.mjs +62 -0
  335. package/dist/plugins/generic-oauth/providers/okta.mjs.map +1 -0
  336. package/dist/plugins/generic-oauth/providers/patreon.d.mts +30 -0
  337. package/dist/plugins/generic-oauth/providers/patreon.mjs +59 -0
  338. package/dist/plugins/generic-oauth/providers/patreon.mjs.map +1 -0
  339. package/dist/plugins/generic-oauth/providers/slack.d.mts +30 -0
  340. package/dist/plugins/generic-oauth/providers/slack.mjs +61 -0
  341. package/dist/plugins/generic-oauth/providers/slack.mjs.map +1 -0
  342. package/dist/plugins/generic-oauth/routes.mjs +411 -0
  343. package/dist/plugins/generic-oauth/routes.mjs.map +1 -0
  344. package/dist/plugins/generic-oauth/types.d.mts +159 -0
  345. package/dist/plugins/haveibeenpwned/index.d.mts +46 -0
  346. package/dist/plugins/haveibeenpwned/index.mjs +57 -0
  347. package/dist/plugins/haveibeenpwned/index.mjs.map +1 -0
  348. package/dist/plugins/index.d.mts +65 -0
  349. package/dist/plugins/index.mjs +48 -0
  350. package/dist/plugins/jwt/adapter.mjs +27 -0
  351. package/dist/plugins/jwt/adapter.mjs.map +1 -0
  352. package/dist/plugins/jwt/client.d.mts +40 -0
  353. package/dist/plugins/jwt/client.mjs +19 -0
  354. package/dist/plugins/jwt/client.mjs.map +1 -0
  355. package/dist/plugins/jwt/index.d.mts +224 -0
  356. package/dist/plugins/jwt/index.mjs +202 -0
  357. package/dist/plugins/jwt/index.mjs.map +1 -0
  358. package/dist/plugins/jwt/schema.d.mts +26 -0
  359. package/dist/plugins/jwt/schema.mjs +23 -0
  360. package/dist/plugins/jwt/schema.mjs.map +1 -0
  361. package/dist/plugins/jwt/sign.d.mts +57 -0
  362. package/dist/plugins/jwt/sign.mjs +66 -0
  363. package/dist/plugins/jwt/sign.mjs.map +1 -0
  364. package/dist/plugins/jwt/types.d.mts +194 -0
  365. package/dist/plugins/jwt/utils.d.mts +42 -0
  366. package/dist/plugins/jwt/utils.mjs +64 -0
  367. package/dist/plugins/jwt/utils.mjs.map +1 -0
  368. package/dist/plugins/jwt/verify.d.mts +12 -0
  369. package/dist/plugins/jwt/verify.mjs +46 -0
  370. package/dist/plugins/jwt/verify.mjs.map +1 -0
  371. package/dist/plugins/last-login-method/client.d.mts +38 -0
  372. package/dist/plugins/last-login-method/client.mjs +32 -0
  373. package/dist/plugins/last-login-method/client.mjs.map +1 -0
  374. package/dist/plugins/last-login-method/index.d.mts +118 -0
  375. package/dist/plugins/last-login-method/index.mjs +76 -0
  376. package/dist/plugins/last-login-method/index.mjs.map +1 -0
  377. package/dist/plugins/magic-link/client.d.mts +10 -0
  378. package/dist/plugins/magic-link/client.mjs +11 -0
  379. package/dist/plugins/magic-link/client.mjs.map +1 -0
  380. package/dist/plugins/magic-link/index.d.mts +193 -0
  381. package/dist/plugins/magic-link/index.mjs +177 -0
  382. package/dist/plugins/magic-link/index.mjs.map +1 -0
  383. package/dist/plugins/magic-link/utils.mjs +12 -0
  384. package/dist/plugins/magic-link/utils.mjs.map +1 -0
  385. package/dist/plugins/mcp/authorize.mjs +133 -0
  386. package/dist/plugins/mcp/authorize.mjs.map +1 -0
  387. package/dist/plugins/mcp/index.d.mts +458 -0
  388. package/dist/plugins/mcp/index.mjs +717 -0
  389. package/dist/plugins/mcp/index.mjs.map +1 -0
  390. package/dist/plugins/multi-session/client.d.mts +19 -0
  391. package/dist/plugins/multi-session/client.mjs +20 -0
  392. package/dist/plugins/multi-session/client.mjs.map +1 -0
  393. package/dist/plugins/multi-session/error-codes.d.mts +9 -0
  394. package/dist/plugins/multi-session/error-codes.mjs +8 -0
  395. package/dist/plugins/multi-session/error-codes.mjs.map +1 -0
  396. package/dist/plugins/multi-session/index.d.mts +235 -0
  397. package/dist/plugins/multi-session/index.mjs +172 -0
  398. package/dist/plugins/multi-session/index.mjs.map +1 -0
  399. package/dist/plugins/oauth-proxy/index.d.mts +97 -0
  400. package/dist/plugins/oauth-proxy/index.mjs +305 -0
  401. package/dist/plugins/oauth-proxy/index.mjs.map +1 -0
  402. package/dist/plugins/oauth-proxy/utils.mjs +51 -0
  403. package/dist/plugins/oauth-proxy/utils.mjs.map +1 -0
  404. package/dist/plugins/oidc-provider/authorize.mjs +194 -0
  405. package/dist/plugins/oidc-provider/authorize.mjs.map +1 -0
  406. package/dist/plugins/oidc-provider/client.d.mts +12 -0
  407. package/dist/plugins/oidc-provider/client.mjs +11 -0
  408. package/dist/plugins/oidc-provider/client.mjs.map +1 -0
  409. package/dist/plugins/oidc-provider/error.mjs +17 -0
  410. package/dist/plugins/oidc-provider/error.mjs.map +1 -0
  411. package/dist/plugins/oidc-provider/index.d.mts +702 -0
  412. package/dist/plugins/oidc-provider/index.mjs +1093 -0
  413. package/dist/plugins/oidc-provider/index.mjs.map +1 -0
  414. package/dist/plugins/oidc-provider/schema.d.mts +160 -0
  415. package/dist/plugins/oidc-provider/schema.mjs +132 -0
  416. package/dist/plugins/oidc-provider/schema.mjs.map +1 -0
  417. package/dist/plugins/oidc-provider/types.d.mts +517 -0
  418. package/dist/plugins/oidc-provider/utils/prompt.mjs +19 -0
  419. package/dist/plugins/oidc-provider/utils/prompt.mjs.map +1 -0
  420. package/dist/plugins/oidc-provider/utils.mjs +15 -0
  421. package/dist/plugins/oidc-provider/utils.mjs.map +1 -0
  422. package/dist/plugins/one-tap/client.d.mts +174 -0
  423. package/dist/plugins/one-tap/client.mjs +188 -0
  424. package/dist/plugins/one-tap/client.mjs.map +1 -0
  425. package/dist/plugins/one-tap/index.d.mts +83 -0
  426. package/dist/plugins/one-tap/index.mjs +95 -0
  427. package/dist/plugins/one-tap/index.mjs.map +1 -0
  428. package/dist/plugins/one-time-token/client.d.mts +10 -0
  429. package/dist/plugins/one-time-token/client.mjs +11 -0
  430. package/dist/plugins/one-time-token/client.mjs.map +1 -0
  431. package/dist/plugins/one-time-token/index.d.mts +133 -0
  432. package/dist/plugins/one-time-token/index.mjs +82 -0
  433. package/dist/plugins/one-time-token/index.mjs.map +1 -0
  434. package/dist/plugins/one-time-token/utils.mjs +12 -0
  435. package/dist/plugins/one-time-token/utils.mjs.map +1 -0
  436. package/dist/plugins/open-api/generator.d.mts +115 -0
  437. package/dist/plugins/open-api/generator.mjs +315 -0
  438. package/dist/plugins/open-api/generator.mjs.map +1 -0
  439. package/dist/plugins/open-api/index.d.mts +97 -0
  440. package/dist/plugins/open-api/index.mjs +67 -0
  441. package/dist/plugins/open-api/index.mjs.map +1 -0
  442. package/dist/plugins/open-api/logo.mjs +15 -0
  443. package/dist/plugins/open-api/logo.mjs.map +1 -0
  444. package/dist/plugins/organization/access/index.d.mts +2 -0
  445. package/dist/plugins/organization/access/index.mjs +3 -0
  446. package/dist/plugins/organization/access/statement.d.mts +249 -0
  447. package/dist/plugins/organization/access/statement.mjs +81 -0
  448. package/dist/plugins/organization/access/statement.mjs.map +1 -0
  449. package/dist/plugins/organization/adapter.d.mts +792 -0
  450. package/dist/plugins/organization/adapter.mjs +624 -0
  451. package/dist/plugins/organization/adapter.mjs.map +1 -0
  452. package/dist/plugins/organization/call.mjs +19 -0
  453. package/dist/plugins/organization/call.mjs.map +1 -0
  454. package/dist/plugins/organization/client.d.mts +372 -0
  455. package/dist/plugins/organization/client.mjs +95 -0
  456. package/dist/plugins/organization/client.mjs.map +1 -0
  457. package/dist/plugins/organization/error-codes.d.mts +65 -0
  458. package/dist/plugins/organization/error-codes.mjs +66 -0
  459. package/dist/plugins/organization/error-codes.mjs.map +1 -0
  460. package/dist/plugins/organization/has-permission.mjs +35 -0
  461. package/dist/plugins/organization/has-permission.mjs.map +1 -0
  462. package/dist/plugins/organization/index.d.mts +5 -0
  463. package/dist/plugins/organization/index.mjs +4 -0
  464. package/dist/plugins/organization/organization.d.mts +394 -0
  465. package/dist/plugins/organization/organization.mjs +428 -0
  466. package/dist/plugins/organization/organization.mjs.map +1 -0
  467. package/dist/plugins/organization/permission.d.mts +17 -0
  468. package/dist/plugins/organization/permission.mjs +16 -0
  469. package/dist/plugins/organization/permission.mjs.map +1 -0
  470. package/dist/plugins/organization/routes/crud-access-control.d.mts +394 -0
  471. package/dist/plugins/organization/routes/crud-access-control.mjs +678 -0
  472. package/dist/plugins/organization/routes/crud-access-control.mjs.map +1 -0
  473. package/dist/plugins/organization/routes/crud-invites.d.mts +1031 -0
  474. package/dist/plugins/organization/routes/crud-invites.mjs +551 -0
  475. package/dist/plugins/organization/routes/crud-invites.mjs.map +1 -0
  476. package/dist/plugins/organization/routes/crud-members.d.mts +940 -0
  477. package/dist/plugins/organization/routes/crud-members.mjs +466 -0
  478. package/dist/plugins/organization/routes/crud-members.mjs.map +1 -0
  479. package/dist/plugins/organization/routes/crud-org.d.mts +708 -0
  480. package/dist/plugins/organization/routes/crud-org.mjs +423 -0
  481. package/dist/plugins/organization/routes/crud-org.mjs.map +1 -0
  482. package/dist/plugins/organization/routes/crud-team.d.mts +1071 -0
  483. package/dist/plugins/organization/routes/crud-team.mjs +676 -0
  484. package/dist/plugins/organization/routes/crud-team.mjs.map +1 -0
  485. package/dist/plugins/organization/schema.d.mts +376 -0
  486. package/dist/plugins/organization/schema.mjs +68 -0
  487. package/dist/plugins/organization/schema.mjs.map +1 -0
  488. package/dist/plugins/organization/types.d.mts +677 -0
  489. package/dist/plugins/phone-number/client.d.mts +31 -0
  490. package/dist/plugins/phone-number/client.mjs +20 -0
  491. package/dist/plugins/phone-number/client.mjs.map +1 -0
  492. package/dist/plugins/phone-number/error-codes.d.mts +20 -0
  493. package/dist/plugins/phone-number/error-codes.mjs +21 -0
  494. package/dist/plugins/phone-number/error-codes.mjs.map +1 -0
  495. package/dist/plugins/phone-number/index.d.mts +318 -0
  496. package/dist/plugins/phone-number/index.mjs +49 -0
  497. package/dist/plugins/phone-number/index.mjs.map +1 -0
  498. package/dist/plugins/phone-number/routes.mjs +472 -0
  499. package/dist/plugins/phone-number/routes.mjs.map +1 -0
  500. package/dist/plugins/phone-number/schema.d.mts +23 -0
  501. package/dist/plugins/phone-number/schema.mjs +20 -0
  502. package/dist/plugins/phone-number/schema.mjs.map +1 -0
  503. package/dist/plugins/phone-number/types.d.mts +118 -0
  504. package/dist/plugins/two-factor/backup-codes/index.d.mts +279 -0
  505. package/dist/plugins/two-factor/backup-codes/index.mjs +277 -0
  506. package/dist/plugins/two-factor/backup-codes/index.mjs.map +1 -0
  507. package/dist/plugins/two-factor/client.d.mts +55 -0
  508. package/dist/plugins/two-factor/client.mjs +37 -0
  509. package/dist/plugins/two-factor/client.mjs.map +1 -0
  510. package/dist/plugins/two-factor/constant.mjs +8 -0
  511. package/dist/plugins/two-factor/constant.mjs.map +1 -0
  512. package/dist/plugins/two-factor/error-code.d.mts +17 -0
  513. package/dist/plugins/two-factor/error-code.mjs +18 -0
  514. package/dist/plugins/two-factor/error-code.mjs.map +1 -0
  515. package/dist/plugins/two-factor/index.d.mts +670 -0
  516. package/dist/plugins/two-factor/index.mjs +228 -0
  517. package/dist/plugins/two-factor/index.mjs.map +1 -0
  518. package/dist/plugins/two-factor/otp/index.d.mts +216 -0
  519. package/dist/plugins/two-factor/otp/index.mjs +199 -0
  520. package/dist/plugins/two-factor/otp/index.mjs.map +1 -0
  521. package/dist/plugins/two-factor/schema.d.mts +41 -0
  522. package/dist/plugins/two-factor/schema.mjs +36 -0
  523. package/dist/plugins/two-factor/schema.mjs.map +1 -0
  524. package/dist/plugins/two-factor/totp/index.d.mts +210 -0
  525. package/dist/plugins/two-factor/totp/index.mjs +157 -0
  526. package/dist/plugins/two-factor/totp/index.mjs.map +1 -0
  527. package/dist/plugins/two-factor/types.d.mts +73 -0
  528. package/dist/plugins/two-factor/utils.mjs +12 -0
  529. package/dist/plugins/two-factor/utils.mjs.map +1 -0
  530. package/dist/plugins/two-factor/verify-two-factor.mjs +85 -0
  531. package/dist/plugins/two-factor/verify-two-factor.mjs.map +1 -0
  532. package/dist/plugins/username/client.d.mts +26 -0
  533. package/dist/plugins/username/client.mjs +18 -0
  534. package/dist/plugins/username/client.mjs.map +1 -0
  535. package/dist/plugins/username/error-codes.d.mts +16 -0
  536. package/dist/plugins/username/error-codes.mjs +17 -0
  537. package/dist/plugins/username/error-codes.mjs.map +1 -0
  538. package/dist/plugins/username/index.d.mts +251 -0
  539. package/dist/plugins/username/index.mjs +234 -0
  540. package/dist/plugins/username/index.mjs.map +1 -0
  541. package/dist/plugins/username/schema.d.mts +33 -0
  542. package/dist/plugins/username/schema.mjs +26 -0
  543. package/dist/plugins/username/schema.mjs.map +1 -0
  544. package/dist/providers/index.d.mts +1 -0
  545. package/dist/providers/index.mjs +3 -0
  546. package/dist/state.d.mts +42 -0
  547. package/dist/state.mjs +107 -0
  548. package/dist/state.mjs.map +1 -0
  549. package/dist/types/adapter.d.mts +2 -0
  550. package/dist/types/api.d.mts +29 -0
  551. package/dist/types/auth.d.mts +29 -0
  552. package/dist/types/helper.d.mts +10 -0
  553. package/dist/types/index.d.mts +11 -0
  554. package/dist/types/index.mjs +1 -0
  555. package/dist/types/models.d.mts +11 -0
  556. package/dist/types/plugins.d.mts +20 -0
  557. package/dist/utils/boolean.mjs +8 -0
  558. package/dist/utils/boolean.mjs.map +1 -0
  559. package/dist/utils/constants.mjs +6 -0
  560. package/dist/utils/constants.mjs.map +1 -0
  561. package/dist/utils/date.mjs +8 -0
  562. package/dist/utils/date.mjs.map +1 -0
  563. package/dist/utils/get-request-ip.d.mts +7 -0
  564. package/dist/utils/get-request-ip.mjs +23 -0
  565. package/dist/utils/get-request-ip.mjs.map +1 -0
  566. package/dist/utils/hide-metadata.d.mts +7 -0
  567. package/dist/utils/hide-metadata.mjs +6 -0
  568. package/dist/utils/hide-metadata.mjs.map +1 -0
  569. package/dist/utils/index.d.mts +4 -0
  570. package/dist/utils/index.mjs +6 -0
  571. package/dist/utils/is-api-error.d.mts +7 -0
  572. package/dist/utils/is-api-error.mjs +11 -0
  573. package/dist/utils/is-api-error.mjs.map +1 -0
  574. package/dist/utils/is-atom.mjs +8 -0
  575. package/dist/utils/is-atom.mjs.map +1 -0
  576. package/dist/utils/is-promise.mjs +8 -0
  577. package/dist/utils/is-promise.mjs.map +1 -0
  578. package/dist/utils/middleware-response.mjs +9 -0
  579. package/dist/utils/middleware-response.mjs.map +1 -0
  580. package/dist/utils/password.mjs +26 -0
  581. package/dist/utils/password.mjs.map +1 -0
  582. package/dist/utils/plugin-helper.mjs +17 -0
  583. package/dist/utils/plugin-helper.mjs.map +1 -0
  584. package/dist/utils/shim.mjs +24 -0
  585. package/dist/utils/shim.mjs.map +1 -0
  586. package/dist/utils/time.d.mts +49 -0
  587. package/dist/utils/time.mjs +100 -0
  588. package/dist/utils/time.mjs.map +1 -0
  589. package/dist/utils/url.d.mts +8 -0
  590. package/dist/utils/url.mjs +92 -0
  591. package/dist/utils/url.mjs.map +1 -0
  592. package/dist/utils/wildcard.mjs +108 -0
  593. package/dist/utils/wildcard.mjs.map +1 -0
  594. package/package.json +428 -0
@@ -0,0 +1,127 @@
1
+ import { PrettifyDeep, UnionToIntersection } from "../types/helper.mjs";
2
+ import { InferActions, InferClientAPI, InferErrorCodes, IsSignal, SessionQueryParams } from "./types.mjs";
3
+ import { BetterAuthClientOptions, BetterAuthClientPlugin } from "@better-auth/core";
4
+ import { BASE_ERROR_CODES } from "@better-auth/core/error";
5
+ import * as nanostores from "nanostores";
6
+ import { Atom } from "nanostores";
7
+ import * as _better_fetch_fetch0 from "@better-fetch/fetch";
8
+ import { BetterFetchError } from "@better-fetch/fetch";
9
+
10
+ //#region src/client/vanilla.d.ts
11
+ type InferResolvedHooks<O extends BetterAuthClientOptions> = O extends {
12
+ plugins: Array<infer Plugin>;
13
+ } ? UnionToIntersection<Plugin extends BetterAuthClientPlugin ? Plugin["getAtoms"] extends ((fetch: any) => infer Atoms) ? Atoms extends Record<string, any> ? { [key in keyof Atoms as IsSignal<key> extends true ? never : key extends string ? `use${Capitalize<key>}` : never]: Atoms[key] } : {} : {} : {}> : {};
14
+ declare function createAuthClient<Option extends BetterAuthClientOptions>(options?: Option | undefined): UnionToIntersection<InferResolvedHooks<Option>> & InferClientAPI<Option> & InferActions<Option> & {
15
+ useSession: Atom<{
16
+ data: InferClientAPI<Option> extends {
17
+ getSession: () => Promise<infer Res>;
18
+ } ? Res extends {
19
+ data: null;
20
+ error: {
21
+ message?: string | undefined;
22
+ status: number;
23
+ statusText: string;
24
+ };
25
+ } | {
26
+ data: infer S;
27
+ error: null;
28
+ } ? S : Res extends Record<string, any> ? Res : never : never;
29
+ error: BetterFetchError | null;
30
+ isPending: boolean;
31
+ isRefetching: boolean;
32
+ refetch: (queryParams?: {
33
+ query?: SessionQueryParams;
34
+ } | undefined) => Promise<void>;
35
+ }>;
36
+ $fetch: _better_fetch_fetch0.BetterFetch<{
37
+ plugins: (_better_fetch_fetch0.BetterFetchPlugin<Record<string, any>> | {
38
+ id: string;
39
+ name: string;
40
+ hooks: {
41
+ onSuccess: ((context: _better_fetch_fetch0.SuccessContext<any>) => Promise<void> | void) | undefined;
42
+ onError: ((context: _better_fetch_fetch0.ErrorContext) => Promise<void> | void) | undefined;
43
+ onRequest: (<T extends Record<string, any>>(context: _better_fetch_fetch0.RequestContext<T>) => Promise<_better_fetch_fetch0.RequestContext | void> | _better_fetch_fetch0.RequestContext | void) | undefined;
44
+ onResponse: ((context: _better_fetch_fetch0.ResponseContext) => Promise<Response | void | _better_fetch_fetch0.ResponseContext> | Response | _better_fetch_fetch0.ResponseContext | void) | undefined;
45
+ };
46
+ } | {
47
+ id: string;
48
+ name: string;
49
+ hooks: {
50
+ onSuccess(context: _better_fetch_fetch0.SuccessContext<any>): void;
51
+ };
52
+ })[];
53
+ cache?: RequestCache | undefined;
54
+ credentials?: RequestCredentials;
55
+ headers?: (HeadersInit & (HeadersInit | {
56
+ accept: "application/json" | "text/plain" | "application/octet-stream";
57
+ "content-type": "application/json" | "text/plain" | "application/x-www-form-urlencoded" | "multipart/form-data" | "application/octet-stream";
58
+ authorization: "Bearer" | "Basic";
59
+ })) | undefined;
60
+ integrity?: string | undefined;
61
+ keepalive?: boolean | undefined;
62
+ method: string;
63
+ mode?: RequestMode | undefined;
64
+ priority?: RequestPriority | undefined;
65
+ redirect?: RequestRedirect | undefined;
66
+ referrer?: string | undefined;
67
+ referrerPolicy?: ReferrerPolicy | undefined;
68
+ signal?: (AbortSignal | null) | undefined;
69
+ window?: null | undefined;
70
+ onRetry?: ((response: _better_fetch_fetch0.ResponseContext) => Promise<void> | void) | undefined;
71
+ hookOptions?: {
72
+ cloneResponse?: boolean;
73
+ } | undefined;
74
+ timeout?: number | undefined;
75
+ customFetchImpl: typeof fetch;
76
+ baseURL: string;
77
+ throw?: boolean | undefined;
78
+ auth?: ({
79
+ type: "Bearer";
80
+ token: string | Promise<string | undefined> | (() => string | Promise<string | undefined> | undefined) | undefined;
81
+ } | {
82
+ type: "Basic";
83
+ username: string | (() => string | undefined) | undefined;
84
+ password: string | (() => string | undefined) | undefined;
85
+ } | {
86
+ type: "Custom";
87
+ prefix: string | (() => string | undefined) | undefined;
88
+ value: string | (() => string | undefined) | undefined;
89
+ }) | undefined;
90
+ body?: any;
91
+ query?: any;
92
+ params?: any;
93
+ duplex?: "full" | "half" | undefined;
94
+ jsonParser: (text: string) => Promise<any> | any;
95
+ retry?: _better_fetch_fetch0.RetryOptions | undefined;
96
+ retryAttempt?: number | undefined;
97
+ output?: (_better_fetch_fetch0.StandardSchemaV1 | typeof Blob | typeof File) | undefined;
98
+ errorSchema?: _better_fetch_fetch0.StandardSchemaV1 | undefined;
99
+ disableValidation?: boolean | undefined;
100
+ disableSignal?: boolean | undefined;
101
+ }, unknown, unknown, {}>;
102
+ $store: {
103
+ notify: (signal?: (Omit<string, "$sessionSignal"> | "$sessionSignal") | undefined) => void;
104
+ listen: (signal: Omit<string, "$sessionSignal"> | "$sessionSignal", listener: (value: boolean, oldValue?: boolean | undefined) => void) => void;
105
+ atoms: Record<string, nanostores.WritableAtom<any>>;
106
+ };
107
+ $Infer: {
108
+ Session: NonNullable<InferClientAPI<Option> extends {
109
+ getSession: () => Promise<infer Res>;
110
+ } ? Res extends {
111
+ data: null;
112
+ error: {
113
+ message?: string | undefined;
114
+ status: number;
115
+ statusText: string;
116
+ };
117
+ } | {
118
+ data: infer S;
119
+ error: null;
120
+ } ? S : Res extends Record<string, any> ? Res : never : never>;
121
+ };
122
+ $ERROR_CODES: PrettifyDeep<InferErrorCodes<Option> & typeof BASE_ERROR_CODES>;
123
+ };
124
+ type AuthClient<Option extends BetterAuthClientOptions> = ReturnType<typeof createAuthClient<Option>>;
125
+ //#endregion
126
+ export { AuthClient, createAuthClient };
127
+ //# sourceMappingURL=vanilla.d.mts.map
@@ -0,0 +1,20 @@
1
+ import { getClientConfig } from "./config.mjs";
2
+ import { createDynamicPathProxy } from "./proxy.mjs";
3
+ import { capitalizeFirstLetter } from "@better-auth/core/utils/string";
4
+
5
+ //#region src/client/vanilla.ts
6
+ function createAuthClient(options) {
7
+ const { pluginPathMethods, pluginsActions, pluginsAtoms, $fetch, atomListeners, $store } = getClientConfig(options);
8
+ const resolvedHooks = {};
9
+ for (const [key, value] of Object.entries(pluginsAtoms)) resolvedHooks[`use${capitalizeFirstLetter(key)}`] = value;
10
+ return createDynamicPathProxy({
11
+ ...pluginsActions,
12
+ ...resolvedHooks,
13
+ $fetch,
14
+ $store
15
+ }, $fetch, pluginPathMethods, pluginsAtoms, atomListeners);
16
+ }
17
+
18
+ //#endregion
19
+ export { createAuthClient };
20
+ //# sourceMappingURL=vanilla.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vanilla.mjs","names":[],"sources":["../../src/client/vanilla.ts"],"sourcesContent":["import type {\n\tBetterAuthClientOptions,\n\tBetterAuthClientPlugin,\n} from \"@better-auth/core\";\nimport type { BASE_ERROR_CODES } from \"@better-auth/core/error\";\nimport { capitalizeFirstLetter } from \"@better-auth/core/utils/string\";\nimport type {\n\tBetterFetchError,\n\tBetterFetchResponse,\n} from \"@better-fetch/fetch\";\nimport type { Atom } from \"nanostores\";\nimport type { PrettifyDeep, UnionToIntersection } from \"../types/helper\";\nimport { getClientConfig } from \"./config\";\nimport { createDynamicPathProxy } from \"./proxy\";\nimport type {\n\tInferActions,\n\tInferClientAPI,\n\tInferErrorCodes,\n\tIsSignal,\n\tSessionQueryParams,\n} from \"./types\";\n\ntype InferResolvedHooks<O extends BetterAuthClientOptions> = O extends {\n\tplugins: Array<infer Plugin>;\n}\n\t? UnionToIntersection<\n\t\t\tPlugin extends BetterAuthClientPlugin\n\t\t\t\t? Plugin[\"getAtoms\"] extends (fetch: any) => infer Atoms\n\t\t\t\t\t? Atoms extends Record<string, any>\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t[key in keyof Atoms as IsSignal<key> extends true\n\t\t\t\t\t\t\t\t\t? never\n\t\t\t\t\t\t\t\t\t: key extends string\n\t\t\t\t\t\t\t\t\t\t? `use${Capitalize<key>}`\n\t\t\t\t\t\t\t\t\t\t: never]: Atoms[key];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}\n\t\t\t\t\t: {}\n\t\t\t\t: {}\n\t\t>\n\t: {};\n\nexport function createAuthClient<Option extends BetterAuthClientOptions>(\n\toptions?: Option | undefined,\n) {\n\tconst {\n\t\tpluginPathMethods,\n\t\tpluginsActions,\n\t\tpluginsAtoms,\n\t\t$fetch,\n\t\tatomListeners,\n\t\t$store,\n\t} = getClientConfig(options);\n\tconst resolvedHooks: Record<string, any> = {};\n\tfor (const [key, value] of Object.entries(pluginsAtoms)) {\n\t\tresolvedHooks[`use${capitalizeFirstLetter(key)}`] = value;\n\t}\n\tconst routes = {\n\t\t...pluginsActions,\n\t\t...resolvedHooks,\n\t\t$fetch,\n\t\t$store,\n\t};\n\tconst proxy = createDynamicPathProxy(\n\t\troutes,\n\t\t$fetch,\n\t\tpluginPathMethods,\n\t\tpluginsAtoms,\n\t\tatomListeners,\n\t);\n\ttype ClientAPI = InferClientAPI<Option>;\n\ttype Session = ClientAPI extends {\n\t\tgetSession: () => Promise<infer Res>;\n\t}\n\t\t? Res extends BetterFetchResponse<infer S>\n\t\t\t? S\n\t\t\t: Res extends Record<string, any>\n\t\t\t\t? Res\n\t\t\t\t: never\n\t\t: never;\n\treturn proxy as UnionToIntersection<InferResolvedHooks<Option>> &\n\t\tClientAPI &\n\t\tInferActions<Option> & {\n\t\t\tuseSession: Atom<{\n\t\t\t\tdata: Session;\n\t\t\t\terror: BetterFetchError | null;\n\t\t\t\tisPending: boolean;\n\t\t\t\tisRefetching: boolean;\n\t\t\t\trefetch: (\n\t\t\t\t\tqueryParams?: { query?: SessionQueryParams } | undefined,\n\t\t\t\t) => Promise<void>;\n\t\t\t}>;\n\t\t\t$fetch: typeof $fetch;\n\t\t\t$store: typeof $store;\n\t\t\t$Infer: {\n\t\t\t\tSession: NonNullable<Session>;\n\t\t\t};\n\t\t\t$ERROR_CODES: PrettifyDeep<\n\t\t\t\tInferErrorCodes<Option> & typeof BASE_ERROR_CODES\n\t\t\t>;\n\t\t};\n}\n\nexport type AuthClient<Option extends BetterAuthClientOptions> = ReturnType<\n\ttypeof createAuthClient<Option>\n>;\n"],"mappings":";;;;;AA0CA,SAAgB,iBACf,SACC;CACD,MAAM,EACL,mBACA,gBACA,cACA,QACA,eACA,WACG,gBAAgB,QAAQ;CAC5B,MAAM,gBAAqC,EAAE;AAC7C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,aAAa,CACtD,eAAc,MAAM,sBAAsB,IAAI,MAAM;AAyBrD,QAjBc,uBANC;EACd,GAAG;EACH,GAAG;EACH;EACA;EACA,EAGA,QACA,mBACA,cACA,cACA"}
@@ -0,0 +1,211 @@
1
+ import { getBaseURL } from "../utils/url.mjs";
2
+ import { matchesOriginPattern } from "../auth/trusted-origins.mjs";
3
+ import { createInternalAdapter } from "../db/internal-adapter.mjs";
4
+ import { isPromise } from "../utils/is-promise.mjs";
5
+ import { getInternalPlugins, getTrustedOrigins, getTrustedProviders, runPluginInit } from "./helpers.mjs";
6
+ import { hashPassword, verifyPassword } from "../crypto/password.mjs";
7
+ import { createCookieGetter, getCookies } from "../cookies/index.mjs";
8
+ import { checkPassword } from "../utils/password.mjs";
9
+ import { checkEndpointConflicts } from "../api/index.mjs";
10
+ import { DEFAULT_SECRET } from "../utils/constants.mjs";
11
+ import { getBetterAuthVersion } from "@better-auth/core/context";
12
+ import { getAuthTables } from "@better-auth/core/db";
13
+ import { createLogger, env, isProduction, isTest } from "@better-auth/core/env";
14
+ import { BetterAuthError } from "@better-auth/core/error";
15
+ import { generateId } from "@better-auth/core/utils/id";
16
+ import { socialProviders } from "@better-auth/core/social-providers";
17
+ import { createTelemetry } from "@better-auth/telemetry";
18
+ import defu from "defu";
19
+
20
+ //#region src/context/create-context.ts
21
+ /**
22
+ * Estimates the entropy of a string in bits.
23
+ * This is a simple approximation that helps detect low-entropy secrets.
24
+ */
25
+ function estimateEntropy(str) {
26
+ const unique = new Set(str).size;
27
+ if (unique === 0) return 0;
28
+ return Math.log2(Math.pow(unique, str.length));
29
+ }
30
+ /**
31
+ * Validates that the secret meets minimum security requirements.
32
+ * Throws BetterAuthError if the secret is invalid.
33
+ * Skips validation for DEFAULT_SECRET in test environments only.
34
+ * Only throws for DEFAULT_SECRET in production environment.
35
+ */
36
+ function validateSecret(secret, logger) {
37
+ const isDefaultSecret = secret === DEFAULT_SECRET;
38
+ if (isTest()) return;
39
+ if (isDefaultSecret && isProduction) throw new BetterAuthError("You are using the default secret. Please set `BETTER_AUTH_SECRET` in your environment variables or pass `secret` in your auth config.");
40
+ if (!secret) throw new BetterAuthError("BETTER_AUTH_SECRET is missing. Set it in your environment or pass `secret` to sirketioAuth({ secret }).");
41
+ if (secret.length < 32) logger.warn(`[better-auth] Warning: your BETTER_AUTH_SECRET should be at least 32 characters long for adequate security. Generate one with \`npx auth secret\` or \`openssl rand -base64 32\`.`);
42
+ if (estimateEntropy(secret) < 120) logger.warn("[better-auth] Warning: your BETTER_AUTH_SECRET appears low-entropy. Use a randomly generated secret for production.");
43
+ }
44
+ async function createAuthContext(adapter, options, getDatabaseType) {
45
+ if (!options.database) options = defu(options, {
46
+ session: { cookieCache: {
47
+ enabled: true,
48
+ strategy: "jwe",
49
+ refreshCache: true
50
+ } },
51
+ account: {
52
+ storeStateStrategy: "cookie",
53
+ storeAccountCookie: true
54
+ }
55
+ });
56
+ const plugins = options.plugins || [];
57
+ const internalPlugins = getInternalPlugins(options);
58
+ const logger = createLogger(options.logger);
59
+ const baseURL = getBaseURL(options.baseURL, options.basePath);
60
+ if (!baseURL) logger.warn(`[better-auth] Base URL could not be determined. Please set a valid base URL using the baseURL config option or the BETTER_AUTH_URL environment variable. Without this, callbacks and redirects may not work correctly.`);
61
+ if (adapter.id === "memory" && options.advanced?.database?.generateId === false) logger.error(`[better-auth] Misconfiguration detected.
62
+ You are using the memory DB with generateId: false.
63
+ This will cause no id to be generated for any model.
64
+ Most of the features of Better Auth will not work correctly.`);
65
+ const secret = options.secret || env.BETTER_AUTH_SECRET || env.AUTH_SECRET || DEFAULT_SECRET;
66
+ validateSecret(secret, logger);
67
+ options = {
68
+ ...options,
69
+ secret,
70
+ baseURL: baseURL ? new URL(baseURL).origin : "",
71
+ basePath: options.basePath || "/api/auth",
72
+ plugins: plugins.concat(internalPlugins)
73
+ };
74
+ checkEndpointConflicts(options, logger);
75
+ const cookies = getCookies(options);
76
+ const tables = getAuthTables(options);
77
+ const providers = (await Promise.all(Object.entries(options.socialProviders || {}).map(async ([key, originalConfig]) => {
78
+ const config = typeof originalConfig === "function" ? await originalConfig() : originalConfig;
79
+ if (config == null) return null;
80
+ if (config.enabled === false) return null;
81
+ if (!config.clientId) logger.warn(`Social provider ${key} is missing clientId or clientSecret`);
82
+ const provider = socialProviders[key](config);
83
+ provider.disableImplicitSignUp = config.disableImplicitSignUp;
84
+ return provider;
85
+ }))).filter((x) => x !== null);
86
+ const generateIdFunc = ({ model, size }) => {
87
+ if (typeof options.advanced?.generateId === "function") return options.advanced.generateId({
88
+ model,
89
+ size
90
+ });
91
+ const dbGenerateId = options?.advanced?.database?.generateId;
92
+ if (typeof dbGenerateId === "function") return dbGenerateId({
93
+ model,
94
+ size
95
+ });
96
+ if (dbGenerateId === "uuid") return crypto.randomUUID();
97
+ if (dbGenerateId === "serial" || dbGenerateId === false) return false;
98
+ return generateId(size);
99
+ };
100
+ const { publish } = await createTelemetry(options, {
101
+ adapter: adapter.id,
102
+ database: typeof options.database === "function" ? "adapter" : getDatabaseType(options.database)
103
+ });
104
+ const pluginIds = new Set(options.plugins.map((p) => p.id));
105
+ const getPluginFn = (id) => options.plugins.find((p) => p.id === id) ?? null;
106
+ const hasPluginFn = (id) => pluginIds.has(id);
107
+ const trustedOrigins = await getTrustedOrigins(options);
108
+ const trustedProviders = await getTrustedProviders(options);
109
+ const ctx = {
110
+ appName: options.appName || "Better Auth",
111
+ baseURL: baseURL || "",
112
+ version: getBetterAuthVersion(),
113
+ socialProviders: providers,
114
+ options,
115
+ oauthConfig: {
116
+ storeStateStrategy: options.account?.storeStateStrategy || (options.database ? "database" : "cookie"),
117
+ skipStateCookieCheck: !!options.account?.skipStateCookieCheck
118
+ },
119
+ tables,
120
+ trustedOrigins,
121
+ trustedProviders,
122
+ isTrustedOrigin(url, settings) {
123
+ return this.trustedOrigins.some((origin) => matchesOriginPattern(url, origin, settings));
124
+ },
125
+ sessionConfig: {
126
+ updateAge: options.session?.updateAge !== void 0 ? options.session.updateAge : 1440 * 60,
127
+ expiresIn: options.session?.expiresIn || 3600 * 24 * 7,
128
+ freshAge: options.session?.freshAge === void 0 ? 3600 * 24 : options.session.freshAge,
129
+ cookieRefreshCache: (() => {
130
+ const refreshCache = options.session?.cookieCache?.refreshCache;
131
+ const maxAge = options.session?.cookieCache?.maxAge || 300;
132
+ if ((!!options.database || !!options.secondaryStorage) && refreshCache) {
133
+ logger.warn("[better-auth] `session.cookieCache.refreshCache` is enabled while `database` or `secondaryStorage` is configured. `refreshCache` is meant for stateless (DB-less) setups. Disabling `refreshCache` — remove it from your config to silence this warning.");
134
+ return false;
135
+ }
136
+ if (refreshCache === false || refreshCache === void 0) return false;
137
+ if (refreshCache === true) return {
138
+ enabled: true,
139
+ updateAge: Math.floor(maxAge * .2)
140
+ };
141
+ return {
142
+ enabled: true,
143
+ updateAge: refreshCache.updateAge !== void 0 ? refreshCache.updateAge : Math.floor(maxAge * .2)
144
+ };
145
+ })()
146
+ },
147
+ secret,
148
+ rateLimit: {
149
+ ...options.rateLimit,
150
+ enabled: options.rateLimit?.enabled ?? isProduction,
151
+ window: options.rateLimit?.window || 10,
152
+ max: options.rateLimit?.max || 100,
153
+ storage: options.rateLimit?.storage || (options.secondaryStorage ? "secondary-storage" : "memory")
154
+ },
155
+ authCookies: cookies,
156
+ logger,
157
+ generateId: generateIdFunc,
158
+ session: null,
159
+ secondaryStorage: options.secondaryStorage,
160
+ password: {
161
+ hash: options.emailAndPassword?.password?.hash || hashPassword,
162
+ verify: options.emailAndPassword?.password?.verify || verifyPassword,
163
+ config: {
164
+ minPasswordLength: options.emailAndPassword?.minPasswordLength || 8,
165
+ maxPasswordLength: options.emailAndPassword?.maxPasswordLength || 128
166
+ },
167
+ checkPassword
168
+ },
169
+ setNewSession(session) {
170
+ this.newSession = session;
171
+ },
172
+ newSession: null,
173
+ adapter,
174
+ internalAdapter: createInternalAdapter(adapter, {
175
+ options,
176
+ logger,
177
+ hooks: options.databaseHooks ? [options.databaseHooks] : [],
178
+ generateId: generateIdFunc
179
+ }),
180
+ createAuthCookie: createCookieGetter(options),
181
+ async runMigrations() {
182
+ throw new BetterAuthError("runMigrations will be set by the specific init implementation");
183
+ },
184
+ publishTelemetry: publish,
185
+ skipCSRFCheck: !!options.advanced?.disableCSRFCheck,
186
+ skipOriginCheck: options.advanced?.disableOriginCheck !== void 0 ? options.advanced.disableOriginCheck : isTest() ? true : false,
187
+ runInBackground: options.advanced?.backgroundTasks?.handler ?? ((p) => {
188
+ p.catch(() => {});
189
+ }),
190
+ async runInBackgroundOrAwait(promise) {
191
+ try {
192
+ if (options.advanced?.backgroundTasks?.handler) {
193
+ if (promise instanceof Promise) options.advanced.backgroundTasks.handler(promise.catch((e) => {
194
+ logger.error("Failed to run background task:", e);
195
+ }));
196
+ } else await promise;
197
+ } catch (e) {
198
+ logger.error("Failed to run background task:", e);
199
+ }
200
+ },
201
+ getPlugin: getPluginFn,
202
+ hasPlugin: hasPluginFn
203
+ };
204
+ const initOrPromise = runPluginInit(ctx);
205
+ if (isPromise(initOrPromise)) await initOrPromise;
206
+ return ctx;
207
+ }
208
+
209
+ //#endregion
210
+ export { createAuthContext };
211
+ //# sourceMappingURL=create-context.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-context.mjs","names":[],"sources":["../../src/context/create-context.ts"],"sourcesContent":["import type { AuthContext, BetterAuthOptions } from \"@better-auth/core\";\nimport { getBetterAuthVersion } from \"@better-auth/core/context\";\nimport { getAuthTables } from \"@better-auth/core/db\";\nimport type { DBAdapter } from \"@better-auth/core/db/adapter\";\nimport { createLogger, env, isProduction, isTest } from \"@better-auth/core/env\";\nimport { BetterAuthError } from \"@better-auth/core/error\";\nimport type { OAuthProvider } from \"@better-auth/core/oauth2\";\nimport type { SocialProviders } from \"@better-auth/core/social-providers\";\nimport { socialProviders } from \"@better-auth/core/social-providers\";\nimport { generateId } from \"@better-auth/core/utils/id\";\nimport { createTelemetry } from \"@better-auth/telemetry\";\nimport defu from \"defu\";\nimport type { Entries } from \"type-fest\";\nimport { checkEndpointConflicts } from \"../api\";\nimport { matchesOriginPattern } from \"../auth/trusted-origins\";\nimport { createCookieGetter, getCookies } from \"../cookies\";\nimport { hashPassword, verifyPassword } from \"../crypto/password\";\nimport { createInternalAdapter } from \"../db/internal-adapter\";\nimport { DEFAULT_SECRET } from \"../utils/constants\";\nimport { isPromise } from \"../utils/is-promise\";\nimport { checkPassword } from \"../utils/password\";\nimport { getBaseURL } from \"../utils/url\";\nimport {\n\tgetInternalPlugins,\n\tgetTrustedOrigins,\n\tgetTrustedProviders,\n\trunPluginInit,\n} from \"./helpers\";\n\n/**\n * Estimates the entropy of a string in bits.\n * This is a simple approximation that helps detect low-entropy secrets.\n */\nfunction estimateEntropy(str: string): number {\n\tconst unique = new Set(str).size;\n\tif (unique === 0) return 0;\n\treturn Math.log2(Math.pow(unique, str.length));\n}\n\n/**\n * Validates that the secret meets minimum security requirements.\n * Throws BetterAuthError if the secret is invalid.\n * Skips validation for DEFAULT_SECRET in test environments only.\n * Only throws for DEFAULT_SECRET in production environment.\n */\nfunction validateSecret(\n\tsecret: string,\n\tlogger: ReturnType<typeof createLogger>,\n): void {\n\tconst isDefaultSecret = secret === DEFAULT_SECRET;\n\n\tif (isTest()) {\n\t\treturn;\n\t}\n\n\tif (isDefaultSecret && isProduction) {\n\t\tthrow new BetterAuthError(\n\t\t\t\"You are using the default secret. Please set `BETTER_AUTH_SECRET` in your environment variables or pass `secret` in your auth config.\",\n\t\t);\n\t}\n\n\tif (!secret) {\n\t\tthrow new BetterAuthError(\n\t\t\t\"BETTER_AUTH_SECRET is missing. Set it in your environment or pass `secret` to sirketioAuth({ secret }).\",\n\t\t);\n\t}\n\n\tif (secret.length < 32) {\n\t\tlogger.warn(\n\t\t\t`[better-auth] Warning: your BETTER_AUTH_SECRET should be at least 32 characters long for adequate security. Generate one with \\`npx auth secret\\` or \\`openssl rand -base64 32\\`.`,\n\t\t);\n\t}\n\n\t// Optional high-entropy check: warn if entropy appears low\n\tconst entropy = estimateEntropy(secret);\n\tif (entropy < 120) {\n\t\tlogger.warn(\n\t\t\t\"[better-auth] Warning: your BETTER_AUTH_SECRET appears low-entropy. Use a randomly generated secret for production.\",\n\t\t);\n\t}\n}\n\nexport async function createAuthContext<Options extends BetterAuthOptions>(\n\tadapter: DBAdapter,\n\toptions: Options,\n\tgetDatabaseType: (database: Options[\"database\"]) => string,\n): Promise<AuthContext<Options>> {\n\t//set default options for stateless mode\n\tif (!options.database) {\n\t\toptions = defu(options, {\n\t\t\tsession: {\n\t\t\t\tcookieCache: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tstrategy: \"jwe\" as const,\n\t\t\t\t\trefreshCache: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\taccount: {\n\t\t\t\tstoreStateStrategy: \"cookie\" as const,\n\t\t\t\tstoreAccountCookie: true,\n\t\t\t},\n\t\t}) as Options;\n\t}\n\tconst plugins = options.plugins || [];\n\tconst internalPlugins = getInternalPlugins(options);\n\tconst logger = createLogger(options.logger);\n\tconst baseURL = getBaseURL(options.baseURL, options.basePath);\n\n\tif (!baseURL) {\n\t\tlogger.warn(\n\t\t\t`[better-auth] Base URL could not be determined. Please set a valid base URL using the baseURL config option or the BETTER_AUTH_URL environment variable. Without this, callbacks and redirects may not work correctly.`,\n\t\t);\n\t}\n\n\tif (\n\t\tadapter.id === \"memory\" &&\n\t\toptions.advanced?.database?.generateId === false\n\t) {\n\t\tlogger.error(\n\t\t\t`[better-auth] Misconfiguration detected.\nYou are using the memory DB with generateId: false.\nThis will cause no id to be generated for any model.\nMost of the features of Better Auth will not work correctly.`,\n\t\t);\n\t}\n\n\tconst secret =\n\t\toptions.secret ||\n\t\tenv.BETTER_AUTH_SECRET ||\n\t\tenv.AUTH_SECRET ||\n\t\tDEFAULT_SECRET;\n\n\tvalidateSecret(secret, logger);\n\n\toptions = {\n\t\t...options,\n\t\tsecret,\n\t\tbaseURL: baseURL ? new URL(baseURL).origin : \"\",\n\t\tbasePath: options.basePath || \"/api/auth\",\n\t\tplugins: plugins.concat(internalPlugins),\n\t};\n\n\tcheckEndpointConflicts(options, logger);\n\tconst cookies = getCookies(options);\n\tconst tables = getAuthTables(options);\n\tconst providers = (\n\t\tawait Promise.all(\n\t\t\t(\n\t\t\t\tObject.entries(\n\t\t\t\t\toptions.socialProviders || {},\n\t\t\t\t) as unknown as Entries<SocialProviders>\n\t\t\t).map(async ([key, originalConfig]) => {\n\t\t\t\tconst config =\n\t\t\t\t\ttypeof originalConfig === \"function\"\n\t\t\t\t\t\t? await originalConfig()\n\t\t\t\t\t\t: originalConfig;\n\t\t\t\tif (config == null) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (config.enabled === false) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (!config.clientId) {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t`Social provider ${key} is missing clientId or clientSecret`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst provider = socialProviders[key](config as never);\n\t\t\t\t(provider as OAuthProvider).disableImplicitSignUp =\n\t\t\t\t\tconfig.disableImplicitSignUp;\n\t\t\t\treturn provider as OAuthProvider;\n\t\t\t}),\n\t\t)\n\t).filter((x) => x !== null);\n\n\tconst generateIdFunc: AuthContext[\"generateId\"] = ({ model, size }) => {\n\t\tif (typeof (options.advanced as any)?.generateId === \"function\") {\n\t\t\treturn (options.advanced as any).generateId({ model, size });\n\t\t}\n\t\tconst dbGenerateId = options?.advanced?.database?.generateId;\n\t\tif (typeof dbGenerateId === \"function\") {\n\t\t\treturn dbGenerateId({ model, size });\n\t\t}\n\t\tif (dbGenerateId === \"uuid\") {\n\t\t\treturn crypto.randomUUID();\n\t\t}\n\t\tif (dbGenerateId === \"serial\" || dbGenerateId === false) {\n\t\t\treturn false;\n\t\t}\n\t\treturn generateId(size);\n\t};\n\n\tconst { publish } = await createTelemetry(options, {\n\t\tadapter: adapter.id,\n\t\tdatabase:\n\t\t\ttypeof options.database === \"function\"\n\t\t\t\t? \"adapter\"\n\t\t\t\t: getDatabaseType(options.database),\n\t});\n\n\tconst pluginIds = new Set(options.plugins!.map((p) => p.id));\n\n\tconst getPluginFn = (id: string) =>\n\t\t(options.plugins!.find((p) => p.id === id) as never | undefined) ?? null;\n\n\tconst hasPluginFn = (id: string) => pluginIds.has(id);\n\n\tconst trustedOrigins = await getTrustedOrigins(options);\n\tconst trustedProviders = await getTrustedProviders(options);\n\n\tconst ctx: AuthContext = {\n\t\tappName: options.appName || \"Better Auth\",\n\t\tbaseURL: baseURL || \"\",\n\t\tversion: getBetterAuthVersion(),\n\t\tsocialProviders: providers,\n\t\toptions,\n\t\toauthConfig: {\n\t\t\tstoreStateStrategy:\n\t\t\t\toptions.account?.storeStateStrategy ||\n\t\t\t\t(options.database ? \"database\" : \"cookie\"),\n\t\t\tskipStateCookieCheck: !!options.account?.skipStateCookieCheck,\n\t\t},\n\t\ttables,\n\t\ttrustedOrigins,\n\t\ttrustedProviders,\n\t\tisTrustedOrigin(\n\t\t\turl: string,\n\t\t\tsettings?: {\n\t\t\t\tallowRelativePaths: boolean;\n\t\t\t},\n\t\t) {\n\t\t\treturn this.trustedOrigins.some((origin) =>\n\t\t\t\tmatchesOriginPattern(url, origin, settings),\n\t\t\t);\n\t\t},\n\t\tsessionConfig: {\n\t\t\tupdateAge:\n\t\t\t\toptions.session?.updateAge !== undefined\n\t\t\t\t\t? options.session.updateAge\n\t\t\t\t\t: 24 * 60 * 60,\n\t\t\texpiresIn: options.session?.expiresIn || 60 * 60 * 24 * 7,\n\t\t\tfreshAge:\n\t\t\t\toptions.session?.freshAge === undefined\n\t\t\t\t\t? 60 * 60 * 24\n\t\t\t\t\t: options.session.freshAge,\n\t\t\tcookieRefreshCache: (() => {\n\t\t\t\tconst refreshCache = options.session?.cookieCache?.refreshCache;\n\t\t\t\tconst maxAge = options.session?.cookieCache?.maxAge || 60 * 5;\n\n\t\t\t\t// `refreshCache` is intended for fully stateless / DB-less setups.\n\t\t\t\t// If a server-side store is configured, prefer fetching/refreshing from that source\n\t\t\t\t// and disable stateless refresh behavior to avoid confusing/unsafe configurations.\n\t\t\t\tconst isStateful = !!options.database || !!options.secondaryStorage;\n\t\t\t\tif (isStateful && refreshCache) {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t\"[better-auth] `session.cookieCache.refreshCache` is enabled while `database` or `secondaryStorage` is configured. `refreshCache` is meant for stateless (DB-less) setups. Disabling `refreshCache` — remove it from your config to silence this warning.\",\n\t\t\t\t\t);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (refreshCache === false || refreshCache === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (refreshCache === true) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\tupdateAge: Math.floor(maxAge * 0.2),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tupdateAge:\n\t\t\t\t\t\trefreshCache.updateAge !== undefined\n\t\t\t\t\t\t\t? refreshCache.updateAge\n\t\t\t\t\t\t\t: Math.floor(maxAge * 0.2),\n\t\t\t\t};\n\t\t\t})(),\n\t\t},\n\t\tsecret,\n\t\trateLimit: {\n\t\t\t...options.rateLimit,\n\t\t\tenabled: options.rateLimit?.enabled ?? isProduction,\n\t\t\twindow: options.rateLimit?.window || 10,\n\t\t\tmax: options.rateLimit?.max || 100,\n\t\t\tstorage:\n\t\t\t\toptions.rateLimit?.storage ||\n\t\t\t\t(options.secondaryStorage ? \"secondary-storage\" : \"memory\"),\n\t\t},\n\t\tauthCookies: cookies,\n\t\tlogger,\n\t\tgenerateId: generateIdFunc,\n\t\tsession: null,\n\t\tsecondaryStorage: options.secondaryStorage,\n\t\tpassword: {\n\t\t\thash: options.emailAndPassword?.password?.hash || hashPassword,\n\t\t\tverify: options.emailAndPassword?.password?.verify || verifyPassword,\n\t\t\tconfig: {\n\t\t\t\tminPasswordLength: options.emailAndPassword?.minPasswordLength || 8,\n\t\t\t\tmaxPasswordLength: options.emailAndPassword?.maxPasswordLength || 128,\n\t\t\t},\n\t\t\tcheckPassword,\n\t\t},\n\t\tsetNewSession(session) {\n\t\t\tthis.newSession = session;\n\t\t},\n\t\tnewSession: null,\n\t\tadapter: adapter,\n\t\tinternalAdapter: createInternalAdapter(adapter, {\n\t\t\toptions,\n\t\t\tlogger,\n\t\t\thooks: options.databaseHooks ? [options.databaseHooks] : [],\n\t\t\tgenerateId: generateIdFunc,\n\t\t}),\n\t\tcreateAuthCookie: createCookieGetter(options),\n\t\tasync runMigrations() {\n\t\t\tthrow new BetterAuthError(\n\t\t\t\t\"runMigrations will be set by the specific init implementation\",\n\t\t\t);\n\t\t},\n\t\tpublishTelemetry: publish,\n\t\tskipCSRFCheck: !!options.advanced?.disableCSRFCheck,\n\t\tskipOriginCheck:\n\t\t\toptions.advanced?.disableOriginCheck !== undefined\n\t\t\t\t? options.advanced.disableOriginCheck\n\t\t\t\t: isTest()\n\t\t\t\t\t? true\n\t\t\t\t\t: false,\n\t\trunInBackground:\n\t\t\toptions.advanced?.backgroundTasks?.handler ??\n\t\t\t((p) => {\n\t\t\t\tp.catch(() => {});\n\t\t\t}),\n\t\tasync runInBackgroundOrAwait(\n\t\t\tpromise: Promise<unknown> | Promise<void> | void | unknown,\n\t\t) {\n\t\t\ttry {\n\t\t\t\tif (options.advanced?.backgroundTasks?.handler) {\n\t\t\t\t\tif (promise instanceof Promise) {\n\t\t\t\t\t\toptions.advanced.backgroundTasks.handler(\n\t\t\t\t\t\t\tpromise.catch((e) => {\n\t\t\t\t\t\t\t\tlogger.error(\"Failed to run background task:\", e);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tawait promise;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tlogger.error(\"Failed to run background task:\", e);\n\t\t\t}\n\t\t},\n\t\tgetPlugin: getPluginFn,\n\t\thasPlugin: hasPluginFn as never,\n\t};\n\n\tconst initOrPromise = runPluginInit(ctx);\n\tif (isPromise(initOrPromise)) {\n\t\tawait initOrPromise;\n\t}\n\n\treturn ctx as unknown as AuthContext<Options>;\n}\n"],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import { getBaseURL } from "../utils/url.mjs";
2
+ import { createInternalAdapter } from "../db/internal-adapter.mjs";
3
+ import "../db/index.mjs";
4
+ import { isPromise } from "../utils/is-promise.mjs";
5
+ import { env } from "@better-auth/core/env";
6
+ import { defu as defu$1 } from "defu";
7
+
8
+ //#region src/context/helpers.ts
9
+ async function runPluginInit(context) {
10
+ let options = context.options;
11
+ const plugins = options.plugins || [];
12
+ const dbHooks = [];
13
+ const pluginTrustedOrigins = [];
14
+ for (const plugin of plugins) if (plugin.init) {
15
+ const initPromise = plugin.init(context);
16
+ let result;
17
+ if (isPromise(initPromise)) result = await initPromise;
18
+ else result = initPromise;
19
+ if (typeof result === "object") {
20
+ if (result.options) {
21
+ const { databaseHooks, trustedOrigins, ...restOpts } = result.options;
22
+ if (databaseHooks) dbHooks.push(databaseHooks);
23
+ if (trustedOrigins) pluginTrustedOrigins.push(trustedOrigins);
24
+ options = defu$1(options, restOpts);
25
+ }
26
+ if (result.context) Object.assign(context, result.context);
27
+ }
28
+ }
29
+ if (pluginTrustedOrigins.length > 0) {
30
+ const allSources = [...options.trustedOrigins ? [options.trustedOrigins] : [], ...pluginTrustedOrigins];
31
+ const staticOrigins = allSources.filter(Array.isArray).flat();
32
+ const dynamicOrigins = allSources.filter((s) => typeof s === "function");
33
+ if (dynamicOrigins.length > 0) options.trustedOrigins = async (request) => {
34
+ const resolved = await Promise.all(dynamicOrigins.map((fn) => fn(request)));
35
+ return [...staticOrigins, ...resolved.flat()].filter((v) => typeof v === "string" && v !== "");
36
+ };
37
+ else options.trustedOrigins = staticOrigins;
38
+ }
39
+ dbHooks.push(options.databaseHooks);
40
+ context.internalAdapter = createInternalAdapter(context.adapter, {
41
+ options,
42
+ logger: context.logger,
43
+ hooks: dbHooks.filter((u) => u !== void 0),
44
+ generateId: context.generateId
45
+ });
46
+ context.options = options;
47
+ }
48
+ function getInternalPlugins(options) {
49
+ const plugins = [];
50
+ if (options.advanced?.crossSubDomainCookies?.enabled) {}
51
+ return plugins;
52
+ }
53
+ async function getTrustedOrigins(options, request) {
54
+ const baseURL = getBaseURL(options.baseURL, options.basePath, request);
55
+ const trustedOrigins = baseURL ? [new URL(baseURL).origin] : [];
56
+ if (options.trustedOrigins) {
57
+ if (Array.isArray(options.trustedOrigins)) trustedOrigins.push(...options.trustedOrigins);
58
+ if (typeof options.trustedOrigins === "function") {
59
+ const validOrigins = await options.trustedOrigins(request);
60
+ trustedOrigins.push(...validOrigins);
61
+ }
62
+ }
63
+ const envTrustedOrigins = env.BETTER_AUTH_TRUSTED_ORIGINS;
64
+ if (envTrustedOrigins) trustedOrigins.push(...envTrustedOrigins.split(","));
65
+ return trustedOrigins.filter((v) => Boolean(v));
66
+ }
67
+ async function getAwaitableValue(arr, item) {
68
+ if (!arr) return void 0;
69
+ for (const val of arr) {
70
+ const value = typeof val === "function" ? await val() : val;
71
+ if (value[item.field ?? "id"] === item.value) return value;
72
+ }
73
+ }
74
+ async function getTrustedProviders(options, request) {
75
+ const trustedProviders = options.account?.accountLinking?.trustedProviders;
76
+ if (!trustedProviders) return [];
77
+ if (Array.isArray(trustedProviders)) return trustedProviders.filter((v) => Boolean(v));
78
+ return (await trustedProviders(request) ?? []).filter((v) => Boolean(v));
79
+ }
80
+
81
+ //#endregion
82
+ export { getAwaitableValue, getInternalPlugins, getTrustedOrigins, getTrustedProviders, runPluginInit };
83
+ //# sourceMappingURL=helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.mjs","names":["defu"],"sources":["../../src/context/helpers.ts"],"sourcesContent":["import type {\n\tAuthContext,\n\tAwaitableFunction,\n\tBetterAuthOptions,\n\tBetterAuthPlugin,\n} from \"@better-auth/core\";\nimport { env } from \"@better-auth/core/env\";\nimport { defu } from \"defu\";\nimport { createInternalAdapter } from \"../db\";\nimport { isPromise } from \"../utils/is-promise\";\nimport { getBaseURL } from \"../utils/url\";\n\nexport async function runPluginInit(context: AuthContext) {\n\tlet options = context.options;\n\tconst plugins = options.plugins || [];\n\tconst dbHooks: BetterAuthOptions[\"databaseHooks\"][] = [];\n\tconst pluginTrustedOrigins: NonNullable<\n\t\tBetterAuthOptions[\"trustedOrigins\"]\n\t>[] = [];\n\tfor (const plugin of plugins) {\n\t\tif (plugin.init) {\n\t\t\tconst initPromise = plugin.init(context);\n\t\t\tlet result: ReturnType<Required<BetterAuthPlugin>[\"init\"]>;\n\t\t\tif (isPromise(initPromise)) {\n\t\t\t\tresult = await initPromise;\n\t\t\t} else {\n\t\t\t\tresult = initPromise;\n\t\t\t}\n\t\t\tif (typeof result === \"object\") {\n\t\t\t\tif (result.options) {\n\t\t\t\t\tconst { databaseHooks, trustedOrigins, ...restOpts } = result.options;\n\t\t\t\t\tif (databaseHooks) {\n\t\t\t\t\t\tdbHooks.push(databaseHooks);\n\t\t\t\t\t}\n\t\t\t\t\tif (trustedOrigins) {\n\t\t\t\t\t\tpluginTrustedOrigins.push(trustedOrigins);\n\t\t\t\t\t}\n\t\t\t\t\toptions = defu(options, restOpts);\n\t\t\t\t}\n\t\t\t\tif (result.context) {\n\t\t\t\t\t// Use Object.assign to keep the reference to the original context\n\t\t\t\t\tObject.assign(context, result.context);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (pluginTrustedOrigins.length > 0) {\n\t\tconst allSources = [\n\t\t\t...(options.trustedOrigins ? [options.trustedOrigins] : []),\n\t\t\t...pluginTrustedOrigins,\n\t\t];\n\t\tconst staticOrigins = allSources.filter(Array.isArray).flat();\n\t\tconst dynamicOrigins = allSources.filter(\n\t\t\t(s): s is Exclude<typeof s, string[]> => typeof s === \"function\",\n\t\t);\n\t\tif (dynamicOrigins.length > 0) {\n\t\t\toptions.trustedOrigins = async (request) => {\n\t\t\t\tconst resolved = await Promise.all(\n\t\t\t\t\tdynamicOrigins.map((fn) => fn(request)),\n\t\t\t\t);\n\t\t\t\treturn [...staticOrigins, ...resolved.flat()].filter(\n\t\t\t\t\t(v): v is string => typeof v === \"string\" && v !== \"\",\n\t\t\t\t);\n\t\t\t};\n\t\t} else {\n\t\t\toptions.trustedOrigins = staticOrigins;\n\t\t}\n\t}\n\t// Add the global database hooks last\n\tdbHooks.push(options.databaseHooks);\n\tcontext.internalAdapter = createInternalAdapter(context.adapter, {\n\t\toptions,\n\t\tlogger: context.logger,\n\t\thooks: dbHooks.filter((u) => u !== undefined),\n\t\tgenerateId: context.generateId,\n\t});\n\tcontext.options = options;\n}\n\nexport function getInternalPlugins(options: BetterAuthOptions) {\n\tconst plugins: BetterAuthPlugin[] = [];\n\tif (options.advanced?.crossSubDomainCookies?.enabled) {\n\t\t// TODO: add internal plugin\n\t}\n\treturn plugins;\n}\n\nexport async function getTrustedOrigins(\n\toptions: BetterAuthOptions,\n\trequest?: Request,\n): Promise<string[]> {\n\tconst baseURL = getBaseURL(options.baseURL, options.basePath, request);\n\tconst trustedOrigins: (string | undefined | null)[] = baseURL\n\t\t? [new URL(baseURL).origin]\n\t\t: [];\n\tif (options.trustedOrigins) {\n\t\tif (Array.isArray(options.trustedOrigins)) {\n\t\t\ttrustedOrigins.push(...options.trustedOrigins);\n\t\t}\n\t\tif (typeof options.trustedOrigins === \"function\") {\n\t\t\tconst validOrigins = await options.trustedOrigins(request);\n\t\t\ttrustedOrigins.push(...validOrigins);\n\t\t}\n\t}\n\tconst envTrustedOrigins = env.BETTER_AUTH_TRUSTED_ORIGINS;\n\tif (envTrustedOrigins) {\n\t\ttrustedOrigins.push(...envTrustedOrigins.split(\",\"));\n\t}\n\treturn trustedOrigins.filter((v): v is string => Boolean(v));\n}\n\nexport async function getAwaitableValue<T extends Record<string, any>>(\n\tarr: AwaitableFunction<T>[] | undefined,\n\titem: { field?: string; value: string },\n): Promise<T | undefined> {\n\tif (!arr) return undefined;\n\tfor (const val of arr) {\n\t\tconst value = typeof val === \"function\" ? await val() : val;\n\t\tif (value[item.field ?? \"id\"] === item.value) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport async function getTrustedProviders(\n\toptions: BetterAuthOptions,\n\trequest?: Request,\n): Promise<string[]> {\n\tconst trustedProviders = options.account?.accountLinking?.trustedProviders;\n\tif (!trustedProviders) {\n\t\treturn [];\n\t}\n\tif (Array.isArray(trustedProviders)) {\n\t\treturn trustedProviders.filter((v): v is string => Boolean(v));\n\t}\n\tconst resolved = await trustedProviders(request);\n\treturn (resolved ?? []).filter((v): v is string => Boolean(v));\n}\n"],"mappings":";;;;;;;;AAYA,eAAsB,cAAc,SAAsB;CACzD,IAAI,UAAU,QAAQ;CACtB,MAAM,UAAU,QAAQ,WAAW,EAAE;CACrC,MAAM,UAAgD,EAAE;CACxD,MAAM,uBAEA,EAAE;AACR,MAAK,MAAM,UAAU,QACpB,KAAI,OAAO,MAAM;EAChB,MAAM,cAAc,OAAO,KAAK,QAAQ;EACxC,IAAI;AACJ,MAAI,UAAU,YAAY,CACzB,UAAS,MAAM;MAEf,UAAS;AAEV,MAAI,OAAO,WAAW,UAAU;AAC/B,OAAI,OAAO,SAAS;IACnB,MAAM,EAAE,eAAe,gBAAgB,GAAG,aAAa,OAAO;AAC9D,QAAI,cACH,SAAQ,KAAK,cAAc;AAE5B,QAAI,eACH,sBAAqB,KAAK,eAAe;AAE1C,cAAUA,OAAK,SAAS,SAAS;;AAElC,OAAI,OAAO,QAEV,QAAO,OAAO,SAAS,OAAO,QAAQ;;;AAK1C,KAAI,qBAAqB,SAAS,GAAG;EACpC,MAAM,aAAa,CAClB,GAAI,QAAQ,iBAAiB,CAAC,QAAQ,eAAe,GAAG,EAAE,EAC1D,GAAG,qBACH;EACD,MAAM,gBAAgB,WAAW,OAAO,MAAM,QAAQ,CAAC,MAAM;EAC7D,MAAM,iBAAiB,WAAW,QAChC,MAAwC,OAAO,MAAM,WACtD;AACD,MAAI,eAAe,SAAS,EAC3B,SAAQ,iBAAiB,OAAO,YAAY;GAC3C,MAAM,WAAW,MAAM,QAAQ,IAC9B,eAAe,KAAK,OAAO,GAAG,QAAQ,CAAC,CACvC;AACD,UAAO,CAAC,GAAG,eAAe,GAAG,SAAS,MAAM,CAAC,CAAC,QAC5C,MAAmB,OAAO,MAAM,YAAY,MAAM,GACnD;;MAGF,SAAQ,iBAAiB;;AAI3B,SAAQ,KAAK,QAAQ,cAAc;AACnC,SAAQ,kBAAkB,sBAAsB,QAAQ,SAAS;EAChE;EACA,QAAQ,QAAQ;EAChB,OAAO,QAAQ,QAAQ,MAAM,MAAM,OAAU;EAC7C,YAAY,QAAQ;EACpB,CAAC;AACF,SAAQ,UAAU;;AAGnB,SAAgB,mBAAmB,SAA4B;CAC9D,MAAM,UAA8B,EAAE;AACtC,KAAI,QAAQ,UAAU,uBAAuB,SAAS;AAGtD,QAAO;;AAGR,eAAsB,kBACrB,SACA,SACoB;CACpB,MAAM,UAAU,WAAW,QAAQ,SAAS,QAAQ,UAAU,QAAQ;CACtE,MAAM,iBAAgD,UACnD,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,GACzB,EAAE;AACL,KAAI,QAAQ,gBAAgB;AAC3B,MAAI,MAAM,QAAQ,QAAQ,eAAe,CACxC,gBAAe,KAAK,GAAG,QAAQ,eAAe;AAE/C,MAAI,OAAO,QAAQ,mBAAmB,YAAY;GACjD,MAAM,eAAe,MAAM,QAAQ,eAAe,QAAQ;AAC1D,kBAAe,KAAK,GAAG,aAAa;;;CAGtC,MAAM,oBAAoB,IAAI;AAC9B,KAAI,kBACH,gBAAe,KAAK,GAAG,kBAAkB,MAAM,IAAI,CAAC;AAErD,QAAO,eAAe,QAAQ,MAAmB,QAAQ,EAAE,CAAC;;AAG7D,eAAsB,kBACrB,KACA,MACyB;AACzB,KAAI,CAAC,IAAK,QAAO;AACjB,MAAK,MAAM,OAAO,KAAK;EACtB,MAAM,QAAQ,OAAO,QAAQ,aAAa,MAAM,KAAK,GAAG;AACxD,MAAI,MAAM,KAAK,SAAS,UAAU,KAAK,MACtC,QAAO;;;AAMV,eAAsB,oBACrB,SACA,SACoB;CACpB,MAAM,mBAAmB,QAAQ,SAAS,gBAAgB;AAC1D,KAAI,CAAC,iBACJ,QAAO,EAAE;AAEV,KAAI,MAAM,QAAQ,iBAAiB,CAClC,QAAO,iBAAiB,QAAQ,MAAmB,QAAQ,EAAE,CAAC;AAG/D,SADiB,MAAM,iBAAiB,QAAQ,IAC5B,EAAE,EAAE,QAAQ,MAAmB,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { getBaseAdapter } from "../db/adapter-base.mjs";
2
+ import { createAuthContext } from "./create-context.mjs";
3
+ import { BetterAuthError } from "@better-auth/core/error";
4
+
5
+ //#region src/context/init.ts
6
+ const init = async (options) => {
7
+ const adapter = await getBaseAdapter(options, async () => {
8
+ throw new BetterAuthError("Direct database connection requires Kysely. Please use `better-auth` instead of `better-auth/minimal`, or provide an adapter (drizzleAdapter, prismaAdapter, etc.)");
9
+ });
10
+ const getDatabaseType = (_database) => "unknown";
11
+ const ctx = await createAuthContext(adapter, options, getDatabaseType);
12
+ ctx.runMigrations = async function() {
13
+ throw new BetterAuthError("Migrations are not supported in 'better-auth/minimal'. Please use 'better-auth' for migration support.");
14
+ };
15
+ return ctx;
16
+ };
17
+
18
+ //#endregion
19
+ export { init };
20
+ //# sourceMappingURL=init.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.mjs","names":[],"sources":["../../src/context/init.ts"],"sourcesContent":["import type { BetterAuthOptions } from \"@better-auth/core\";\nimport { BetterAuthError } from \"@better-auth/core/error\";\nimport { getBaseAdapter } from \"../db/adapter-base\";\nimport { createAuthContext } from \"./create-context\";\n\nexport const init = async (options: BetterAuthOptions) => {\n\tconst adapter = await getBaseAdapter(options, async () => {\n\t\tthrow new BetterAuthError(\n\t\t\t\"Direct database connection requires Kysely. Please use `better-auth` instead of `better-auth/minimal`, or provide an adapter (drizzleAdapter, prismaAdapter, etc.)\",\n\t\t);\n\t});\n\n\t// Without Kysely, we can't detect database type, so always return \"unknown\"\n\tconst getDatabaseType = (_database: BetterAuthOptions[\"database\"]) =>\n\t\t\"unknown\";\n\n\t// Use base context creation\n\tconst ctx = await createAuthContext(adapter, options, getDatabaseType);\n\n\t// Add runMigrations that throws error (migrations require Kysely)\n\tctx.runMigrations = async function () {\n\t\tthrow new BetterAuthError(\n\t\t\t\"Migrations are not supported in 'better-auth/minimal'. Please use 'better-auth' for migration support.\",\n\t\t);\n\t};\n\n\treturn ctx;\n};\n"],"mappings":";;;;;AAKA,MAAa,OAAO,OAAO,YAA+B;CACzD,MAAM,UAAU,MAAM,eAAe,SAAS,YAAY;AACzD,QAAM,IAAI,gBACT,qKACA;GACA;CAGF,MAAM,mBAAmB,cACxB;CAGD,MAAM,MAAM,MAAM,kBAAkB,SAAS,SAAS,gBAAgB;AAGtE,KAAI,gBAAgB,iBAAkB;AACrC,QAAM,IAAI,gBACT,yGACA;;AAGF,QAAO"}
@@ -0,0 +1,29 @@
1
+ //#region src/cookies/cookie-utils.d.ts
2
+ interface CookieAttributes {
3
+ value: string;
4
+ "max-age"?: number | undefined;
5
+ expires?: Date | undefined;
6
+ domain?: string | undefined;
7
+ path?: string | undefined;
8
+ secure?: boolean | undefined;
9
+ httponly?: boolean | undefined;
10
+ samesite?: ("strict" | "lax" | "none") | undefined;
11
+ [key: string]: any;
12
+ }
13
+ declare const SECURE_COOKIE_PREFIX = "__Secure-";
14
+ declare const HOST_COOKIE_PREFIX = "__Host-";
15
+ /**
16
+ * Remove __Secure- or __Host- prefix from cookie name.
17
+ */
18
+ declare function stripSecureCookiePrefix(cookieName: string): string;
19
+ /**
20
+ * Split `Set-Cookie` header, handling commas in `Expires` dates.
21
+ */
22
+ declare function splitSetCookieHeader(setCookie: string): string[];
23
+ declare function parseSetCookieHeader(setCookie: string): Map<string, CookieAttributes>;
24
+ declare function setCookieToHeader(headers: Headers): (context: {
25
+ response: Response;
26
+ }) => void;
27
+ //#endregion
28
+ export { CookieAttributes, HOST_COOKIE_PREFIX, SECURE_COOKIE_PREFIX, parseSetCookieHeader, setCookieToHeader, splitSetCookieHeader, stripSecureCookiePrefix };
29
+ //# sourceMappingURL=cookie-utils.d.mts.map