@gatwech/auth 1.0.0-beta.18

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 (422) hide show
  1. package/README.md +31 -0
  2. package/dist/access-BO2g7QVe.mjs +45 -0
  3. package/dist/access-C6O_osEz.mjs +79 -0
  4. package/dist/access-DT1f6l5k.mjs +51 -0
  5. package/dist/adapter-factory-BZ2Qiqpn.mjs +640 -0
  6. package/dist/adapters/drizzle-adapter/index.d.mts +47 -0
  7. package/dist/adapters/drizzle-adapter/index.mjs +208 -0
  8. package/dist/adapters/index.d.mts +132 -0
  9. package/dist/adapters/index.mjs +18 -0
  10. package/dist/adapters/kysely-adapter/index.d.mts +47 -0
  11. package/dist/adapters/kysely-adapter/index.mjs +11 -0
  12. package/dist/adapters/memory-adapter/index.d.mts +14 -0
  13. package/dist/adapters/memory-adapter/index.mjs +154 -0
  14. package/dist/adapters/mongodb-adapter/index.d.mts +35 -0
  15. package/dist/adapters/mongodb-adapter/index.mjs +315 -0
  16. package/dist/adapters/prisma-adapter/index.d.mts +34 -0
  17. package/dist/adapters/prisma-adapter/index.mjs +159 -0
  18. package/dist/adapters/test.d.mts +81 -0
  19. package/dist/adapters/test.mjs +793 -0
  20. package/dist/admin-Bcq53Nwj.mjs +743 -0
  21. package/dist/admin-DtfO1PLg.d.mts +1689 -0
  22. package/dist/anonymous-CRt1imBW.mjs +107 -0
  23. package/dist/api/index.d.mts +6 -0
  24. package/dist/api/index.mjs +17 -0
  25. package/dist/api-0pR_I-Nx.mjs +3139 -0
  26. package/dist/auth-CBUoBX6o.mjs +233 -0
  27. package/dist/bearer-Djf_awfo.mjs +63 -0
  28. package/dist/bun-sqlite-dialect-CeNvMaZz.mjs +155 -0
  29. package/dist/captcha-BqaMxlKC.mjs +178 -0
  30. package/dist/chunk-BK_LfMhE.mjs +40 -0
  31. package/dist/client/index.d.mts +186 -0
  32. package/dist/client/index.mjs +7 -0
  33. package/dist/client/plugins/index.d.mts +949 -0
  34. package/dist/client/plugins/index.mjs +539 -0
  35. package/dist/client/react/index.d.mts +179 -0
  36. package/dist/client/react/index.mjs +69 -0
  37. package/dist/client-BOX93C3d.d.mts +1250 -0
  38. package/dist/client-CNY0tn9g.d.mts +628 -0
  39. package/dist/client-CygJhqeB.mjs +29 -0
  40. package/dist/client-WiN43tAS.mjs +17 -0
  41. package/dist/client-aExCkfwm.mjs +30 -0
  42. package/dist/cookies/index.d.mts +7 -0
  43. package/dist/cookies/index.mjs +7 -0
  44. package/dist/cookies-cJObLwn1.mjs +597 -0
  45. package/dist/crypto/index.d.mts +44 -0
  46. package/dist/crypto/index.mjs +4 -0
  47. package/dist/crypto-Bb42eMrH.mjs +70 -0
  48. package/dist/custom-session-L3t7ecsd.mjs +67 -0
  49. package/dist/date-Cx2yCiC4.mjs +115 -0
  50. package/dist/db/index.d.mts +7 -0
  51. package/dist/db/index.mjs +15 -0
  52. package/dist/db-BrstmDhc.mjs +1124 -0
  53. package/dist/device-authorization-V4s3h4Mj.mjs +557 -0
  54. package/dist/dialect-CeddeGHf.mjs +72 -0
  55. package/dist/email-otp-BtDHSw14.mjs +592 -0
  56. package/dist/esm-C-QicDNz.mjs +4090 -0
  57. package/dist/generic-oauth-CL5X27ZI.mjs +445 -0
  58. package/dist/get-request-ip-DSjrEpGo.mjs +27 -0
  59. package/dist/get-tables-BQP7YW9c.mjs +249 -0
  60. package/dist/has-permission-BpAr7uCn.mjs +14 -0
  61. package/dist/haveibeenpwned-cMpJvmzI.mjs +43 -0
  62. package/dist/helper-tmxW3BHj.d.mts +21 -0
  63. package/dist/index-34ONrP8l.d.mts +503 -0
  64. package/dist/index-65G5U5DB-DSdjzreF.d.mts +2543 -0
  65. package/dist/index-B-XKqFvY.d.mts +30 -0
  66. package/dist/index-B3n8e37d.d.mts +165 -0
  67. package/dist/index-BBm8nQ9Q.d.mts +42 -0
  68. package/dist/index-BHoQlf7a.d.mts +7699 -0
  69. package/dist/index-BYMI9r_d.d.mts +257 -0
  70. package/dist/index-BqhKCbPH.d.mts +36 -0
  71. package/dist/index-Buhn3hkR.d.mts +433 -0
  72. package/dist/index-C-u1h_WX.d.mts +174 -0
  73. package/dist/index-C7fQuk-V.d.mts +41 -0
  74. package/dist/index-CM-CFWwr.d.mts +1919 -0
  75. package/dist/index-CuFzhoS6.d.mts +359 -0
  76. package/dist/index-Cxi7TbLE.d.mts +11347 -0
  77. package/dist/index-DB7t8whN.d.mts +1 -0
  78. package/dist/index-DKNNV1kb.d.mts +626 -0
  79. package/dist/index-DR0xXno9.d.mts +113 -0
  80. package/dist/index-D_k662QG.d.mts +833 -0
  81. package/dist/index-DaBcikv9.d.mts +118 -0
  82. package/dist/index-DlaMq1nb.d.mts +955 -0
  83. package/dist/index-DoXZYQpq.d.mts +290 -0
  84. package/dist/index-G6V0Z_Mn.d.mts +125 -0
  85. package/dist/index-z0KSvE5i.d.mts +246 -0
  86. package/dist/index-zjjNBRY2.d.mts +95 -0
  87. package/dist/index.d.mts +12 -0
  88. package/dist/index.mjs +33 -0
  89. package/dist/integrations/next-js.d.mts +21 -0
  90. package/dist/integrations/next-js.mjs +62 -0
  91. package/dist/integrations/node.d.mts +15 -0
  92. package/dist/integrations/node.mjs +15 -0
  93. package/dist/integrations/react-start.d.mts +15 -0
  94. package/dist/integrations/react-start.mjs +46 -0
  95. package/dist/json-D0TBLy4q.mjs +24 -0
  96. package/dist/jwt-CmxZAGe2.mjs +94 -0
  97. package/dist/jwt-lHV4QHpD.mjs +387 -0
  98. package/dist/kysely-adapter-DpzYO8Yf.mjs +181 -0
  99. package/dist/magic-link-Bk-ueorR.mjs +176 -0
  100. package/dist/misc-beA1w3XV.mjs +7 -0
  101. package/dist/multi-session-DRrLKrg9.mjs +144 -0
  102. package/dist/node-sqlite-dialect-BcKxBQnm.mjs +155 -0
  103. package/dist/oauth-proxy-D1sWh9B_.mjs +133 -0
  104. package/dist/oauth2/index.d.mts +60 -0
  105. package/dist/oauth2/index.mjs +19 -0
  106. package/dist/one-tap-DMswkTEc.mjs +113 -0
  107. package/dist/organization-BArHO_5v.mjs +3857 -0
  108. package/dist/parser-DcrIEuXE.mjs +73 -0
  109. package/dist/passkey-CcD4CnhM.mjs +558 -0
  110. package/dist/password-sVC4nePO.mjs +25 -0
  111. package/dist/permission-DLYUF3cW.mjs +15 -0
  112. package/dist/phone-number-rHDIlh-2.mjs +485 -0
  113. package/dist/plugin-helper-4L-lzsjZ.mjs +16 -0
  114. package/dist/plugins/access/index.d.mts +3 -0
  115. package/dist/plugins/access/index.mjs +3 -0
  116. package/dist/plugins/admin/access/index.d.mts +116 -0
  117. package/dist/plugins/admin/access/index.mjs +4 -0
  118. package/dist/plugins/admin/index.d.mts +9 -0
  119. package/dist/plugins/admin/index.mjs +22 -0
  120. package/dist/plugins/anonymous/index.d.mts +7 -0
  121. package/dist/plugins/anonymous/index.mjs +18 -0
  122. package/dist/plugins/bearer/index.d.mts +2 -0
  123. package/dist/plugins/bearer/index.mjs +8 -0
  124. package/dist/plugins/captcha/index.d.mts +2 -0
  125. package/dist/plugins/captcha/index.mjs +4 -0
  126. package/dist/plugins/custom-session/index.d.mts +7 -0
  127. package/dist/plugins/custom-session/index.mjs +19 -0
  128. package/dist/plugins/device-authorization/index.d.mts +4 -0
  129. package/dist/plugins/device-authorization/index.mjs +18 -0
  130. package/dist/plugins/email-otp/index.d.mts +3 -0
  131. package/dist/plugins/email-otp/index.mjs +19 -0
  132. package/dist/plugins/generic-oauth/index.d.mts +7 -0
  133. package/dist/plugins/generic-oauth/index.mjs +18 -0
  134. package/dist/plugins/haveibeenpwned/index.d.mts +2 -0
  135. package/dist/plugins/haveibeenpwned/index.mjs +18 -0
  136. package/dist/plugins/index.d.mts +139 -0
  137. package/dist/plugins/index.mjs +47 -0
  138. package/dist/plugins/jwt/index.d.mts +7 -0
  139. package/dist/plugins/jwt/index.mjs +18 -0
  140. package/dist/plugins/magic-link/index.d.mts +2 -0
  141. package/dist/plugins/magic-link/index.mjs +18 -0
  142. package/dist/plugins/multi-session/index.d.mts +3 -0
  143. package/dist/plugins/multi-session/index.mjs +18 -0
  144. package/dist/plugins/oauth-proxy/index.d.mts +2 -0
  145. package/dist/plugins/oauth-proxy/index.mjs +18 -0
  146. package/dist/plugins/one-tap/index.d.mts +2 -0
  147. package/dist/plugins/one-tap/index.mjs +18 -0
  148. package/dist/plugins/one-time-token/index.d.mts +7 -0
  149. package/dist/plugins/one-time-token/index.mjs +47 -0
  150. package/dist/plugins/organization/access/index.d.mts +4 -0
  151. package/dist/plugins/organization/access/index.mjs +4 -0
  152. package/dist/plugins/organization/index.d.mts +9 -0
  153. package/dist/plugins/organization/index.mjs +22 -0
  154. package/dist/plugins/passkey/index.d.mts +7 -0
  155. package/dist/plugins/passkey/index.mjs +18 -0
  156. package/dist/plugins/phone-number/index.d.mts +7 -0
  157. package/dist/plugins/phone-number/index.mjs +18 -0
  158. package/dist/plugins/two-factor/index.d.mts +7 -0
  159. package/dist/plugins/two-factor/index.mjs +20 -0
  160. package/dist/plugins/username/index.d.mts +4 -0
  161. package/dist/plugins/username/index.mjs +18 -0
  162. package/dist/plugins-3jfNste3.mjs +1544 -0
  163. package/dist/plugins-hFZT3hmK.d.mts +14 -0
  164. package/dist/promise-8rrEHRXd.mjs +23154 -0
  165. package/dist/proxy-CL9PZXJA.mjs +441 -0
  166. package/dist/session-Dgp133Yt.mjs +413 -0
  167. package/dist/social-providers/index.d.mts +1 -0
  168. package/dist/social-providers/index.mjs +3 -0
  169. package/dist/src/adapters/adapter-factory/index.d.ts +10 -0
  170. package/dist/src/adapters/adapter-factory/types.d.ts +124 -0
  171. package/dist/src/adapters/create-test-suite.d.ts +97 -0
  172. package/dist/src/adapters/drizzle-adapter/drizzle-adapter.d.ts +43 -0
  173. package/dist/src/adapters/drizzle-adapter/index.d.ts +1 -0
  174. package/dist/src/adapters/drizzle-adapter/test/generate-schema.d.ts +12 -0
  175. package/dist/src/adapters/index.d.ts +21 -0
  176. package/dist/src/adapters/kysely-adapter/bun-sqlite-dialect.d.ts +58 -0
  177. package/dist/src/adapters/kysely-adapter/dialect.d.ts +13 -0
  178. package/dist/src/adapters/kysely-adapter/index.d.ts +3 -0
  179. package/dist/src/adapters/kysely-adapter/kysely-adapter.d.ts +32 -0
  180. package/dist/src/adapters/kysely-adapter/node-sqlite-dialect.d.ts +58 -0
  181. package/dist/src/adapters/kysely-adapter/types.d.ts +1 -0
  182. package/dist/src/adapters/memory-adapter/index.d.ts +1 -0
  183. package/dist/src/adapters/memory-adapter/memory-adapter.d.ts +9 -0
  184. package/dist/src/adapters/mongodb-adapter/index.d.ts +1 -0
  185. package/dist/src/adapters/mongodb-adapter/mongodb-adapter.d.ts +31 -0
  186. package/dist/src/adapters/prisma-adapter/index.d.ts +1 -0
  187. package/dist/src/adapters/prisma-adapter/prisma-adapter.d.ts +32 -0
  188. package/dist/src/adapters/prisma-adapter/test/auth.d.ts +3 -0
  189. package/dist/src/adapters/prisma-adapter/test/generate-auth-config.d.ts +2 -0
  190. package/dist/src/adapters/prisma-adapter/test/generate-prisma-schema.d.ts +3 -0
  191. package/dist/src/adapters/prisma-adapter/test/get-prisma-client.d.ts +7 -0
  192. package/dist/src/adapters/prisma-adapter/test/push-prisma-schema.d.ts +1 -0
  193. package/dist/src/adapters/test-adapter.d.ts +61 -0
  194. package/dist/src/adapters/test.d.ts +78 -0
  195. package/dist/src/adapters/tests/auth-flow.d.ts +22 -0
  196. package/dist/src/adapters/tests/index.d.ts +5 -0
  197. package/dist/src/adapters/tests/normal.d.ts +87 -0
  198. package/dist/src/adapters/tests/number-id.d.ts +17 -0
  199. package/dist/src/adapters/tests/performance.d.ts +24 -0
  200. package/dist/src/adapters/tests/transactions.d.ts +20 -0
  201. package/dist/src/adapters/utils.d.ts +3 -0
  202. package/dist/src/api/index.d.ts +7150 -0
  203. package/dist/src/api/middlewares/index.d.ts +2 -0
  204. package/dist/src/api/middlewares/oauth.d.ts +15 -0
  205. package/dist/src/api/middlewares/origin-check.d.ts +8 -0
  206. package/dist/src/api/rate-limiter/index.d.ts +13 -0
  207. package/dist/src/api/routes/account.d.ts +623 -0
  208. package/dist/src/api/routes/callback.d.ts +68 -0
  209. package/dist/src/api/routes/email-verification.d.ts +266 -0
  210. package/dist/src/api/routes/error.d.ts +51 -0
  211. package/dist/src/api/routes/index.d.ts +11 -0
  212. package/dist/src/api/routes/ok.d.ts +61 -0
  213. package/dist/src/api/routes/reset-password.d.ts +203 -0
  214. package/dist/src/api/routes/session.d.ts +586 -0
  215. package/dist/src/api/routes/sign-in.d.ts +298 -0
  216. package/dist/src/api/routes/sign-out.d.ts +59 -0
  217. package/dist/src/api/routes/sign-up.d.ts +625 -0
  218. package/dist/src/api/routes/update-user.d.ts +862 -0
  219. package/dist/src/api/to-auth-endpoints.d.ts +3 -0
  220. package/dist/src/auth.d.ts +25 -0
  221. package/dist/src/client/broadcast-channel.d.ts +12 -0
  222. package/dist/src/client/config.d.ts +85 -0
  223. package/dist/src/client/fetch-plugins.d.ts +14 -0
  224. package/dist/src/client/index.d.ts +15 -0
  225. package/dist/src/client/parser.d.ts +12 -0
  226. package/dist/src/client/path-to-object.d.ts +63 -0
  227. package/dist/src/client/plugins/index.d.ts +21 -0
  228. package/dist/src/client/plugins/infer-plugin.d.ts +11 -0
  229. package/dist/src/client/proxy.d.ts +8 -0
  230. package/dist/src/client/query.d.ts +16 -0
  231. package/dist/src/client/react/index.d.ts +130 -0
  232. package/dist/src/client/react/react-store.d.ts +43 -0
  233. package/dist/src/client/session-atom.d.ts +18 -0
  234. package/dist/src/client/session-refresh.d.ts +17 -0
  235. package/dist/src/client/test-plugin.d.ts +147 -0
  236. package/dist/src/client/types.d.ts +49 -0
  237. package/dist/src/client/vanilla.d.ts +124 -0
  238. package/dist/src/cookies/check-cookies.d.ts +4 -0
  239. package/dist/src/cookies/cookie-utils.d.ts +16 -0
  240. package/dist/src/cookies/index.d.ts +56 -0
  241. package/dist/src/cookies/session-store.d.ts +43 -0
  242. package/dist/src/crypto/buffer.d.ts +4 -0
  243. package/dist/src/crypto/index.d.ts +14 -0
  244. package/dist/src/crypto/jwt.d.ts +4 -0
  245. package/dist/src/crypto/password.d.ts +5 -0
  246. package/dist/src/crypto/random.d.ts +1 -0
  247. package/dist/src/db/field.d.ts +97 -0
  248. package/dist/src/db/get-migration.d.ts +18 -0
  249. package/dist/src/db/get-schema.d.ts +6 -0
  250. package/dist/src/db/get-tables.d.ts +3 -0
  251. package/dist/src/db/index.d.ts +10 -0
  252. package/dist/src/db/internal-adapter.d.ts +9 -0
  253. package/dist/src/db/schema.d.ts +76 -0
  254. package/dist/src/db/to-zod.d.ts +31 -0
  255. package/dist/src/db/utils.d.ts +6 -0
  256. package/dist/src/db/with-hooks.d.ts +27 -0
  257. package/dist/src/index.d.ts +14 -0
  258. package/dist/src/init.d.ts +2 -0
  259. package/dist/src/integrations/next-js.d.ts +15 -0
  260. package/dist/src/integrations/node.d.ts +6 -0
  261. package/dist/src/integrations/react-start.d.ts +9 -0
  262. package/dist/src/oauth2/index.d.ts +4 -0
  263. package/dist/src/oauth2/link-account.d.ts +41 -0
  264. package/dist/src/oauth2/state.d.ts +21 -0
  265. package/dist/src/oauth2/utils.d.ts +3 -0
  266. package/dist/src/plugins/access/access.d.ts +25 -0
  267. package/dist/src/plugins/access/index.d.ts +2 -0
  268. package/dist/src/plugins/access/types.d.ts +14 -0
  269. package/dist/src/plugins/additional-fields/client.d.ts +91 -0
  270. package/dist/src/plugins/admin/access/index.d.ts +1 -0
  271. package/dist/src/plugins/admin/access/statement.d.ts +110 -0
  272. package/dist/src/plugins/admin/admin.d.ts +1570 -0
  273. package/dist/src/plugins/admin/client.d.ts +62 -0
  274. package/dist/src/plugins/admin/error-codes.d.ts +21 -0
  275. package/dist/src/plugins/admin/has-permission.d.ts +21 -0
  276. package/dist/src/plugins/admin/index.d.ts +2 -0
  277. package/dist/src/plugins/admin/schema.d.ts +36 -0
  278. package/dist/src/plugins/admin/types.d.ts +77 -0
  279. package/dist/src/plugins/anonymous/client.d.ts +8 -0
  280. package/dist/src/plugins/anonymous/index.d.ts +159 -0
  281. package/dist/src/plugins/api-key/client.d.ts +11 -0
  282. package/dist/src/plugins/api-key/index.d.ts +1431 -0
  283. package/dist/src/plugins/api-key/rate-limit.d.ts +20 -0
  284. package/dist/src/plugins/api-key/routes/create-api-key.d.ts +244 -0
  285. package/dist/src/plugins/api-key/routes/delete-all-expired-api-keys.d.ts +45 -0
  286. package/dist/src/plugins/api-key/routes/delete-api-key.d.ts +112 -0
  287. package/dist/src/plugins/api-key/routes/get-api-key.d.ts +234 -0
  288. package/dist/src/plugins/api-key/routes/index.d.ts +1136 -0
  289. package/dist/src/plugins/api-key/routes/list-api-keys.d.ts +231 -0
  290. package/dist/src/plugins/api-key/routes/update-api-key.d.ts +235 -0
  291. package/dist/src/plugins/api-key/routes/verify-api-key.d.ts +80 -0
  292. package/dist/src/plugins/api-key/schema.d.ts +188 -0
  293. package/dist/src/plugins/api-key/types.d.ts +285 -0
  294. package/dist/src/plugins/bearer/index.d.ts +31 -0
  295. package/dist/src/plugins/captcha/constants.d.ts +9 -0
  296. package/dist/src/plugins/captcha/error-codes.d.ts +9 -0
  297. package/dist/src/plugins/captcha/index.d.ts +7 -0
  298. package/dist/src/plugins/captcha/types.d.ts +23 -0
  299. package/dist/src/plugins/captcha/utils.d.ts +1 -0
  300. package/dist/src/plugins/captcha/verify-handlers/captchafox.d.ts +11 -0
  301. package/dist/src/plugins/captcha/verify-handlers/cloudflare-turnstile.d.ts +10 -0
  302. package/dist/src/plugins/captcha/verify-handlers/google-recaptcha.d.ts +11 -0
  303. package/dist/src/plugins/captcha/verify-handlers/h-captcha.d.ts +11 -0
  304. package/dist/src/plugins/captcha/verify-handlers/index.d.ts +4 -0
  305. package/dist/src/plugins/custom-session/client.d.ts +12 -0
  306. package/dist/src/plugins/custom-session/index.d.ts +89 -0
  307. package/dist/src/plugins/device-authorization/client.d.ts +12 -0
  308. package/dist/src/plugins/device-authorization/index.d.ts +568 -0
  309. package/dist/src/plugins/device-authorization/schema.d.ts +56 -0
  310. package/dist/src/plugins/email-otp/client.d.ts +9 -0
  311. package/dist/src/plugins/email-otp/index.d.ts +826 -0
  312. package/dist/src/plugins/email-otp/utils.d.ts +2 -0
  313. package/dist/src/plugins/generic-oauth/client.d.ts +5 -0
  314. package/dist/src/plugins/generic-oauth/index.d.ts +428 -0
  315. package/dist/src/plugins/haveibeenpwned/index.d.ts +25 -0
  316. package/dist/src/plugins/index.d.ts +28 -0
  317. package/dist/src/plugins/jwt/adapter.d.ts +8 -0
  318. package/dist/src/plugins/jwt/client.d.ts +5 -0
  319. package/dist/src/plugins/jwt/index.d.ts +276 -0
  320. package/dist/src/plugins/jwt/schema.d.ts +18 -0
  321. package/dist/src/plugins/jwt/sign.d.ts +8 -0
  322. package/dist/src/plugins/jwt/types.d.ts +175 -0
  323. package/dist/src/plugins/jwt/utils.d.ts +46 -0
  324. package/dist/src/plugins/last-login-method/client.d.ts +34 -0
  325. package/dist/src/plugins/last-login-method/index.d.ts +103 -0
  326. package/dist/src/plugins/magic-link/client.d.ts +5 -0
  327. package/dist/src/plugins/magic-link/index.d.ts +253 -0
  328. package/dist/src/plugins/magic-link/utils.d.ts +1 -0
  329. package/dist/src/plugins/multi-session/client.d.ts +9 -0
  330. package/dist/src/plugins/multi-session/index.d.ts +284 -0
  331. package/dist/src/plugins/oauth-proxy/index.d.ts +119 -0
  332. package/dist/src/plugins/one-tap/client.d.ts +81 -0
  333. package/dist/src/plugins/one-tap/index.d.ts +114 -0
  334. package/dist/src/plugins/one-time-token/client.d.ts +5 -0
  335. package/dist/src/plugins/one-time-token/index.d.ts +170 -0
  336. package/dist/src/plugins/one-time-token/utils.d.ts +1 -0
  337. package/dist/src/plugins/organization/access/index.d.ts +1 -0
  338. package/dist/src/plugins/organization/access/statement.d.ts +241 -0
  339. package/dist/src/plugins/organization/adapter.d.ts +685 -0
  340. package/dist/src/plugins/organization/call.d.ts +55 -0
  341. package/dist/src/plugins/organization/client.d.ts +344 -0
  342. package/dist/src/plugins/organization/error-codes.d.ts +58 -0
  343. package/dist/src/plugins/organization/has-permission.d.ts +13 -0
  344. package/dist/src/plugins/organization/index.d.ts +4 -0
  345. package/dist/src/plugins/organization/organization.d.ts +412 -0
  346. package/dist/src/plugins/organization/permission.d.ts +27 -0
  347. package/dist/src/plugins/organization/routes/crud-access-control.d.ts +701 -0
  348. package/dist/src/plugins/organization/routes/crud-invites.d.ts +1522 -0
  349. package/dist/src/plugins/organization/routes/crud-members.d.ts +1220 -0
  350. package/dist/src/plugins/organization/routes/crud-org.d.ts +1399 -0
  351. package/dist/src/plugins/organization/routes/crud-team.d.ts +1323 -0
  352. package/dist/src/plugins/organization/schema.d.ts +366 -0
  353. package/dist/src/plugins/organization/types.d.ts +737 -0
  354. package/dist/src/plugins/passkey/client.d.ts +190 -0
  355. package/dist/src/plugins/passkey/error-codes.d.ts +9 -0
  356. package/dist/src/plugins/passkey/index.d.ts +838 -0
  357. package/dist/src/plugins/passkey/schema.d.ts +50 -0
  358. package/dist/src/plugins/passkey/types.d.ts +69 -0
  359. package/dist/src/plugins/passkey/utils.d.ts +2 -0
  360. package/dist/src/plugins/phone-number/client.d.ts +9 -0
  361. package/dist/src/plugins/phone-number/index.d.ts +622 -0
  362. package/dist/src/plugins/phone-number/phone-number-error.d.ts +10 -0
  363. package/dist/src/plugins/two-factor/backup-codes/index.d.ts +387 -0
  364. package/dist/src/plugins/two-factor/client.d.ts +28 -0
  365. package/dist/src/plugins/two-factor/constant.d.ts +2 -0
  366. package/dist/src/plugins/two-factor/error-code.d.ts +11 -0
  367. package/dist/src/plugins/two-factor/index.d.ts +1014 -0
  368. package/dist/src/plugins/two-factor/otp/index.d.ts +282 -0
  369. package/dist/src/plugins/two-factor/schema.d.ts +35 -0
  370. package/dist/src/plugins/two-factor/totp/index.d.ts +298 -0
  371. package/dist/src/plugins/two-factor/types.d.ts +50 -0
  372. package/dist/src/plugins/two-factor/utils.d.ts +1 -0
  373. package/dist/src/plugins/two-factor/verify-two-factor.d.ts +59 -0
  374. package/dist/src/plugins/username/client.d.ts +5 -0
  375. package/dist/src/plugins/username/error-codes.d.ts +10 -0
  376. package/dist/src/plugins/username/index.d.ts +313 -0
  377. package/dist/src/plugins/username/schema.d.ts +27 -0
  378. package/dist/src/social-providers/index.d.ts +1 -0
  379. package/dist/src/test-utils/headers.d.ts +5 -0
  380. package/dist/src/test-utils/index.d.ts +2 -0
  381. package/dist/src/test-utils/test-instance.d.ts +17849 -0
  382. package/dist/src/types/adapter.d.ts +21 -0
  383. package/dist/src/types/api.d.ts +29 -0
  384. package/dist/src/types/helper.d.ts +32 -0
  385. package/dist/src/types/index.d.ts +7 -0
  386. package/dist/src/types/models.d.ts +13 -0
  387. package/dist/src/types/plugins.d.ts +14 -0
  388. package/dist/src/utils/await-object.d.ts +3 -0
  389. package/dist/src/utils/boolean.d.ts +1 -0
  390. package/dist/src/utils/clone.d.ts +1 -0
  391. package/dist/src/utils/constants.d.ts +1 -0
  392. package/dist/src/utils/date.d.ts +1 -0
  393. package/dist/src/utils/ensure-utc.d.ts +1 -0
  394. package/dist/src/utils/get-request-ip.d.ts +2 -0
  395. package/dist/src/utils/hashing.d.ts +6 -0
  396. package/dist/src/utils/hide-metadata.d.ts +3 -0
  397. package/dist/src/utils/id.d.ts +1 -0
  398. package/dist/src/utils/import-util.d.ts +1 -0
  399. package/dist/src/utils/index.d.ts +5 -0
  400. package/dist/src/utils/is-atom.d.ts +2 -0
  401. package/dist/src/utils/is-promise.d.ts +1 -0
  402. package/dist/src/utils/json.d.ts +1 -0
  403. package/dist/src/utils/merger.d.ts +1 -0
  404. package/dist/src/utils/middleware-response.d.ts +8 -0
  405. package/dist/src/utils/misc.d.ts +1 -0
  406. package/dist/src/utils/password.d.ts +6 -0
  407. package/dist/src/utils/plugin-helper.d.ts +5 -0
  408. package/dist/src/utils/shim.d.ts +3 -0
  409. package/dist/src/utils/time.d.ts +4 -0
  410. package/dist/src/utils/url.d.ts +4 -0
  411. package/dist/src/utils/wildcard.d.ts +45 -0
  412. package/dist/test-utils/index.d.mts +17870 -0
  413. package/dist/test-utils/index.mjs +272 -0
  414. package/dist/two-factor-ClUXxom2.mjs +914 -0
  415. package/dist/types/index.d.mts +6 -0
  416. package/dist/types/index.mjs +3 -0
  417. package/dist/types-B1OL7hyf.d.mts +4 -0
  418. package/dist/types-Bjn15Uy6.mjs +1 -0
  419. package/dist/url-VB2gAbTI.mjs +59 -0
  420. package/dist/username-DiGklOGl.mjs +278 -0
  421. package/dist/utils-SOMB4Px5.mjs +132 -0
  422. package/package.json +447 -0
