better-auth 1.3.1 → 1.3.2

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 (241) hide show
  1. package/dist/adapters/drizzle-adapter/index.d.cts +2 -2
  2. package/dist/adapters/drizzle-adapter/index.d.mts +2 -2
  3. package/dist/adapters/drizzle-adapter/index.d.ts +2 -2
  4. package/dist/adapters/index.d.cts +3 -3
  5. package/dist/adapters/index.d.mts +3 -3
  6. package/dist/adapters/index.d.ts +3 -3
  7. package/dist/adapters/kysely-adapter/index.d.cts +2 -2
  8. package/dist/adapters/kysely-adapter/index.d.mts +2 -2
  9. package/dist/adapters/kysely-adapter/index.d.ts +2 -2
  10. package/dist/adapters/memory-adapter/index.d.cts +2 -2
  11. package/dist/adapters/memory-adapter/index.d.mts +2 -2
  12. package/dist/adapters/memory-adapter/index.d.ts +2 -2
  13. package/dist/adapters/mongodb-adapter/index.d.cts +2 -2
  14. package/dist/adapters/mongodb-adapter/index.d.mts +2 -2
  15. package/dist/adapters/mongodb-adapter/index.d.ts +2 -2
  16. package/dist/adapters/prisma-adapter/index.d.cts +2 -2
  17. package/dist/adapters/prisma-adapter/index.d.mts +2 -2
  18. package/dist/adapters/prisma-adapter/index.d.ts +2 -2
  19. package/dist/adapters/test.d.cts +2 -2
  20. package/dist/adapters/test.d.mts +2 -2
  21. package/dist/adapters/test.d.ts +2 -2
  22. package/dist/api/index.cjs +1 -1
  23. package/dist/api/index.d.cts +2 -2
  24. package/dist/api/index.d.mts +2 -2
  25. package/dist/api/index.d.ts +2 -2
  26. package/dist/api/index.mjs +2 -2
  27. package/dist/client/index.d.cts +4 -4
  28. package/dist/client/index.d.mts +4 -4
  29. package/dist/client/index.d.ts +4 -4
  30. package/dist/client/plugins/index.d.cts +4 -4
  31. package/dist/client/plugins/index.d.mts +4 -4
  32. package/dist/client/plugins/index.d.ts +4 -4
  33. package/dist/client/react/index.d.cts +4 -4
  34. package/dist/client/react/index.d.mts +4 -4
  35. package/dist/client/react/index.d.ts +4 -4
  36. package/dist/client/solid/index.d.cts +4 -4
  37. package/dist/client/solid/index.d.mts +4 -4
  38. package/dist/client/solid/index.d.ts +4 -4
  39. package/dist/client/svelte/index.d.cts +4 -4
  40. package/dist/client/svelte/index.d.mts +4 -4
  41. package/dist/client/svelte/index.d.ts +4 -4
  42. package/dist/client/vue/index.d.cts +4 -4
  43. package/dist/client/vue/index.d.mts +4 -4
  44. package/dist/client/vue/index.d.ts +4 -4
  45. package/dist/cookies/index.d.cts +2 -2
  46. package/dist/cookies/index.d.mts +2 -2
  47. package/dist/cookies/index.d.ts +2 -2
  48. package/dist/db/index.d.cts +12 -12
  49. package/dist/db/index.d.mts +12 -12
  50. package/dist/db/index.d.ts +12 -12
  51. package/dist/index.cjs +2 -2
  52. package/dist/index.d.cts +4 -4
  53. package/dist/index.d.mts +4 -4
  54. package/dist/index.d.ts +4 -4
  55. package/dist/index.mjs +2 -2
  56. package/dist/integrations/next-js.cjs +2 -2
  57. package/dist/integrations/next-js.d.cts +2 -2
  58. package/dist/integrations/next-js.d.mts +2 -2
  59. package/dist/integrations/next-js.d.ts +2 -2
  60. package/dist/integrations/next-js.mjs +2 -2
  61. package/dist/integrations/node.d.cts +2 -2
  62. package/dist/integrations/node.d.mts +2 -2
  63. package/dist/integrations/node.d.ts +2 -2
  64. package/dist/integrations/react-start.cjs +2 -2
  65. package/dist/integrations/react-start.d.cts +2 -2
  66. package/dist/integrations/react-start.d.mts +2 -2
  67. package/dist/integrations/react-start.d.ts +2 -2
  68. package/dist/integrations/react-start.mjs +2 -2
  69. package/dist/integrations/svelte-kit.cjs +1 -1
  70. package/dist/integrations/svelte-kit.d.cts +2 -2
  71. package/dist/integrations/svelte-kit.d.mts +2 -2
  72. package/dist/integrations/svelte-kit.d.ts +2 -2
  73. package/dist/integrations/svelte-kit.mjs +1 -1
  74. package/dist/oauth2/index.cjs +1 -1
  75. package/dist/oauth2/index.d.cts +4 -4
  76. package/dist/oauth2/index.d.mts +4 -4
  77. package/dist/oauth2/index.d.ts +4 -4
  78. package/dist/oauth2/index.mjs +1 -1
  79. package/dist/plugins/admin/index.cjs +2 -2
  80. package/dist/plugins/admin/index.d.cts +67 -67
  81. package/dist/plugins/admin/index.d.mts +67 -67
  82. package/dist/plugins/admin/index.d.ts +67 -67
  83. package/dist/plugins/admin/index.mjs +2 -2
  84. package/dist/plugins/anonymous/index.cjs +1 -1
  85. package/dist/plugins/anonymous/index.d.cts +2 -2
  86. package/dist/plugins/anonymous/index.d.mts +2 -2
  87. package/dist/plugins/anonymous/index.d.ts +2 -2
  88. package/dist/plugins/anonymous/index.mjs +1 -1
  89. package/dist/plugins/bearer/index.cjs +1 -1
  90. package/dist/plugins/bearer/index.d.cts +2 -2
  91. package/dist/plugins/bearer/index.d.mts +2 -2
  92. package/dist/plugins/bearer/index.d.ts +2 -2
  93. package/dist/plugins/bearer/index.mjs +1 -1
  94. package/dist/plugins/captcha/index.d.cts +2 -2
  95. package/dist/plugins/captcha/index.d.mts +2 -2
  96. package/dist/plugins/captcha/index.d.ts +2 -2
  97. package/dist/plugins/custom-session/index.cjs +1 -1
  98. package/dist/plugins/custom-session/index.d.cts +7 -7
  99. package/dist/plugins/custom-session/index.d.mts +7 -7
  100. package/dist/plugins/custom-session/index.d.ts +7 -7
  101. package/dist/plugins/custom-session/index.mjs +1 -1
  102. package/dist/plugins/email-otp/index.cjs +1 -1
  103. package/dist/plugins/email-otp/index.d.cts +31 -31
  104. package/dist/plugins/email-otp/index.d.mts +31 -31
  105. package/dist/plugins/email-otp/index.d.ts +31 -31
  106. package/dist/plugins/email-otp/index.mjs +1 -1
  107. package/dist/plugins/generic-oauth/index.cjs +1 -1
  108. package/dist/plugins/generic-oauth/index.d.cts +24 -24
  109. package/dist/plugins/generic-oauth/index.d.mts +24 -24
  110. package/dist/plugins/generic-oauth/index.d.ts +24 -24
  111. package/dist/plugins/generic-oauth/index.mjs +1 -1
  112. package/dist/plugins/haveibeenpwned/index.cjs +1 -1
  113. package/dist/plugins/haveibeenpwned/index.d.cts +2 -2
  114. package/dist/plugins/haveibeenpwned/index.d.mts +2 -2
  115. package/dist/plugins/haveibeenpwned/index.d.ts +2 -2
  116. package/dist/plugins/haveibeenpwned/index.mjs +1 -1
  117. package/dist/plugins/index.cjs +7 -7
  118. package/dist/plugins/index.d.cts +26 -26
  119. package/dist/plugins/index.d.mts +26 -26
  120. package/dist/plugins/index.d.ts +26 -26
  121. package/dist/plugins/index.mjs +9 -9
  122. package/dist/plugins/jwt/index.cjs +2 -2
  123. package/dist/plugins/jwt/index.d.cts +2 -2
  124. package/dist/plugins/jwt/index.d.mts +2 -2
  125. package/dist/plugins/jwt/index.d.ts +2 -2
  126. package/dist/plugins/jwt/index.mjs +2 -2
  127. package/dist/plugins/magic-link/index.cjs +1 -1
  128. package/dist/plugins/magic-link/index.d.cts +14 -14
  129. package/dist/plugins/magic-link/index.d.mts +14 -14
  130. package/dist/plugins/magic-link/index.d.ts +14 -14
  131. package/dist/plugins/magic-link/index.mjs +1 -1
  132. package/dist/plugins/multi-session/index.cjs +1 -1
  133. package/dist/plugins/multi-session/index.d.cts +9 -9
  134. package/dist/plugins/multi-session/index.d.mts +9 -9
  135. package/dist/plugins/multi-session/index.d.ts +9 -9
  136. package/dist/plugins/multi-session/index.mjs +1 -1
  137. package/dist/plugins/oauth-proxy/index.cjs +1 -1
  138. package/dist/plugins/oauth-proxy/index.d.cts +7 -7
  139. package/dist/plugins/oauth-proxy/index.d.mts +7 -7
  140. package/dist/plugins/oauth-proxy/index.d.ts +7 -7
  141. package/dist/plugins/oauth-proxy/index.mjs +1 -1
  142. package/dist/plugins/oidc-provider/index.cjs +3 -3
  143. package/dist/plugins/oidc-provider/index.d.cts +27 -27
  144. package/dist/plugins/oidc-provider/index.d.mts +27 -27
  145. package/dist/plugins/oidc-provider/index.d.ts +27 -27
  146. package/dist/plugins/oidc-provider/index.mjs +3 -3
  147. package/dist/plugins/one-tap/index.cjs +1 -1
  148. package/dist/plugins/one-tap/index.d.cts +4 -4
  149. package/dist/plugins/one-tap/index.d.mts +4 -4
  150. package/dist/plugins/one-tap/index.d.ts +4 -4
  151. package/dist/plugins/one-tap/index.mjs +1 -1
  152. package/dist/plugins/one-time-token/index.cjs +3 -3
  153. package/dist/plugins/one-time-token/index.d.cts +6 -6
  154. package/dist/plugins/one-time-token/index.d.mts +6 -6
  155. package/dist/plugins/one-time-token/index.d.ts +6 -6
  156. package/dist/plugins/one-time-token/index.mjs +3 -3
  157. package/dist/plugins/open-api/index.cjs +1 -1
  158. package/dist/plugins/open-api/index.d.cts +2 -2
  159. package/dist/plugins/open-api/index.d.mts +2 -2
  160. package/dist/plugins/open-api/index.d.ts +2 -2
  161. package/dist/plugins/open-api/index.mjs +1 -1
  162. package/dist/plugins/organization/index.cjs +3 -3
  163. package/dist/plugins/organization/index.d.cts +390 -390
  164. package/dist/plugins/organization/index.d.mts +390 -390
  165. package/dist/plugins/organization/index.d.ts +390 -390
  166. package/dist/plugins/organization/index.mjs +3 -3
  167. package/dist/plugins/passkey/index.cjs +1 -1
  168. package/dist/plugins/passkey/index.d.cts +23 -23
  169. package/dist/plugins/passkey/index.d.mts +23 -23
  170. package/dist/plugins/passkey/index.d.ts +23 -23
  171. package/dist/plugins/passkey/index.mjs +1 -1
  172. package/dist/plugins/phone-number/index.cjs +1 -1
  173. package/dist/plugins/phone-number/index.d.cts +28 -28
  174. package/dist/plugins/phone-number/index.d.mts +28 -28
  175. package/dist/plugins/phone-number/index.d.ts +28 -28
  176. package/dist/plugins/phone-number/index.mjs +1 -1
  177. package/dist/plugins/siwe/index.cjs +297 -0
  178. package/dist/plugins/siwe/index.d.cts +195 -0
  179. package/dist/plugins/siwe/index.d.mts +195 -0
  180. package/dist/plugins/siwe/index.d.ts +195 -0
  181. package/dist/plugins/siwe/index.mjs +295 -0
  182. package/dist/plugins/sso/index.cjs +1 -1
  183. package/dist/plugins/sso/index.d.cts +45 -45
  184. package/dist/plugins/sso/index.d.mts +45 -45
  185. package/dist/plugins/sso/index.d.ts +45 -45
  186. package/dist/plugins/sso/index.mjs +1 -1
  187. package/dist/plugins/two-factor/index.cjs +1 -1
  188. package/dist/plugins/two-factor/index.d.cts +38 -38
  189. package/dist/plugins/two-factor/index.d.mts +38 -38
  190. package/dist/plugins/two-factor/index.d.ts +38 -38
  191. package/dist/plugins/two-factor/index.mjs +1 -1
  192. package/dist/plugins/username/index.cjs +1 -1
  193. package/dist/plugins/username/index.d.cts +12 -12
  194. package/dist/plugins/username/index.d.mts +12 -12
  195. package/dist/plugins/username/index.d.ts +12 -12
  196. package/dist/plugins/username/index.mjs +1 -1
  197. package/dist/shared/{better-auth.C-oNfZPH.d.cts → better-auth.B0e3ZzlM.d.cts} +36 -36
  198. package/dist/shared/{better-auth.CE16lr3i.d.mts → better-auth.B1VHvePI.d.mts} +36 -36
  199. package/dist/shared/{better-auth.DoKaQIwy.d.mts → better-auth.BF0l18Af.d.mts} +1 -1
  200. package/dist/shared/{better-auth.CNTpFj_S.cjs → better-auth.BXW4aAiQ.cjs} +2 -2
  201. package/dist/shared/{better-auth.DdKZcMVt.d.ts → better-auth.B_G094Aj.d.ts} +1 -1
  202. package/dist/shared/{better-auth.DQfCK4Nb.mjs → better-auth.Bqt8-7ls.mjs} +2 -2
  203. package/dist/shared/{better-auth.DevRAmVV.d.ts → better-auth.Bwe61noi.d.ts} +1 -1
  204. package/dist/shared/{better-auth.B3K6UWYy.d.cts → better-auth.CF-FWRQL.d.cts} +1 -1
  205. package/dist/shared/{better-auth.D2QnAIyP.d.ts → better-auth.CHvHihjD.d.ts} +36 -36
  206. package/dist/shared/{better-auth.pnE8EkZO.cjs → better-auth.COsDmM8f.cjs} +1 -1
  207. package/dist/shared/{better-auth.B8mbk3HM.cjs → better-auth.CSftMZoM.cjs} +1 -1
  208. package/dist/shared/{better-auth.DG2FJeYI.cjs → better-auth.CU2ZnFFo.cjs} +4 -3
  209. package/dist/shared/{better-auth.KpzJUkxw.d.mts → better-auth.CePXeKag.d.mts} +515 -515
  210. package/dist/shared/{better-auth.CnqHgquB.cjs → better-auth.CeY8lCIq.cjs} +33 -11
  211. package/dist/shared/{better-auth.Cgjn2thr.d.cts → better-auth.CiGummYu.d.cts} +515 -515
  212. package/dist/shared/{better-auth.BP6KhZxK.mjs → better-auth.D1SaVuxk.mjs} +1 -1
  213. package/dist/shared/{better-auth.BOumacvv.mjs → better-auth.D4HhkCZJ.mjs} +4 -3
  214. package/dist/shared/{better-auth.PchrD52N.d.cts → better-auth.DEgvs2nh.d.cts} +1 -1
  215. package/dist/shared/{better-auth._di0pH6c.mjs → better-auth.DGaVMVAI.mjs} +1 -1
  216. package/dist/shared/{better-auth.PS9uuCnX.d.ts → better-auth.DPa2nz5L.d.ts} +3 -3
  217. package/dist/shared/{better-auth.VKKx-2JU.mjs → better-auth.DR6QsC6j.mjs} +33 -11
  218. package/dist/shared/{better-auth.ByEh_r9h.d.mts → better-auth.DbqVX6sp.d.mts} +1 -1
  219. package/dist/shared/{better-auth.2lcgvW_O.d.ts → better-auth.Dj2HyOmw.d.ts} +515 -515
  220. package/dist/shared/{better-auth.Bs90Z5lG.mjs → better-auth.DygEm6OX.mjs} +1 -1
  221. package/dist/shared/{better-auth.jZedDYFo.mjs → better-auth.HDgvLN7B.mjs} +2 -2
  222. package/dist/shared/{better-auth.KXK1cTP6.d.mts → better-auth.IegS6fw_.d.mts} +3 -3
  223. package/dist/shared/{better-auth.B448Gbxg.cjs → better-auth.PIkdXr0U.cjs} +2 -2
  224. package/dist/shared/{better-auth.DCdVWPIH.cjs → better-auth.TnpcdNJo.cjs} +1 -1
  225. package/dist/shared/{better-auth.hWM7ExMT.mjs → better-auth.VOBpdwFt.mjs} +1 -1
  226. package/dist/shared/{better-auth.CtknPsTc.cjs → better-auth.johXc5IC.cjs} +1 -1
  227. package/dist/shared/{better-auth.DVIqLF8t.d.cts → better-auth.npEvGVS_.d.cts} +3 -3
  228. package/dist/social-providers/index.cjs +1 -1
  229. package/dist/social-providers/index.d.cts +1 -1
  230. package/dist/social-providers/index.d.mts +1 -1
  231. package/dist/social-providers/index.d.ts +1 -1
  232. package/dist/social-providers/index.mjs +1 -1
  233. package/dist/test-utils/index.cjs +3 -3
  234. package/dist/test-utils/index.d.cts +732 -731
  235. package/dist/test-utils/index.d.mts +732 -731
  236. package/dist/test-utils/index.d.ts +732 -731
  237. package/dist/test-utils/index.mjs +3 -3
  238. package/dist/types/index.d.cts +3 -3
  239. package/dist/types/index.d.mts +3 -3
  240. package/dist/types/index.d.ts +3 -3
  241. package/package.json +14 -1
