@masheev/better-auth 0.0.0-stage → 1.7.5

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 (465) hide show
  1. package/LICENSE.md +20 -0
  2. package/README.md +31 -2
  3. package/TYPE-PATCH-NOTICE.md +9 -0
  4. package/TYPE-PATCH-PROVENANCE.json +267 -0
  5. package/dist/_virtual/_rolldown/runtime.mjs +27 -0
  6. package/dist/adapters/drizzle-adapter/index.d.mts +1 -0
  7. package/dist/adapters/drizzle-adapter/index.mjs +2 -0
  8. package/dist/adapters/index.d.mts +26 -0
  9. package/dist/adapters/index.mjs +9 -0
  10. package/dist/adapters/kysely-adapter/index.d.mts +1 -0
  11. package/dist/adapters/kysely-adapter/index.mjs +2 -0
  12. package/dist/adapters/memory-adapter/index.d.mts +1 -0
  13. package/dist/adapters/memory-adapter/index.mjs +2 -0
  14. package/dist/adapters/mongodb-adapter/index.d.mts +1 -0
  15. package/dist/adapters/mongodb-adapter/index.mjs +2 -0
  16. package/dist/adapters/prisma-adapter/index.d.mts +1 -0
  17. package/dist/adapters/prisma-adapter/index.mjs +2 -0
  18. package/dist/api/dispatch.d.mts +34 -0
  19. package/dist/api/dispatch.mjs +275 -0
  20. package/dist/api/index.d.mts +4053 -0
  21. package/dist/api/index.mjs +220 -0
  22. package/dist/api/middlewares/authorization.d.mts +69 -0
  23. package/dist/api/middlewares/authorization.mjs +78 -0
  24. package/dist/api/middlewares/index.d.mts +2 -0
  25. package/dist/api/middlewares/origin-check.d.mts +17 -0
  26. package/dist/api/middlewares/origin-check.mjs +155 -0
  27. package/dist/api/rate-limiter/index.mjs +318 -0
  28. package/dist/api/routes/account.d.mts +413 -0
  29. package/dist/api/routes/account.mjs +619 -0
  30. package/dist/api/routes/callback.d.mts +32 -0
  31. package/dist/api/routes/callback.mjs +261 -0
  32. package/dist/api/routes/email-verification.d.mts +160 -0
  33. package/dist/api/routes/email-verification.mjs +324 -0
  34. package/dist/api/routes/error.d.mts +27 -0
  35. package/dist/api/routes/error.mjs +387 -0
  36. package/dist/api/routes/index.d.mts +12 -0
  37. package/dist/api/routes/ok.d.mts +35 -0
  38. package/dist/api/routes/ok.mjs +27 -0
  39. package/dist/api/routes/password.d.mts +182 -0
  40. package/dist/api/routes/password.mjs +206 -0
  41. package/dist/api/routes/session.d.mts +450 -0
  42. package/dist/api/routes/session.mjs +481 -0
  43. package/dist/api/routes/sign-in.d.mts +186 -0
  44. package/dist/api/routes/sign-in.mjs +368 -0
  45. package/dist/api/routes/sign-out.d.mts +51 -0
  46. package/dist/api/routes/sign-out.mjs +96 -0
  47. package/dist/api/routes/sign-up.d.mts +159 -0
  48. package/dist/api/routes/sign-up.mjs +275 -0
  49. package/dist/api/routes/update-session.d.mts +74 -0
  50. package/dist/api/routes/update-session.mjs +57 -0
  51. package/dist/api/routes/update-user.d.mts +428 -0
  52. package/dist/api/routes/update-user.mjs +522 -0
  53. package/dist/api/state/oauth.d.mts +53 -0
  54. package/dist/api/state/oauth.mjs +38 -0
  55. package/dist/api/state/should-session-refresh.d.mts +12 -0
  56. package/dist/api/state/should-session-refresh.mjs +13 -0
  57. package/dist/api/to-auth-endpoints.mjs +60 -0
  58. package/dist/auth/base.mjs +66 -0
  59. package/dist/auth/full.d.mts +28 -0
  60. package/dist/auth/full.mjs +29 -0
  61. package/dist/auth/minimal.d.mts +10 -0
  62. package/dist/auth/minimal.mjs +11 -0
  63. package/dist/auth/trusted-origins.mjs +106 -0
  64. package/dist/client/broadcast-channel.d.mts +19 -0
  65. package/dist/client/broadcast-channel.mjs +44 -0
  66. package/dist/client/config.d.mts +90 -0
  67. package/dist/client/config.mjs +113 -0
  68. package/dist/client/equality.d.mts +19 -0
  69. package/dist/client/equality.mjs +42 -0
  70. package/dist/client/fetch-plugins.mjs +17 -0
  71. package/dist/client/focus-manager.d.mts +10 -0
  72. package/dist/client/focus-manager.mjs +30 -0
  73. package/dist/client/index.d.mts +35 -0
  74. package/dist/client/index.mjs +22 -0
  75. package/dist/client/lynx/index.d.mts +43 -0
  76. package/dist/client/lynx/index.mjs +22 -0
  77. package/dist/client/lynx/lynx-store.d.mts +46 -0
  78. package/dist/client/lynx/lynx-store.mjs +44 -0
  79. package/dist/client/online-manager.d.mts +11 -0
  80. package/dist/client/online-manager.mjs +33 -0
  81. package/dist/client/parser.d.mts +10 -0
  82. package/dist/client/parser.mjs +70 -0
  83. package/dist/client/path-to-object.d.mts +113 -0
  84. package/dist/client/plugins/index.d.mts +44 -0
  85. package/dist/client/plugins/index.mjs +30 -0
  86. package/dist/client/plugins/infer-plugin.d.mts +16 -0
  87. package/dist/client/plugins/infer-plugin.mjs +11 -0
  88. package/dist/client/proxy.mjs +78 -0
  89. package/dist/client/query.d.mts +23 -0
  90. package/dist/client/query.mjs +124 -0
  91. package/dist/client/react/index.d.mts +44 -0
  92. package/dist/client/react/index.mjs +22 -0
  93. package/dist/client/react/react-store.d.mts +46 -0
  94. package/dist/client/react/react-store.mjs +44 -0
  95. package/dist/client/session-atom.d.mts +11 -0
  96. package/dist/client/session-atom.mjs +178 -0
  97. package/dist/client/session-refresh.d.mts +20 -0
  98. package/dist/client/session-refresh.mjs +131 -0
  99. package/dist/client/solid/index.d.mts +44 -0
  100. package/dist/client/solid/index.mjs +22 -0
  101. package/dist/client/solid/solid-store.mjs +21 -0
  102. package/dist/client/svelte/index.d.mts +44 -0
  103. package/dist/client/svelte/index.mjs +18 -0
  104. package/dist/client/types.d.mts +51 -0
  105. package/dist/client/vanilla.d.mts +42 -0
  106. package/dist/client/vanilla.mjs +18 -0
  107. package/dist/client/vue/index.d.mts +67 -0
  108. package/dist/client/vue/index.mjs +54 -0
  109. package/dist/client/vue/vue-store.mjs +23 -0
  110. package/dist/context/create-context.mjs +235 -0
  111. package/dist/context/helpers.mjs +158 -0
  112. package/dist/context/init-minimal.mjs +17 -0
  113. package/dist/context/init.mjs +19 -0
  114. package/dist/context/secret-utils.mjs +53 -0
  115. package/dist/context/store-capabilities.mjs +12 -0
  116. package/dist/cookies/cache.mjs +33 -0
  117. package/dist/cookies/cookie-utils.d.mts +72 -0
  118. package/dist/cookies/cookie-utils.mjs +203 -0
  119. package/dist/cookies/index.d.mts +124 -0
  120. package/dist/cookies/index.mjs +350 -0
  121. package/dist/cookies/jwt.mjs +44 -0
  122. package/dist/cookies/session-store.d.mts +32 -0
  123. package/dist/cookies/session-store.mjs +183 -0
  124. package/dist/crypto/buffer.d.mts +7 -0
  125. package/dist/crypto/buffer.mjs +16 -0
  126. package/dist/crypto/index.d.mts +32 -0
  127. package/dist/crypto/index.mjs +69 -0
  128. package/dist/crypto/jwt.d.mts +9 -0
  129. package/dist/crypto/jwt.mjs +141 -0
  130. package/dist/crypto/password.d.mts +13 -0
  131. package/dist/crypto/password.mjs +14 -0
  132. package/dist/crypto/random.d.mts +4 -0
  133. package/dist/crypto/random.mjs +5 -0
  134. package/dist/db/adapter-base.d.mts +7 -0
  135. package/dist/db/adapter-base.mjs +25 -0
  136. package/dist/db/adapter-kysely.d.mts +7 -0
  137. package/dist/db/adapter-kysely.mjs +17 -0
  138. package/dist/db/field-converter.d.mts +7 -0
  139. package/dist/db/field-converter.mjs +19 -0
  140. package/dist/db/field.d.mts +41 -0
  141. package/dist/db/get-migration.d.mts +56 -0
  142. package/dist/db/get-migration.mjs +685 -0
  143. package/dist/db/get-schema.d.mts +13 -0
  144. package/dist/db/get-schema.mjs +39 -0
  145. package/dist/db/index.d.mts +10 -0
  146. package/dist/db/index.mjs +35 -0
  147. package/dist/db/internal-adapter.d.mts +14 -0
  148. package/dist/db/internal-adapter.mjs +951 -0
  149. package/dist/db/revoke-unproven-account-access.d.mts +21 -0
  150. package/dist/db/revoke-unproven-account-access.mjs +58 -0
  151. package/dist/db/schema.d.mts +62 -0
  152. package/dist/db/schema.mjs +161 -0
  153. package/dist/db/to-zod.d.mts +35 -0
  154. package/dist/db/to-zod.mjs +23 -0
  155. package/dist/db/verification-token-storage.mjs +25 -0
  156. package/dist/db/with-hooks.d.mts +37 -0
  157. package/dist/db/with-hooks.mjs +255 -0
  158. package/dist/index.d.mts +30 -0
  159. package/dist/index.mjs +17 -0
  160. package/dist/integrations/cookie-plugin-guard.mjs +18 -0
  161. package/dist/integrations/next-js.d.mts +29 -0
  162. package/dist/integrations/next-js.mjs +105 -0
  163. package/dist/integrations/node.d.mts +11 -0
  164. package/dist/integrations/node.mjs +13 -0
  165. package/dist/integrations/solid-start.d.mts +22 -0
  166. package/dist/integrations/solid-start.mjs +15 -0
  167. package/dist/integrations/svelte-kit.d.mts +38 -0
  168. package/dist/integrations/svelte-kit.mjs +57 -0
  169. package/dist/integrations/tanstack-start-solid.d.mts +33 -0
  170. package/dist/integrations/tanstack-start-solid.mjs +57 -0
  171. package/dist/integrations/tanstack-start.d.mts +33 -0
  172. package/dist/integrations/tanstack-start.mjs +57 -0
  173. package/dist/oauth2/account-key.mjs +43 -0
  174. package/dist/oauth2/errors.mjs +49 -0
  175. package/dist/oauth2/index.d.mts +5 -0
  176. package/dist/oauth2/index.mjs +5 -0
  177. package/dist/oauth2/link-account.d.mts +96 -0
  178. package/dist/oauth2/link-account.mjs +329 -0
  179. package/dist/oauth2/state.d.mts +54 -0
  180. package/dist/oauth2/state.mjs +67 -0
  181. package/dist/oauth2/utils.d.mts +11 -0
  182. package/dist/oauth2/utils.mjs +33 -0
  183. package/dist/package.mjs +4 -0
  184. package/dist/plugins/access/access.d.mts +17 -0
  185. package/dist/plugins/access/access.mjs +78 -0
  186. package/dist/plugins/access/index.d.mts +3 -0
  187. package/dist/plugins/access/index.mjs +2 -0
  188. package/dist/plugins/access/types.d.mts +24 -0
  189. package/dist/plugins/additional-fields/client.d.mts +100 -0
  190. package/dist/plugins/additional-fields/client.mjs +11 -0
  191. package/dist/plugins/admin/access/index.d.mts +2 -0
  192. package/dist/plugins/admin/access/index.mjs +2 -0
  193. package/dist/plugins/admin/access/statement.d.mts +51 -0
  194. package/dist/plugins/admin/access/statement.mjs +52 -0
  195. package/dist/plugins/admin/admin.d.mts +911 -0
  196. package/dist/plugins/admin/admin.mjs +89 -0
  197. package/dist/plugins/admin/client.d.mts +81 -0
  198. package/dist/plugins/admin/client.mjs +39 -0
  199. package/dist/plugins/admin/error-codes.d.mts +30 -0
  200. package/dist/plugins/admin/error-codes.mjs +29 -0
  201. package/dist/plugins/admin/has-permission.mjs +12 -0
  202. package/dist/plugins/admin/index.d.mts +3 -0
  203. package/dist/plugins/admin/index.mjs +2 -0
  204. package/dist/plugins/admin/routes.mjs +919 -0
  205. package/dist/plugins/admin/schema.d.mts +40 -0
  206. package/dist/plugins/admin/schema.mjs +33 -0
  207. package/dist/plugins/admin/types.d.mts +88 -0
  208. package/dist/plugins/anonymous/client.d.mts +32 -0
  209. package/dist/plugins/anonymous/client.mjs +21 -0
  210. package/dist/plugins/anonymous/error-codes.d.mts +15 -0
  211. package/dist/plugins/anonymous/error-codes.mjs +14 -0
  212. package/dist/plugins/anonymous/index.d.mts +175 -0
  213. package/dist/plugins/anonymous/index.mjs +219 -0
  214. package/dist/plugins/anonymous/schema.d.mts +15 -0
  215. package/dist/plugins/anonymous/schema.mjs +9 -0
  216. package/dist/plugins/anonymous/types.d.mts +65 -0
  217. package/dist/plugins/bearer/index.d.mts +45 -0
  218. package/dist/plugins/bearer/index.mjs +74 -0
  219. package/dist/plugins/captcha/constants.d.mts +9 -0
  220. package/dist/plugins/captcha/constants.mjs +27 -0
  221. package/dist/plugins/captcha/error-codes.mjs +13 -0
  222. package/dist/plugins/captcha/index.d.mts +27 -0
  223. package/dist/plugins/captcha/index.mjs +79 -0
  224. package/dist/plugins/captcha/types.d.mts +52 -0
  225. package/dist/plugins/captcha/utils.mjs +9 -0
  226. package/dist/plugins/captcha/verify-handlers/captchafox.mjs +27 -0
  227. package/dist/plugins/captcha/verify-handlers/cloudflare-turnstile.mjs +47 -0
  228. package/dist/plugins/captcha/verify-handlers/google-recaptcha.mjs +32 -0
  229. package/dist/plugins/captcha/verify-handlers/h-captcha.mjs +27 -0
  230. package/dist/plugins/custom-session/client.d.mts +17 -0
  231. package/dist/plugins/custom-session/client.mjs +7 -0
  232. package/dist/plugins/custom-session/index.d.mts +73 -0
  233. package/dist/plugins/custom-session/index.mjs +65 -0
  234. package/dist/plugins/device-authorization/client.d.mts +17 -0
  235. package/dist/plugins/device-authorization/client.mjs +18 -0
  236. package/dist/plugins/device-authorization/error-codes.mjs +19 -0
  237. package/dist/plugins/device-authorization/index.d.mts +558 -0
  238. package/dist/plugins/device-authorization/index.mjs +87 -0
  239. package/dist/plugins/device-authorization/routes.d.mts +32 -0
  240. package/dist/plugins/device-authorization/routes.mjs +725 -0
  241. package/dist/plugins/device-authorization/schema.d.mts +18 -0
  242. package/dist/plugins/device-authorization/schema.mjs +63 -0
  243. package/dist/plugins/email-otp/client.d.mts +21 -0
  244. package/dist/plugins/email-otp/client.mjs +17 -0
  245. package/dist/plugins/email-otp/error-codes.d.mts +10 -0
  246. package/dist/plugins/email-otp/error-codes.mjs +9 -0
  247. package/dist/plugins/email-otp/index.d.mts +551 -0
  248. package/dist/plugins/email-otp/index.mjs +145 -0
  249. package/dist/plugins/email-otp/otp-token.mjs +55 -0
  250. package/dist/plugins/email-otp/routes.mjs +784 -0
  251. package/dist/plugins/email-otp/types.d.mts +109 -0
  252. package/dist/plugins/email-otp/utils.mjs +17 -0
  253. package/dist/plugins/generic-oauth/error-codes.mjs +8 -0
  254. package/dist/plugins/generic-oauth/index.d.mts +52 -0
  255. package/dist/plugins/generic-oauth/index.mjs +279 -0
  256. package/dist/plugins/generic-oauth/providers/auth0.d.mts +36 -0
  257. package/dist/plugins/generic-oauth/providers/auth0.mjs +49 -0
  258. package/dist/plugins/generic-oauth/providers/gumroad.d.mts +31 -0
  259. package/dist/plugins/generic-oauth/providers/gumroad.mjs +62 -0
  260. package/dist/plugins/generic-oauth/providers/hubspot.d.mts +36 -0
  261. package/dist/plugins/generic-oauth/providers/hubspot.mjs +62 -0
  262. package/dist/plugins/generic-oauth/providers/index.d.mts +10 -0
  263. package/dist/plugins/generic-oauth/providers/keycloak.d.mts +36 -0
  264. package/dist/plugins/generic-oauth/providers/keycloak.mjs +47 -0
  265. package/dist/plugins/generic-oauth/providers/line.d.mts +54 -0
  266. package/dist/plugins/generic-oauth/providers/line.mjs +93 -0
  267. package/dist/plugins/generic-oauth/providers/microsoft-entra-id.d.mts +39 -0
  268. package/dist/plugins/generic-oauth/providers/microsoft-entra-id.mjs +104 -0
  269. package/dist/plugins/generic-oauth/providers/okta.d.mts +36 -0
  270. package/dist/plugins/generic-oauth/providers/okta.mjs +47 -0
  271. package/dist/plugins/generic-oauth/providers/patreon.d.mts +29 -0
  272. package/dist/plugins/generic-oauth/providers/patreon.mjs +61 -0
  273. package/dist/plugins/generic-oauth/providers/slack.d.mts +29 -0
  274. package/dist/plugins/generic-oauth/providers/slack.mjs +63 -0
  275. package/dist/plugins/generic-oauth/providers/yandex.d.mts +29 -0
  276. package/dist/plugins/generic-oauth/providers/yandex.mjs +67 -0
  277. package/dist/plugins/generic-oauth/types.d.mts +268 -0
  278. package/dist/plugins/haveibeenpwned/index.d.mts +63 -0
  279. package/dist/plugins/haveibeenpwned/index.mjs +81 -0
  280. package/dist/plugins/index.d.mts +69 -0
  281. package/dist/plugins/index.mjs +49 -0
  282. package/dist/plugins/jwt/adapter.mjs +68 -0
  283. package/dist/plugins/jwt/client.d.mts +41 -0
  284. package/dist/plugins/jwt/client.mjs +19 -0
  285. package/dist/plugins/jwt/cookie-cache.mjs +77 -0
  286. package/dist/plugins/jwt/index.d.mts +246 -0
  287. package/dist/plugins/jwt/index.mjs +214 -0
  288. package/dist/plugins/jwt/schema.d.mts +33 -0
  289. package/dist/plugins/jwt/schema.mjs +29 -0
  290. package/dist/plugins/jwt/sign.d.mts +128 -0
  291. package/dist/plugins/jwt/sign.mjs +130 -0
  292. package/dist/plugins/jwt/types.d.mts +256 -0
  293. package/dist/plugins/jwt/utils.d.mts +41 -0
  294. package/dist/plugins/jwt/utils.mjs +64 -0
  295. package/dist/plugins/jwt/verify.d.mts +11 -0
  296. package/dist/plugins/jwt/verify.mjs +45 -0
  297. package/dist/plugins/last-login-method/client.d.mts +48 -0
  298. package/dist/plugins/last-login-method/client.mjs +48 -0
  299. package/dist/plugins/last-login-method/index.d.mts +127 -0
  300. package/dist/plugins/last-login-method/index.mjs +98 -0
  301. package/dist/plugins/magic-link/client.d.mts +10 -0
  302. package/dist/plugins/magic-link/client.mjs +11 -0
  303. package/dist/plugins/magic-link/index.d.mts +213 -0
  304. package/dist/plugins/magic-link/index.mjs +208 -0
  305. package/dist/plugins/magic-link/utils.mjs +9 -0
  306. package/dist/plugins/multi-session/client.d.mts +19 -0
  307. package/dist/plugins/multi-session/client.mjs +19 -0
  308. package/dist/plugins/multi-session/error-codes.d.mts +8 -0
  309. package/dist/plugins/multi-session/error-codes.mjs +5 -0
  310. package/dist/plugins/multi-session/index.d.mts +212 -0
  311. package/dist/plugins/multi-session/index.mjs +217 -0
  312. package/dist/plugins/oauth-popup/client.d.mts +82 -0
  313. package/dist/plugins/oauth-popup/client.mjs +203 -0
  314. package/dist/plugins/oauth-popup/constants.d.mts +11 -0
  315. package/dist/plugins/oauth-popup/constants.mjs +11 -0
  316. package/dist/plugins/oauth-popup/error-codes.d.mts +11 -0
  317. package/dist/plugins/oauth-popup/error-codes.mjs +10 -0
  318. package/dist/plugins/oauth-popup/index.d.mts +67 -0
  319. package/dist/plugins/oauth-popup/index.mjs +232 -0
  320. package/dist/plugins/oauth-popup/types.d.mts +30 -0
  321. package/dist/plugins/oauth-proxy/index.d.mts +130 -0
  322. package/dist/plugins/oauth-proxy/index.mjs +407 -0
  323. package/dist/plugins/oauth-proxy/utils.mjs +55 -0
  324. package/dist/plugins/one-tap/client.d.mts +174 -0
  325. package/dist/plugins/one-tap/client.mjs +208 -0
  326. package/dist/plugins/one-tap/index.d.mts +82 -0
  327. package/dist/plugins/one-tap/index.mjs +100 -0
  328. package/dist/plugins/one-time-token/client.d.mts +10 -0
  329. package/dist/plugins/one-time-token/client.mjs +11 -0
  330. package/dist/plugins/one-time-token/index.d.mts +132 -0
  331. package/dist/plugins/one-time-token/index.mjs +107 -0
  332. package/dist/plugins/one-time-token/utils.mjs +9 -0
  333. package/dist/plugins/open-api/generator.d.mts +126 -0
  334. package/dist/plugins/open-api/generator.mjs +557 -0
  335. package/dist/plugins/open-api/index.d.mts +97 -0
  336. package/dist/plugins/open-api/index.mjs +65 -0
  337. package/dist/plugins/open-api/logo.mjs +13 -0
  338. package/dist/plugins/organization/access/index.d.mts +2 -0
  339. package/dist/plugins/organization/access/index.mjs +2 -0
  340. package/dist/plugins/organization/access/statement.d.mts +113 -0
  341. package/dist/plugins/organization/access/statement.mjs +77 -0
  342. package/dist/plugins/organization/adapter.d.mts +815 -0
  343. package/dist/plugins/organization/adapter.mjs +813 -0
  344. package/dist/plugins/organization/call.mjs +15 -0
  345. package/dist/plugins/organization/client.d.mts +375 -0
  346. package/dist/plugins/organization/client.mjs +104 -0
  347. package/dist/plugins/organization/error-codes.d.mts +66 -0
  348. package/dist/plugins/organization/error-codes.mjs +65 -0
  349. package/dist/plugins/organization/has-permission.d.mts +17 -0
  350. package/dist/plugins/organization/has-permission.mjs +34 -0
  351. package/dist/plugins/organization/index.d.mts +6 -0
  352. package/dist/plugins/organization/index.mjs +4 -0
  353. package/dist/plugins/organization/organization.d.mts +420 -0
  354. package/dist/plugins/organization/organization.mjs +886 -0
  355. package/dist/plugins/organization/permission.d.mts +15 -0
  356. package/dist/plugins/organization/permission.mjs +14 -0
  357. package/dist/plugins/organization/routes/crud-access-control.d.mts +511 -0
  358. package/dist/plugins/organization/routes/crud-access-control.mjs +674 -0
  359. package/dist/plugins/organization/routes/crud-invites.d.mts +1154 -0
  360. package/dist/plugins/organization/routes/crud-invites.mjs +602 -0
  361. package/dist/plugins/organization/routes/crud-members.d.mts +1057 -0
  362. package/dist/plugins/organization/routes/crud-members.mjs +518 -0
  363. package/dist/plugins/organization/routes/crud-org.d.mts +918 -0
  364. package/dist/plugins/organization/routes/crud-org.mjs +455 -0
  365. package/dist/plugins/organization/routes/crud-team.d.mts +1238 -0
  366. package/dist/plugins/organization/routes/crud-team.mjs +766 -0
  367. package/dist/plugins/organization/schema.d.mts +390 -0
  368. package/dist/plugins/organization/schema.mjs +65 -0
  369. package/dist/plugins/organization/types.d.mts +691 -0
  370. package/dist/plugins/phone-number/client.d.mts +31 -0
  371. package/dist/plugins/phone-number/client.mjs +19 -0
  372. package/dist/plugins/phone-number/error-codes.d.mts +19 -0
  373. package/dist/plugins/phone-number/error-codes.mjs +18 -0
  374. package/dist/plugins/phone-number/index.d.mts +360 -0
  375. package/dist/plugins/phone-number/index.mjs +57 -0
  376. package/dist/plugins/phone-number/routes.mjs +529 -0
  377. package/dist/plugins/phone-number/schema.d.mts +22 -0
  378. package/dist/plugins/phone-number/schema.mjs +18 -0
  379. package/dist/plugins/phone-number/types.d.mts +116 -0
  380. package/dist/plugins/siwe/client.d.mts +14 -0
  381. package/dist/plugins/siwe/client.mjs +15 -0
  382. package/dist/plugins/siwe/index.d.mts +62 -0
  383. package/dist/plugins/siwe/index.mjs +272 -0
  384. package/dist/plugins/siwe/parse-message.mjs +60 -0
  385. package/dist/plugins/siwe/schema.d.mts +35 -0
  386. package/dist/plugins/siwe/schema.mjs +30 -0
  387. package/dist/plugins/siwe/types.d.mts +43 -0
  388. package/dist/plugins/test-utils/auth-helpers.mjs +33 -0
  389. package/dist/plugins/test-utils/cookie-builder.mjs +55 -0
  390. package/dist/plugins/test-utils/db-helpers.mjs +65 -0
  391. package/dist/plugins/test-utils/factories.mjs +38 -0
  392. package/dist/plugins/test-utils/index.d.mts +73 -0
  393. package/dist/plugins/test-utils/index.mjs +97 -0
  394. package/dist/plugins/test-utils/otp-sink.mjs +21 -0
  395. package/dist/plugins/test-utils/types.d.mts +51 -0
  396. package/dist/plugins/two-factor/backup-codes/index.d.mts +291 -0
  397. package/dist/plugins/two-factor/backup-codes/index.mjs +341 -0
  398. package/dist/plugins/two-factor/client.d.mts +76 -0
  399. package/dist/plugins/two-factor/client.mjs +41 -0
  400. package/dist/plugins/two-factor/constant.mjs +6 -0
  401. package/dist/plugins/two-factor/error-code.d.mts +20 -0
  402. package/dist/plugins/two-factor/error-code.mjs +19 -0
  403. package/dist/plugins/two-factor/index.d.mts +720 -0
  404. package/dist/plugins/two-factor/index.mjs +349 -0
  405. package/dist/plugins/two-factor/otp/index.d.mts +216 -0
  406. package/dist/plugins/two-factor/otp/index.mjs +252 -0
  407. package/dist/plugins/two-factor/schema.d.mts +59 -0
  408. package/dist/plugins/two-factor/schema.mjs +53 -0
  409. package/dist/plugins/two-factor/totp/index.d.mts +219 -0
  410. package/dist/plugins/two-factor/totp/index.mjs +230 -0
  411. package/dist/plugins/two-factor/types.d.mts +111 -0
  412. package/dist/plugins/two-factor/utils.mjs +9 -0
  413. package/dist/plugins/two-factor/verify-two-factor.mjs +205 -0
  414. package/dist/plugins/username/client.d.mts +38 -0
  415. package/dist/plugins/username/client.mjs +17 -0
  416. package/dist/plugins/username/error-codes.d.mts +16 -0
  417. package/dist/plugins/username/error-codes.mjs +15 -0
  418. package/dist/plugins/username/index.d.mts +326 -0
  419. package/dist/plugins/username/index.mjs +312 -0
  420. package/dist/plugins/username/schema.d.mts +50 -0
  421. package/dist/plugins/username/schema.mjs +25 -0
  422. package/dist/social-providers/index.d.mts +1 -0
  423. package/dist/social-providers/index.mjs +2 -0
  424. package/dist/state.d.mts +48 -0
  425. package/dist/state.mjs +149 -0
  426. package/dist/test-utils/headers.d.mts +8 -0
  427. package/dist/test-utils/headers.mjs +17 -0
  428. package/dist/test-utils/http-test-instance.d.mts +413 -0
  429. package/dist/test-utils/http-test-instance.mjs +107 -0
  430. package/dist/test-utils/index.d.mts +4 -0
  431. package/dist/test-utils/index.mjs +4 -0
  432. package/dist/test-utils/test-instance.d.mts +56 -0
  433. package/dist/test-utils/test-instance.mjs +242 -0
  434. package/dist/types/adapter.d.mts +2 -0
  435. package/dist/types/api.d.mts +28 -0
  436. package/dist/types/auth.d.mts +32 -0
  437. package/dist/types/helper.d.mts +26 -0
  438. package/dist/types/index.d.mts +10 -0
  439. package/dist/types/index.mjs +1 -0
  440. package/dist/types/models.d.mts +10 -0
  441. package/dist/types/plugins.d.mts +19 -0
  442. package/dist/utils/boolean.mjs +6 -0
  443. package/dist/utils/constants.mjs +4 -0
  444. package/dist/utils/date.mjs +6 -0
  445. package/dist/utils/hashing.mjs +18 -0
  446. package/dist/utils/hide-metadata.d.mts +6 -0
  447. package/dist/utils/hide-metadata.mjs +4 -0
  448. package/dist/utils/index.d.mts +4 -0
  449. package/dist/utils/is-api-error.d.mts +2 -0
  450. package/dist/utils/is-api-error.mjs +2 -0
  451. package/dist/utils/is-atom.mjs +6 -0
  452. package/dist/utils/is-promise.mjs +6 -0
  453. package/dist/utils/middleware-response.mjs +7 -0
  454. package/dist/utils/password.mjs +32 -0
  455. package/dist/utils/plugin-helper.mjs +14 -0
  456. package/dist/utils/request.mjs +23 -0
  457. package/dist/utils/shim.mjs +22 -0
  458. package/dist/utils/time.d.mts +48 -0
  459. package/dist/utils/time.mjs +98 -0
  460. package/dist/utils/url.d.mts +78 -0
  461. package/dist/utils/url.mjs +238 -0
  462. package/dist/utils/validate-user-info.mjs +44 -0
  463. package/dist/utils/wildcard.mjs +106 -0
  464. package/dist/version.mjs +5 -0
  465. package/package.json +595 -3