@@ -0,0 +1,7 @@
1
+ import "../url-VB2gAbTI.mjs";
2
+ import "../json-D0TBLy4q.mjs";
3
+ import "../jwt-CmxZAGe2.mjs";
4
+ import { a as getSessionCookie, c as setSessionCookie, d as createSessionStore, f as getChunkedCookie, i as getCookies, l as parseSetCookieHeader, n as deleteSessionCookie, o as parseCookies, r as getCookieCache, s as setCookieCache, t as createCookieGetter, u as setCookieToHeader } from "../cookies-cJObLwn1.mjs";
5
+ import "../date-Cx2yCiC4.mjs";
6
+
7
+ export { createCookieGetter, createSessionStore, deleteSessionCookie, getChunkedCookie, getCookieCache, getCookies, getSessionCookie, parseCookies, parseSetCookieHeader, setCookieCache, setCookieToHeader, setSessionCookie };
@@ -0,0 +1,597 @@
1
+ import { t as getBaseURL } from "./url-VB2gAbTI.mjs";
2
+ import { t as safeJSONParse } from "./json-D0TBLy4q.mjs";
3
+ import { i as verifyJWT, n as symmetricDecodeJWT, r as symmetricEncodeJWT, t as signJWT } from "./jwt-CmxZAGe2.mjs";
4
+ import { t as getDate, u as parseUserOutput } from "./date-Cx2yCiC4.mjs";
5
+ import { env, isProduction } from "@gatwech/core/env";
6
+ import { PayvoAuthError } from "@gatwech/core/error";
7
+ import * as z$1 from "zod";
8
+ import { base64Url } from "@gatwech/utils/base64";
9
+ import { binary } from "@gatwech/utils/binary";
10
+ import { createHMAC } from "@gatwech/utils/hmac";
11
+
12
+ //#region ../../node_modules/.pnpm/ms@4.0.0-nightly.202508271359/node_modules/ms/dist/index.js
13
+ const s = 1e3;
14
+ const m = s * 60;
15
+ const h = m * 60;
16
+ const d = h * 24;
17
+ const w = d * 7;
18
+ const y = d * 365.25;
19
+ const mo = y / 12;
20
+ function ms(value, options) {
21
+ if (typeof value === "string") return parse(value);
22
+ else if (typeof value === "number") return format(value, options);
23
+ throw new Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(value)}`);
24
+ }
25
+ /**
26
+ * Parse the given string and return milliseconds.
27
+ *
28
+ * @param str - A string to parse to milliseconds
29
+ * @returns The parsed value in milliseconds, or `NaN` if the string can't be
30
+ * parsed
31
+ */
32
+ function parse(str) {
33
+ if (typeof str !== "string" || str.length === 0 || str.length > 100) throw new Error(`Value provided to ms.parse() must be a string with length between 1 and 99. value=${JSON.stringify(str)}`);
34
+ const match = /^(?<value>-?\d*\.?\d+) *(?<unit>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)?$/i.exec(str);
35
+ if (!match?.groups) return NaN;
36
+ const { value, unit = "ms" } = match.groups;
37
+ const n = parseFloat(value);
38
+ const matchUnit = unit.toLowerCase();
39
+ /* istanbul ignore next - istanbul doesn't understand, but thankfully the TypeScript the exhaustiveness check in the default case keeps us type safe here */
40
+ switch (matchUnit) {
41
+ case "years":
42
+ case "year":
43
+ case "yrs":
44
+ case "yr":
45
+ case "y": return n * y;
46
+ case "months":
47
+ case "month":
48
+ case "mo": return n * mo;
49
+ case "weeks":
50
+ case "week":
51
+ case "w": return n * w;
52
+ case "days":
53
+ case "day":
54
+ case "d": return n * d;
55
+ case "hours":
56
+ case "hour":
57
+ case "hrs":
58
+ case "hr":
59
+ case "h": return n * h;
60
+ case "minutes":
61
+ case "minute":
62
+ case "mins":
63
+ case "min":
64
+ case "m": return n * m;
65
+ case "seconds":
66
+ case "second":
67
+ case "secs":
68
+ case "sec":
69
+ case "s": return n * s;
70
+ case "milliseconds":
71
+ case "millisecond":
72
+ case "msecs":
73
+ case "msec":
74
+ case "ms": return n;
75
+ default: throw new Error(`Unknown unit "${matchUnit}" provided to ms.parse(). value=${JSON.stringify(str)}`);
76
+ }
77
+ }
78
+ /**
79
+ * Short format for `ms`.
80
+ */
81
+ function fmtShort(ms$1) {
82
+ const msAbs = Math.abs(ms$1);
83
+ if (msAbs >= y) return `${Math.round(ms$1 / y)}y`;
84
+ if (msAbs >= mo) return `${Math.round(ms$1 / mo)}mo`;
85
+ if (msAbs >= w) return `${Math.round(ms$1 / w)}w`;
86
+ if (msAbs >= d) return `${Math.round(ms$1 / d)}d`;
87
+ if (msAbs >= h) return `${Math.round(ms$1 / h)}h`;
88
+ if (msAbs >= m) return `${Math.round(ms$1 / m)}m`;
89
+ if (msAbs >= s) return `${Math.round(ms$1 / s)}s`;
90
+ return `${ms$1}ms`;
91
+ }
92
+ /**
93
+ * Long format for `ms`.
94
+ */
95
+ function fmtLong(ms$1) {
96
+ const msAbs = Math.abs(ms$1);
97
+ if (msAbs >= y) return plural(ms$1, msAbs, y, "year");
98
+ if (msAbs >= mo) return plural(ms$1, msAbs, mo, "month");
99
+ if (msAbs >= w) return plural(ms$1, msAbs, w, "week");
100
+ if (msAbs >= d) return plural(ms$1, msAbs, d, "day");
101
+ if (msAbs >= h) return plural(ms$1, msAbs, h, "hour");
102
+ if (msAbs >= m) return plural(ms$1, msAbs, m, "minute");
103
+ if (msAbs >= s) return plural(ms$1, msAbs, s, "second");
104
+ return `${ms$1} ms`;
105
+ }
106
+ /**
107
+ * Format the given integer as a string.
108
+ *
109
+ * @param ms - milliseconds
110
+ * @param options - Options for the conversion
111
+ * @returns The formatted string
112
+ */
113
+ function format(ms$1, options) {
114
+ if (typeof ms$1 !== "number" || !Number.isFinite(ms$1)) throw new Error("Value provided to ms.format() must be of type number.");
115
+ return options?.long ? fmtLong(ms$1) : fmtShort(ms$1);
116
+ }
117
+ /**
118
+ * Pluralization helper.
119
+ */
120
+ function plural(ms$1, msAbs, n, name) {
121
+ const isPlural = msAbs >= n * 1.5;
122
+ return `${Math.round(ms$1 / n)} ${name}${isPlural ? "s" : ""}`;
123
+ }
124
+
125
+ //#endregion
126
+ //#region src/cookies/session-store.ts
127
+ const ALLOWED_COOKIE_SIZE = 4096;
128
+ const ESTIMATED_EMPTY_COOKIE_SIZE = 200;
129
+ const CHUNK_SIZE = ALLOWED_COOKIE_SIZE - ESTIMATED_EMPTY_COOKIE_SIZE;
130
+ /**
131
+ * Parse cookies from the request headers
132
+ */
133
+ function parseCookiesFromContext(ctx) {
134
+ const cookieHeader = ctx.headers?.get("cookie");
135
+ if (!cookieHeader) return {};
136
+ const cookies = {};
137
+ const pairs = cookieHeader.split("; ");
138
+ for (const pair of pairs) {
139
+ const [name, ...valueParts] = pair.split("=");
140
+ if (name && valueParts.length > 0) cookies[name] = valueParts.join("=");
141
+ }
142
+ return cookies;
143
+ }
144
+ /**
145
+ * Extract the chunk index from a cookie name
146
+ */
147
+ function getChunkIndex(cookieName) {
148
+ const parts = cookieName.split(".");
149
+ const lastPart = parts[parts.length - 1];
150
+ const index = parseInt(lastPart || "0", 10);
151
+ return isNaN(index) ? 0 : index;
152
+ }
153
+ /**
154
+ * Read all existing chunks from cookies
155
+ */
156
+ function readExistingChunks(cookieName, ctx) {
157
+ const chunks = {};
158
+ const cookies = parseCookiesFromContext(ctx);
159
+ for (const [name, value] of Object.entries(cookies)) if (name.startsWith(cookieName)) chunks[name] = value;
160
+ return chunks;
161
+ }
162
+ /**
163
+ * Get the full session data by joining all chunks
164
+ */
165
+ function joinChunks(chunks) {
166
+ return Object.keys(chunks).sort((a, b) => {
167
+ return getChunkIndex(a) - getChunkIndex(b);
168
+ }).map((key) => chunks[key]).join("");
169
+ }
170
+ /**
171
+ * Split a cookie value into chunks if needed
172
+ */
173
+ function chunkCookie(cookie, chunks, logger$1) {
174
+ const chunkCount = Math.ceil(cookie.value.length / CHUNK_SIZE);
175
+ if (chunkCount === 1) {
176
+ chunks[cookie.name] = cookie.value;
177
+ return [cookie];
178
+ }
179
+ const cookies = [];
180
+ for (let i = 0; i < chunkCount; i++) {
181
+ const name = `${cookie.name}.${i}`;
182
+ const start = i * CHUNK_SIZE;
183
+ const value = cookie.value.substring(start, start + CHUNK_SIZE);
184
+ cookies.push({
185
+ ...cookie,
186
+ name,
187
+ value
188
+ });
189
+ chunks[name] = value;
190
+ }
191
+ logger$1.debug("CHUNKING_SESSION_COOKIE", {
192
+ message: `Session cookie exceeds allowed ${ALLOWED_COOKIE_SIZE} bytes.`,
193
+ emptyCookieSize: ESTIMATED_EMPTY_COOKIE_SIZE,
194
+ valueSize: cookie.value.length,
195
+ chunkCount,
196
+ chunks: cookies.map((c) => c.value.length + ESTIMATED_EMPTY_COOKIE_SIZE)
197
+ });
198
+ return cookies;
199
+ }
200
+ /**
201
+ * Get all cookies that should be cleaned (removed)
202
+ */
203
+ function getCleanCookies(chunks, cookieOptions) {
204
+ const cleanedChunks = {};
205
+ for (const name in chunks) cleanedChunks[name] = {
206
+ name,
207
+ value: "",
208
+ options: {
209
+ ...cookieOptions,
210
+ maxAge: 0
211
+ }
212
+ };
213
+ return cleanedChunks;
214
+ }
215
+ /**
216
+ * Create a session store for handling cookie chunking.
217
+ * When session data exceeds 4KB, it automatically splits it into multiple cookies.
218
+ *
219
+ * Based on next-auth's SessionStore implementation.
220
+ * @see https://github.com/nextauthjs/next-auth/blob/27b2519b84b8eb9cf053775dea29d577d2aa0098/packages/next-auth/src/core/lib/cookie.ts
221
+ */
222
+ function createSessionStore(cookieName, cookieOptions, ctx) {
223
+ const chunks = readExistingChunks(cookieName, ctx);
224
+ const logger$1 = ctx.context.logger;
225
+ return {
226
+ getValue() {
227
+ return joinChunks(chunks);
228
+ },
229
+ hasChunks() {
230
+ return Object.keys(chunks).length > 0;
231
+ },
232
+ chunk(value, options) {
233
+ const cleanedChunks = getCleanCookies(chunks, cookieOptions);
234
+ for (const name in chunks) delete chunks[name];
235
+ const cookies = cleanedChunks;
236
+ const chunked = chunkCookie({
237
+ name: cookieName,
238
+ value,
239
+ options: {
240
+ ...cookieOptions,
241
+ ...options
242
+ }
243
+ }, chunks, logger$1);
244
+ for (const chunk of chunked) cookies[chunk.name] = chunk;
245
+ return Object.values(cookies);
246
+ },
247
+ clean() {
248
+ const cleanedChunks = getCleanCookies(chunks, cookieOptions);
249
+ for (const name in chunks) delete chunks[name];
250
+ return Object.values(cleanedChunks);
251
+ },
252
+ setCookies(cookies) {
253
+ for (const cookie of cookies) ctx.setCookie(cookie.name, cookie.value, cookie.options);
254
+ }
255
+ };
256
+ }
257
+ function getChunkedCookie(ctx, cookieName) {
258
+ const value = ctx.getCookie(cookieName);
259
+ if (value) return value;
260
+ const chunks = [];
261
+ const cookieHeader = ctx.headers?.get("cookie");
262
+ if (!cookieHeader) return null;
263
+ const cookies = {};
264
+ const pairs = cookieHeader.split("; ");
265
+ for (const pair of pairs) {
266
+ const [name, ...valueParts] = pair.split("=");
267
+ if (name && valueParts.length > 0) cookies[name] = valueParts.join("=");
268
+ }
269
+ for (const [name, val] of Object.entries(cookies)) if (name.startsWith(cookieName + ".")) {
270
+ const indexStr = name.split(".").at(-1);
271
+ const index = parseInt(indexStr || "0", 10);
272
+ if (!isNaN(index)) chunks.push({
273
+ index,
274
+ value: val
275
+ });
276
+ }
277
+ if (chunks.length > 0) {
278
+ chunks.sort((a, b) => a.index - b.index);
279
+ return chunks.map((c) => c.value).join("");
280
+ }
281
+ return null;
282
+ }
283
+ const getSessionQuerySchema = z$1.optional(z$1.object({
284
+ disableCookieCache: z$1.coerce.boolean().meta({ description: "Disable cookie cache and fetch session from database" }).optional(),
285
+ disableRefresh: z$1.coerce.boolean().meta({ description: "Disable session refresh. Useful for checking session status, without updating the session" }).optional()
286
+ }));
287
+
288
+ //#endregion
289
+ //#region src/cookies/cookie-utils.ts
290
+ function parseSetCookieHeader(setCookie) {
291
+ const cookies = /* @__PURE__ */ new Map();
292
+ setCookie.split(", ").forEach((cookieString) => {
293
+ const [nameValue, ...attributes] = cookieString.split(";").map((part) => part.trim());
294
+ const [name, ...valueParts] = (nameValue || "").split("=");
295
+ const value = valueParts.join("=");
296
+ if (!name || value === void 0) return;
297
+ const attrObj = { value };
298
+ attributes.forEach((attribute) => {
299
+ const [attrName, ...attrValueParts] = attribute.split("=");
300
+ const attrValue = attrValueParts.join("=");
301
+ const normalizedAttrName = attrName.trim().toLowerCase();
302
+ switch (normalizedAttrName) {
303
+ case "max-age":
304
+ attrObj["max-age"] = attrValue ? parseInt(attrValue.trim(), 10) : void 0;
305
+ break;
306
+ case "expires":
307
+ attrObj.expires = attrValue ? new Date(attrValue.trim()) : void 0;
308
+ break;
309
+ case "domain":
310
+ attrObj.domain = attrValue ? attrValue.trim() : void 0;
311
+ break;
312
+ case "path":
313
+ attrObj.path = attrValue ? attrValue.trim() : void 0;
314
+ break;
315
+ case "secure":
316
+ attrObj.secure = true;
317
+ break;
318
+ case "httponly":
319
+ attrObj.httponly = true;
320
+ break;
321
+ case "samesite":
322
+ attrObj.samesite = attrValue ? attrValue.trim().toLowerCase() : void 0;
323
+ break;
324
+ default:
325
+ attrObj[normalizedAttrName] = attrValue ? attrValue.trim() : true;
326
+ break;
327
+ }
328
+ });
329
+ cookies.set(name, attrObj);
330
+ });
331
+ return cookies;
332
+ }
333
+ function setCookieToHeader(headers) {
334
+ return (context) => {
335
+ const setCookieHeader = context.response.headers.get("set-cookie");
336
+ if (!setCookieHeader) return;
337
+ const cookieMap = /* @__PURE__ */ new Map();
338
+ (headers.get("cookie") || "").split(";").forEach((cookie) => {
339
+ const [name, ...rest] = cookie.trim().split("=");
340
+ if (name && rest.length > 0) cookieMap.set(name, rest.join("="));
341
+ });
342
+ setCookieHeader.split(",").forEach((header) => {
343
+ parseSetCookieHeader(header).forEach((value, name) => {
344
+ cookieMap.set(name, value.value);
345
+ });
346
+ });
347
+ const updatedCookies = Array.from(cookieMap.entries()).map(([name, value]) => `${name}=${value}`).join("; ");
348
+ headers.set("cookie", updatedCookies);
349
+ };
350
+ }
351
+
352
+ //#endregion
353
+ //#region src/cookies/index.ts
354
+ function createCookieGetter(options) {
355
+ const secureCookiePrefix = (options.advanced?.useSecureCookies !== void 0 ? options.advanced?.useSecureCookies : options.baseURL !== void 0 ? options.baseURL.startsWith("https://") ? true : false : isProduction) ? "__Secure-" : "";
356
+ const crossSubdomainEnabled = !!options.advanced?.crossSubDomainCookies?.enabled;
357
+ const domain = crossSubdomainEnabled ? options.advanced?.crossSubDomainCookies?.domain || (options.baseURL ? new URL(options.baseURL).hostname : void 0) : void 0;
358
+ if (crossSubdomainEnabled && !domain) throw new PayvoAuthError("baseURL is required when crossSubdomainCookies are enabled");
359
+ function createCookie(cookieName, overrideAttributes = {}) {
360
+ const prefix = options.advanced?.cookiePrefix || "payvo-auth";
361
+ const name = options.advanced?.cookies?.[cookieName]?.name || `${prefix}.${cookieName}`;
362
+ const attributes = options.advanced?.cookies?.[cookieName]?.attributes;
363
+ return {
364
+ name: `${secureCookiePrefix}${name}`,
365
+ attributes: {
366
+ secure: !!secureCookiePrefix,
367
+ sameSite: "lax",
368
+ path: "/",
369
+ httpOnly: true,
370
+ ...crossSubdomainEnabled ? { domain } : {},
371
+ ...options.advanced?.defaultCookieAttributes,
372
+ ...overrideAttributes,
373
+ ...attributes
374
+ }
375
+ };
376
+ }
377
+ return createCookie;
378
+ }
379
+ function getCookies(options) {
380
+ const createCookie = createCookieGetter(options);
381
+ const sessionToken = createCookie("session_token", { maxAge: options.session?.expiresIn || ms("7d") / 1e3 });
382
+ const sessionData = createCookie("session_data", { maxAge: options.session?.cookieCache?.maxAge || 300 });
383
+ const dontRememberToken = createCookie("dont_remember");
384
+ return {
385
+ sessionToken: {
386
+ name: sessionToken.name,
387
+ options: sessionToken.attributes
388
+ },
389
+ sessionData: {
390
+ name: sessionData.name,
391
+ options: sessionData.attributes
392
+ },
393
+ dontRememberToken: {
394
+ name: dontRememberToken.name,
395
+ options: dontRememberToken.attributes
396
+ }
397
+ };
398
+ }
399
+ async function setCookieCache(ctx, session, dontRememberMe) {
400
+ if (ctx.context.options.session?.cookieCache?.enabled) {
401
+ const filteredSession = Object.entries(session.session).reduce((acc, [key, value]) => {
402
+ const fieldConfig = ctx.context.options.session?.additionalFields?.[key];
403
+ if (!fieldConfig || fieldConfig.returned !== false) acc[key] = value;
404
+ return acc;
405
+ }, {});
406
+ const filteredUser = parseUserOutput(ctx.context.options, session.user);
407
+ const versionConfig = ctx.context.options.session?.cookieCache?.version;
408
+ let version = "1";
409
+ if (versionConfig) {
410
+ if (typeof versionConfig === "string") version = versionConfig;
411
+ else if (typeof versionConfig === "function") {
412
+ const result = versionConfig(session.session, session.user);
413
+ version = result instanceof Promise ? await result : result;
414
+ }
415
+ }
416
+ const sessionData = {
417
+ session: filteredSession,
418
+ user: filteredUser,
419
+ updatedAt: Date.now(),
420
+ version
421
+ };
422
+ const options = {
423
+ ...ctx.context.authCookies.sessionData.options,
424
+ maxAge: dontRememberMe ? void 0 : ctx.context.authCookies.sessionData.options.maxAge
425
+ };
426
+ const expiresAtDate = getDate(options.maxAge || 60, "sec").getTime();
427
+ const strategy = ctx.context.options.session?.cookieCache?.strategy || "compact";
428
+ let data;
429
+ if (strategy === "jwe") data = await symmetricEncodeJWT(sessionData, ctx.context.secret, "payvo-auth-session", options.maxAge || 300);
430
+ else if (strategy === "jwt") data = await signJWT(sessionData, ctx.context.secret, options.maxAge || 300);
431
+ else data = base64Url.encode(JSON.stringify({
432
+ session: sessionData,
433
+ expiresAt: expiresAtDate,
434
+ signature: await createHMAC("SHA-256", "base64urlnopad").sign(ctx.context.secret, JSON.stringify({
435
+ ...sessionData,
436
+ expiresAt: expiresAtDate
437
+ }))
438
+ }), { padding: false });
439
+ if (data.length > 4093) {
440
+ const sessionStore = createSessionStore(ctx.context.authCookies.sessionData.name, options, ctx);
441
+ const cookies = sessionStore.chunk(data, options);
442
+ sessionStore.setCookies(cookies);
443
+ } else {
444
+ const sessionStore = createSessionStore(ctx.context.authCookies.sessionData.name, options, ctx);
445
+ if (sessionStore.hasChunks()) {
446
+ const cleanCookies = sessionStore.clean();
447
+ sessionStore.setCookies(cleanCookies);
448
+ }
449
+ ctx.setCookie(ctx.context.authCookies.sessionData.name, data, options);
450
+ }
451
+ }
452
+ }
453
+ async function setSessionCookie(ctx, session, dontRememberMe, overrides) {
454
+ const dontRememberMeCookie = await ctx.getSignedCookie(ctx.context.authCookies.dontRememberToken.name, ctx.context.secret);
455
+ dontRememberMe = dontRememberMe !== void 0 ? dontRememberMe : !!dontRememberMeCookie;
456
+ const options = ctx.context.authCookies.sessionToken.options;
457
+ const maxAge = dontRememberMe ? void 0 : ctx.context.sessionConfig.expiresIn;
458
+ await ctx.setSignedCookie(ctx.context.authCookies.sessionToken.name, session.session.token, ctx.context.secret, {
459
+ ...options,
460
+ maxAge,
461
+ ...overrides
462
+ });
463
+ if (dontRememberMe) await ctx.setSignedCookie(ctx.context.authCookies.dontRememberToken.name, "true", ctx.context.secret, ctx.context.authCookies.dontRememberToken.options);
464
+ await setCookieCache(ctx, session, dontRememberMe);
465
+ ctx.context.setNewSession(session);
466
+ /**
467
+ * If secondary storage is enabled, store the session data in the secondary storage
468
+ * This is useful if the session got updated and we want to update the session data in the
469
+ * secondary storage
470
+ */
471
+ if (ctx.context.options.secondaryStorage) await ctx.context.secondaryStorage?.set(session.session.token, JSON.stringify({
472
+ user: session.user,
473
+ session: session.session
474
+ }), Math.floor((new Date(session.session.expiresAt).getTime() - Date.now()) / 1e3));
475
+ }
476
+ function deleteSessionCookie(ctx, skipDontRememberMe) {
477
+ ctx.setCookie(ctx.context.authCookies.sessionToken.name, "", {
478
+ ...ctx.context.authCookies.sessionToken.options,
479
+ maxAge: 0
480
+ });
481
+ const sessionStore = createSessionStore(ctx.context.authCookies.sessionData.name, ctx.context.authCookies.sessionData.options, ctx);
482
+ const cleanCookies = sessionStore.clean();
483
+ sessionStore.setCookies(cleanCookies);
484
+ if (!skipDontRememberMe) ctx.setCookie(ctx.context.authCookies.dontRememberToken.name, "", {
485
+ ...ctx.context.authCookies.dontRememberToken.options,
486
+ maxAge: 0
487
+ });
488
+ }
489
+ function parseCookies(cookieHeader) {
490
+ const cookies = cookieHeader.split("; ");
491
+ const cookieMap = /* @__PURE__ */ new Map();
492
+ cookies.forEach((cookie) => {
493
+ const [name, value] = cookie.split("=");
494
+ cookieMap.set(name, value);
495
+ });
496
+ return cookieMap;
497
+ }
498
+ const getSessionCookie = (request, config) => {
499
+ if (config?.cookiePrefix) if (config.cookieName) config.cookiePrefix = `${config.cookiePrefix}-`;
500
+ else config.cookiePrefix = `${config.cookiePrefix}.`;
501
+ const headers = "headers" in request ? request.headers : request;
502
+ const req = request instanceof Request ? request : void 0;
503
+ getBaseURL(req?.url, config?.path, req);
504
+ const cookies = headers.get("cookie");
505
+ if (!cookies) return null;
506
+ const { cookieName = "session_token", cookiePrefix = "payvo-auth." } = config || {};
507
+ const name = `${cookiePrefix}${cookieName}`;
508
+ const secureCookieName = `__Secure-${name}`;
509
+ const parsedCookie = parseCookies(cookies);
510
+ const sessionToken = parsedCookie.get(name) || parsedCookie.get(secureCookieName);
511
+ if (sessionToken) return sessionToken;
512
+ return null;
513
+ };
514
+ const getCookieCache = async (request, config) => {
515
+ const cookies = (request instanceof Headers ? request : request.headers).get("cookie");
516
+ if (!cookies) return null;
517
+ const { cookieName = "session_data", cookiePrefix = "payvo-auth" } = config || {};
518
+ const name = config?.isSecure !== void 0 ? config.isSecure ? `__Secure-${cookiePrefix}.${cookieName}` : `${cookiePrefix}.${cookieName}` : isProduction ? `__Secure-${cookiePrefix}.${cookieName}` : `${cookiePrefix}.${cookieName}`;
519
+ const parsedCookie = parseCookies(cookies);
520
+ let sessionData = parsedCookie.get(name);
521
+ if (!sessionData) {
522
+ const chunks = [];
523
+ for (const [cookieName$1, value] of parsedCookie.entries()) if (cookieName$1.startsWith(name + ".")) {
524
+ const parts = cookieName$1.split(".");
525
+ const indexStr = parts[parts.length - 1];
526
+ const index = parseInt(indexStr || "0", 10);
527
+ if (!isNaN(index)) chunks.push({
528
+ index,
529
+ value
530
+ });
531
+ }
532
+ if (chunks.length > 0) {
533
+ chunks.sort((a, b) => a.index - b.index);
534
+ sessionData = chunks.map((c) => c.value).join("");
535
+ }
536
+ }
537
+ if (sessionData) {
538
+ const secret = config?.secret || env.PAYVO_AUTH_SECRET;
539
+ if (!secret) throw new PayvoAuthError("getCookieCache requires a secret to be provided. Either pass it as an option or set the PAYVO_AUTH_SECRET environment variable");
540
+ const strategy = config?.strategy || "compact";
541
+ if (strategy === "jwe") {
542
+ const payload = await symmetricDecodeJWT(sessionData, secret, "payvo-auth-session");
543
+ if (payload && payload.session && payload.user) {
544
+ if (config?.version) {
545
+ const cookieVersion = payload.version || "1";
546
+ let expectedVersion = "1";
547
+ if (typeof config.version === "string") expectedVersion = config.version;
548
+ else if (typeof config.version === "function") {
549
+ const result = config.version(payload.session, payload.user);
550
+ expectedVersion = result instanceof Promise ? await result : result;
551
+ }
552
+ if (cookieVersion !== expectedVersion) return null;
553
+ }
554
+ return payload;
555
+ }
556
+ return null;
557
+ } else if (strategy === "jwt") {
558
+ const payload = await verifyJWT(sessionData, secret);
559
+ if (payload && payload.session && payload.user) {
560
+ if (config?.version) {
561
+ const cookieVersion = payload.version || "1";
562
+ let expectedVersion = "1";
563
+ if (typeof config.version === "string") expectedVersion = config.version;
564
+ else if (typeof config.version === "function") {
565
+ const result = config.version(payload.session, payload.user);
566
+ expectedVersion = result instanceof Promise ? await result : result;
567
+ }
568
+ if (cookieVersion !== expectedVersion) return null;
569
+ }
570
+ return payload;
571
+ }
572
+ return null;
573
+ } else {
574
+ const sessionDataPayload = safeJSONParse(binary.decode(base64Url.decode(sessionData)));
575
+ if (!sessionDataPayload) return null;
576
+ if (!await createHMAC("SHA-256", "base64urlnopad").verify(secret, JSON.stringify({
577
+ ...sessionDataPayload.session,
578
+ expiresAt: sessionDataPayload.expiresAt
579
+ }), sessionDataPayload.signature)) return null;
580
+ if (config?.version && sessionDataPayload.session) {
581
+ const cookieVersion = sessionDataPayload.session.version || "1";
582
+ let expectedVersion = "1";
583
+ if (typeof config.version === "string") expectedVersion = config.version;
584
+ else if (typeof config.version === "function") {
585
+ const result = config.version(sessionDataPayload.session.session, sessionDataPayload.session.user);
586
+ expectedVersion = result instanceof Promise ? await result : result;
587
+ }
588
+ if (cookieVersion !== expectedVersion) return null;
589
+ }
590
+ return sessionDataPayload.session;
591
+ }
592
+ }
593
+ return null;
594
+ };
595
+
596
+ //#endregion
597
+ export { getSessionCookie as a, setSessionCookie as c, createSessionStore as d, getChunkedCookie as f, getCookies as i, parseSetCookieHeader as l, ms as m, deleteSessionCookie as n, parseCookies as o, getSessionQuerySchema as p, getCookieCache as r, setCookieCache as s, createCookieGetter as t, setCookieToHeader as u };
@@ -0,0 +1,44 @@
1
+ //#region src/crypto/buffer.d.ts
2
+ /**
3
+ * Compare two buffers in constant time.
4
+ */
5
+ declare function constantTimeEqual(a: ArrayBuffer | Uint8Array, b: ArrayBuffer | Uint8Array): boolean;
6
+ //#endregion
7
+ //#region src/crypto/jwt.d.ts
8
+ declare function signJWT(payload: any, secret: string, expiresIn?: number): Promise<string>;
9
+ declare function verifyJWT<T = any>(token: string, secret: string): Promise<T | null>;
10
+ declare function symmetricEncodeJWT<T extends Record<string, any>>(payload: T, secret: string, salt: string, expiresIn?: number): Promise<string>;
11
+ declare function symmetricDecodeJWT<T = any>(token: string, secret: string, salt: string): Promise<T | null>;
12
+ //#endregion
13
+ //#region src/crypto/password.d.ts
14
+ declare const hashPassword: (password: string) => Promise<string>;
15
+ declare const verifyPassword: ({
16
+ hash,
17
+ password
18
+ }: {
19
+ hash: string;
20
+ password: string;
21
+ }) => Promise<boolean>;
22
+ //#endregion
23
+ //#region src/crypto/random.d.ts
24
+ declare const generateRandomString: <SubA extends "a-z" | "A-Z" | "0-9" | "-_">(length: number, ...alphabets: SubA[]) => string;
25
+ //#endregion
26
+ //#region src/crypto/index.d.ts
27
+ type SymmetricEncryptOptions = {
28
+ key: string;
29
+ data: string;
30
+ };
31
+ declare const symmetricEncrypt: ({
32
+ key,
33
+ data
34
+ }: SymmetricEncryptOptions) => Promise<string>;
35
+ type SymmetricDecryptOptions = {
36
+ key: string;
37
+ data: string;
38
+ };
39
+ declare const symmetricDecrypt: ({
40
+ key,
41
+ data
42
+ }: SymmetricDecryptOptions) => Promise<string>;
43
+ //#endregion
44
+ export { SymmetricDecryptOptions, SymmetricEncryptOptions, constantTimeEqual, generateRandomString, hashPassword, signJWT, symmetricDecodeJWT, symmetricDecrypt, symmetricEncodeJWT, symmetricEncrypt, verifyJWT, verifyPassword };
@@ -0,0 +1,4 @@
1
+ import { a as verifyPassword, i as hashPassword, n as symmetricEncrypt, o as constantTimeEqual, r as generateRandomString, t as symmetricDecrypt } from "../crypto-Bb42eMrH.mjs";
2
+ import { i as verifyJWT, n as symmetricDecodeJWT, r as symmetricEncodeJWT, t as signJWT } from "../jwt-CmxZAGe2.mjs";
3
+
4
+ export { constantTimeEqual, generateRandomString, hashPassword, signJWT, symmetricDecodeJWT, symmetricDecrypt, symmetricEncodeJWT, symmetricEncrypt, verifyJWT, verifyPassword };