@@ -1,9 +1,9 @@
1
1
  import * as better_call from 'better-call';
2
- import * as zod_v4 from 'zod/v4';
3
- import { U as User, I as InferOptionSchema } from '../../shared/better-auth.2lcgvW_O.js';
2
+ import * as z from 'zod/v4';
3
+ import { U as User, I as InferOptionSchema } from '../../shared/better-auth.Dj2HyOmw.js';
4
4
  import 'kysely';
5
5
  import '../../shared/better-auth.ZSfSbnQT.js';
6
- import '../../shared/better-auth.PS9uuCnX.js';
6
+ import '../../shared/better-auth.DPa2nz5L.js';
7
7
  import 'jose';
8
8
  import 'zod/v4/core';
9
9
  import 'better-sqlite3';
@@ -170,11 +170,11 @@ declare const phoneNumber: (options?: PhoneNumberOptions) => {
170
170
  }>;
171
171
  options: {
172
172
  method: "POST";
173
- body: zod_v4.ZodObject<{
174
- phoneNumber: zod_v4.ZodString;
175
- password: zod_v4.ZodString;
176
- rememberMe: zod_v4.ZodOptional<zod_v4.ZodBoolean>;
177
- }, zod_v4.core.$strip>;
173
+ body: z.ZodObject<{
174
+ phoneNumber: z.ZodString;
175
+ password: z.ZodString;
176
+ rememberMe: z.ZodOptional<z.ZodBoolean>;
177
+ }, z.core.$strip>;
178
178
  metadata: {
179
179
  openapi: {
180
180
  summary: string;
@@ -257,9 +257,9 @@ declare const phoneNumber: (options?: PhoneNumberOptions) => {
257
257
  }>;
258
258
  options: {
259
259
  method: "POST";
260
- body: zod_v4.ZodObject<{
261
- phoneNumber: zod_v4.ZodString;
262
- }, zod_v4.core.$strip>;
260
+ body: z.ZodObject<{
261
+ phoneNumber: z.ZodString;
262
+ }, z.core.$strip>;
263
263
  metadata: {
264
264
  openapi: {
265
265
  summary: string;
@@ -351,12 +351,12 @@ declare const phoneNumber: (options?: PhoneNumberOptions) => {
351
351
  } | null>;
352
352
  options: {
353
353
  method: "POST";
354
- body: zod_v4.ZodObject<{
355
- phoneNumber: zod_v4.ZodString;
356
- code: zod_v4.ZodString;
357
- disableSession: zod_v4.ZodOptional<zod_v4.ZodBoolean>;
358
- updatePhoneNumber: zod_v4.ZodOptional<zod_v4.ZodBoolean>;
359
- }, zod_v4.core.$strip>;
354
+ body: z.ZodObject<{
355
+ phoneNumber: z.ZodString;
356
+ code: z.ZodString;
357
+ disableSession: z.ZodOptional<z.ZodBoolean>;
358
+ updatePhoneNumber: z.ZodOptional<z.ZodBoolean>;
359
+ }, z.core.$strip>;
360
360
  metadata: {
361
361
  openapi: {
362
362
  summary: string;
@@ -484,9 +484,9 @@ declare const phoneNumber: (options?: PhoneNumberOptions) => {
484
484
  }>;
485
485
  options: {
486
486
  method: "POST";
487
- body: zod_v4.ZodObject<{
488
- phoneNumber: zod_v4.ZodString;
489
- }, zod_v4.core.$strip>;
487
+ body: z.ZodObject<{
488
+ phoneNumber: z.ZodString;
489
+ }, z.core.$strip>;
490
490
  metadata: {
491
491
  openapi: {
492
492
  description: string;
@@ -550,9 +550,9 @@ declare const phoneNumber: (options?: PhoneNumberOptions) => {
550
550
  }>;
551
551
  options: {
552
552
  method: "POST";
553
- body: zod_v4.ZodObject<{
554
- phoneNumber: zod_v4.ZodString;
555
- }, zod_v4.core.$strip>;
553
+ body: z.ZodObject<{
554
+ phoneNumber: z.ZodString;
555
+ }, z.core.$strip>;
556
556
  metadata: {
557
557
  openapi: {
558
558
  description: string;
@@ -618,11 +618,11 @@ declare const phoneNumber: (options?: PhoneNumberOptions) => {
618
618
  }>;
619
619
  options: {
620
620
  method: "POST";
621
- body: zod_v4.ZodObject<{
622
- otp: zod_v4.ZodString;
623
- phoneNumber: zod_v4.ZodString;
624
- newPassword: zod_v4.ZodString;
625
- }, zod_v4.core.$strip>;
621
+ body: z.ZodObject<{
622
+ otp: z.ZodString;
623
+ phoneNumber: z.ZodString;
624
+ newPassword: z.ZodString;
625
+ }, z.core.$strip>;
626
626
  metadata: {
627
627
  openapi: {
628
628
  description: string;
@@ -1,5 +1,5 @@
1
1
  import * as z from 'zod/v4';
2
- import { j as createAuthEndpoint, k as getSessionFromCtx, B as BASE_ERROR_CODES } from '../../shared/better-auth.BOumacvv.mjs';
2
+ import { j as createAuthEndpoint, k as getSessionFromCtx, B as BASE_ERROR_CODES } from '../../shared/better-auth.D4HhkCZJ.mjs';
3
3
  import { APIError } from 'better-call';
4
4
  import { m as mergeSchema } from '../../shared/better-auth.n2KFGwjY.mjs';
5
5
  import { g as generateRandomString } from '../../shared/better-auth.B4Qoxdgc.mjs';
@@ -0,0 +1,297 @@
1
+ 'use strict';
2
+
3
+ const betterCall = require('better-call');
4
+ const socialProviders_index = require('../../shared/better-auth.CU2ZnFFo.cjs');
5
+ require('zod/v4');
6
+ const cookies_index = require('../../cookies/index.cjs');
7
+ require('../../shared/better-auth.BIMq4RPW.cjs');
8
+ require('../../shared/better-auth.DiSjtgs9.cjs');
9
+ require('../../shared/better-auth.CXhVNgXP.cjs');
10
+ require('defu');
11
+ const zod = require('zod');
12
+ const url = require('../../shared/better-auth.C-R0J0n1.cjs');
13
+ const sha3 = require('@noble/hashes/sha3');
14
+ require('../../shared/better-auth.C1hdVENX.cjs');
15
+ require('@better-auth/utils/hash');
16
+ require('@better-auth/utils/base64');
17
+ require('../../crypto/index.cjs');
18
+ require('@noble/ciphers/chacha');
19
+ require('@noble/ciphers/utils');
20
+ require('@noble/ciphers/webcrypto');
21
+ require('jose');
22
+ require('@noble/hashes/scrypt');
23
+ require('@better-auth/utils');
24
+ require('@better-auth/utils/hex');
25
+ require('@noble/hashes/utils');
26
+ require('../../shared/better-auth.CYeOI8C-.cjs');
27
+ require('@better-auth/utils/random');
28
+ require('@better-fetch/fetch');
29
+ require('../../shared/better-auth.D3mtHEZg.cjs');
30
+ require('@better-auth/utils/hmac');
31
+ require('@better-auth/utils/binary');
32
+ require('jose/errors');
33
+ require('../../shared/better-auth.ANpbi45u.cjs');
34
+
35
+ const schema = {
36
+ walletAddress: {
37
+ fields: {
38
+ userId: {
39
+ type: "string",
40
+ references: {
41
+ model: "user",
42
+ field: "id"
43
+ },
44
+ required: true
45
+ },
46
+ address: {
47
+ type: "string",
48
+ required: true
49
+ },
50
+ chainId: {
51
+ type: "number",
52
+ required: true
53
+ },
54
+ isPrimary: {
55
+ type: "boolean",
56
+ defaultValue: false
57
+ },
58
+ createdAt: {
59
+ type: "date",
60
+ required: true
61
+ }
62
+ }
63
+ }
64
+ };
65
+
66
+ function toChecksumAddress(address) {
67
+ address = address.toLowerCase().replace("0x", "");
68
+ const hash = [...sha3.keccak_256(address)].map((v) => v.toString(16).padStart(2, "0")).join("");
69
+ let ret = "0x";
70
+ for (let i = 0; i < 40; i++) {
71
+ if (parseInt(hash[i], 16) >= 8) {
72
+ ret += address[i].toUpperCase();
73
+ } else {
74
+ ret += address[i];
75
+ }
76
+ }
77
+ return ret;
78
+ }
79
+
80
+ const siwe = (options) => ({
81
+ id: "siwe",
82
+ schema,
83
+ endpoints: {
84
+ getSiweNonce: socialProviders_index.createAuthEndpoint(
85
+ "/siwe/nonce",
86
+ {
87
+ method: "POST",
88
+ body: zod.z.object({
89
+ walletAddress: zod.z.string().regex(/^0[xX][a-fA-F0-9]{40}$/i).length(42),
90
+ chainId: zod.z.number().int().positive().max(2147483647).optional().default(1)
91
+ // Default to Ethereum mainnet
92
+ })
93
+ },
94
+ async (ctx) => {
95
+ const { walletAddress: rawWalletAddress, chainId } = ctx.body;
96
+ const walletAddress = toChecksumAddress(rawWalletAddress);
97
+ const nonce = await options.getNonce();
98
+ await ctx.context.internalAdapter.createVerificationValue({
99
+ identifier: `siwe:${walletAddress}:${chainId}`,
100
+ value: nonce,
101
+ expiresAt: new Date(Date.now() + 15 * 60 * 1e3)
102
+ });
103
+ return ctx.json({ nonce });
104
+ }
105
+ ),
106
+ verifySiweMessage: socialProviders_index.createAuthEndpoint(
107
+ "/siwe/verify",
108
+ {
109
+ method: "POST",
110
+ body: zod.z.object({
111
+ message: zod.z.string().min(1),
112
+ signature: zod.z.string().min(1),
113
+ walletAddress: zod.z.string().regex(/^0[xX][a-fA-F0-9]{40}$/i).length(42),
114
+ chainId: zod.z.number().int().positive().max(2147483647).optional().default(1),
115
+ email: zod.z.string().email().optional()
116
+ }).refine((data) => options.anonymous !== false || !!data.email, {
117
+ message: "Email is required when the anonymous plugin option is disabled.",
118
+ path: ["email"]
119
+ }),
120
+ requireRequest: true
121
+ },
122
+ async (ctx) => {
123
+ const {
124
+ message,
125
+ signature,
126
+ walletAddress: rawWalletAddress,
127
+ chainId,
128
+ email
129
+ } = ctx.body;
130
+ const walletAddress = toChecksumAddress(rawWalletAddress);
131
+ const isAnon = options.anonymous ?? true;
132
+ if (!isAnon && !email) {
133
+ throw new betterCall.APIError("BAD_REQUEST", {
134
+ message: "Email is required when anonymous is disabled.",
135
+ status: 400
136
+ });
137
+ }
138
+ try {
139
+ const verification = await ctx.context.internalAdapter.findVerificationValue(
140
+ `siwe:${walletAddress}:${chainId}`
141
+ );
142
+ if (!verification || /* @__PURE__ */ new Date() > verification.expiresAt) {
143
+ throw new betterCall.APIError("UNAUTHORIZED", {
144
+ message: "Unauthorized: Invalid or expired nonce",
145
+ status: 401,
146
+ code: "UNAUTHORIZED_INVALID_OR_EXPIRED_NONCE"
147
+ });
148
+ }
149
+ const { value: nonce } = verification;
150
+ const verified = await options.verifyMessage({
151
+ message,
152
+ signature,
153
+ address: walletAddress,
154
+ chainId,
155
+ cacao: {
156
+ h: { t: "caip122" },
157
+ p: {
158
+ domain: options.domain,
159
+ aud: options.domain,
160
+ nonce,
161
+ iss: options.domain,
162
+ version: "1"
163
+ },
164
+ s: { t: "eip191", s: signature }
165
+ }
166
+ });
167
+ if (!verified) {
168
+ throw new betterCall.APIError("UNAUTHORIZED", {
169
+ message: "Unauthorized: Invalid SIWE signature",
170
+ status: 401
171
+ });
172
+ }
173
+ await ctx.context.internalAdapter.deleteVerificationValue(
174
+ verification.id
175
+ );
176
+ let user = null;
177
+ const existingWalletAddress = await ctx.context.adapter.findOne({
178
+ model: "walletAddress",
179
+ where: [
180
+ { field: "address", operator: "eq", value: walletAddress },
181
+ { field: "chainId", operator: "eq", value: chainId }
182
+ ]
183
+ });
184
+ if (existingWalletAddress) {
185
+ user = await ctx.context.adapter.findOne({
186
+ model: "user",
187
+ where: [
188
+ {
189
+ field: "id",
190
+ operator: "eq",
191
+ value: existingWalletAddress.userId
192
+ }
193
+ ]
194
+ });
195
+ } else {
196
+ const anyWalletAddress = await ctx.context.adapter.findOne({
197
+ model: "walletAddress",
198
+ where: [
199
+ { field: "address", operator: "eq", value: walletAddress }
200
+ ]
201
+ });
202
+ if (anyWalletAddress) {
203
+ user = await ctx.context.adapter.findOne({
204
+ model: "user",
205
+ where: [
206
+ {
207
+ field: "id",
208
+ operator: "eq",
209
+ value: anyWalletAddress.userId
210
+ }
211
+ ]
212
+ });
213
+ }
214
+ }
215
+ if (!user) {
216
+ const domain = options.emailDomainName ?? url.getOrigin(ctx.context.baseURL);
217
+ const userEmail = !isAnon && email ? email : `${walletAddress}@${domain}`;
218
+ const { name, avatar } = await options.ensLookup?.({ walletAddress }) ?? {};
219
+ user = await ctx.context.internalAdapter.createUser({
220
+ name: name ?? walletAddress,
221
+ email: userEmail,
222
+ image: avatar ?? ""
223
+ });
224
+ await ctx.context.adapter.create({
225
+ model: "walletAddress",
226
+ data: {
227
+ userId: user.id,
228
+ address: walletAddress,
229
+ chainId,
230
+ isPrimary: true,
231
+ // First address is primary
232
+ createdAt: /* @__PURE__ */ new Date()
233
+ }
234
+ });
235
+ await ctx.context.internalAdapter.createAccount({
236
+ userId: user.id,
237
+ providerId: "siwe",
238
+ accountId: `${walletAddress}:${chainId}`,
239
+ createdAt: /* @__PURE__ */ new Date(),
240
+ updatedAt: /* @__PURE__ */ new Date()
241
+ });
242
+ } else {
243
+ if (!existingWalletAddress) {
244
+ await ctx.context.adapter.create({
245
+ model: "walletAddress",
246
+ data: {
247
+ userId: user.id,
248
+ address: walletAddress,
249
+ chainId,
250
+ isPrimary: false,
251
+ // Additional addresses are not primary by default
252
+ createdAt: /* @__PURE__ */ new Date()
253
+ }
254
+ });
255
+ await ctx.context.internalAdapter.createAccount({
256
+ userId: user.id,
257
+ providerId: "siwe",
258
+ accountId: `${walletAddress}:${chainId}`,
259
+ createdAt: /* @__PURE__ */ new Date(),
260
+ updatedAt: /* @__PURE__ */ new Date()
261
+ });
262
+ }
263
+ }
264
+ const session = await ctx.context.internalAdapter.createSession(
265
+ user.id,
266
+ ctx
267
+ );
268
+ if (!session) {
269
+ throw new betterCall.APIError("INTERNAL_SERVER_ERROR", {
270
+ message: "Internal Server Error",
271
+ status: 500
272
+ });
273
+ }
274
+ await cookies_index.setSessionCookie(ctx, { session, user });
275
+ return ctx.json({
276
+ token: session.token,
277
+ success: true,
278
+ user: {
279
+ id: user.id,
280
+ walletAddress,
281
+ chainId
282
+ }
283
+ });
284
+ } catch (error) {
285
+ if (error instanceof betterCall.APIError) throw error;
286
+ throw new betterCall.APIError("UNAUTHORIZED", {
287
+ message: "Something went wrong. Please try again later.",
288
+ error: error instanceof Error ? error.message : "Unknown error",
289
+ status: 401
290
+ });
291
+ }
292
+ }
293
+ )
294
+ }
295
+ });
296
+
297
+ exports.siwe = siwe;
@@ -0,0 +1,195 @@
1
+ import * as better_call from 'better-call';
2
+ import { z } from 'zod';
3
+
4
+ interface CacaoHeader {
5
+ t: "caip122";
6
+ }
7
+ interface CacaoPayload {
8
+ domain: string;
9
+ aud: string;
10
+ nonce: string;
11
+ iss: string;
12
+ version?: string;
13
+ iat?: string;
14
+ nbf?: string;
15
+ exp?: string;
16
+ statement?: string;
17
+ requestId?: string;
18
+ resources?: string[];
19
+ type?: string;
20
+ }
21
+ interface Cacao {
22
+ h: CacaoHeader;
23
+ p: CacaoPayload;
24
+ s: {
25
+ t: "eip191" | "eip1271";
26
+ s: string;
27
+ m?: string;
28
+ };
29
+ }
30
+ interface SIWEVerifyMessageArgs {
31
+ message: string;
32
+ signature: string;
33
+ address: string;
34
+ chainId: number;
35
+ cacao?: Cacao;
36
+ }
37
+ interface ENSLookupArgs {
38
+ walletAddress: string;
39
+ }
40
+ interface ENSLookupResult {
41
+ name: string;
42
+ avatar: string;
43
+ }
44
+
45
+ interface SIWEPluginOptions {
46
+ domain: string;
47
+ emailDomainName?: string;
48
+ anonymous?: boolean;
49
+ getNonce: () => Promise<string>;
50
+ verifyMessage: (args: SIWEVerifyMessageArgs) => Promise<boolean>;
51
+ ensLookup?: (args: ENSLookupArgs) => Promise<ENSLookupResult>;
52
+ }
53
+ declare const siwe: (options: SIWEPluginOptions) => {
54
+ id: "siwe";
55
+ schema: {
56
+ walletAddress: {
57
+ fields: {
58
+ userId: {
59
+ type: "string";
60
+ references: {
61
+ model: string;
62
+ field: string;
63
+ };
64
+ required: true;
65
+ };
66
+ address: {
67
+ type: "string";
68
+ required: true;
69
+ };
70
+ chainId: {
71
+ type: "number";
72
+ required: true;
73
+ };
74
+ isPrimary: {
75
+ type: "boolean";
76
+ defaultValue: false;
77
+ };
78
+ createdAt: {
79
+ type: "date";
80
+ required: true;
81
+ };
82
+ };
83
+ };
84
+ };
85
+ endpoints: {
86
+ getSiweNonce: {
87
+ <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
88
+ body: {
89
+ walletAddress: string;
90
+ chainId?: number | undefined;
91
+ };
92
+ } & {
93
+ method?: "POST" | undefined;
94
+ } & {
95
+ query?: Record<string, any> | undefined;
96
+ } & {
97
+ params?: Record<string, any>;
98
+ } & {
99
+ request?: Request;
100
+ } & {
101
+ headers?: HeadersInit;
102
+ } & {
103
+ asResponse?: boolean;
104
+ returnHeaders?: boolean;
105
+ use?: better_call.Middleware[];
106
+ path?: string;
107
+ } & {
108
+ asResponse?: AsResponse | undefined;
109
+ returnHeaders?: ReturnHeaders | undefined;
110
+ }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
111
+ headers: Headers;
112
+ response: {
113
+ nonce: string;
114
+ };
115
+ } : {
116
+ nonce: string;
117
+ }>;
118
+ options: {
119
+ method: "POST";
120
+ body: z.ZodObject<{
121
+ walletAddress: z.ZodString;
122
+ chainId: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
123
+ }, z.core.$strip>;
124
+ } & {
125
+ use: any[];
126
+ };
127
+ path: "/siwe/nonce";
128
+ };
129
+ verifySiweMessage: {
130
+ <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
131
+ body: {
132
+ message: string;
133
+ signature: string;
134
+ walletAddress: string;
135
+ chainId?: number | undefined;
136
+ email?: string | undefined;
137
+ };
138
+ } & {
139
+ method?: "POST" | undefined;
140
+ } & {
141
+ query?: Record<string, any> | undefined;
142
+ } & {
143
+ params?: Record<string, any>;
144
+ } & {
145
+ request: Request;
146
+ } & {
147
+ headers?: HeadersInit;
148
+ } & {
149
+ asResponse?: boolean;
150
+ returnHeaders?: boolean;
151
+ use?: better_call.Middleware[];
152
+ path?: string;
153
+ } & {
154
+ asResponse?: AsResponse | undefined;
155
+ returnHeaders?: ReturnHeaders | undefined;
156
+ }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
157
+ headers: Headers;
158
+ response: {
159
+ token: string;
160
+ success: boolean;
161
+ user: {
162
+ id: string;
163
+ walletAddress: string;
164
+ chainId: number;
165
+ };
166
+ };
167
+ } : {
168
+ token: string;
169
+ success: boolean;
170
+ user: {
171
+ id: string;
172
+ walletAddress: string;
173
+ chainId: number;
174
+ };
175
+ }>;
176
+ options: {
177
+ method: "POST";
178
+ body: z.ZodObject<{
179
+ message: z.ZodString;
180
+ signature: z.ZodString;
181
+ walletAddress: z.ZodString;
182
+ chainId: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
183
+ email: z.ZodOptional<z.ZodString>;
184
+ }, z.core.$strip>;
185
+ requireRequest: true;
186
+ } & {
187
+ use: any[];
188
+ };
189
+ path: "/siwe/verify";
190
+ };
191
+ };
192
+ };
193
+
194
+ export { siwe };
195
+ export type { SIWEPluginOptions };