@@ -0,0 +1,30 @@
1
+ import { ExtractPluginField, HasRequiredKeys, InferPluginFieldFromTuple, IsAny, OverrideMerge, Prettify, PrettifyDeep, RequiredKeysOf, StripEmptyObjects, UnionToIntersection } from "./types/helper.mjs";
2
+ import { BetterAuthClientOptions, BetterAuthClientPlugin, ClientAtomListener, ClientStore, InferActions, InferAdditionalFromClient, InferClientAPI, InferErrorCodes, InferSessionFromClient, InferUserFromClient, IsSignal, SessionQueryParams } from "./client/types.mjs";
3
+ import { DBAdapter, DBAdapterInstance, DBAdapterSchemaCreation, DBTransactionAdapter, JoinConfig, JoinOption, Where } from "./types/adapter.mjs";
4
+ import { FilteredAPI, InferAPI, InferSessionAPI } from "./types/api.mjs";
5
+ import { Account, AdditionalSessionFieldsInput, AdditionalUserFieldsInput, InferPluginTypes, RateLimit, Session, User, Verification } from "./types/models.mjs";
6
+ import { InferOptionSchema, InferPluginContext, InferPluginErrorCodes, InferPluginIDs } from "./types/plugins.mjs";
7
+ import { Auth } from "./types/auth.mjs";
8
+ import { BetterAuthAdvancedOptions, BetterAuthCookies, BetterAuthOptions, BetterAuthPlugin, BetterAuthRateLimitOptions, StoreIdentifierOption, UserProvisioningSource, ValidateUserInfoAction, ValidateUserInfoMethod, ValidateUserInfoOAuthInfo, ValidateUserInfoResult, ValidateUserInfoSSOInfo, ValidateUserInfoSource } from "./types/index.mjs";
9
+ import { betterAuth } from "./auth/full.mjs";
10
+ import { GenerateStateOptions, generateIdTokenNonce, generateState, parseState } from "./oauth2/state.mjs";
11
+ import { StateData, generateGenericState, parseGenericState } from "./state.mjs";
12
+ import { HIDE_METADATA } from "./utils/hide-metadata.mjs";
13
+ import { getBaseURL, getHost, getHostFromSource, getOrigin, getProtocol, getProtocolFromSource, isDynamicBaseURLConfig, isRequestLike, matchesHostPattern, resolveBaseURL, resolveDynamicBaseURL, trimTrailingSlashes } from "./utils/url.mjs";
14
+ import { APIError } from "./api/index.mjs";
15
+ import { StandardSchemaV1 } from "@better-auth/core";
16
+ import { getCurrentAdapter } from "@better-auth/core/context";
17
+ import { TelemetryEvent, createTelemetry, getTelemetryAuthConfig } from "@better-auth/telemetry";
18
+ import { JSONWebKeySet, JWTPayload } from "jose";
19
+ export * from "@better-auth/core";
20
+ export * from "@better-auth/core/db";
21
+ export * from "@better-auth/core/env";
22
+ export * from "@better-auth/core/error";
23
+ export * from "@better-auth/core/oauth2";
24
+ export * from "@better-auth/core/utils/error-codes";
25
+ export * from "@better-auth/core/utils/id";
26
+ export * from "@better-auth/core/utils/json";
27
+ export * from "@better-auth/core/social-providers";
28
+ export * from "better-call";
29
+ export * from "zod";
30
+ export { APIError, Account, AdditionalSessionFieldsInput, AdditionalUserFieldsInput, Auth, BetterAuthAdvancedOptions, BetterAuthClientOptions, BetterAuthClientPlugin, BetterAuthCookies, BetterAuthOptions, BetterAuthPlugin, BetterAuthRateLimitOptions, ClientAtomListener, ClientStore, DBAdapter, DBAdapterInstance, DBAdapterSchemaCreation, DBTransactionAdapter, ExtractPluginField, FilteredAPI, GenerateStateOptions, HIDE_METADATA, HasRequiredKeys, InferAPI, InferActions, InferAdditionalFromClient, InferClientAPI, InferErrorCodes, InferOptionSchema, InferPluginContext, InferPluginErrorCodes, InferPluginFieldFromTuple, InferPluginIDs, InferPluginTypes, InferSessionAPI, InferSessionFromClient, InferUserFromClient, IsAny, IsSignal, type JSONWebKeySet, type JWTPayload, JoinConfig, JoinOption, OverrideMerge, Prettify, PrettifyDeep, RateLimit, RequiredKeysOf, Session, SessionQueryParams, type StandardSchemaV1, StateData, StoreIdentifierOption, StripEmptyObjects, type TelemetryEvent, UnionToIntersection, User, UserProvisioningSource, ValidateUserInfoAction, ValidateUserInfoMethod, ValidateUserInfoOAuthInfo, ValidateUserInfoResult, ValidateUserInfoSSOInfo, ValidateUserInfoSource, Verification, Where, betterAuth, createTelemetry, generateGenericState, generateIdTokenNonce, generateState, getBaseURL, getCurrentAdapter, getHost, getHostFromSource, getOrigin, getProtocol, getProtocolFromSource, getTelemetryAuthConfig, isDynamicBaseURLConfig, isRequestLike, matchesHostPattern, parseGenericState, parseState, resolveBaseURL, resolveDynamicBaseURL, trimTrailingSlashes };
package/dist/index.mjs ADDED
@@ -0,0 +1,17 @@
1
+ import { getBaseURL, getHost, getHostFromSource, getOrigin, getProtocol, getProtocolFromSource, isDynamicBaseURLConfig, isRequestLike, matchesHostPattern, resolveBaseURL, resolveDynamicBaseURL, trimTrailingSlashes } from "./utils/url.mjs";
2
+ import { generateGenericState, parseGenericState } from "./state.mjs";
3
+ import { generateIdTokenNonce, generateState, parseState } from "./oauth2/state.mjs";
4
+ import { HIDE_METADATA } from "./utils/hide-metadata.mjs";
5
+ import { APIError } from "./api/index.mjs";
6
+ import { betterAuth } from "./auth/full.mjs";
7
+ import { getCurrentAdapter } from "@better-auth/core/context";
8
+ import { createTelemetry, getTelemetryAuthConfig } from "@better-auth/telemetry";
9
+ export * from "@better-auth/core";
10
+ export * from "@better-auth/core/db";
11
+ export * from "@better-auth/core/env";
12
+ export * from "@better-auth/core/error";
13
+ export * from "@better-auth/core/oauth2";
14
+ export * from "@better-auth/core/utils/error-codes";
15
+ export * from "@better-auth/core/utils/id";
16
+ export * from "@better-auth/core/utils/json";
17
+ export { APIError, HIDE_METADATA, betterAuth, createTelemetry, generateGenericState, generateIdTokenNonce, generateState, getBaseURL, getCurrentAdapter, getHost, getHostFromSource, getOrigin, getProtocol, getProtocolFromSource, getTelemetryAuthConfig, isDynamicBaseURLConfig, isRequestLike, matchesHostPattern, parseGenericState, parseState, resolveBaseURL, resolveDynamicBaseURL, trimTrailingSlashes };
@@ -0,0 +1,18 @@
1
+ //#region src/integrations/cookie-plugin-guard.ts
2
+ /**
3
+ * Warns when a cookie integration plugin is not effectively last.
4
+ *
5
+ * A plugin is considered misordered when there is at least one other plugin
6
+ * after it in the `plugins` array that declares `hooks.after`, since those
7
+ * hooks can set cookies that this integration will not see.
8
+ */
9
+ function warnIfCookiePluginNotLast(ctx, pluginId) {
10
+ const plugins = ctx.options.plugins || [];
11
+ if (plugins.length === 0) return;
12
+ const index = plugins.findIndex((p) => p.id === pluginId);
13
+ if (index === -1) return;
14
+ if (!plugins.slice(index + 1).some((p) => p.hooks && Array.isArray(p.hooks.after) && p.hooks.after.length > 0)) return;
15
+ ctx.logger.warn(`[better-auth] Cookie integration plugin "${pluginId}" should be placed last in the plugins array. Plugins with \`hooks.after\` running after it may set cookies that are not forwarded to the framework cookie store. Move your cookie integration plugin to the end of the \`plugins\` array to avoid missing \`Set-Cookie\` headers.`);
16
+ }
17
+ //#endregion
18
+ export { warnIfCookiePluginNotLast };
@@ -0,0 +1,29 @@
1
+ import * as _$_better_auth_core0 from "@better-auth/core";
2
+ import * as _$better_call0 from "better-call";
3
+
4
+ //#region src/integrations/next-js.d.ts
5
+ declare function toNextJsHandler(auth: {
6
+ handler: (request: Request) => Promise<Response>;
7
+ } | ((request: Request) => Promise<Response>)): {
8
+ GET: (request: Request) => Promise<Response>;
9
+ POST: (request: Request) => Promise<Response>;
10
+ PATCH: (request: Request) => Promise<Response>;
11
+ PUT: (request: Request) => Promise<Response>;
12
+ DELETE: (request: Request) => Promise<Response>;
13
+ };
14
+ declare const nextCookies: () => {
15
+ id: "next-cookies";
16
+ version: string;
17
+ hooks: {
18
+ before: {
19
+ matcher(ctx: _$_better_auth_core0.HookEndpointContext): boolean;
20
+ handler: _$better_call0.Middleware<_$better_call0.MiddlewareOptions, (inputContext: _$better_call0.MiddlewareInputContext<_$better_call0.MiddlewareOptions>) => Promise<void>>;
21
+ }[];
22
+ after: {
23
+ matcher(ctx: _$_better_auth_core0.HookEndpointContext): true;
24
+ handler: _$better_call0.Middleware<_$better_call0.MiddlewareOptions, (inputContext: _$better_call0.MiddlewareInputContext<_$better_call0.MiddlewareOptions>) => Promise<void>>;
25
+ }[];
26
+ };
27
+ };
28
+ //#endregion
29
+ export { nextCookies, toNextJsHandler };
@@ -0,0 +1,105 @@
1
+ import { parseSetCookieHeader, toCookieOptions } from "../cookies/cookie-utils.mjs";
2
+ import { setShouldSkipSessionRefresh } from "../api/state/should-session-refresh.mjs";
3
+ import { PACKAGE_VERSION } from "../version.mjs";
4
+ import { warnIfCookiePluginNotLast } from "./cookie-plugin-guard.mjs";
5
+ import { createAuthMiddleware } from "@better-auth/core/api";
6
+ //#region src/integrations/next-js.ts
7
+ function toNextJsHandler(auth) {
8
+ const handler = async (request) => {
9
+ return "handler" in auth ? auth.handler(request) : auth(request);
10
+ };
11
+ return {
12
+ GET: handler,
13
+ POST: handler,
14
+ PATCH: handler,
15
+ PUT: handler,
16
+ DELETE: handler
17
+ };
18
+ }
19
+ let nextHeadersModulePromise;
20
+ /**
21
+ * Cache ESM resolution while leaving the request-scoped `headers()` and
22
+ * `cookies()` calls uncached.
23
+ *
24
+ * @see https://github.com/better-auth/better-auth/issues/10466
25
+ */
26
+ const loadNextHeadersModule = () => {
27
+ nextHeadersModulePromise ??= import("next/headers.js").catch((error) => {
28
+ nextHeadersModulePromise = void 0;
29
+ throw error;
30
+ });
31
+ return nextHeadersModulePromise;
32
+ };
33
+ const nextCookies = () => {
34
+ let hasWarned = false;
35
+ return {
36
+ id: "next-cookies",
37
+ version: PACKAGE_VERSION,
38
+ hooks: {
39
+ before: [{
40
+ matcher(ctx) {
41
+ return ctx.path === "/get-session";
42
+ },
43
+ handler: createAuthMiddleware(async (ctx) => {
44
+ if (!hasWarned) {
45
+ warnIfCookiePluginNotLast(ctx.context, "next-cookies");
46
+ hasWarned = true;
47
+ }
48
+ if ("_flag" in ctx && ctx._flag === "router") return;
49
+ let headersStore;
50
+ try {
51
+ const { headers } = await loadNextHeadersModule();
52
+ headersStore = await headers();
53
+ } catch {
54
+ return;
55
+ }
56
+ /**
57
+ * Detect RSC via headers, NOT by probing cookies().set().
58
+ * In Next.js, cookies().set() unconditionally triggers router
59
+ * cache invalidation -- even if the value is unchanged.
60
+ *
61
+ * RSC sends `RSC: 1` without `next-action`. Only in that
62
+ * context cookies cannot be written -- skip session refresh
63
+ * to avoid DB/cookie mismatch.
64
+ *
65
+ * @see https://github.com/vercel/next.js/blob/8c5af211d580/packages/next/src/server/web/spec-extension/adapters/request-cookies.ts#L112-L157
66
+ */
67
+ const isRSC = headersStore.get("RSC") === "1";
68
+ const isServerAction = !!headersStore.get("next-action");
69
+ if (isRSC && !isServerAction) await setShouldSkipSessionRefresh(true);
70
+ })
71
+ }],
72
+ after: [{
73
+ matcher(ctx) {
74
+ return true;
75
+ },
76
+ handler: createAuthMiddleware(async (ctx) => {
77
+ const returned = ctx.context.responseHeaders;
78
+ if ("_flag" in ctx && ctx._flag === "router") return;
79
+ if (returned instanceof Headers) {
80
+ const setCookies = returned?.get("set-cookie");
81
+ if (!setCookies) return;
82
+ const parsed = parseSetCookieHeader(setCookies);
83
+ let cookieHelper;
84
+ try {
85
+ const { cookies } = await loadNextHeadersModule();
86
+ cookieHelper = await cookies();
87
+ } catch (error) {
88
+ if (error instanceof Error && (error.message.startsWith("`cookies` was called outside a request scope.") || error.message.includes("Cannot find module"))) return;
89
+ throw error;
90
+ }
91
+ parsed.forEach((value, key) => {
92
+ if (!key) return;
93
+ try {
94
+ cookieHelper.set(key, value.value, toCookieOptions(value));
95
+ } catch {}
96
+ });
97
+ return;
98
+ }
99
+ })
100
+ }]
101
+ }
102
+ };
103
+ };
104
+ //#endregion
105
+ export { nextCookies, toNextJsHandler };
@@ -0,0 +1,11 @@
1
+ import { Auth } from "../types/auth.mjs";
2
+ import * as _$node_http0 from "node:http";
3
+ import { IncomingHttpHeaders } from "node:http";
4
+
5
+ //#region src/integrations/node.d.ts
6
+ declare const toNodeHandler: (auth: {
7
+ handler: Auth["handler"];
8
+ } | Auth["handler"]) => (req: _$node_http0.IncomingMessage, res: _$node_http0.ServerResponse) => Promise<void>;
9
+ declare function fromNodeHeaders(nodeHeaders: IncomingHttpHeaders): Headers;
10
+ //#endregion
11
+ export { fromNodeHeaders, toNodeHandler };
@@ -0,0 +1,13 @@
1
+ import { toNodeHandler as toNodeHandler$1 } from "better-call/node";
2
+ //#region src/integrations/node.ts
3
+ const toNodeHandler = (auth) => {
4
+ return "handler" in auth ? toNodeHandler$1(auth.handler) : toNodeHandler$1(auth);
5
+ };
6
+ function fromNodeHeaders(nodeHeaders) {
7
+ const webHeaders = new Headers();
8
+ for (const [key, value] of Object.entries(nodeHeaders)) if (value !== void 0) if (Array.isArray(value)) value.forEach((v) => webHeaders.append(key, v));
9
+ else webHeaders.set(key, value);
10
+ return webHeaders;
11
+ }
12
+ //#endregion
13
+ export { fromNodeHeaders, toNodeHandler };
@@ -0,0 +1,22 @@
1
+ //#region src/integrations/solid-start.d.ts
2
+ declare function toSolidStartHandler(auth: {
3
+ handler: (request: Request) => Promise<Response>;
4
+ } | ((request: Request) => Promise<Response>)): {
5
+ GET: (event: {
6
+ request: Request;
7
+ }) => Promise<Response>;
8
+ POST: (event: {
9
+ request: Request;
10
+ }) => Promise<Response>;
11
+ PATCH: (event: {
12
+ request: Request;
13
+ }) => Promise<Response>;
14
+ PUT: (event: {
15
+ request: Request;
16
+ }) => Promise<Response>;
17
+ DELETE: (event: {
18
+ request: Request;
19
+ }) => Promise<Response>;
20
+ };
21
+ //#endregion
22
+ export { toSolidStartHandler };
@@ -0,0 +1,15 @@
1
+ //#region src/integrations/solid-start.ts
2
+ function toSolidStartHandler(auth) {
3
+ const handler = async (event) => {
4
+ return "handler" in auth ? auth.handler(event.request) : auth(event.request);
5
+ };
6
+ return {
7
+ GET: handler,
8
+ POST: handler,
9
+ PATCH: handler,
10
+ PUT: handler,
11
+ DELETE: handler
12
+ };
13
+ }
14
+ //#endregion
15
+ export { toSolidStartHandler };
@@ -0,0 +1,38 @@
1
+ import { BetterAuthOptions } from "../types/index.mjs";
2
+ import * as _$better_call0 from "better-call";
3
+ import { RequestEvent } from "@sveltejs/kit";
4
+
5
+ //#region src/integrations/svelte-kit.d.ts
6
+ declare const toSvelteKitHandler: (auth: {
7
+ handler: (request: Request) => Response | Promise<Response>;
8
+ options: BetterAuthOptions;
9
+ }) => (event: {
10
+ request: Request;
11
+ }) => Response | Promise<Response>;
12
+ declare const svelteKitHandler: ({
13
+ auth,
14
+ event,
15
+ resolve,
16
+ building
17
+ }: {
18
+ auth: {
19
+ handler: (request: Request) => Response | Promise<Response>;
20
+ options: BetterAuthOptions;
21
+ };
22
+ event: RequestEvent;
23
+ resolve: (event: RequestEvent) => Response | Promise<Response>;
24
+ building: boolean;
25
+ }) => Promise<Response>;
26
+ declare function isAuthPath(url: string, options: BetterAuthOptions): boolean;
27
+ declare const sveltekitCookies: (getRequestEvent: () => RequestEvent<any, any>) => {
28
+ id: "sveltekit-cookies";
29
+ version: string;
30
+ hooks: {
31
+ after: {
32
+ matcher(): true;
33
+ handler: _$better_call0.Middleware<_$better_call0.MiddlewareOptions, (inputContext: _$better_call0.MiddlewareInputContext<_$better_call0.MiddlewareOptions>) => Promise<void>>;
34
+ }[];
35
+ };
36
+ };
37
+ //#endregion
38
+ export { isAuthPath, svelteKitHandler, sveltekitCookies, toSvelteKitHandler };
@@ -0,0 +1,57 @@
1
+ import { parseSetCookieHeader, toCookieOptions } from "../cookies/cookie-utils.mjs";
2
+ import { PACKAGE_VERSION } from "../version.mjs";
3
+ import { warnIfCookiePluginNotLast } from "./cookie-plugin-guard.mjs";
4
+ import { createAuthMiddleware } from "@better-auth/core/api";
5
+ //#region src/integrations/svelte-kit.ts
6
+ const toSvelteKitHandler = (auth) => {
7
+ return (event) => auth.handler(event.request);
8
+ };
9
+ const svelteKitHandler = async ({ auth, event, resolve, building }) => {
10
+ if (building) return resolve(event);
11
+ const { request, url } = event;
12
+ if (isAuthPath(url.toString(), auth.options)) return auth.handler(request);
13
+ return resolve(event);
14
+ };
15
+ function isAuthPath(url, options) {
16
+ const _url = new URL(url);
17
+ const baseURLStr = typeof options.baseURL === "string" ? options.baseURL : void 0;
18
+ const baseURL = new URL(`${baseURLStr || _url.origin}${options.basePath || "/api/auth"}`);
19
+ if (_url.origin !== baseURL.origin) return false;
20
+ if (!_url.pathname.startsWith(baseURL.pathname.endsWith("/") ? baseURL.pathname : `${baseURL.pathname}/`)) return false;
21
+ return true;
22
+ }
23
+ const sveltekitCookies = (getRequestEvent) => {
24
+ let hasWarned = false;
25
+ return {
26
+ id: "sveltekit-cookies",
27
+ version: PACKAGE_VERSION,
28
+ hooks: { after: [{
29
+ matcher() {
30
+ return true;
31
+ },
32
+ handler: createAuthMiddleware(async (ctx) => {
33
+ if (!hasWarned) {
34
+ warnIfCookiePluginNotLast(ctx.context, "sveltekit-cookies");
35
+ hasWarned = true;
36
+ }
37
+ const returned = ctx.context.responseHeaders;
38
+ if ("_flag" in ctx && ctx._flag === "router") return;
39
+ if (returned instanceof Headers) {
40
+ const setCookies = returned?.get("set-cookie");
41
+ if (!setCookies) return;
42
+ const event = getRequestEvent();
43
+ if (!event) return;
44
+ const parsed = parseSetCookieHeader(setCookies);
45
+ for (const [name, attributes] of parsed) try {
46
+ event.cookies.set(name, attributes.value, {
47
+ ...toCookieOptions(attributes),
48
+ path: attributes.path || "/"
49
+ });
50
+ } catch {}
51
+ }
52
+ })
53
+ }] }
54
+ };
55
+ };
56
+ //#endregion
57
+ export { isAuthPath, svelteKitHandler, sveltekitCookies, toSvelteKitHandler };
@@ -0,0 +1,33 @@
1
+ import * as _$_better_auth_core0 from "@better-auth/core";
2
+ import * as _$better_call0 from "better-call";
3
+
4
+ //#region src/integrations/tanstack-start-solid.d.ts
5
+ /**
6
+ * TanStack Start cookie plugin for Solid.js.
7
+ *
8
+ * This plugin automatically handles cookie setting for TanStack Start with Solid.js.
9
+ * It uses `@tanstack/solid-start-server` to set cookies.
10
+ *
11
+ * For React, use `better-auth/tanstack-start` instead.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { tanstackStartCookies } from "better-auth/tanstack-start/solid";
16
+ *
17
+ * const auth = betterAuth({
18
+ * plugins: [tanstackStartCookies()],
19
+ * });
20
+ * ```
21
+ */
22
+ declare const tanstackStartCookies: () => {
23
+ id: "tanstack-start-cookies-solid";
24
+ version: string;
25
+ hooks: {
26
+ after: {
27
+ matcher(ctx: _$_better_auth_core0.HookEndpointContext): true;
28
+ handler: _$better_call0.Middleware<_$better_call0.MiddlewareOptions, (inputContext: _$better_call0.MiddlewareInputContext<_$better_call0.MiddlewareOptions>) => Promise<void>>;
29
+ }[];
30
+ };
31
+ };
32
+ //#endregion
33
+ export { tanstackStartCookies };
@@ -0,0 +1,57 @@
1
+ import { parseSetCookieHeader, toCookieOptions } from "../cookies/cookie-utils.mjs";
2
+ import { PACKAGE_VERSION } from "../version.mjs";
3
+ import { warnIfCookiePluginNotLast } from "./cookie-plugin-guard.mjs";
4
+ import { createAuthMiddleware } from "@better-auth/core/api";
5
+ //#region src/integrations/tanstack-start-solid.ts
6
+ /**
7
+ * TanStack Start cookie plugin for Solid.js.
8
+ *
9
+ * This plugin automatically handles cookie setting for TanStack Start with Solid.js.
10
+ * It uses `@tanstack/solid-start-server` to set cookies.
11
+ *
12
+ * For React, use `better-auth/tanstack-start` instead.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * import { tanstackStartCookies } from "better-auth/tanstack-start/solid";
17
+ *
18
+ * const auth = betterAuth({
19
+ * plugins: [tanstackStartCookies()],
20
+ * });
21
+ * ```
22
+ */
23
+ const tanstackStartCookies = () => {
24
+ let hasWarned = false;
25
+ return {
26
+ id: "tanstack-start-cookies-solid",
27
+ version: PACKAGE_VERSION,
28
+ hooks: { after: [{
29
+ matcher(ctx) {
30
+ return true;
31
+ },
32
+ handler: createAuthMiddleware(async (ctx) => {
33
+ if (!hasWarned) {
34
+ warnIfCookiePluginNotLast(ctx.context, "tanstack-start-cookies-solid");
35
+ hasWarned = true;
36
+ }
37
+ const returned = ctx.context.responseHeaders;
38
+ if ("_flag" in ctx && ctx._flag === "router") return;
39
+ if (returned instanceof Headers) {
40
+ const setCookies = returned?.get("set-cookie");
41
+ if (!setCookies) return;
42
+ const parsed = parseSetCookieHeader(setCookies);
43
+ const { setCookie } = await import("@tanstack/solid-start/server");
44
+ parsed.forEach((value, key) => {
45
+ if (!key) return;
46
+ try {
47
+ setCookie(key, value.value, toCookieOptions(value));
48
+ } catch {}
49
+ });
50
+ return;
51
+ }
52
+ })
53
+ }] }
54
+ };
55
+ };
56
+ //#endregion
57
+ export { tanstackStartCookies };
@@ -0,0 +1,33 @@
1
+ import * as _$_better_auth_core0 from "@better-auth/core";
2
+ import * as _$better_call0 from "better-call";
3
+
4
+ //#region src/integrations/tanstack-start.d.ts
5
+ /**
6
+ * TanStack Start cookie plugin for React.
7
+ *
8
+ * This plugin automatically handles cookie setting for TanStack Start with React.
9
+ * It uses `@tanstack/react-start-server` to set cookies.
10
+ *
11
+ * For Solid.js, use `better-auth/tanstack-start/solid` instead.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { tanstackStartCookies } from "better-auth/tanstack-start";
16
+ *
17
+ * const auth = betterAuth({
18
+ * plugins: [tanstackStartCookies()],
19
+ * });
20
+ * ```
21
+ */
22
+ declare const tanstackStartCookies: () => {
23
+ id: "tanstack-start-cookies";
24
+ version: string;
25
+ hooks: {
26
+ after: {
27
+ matcher(ctx: _$_better_auth_core0.HookEndpointContext): true;
28
+ handler: _$better_call0.Middleware<_$better_call0.MiddlewareOptions, (inputContext: _$better_call0.MiddlewareInputContext<_$better_call0.MiddlewareOptions>) => Promise<void>>;
29
+ }[];
30
+ };
31
+ };
32
+ //#endregion
33
+ export { tanstackStartCookies };
@@ -0,0 +1,57 @@
1
+ import { parseSetCookieHeader, toCookieOptions } from "../cookies/cookie-utils.mjs";
2
+ import { PACKAGE_VERSION } from "../version.mjs";
3
+ import { warnIfCookiePluginNotLast } from "./cookie-plugin-guard.mjs";
4
+ import { createAuthMiddleware } from "@better-auth/core/api";
5
+ //#region src/integrations/tanstack-start.ts
6
+ /**
7
+ * TanStack Start cookie plugin for React.
8
+ *
9
+ * This plugin automatically handles cookie setting for TanStack Start with React.
10
+ * It uses `@tanstack/react-start-server` to set cookies.
11
+ *
12
+ * For Solid.js, use `better-auth/tanstack-start/solid` instead.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * import { tanstackStartCookies } from "better-auth/tanstack-start";
17
+ *
18
+ * const auth = betterAuth({
19
+ * plugins: [tanstackStartCookies()],
20
+ * });
21
+ * ```
22
+ */
23
+ const tanstackStartCookies = () => {
24
+ let hasWarned = false;
25
+ return {
26
+ id: "tanstack-start-cookies",
27
+ version: PACKAGE_VERSION,
28
+ hooks: { after: [{
29
+ matcher(ctx) {
30
+ return true;
31
+ },
32
+ handler: createAuthMiddleware(async (ctx) => {
33
+ if (!hasWarned) {
34
+ warnIfCookiePluginNotLast(ctx.context, "tanstack-start-cookies");
35
+ hasWarned = true;
36
+ }
37
+ const returned = ctx.context.responseHeaders;
38
+ if ("_flag" in ctx && ctx._flag === "router") return;
39
+ if (returned instanceof Headers) {
40
+ const setCookies = returned?.get("set-cookie");
41
+ if (!setCookies) return;
42
+ const parsed = parseSetCookieHeader(setCookies);
43
+ const { setCookie } = await import("@tanstack/react-start/server");
44
+ parsed.forEach((value, key) => {
45
+ if (!key) return;
46
+ try {
47
+ setCookie(key, value.value, toCookieOptions(value));
48
+ } catch {}
49
+ });
50
+ return;
51
+ }
52
+ })
53
+ }] }
54
+ };
55
+ };
56
+ //#endregion
57
+ export { tanstackStartCookies };
@@ -0,0 +1,43 @@
1
+ import { APIError, BASE_ERROR_CODES, BetterAuthError } from "@better-auth/core/error";
2
+ //#region src/oauth2/account-key.ts
3
+ /**
4
+ * Exposes a provider-declared profile as the raw claim record used by
5
+ * provisioning hooks. Provider profile interfaces are object-shaped but do
6
+ * not need an index signature solely to satisfy this erased boundary.
7
+ */
8
+ function toOAuthProfileRecord(profile) {
9
+ return profile;
10
+ }
11
+ /**
12
+ * Resolves the stable account key established by an OAuth provider response.
13
+ */
14
+ async function resolveOAuthAccountKey(provider, tokens, profile) {
15
+ const accountKeyContext = {
16
+ tokens,
17
+ profile
18
+ };
19
+ const accountSubject = provider.accountSubject;
20
+ const resolvedSubject = await accountSubject(accountKeyContext);
21
+ const accountId = String(resolvedSubject);
22
+ if (typeof resolvedSubject === "number" && !Number.isFinite(resolvedSubject) || accountId.trim().length === 0 || accountId === "undefined" || accountId === "null") throw new BetterAuthError("OAUTH_ACCOUNT_SUBJECT_INVALID");
23
+ return {
24
+ providerId: provider.id,
25
+ accountId
26
+ };
27
+ }
28
+ /**
29
+ * Resolves an OAuth account key at a direct HTTP authentication boundary.
30
+ *
31
+ * Provider resolvers are application code and can reject or return malformed
32
+ * values. Direct sign-in and linking expose all such failures as one stable
33
+ * authentication error instead of leaking implementation details or a 500.
34
+ */
35
+ async function resolveOAuthAccountKeyForAPI(provider, tokens, profile) {
36
+ try {
37
+ return await resolveOAuthAccountKey(provider, tokens, profile);
38
+ } catch {
39
+ throw APIError.from("UNAUTHORIZED", BASE_ERROR_CODES.FAILED_TO_GET_USER_INFO);
40
+ }
41
+ }
42
+ //#endregion
43
+ export { resolveOAuthAccountKey, resolveOAuthAccountKeyForAPI, toOAuthProfileRecord };
@@ -0,0 +1,49 @@
1
+ import { appendQueryParams } from "@better-auth/core/utils/url";
2
+ //#region src/oauth2/errors.ts
3
+ /**
4
+ * Error codes used in OAuth callback redirects (`?error=<code>`). These are
5
+ * URL-safe strings, not API error objects. Some also serve as the OAuth seam's
6
+ * machine-readable `result.error` value, which non-redirect callers (e.g.
7
+ * id-token sign-in) remap to an API error code.
8
+ */
9
+ const OAUTH_CALLBACK_ERROR_CODES = {
10
+ NO_CODE: "no_code",
11
+ PROVIDER_NOT_FOUND: "oauth_provider_not_found",
12
+ ISSUER_MISSING: "issuer_missing",
13
+ ISSUER_MISMATCH: "issuer_mismatch",
14
+ INVALID_CODE: "invalid_code",
15
+ NONCE_BINDING_MISSING: "nonce_binding_missing",
16
+ UNABLE_TO_GET_USER_INFO: "unable_to_get_user_info",
17
+ NO_CALLBACK_URL: "no_callback_url",
18
+ UNABLE_TO_LINK_ACCOUNT: "unable_to_link_account",
19
+ EMAIL_DOES_NOT_MATCH: "email_does_not_match",
20
+ ACCOUNT_ALREADY_LINKED_TO_DIFFERENT_USER: "account_already_linked_to_different_user",
21
+ EMAIL_NOT_FOUND: "email_not_found",
22
+ EMAIL_NOT_VERIFIED: "email_not_verified"
23
+ };
24
+ const HANDLING_DOCS_URL = "https://www.better-auth.com/docs/concepts/oauth#handling-providers-without-email";
25
+ /**
26
+ * Redirect the user to the OAuth error page with a machine-readable `error`
27
+ * code (and optional `error_description`).
28
+ *
29
+ * Every OAuth callback path routes its failures through this helper so the
30
+ * query parameter name, the `?`/`&` separator, and URL encoding are decided in
31
+ * one place. The error page reads the `error` query parameter, so callers must
32
+ * never hand-build the redirect with a different parameter name.
33
+ */
34
+ function redirectOnError(ctx, errorURL, error, description) {
35
+ const params = new URLSearchParams({ error });
36
+ if (description) params.set("error_description", description);
37
+ const redirectURL = appendQueryParams(errorURL, params);
38
+ throw ctx.redirect(redirectURL);
39
+ }
40
+ /**
41
+ * Build the logger message shown when an OAuth provider does not return an
42
+ * email address. Kept in one place so every rejection site points users at
43
+ * the same workaround docs.
44
+ */
45
+ function missingEmailLogMessage(providerId, options) {
46
+ return `${options?.source === "generic" ? `Generic OAuth provider "${providerId}"` : `Provider "${providerId}"`} did not return an email${options?.source === "id_token" ? " in the id token" : ""}. Either request the provider's email scope, or create a placeholder via \`mapProfileToUser\`. See ${HANDLING_DOCS_URL}`;
47
+ }
48
+ //#endregion
49
+ export { OAUTH_CALLBACK_ERROR_CODES, missingEmailLogMessage, redirectOnError };
@@ -0,0 +1,5 @@
1
+ import { GenerateStateOptions, generateIdTokenNonce, generateState, parseState } from "./state.mjs";
2
+ import { applyUpdateUserInfoOnLink, handleOAuthUserInfo } from "./link-account.mjs";
3
+ import { decryptOAuthToken, getOAuthCallbackPath, setTokenUtil } from "./utils.mjs";
4
+ export * from "@better-auth/core/oauth2";
5
+ export { GenerateStateOptions, applyUpdateUserInfoOnLink, decryptOAuthToken, generateIdTokenNonce, generateState, getOAuthCallbackPath, handleOAuthUserInfo, parseState, setTokenUtil };
@@ -0,0 +1,5 @@
1
+ import { decryptOAuthToken, getOAuthCallbackPath, setTokenUtil } from "./utils.mjs";
2
+ import { applyUpdateUserInfoOnLink, handleOAuthUserInfo } from "./link-account.mjs";
3
+ import { generateIdTokenNonce, generateState, parseState } from "./state.mjs";
4
+ export * from "@better-auth/core/oauth2";
5
+ export { applyUpdateUserInfoOnLink, decryptOAuthToken, generateIdTokenNonce, generateState, getOAuthCallbackPath, handleOAuthUserInfo, parseState, setTokenUtil };