@tempoxyz/id 0.0.0-stage → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1096) hide show
  1. package/README.md +121 -2
  2. package/dist/App.d.ts +121 -0
  3. package/dist/App.d.ts.map +1 -0
  4. package/dist/App.js +132 -0
  5. package/dist/App.js.map +1 -0
  6. package/dist/app/client/.assetsignore +2 -0
  7. package/dist/app/client/_headers +4 -0
  8. package/dist/app/client/assets/Account-BYLpNFf3.css +1 -0
  9. package/dist/app/client/assets/Account-BllJah07.js +1 -0
  10. package/dist/app/client/assets/Amount-E_7snI0-.js +1 -0
  11. package/dist/app/client/assets/Amount-ZdtluGf-.css +1 -0
  12. package/dist/app/client/assets/Approval-CgV5JHlb.css +1 -0
  13. package/dist/app/client/assets/Approval-yKflypU2.js +1 -0
  14. package/dist/app/client/assets/ArrowUp-CRvqfMNU.js +1 -0
  15. package/dist/app/client/assets/Authentication-BAXhOh_4.js +2 -0
  16. package/dist/app/client/assets/BRLA-CZvVDNYr.png +0 -0
  17. package/dist/app/client/assets/BRZ-Cn3jEi9t.svg +1 -0
  18. package/dist/app/client/assets/CHFAU-DCedc4aH.png +0 -0
  19. package/dist/app/client/assets/Callout-B736759d.js +1 -0
  20. package/dist/app/client/assets/Callout-DBfEmP7q.css +1 -0
  21. package/dist/app/client/assets/Check-DVgD8tDG.js +1 -0
  22. package/dist/app/client/assets/ChevronRight-CsXtIZCB.js +1 -0
  23. package/dist/app/client/assets/ChooseAccount-BjxfQjPK.js +1 -0
  24. package/dist/app/client/assets/ChooseAccount-DL3wgJhE.css +1 -0
  25. package/dist/app/client/assets/Client-JrABNovb.js +1 -0
  26. package/dist/app/client/assets/Close-CRvWlhqc.js +1 -0
  27. package/dist/app/client/assets/Cloud-DgJsrqpQ.js +1 -0
  28. package/dist/app/client/assets/CodeInput-79Ctx8ZA.js +1 -0
  29. package/dist/app/client/assets/CodeInput-BqRteSwD.css +1 -0
  30. package/dist/app/client/assets/DLUSD-BnRXm3EI.png +0 -0
  31. package/dist/app/client/assets/Deposit-CclrAoXL.css +1 -0
  32. package/dist/app/client/assets/Deposit-c7uYn2Eb.js +1 -0
  33. package/dist/app/client/assets/DevTools-BYkmtuV5.css +1 -0
  34. package/dist/app/client/assets/DevTools-BgnzDGo2.js +1 -0
  35. package/dist/app/client/assets/DeviceApproval-BBUVv58e.js +1 -0
  36. package/dist/app/client/assets/DeviceApproval-BffFLD8F.css +1 -0
  37. package/dist/app/client/assets/EURAU-sjieTTB9.svg +1 -0
  38. package/dist/app/client/assets/EURC.e-CxYiiwkz.svg +1 -0
  39. package/dist/app/client/assets/Fingerprint-BNCA6qOJ.js +1 -0
  40. package/dist/app/client/assets/GBPA-DI_25xSG.svg +4 -0
  41. package/dist/app/client/assets/GUSD-BDEP2Qb-.svg +1 -0
  42. package/dist/app/client/assets/GeistMono-Variable-BRXCGrxA.woff2 +0 -0
  43. package/dist/app/client/assets/Globe-f0eWzcEI.js +1 -0
  44. package/dist/app/client/assets/Grant-5a-n1gJH.css +1 -0
  45. package/dist/app/client/assets/Grant-Dp7mpcEi.js +1 -0
  46. package/dist/app/client/assets/Hex-C9KeV7_9.css +1 -0
  47. package/dist/app/client/assets/Hex-CSp2U46W.js +10 -0
  48. package/dist/app/client/assets/IconChip-DpZHa1JW.js +1 -0
  49. package/dist/app/client/assets/IconChip-yqaQ2y_d.css +1 -0
  50. package/dist/app/client/assets/InputGroup-BlZvt9In.css +1 -0
  51. package/dist/app/client/assets/InputGroup-CsOeBnpB.js +1 -0
  52. package/dist/app/client/assets/Inter-cyrillic-e3OmmzmJ.woff2 +0 -0
  53. package/dist/app/client/assets/Inter-cyrillic-ext-DOWZeO4Q.woff2 +0 -0
  54. package/dist/app/client/assets/Inter-greek-BD3ujQlX.woff2 +0 -0
  55. package/dist/app/client/assets/Inter-greek-ext-CXEwbus4.woff2 +0 -0
  56. package/dist/app/client/assets/Inter-latin-BDFm4vTb.woff2 +0 -0
  57. package/dist/app/client/assets/Inter-latin-ext-E7a9JEPe.woff2 +0 -0
  58. package/dist/app/client/assets/Inter-symbols-DEch7Rxr.woff2 +0 -0
  59. package/dist/app/client/assets/Inter-vietnamese-Bg9723vR.woff2 +0 -0
  60. package/dist/app/client/assets/Loader-Cm9YJNNJ.js +1 -0
  61. package/dist/app/client/assets/MACH-sK0r79kQ.svg +4 -0
  62. package/dist/app/client/assets/OUSD-BFXgVo-Z.svg +5 -0
  63. package/dist/app/client/assets/OUSD.dark-BbbjMvA1.svg +17 -0
  64. package/dist/app/client/assets/OUSD.light-B_zpSz_c.svg +17 -0
  65. package/dist/app/client/assets/PRIME-CiFp2-3e.svg +14 -0
  66. package/dist/app/client/assets/PopoverPopup-DprRXRQe.js +1 -0
  67. package/dist/app/client/assets/Rows-DPGTUdA8.css +1 -0
  68. package/dist/app/client/assets/Rows-Qqo3evtk.js +1 -0
  69. package/dist/app/client/assets/SBC-BTYkbkiD.svg +1 -0
  70. package/dist/app/client/assets/SEKAU-CB5Fc6o8.svg +5 -0
  71. package/dist/app/client/assets/Separator-CZUjVQOL.js +1 -0
  72. package/dist/app/client/assets/SignIn-HdaDzFmq.js +1 -0
  73. package/dist/app/client/assets/SignIn-mlBTwUq4.css +1 -0
  74. package/dist/app/client/assets/Stack-CkkvkOzj.js +1 -0
  75. package/dist/app/client/assets/Stack-D7Yt22Ed.css +1 -0
  76. package/dist/app/client/assets/Tag-BMh6ajrW.css +1 -0
  77. package/dist/app/client/assets/Tag-CLOVANTX.js +1 -0
  78. package/dist/app/client/assets/ToolbarRootContext-Zty_Dh3J.js +1 -0
  79. package/dist/app/client/assets/Tooltip-CLATV6YU.js +1 -0
  80. package/dist/app/client/assets/Tooltip-d3y9ESUJ.css +1 -0
  81. package/dist/app/client/assets/USD1-COVcO_PB.svg +30 -0
  82. package/dist/app/client/assets/USDB-Ckwb6UQw.svg +11 -0
  83. package/dist/app/client/assets/USDC.e-3nMsKAMC.svg +1 -0
  84. package/dist/app/client/assets/USDT0-ia60Dw0e.svg +1 -0
  85. package/dist/app/client/assets/USDY-CB4iet2q.svg +16 -0
  86. package/dist/app/client/assets/USDe-BXHQCd92.svg +1 -0
  87. package/dist/app/client/assets/Upgrade-D0_aO5AP.js +1 -0
  88. package/dist/app/client/assets/WalletUpgrade-BPsPNQsd.js +1 -0
  89. package/dist/app/client/assets/WalletUpgrade-C04kW0Jl.css +1 -0
  90. package/dist/app/client/assets/YLDS-CRh8Zw0g.svg +3 -0
  91. package/dist/app/client/assets/___-I98bns4o.css +1 -0
  92. package/dist/app/client/assets/___.flows-XOlLwMIy.js +5 -0
  93. package/dist/app/client/assets/alphaUSD-CpCFoVuh.svg +1 -0
  94. package/dist/app/client/assets/authorize-C-MlCyaM.js +1 -0
  95. package/dist/app/client/assets/betaUSD-9A8AjgYg.svg +1 -0
  96. package/dist/app/client/assets/cUSD-WsQfa-iC.svg +1 -0
  97. package/dist/app/client/assets/cbBTC-DvUDqrDi.svg +1 -0
  98. package/dist/app/client/assets/choose-account-nXR-SKa2.js +1 -0
  99. package/dist/app/client/assets/deposit-G8tiLPN4.js +1 -0
  100. package/dist/app/client/assets/device-BojBF7hZ.js +1 -0
  101. package/dist/app/client/assets/error-KiOpX7GD.js +1 -0
  102. package/dist/app/client/assets/frxUSD-n9pTpinR.svg +1 -0
  103. package/dist/app/client/assets/getPseudoElementBounds-BsLy4zf_.js +1 -0
  104. package/dist/app/client/assets/goUSD-D9kUvHsF.svg +5 -0
  105. package/dist/app/client/assets/iUSD-CWCJAq9X.svg +1 -0
  106. package/dist/app/client/assets/index-BZH0M7Nf.js +13 -0
  107. package/dist/app/client/assets/index-CIYxHmYA.css +1 -0
  108. package/dist/app/client/assets/login-DUjpk60p.js +1 -0
  109. package/dist/app/client/assets/pathUSD-BvaO6ooS.svg +25 -0
  110. package/dist/app/client/assets/preload-helper-Bs9KvdYl.js +1 -0
  111. package/dist/app/client/assets/rUSD-B-xuFS7T.svg +1 -0
  112. package/dist/app/client/assets/reUSD-CkIUs0Lx.svg +1 -0
  113. package/dist/app/client/assets/removable-DMiA3t_o.js +1 -0
  114. package/dist/app/client/assets/reset-co-CHrff.css +1 -0
  115. package/dist/app/client/assets/rolldown-runtime-WkwZ5CU-.js +1 -0
  116. package/dist/app/client/assets/routes-CK8cthzA.js +1 -0
  117. package/dist/app/client/assets/sUSDe-j9GOnH7I.svg +1 -0
  118. package/dist/app/client/assets/siUSD-C10QUNYS.svg +1 -0
  119. package/dist/app/client/assets/stcUSD-DIntDJeh.svg +1 -0
  120. package/dist/app/client/assets/syrupUSDC-DhYwZqdM.svg +5 -0
  121. package/dist/app/client/assets/thetaUSD-Dgmksf6G.svg +1 -0
  122. package/dist/app/client/assets/useNavigate-CB6S2u4J.js +1 -0
  123. package/dist/app/client/assets/useQuery-BpHfPhTT.js +1 -0
  124. package/dist/app/client/assets/useRegisterFieldControl-DsslqY-V.js +1 -0
  125. package/dist/app/client/assets/wYLDS-CaCKDrO-.svg +10 -0
  126. package/dist/app/client/assets/wsrUSD-B2Ey0bDQ.svg +1 -0
  127. package/dist/app/client/assets/zyzz-DYC-X0_B.css +1 -0
  128. package/dist/app/client/assets/zyzz.config-DX_D_7j3.js +2 -0
  129. package/dist/app/db/auth.d.ts +3412 -0
  130. package/dist/app/db/auth.d.ts.map +1 -0
  131. package/dist/app/db/auth.js +349 -0
  132. package/dist/app/db/auth.js.map +1 -0
  133. package/dist/app/db/schema.d.ts +1091 -0
  134. package/dist/app/db/schema.d.ts.map +1 -0
  135. package/dist/app/db/schema.js +183 -0
  136. package/dist/app/db/schema.js.map +1 -0
  137. package/dist/app/db/table.d.ts +8 -0
  138. package/dist/app/db/table.d.ts.map +1 -0
  139. package/dist/app/db/table.js +28 -0
  140. package/dist/app/db/table.js.map +1 -0
  141. package/dist/app/server/.vite/manifest.json +2093 -0
  142. package/dist/app/server/assets/Account-BYLpNFf3.css +1 -0
  143. package/dist/app/server/assets/Account-G_SUeRU3.js +2 -0
  144. package/dist/app/server/assets/Account-G_SUeRU3.js.map +1 -0
  145. package/dist/app/server/assets/Amount-Cgwdr3Xt.js +2 -0
  146. package/dist/app/server/assets/Amount-Cgwdr3Xt.js.map +1 -0
  147. package/dist/app/server/assets/Amount-ZdtluGf-.css +1 -0
  148. package/dist/app/server/assets/Approval-CgV5JHlb.css +1 -0
  149. package/dist/app/server/assets/Approval-DvkB9tWA.js +2 -0
  150. package/dist/app/server/assets/Approval-DvkB9tWA.js.map +1 -0
  151. package/dist/app/server/assets/ArrowUp-DpK_zNgZ.js +2 -0
  152. package/dist/app/server/assets/ArrowUp-DpK_zNgZ.js.map +1 -0
  153. package/dist/app/server/assets/Authentication-BOkhlNQu.js +2 -0
  154. package/dist/app/server/assets/Authentication-BOkhlNQu.js.map +1 -0
  155. package/dist/app/server/assets/Authentication-C3oNZAVX.js +2 -0
  156. package/dist/app/server/assets/Authentication-C3oNZAVX.js.map +1 -0
  157. package/dist/app/server/assets/BRLA-CZvVDNYr.png +0 -0
  158. package/dist/app/server/assets/BRZ-Cn3jEi9t.svg +1 -0
  159. package/dist/app/server/assets/Bytes-C7CRVS3J.js +4 -0
  160. package/dist/app/server/assets/Bytes-C7CRVS3J.js.map +1 -0
  161. package/dist/app/server/assets/CHFAU-DCedc4aH.png +0 -0
  162. package/dist/app/server/assets/Callout-DBfEmP7q.css +1 -0
  163. package/dist/app/server/assets/Callout-tQoAitWq.js +2 -0
  164. package/dist/app/server/assets/Callout-tQoAitWq.js.map +1 -0
  165. package/dist/app/server/assets/ChainList-C4A_7e-9.js +6 -0
  166. package/dist/app/server/assets/ChainList-C4A_7e-9.js.map +1 -0
  167. package/dist/app/server/assets/ChainName-BMnJyJrd.js +2 -0
  168. package/dist/app/server/assets/ChainName-BMnJyJrd.js.map +1 -0
  169. package/dist/app/server/assets/Check-DU_oR3Ev.js +2 -0
  170. package/dist/app/server/assets/Check-DU_oR3Ev.js.map +1 -0
  171. package/dist/app/server/assets/ChevronRight-DTBnw-W6.js +2 -0
  172. package/dist/app/server/assets/ChevronRight-DTBnw-W6.js.map +1 -0
  173. package/dist/app/server/assets/ChooseAccount-BizJvMrY.js +2 -0
  174. package/dist/app/server/assets/ChooseAccount-BizJvMrY.js.map +1 -0
  175. package/dist/app/server/assets/ChooseAccount-DL3wgJhE.css +1 -0
  176. package/dist/app/server/assets/Client-Dx3KrpJZ.js +2 -0
  177. package/dist/app/server/assets/Client-Dx3KrpJZ.js.map +1 -0
  178. package/dist/app/server/assets/ClientOnly-CKLiu67O.js +2 -0
  179. package/dist/app/server/assets/ClientOnly-CKLiu67O.js.map +1 -0
  180. package/dist/app/server/assets/Close-DUeE37ev.js +2 -0
  181. package/dist/app/server/assets/Close-DUeE37ev.js.map +1 -0
  182. package/dist/app/server/assets/Cloud-CLB3rTTy.js +2 -0
  183. package/dist/app/server/assets/Cloud-CLB3rTTy.js.map +1 -0
  184. package/dist/app/server/assets/CodeInput-BqRteSwD.css +1 -0
  185. package/dist/app/server/assets/CodeInput-FsPzVuLU.js +2 -0
  186. package/dist/app/server/assets/CodeInput-FsPzVuLU.js.map +1 -0
  187. package/dist/app/server/assets/Credential-DFjcrdyI.js +2 -0
  188. package/dist/app/server/assets/Credential-DFjcrdyI.js.map +1 -0
  189. package/dist/app/server/assets/DLUSD-BnRXm3EI.png +0 -0
  190. package/dist/app/server/assets/Deposit-CclrAoXL.css +1 -0
  191. package/dist/app/server/assets/Deposit-ChYGRfW2.js +2 -0
  192. package/dist/app/server/assets/Deposit-ChYGRfW2.js.map +1 -0
  193. package/dist/app/server/assets/DevTools-BYkmtuV5.css +1 -0
  194. package/dist/app/server/assets/DevTools-ZJVXqrIK.js +2 -0
  195. package/dist/app/server/assets/DevTools-ZJVXqrIK.js.map +1 -0
  196. package/dist/app/server/assets/DeviceApproval-BffFLD8F.css +1 -0
  197. package/dist/app/server/assets/DeviceApproval-Bqe3Mi78.js +2 -0
  198. package/dist/app/server/assets/DeviceApproval-Bqe3Mi78.js.map +1 -0
  199. package/dist/app/server/assets/EURAU-sjieTTB9.svg +1 -0
  200. package/dist/app/server/assets/EURC.e-CxYiiwkz.svg +1 -0
  201. package/dist/app/server/assets/ExecutionError-CDszGSF1.js +9 -0
  202. package/dist/app/server/assets/ExecutionError-CDszGSF1.js.map +1 -0
  203. package/dist/app/server/assets/Fingerprint-DhOPOdRr.js +2 -0
  204. package/dist/app/server/assets/Fingerprint-DhOPOdRr.js.map +1 -0
  205. package/dist/app/server/assets/GBPA-DI_25xSG.svg +4 -0
  206. package/dist/app/server/assets/GUSD-BDEP2Qb-.svg +1 -0
  207. package/dist/app/server/assets/GeistMono-Variable-BRXCGrxA.woff2 +0 -0
  208. package/dist/app/server/assets/Globe-2CxqxU-7.js +2 -0
  209. package/dist/app/server/assets/Globe-2CxqxU-7.js.map +1 -0
  210. package/dist/app/server/assets/Grant-5a-n1gJH.css +1 -0
  211. package/dist/app/server/assets/Grant-D_tun0mF.js +2 -0
  212. package/dist/app/server/assets/Grant-D_tun0mF.js.map +1 -0
  213. package/dist/app/server/assets/Hex-C9KeV7_9.css +1 -0
  214. package/dist/app/server/assets/Hex-Z6m_0Y0m.js +11 -0
  215. package/dist/app/server/assets/Hex-Z6m_0Y0m.js.map +1 -0
  216. package/dist/app/server/assets/IconChip-C9ZrmGB5.js +2 -0
  217. package/dist/app/server/assets/IconChip-C9ZrmGB5.js.map +1 -0
  218. package/dist/app/server/assets/IconChip-yqaQ2y_d.css +1 -0
  219. package/dist/app/server/assets/InputGroup-BlZvt9In.css +1 -0
  220. package/dist/app/server/assets/InputGroup-hpjuLuR7.js +2 -0
  221. package/dist/app/server/assets/InputGroup-hpjuLuR7.js.map +1 -0
  222. package/dist/app/server/assets/Inter-cyrillic-e3OmmzmJ.woff2 +0 -0
  223. package/dist/app/server/assets/Inter-cyrillic-ext-DOWZeO4Q.woff2 +0 -0
  224. package/dist/app/server/assets/Inter-greek-BD3ujQlX.woff2 +0 -0
  225. package/dist/app/server/assets/Inter-greek-ext-CXEwbus4.woff2 +0 -0
  226. package/dist/app/server/assets/Inter-latin-BDFm4vTb.woff2 +0 -0
  227. package/dist/app/server/assets/Inter-latin-ext-E7a9JEPe.woff2 +0 -0
  228. package/dist/app/server/assets/Inter-symbols-DEch7Rxr.woff2 +0 -0
  229. package/dist/app/server/assets/Inter-vietnamese-Bg9723vR.woff2 +0 -0
  230. package/dist/app/server/assets/Loader-DnKC9P5p.js +2 -0
  231. package/dist/app/server/assets/Loader-DnKC9P5p.js.map +1 -0
  232. package/dist/app/server/assets/MACH-sK0r79kQ.svg +4 -0
  233. package/dist/app/server/assets/Match-CyVdYcSf.js +2 -0
  234. package/dist/app/server/assets/Match-CyVdYcSf.js.map +1 -0
  235. package/dist/app/server/assets/OUSD-BFXgVo-Z.svg +5 -0
  236. package/dist/app/server/assets/OUSD.dark-BbbjMvA1.svg +17 -0
  237. package/dist/app/server/assets/OUSD.light-B_zpSz_c.svg +17 -0
  238. package/dist/app/server/assets/PRIME-CiFp2-3e.svg +14 -0
  239. package/dist/app/server/assets/PopoverPopup-CwqeQelI.js +2 -0
  240. package/dist/app/server/assets/PopoverPopup-CwqeQelI.js.map +1 -0
  241. package/dist/app/server/assets/Rows-CQKQwTI1.js +2 -0
  242. package/dist/app/server/assets/Rows-CQKQwTI1.js.map +1 -0
  243. package/dist/app/server/assets/Rows-DPGTUdA8.css +1 -0
  244. package/dist/app/server/assets/SBC-BTYkbkiD.svg +1 -0
  245. package/dist/app/server/assets/SEKAU-CB5Fc6o8.svg +5 -0
  246. package/dist/app/server/assets/Separator-DrI7KRAs.js +2 -0
  247. package/dist/app/server/assets/Separator-DrI7KRAs.js.map +1 -0
  248. package/dist/app/server/assets/SignIn-DfeeLEmN.js +2 -0
  249. package/dist/app/server/assets/SignIn-DfeeLEmN.js.map +1 -0
  250. package/dist/app/server/assets/SignIn-mlBTwUq4.css +1 -0
  251. package/dist/app/server/assets/Stack-D7Yt22Ed.css +1 -0
  252. package/dist/app/server/assets/Stack-DGktaLZc.js +2 -0
  253. package/dist/app/server/assets/Stack-DGktaLZc.js.map +1 -0
  254. package/dist/app/server/assets/Tag-9vSRBpph.js +2 -0
  255. package/dist/app/server/assets/Tag-9vSRBpph.js.map +1 -0
  256. package/dist/app/server/assets/Tag-BMh6ajrW.css +1 -0
  257. package/dist/app/server/assets/ToolbarRootContext-BH_CFSWd.js +2 -0
  258. package/dist/app/server/assets/ToolbarRootContext-BH_CFSWd.js.map +1 -0
  259. package/dist/app/server/assets/Tooltip-DLX41peb.js +2 -0
  260. package/dist/app/server/assets/Tooltip-DLX41peb.js.map +1 -0
  261. package/dist/app/server/assets/Tooltip-d3y9ESUJ.css +1 -0
  262. package/dist/app/server/assets/USD1-COVcO_PB.svg +30 -0
  263. package/dist/app/server/assets/USDB-Ckwb6UQw.svg +11 -0
  264. package/dist/app/server/assets/USDC.e-3nMsKAMC.svg +1 -0
  265. package/dist/app/server/assets/USDT0-ia60Dw0e.svg +1 -0
  266. package/dist/app/server/assets/USDY-CB4iet2q.svg +16 -0
  267. package/dist/app/server/assets/USDe-BXHQCd92.svg +1 -0
  268. package/dist/app/server/assets/Upgrade-Dbfm2nm0.js +2 -0
  269. package/dist/app/server/assets/Upgrade-Dbfm2nm0.js.map +1 -0
  270. package/dist/app/server/assets/WalletUpgrade-C04kW0Jl.css +1 -0
  271. package/dist/app/server/assets/WalletUpgrade-CWKc5fYt.js +2 -0
  272. package/dist/app/server/assets/WalletUpgrade-CWKc5fYt.js.map +1 -0
  273. package/dist/app/server/assets/YLDS-CRh8Zw0g.svg +3 -0
  274. package/dist/app/server/assets/___-I98bns4o.css +1 -0
  275. package/dist/app/server/assets/___.flows-Cc-awUoC.js +6 -0
  276. package/dist/app/server/assets/___.flows-Cc-awUoC.js.map +1 -0
  277. package/dist/app/server/assets/_tanstack-start-manifest_v-U7TrtUSA.js +1 -0
  278. package/dist/app/server/assets/_zyzz__2Fhome_2Frunner_2Fwork_2Fid_2Fid_2Fsrc_2Fapp_2Froutes_2F_5B__5D.flows-B1pPOqsM.css +1 -0
  279. package/dist/app/server/assets/_zyzz__2Fhome_2Frunner_2Fwork_2Fid_2Fid_2Fsrc_2Fapp_2Froutes_2F_5B__5D.flows.tsx-CKALi9oD.js +2 -0
  280. package/dist/app/server/assets/_zyzz__2Fhome_2Frunner_2Fwork_2Fid_2Fid_2Fsrc_2Fapp_2Froutes_2F_5B__5D.flows.tsx-CKALi9oD.js.map +1 -0
  281. package/dist/app/server/assets/_zyzz_shared-BbDIEd_j.css +1 -0
  282. package/dist/app/server/assets/alphaUSD-CpCFoVuh.svg +1 -0
  283. package/dist/app/server/assets/arktype-aI7TBD0R-D1R3Byo5.js +2 -0
  284. package/dist/app/server/assets/arktype-aI7TBD0R-D1R3Byo5.js.map +1 -0
  285. package/dist/app/server/assets/async-local-storage-DlOvwxXd.js +2 -0
  286. package/dist/app/server/assets/async-local-storage-DlOvwxXd.js.map +1 -0
  287. package/dist/app/server/assets/authorize-BXzTo2Pb.js +2 -0
  288. package/dist/app/server/assets/authorize-BXzTo2Pb.js.map +1 -0
  289. package/dist/app/server/assets/authorize-BzoUqOdA.js +2 -0
  290. package/dist/app/server/assets/authorize-BzoUqOdA.js.map +1 -0
  291. package/dist/app/server/assets/authorize-DXYo-K2n-rmQQ42x1.js +56 -0
  292. package/dist/app/server/assets/authorize-DXYo-K2n-rmQQ42x1.js.map +1 -0
  293. package/dist/app/server/assets/authorize-DfjPYJqS.css +1 -0
  294. package/dist/app/server/assets/betaUSD-9A8AjgYg.svg +1 -0
  295. package/dist/app/server/assets/bun-sqlite-dialect-DoOVo4ja-CtyBkVMb.js +2 -0
  296. package/dist/app/server/assets/bun-sqlite-dialect-DoOVo4ja-CtyBkVMb.js.map +1 -0
  297. package/dist/app/server/assets/cUSD-WsQfa-iC.svg +1 -0
  298. package/dist/app/server/assets/call-dzi0xjZd.js +31 -0
  299. package/dist/app/server/assets/call-dzi0xjZd.js.map +1 -0
  300. package/dist/app/server/assets/cbBTC-DvUDqrDi.svg +1 -0
  301. package/dist/app/server/assets/ccip-DjD8z_3B.js +2 -0
  302. package/dist/app/server/assets/ccip-DjD8z_3B.js.map +1 -0
  303. package/dist/app/server/assets/choose-account-_X7xq5am.js +2 -0
  304. package/dist/app/server/assets/choose-account-_X7xq5am.js.map +1 -0
  305. package/dist/app/server/assets/choose-account-lqA5SLx9.css +1 -0
  306. package/dist/app/server/assets/choose-account-zm-5Qs3e.js +2 -0
  307. package/dist/app/server/assets/choose-account-zm-5Qs3e.js.map +1 -0
  308. package/dist/app/server/assets/compiled-query-Ds2NVcFT.js +2 -0
  309. package/dist/app/server/assets/compiled-query-Ds2NVcFT.js.map +1 -0
  310. package/dist/app/server/assets/convert-BIC8n32x.js +2 -0
  311. package/dist/app/server/assets/convert-BIC8n32x.js.map +1 -0
  312. package/dist/app/server/assets/cookie-DxViaO10.js +2 -0
  313. package/dist/app/server/assets/cookie-DxViaO10.js.map +1 -0
  314. package/dist/app/server/assets/core-BBrZXfrB.js +56 -0
  315. package/dist/app/server/assets/core-BBrZXfrB.js.map +1 -0
  316. package/dist/app/server/assets/d1-sqlite-dialect-m0f01-4z-Cv-csE1u.js +2 -0
  317. package/dist/app/server/assets/d1-sqlite-dialect-m0f01-4z-Cv-csE1u.js.map +1 -0
  318. package/dist/app/server/assets/decodeFunctionData-bP6V2ai4.js +2 -0
  319. package/dist/app/server/assets/decodeFunctionData-bP6V2ai4.js.map +1 -0
  320. package/dist/app/server/assets/default-u_dwuiYb-DOrMMcg9.js +2 -0
  321. package/dist/app/server/assets/default-u_dwuiYb-DOrMMcg9.js.map +1 -0
  322. package/dist/app/server/assets/deposit-BBaNI01u.js +2 -0
  323. package/dist/app/server/assets/deposit-BBaNI01u.js.map +1 -0
  324. package/dist/app/server/assets/deposit-LWS6ZTuf.js +2 -0
  325. package/dist/app/server/assets/deposit-LWS6ZTuf.js.map +1 -0
  326. package/dist/app/server/assets/deposit-oFx15XCA.css +1 -0
  327. package/dist/app/server/assets/device-CrXlusjr.js +2 -0
  328. package/dist/app/server/assets/device-CrXlusjr.js.map +1 -0
  329. package/dist/app/server/assets/device-DdFMgYe2.js +2 -0
  330. package/dist/app/server/assets/device-DdFMgYe2.js.map +1 -0
  331. package/dist/app/server/assets/device-tMCpu5zk.css +1 -0
  332. package/dist/app/server/assets/dist-CR6FW-yS.js +1 -0
  333. package/dist/app/server/assets/dist-CoH0hD1s.js +15 -0
  334. package/dist/app/server/assets/dist-CoH0hD1s.js.map +1 -0
  335. package/dist/app/server/assets/dist-DcICI3fd.js +2 -0
  336. package/dist/app/server/assets/dist-DcICI3fd.js.map +1 -0
  337. package/dist/app/server/assets/effect-QlVUlMFu-mXPkuQTb.js +2 -0
  338. package/dist/app/server/assets/effect-QlVUlMFu-mXPkuQTb.js.map +1 -0
  339. package/dist/app/server/assets/empty-plugin-adapters-BaGcmrjC.js +2 -0
  340. package/dist/app/server/assets/empty-plugin-adapters-BaGcmrjC.js.map +1 -0
  341. package/dist/app/server/assets/error-CXy8gqdE.css +1 -0
  342. package/dist/app/server/assets/error-DXDT2AHy.js +2 -0
  343. package/dist/app/server/assets/error-DXDT2AHy.js.map +1 -0
  344. package/dist/app/server/assets/error-bnVzy9tx.js +2 -0
  345. package/dist/app/server/assets/error-bnVzy9tx.js.map +1 -0
  346. package/dist/app/server/assets/esm-C6SW--yt.js +4 -0
  347. package/dist/app/server/assets/esm-C6SW--yt.js.map +1 -0
  348. package/dist/app/server/assets/factory-dvoOlKer.js +5 -0
  349. package/dist/app/server/assets/factory-dvoOlKer.js.map +1 -0
  350. package/dist/app/server/assets/frxUSD-n9pTpinR.svg +1 -0
  351. package/dist/app/server/assets/get-id-field-OwLpfjj2.js +6 -0
  352. package/dist/app/server/assets/get-id-field-OwLpfjj2.js.map +1 -0
  353. package/dist/app/server/assets/getPseudoElementBounds-PkWU72kn.js +2 -0
  354. package/dist/app/server/assets/getPseudoElementBounds-PkWU72kn.js.map +1 -0
  355. package/dist/app/server/assets/goUSD-D9kUvHsF.svg +5 -0
  356. package/dist/app/server/assets/iUSD-CWCJAq9X.svg +1 -0
  357. package/dist/app/server/assets/index-CLddUTqr-CC33CMvS.js +2 -0
  358. package/dist/app/server/assets/index-CLddUTqr-CC33CMvS.js.map +1 -0
  359. package/dist/app/server/assets/index-DZEfthgZ-Ec2MMQ_e.js +2 -0
  360. package/dist/app/server/assets/index-DZEfthgZ-Ec2MMQ_e.js.map +1 -0
  361. package/dist/app/server/assets/kysely-adapter-B8tQwTcu.js +1 -0
  362. package/dist/app/server/assets/lazyRouteComponent-DPOOPZw_.js +2 -0
  363. package/dist/app/server/assets/lazyRouteComponent-DPOOPZw_.js.map +1 -0
  364. package/dist/app/server/assets/load-server-Dr0IlySo.js +3 -0
  365. package/dist/app/server/assets/load-server-Dr0IlySo.js.map +1 -0
  366. package/dist/app/server/assets/login-BLq3tEEr.js +2 -0
  367. package/dist/app/server/assets/login-BLq3tEEr.js.map +1 -0
  368. package/dist/app/server/assets/login-DCIrAbED.js +2 -0
  369. package/dist/app/server/assets/login-DCIrAbED.js.map +1 -0
  370. package/dist/app/server/assets/login-msDnt3yT.css +1 -0
  371. package/dist/app/server/assets/matchContext-ByrIUj4L.js +2 -0
  372. package/dist/app/server/assets/matchContext-ByrIUj4L.js.map +1 -0
  373. package/dist/app/server/assets/node-sqlite-dialect-BowWLXvK.js +2 -0
  374. package/dist/app/server/assets/node-sqlite-dialect-BowWLXvK.js.map +1 -0
  375. package/dist/app/server/assets/pathUSD-BvaO6ooS.svg +25 -0
  376. package/dist/app/server/assets/rUSD-B-xuFS7T.svg +1 -0
  377. package/dist/app/server/assets/reUSD-CkIUs0Lx.svg +1 -0
  378. package/dist/app/server/assets/react-dom-DYzj0HXX.js +2 -0
  379. package/dist/app/server/assets/react-dom-DYzj0HXX.js.map +1 -0
  380. package/dist/app/server/assets/removable-BCLTvPOx.js +2 -0
  381. package/dist/app/server/assets/removable-BCLTvPOx.js.map +1 -0
  382. package/dist/app/server/assets/reset-DZWeTZeQ.js +2 -0
  383. package/dist/app/server/assets/reset-DZWeTZeQ.js.map +1 -0
  384. package/dist/app/server/assets/reset-co-CHrff.css +1 -0
  385. package/dist/app/server/assets/resolveError-CZXXvCJR.js +2 -0
  386. package/dist/app/server/assets/resolveError-CZXXvCJR.js.map +1 -0
  387. package/dist/app/server/assets/rolldown-runtime-BWaJ3C7D.js +1 -0
  388. package/dist/app/server/assets/router-Bqz5X4Qw.js +2 -0
  389. package/dist/app/server/assets/router-Bqz5X4Qw.js.map +1 -0
  390. package/dist/app/server/assets/router-CclzitkY.css +1 -0
  391. package/dist/app/server/assets/routes-BLQdKqcZ.js +2 -0
  392. package/dist/app/server/assets/routes-BLQdKqcZ.js.map +1 -0
  393. package/dist/app/server/assets/routes-BgiIzrOt.css +1 -0
  394. package/dist/app/server/assets/routes-Bv6WzsSR.js +2 -0
  395. package/dist/app/server/assets/routes-Bv6WzsSR.js.map +1 -0
  396. package/dist/app/server/assets/sUSDe-j9GOnH7I.svg +1 -0
  397. package/dist/app/server/assets/schema-check-oLqvHR8y.js +9 -0
  398. package/dist/app/server/assets/schema-check-oLqvHR8y.js.map +1 -0
  399. package/dist/app/server/assets/secp256k1-yg8eeIYU.js +2 -0
  400. package/dist/app/server/assets/secp256k1-yg8eeIYU.js.map +1 -0
  401. package/dist/app/server/assets/server-RRUiOef2.js +76 -0
  402. package/dist/app/server/assets/server-RRUiOef2.js.map +1 -0
  403. package/dist/app/server/assets/siUSD-C10QUNYS.svg +1 -0
  404. package/dist/app/server/assets/sqlite-adapter-C_LAV4e3.js +2 -0
  405. package/dist/app/server/assets/sqlite-adapter-C_LAV4e3.js.map +1 -0
  406. package/dist/app/server/assets/sqlite-introspector-DSCAP82F-Crx7Ny14.js +6 -0
  407. package/dist/app/server/assets/sqlite-introspector-DSCAP82F-Crx7Ny14.js.map +1 -0
  408. package/dist/app/server/assets/standard-json-DY77efq0.js +2 -0
  409. package/dist/app/server/assets/standard-json-DY77efq0.js.map +1 -0
  410. package/dist/app/server/assets/standard-json-ig2t0wRt.js +2 -0
  411. package/dist/app/server/assets/standard-json-ig2t0wRt.js.map +1 -0
  412. package/dist/app/server/assets/standard-json-t-LNckA6.js +2 -0
  413. package/dist/app/server/assets/standard-json-t-LNckA6.js.map +1 -0
  414. package/dist/app/server/assets/standard-openapi-CONmVRl8.js +2 -0
  415. package/dist/app/server/assets/standard-openapi-CONmVRl8.js.map +1 -0
  416. package/dist/app/server/assets/start-C63VetBp.js +2 -0
  417. package/dist/app/server/assets/start-C63VetBp.js.map +1 -0
  418. package/dist/app/server/assets/stcUSD-DIntDJeh.svg +1 -0
  419. package/dist/app/server/assets/sury-CWZTCd75-CDaOS2oM.js +2 -0
  420. package/dist/app/server/assets/sury-CWZTCd75-CDaOS2oM.js.map +1 -0
  421. package/dist/app/server/assets/syrupUSDC-DhYwZqdM.svg +5 -0
  422. package/dist/app/server/assets/thetaUSD-Dgmksf6G.svg +1 -0
  423. package/dist/app/server/assets/typebox-Dei93FPO-D_lCVdAz.js +2 -0
  424. package/dist/app/server/assets/typebox-Dei93FPO-D_lCVdAz.js.map +1 -0
  425. package/dist/app/server/assets/useNavigate-D6d1w7KE.js +2 -0
  426. package/dist/app/server/assets/useNavigate-D6d1w7KE.js.map +1 -0
  427. package/dist/app/server/assets/useQuery-BRpCr5vj.js +2 -0
  428. package/dist/app/server/assets/useQuery-BRpCr5vj.js.map +1 -0
  429. package/dist/app/server/assets/useRegisterFieldControl-cJesrOWK.js +2 -0
  430. package/dist/app/server/assets/useRegisterFieldControl-cJesrOWK.js.map +1 -0
  431. package/dist/app/server/assets/utils-C4ZXZIZW.js +2 -0
  432. package/dist/app/server/assets/utils-C4ZXZIZW.js.map +1 -0
  433. package/dist/app/server/assets/utils-D57zfcg-.js +2 -0
  434. package/dist/app/server/assets/utils-D57zfcg-.js.map +1 -0
  435. package/dist/app/server/assets/valibot--1zFm7rT-CIKoH3MS.js +2 -0
  436. package/dist/app/server/assets/valibot--1zFm7rT-CIKoH3MS.js.map +1 -0
  437. package/dist/app/server/assets/valibot-D_HTw1Gn-BdPyLkXt.js +2 -0
  438. package/dist/app/server/assets/valibot-D_HTw1Gn-BdPyLkXt.js.map +1 -0
  439. package/dist/app/server/assets/wYLDS-CaCKDrO-.svg +10 -0
  440. package/dist/app/server/assets/wsrUSD-B2Ey0bDQ.svg +1 -0
  441. package/dist/app/server/assets/zod-Bwrt9trS-BezI5Gi1.js +2 -0
  442. package/dist/app/server/assets/zod-Bwrt9trS-BezI5Gi1.js.map +1 -0
  443. package/dist/app/server/assets/zod-DSgpEGAE-DZ7M_Q33.js +2 -0
  444. package/dist/app/server/assets/zod-DSgpEGAE-DZ7M_Q33.js.map +1 -0
  445. package/dist/app/server/assets/zyzz-6R2K52xP.css +1 -0
  446. package/dist/app/server/assets/zyzz.config-CJRpjn0E.js +3 -0
  447. package/dist/app/server/assets/zyzz.config-CJRpjn0E.js.map +1 -0
  448. package/dist/app/server/index.js +532 -0
  449. package/dist/app/server/index.js.map +1 -0
  450. package/dist/app/server/wrangler.json +1 -0
  451. package/dist/cli/Admin.d.ts +34 -0
  452. package/dist/cli/Admin.d.ts.map +1 -0
  453. package/dist/cli/Admin.js +61 -0
  454. package/dist/cli/Admin.js.map +1 -0
  455. package/dist/cli/Apps.d.ts +9 -0
  456. package/dist/cli/Apps.d.ts.map +1 -0
  457. package/dist/cli/Apps.js +34 -0
  458. package/dist/cli/Apps.js.map +1 -0
  459. package/dist/cli/Cli.d.ts +13 -0
  460. package/dist/cli/Cli.d.ts.map +1 -0
  461. package/dist/cli/Cli.js +26 -0
  462. package/dist/cli/Cli.js.map +1 -0
  463. package/dist/cli/Project.d.ts +17 -0
  464. package/dist/cli/Project.d.ts.map +1 -0
  465. package/dist/cli/Project.js +90 -0
  466. package/dist/cli/Project.js.map +1 -0
  467. package/dist/cli/Realms.d.ts +24 -0
  468. package/dist/cli/Realms.d.ts.map +1 -0
  469. package/dist/cli/Realms.js +48 -0
  470. package/dist/cli/Realms.js.map +1 -0
  471. package/dist/cli/Session.d.ts +79 -0
  472. package/dist/cli/Session.d.ts.map +1 -0
  473. package/dist/cli/Session.js +229 -0
  474. package/dist/cli/Session.js.map +1 -0
  475. package/dist/cli/User.d.ts +24 -0
  476. package/dist/cli/User.d.ts.map +1 -0
  477. package/dist/cli/User.js +34 -0
  478. package/dist/cli/User.js.map +1 -0
  479. package/dist/cli/V1.d.ts +32 -0
  480. package/dist/cli/V1.d.ts.map +1 -0
  481. package/dist/cli/V1.js +38 -0
  482. package/dist/cli/V1.js.map +1 -0
  483. package/dist/cli/bin.d.ts +3 -0
  484. package/dist/cli/bin.d.ts.map +1 -0
  485. package/dist/cli/bin.js +46 -0
  486. package/dist/cli/bin.js.map +1 -0
  487. package/dist/cli/commands/admin/apps/create.d.ts +23 -0
  488. package/dist/cli/commands/admin/apps/create.d.ts.map +1 -0
  489. package/dist/cli/commands/admin/apps/create.js +84 -0
  490. package/dist/cli/commands/admin/apps/create.js.map +1 -0
  491. package/dist/cli/commands/admin/apps/delete.d.ts +15 -0
  492. package/dist/cli/commands/admin/apps/delete.d.ts.map +1 -0
  493. package/dist/cli/commands/admin/apps/delete.js +41 -0
  494. package/dist/cli/commands/admin/apps/delete.js.map +1 -0
  495. package/dist/cli/commands/admin/apps/index.d.ts +5 -0
  496. package/dist/cli/commands/admin/apps/index.d.ts.map +1 -0
  497. package/dist/cli/commands/admin/apps/index.js +14 -0
  498. package/dist/cli/commands/admin/apps/index.js.map +1 -0
  499. package/dist/cli/commands/admin/apps/list.d.ts +10 -0
  500. package/dist/cli/commands/admin/apps/list.d.ts.map +1 -0
  501. package/dist/cli/commands/admin/apps/list.js +26 -0
  502. package/dist/cli/commands/admin/apps/list.js.map +1 -0
  503. package/dist/cli/commands/admin/apps/rotate-secret.d.ts +17 -0
  504. package/dist/cli/commands/admin/apps/rotate-secret.d.ts.map +1 -0
  505. package/dist/cli/commands/admin/apps/rotate-secret.js +47 -0
  506. package/dist/cli/commands/admin/apps/rotate-secret.js.map +1 -0
  507. package/dist/cli/commands/admin/apps/update.d.ts +20 -0
  508. package/dist/cli/commands/admin/apps/update.d.ts.map +1 -0
  509. package/dist/cli/commands/admin/apps/update.js +71 -0
  510. package/dist/cli/commands/admin/apps/update.js.map +1 -0
  511. package/dist/cli/commands/admin/index.d.ts +5 -0
  512. package/dist/cli/commands/admin/index.d.ts.map +1 -0
  513. package/dist/cli/commands/admin/index.js +13 -0
  514. package/dist/cli/commands/admin/index.js.map +1 -0
  515. package/dist/cli/commands/admin/migrate.d.ts +10 -0
  516. package/dist/cli/commands/admin/migrate.d.ts.map +1 -0
  517. package/dist/cli/commands/admin/migrate.js +20 -0
  518. package/dist/cli/commands/admin/migrate.js.map +1 -0
  519. package/dist/cli/commands/admin/realms/add.d.ts +13 -0
  520. package/dist/cli/commands/admin/realms/add.d.ts.map +1 -0
  521. package/dist/cli/commands/admin/realms/add.js +42 -0
  522. package/dist/cli/commands/admin/realms/add.js.map +1 -0
  523. package/dist/cli/commands/admin/realms/index.d.ts +5 -0
  524. package/dist/cli/commands/admin/realms/index.d.ts.map +1 -0
  525. package/dist/cli/commands/admin/realms/index.js +13 -0
  526. package/dist/cli/commands/admin/realms/index.js.map +1 -0
  527. package/dist/cli/commands/admin/realms/list.d.ts +14 -0
  528. package/dist/cli/commands/admin/realms/list.d.ts.map +1 -0
  529. package/dist/cli/commands/admin/realms/list.js +36 -0
  530. package/dist/cli/commands/admin/realms/list.js.map +1 -0
  531. package/dist/cli/commands/admin/realms/passkeys/index.d.ts +5 -0
  532. package/dist/cli/commands/admin/realms/passkeys/index.d.ts.map +1 -0
  533. package/dist/cli/commands/admin/realms/passkeys/index.js +13 -0
  534. package/dist/cli/commands/admin/realms/passkeys/index.js.map +1 -0
  535. package/dist/cli/commands/admin/realms/passkeys/set.d.ts +17 -0
  536. package/dist/cli/commands/admin/realms/passkeys/set.d.ts.map +1 -0
  537. package/dist/cli/commands/admin/realms/passkeys/set.js +46 -0
  538. package/dist/cli/commands/admin/realms/passkeys/set.js.map +1 -0
  539. package/dist/cli/commands/admin/realms/privy/index.d.ts +5 -0
  540. package/dist/cli/commands/admin/realms/privy/index.d.ts.map +1 -0
  541. package/dist/cli/commands/admin/realms/privy/index.js +13 -0
  542. package/dist/cli/commands/admin/realms/privy/index.js.map +1 -0
  543. package/dist/cli/commands/admin/realms/privy/set.d.ts +19 -0
  544. package/dist/cli/commands/admin/realms/privy/set.d.ts.map +1 -0
  545. package/dist/cli/commands/admin/realms/privy/set.js +66 -0
  546. package/dist/cli/commands/admin/realms/privy/set.js.map +1 -0
  547. package/dist/cli/commands/admin/realms/remove.d.ts +12 -0
  548. package/dist/cli/commands/admin/realms/remove.d.ts.map +1 -0
  549. package/dist/cli/commands/admin/realms/remove.js +35 -0
  550. package/dist/cli/commands/admin/realms/remove.js.map +1 -0
  551. package/dist/cli/commands/admin/realms/secp256k1/disable.d.ts +16 -0
  552. package/dist/cli/commands/admin/realms/secp256k1/disable.d.ts.map +1 -0
  553. package/dist/cli/commands/admin/realms/secp256k1/disable.js +42 -0
  554. package/dist/cli/commands/admin/realms/secp256k1/disable.js.map +1 -0
  555. package/dist/cli/commands/admin/realms/secp256k1/enable.d.ts +16 -0
  556. package/dist/cli/commands/admin/realms/secp256k1/enable.d.ts.map +1 -0
  557. package/dist/cli/commands/admin/realms/secp256k1/enable.js +42 -0
  558. package/dist/cli/commands/admin/realms/secp256k1/enable.js.map +1 -0
  559. package/dist/cli/commands/admin/realms/secp256k1/index.d.ts +9 -0
  560. package/dist/cli/commands/admin/realms/secp256k1/index.d.ts.map +1 -0
  561. package/dist/cli/commands/admin/realms/secp256k1/index.js +17 -0
  562. package/dist/cli/commands/admin/realms/secp256k1/index.js.map +1 -0
  563. package/dist/cli/commands/admin/realms/set.d.ts +17 -0
  564. package/dist/cli/commands/admin/realms/set.d.ts.map +1 -0
  565. package/dist/cli/commands/admin/realms/set.js +46 -0
  566. package/dist/cli/commands/admin/realms/set.js.map +1 -0
  567. package/dist/cli/commands/admin/rotate-key.d.ts +16 -0
  568. package/dist/cli/commands/admin/rotate-key.d.ts.map +1 -0
  569. package/dist/cli/commands/admin/rotate-key.js +46 -0
  570. package/dist/cli/commands/admin/rotate-key.js.map +1 -0
  571. package/dist/cli/commands/init.d.ts +11 -0
  572. package/dist/cli/commands/init.d.ts.map +1 -0
  573. package/dist/cli/commands/init.js +34 -0
  574. package/dist/cli/commands/init.js.map +1 -0
  575. package/dist/cli/commands/login.d.ts +12 -0
  576. package/dist/cli/commands/login.d.ts.map +1 -0
  577. package/dist/cli/commands/login.js +29 -0
  578. package/dist/cli/commands/login.js.map +1 -0
  579. package/dist/cli/commands/logout.d.ts +8 -0
  580. package/dist/cli/commands/logout.d.ts.map +1 -0
  581. package/dist/cli/commands/logout.js +19 -0
  582. package/dist/cli/commands/logout.js.map +1 -0
  583. package/dist/cli/commands/whoami.d.ts +12 -0
  584. package/dist/cli/commands/whoami.d.ts.map +1 -0
  585. package/dist/cli/commands/whoami.js +24 -0
  586. package/dist/cli/commands/whoami.js.map +1 -0
  587. package/dist/client/Actions.d.ts +108 -0
  588. package/dist/client/Actions.d.ts.map +1 -0
  589. package/dist/client/Actions.js +94 -0
  590. package/dist/client/Actions.js.map +1 -0
  591. package/dist/client/Auth.d.ts +143 -0
  592. package/dist/client/Auth.d.ts.map +1 -0
  593. package/dist/client/Auth.js +106 -0
  594. package/dist/client/Auth.js.map +1 -0
  595. package/dist/client/Authorization.d.ts +29 -0
  596. package/dist/client/Authorization.d.ts.map +1 -0
  597. package/dist/client/Authorization.js +12 -0
  598. package/dist/client/Authorization.js.map +1 -0
  599. package/dist/client/Decorator.d.ts +172 -0
  600. package/dist/client/Decorator.d.ts.map +1 -0
  601. package/dist/client/Decorator.js +241 -0
  602. package/dist/client/Decorator.js.map +1 -0
  603. package/dist/client/Key.d.ts +82 -0
  604. package/dist/client/Key.d.ts.map +1 -0
  605. package/dist/client/Key.js +81 -0
  606. package/dist/client/Key.js.map +1 -0
  607. package/dist/client/Pending.d.ts +38 -0
  608. package/dist/client/Pending.d.ts.map +1 -0
  609. package/dist/client/Pending.js +12 -0
  610. package/dist/client/Pending.js.map +1 -0
  611. package/dist/client/Permissions.d.ts +36 -0
  612. package/dist/client/Permissions.d.ts.map +1 -0
  613. package/dist/client/Permissions.js +16 -0
  614. package/dist/client/Permissions.js.map +1 -0
  615. package/dist/client/Storage.d.ts +27 -0
  616. package/dist/client/Storage.d.ts.map +1 -0
  617. package/dist/client/Storage.js +16 -0
  618. package/dist/client/Storage.js.map +1 -0
  619. package/dist/client/TempoAccount.d.ts +52 -0
  620. package/dist/client/TempoAccount.d.ts.map +1 -0
  621. package/dist/client/TempoAccount.js +17 -0
  622. package/dist/client/TempoAccount.js.map +1 -0
  623. package/dist/client/Tokens.d.ts +25 -0
  624. package/dist/client/Tokens.d.ts.map +1 -0
  625. package/dist/client/Tokens.js +12 -0
  626. package/dist/client/Tokens.js.map +1 -0
  627. package/dist/client/User.d.ts +21 -0
  628. package/dist/client/User.d.ts.map +1 -0
  629. package/dist/client/User.js +12 -0
  630. package/dist/client/User.js.map +1 -0
  631. package/dist/client/actions/account.d.ts +75 -0
  632. package/dist/client/actions/account.d.ts.map +1 -0
  633. package/dist/client/actions/account.js +102 -0
  634. package/dist/client/actions/account.js.map +1 -0
  635. package/dist/client/actions/device.d.ts +52 -0
  636. package/dist/client/actions/device.d.ts.map +1 -0
  637. package/dist/client/actions/device.js +103 -0
  638. package/dist/client/actions/device.js.map +1 -0
  639. package/dist/client/actions/email.d.ts +89 -0
  640. package/dist/client/actions/email.d.ts.map +1 -0
  641. package/dist/client/actions/email.js +86 -0
  642. package/dist/client/actions/email.js.map +1 -0
  643. package/dist/client/actions/oauth.d.ts +112 -0
  644. package/dist/client/actions/oauth.d.ts.map +1 -0
  645. package/dist/client/actions/oauth.js +103 -0
  646. package/dist/client/actions/oauth.js.map +1 -0
  647. package/dist/client/actions/passkey.d.ts +140 -0
  648. package/dist/client/actions/passkey.d.ts.map +1 -0
  649. package/dist/client/actions/passkey.js +170 -0
  650. package/dist/client/actions/passkey.js.map +1 -0
  651. package/dist/client/actions/realm.d.ts +25 -0
  652. package/dist/client/actions/realm.d.ts.map +1 -0
  653. package/dist/client/actions/realm.js +16 -0
  654. package/dist/client/actions/realm.js.map +1 -0
  655. package/dist/client/actions/redirect.d.ts +152 -0
  656. package/dist/client/actions/redirect.d.ts.map +1 -0
  657. package/dist/client/actions/redirect.js +311 -0
  658. package/dist/client/actions/redirect.js.map +1 -0
  659. package/dist/client/internal/accessKey.d.ts +21 -0
  660. package/dist/client/internal/accessKey.d.ts.map +1 -0
  661. package/dist/client/internal/accessKey.js +38 -0
  662. package/dist/client/internal/accessKey.js.map +1 -0
  663. package/dist/client/internal/account.d.ts +17 -0
  664. package/dist/client/internal/account.d.ts.map +1 -0
  665. package/dist/client/internal/account.js +3 -0
  666. package/dist/client/internal/account.js.map +1 -0
  667. package/dist/client/internal/api.d.ts +110 -0
  668. package/dist/client/internal/api.d.ts.map +1 -0
  669. package/dist/client/internal/api.js +136 -0
  670. package/dist/client/internal/api.js.map +1 -0
  671. package/dist/client/internal/headless.d.ts +159 -0
  672. package/dist/client/internal/headless.d.ts.map +1 -0
  673. package/dist/client/internal/headless.js +196 -0
  674. package/dist/client/internal/headless.js.map +1 -0
  675. package/dist/client/internal/indexedDb.d.ts +8 -0
  676. package/dist/client/internal/indexedDb.d.ts.map +1 -0
  677. package/dist/client/internal/indexedDb.js +32 -0
  678. package/dist/client/internal/indexedDb.js.map +1 -0
  679. package/dist/client/internal/request.d.ts +56 -0
  680. package/dist/client/internal/request.d.ts.map +1 -0
  681. package/dist/client/internal/request.js +44 -0
  682. package/dist/client/internal/request.js.map +1 -0
  683. package/dist/client/internal/store.d.ts +12 -0
  684. package/dist/client/internal/store.d.ts.map +1 -0
  685. package/dist/client/internal/store.js +15 -0
  686. package/dist/client/internal/store.js.map +1 -0
  687. package/dist/client/internal/verifier.d.ts +25 -0
  688. package/dist/client/internal/verifier.d.ts.map +1 -0
  689. package/dist/client/internal/verifier.js +52 -0
  690. package/dist/client/internal/verifier.js.map +1 -0
  691. package/dist/client.d.ts +18 -0
  692. package/dist/client.d.ts.map +1 -0
  693. package/dist/client.js +18 -0
  694. package/dist/client.js.map +1 -0
  695. package/dist/index.d.ts +6 -0
  696. package/dist/index.d.ts.map +1 -0
  697. package/dist/index.js +6 -0
  698. package/dist/index.js.map +1 -0
  699. package/dist/internal/Apps.d.ts +3169 -0
  700. package/dist/internal/Apps.d.ts.map +1 -0
  701. package/dist/internal/Apps.js +948 -0
  702. package/dist/internal/Apps.js.map +1 -0
  703. package/dist/internal/Auth.d.ts +4287 -0
  704. package/dist/internal/Auth.d.ts.map +1 -0
  705. package/dist/internal/Auth.js +185 -0
  706. package/dist/internal/Auth.js.map +1 -0
  707. package/dist/internal/Authorize.d.ts +526 -0
  708. package/dist/internal/Authorize.d.ts.map +1 -0
  709. package/dist/internal/Authorize.js +330 -0
  710. package/dist/internal/Authorize.js.map +1 -0
  711. package/dist/internal/Cache.d.ts +56 -0
  712. package/dist/internal/Cache.d.ts.map +1 -0
  713. package/dist/internal/Cache.js +65 -0
  714. package/dist/internal/Cache.js.map +1 -0
  715. package/dist/internal/Chain.d.ts +738 -0
  716. package/dist/internal/Chain.d.ts.map +1 -0
  717. package/dist/internal/Chain.js +65 -0
  718. package/dist/internal/Chain.js.map +1 -0
  719. package/dist/internal/ChainList.d.ts +117 -0
  720. package/dist/internal/ChainList.d.ts.map +1 -0
  721. package/dist/internal/ChainList.js +148 -0
  722. package/dist/internal/ChainList.js.map +1 -0
  723. package/dist/internal/ChainName.d.ts +11 -0
  724. package/dist/internal/ChainName.d.ts.map +1 -0
  725. package/dist/internal/ChainName.js +13 -0
  726. package/dist/internal/ChainName.js.map +1 -0
  727. package/dist/internal/CodeEmail.d.ts +38 -0
  728. package/dist/internal/CodeEmail.d.ts.map +1 -0
  729. package/dist/internal/CodeEmail.js +85 -0
  730. package/dist/internal/CodeEmail.js.map +1 -0
  731. package/dist/internal/ConfigurableAccount.d.ts +600 -0
  732. package/dist/internal/ConfigurableAccount.d.ts.map +1 -0
  733. package/dist/internal/ConfigurableAccount.js +795 -0
  734. package/dist/internal/ConfigurableAccount.js.map +1 -0
  735. package/dist/internal/Device.d.ts +246 -0
  736. package/dist/internal/Device.d.ts.map +1 -0
  737. package/dist/internal/Device.js +257 -0
  738. package/dist/internal/Device.js.map +1 -0
  739. package/dist/internal/Env.d.ts +97 -0
  740. package/dist/internal/Env.d.ts.map +1 -0
  741. package/dist/internal/Env.js +2 -0
  742. package/dist/internal/Env.js.map +1 -0
  743. package/dist/internal/ErrorResponse.d.ts +608 -0
  744. package/dist/internal/ErrorResponse.d.ts.map +1 -0
  745. package/dist/internal/ErrorResponse.js +701 -0
  746. package/dist/internal/ErrorResponse.js.map +1 -0
  747. package/dist/internal/Id.d.ts +10 -0
  748. package/dist/internal/Id.d.ts.map +1 -0
  749. package/dist/internal/Id.js +34 -0
  750. package/dist/internal/Id.js.map +1 -0
  751. package/dist/internal/KeyAuthorization.d.ts +1650 -0
  752. package/dist/internal/KeyAuthorization.d.ts.map +1 -0
  753. package/dist/internal/KeyAuthorization.js +1187 -0
  754. package/dist/internal/KeyAuthorization.js.map +1 -0
  755. package/dist/internal/Limits.d.ts +70 -0
  756. package/dist/internal/Limits.d.ts.map +1 -0
  757. package/dist/internal/Limits.js +36 -0
  758. package/dist/internal/Limits.js.map +1 -0
  759. package/dist/internal/Log.d.ts +34 -0
  760. package/dist/internal/Log.d.ts.map +1 -0
  761. package/dist/internal/Log.js +99 -0
  762. package/dist/internal/Log.js.map +1 -0
  763. package/dist/internal/LogLine.d.ts +29 -0
  764. package/dist/internal/LogLine.d.ts.map +1 -0
  765. package/dist/internal/LogLine.js +50 -0
  766. package/dist/internal/LogLine.js.map +1 -0
  767. package/dist/internal/Migrations.d.ts +28 -0
  768. package/dist/internal/Migrations.d.ts.map +1 -0
  769. package/dist/internal/Migrations.js +82 -0
  770. package/dist/internal/Migrations.js.map +1 -0
  771. package/dist/internal/Owner.d.ts +230 -0
  772. package/dist/internal/Owner.d.ts.map +1 -0
  773. package/dist/internal/Owner.js +101 -0
  774. package/dist/internal/Owner.js.map +1 -0
  775. package/dist/internal/Passkey.d.ts +901 -0
  776. package/dist/internal/Passkey.d.ts.map +1 -0
  777. package/dist/internal/Passkey.js +1185 -0
  778. package/dist/internal/Passkey.js.map +1 -0
  779. package/dist/internal/PendingKey.d.ts +49 -0
  780. package/dist/internal/PendingKey.d.ts.map +1 -0
  781. package/dist/internal/PendingKey.js +58 -0
  782. package/dist/internal/PendingKey.js.map +1 -0
  783. package/dist/internal/Privy.d.ts +138 -0
  784. package/dist/internal/Privy.d.ts.map +1 -0
  785. package/dist/internal/Privy.js +285 -0
  786. package/dist/internal/Privy.js.map +1 -0
  787. package/dist/internal/RateLimit.d.ts +218 -0
  788. package/dist/internal/RateLimit.d.ts.map +1 -0
  789. package/dist/internal/RateLimit.js +209 -0
  790. package/dist/internal/RateLimit.js.map +1 -0
  791. package/dist/internal/Realm.d.ts +290 -0
  792. package/dist/internal/Realm.d.ts.map +1 -0
  793. package/dist/internal/Realm.js +502 -0
  794. package/dist/internal/Realm.js.map +1 -0
  795. package/dist/internal/RequestId.d.ts +16 -0
  796. package/dist/internal/RequestId.d.ts.map +1 -0
  797. package/dist/internal/RequestId.js +78 -0
  798. package/dist/internal/RequestId.js.map +1 -0
  799. package/dist/internal/SigningKey.d.ts +126 -0
  800. package/dist/internal/SigningKey.d.ts.map +1 -0
  801. package/dist/internal/SigningKey.js +221 -0
  802. package/dist/internal/SigningKey.js.map +1 -0
  803. package/dist/internal/TempoAccount.d.ts +181 -0
  804. package/dist/internal/TempoAccount.d.ts.map +1 -0
  805. package/dist/internal/TempoAccount.js +369 -0
  806. package/dist/internal/TempoAccount.js.map +1 -0
  807. package/dist/internal/TestInbox.d.ts +42 -0
  808. package/dist/internal/TestInbox.d.ts.map +1 -0
  809. package/dist/internal/TestInbox.js +20 -0
  810. package/dist/internal/TestInbox.js.map +1 -0
  811. package/dist/internal/Timing.d.ts +52 -0
  812. package/dist/internal/Timing.d.ts.map +1 -0
  813. package/dist/internal/Timing.js +116 -0
  814. package/dist/internal/Timing.js.map +1 -0
  815. package/dist/internal/Validation.d.ts +52 -0
  816. package/dist/internal/Validation.d.ts.map +1 -0
  817. package/dist/internal/Validation.js +22 -0
  818. package/dist/internal/Validation.js.map +1 -0
  819. package/dist/internal/Verification.d.ts +24 -0
  820. package/dist/internal/Verification.d.ts.map +1 -0
  821. package/dist/internal/Verification.js +37 -0
  822. package/dist/internal/Verification.js.map +1 -0
  823. package/dist/internal/Wallet.d.ts +66 -0
  824. package/dist/internal/Wallet.d.ts.map +1 -0
  825. package/dist/internal/Wallet.js +59 -0
  826. package/dist/internal/Wallet.js.map +1 -0
  827. package/dist/internal/owners/Passkey.d.ts +9 -0
  828. package/dist/internal/owners/Passkey.d.ts.map +1 -0
  829. package/dist/internal/owners/Passkey.js +58 -0
  830. package/dist/internal/owners/Passkey.js.map +1 -0
  831. package/dist/internal/owners/Privy.d.ts +13 -0
  832. package/dist/internal/owners/Privy.d.ts.map +1 -0
  833. package/dist/internal/owners/Privy.js +59 -0
  834. package/dist/internal/owners/Privy.js.map +1 -0
  835. package/dist/internal/owners/Secp256k1.d.ts +12 -0
  836. package/dist/internal/owners/Secp256k1.d.ts.map +1 -0
  837. package/dist/internal/owners/Secp256k1.js +99 -0
  838. package/dist/internal/owners/Secp256k1.js.map +1 -0
  839. package/dist/worker.d.ts +18 -0
  840. package/dist/worker.d.ts.map +1 -0
  841. package/dist/worker.js +18 -0
  842. package/dist/worker.js.map +1 -0
  843. package/package.json +83 -3
  844. package/src/Api.ts +157 -0
  845. package/src/App.ts +316 -0
  846. package/src/api/account.ts +2266 -0
  847. package/src/api/authenticate.ts +1662 -0
  848. package/src/api/authorize.ts +1086 -0
  849. package/src/api/device.ts +516 -0
  850. package/src/api/health.ts +72 -0
  851. package/src/api/lib/AccountStep.ts +485 -0
  852. package/src/api/lib/Auth.ts +164 -0
  853. package/src/api/lib/Configure.ts +921 -0
  854. package/src/api/lib/Consent.ts +388 -0
  855. package/src/api/lib/Cors.ts +160 -0
  856. package/src/api/lib/Database.ts +10 -0
  857. package/src/api/lib/DeviceRequest.ts +244 -0
  858. package/src/api/lib/FirstAccount.ts +136 -0
  859. package/src/api/lib/Headless.ts +616 -0
  860. package/src/api/lib/IsolateCache.ts +28 -0
  861. package/src/api/lib/KeySigner.ts +690 -0
  862. package/src/api/lib/PasskeyLink.ts +162 -0
  863. package/src/api/lib/Session.ts +64 -0
  864. package/src/api/lib/SignInConsent.ts +393 -0
  865. package/src/api/oauth.ts +1796 -0
  866. package/src/app/components/CodeInput.tsx +153 -0
  867. package/src/app/components/DevTools.tsx +1071 -0
  868. package/src/app/components/Grant.tsx +476 -0
  869. package/src/app/components/icons/BRLA.png +0 -0
  870. package/src/app/components/icons/BRZ.svg +1 -0
  871. package/src/app/components/icons/CHFAU.png +0 -0
  872. package/src/app/components/icons/DLUSD.png +0 -0
  873. package/src/app/components/icons/EURAU.svg +1 -0
  874. package/src/app/components/icons/EURC.e.svg +1 -0
  875. package/src/app/components/icons/GBPA.svg +4 -0
  876. package/src/app/components/icons/GUSD.svg +1 -0
  877. package/src/app/components/icons/MACH.svg +4 -0
  878. package/src/app/components/icons/OUSD.svg +5 -0
  879. package/src/app/components/icons/PRIME.svg +14 -0
  880. package/src/app/components/icons/SBC.svg +1 -0
  881. package/src/app/components/icons/SEKAU.svg +5 -0
  882. package/src/app/components/icons/USD1.svg +30 -0
  883. package/src/app/components/icons/USDB.svg +11 -0
  884. package/src/app/components/icons/USDC.e.svg +1 -0
  885. package/src/app/components/icons/USDT0.svg +1 -0
  886. package/src/app/components/icons/USDY.svg +16 -0
  887. package/src/app/components/icons/USDe.svg +1 -0
  888. package/src/app/components/icons/YLDS.svg +3 -0
  889. package/src/app/components/icons/alphaUSD.svg +1 -0
  890. package/src/app/components/icons/betaUSD.svg +1 -0
  891. package/src/app/components/icons/cUSD.svg +1 -0
  892. package/src/app/components/icons/cbBTC.svg +1 -0
  893. package/src/app/components/icons/frxUSD.svg +1 -0
  894. package/src/app/components/icons/goUSD.svg +5 -0
  895. package/src/app/components/icons/iUSD.svg +1 -0
  896. package/src/app/components/icons/pathUSD.svg +25 -0
  897. package/src/app/components/icons/rUSD.svg +1 -0
  898. package/src/app/components/icons/reUSD.svg +1 -0
  899. package/src/app/components/icons/sUSDe.svg +1 -0
  900. package/src/app/components/icons/siUSD.svg +1 -0
  901. package/src/app/components/icons/stcUSD.svg +1 -0
  902. package/src/app/components/icons/syrupUSDC.svg +5 -0
  903. package/src/app/components/icons/thetaUSD.svg +1 -0
  904. package/src/app/components/icons/wYLDS.svg +10 -0
  905. package/src/app/components/icons/wsrUSD.svg +1 -0
  906. package/src/app/components/logos/OUSD.dark.svg +17 -0
  907. package/src/app/components/logos/OUSD.light.svg +17 -0
  908. package/src/app/coverage.server.ts +73 -0
  909. package/src/app/coverage.ts +69 -0
  910. package/src/app/crons/cleanup.ts +104 -0
  911. package/src/app/db/auth.ts +440 -0
  912. package/src/app/db/migrations/0000_better_auth.sql +53 -0
  913. package/src/app/db/migrations/0001_oauth_provider.sql +162 -0
  914. package/src/app/db/migrations/0002_device_code.sql +17 -0
  915. package/src/app/db/migrations/0003_realms.sql +27 -0
  916. package/src/app/db/migrations/0004_default_realm.sql +2 -0
  917. package/src/app/db/migrations/0005_passkeys.sql +30 -0
  918. package/src/app/db/migrations/0006_first_accounts.sql +9 -0
  919. package/src/app/db/migrations/0007_pending_keys.sql +13 -0
  920. package/src/app/db/migrations/0008_secp256k1_owners.sql +18 -0
  921. package/src/app/db/migrations/0009_device_requests.sql +8 -0
  922. package/src/app/db/migrations/0010_device_keys.sql +4 -0
  923. package/src/app/db/migrations/0011_registered_passkeys.sql +2 -0
  924. package/src/app/db/migrations/0012_passkey_accounts.sql +7 -0
  925. package/src/app/db/migrations/0013_first_party_apps.sql +4 -0
  926. package/src/app/db/migrations/0014_logout_revokes_tokens.sql +17 -0
  927. package/src/app/db/migrations/0015_expiry_indexes.sql +9 -0
  928. package/src/app/db/migrations/0016_configurable_accounts.sql +15 -0
  929. package/src/app/db/migrations/0017_account_config_keys.sql +3 -0
  930. package/src/app/db/migrations/0018_better_auth_1_8.sql +9 -0
  931. package/src/app/db/migrations/0019_drop_provider_account_index.sql +1 -0
  932. package/src/app/db/migrations/meta/0000_snapshot.json +362 -0
  933. package/src/app/db/migrations/meta/0001_snapshot.json +1487 -0
  934. package/src/app/db/migrations/meta/0002_snapshot.json +1603 -0
  935. package/src/app/db/migrations/meta/0003_snapshot.json +1760 -0
  936. package/src/app/db/migrations/meta/0004_snapshot.json +1760 -0
  937. package/src/app/db/migrations/meta/0005_snapshot.json +1911 -0
  938. package/src/app/db/migrations/meta/0006_snapshot.json +1967 -0
  939. package/src/app/db/migrations/meta/0007_snapshot.json +2047 -0
  940. package/src/app/db/migrations/meta/0008_snapshot.json +2157 -0
  941. package/src/app/db/migrations/meta/0009_snapshot.json +2207 -0
  942. package/src/app/db/migrations/meta/0010_snapshot.json +2231 -0
  943. package/src/app/db/migrations/meta/0011_snapshot.json +2231 -0
  944. package/src/app/db/migrations/meta/0012_snapshot.json +2231 -0
  945. package/src/app/db/migrations/meta/0013_snapshot.json +2231 -0
  946. package/src/app/db/migrations/meta/0014_snapshot.json +2231 -0
  947. package/src/app/db/migrations/meta/0015_snapshot.json +2375 -0
  948. package/src/app/db/migrations/meta/0016_snapshot.json +2475 -0
  949. package/src/app/db/migrations/meta/0017_snapshot.json +2481 -0
  950. package/src/app/db/migrations/meta/0018_snapshot.json +2535 -0
  951. package/src/app/db/migrations/meta/0019_snapshot.json +2514 -0
  952. package/src/app/db/migrations/meta/_journal.json +146 -0
  953. package/src/app/db/schema.ts +241 -0
  954. package/src/app/db/table.ts +31 -0
  955. package/src/app/env.ts +57 -0
  956. package/src/app/inbox.ts +190 -0
  957. package/src/app/lib/Client.ts +82 -0
  958. package/src/app/lib/Inbox.ts +11 -0
  959. package/src/app/lib/Loader.ts +21 -0
  960. package/src/app/lib/Upgrade.ts +221 -0
  961. package/src/app/package.json +8 -0
  962. package/src/app/public/_headers +4 -0
  963. package/src/app/routeTree.gen.ts +219 -0
  964. package/src/app/router.tsx +47 -0
  965. package/src/app/routes/[_].flows.tsx +4254 -0
  966. package/src/app/routes/__root.tsx +172 -0
  967. package/src/app/routes/authorize.tsx +379 -0
  968. package/src/app/routes/choose-account.tsx +144 -0
  969. package/src/app/routes/deposit.tsx +107 -0
  970. package/src/app/routes/device.tsx +273 -0
  971. package/src/app/routes/error.tsx +62 -0
  972. package/src/app/routes/index.tsx +511 -0
  973. package/src/app/routes/login.tsx +577 -0
  974. package/src/app/screens/Account.tsx +559 -0
  975. package/src/app/screens/Approval.tsx +444 -0
  976. package/src/app/screens/ChooseAccount.tsx +206 -0
  977. package/src/app/screens/Deposit.tsx +523 -0
  978. package/src/app/screens/DeviceApproval.tsx +500 -0
  979. package/src/app/screens/NotFound.tsx +62 -0
  980. package/src/app/screens/SignIn.tsx +372 -0
  981. package/src/app/screens/WalletUpgrade.tsx +121 -0
  982. package/src/app/screens/chains/base.svg +3 -0
  983. package/src/app/screens/chains/ethereum.svg +11 -0
  984. package/src/app/screens/chains/solana.svg +4 -0
  985. package/src/app/screens/chains/tempo.svg +4 -0
  986. package/src/app/server.ts +342 -0
  987. package/src/app/vite.config.ts +128 -0
  988. package/src/app/void.config.ts +36 -0
  989. package/src/app/wallet.ts +69 -0
  990. package/src/app/zyzz.config.ts +52 -0
  991. package/src/cli/Admin.ts +74 -0
  992. package/src/cli/Apps.ts +27 -0
  993. package/src/cli/Cli.ts +41 -0
  994. package/src/cli/Project.ts +119 -0
  995. package/src/cli/Realms.ts +49 -0
  996. package/src/cli/Session.ts +290 -0
  997. package/src/cli/User.ts +40 -0
  998. package/src/cli/V1.ts +54 -0
  999. package/src/cli/bin.ts +44 -0
  1000. package/src/cli/commands/admin/apps/create.ts +96 -0
  1001. package/src/cli/commands/admin/apps/delete.ts +38 -0
  1002. package/src/cli/commands/admin/apps/index.ts +15 -0
  1003. package/src/cli/commands/admin/apps/list.ts +25 -0
  1004. package/src/cli/commands/admin/apps/rotate-secret.ts +47 -0
  1005. package/src/cli/commands/admin/apps/update.ts +79 -0
  1006. package/src/cli/commands/admin/index.ts +14 -0
  1007. package/src/cli/commands/admin/migrate.ts +19 -0
  1008. package/src/cli/commands/admin/realms/add.ts +40 -0
  1009. package/src/cli/commands/admin/realms/index.ts +14 -0
  1010. package/src/cli/commands/admin/realms/list.ts +38 -0
  1011. package/src/cli/commands/admin/realms/passkeys/index.ts +15 -0
  1012. package/src/cli/commands/admin/realms/passkeys/set.ts +44 -0
  1013. package/src/cli/commands/admin/realms/privy/index.ts +14 -0
  1014. package/src/cli/commands/admin/realms/privy/set.ts +69 -0
  1015. package/src/cli/commands/admin/realms/remove.ts +33 -0
  1016. package/src/cli/commands/admin/realms/secp256k1/disable.ts +40 -0
  1017. package/src/cli/commands/admin/realms/secp256k1/enable.ts +40 -0
  1018. package/src/cli/commands/admin/realms/secp256k1/index.ts +19 -0
  1019. package/src/cli/commands/admin/realms/set.ts +46 -0
  1020. package/src/cli/commands/admin/rotate-key.ts +47 -0
  1021. package/src/cli/commands/init.ts +42 -0
  1022. package/src/cli/commands/login.ts +32 -0
  1023. package/src/cli/commands/logout.ts +19 -0
  1024. package/src/cli/commands/whoami.ts +23 -0
  1025. package/src/client/Actions.ts +180 -0
  1026. package/src/client/Auth.ts +267 -0
  1027. package/src/client/Authorization.ts +34 -0
  1028. package/src/client/Decorator.ts +444 -0
  1029. package/src/client/Key.ts +137 -0
  1030. package/src/client/Pending.ts +45 -0
  1031. package/src/client/Permissions.ts +41 -0
  1032. package/src/client/Storage.ts +29 -0
  1033. package/src/client/TempoAccount.ts +55 -0
  1034. package/src/client/Tokens.ts +27 -0
  1035. package/src/client/User.ts +23 -0
  1036. package/src/client/actions/account.ts +171 -0
  1037. package/src/client/actions/device.ts +166 -0
  1038. package/src/client/actions/email.ts +164 -0
  1039. package/src/client/actions/oauth.ts +179 -0
  1040. package/src/client/actions/passkey.ts +333 -0
  1041. package/src/client/actions/realm.ts +37 -0
  1042. package/src/client/actions/redirect.ts +502 -0
  1043. package/src/client/internal/accessKey.ts +54 -0
  1044. package/src/client/internal/account.ts +18 -0
  1045. package/src/client/internal/api.ts +242 -0
  1046. package/src/client/internal/headless.ts +308 -0
  1047. package/src/client/internal/indexedDb.ts +44 -0
  1048. package/src/client/internal/request.ts +70 -0
  1049. package/src/client/internal/store.ts +20 -0
  1050. package/src/client/internal/verifier.ts +75 -0
  1051. package/src/client.ts +17 -0
  1052. package/src/index.ts +5 -0
  1053. package/src/internal/Apps.ts +1283 -0
  1054. package/src/internal/Auth.ts +273 -0
  1055. package/src/internal/Authorize.ts +433 -0
  1056. package/src/internal/Balance.ts +144 -0
  1057. package/src/internal/BodyLimit.ts +31 -0
  1058. package/src/internal/Cache.ts +119 -0
  1059. package/src/internal/Chain.ts +99 -0
  1060. package/src/internal/ChainList.ts +270 -0
  1061. package/src/internal/ChainName.ts +14 -0
  1062. package/src/internal/ChainStatus.ts +65 -0
  1063. package/src/internal/CodeEmail.ts +138 -0
  1064. package/src/internal/ConfigurableAccount.ts +1315 -0
  1065. package/src/internal/Device.ts +471 -0
  1066. package/src/internal/Env.ts +92 -0
  1067. package/src/internal/ErrorResponse.ts +896 -0
  1068. package/src/internal/Faucet.ts +43 -0
  1069. package/src/internal/Id.ts +41 -0
  1070. package/src/internal/KeyAuthorization.ts +1536 -0
  1071. package/src/internal/Limits.ts +40 -0
  1072. package/src/internal/Log.ts +166 -0
  1073. package/src/internal/LogLine.ts +81 -0
  1074. package/src/internal/Logout.ts +356 -0
  1075. package/src/internal/Migrations.ts +120 -0
  1076. package/src/internal/OpenApi.ts +300 -0
  1077. package/src/internal/Owner.ts +310 -0
  1078. package/src/internal/Passkey.ts +1904 -0
  1079. package/src/internal/PendingKey.ts +104 -0
  1080. package/src/internal/Privy.ts +536 -0
  1081. package/src/internal/RateLimit.ts +346 -0
  1082. package/src/internal/Realm.ts +814 -0
  1083. package/src/internal/RequestId.ts +118 -0
  1084. package/src/internal/SignInGrant.ts +175 -0
  1085. package/src/internal/SigningKey.ts +319 -0
  1086. package/src/internal/TempoAccount.ts +545 -0
  1087. package/src/internal/TestInbox.ts +51 -0
  1088. package/src/internal/Timing.ts +172 -0
  1089. package/src/internal/Validation.ts +52 -0
  1090. package/src/internal/Verification.ts +58 -0
  1091. package/src/internal/Wallet.ts +101 -0
  1092. package/src/internal/owners/Passkey.ts +76 -0
  1093. package/src/internal/owners/Privy.ts +82 -0
  1094. package/src/internal/owners/Secp256k1.ts +139 -0
  1095. package/src/types/app.d.ts +39 -0
  1096. package/src/worker.ts +17 -0
@@ -0,0 +1,2 @@
1
+ import{a as e}from"./rolldown-runtime-BWaJ3C7D.js";/* empty css */import{E as t,a as n,s as r}from"./react-dom-DYzj0HXX.js";import{a as i,i as a,o,r as s}from"./Client-Dx3KrpJZ.js";import"./zyzz.config-CJRpjn0E.js";import{n as c,t as l}from"./Authentication-C3oNZAVX.js";import{t as u}from"./SignIn-DfeeLEmN.js";import{n as d,o as f,r as p}from"./Upgrade-Dbfm2nm0.js";import{n as m,t as h}from"./login-DCIrAbED.js";import{t as g}from"./WalletUpgrade-CWKc5fYt.js";var _=e(t()),v=r(),y=class extends Error{name=`Page.CeremonyError`};function b(e){let t=i(),r=n(),[a,s]=(0,_.useState)(void 0),[p,h]=(0,_.useState)(e.upgrade??void 0),[b,D]=(0,_.useState)(!1),A=f({pending:p?.pending}),j=c({mutationFn:()=>o(t.v1.auth.logout.$post()),onSuccess:()=>window.location.reload()}),M=c({async mutationFn(n){let r=n.assertion??await z({}),i=await o(t.v1.auth.passkey.verify.$post({json:{assertion:r,...O()}}));return`step`in i?i:{...i,upgrade:await x(t,{chain:e.chain,redirect:i.redirect})}}}),N=c({mutationFn:B}),P=c({mutationFn:B}),F=(0,_.useRef)(void 0);(0,_.useEffect)(()=>{e.passkeys&&!p&&(F.current??=e.passkeyOptions&&!w.has(e.passkeyOptions)?{at:performance.timeOrigin,options:e.passkeyOptions}:{at:Date.now(),options:R({}).catch(()=>void 0)})},[e.passkeyOptions,e.passkeys,p]),(0,_.useEffect)(()=>{if(!N.isSuccess)return;let e=window.setTimeout(()=>N.reset(),C);return()=>window.clearTimeout(e)},[N.isSuccess,N.reset]);let I=c({async mutationFn(n){let r=a?{assertion:await z({link:a}),link:a}:{},i=await o(t.v1.auth.code.verify.$post({json:{...n,...r,...O()}}));return{...i,upgrade:await x(t,{chain:e.chain,redirect:i.redirect})}}}),L=P.isSuccess?P.variables.email:void 0;function R(n){return m(t,{link:n.link,oauthQuery:O().oauth_query,userCode:e.userCode})}async function z(e){let{link:t}=e,{allowCredentials:n,...r}=(await(async()=>{let e=t?void 0:F.current;if(F.current=void 0,e&&w.add(e.options),e&&Date.now()-e.at<S){let t=await e.options;if(t&&Date.now()-e.at<S)return t}return await R({link:t})})()).options.publicKey;try{return await l({getFn:e=>navigator.credentials.get(e),options:{publicKey:{...r,...n?{allowCredentials:n}:{}}}})}catch(e){throw new y(`Passkey ceremony failed.`,{cause:e})}}function B(e){return o(t.v1.auth.code.$post({json:e}))}function V(e){e.preventDefault(),!(P.isPending||M.isPending)&&(M.reset(),P.mutate({email:String(new FormData(e.currentTarget).get(`email`))}))}function H(e){if(e.preventDefault(),!L||I.isPending||I.isSuccess)return;let t=e.currentTarget;N.reset(),I.mutate({code:String(new FormData(t).get(`code`)),email:L},{onError(e){T(e)&&s(void 0);let n=t.elements.namedItem(`code`);n instanceof HTMLInputElement&&(n.value=``,n.focus())},onSuccess(e){U(e)}})}function U(e){e.upgrade?h({pending:e.upgrade,redirect:e.redirect}):W(e)}function W(t){t.redirect?window.location.assign(t.redirect):e.returnTo?window.location.assign(e.returnTo):r.navigate({to:`/`})}function G(){M.isPending||(P.reset(),M.mutate({},{onSuccess:K}))}function K(e){`step`in e?s(e.step.link):U(e)}function q(){!L||I.isPending||I.isSuccess||(I.reset(),N.mutate({email:L}))}function J(){M.reset(),N.reset(),P.reset(),s(void 0),I.reset()}function Y(){M.reset(),P.reset(),s(void 0)}let X=L?I.error??N.error:P.error??M.error;return p?(0,v.jsx)(`main`,{className:k.page?`z_tempo_2d_id-0xm92Y0 z_tempo_2d_id-0xm92Y1 z_tempo_2d_id-0xm92Y2 z_tempo_2d_id-0xm92Y3 z_tempo_2d_id-0xm92Y4`:k.page().className,children:(0,v.jsx)(g,{error:(()=>{let e=j.error??A.error;if(!(!e||A.stale&&!j.error))return d(e)})(),onContinue:()=>A.mutate(void 0,{onSuccess:()=>W(p)}),onSignIn:A.stale?()=>j.mutate():void 0,onSkip:()=>{D(!0),W(p)},preparing:A.preparing,skipping:b,upgrading:A.isPending||A.isSuccess||j.isPending||j.isSuccess})}):(0,v.jsx)(`main`,{className:k.page?`z_tempo_2d_id-0xm92Y0 z_tempo_2d_id-0xm92Y1 z_tempo_2d_id-0xm92Y2 z_tempo_2d_id-0xm92Y3 z_tempo_2d_id-0xm92Y4`:k.page().className,children:(0,v.jsx)(u,{autoFocus:!0,device:!!e.returnTo,email:L,error:X?E(X,{code:!!L}):void 0,invalid:!!(L?I.error:P.error),linking:!!a,onChangeEmail:J,onPasskey:e.passkeys?G:void 0,onResend:q,onStartOver:Y,onSubmitCode:H,onSubmitEmail:V,passkeyPending:M.isPending,request:e.request??void 0,resend:N.isPending?`pending`:N.isSuccess?`sent`:`idle`,sending:P.isPending,verified:I.isSuccess,verifying:I.isPending})})}async function x(e,t){let{chain:n,redirect:r}=t;if(n&&(r===null||new URL(r,window.location.origin).origin===window.location.origin))return await p(e,{chain:n})}var S=24e4,C=5e3,w=new WeakSet;function T(e){if(e instanceof y)return!0;let t=a(e);return t===`passkey_link_expired`||t===`passkey_not_permitted`||t===`webauthn_rejected`}function E(e,t){return t.code&&(e instanceof y||a(e)===`webauthn_rejected`)?`Your passkey did not confirm the sign-in. Enter the code again to sign in with email only.`:e instanceof y?D(e).includes(`NotAllowedError`)?`Passkey sign-in was canceled. Try again, or continue with email.`:`Passkey sign-in failed. Try again, or continue with email.`:s(e)}function D(e){return e instanceof Error?[e.name,...D(e.cause)]:[]}function O(){let e=new URLSearchParams(window.location.search);return e.has(`sig`)?{oauth_query:e.toString()}:{}}var k;(function(e){e.page=1})(k||={});var A=()=>(0,v.jsx)(b,{...h.useLoaderData()});export{A as component};
2
+ //# sourceMappingURL=login-BLq3tEEr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-BLq3tEEr.js","names":["useMutation","useRouter","parseResponse","useEffect","useRef","useState","Authentication","Client","Upgrade","SignIn","WalletUpgrade","style","CeremonyError","Error","name","Route","Page","props","client","use","router","link","setLink","undefined","upgrade","setUpgrade","skipping","setSkipping","upgrading","pending","signOut","mutationFn","v1","auth","logout","$post","onSuccess","window","location","reload","passkey","variables","assertion","ceremony","data","verify","json","oauthQuery","waiting","chain","redirect","resend","sendCode","send","prefetched","passkeys","current","passkeyOptions","taken","has","at","performance","timeOrigin","options","Date","now","requestOptions","catch","isSuccess","timer","setTimeout","reset","sentDelay","clearTimeout","linked","code","email","oauth_query","userCode","response","entry","add","prefetchLifetime","prefetchedOptions","allowCredentials","publicKey","sign","getFn","request","navigator","credentials","get","error","cause","submitEmail","event","preventDefault","isPending","mutate","String","FormData","currentTarget","submitCode","form","onError","linkFailed","field","elements","namedItem","HTMLInputElement","value","focus","signedIn","continueTo","assign","returnTo","navigate","to","signInWithPasskey","applyPasskey","step","sendAgain","changeEmail","startOver","styles","page","className","stale","message","preparing","Boolean","URL","origin","WeakSet","reason","names","includes","params","URLSearchParams","search","toString","_styles","SplitComponent","useLoaderData","component","Client.use","useState","Upgrade.use","useRef","Authentication.sign","Upgrade.message","Upgrade.pending","reason","Client.reason","Client.message","__toESM","require_react","useRouter","require_jsx_runtime","use","reason","message$1","useMutation","sign","SignIn","message$2","use$1","pending","passkeyOptions","Route","WalletUpgrade","import_react","import_jsx_runtime","CeremonyError","Page","client","router","link","setLink","upgrade","setUpgrade","props","skipping","setSkipping","upgrading","signOut","parseResponse","passkey","assertion","variables","ceremony","data","oauthQuery","waiting","resend","sendCode","send","prefetched","taken","requestOptions","timer","sentDelay","verify","linked","email","options","publicKey","entry","prefetchLifetime","prefetchedOptions","request","allowCredentials","error","submitEmail","event","submitCode","form","linkFailed","field","signedIn","continueTo","signInWithPasskey","applyPasskey","sendAgain","changeEmail","startOver","styles","message","chain","redirect","reason$1","names","params","SplitComponent"],"sources":["../../../routes/login.tsx?tsr-split=component"],"sourcesContent":["/**\n * The sign-in page: an emailed code or a passkey. A wallet.tempo passkey without an email waits for\n * the code that links it. After a sign-in, and for a visitor who already signed in, a wallet.tempo\n * passkey's wallet that waits for its upgrade on a chain whose accounts are configurable shows the\n * upgrade step. @module\n */\nimport { useMutation } from '@tanstack/react-query'\nimport { createFileRoute, useRouter } from '@tanstack/react-router'\nimport { parseResponse } from 'hono/client'\nimport { type FormEvent, useEffect, useRef, useState } from 'react'\nimport { Authentication } from 'webauthx/client'\nimport type * as Chain from '../../internal/Chain.js'\nimport * as ChainName from '../../internal/ChainName.js'\nimport * as Client from '../lib/Client.js'\nimport * as Loader from '../lib/Loader.js'\nimport * as Upgrade from '../lib/Upgrade.js'\nimport { SignIn } from '../screens/SignIn.js'\nimport { WalletUpgrade } from '../screens/WalletUpgrade.js'\nimport { style } from '../zyzz.config.js'\n\n/** A signed passkey assertion, as the browser returns it. */\ntype Assertion = Awaited<ReturnType<typeof Authentication.sign>>\n\n/** Wraps a failure of the browser's passkey ceremony. */\nclass CeremonyError extends Error {\n override name = 'Page.CeremonyError'\n}\n\nexport const Route = createFileRoute('/login')({\n component: () => <Page {...Route.useLoaderData()} />,\n /**\n * Redirects a signed-in user to `return_to` or the account, unless the request is signed, or a\n * wallet upgrade waits, which the page shows first. Otherwise returns the sign-in methods.\n */\n loader: async (match): Promise<Page.Props> => {\n const query = new URLSearchParams(match.location.searchStr)\n const signed = query.has('sig')\n const returnTo = query.get('return_to')\n const client = Client.create()\n const [session, methods] = await Promise.all([\n parseResponse(client.v1.auth.session.$get()),\n parseResponse(\n client.v1.auth.methods.$get({\n query: {\n // The API names the app only from a signed authorization request.\n ...(signed ? { oauth_query: query.toString() } : {}),\n ...(returnTo ? { return_to: returnTo } : {}),\n },\n }),\n ),\n ])\n // The step upgrades on the chain that the page shows, Tempo mainnet without one. An app's or a\n // device's request shows it on its own approval page instead, for its key's chain.\n const chain =\n signed || returnTo\n ? null\n : (ChainName.read(query.get('chain')) ?? 'mainnet')\n // A visitor who already signed in sees the wallet upgrade that waits before the redirect.\n const upgrade = await (async () => {\n if (!session.user || signed) return null\n // The redirect to the account page keeps the sign-in page's chain.\n const redirect =\n methods.return_to ??\n (chain && chain !== 'mainnet' ? `/?chain=${chain}` : '/')\n const pending = chain\n ? await Upgrade.pending(client, { chain })\n : undefined\n if (!pending) Loader.redirect({ href: redirect })\n return { pending, redirect }\n })()\n\n return {\n chain,\n // A server render requests the passkey button's options beside the page and streams them in\n // its response, so the page sends no request for them once it hydrates. The page renders\n // without them, so their refusal leaves its status as it is.\n passkeyOptions:\n typeof window === 'undefined' && methods.passkeys && !upgrade\n ? passkeyOptions(Client.create({ optional: true }), {\n oauthQuery: signed ? query.toString() : undefined,\n userCode: methods.user_code,\n }).catch(() => undefined)\n : null,\n passkeys: methods.passkeys,\n request: methods.app\n ? {\n app: methods.app,\n host: methods.host,\n key: methods.request?.key ?? null,\n verified: methods.verified,\n }\n : null,\n returnTo: methods.return_to,\n upgrade,\n userCode: methods.user_code,\n }\n },\n // The loader reads the whole query, so a change to any parameter loads the page again.\n loaderDeps: (match) => ({ search: match.search }),\n server: {\n handlers: {\n // The sign-in form posts here only when it is submitted before the page hydrates, and the page\n // then sends the code itself. The redirect keeps the query, so an app's signed authorization\n // request stays on the page.\n POST: (options) =>\n new Response(null, {\n headers: { location: `/login${new URL(options.request.url).search}` },\n status: 303,\n }),\n },\n },\n})\n\n/** Renders the page. */\nfunction Page(props: Page.Props) {\n const client = Client.use()\n const router = useRouter()\n // The email step's link, while a wallet.tempo passkey waits for the code that links it.\n const [link, setLink] = useState<string | undefined>(undefined)\n // After a sign-in, the wallet upgrade that waits, and where the sign-in continues after it.\n const [upgrade, setUpgrade] = useState<\n { pending: Upgrade.Pending; redirect: string | null } | undefined\n >(props.upgrade ?? undefined)\n const [skipping, setSkipping] = useState(false)\n const upgrading = Upgrade.use({ pending: upgrade?.pending })\n // A session older than 10 minutes cannot upgrade. Without a session, the page shows the sign-in\n // again, whose fresh session shows the step.\n const signOut = useMutation({\n mutationFn: () => parseResponse(client.v1.auth.logout.$post()),\n onSuccess: () => window.location.reload(),\n })\n const passkey = useMutation({\n async mutationFn(variables: { assertion?: Assertion | undefined }) {\n const assertion = variables.assertion ?? (await ceremony({}))\n const data = await parseResponse(\n client.v1.auth.passkey.verify.$post({\n json: { assertion, ...oauthQuery() },\n }),\n )\n if ('step' in data) return data\n // The discovery runs in the request, so a reset drops its result with the sign-in's.\n return {\n ...data,\n upgrade: await waiting(client, {\n chain: props.chain,\n redirect: data.redirect,\n }),\n }\n },\n })\n const resend = useMutation({ mutationFn: sendCode })\n const send = useMutation({ mutationFn: sendCode })\n\n // The passkey button's options, requested once the sign-in form shows, so its click starts the\n // ceremony without a request. A click takes them once, within their challenge's lifetime.\n const prefetched = useRef<\n | {\n at: number\n options: Promise<PasskeyOptions | undefined>\n }\n | undefined\n >(undefined)\n useEffect(() => {\n if (!props.passkeys || upgrade) return\n // The server render's options were requested with this document, so their lifetime runs from\n // its navigation. The router can render the same loader data again after a navigation back to\n // the page, so a document signs them at most once.\n prefetched.current ??=\n props.passkeyOptions && !taken.has(props.passkeyOptions)\n ? { at: performance.timeOrigin, options: props.passkeyOptions }\n : {\n at: Date.now(),\n // A failed request leaves no options, and the click requests them again, which shows\n // its error.\n options: requestOptions({}).catch(() => undefined),\n }\n }, [props.passkeyOptions, props.passkeys, upgrade])\n\n // The confirmation of a resent code clears after a short time, so the button offers a resend again.\n useEffect(() => {\n if (!resend.isSuccess) return\n const timer = window.setTimeout(() => resend.reset(), sentDelay)\n return () => window.clearTimeout(timer)\n }, [resend.isSuccess, resend.reset])\n\n const verify = useMutation({\n async mutationFn(variables: { code: string; email: string }) {\n // The link's passkey signs again, so a page left at the email step links nothing for the next\n // person, who cannot sign with it.\n const linked = link ? { assertion: await ceremony({ link }), link } : {}\n const data = await parseResponse(\n client.v1.auth.code.verify.$post({\n json: { ...variables, ...linked, ...oauthQuery() },\n }),\n )\n // The discovery runs in the request, so a reset drops its result with the sign-in's.\n return {\n ...data,\n upgrade: await waiting(client, {\n chain: props.chain,\n redirect: data.redirect,\n }),\n }\n },\n })\n const email = send.isSuccess ? send.variables.email : undefined\n\n /** Requests passkey options. With `link`, it requests the email step's passkey. */\n function requestOptions(variables: { link?: string | undefined }) {\n return passkeyOptions(client, {\n link: variables.link,\n oauthQuery: oauthQuery().oauth_query,\n userCode: props.userCode,\n })\n }\n\n /**\n * Signs passkey options: the prefetched ones once, or new ones. With `link`, it requests the email\n * step's passkey, whose options name it.\n */\n async function ceremony(options: { link?: string | undefined }) {\n const { link } = options\n const response = await (async () => {\n const entry = link ? undefined : prefetched.current\n prefetched.current = undefined\n if (entry) taken.add(entry.options)\n if (entry && Date.now() - entry.at < prefetchLifetime) {\n const prefetchedOptions = await entry.options\n // The request can settle past the lifetime, such as in a suspended tab.\n if (prefetchedOptions && Date.now() - entry.at < prefetchLifetime)\n return prefetchedOptions\n }\n return await requestOptions({ link })\n })()\n // The response reads optional fields as possibly `undefined`, which the ceremony's options\n // omit instead.\n const { allowCredentials, ...publicKey } = response.options.publicKey\n try {\n return await Authentication.sign({\n // ox types the request with optional members that the DOM types leave out when absent. The\n // object is the one that ox built for `navigator.credentials.get`.\n getFn: (request) =>\n navigator.credentials.get(request as CredentialRequestOptions),\n options: {\n publicKey: {\n ...publicKey,\n ...(allowCredentials ? { allowCredentials } : {}),\n },\n },\n })\n } catch (error) {\n throw new CeremonyError('Passkey ceremony failed.', { cause: error })\n }\n }\n\n function sendCode(variables: { email: string }) {\n return parseResponse(client.v1.auth.code.$post({ json: variables }))\n }\n\n function submitEmail(event: FormEvent<HTMLFormElement>) {\n event.preventDefault()\n // One sign-in runs at a time, since a passkey sign-in sets its own session.\n if (send.isPending || passkey.isPending) return\n passkey.reset()\n send.mutate({\n email: String(new FormData(event.currentTarget).get('email')),\n })\n }\n\n function submitCode(event: FormEvent<HTMLFormElement>) {\n event.preventDefault()\n // A complete code submits the form, and Enter can submit it again before the first returns.\n if (!email || verify.isPending || verify.isSuccess) return\n const form = event.currentTarget\n resend.reset()\n verify.mutate(\n { code: String(new FormData(form).get('code')), email },\n {\n onError(error) {\n // An expired link, or a passkey that does not sign again, leaves the code valid, so the next\n // attempt signs in with email only.\n if (linkFailed(error)) setLink(undefined)\n // The refused code clears, so the next one can be typed at once.\n const field = form.elements.namedItem('code')\n if (!(field instanceof HTMLInputElement)) return\n field.value = ''\n field.focus()\n },\n onSuccess(data) {\n // The accepted code shows green while the next page loads, so the confirmation adds no\n // wait to the sign-in.\n signedIn(data)\n },\n },\n )\n }\n\n /** Continues a sign-in, after the upgrade step when a wallet upgrade waits. */\n function signedIn(data: {\n redirect: string | null\n upgrade: Upgrade.Pending | undefined\n }) {\n if (data.upgrade)\n setUpgrade({ pending: data.upgrade, redirect: data.redirect })\n else continueTo(data)\n }\n\n /** Continues to the app's redirect, to `returnTo`, or to the account. */\n function continueTo(data: { redirect: string | null }) {\n if (data.redirect) window.location.assign(data.redirect)\n // The device page loads as a document, so its loader reads the code on the server, where a\n // refused lookup logs nothing in the browser.\n else if (props.returnTo) window.location.assign(props.returnTo)\n else void router.navigate({ to: '/' })\n }\n\n function signInWithPasskey() {\n if (passkey.isPending) return\n send.reset()\n // The result applies through the call's own callback, which a reset drops, so a sign-in that\n // returns after the email path takes over sets no link.\n passkey.mutate({}, { onSuccess: applyPasskey })\n }\n\n /** Continues a passkey sign-in, or requests the email for a wallet.tempo passkey. */\n function applyPasskey(data: NonNullable<typeof passkey.data>) {\n if ('step' in data) setLink(data.step.link)\n else signedIn(data)\n }\n\n function sendAgain() {\n if (!email || verify.isPending || verify.isSuccess) return\n verify.reset()\n resend.mutate({ email })\n }\n\n // A reset mutation drops the callbacks of its request, so a result that returns after the\n // address changes updates nothing. The passkey's link clears too, so the code of another address\n // in a shared browser links nothing.\n function changeEmail() {\n passkey.reset()\n resend.reset()\n send.reset()\n setLink(undefined)\n verify.reset()\n }\n\n // A tab left at the email step can reach the next person, who drops the passkey's link here. The\n // reset drops a pending code request too, so its result does not open the code step.\n function startOver() {\n passkey.reset()\n send.reset()\n setLink(undefined)\n }\n\n const error = (() => {\n if (email) return verify.error ?? resend.error\n return send.error ?? passkey.error\n })()\n if (upgrade)\n return (\n <main {...styles.page()}>\n <WalletUpgrade\n error={(() => {\n const error = signOut.error ?? upgrading.error\n if (!error || (upgrading.stale && !signOut.error)) return undefined\n return Upgrade.message(error)\n })()}\n onContinue={() =>\n upgrading.mutate(undefined, {\n onSuccess: () => continueTo(upgrade),\n })\n }\n onSignIn={upgrading.stale ? () => signOut.mutate() : undefined}\n onSkip={() => {\n setSkipping(true)\n continueTo(upgrade)\n }}\n preparing={upgrading.preparing}\n skipping={skipping}\n // The upgraded wallet holds the button while the next page loads.\n upgrading={\n upgrading.isPending ||\n upgrading.isSuccess ||\n signOut.isPending ||\n signOut.isSuccess\n }\n />\n </main>\n )\n\n return (\n <main {...styles.page()}>\n <SignIn\n autoFocus\n // Sign-in returns only to the device page, so any `return_to` names a device approval.\n device={Boolean(props.returnTo)}\n email={email}\n error={error ? message(error, { code: Boolean(email) }) : undefined}\n invalid={Boolean(email ? verify.error : send.error)}\n linking={Boolean(link)}\n onChangeEmail={changeEmail}\n onPasskey={props.passkeys ? signInWithPasskey : undefined}\n onResend={sendAgain}\n onStartOver={startOver}\n onSubmitCode={submitCode}\n onSubmitEmail={submitEmail}\n passkeyPending={passkey.isPending}\n request={props.request ?? undefined}\n resend={(() => {\n if (resend.isPending) return 'pending'\n if (resend.isSuccess) return 'sent'\n return 'idle'\n })()}\n sending={send.isPending}\n verified={verify.isSuccess}\n verifying={verify.isPending}\n />\n </main>\n )\n}\n\ndeclare namespace Page {\n type Props = {\n /**\n * The chain whose wallet upgrade the step offers: the page's `chain`, or `mainnet`. `null` for\n * an app's or a device's request, whose approval page offers it for the key's chain.\n */\n chain: Chain.Chain | null\n /**\n * The passkey button's options, which a server render requests and streams in, or `null` for a\n * render in the browser or a page without passkeys. A failed request resolves to `undefined`.\n */\n passkeyOptions: Promise<PasskeyOptions | undefined> | null\n /** Whether the app's realms offer passkey sign-in. */\n passkeys: boolean\n /** The app's request that the sign-in continues, with its key, or `null`. */\n request: SignIn.Props['request'] | null\n /** The device page's path that sign-in returns to, or `null` for the account. */\n returnTo: string | null\n /**\n * For a visitor who already signed in, the wallet upgrade that waits and the path that follows\n * it, or `null`.\n */\n upgrade: { pending: Upgrade.Pending; redirect: string } | null\n /** The device page's user code, or `null`. */\n userCode: string | null\n }\n}\n\n/**\n * Returns the wallet upgrade on `chain` that waits before a sign-in continues to `redirect`, or\n * `undefined`, as without `chain`. A redirect that leaves Tempo ID carries the app's authorization\n * code, which expires, so the step never holds it, and the next approval or the account page offers\n * the upgrade.\n */\nasync function waiting(\n client: Client.Client,\n options: { chain: Chain.Chain | null; redirect: string | null },\n) {\n const { chain, redirect } = options\n if (!chain) return undefined\n if (\n redirect !== null &&\n new URL(redirect, window.location.origin).origin !== window.location.origin\n )\n return undefined\n return await Upgrade.pending(client, { chain })\n}\n\n/**\n * How long the page uses prefetched passkey options, in milliseconds: a minute short of their\n * challenge's 5 minutes, so the challenge stays valid through the ceremony.\n */\nconst prefetchLifetime = 4 * 60 * 1000\n\n/** Milliseconds that the button shows \"Code sent\" after a resend. */\nconst sentDelay = 5000\n\n/**\n * The server render's passkey options that a click took, whose challenge is spent. Only a click in\n * the browser adds to it, so it lives as long as the document.\n */\nconst taken = new WeakSet<Promise<PasskeyOptions | undefined>>()\n\n/** Returns whether `error` refused the email step's link, which leaves the code valid. */\nfunction linkFailed(error: unknown) {\n if (error instanceof CeremonyError) return true\n const reason = Client.reason(error)\n return (\n reason === 'passkey_link_expired' ||\n reason === 'passkey_not_permitted' ||\n reason === 'webauthn_rejected'\n )\n}\n\n/** Returns the message for `error`, such as for a canceled ceremony. */\nfunction message(error: unknown, options: message.Options) {\n // At the code step, only the link's passkey runs a ceremony, and its failure drops the link. An\n // expired or refused link keeps the refusal's own message.\n if (\n options.code &&\n (error instanceof CeremonyError ||\n Client.reason(error) === 'webauthn_rejected')\n )\n return 'Your passkey did not confirm the sign-in. Enter the code again to sign in with email only.'\n if (!(error instanceof CeremonyError)) return Client.message(error)\n if (names(error).includes('NotAllowedError'))\n return 'Passkey sign-in was canceled. Try again, or continue with email.'\n return 'Passkey sign-in failed. Try again, or continue with email.'\n}\n\ndeclare namespace message {\n type Options = {\n /** Whether the page shows the code step, where a refused link drops the link. */\n code: boolean\n }\n}\n\n/** Returns the names of `error` and its causes. */\nfunction names(error: unknown): readonly string[] {\n if (!(error instanceof Error)) return []\n return [error.name, ...names(error.cause)]\n}\n\n/** Returns the page's signed request as `oauth_query`, or nothing. */\n/** The options of a passkey sign-in, from `POST /v1/auth/passkey/options`. */\ntype PasskeyOptions = Awaited<ReturnType<typeof passkeyOptions>>\n\n/**\n * Requests passkey options for the sign-in that `oauthQuery` or `userCode` continues. With `link`,\n * it requests the email step's passkey.\n */\nfunction passkeyOptions(\n client: Client.Client,\n options: passkeyOptions.Options,\n) {\n const { link, oauthQuery, userCode } = options\n return parseResponse(\n client.v1.auth.passkey.options.$post({\n json: {\n ...(link ? { link } : {}),\n ...(oauthQuery ? { oauth_query: oauthQuery } : {}),\n // The API reads the device app from the code itself, so the code selects its realms.\n ...(userCode ? { user_code: userCode } : {}),\n },\n }),\n )\n}\n\ndeclare namespace passkeyOptions {\n type Options = {\n /** The email step's passkey link, whose passkey the options name. */\n link?: string | undefined\n /** The app's signed authorization request that the sign-in continues. */\n oauthQuery?: string | undefined\n /** The device page's user code, whose app selects the realms. */\n userCode: string | null\n }\n}\n\nfunction oauthQuery(): { oauth_query?: string } {\n const params = new URLSearchParams(window.location.search)\n if (!params.has('sig')) return {}\n return { oauth_query: params.toString() }\n}\n\nnamespace styles {\n export const page = style({\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n minHeight: '100dvh !custom',\n paddingBlock: '64',\n paddingInline: '16',\n })\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ /* empty css */import{n as e}from"./ChainName-BMnJyJrd.js";import{n as t,t as n}from"./lazyRouteComponent-DPOOPZw_.js";import{n as r,o as i}from"./Client-Dx3KrpJZ.js";import"./zyzz.config-CJRpjn0E.js";import{t as a}from"./Loader-DnKC9P5p.js";import{r as o}from"./Upgrade-Dbfm2nm0.js";function s(e,t){let{link:n,oauthQuery:r,userCode:a}=t;return i(e.v1.auth.passkey.options.$post({json:{...n?{link:n}:{},...r?{oauth_query:r}:{},...a?{user_code:a}:{}}}))}var c=t(`/login`)({component:n(()=>import(`./login-BLq3tEEr.js`),`component`),loader:async t=>{let n=new URLSearchParams(t.location.searchStr),c=n.has(`sig`),l=n.get(`return_to`),u=r(),[d,f]=await Promise.all([i(u.v1.auth.session.$get()),i(u.v1.auth.methods.$get({query:{...c?{oauth_query:n.toString()}:{},...l?{return_to:l}:{}}}))]),p=c||l?null:e(n.get(`chain`))??`mainnet`,m=await(async()=>{if(!d.user||c)return null;let e=f.return_to??(p&&p!==`mainnet`?`/?chain=${p}`:`/`),t=p?await o(u,{chain:p}):void 0;return t||a({href:e}),{pending:t,redirect:e}})();return{chain:p,passkeyOptions:typeof window>`u`&&f.passkeys&&!m?s(r({optional:!0}),{oauthQuery:c?n.toString():void 0,userCode:f.user_code}).catch(()=>void 0):null,passkeys:f.passkeys,request:f.app?{app:f.app,host:f.host,key:f.request?.key??null,verified:f.verified}:null,returnTo:f.return_to,upgrade:m,userCode:f.user_code}},loaderDeps:e=>({search:e.search}),server:{handlers:{POST:e=>new Response(null,{headers:{location:`/login${new URL(e.request.url).search}`},status:303})}}}),l;(function(e){e.page=1})(l||={});export{s as n,c as t};
2
+ //# sourceMappingURL=login-DCIrAbED.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-DCIrAbED.js","names":["parseResponse","passkeyOptions","client","Client","options","Options","link","oauthQuery","userCode","v1","auth","passkey","$post","json","oauth_query","user_code","createFileRoute","parseResponse","Authentication","ChainName","Client","Loader","Upgrade","style","Assertion","Awaited","ReturnType","sign","CeremonyError","Error","name","Route","component","lazyRouteComponent","$$splitComponentImporter","loader","match","Promise","Page","Props","query","URLSearchParams","location","searchStr","signed","has","returnTo","get","client","create","session","methods","all","v1","auth","$get","oauth_query","toString","return_to","chain","read","upgrade","user","redirect","pending","undefined","href","passkeyOptions","window","passkeys","optional","oauthQuery","userCode","user_code","catch","request","app","host","key","verified","loaderDeps","search","server","handlers","POST","options","Response","headers","URL","url","status","PasskeyOptions","styles","page","Client.create","ChainName.read","redirect","pending","Upgrade.pending","read","createFileRoute","lazyRouteComponent","create","parseResponse","redirect","pending","passkeyOptions","options","client","link","oauthQuery","userCode","Route","query","match","signed","returnTo","session","methods","chain","upgrade","redirect$1","pending$1","styles"],"sources":["../../../routes/login.tsx?tsr-shared=1","../../../routes/login.tsx"],"sourcesContent":["/**\n * The sign-in page: an emailed code or a passkey. A wallet.tempo passkey without an email waits for\n * the code that links it. After a sign-in, and for a visitor who already signed in, a wallet.tempo\n * passkey's wallet that waits for its upgrade on a chain whose accounts are configurable shows the\n * upgrade step. @module\n */\nimport { useMutation } from '@tanstack/react-query'\nimport { createFileRoute, useRouter } from '@tanstack/react-router'\nimport { parseResponse } from 'hono/client'\nimport { type FormEvent, useEffect, useRef, useState } from 'react'\nimport { Authentication } from 'webauthx/client'\nimport type * as Chain from '../../internal/Chain.js'\nimport * as ChainName from '../../internal/ChainName.js'\nimport * as Client from '../lib/Client.js'\nimport * as Loader from '../lib/Loader.js'\nimport * as Upgrade from '../lib/Upgrade.js'\nimport { SignIn } from '../screens/SignIn.js'\nimport { WalletUpgrade } from '../screens/WalletUpgrade.js'\nimport { style } from '../zyzz.config.js'\n\n/** A signed passkey assertion, as the browser returns it. */\ntype Assertion = Awaited<ReturnType<typeof Authentication.sign>>\n\n/** Wraps a failure of the browser's passkey ceremony. */\nclass CeremonyError extends Error {\n override name = 'Page.CeremonyError'\n}\n\nexport const Route = createFileRoute('/login')({\n component: () => <Page {...Route.useLoaderData()} />,\n /**\n * Redirects a signed-in user to `return_to` or the account, unless the request is signed, or a\n * wallet upgrade waits, which the page shows first. Otherwise returns the sign-in methods.\n */\n loader: async (match): Promise<Page.Props> => {\n const query = new URLSearchParams(match.location.searchStr)\n const signed = query.has('sig')\n const returnTo = query.get('return_to')\n const client = Client.create()\n const [session, methods] = await Promise.all([\n parseResponse(client.v1.auth.session.$get()),\n parseResponse(\n client.v1.auth.methods.$get({\n query: {\n // The API names the app only from a signed authorization request.\n ...(signed ? { oauth_query: query.toString() } : {}),\n ...(returnTo ? { return_to: returnTo } : {}),\n },\n }),\n ),\n ])\n // The step upgrades on the chain that the page shows, Tempo mainnet without one. An app's or a\n // device's request shows it on its own approval page instead, for its key's chain.\n const chain =\n signed || returnTo\n ? null\n : (ChainName.read(query.get('chain')) ?? 'mainnet')\n // A visitor who already signed in sees the wallet upgrade that waits before the redirect.\n const upgrade = await (async () => {\n if (!session.user || signed) return null\n // The redirect to the account page keeps the sign-in page's chain.\n const redirect =\n methods.return_to ??\n (chain && chain !== 'mainnet' ? `/?chain=${chain}` : '/')\n const pending = chain\n ? await Upgrade.pending(client, { chain })\n : undefined\n if (!pending) Loader.redirect({ href: redirect })\n return { pending, redirect }\n })()\n\n return {\n chain,\n // A server render requests the passkey button's options beside the page and streams them in\n // its response, so the page sends no request for them once it hydrates. The page renders\n // without them, so their refusal leaves its status as it is.\n passkeyOptions:\n typeof window === 'undefined' && methods.passkeys && !upgrade\n ? passkeyOptions(Client.create({ optional: true }), {\n oauthQuery: signed ? query.toString() : undefined,\n userCode: methods.user_code,\n }).catch(() => undefined)\n : null,\n passkeys: methods.passkeys,\n request: methods.app\n ? {\n app: methods.app,\n host: methods.host,\n key: methods.request?.key ?? null,\n verified: methods.verified,\n }\n : null,\n returnTo: methods.return_to,\n upgrade,\n userCode: methods.user_code,\n }\n },\n // The loader reads the whole query, so a change to any parameter loads the page again.\n loaderDeps: (match) => ({ search: match.search }),\n server: {\n handlers: {\n // The sign-in form posts here only when it is submitted before the page hydrates, and the page\n // then sends the code itself. The redirect keeps the query, so an app's signed authorization\n // request stays on the page.\n POST: (options) =>\n new Response(null, {\n headers: { location: `/login${new URL(options.request.url).search}` },\n status: 303,\n }),\n },\n },\n})\n\n/** Renders the page. */\nfunction Page(props: Page.Props) {\n const client = Client.use()\n const router = useRouter()\n // The email step's link, while a wallet.tempo passkey waits for the code that links it.\n const [link, setLink] = useState<string | undefined>(undefined)\n // After a sign-in, the wallet upgrade that waits, and where the sign-in continues after it.\n const [upgrade, setUpgrade] = useState<\n { pending: Upgrade.Pending; redirect: string | null } | undefined\n >(props.upgrade ?? undefined)\n const [skipping, setSkipping] = useState(false)\n const upgrading = Upgrade.use({ pending: upgrade?.pending })\n // A session older than 10 minutes cannot upgrade. Without a session, the page shows the sign-in\n // again, whose fresh session shows the step.\n const signOut = useMutation({\n mutationFn: () => parseResponse(client.v1.auth.logout.$post()),\n onSuccess: () => window.location.reload(),\n })\n const passkey = useMutation({\n async mutationFn(variables: { assertion?: Assertion | undefined }) {\n const assertion = variables.assertion ?? (await ceremony({}))\n const data = await parseResponse(\n client.v1.auth.passkey.verify.$post({\n json: { assertion, ...oauthQuery() },\n }),\n )\n if ('step' in data) return data\n // The discovery runs in the request, so a reset drops its result with the sign-in's.\n return {\n ...data,\n upgrade: await waiting(client, {\n chain: props.chain,\n redirect: data.redirect,\n }),\n }\n },\n })\n const resend = useMutation({ mutationFn: sendCode })\n const send = useMutation({ mutationFn: sendCode })\n\n // The passkey button's options, requested once the sign-in form shows, so its click starts the\n // ceremony without a request. A click takes them once, within their challenge's lifetime.\n const prefetched = useRef<\n | {\n at: number\n options: Promise<PasskeyOptions | undefined>\n }\n | undefined\n >(undefined)\n useEffect(() => {\n if (!props.passkeys || upgrade) return\n // The server render's options were requested with this document, so their lifetime runs from\n // its navigation. The router can render the same loader data again after a navigation back to\n // the page, so a document signs them at most once.\n prefetched.current ??=\n props.passkeyOptions && !taken.has(props.passkeyOptions)\n ? { at: performance.timeOrigin, options: props.passkeyOptions }\n : {\n at: Date.now(),\n // A failed request leaves no options, and the click requests them again, which shows\n // its error.\n options: requestOptions({}).catch(() => undefined),\n }\n }, [props.passkeyOptions, props.passkeys, upgrade])\n\n // The confirmation of a resent code clears after a short time, so the button offers a resend again.\n useEffect(() => {\n if (!resend.isSuccess) return\n const timer = window.setTimeout(() => resend.reset(), sentDelay)\n return () => window.clearTimeout(timer)\n }, [resend.isSuccess, resend.reset])\n\n const verify = useMutation({\n async mutationFn(variables: { code: string; email: string }) {\n // The link's passkey signs again, so a page left at the email step links nothing for the next\n // person, who cannot sign with it.\n const linked = link ? { assertion: await ceremony({ link }), link } : {}\n const data = await parseResponse(\n client.v1.auth.code.verify.$post({\n json: { ...variables, ...linked, ...oauthQuery() },\n }),\n )\n // The discovery runs in the request, so a reset drops its result with the sign-in's.\n return {\n ...data,\n upgrade: await waiting(client, {\n chain: props.chain,\n redirect: data.redirect,\n }),\n }\n },\n })\n const email = send.isSuccess ? send.variables.email : undefined\n\n /** Requests passkey options. With `link`, it requests the email step's passkey. */\n function requestOptions(variables: { link?: string | undefined }) {\n return passkeyOptions(client, {\n link: variables.link,\n oauthQuery: oauthQuery().oauth_query,\n userCode: props.userCode,\n })\n }\n\n /**\n * Signs passkey options: the prefetched ones once, or new ones. With `link`, it requests the email\n * step's passkey, whose options name it.\n */\n async function ceremony(options: { link?: string | undefined }) {\n const { link } = options\n const response = await (async () => {\n const entry = link ? undefined : prefetched.current\n prefetched.current = undefined\n if (entry) taken.add(entry.options)\n if (entry && Date.now() - entry.at < prefetchLifetime) {\n const prefetchedOptions = await entry.options\n // The request can settle past the lifetime, such as in a suspended tab.\n if (prefetchedOptions && Date.now() - entry.at < prefetchLifetime)\n return prefetchedOptions\n }\n return await requestOptions({ link })\n })()\n // The response reads optional fields as possibly `undefined`, which the ceremony's options\n // omit instead.\n const { allowCredentials, ...publicKey } = response.options.publicKey\n try {\n return await Authentication.sign({\n // ox types the request with optional members that the DOM types leave out when absent. The\n // object is the one that ox built for `navigator.credentials.get`.\n getFn: (request) =>\n navigator.credentials.get(request as CredentialRequestOptions),\n options: {\n publicKey: {\n ...publicKey,\n ...(allowCredentials ? { allowCredentials } : {}),\n },\n },\n })\n } catch (error) {\n throw new CeremonyError('Passkey ceremony failed.', { cause: error })\n }\n }\n\n function sendCode(variables: { email: string }) {\n return parseResponse(client.v1.auth.code.$post({ json: variables }))\n }\n\n function submitEmail(event: FormEvent<HTMLFormElement>) {\n event.preventDefault()\n // One sign-in runs at a time, since a passkey sign-in sets its own session.\n if (send.isPending || passkey.isPending) return\n passkey.reset()\n send.mutate({\n email: String(new FormData(event.currentTarget).get('email')),\n })\n }\n\n function submitCode(event: FormEvent<HTMLFormElement>) {\n event.preventDefault()\n // A complete code submits the form, and Enter can submit it again before the first returns.\n if (!email || verify.isPending || verify.isSuccess) return\n const form = event.currentTarget\n resend.reset()\n verify.mutate(\n { code: String(new FormData(form).get('code')), email },\n {\n onError(error) {\n // An expired link, or a passkey that does not sign again, leaves the code valid, so the next\n // attempt signs in with email only.\n if (linkFailed(error)) setLink(undefined)\n // The refused code clears, so the next one can be typed at once.\n const field = form.elements.namedItem('code')\n if (!(field instanceof HTMLInputElement)) return\n field.value = ''\n field.focus()\n },\n onSuccess(data) {\n // The accepted code shows green while the next page loads, so the confirmation adds no\n // wait to the sign-in.\n signedIn(data)\n },\n },\n )\n }\n\n /** Continues a sign-in, after the upgrade step when a wallet upgrade waits. */\n function signedIn(data: {\n redirect: string | null\n upgrade: Upgrade.Pending | undefined\n }) {\n if (data.upgrade)\n setUpgrade({ pending: data.upgrade, redirect: data.redirect })\n else continueTo(data)\n }\n\n /** Continues to the app's redirect, to `returnTo`, or to the account. */\n function continueTo(data: { redirect: string | null }) {\n if (data.redirect) window.location.assign(data.redirect)\n // The device page loads as a document, so its loader reads the code on the server, where a\n // refused lookup logs nothing in the browser.\n else if (props.returnTo) window.location.assign(props.returnTo)\n else void router.navigate({ to: '/' })\n }\n\n function signInWithPasskey() {\n if (passkey.isPending) return\n send.reset()\n // The result applies through the call's own callback, which a reset drops, so a sign-in that\n // returns after the email path takes over sets no link.\n passkey.mutate({}, { onSuccess: applyPasskey })\n }\n\n /** Continues a passkey sign-in, or requests the email for a wallet.tempo passkey. */\n function applyPasskey(data: NonNullable<typeof passkey.data>) {\n if ('step' in data) setLink(data.step.link)\n else signedIn(data)\n }\n\n function sendAgain() {\n if (!email || verify.isPending || verify.isSuccess) return\n verify.reset()\n resend.mutate({ email })\n }\n\n // A reset mutation drops the callbacks of its request, so a result that returns after the\n // address changes updates nothing. The passkey's link clears too, so the code of another address\n // in a shared browser links nothing.\n function changeEmail() {\n passkey.reset()\n resend.reset()\n send.reset()\n setLink(undefined)\n verify.reset()\n }\n\n // A tab left at the email step can reach the next person, who drops the passkey's link here. The\n // reset drops a pending code request too, so its result does not open the code step.\n function startOver() {\n passkey.reset()\n send.reset()\n setLink(undefined)\n }\n\n const error = (() => {\n if (email) return verify.error ?? resend.error\n return send.error ?? passkey.error\n })()\n if (upgrade)\n return (\n <main {...styles.page()}>\n <WalletUpgrade\n error={(() => {\n const error = signOut.error ?? upgrading.error\n if (!error || (upgrading.stale && !signOut.error)) return undefined\n return Upgrade.message(error)\n })()}\n onContinue={() =>\n upgrading.mutate(undefined, {\n onSuccess: () => continueTo(upgrade),\n })\n }\n onSignIn={upgrading.stale ? () => signOut.mutate() : undefined}\n onSkip={() => {\n setSkipping(true)\n continueTo(upgrade)\n }}\n preparing={upgrading.preparing}\n skipping={skipping}\n // The upgraded wallet holds the button while the next page loads.\n upgrading={\n upgrading.isPending ||\n upgrading.isSuccess ||\n signOut.isPending ||\n signOut.isSuccess\n }\n />\n </main>\n )\n\n return (\n <main {...styles.page()}>\n <SignIn\n autoFocus\n // Sign-in returns only to the device page, so any `return_to` names a device approval.\n device={Boolean(props.returnTo)}\n email={email}\n error={error ? message(error, { code: Boolean(email) }) : undefined}\n invalid={Boolean(email ? verify.error : send.error)}\n linking={Boolean(link)}\n onChangeEmail={changeEmail}\n onPasskey={props.passkeys ? signInWithPasskey : undefined}\n onResend={sendAgain}\n onStartOver={startOver}\n onSubmitCode={submitCode}\n onSubmitEmail={submitEmail}\n passkeyPending={passkey.isPending}\n request={props.request ?? undefined}\n resend={(() => {\n if (resend.isPending) return 'pending'\n if (resend.isSuccess) return 'sent'\n return 'idle'\n })()}\n sending={send.isPending}\n verified={verify.isSuccess}\n verifying={verify.isPending}\n />\n </main>\n )\n}\n\ndeclare namespace Page {\n type Props = {\n /**\n * The chain whose wallet upgrade the step offers: the page's `chain`, or `mainnet`. `null` for\n * an app's or a device's request, whose approval page offers it for the key's chain.\n */\n chain: Chain.Chain | null\n /**\n * The passkey button's options, which a server render requests and streams in, or `null` for a\n * render in the browser or a page without passkeys. A failed request resolves to `undefined`.\n */\n passkeyOptions: Promise<PasskeyOptions | undefined> | null\n /** Whether the app's realms offer passkey sign-in. */\n passkeys: boolean\n /** The app's request that the sign-in continues, with its key, or `null`. */\n request: SignIn.Props['request'] | null\n /** The device page's path that sign-in returns to, or `null` for the account. */\n returnTo: string | null\n /**\n * For a visitor who already signed in, the wallet upgrade that waits and the path that follows\n * it, or `null`.\n */\n upgrade: { pending: Upgrade.Pending; redirect: string } | null\n /** The device page's user code, or `null`. */\n userCode: string | null\n }\n}\n\n/**\n * Returns the wallet upgrade on `chain` that waits before a sign-in continues to `redirect`, or\n * `undefined`, as without `chain`. A redirect that leaves Tempo ID carries the app's authorization\n * code, which expires, so the step never holds it, and the next approval or the account page offers\n * the upgrade.\n */\nasync function waiting(\n client: Client.Client,\n options: { chain: Chain.Chain | null; redirect: string | null },\n) {\n const { chain, redirect } = options\n if (!chain) return undefined\n if (\n redirect !== null &&\n new URL(redirect, window.location.origin).origin !== window.location.origin\n )\n return undefined\n return await Upgrade.pending(client, { chain })\n}\n\n/**\n * How long the page uses prefetched passkey options, in milliseconds: a minute short of their\n * challenge's 5 minutes, so the challenge stays valid through the ceremony.\n */\nconst prefetchLifetime = 4 * 60 * 1000\n\n/** Milliseconds that the button shows \"Code sent\" after a resend. */\nconst sentDelay = 5000\n\n/**\n * The server render's passkey options that a click took, whose challenge is spent. Only a click in\n * the browser adds to it, so it lives as long as the document.\n */\nconst taken = new WeakSet<Promise<PasskeyOptions | undefined>>()\n\n/** Returns whether `error` refused the email step's link, which leaves the code valid. */\nfunction linkFailed(error: unknown) {\n if (error instanceof CeremonyError) return true\n const reason = Client.reason(error)\n return (\n reason === 'passkey_link_expired' ||\n reason === 'passkey_not_permitted' ||\n reason === 'webauthn_rejected'\n )\n}\n\n/** Returns the message for `error`, such as for a canceled ceremony. */\nfunction message(error: unknown, options: message.Options) {\n // At the code step, only the link's passkey runs a ceremony, and its failure drops the link. An\n // expired or refused link keeps the refusal's own message.\n if (\n options.code &&\n (error instanceof CeremonyError ||\n Client.reason(error) === 'webauthn_rejected')\n )\n return 'Your passkey did not confirm the sign-in. Enter the code again to sign in with email only.'\n if (!(error instanceof CeremonyError)) return Client.message(error)\n if (names(error).includes('NotAllowedError'))\n return 'Passkey sign-in was canceled. Try again, or continue with email.'\n return 'Passkey sign-in failed. Try again, or continue with email.'\n}\n\ndeclare namespace message {\n type Options = {\n /** Whether the page shows the code step, where a refused link drops the link. */\n code: boolean\n }\n}\n\n/** Returns the names of `error` and its causes. */\nfunction names(error: unknown): readonly string[] {\n if (!(error instanceof Error)) return []\n return [error.name, ...names(error.cause)]\n}\n\n/** Returns the page's signed request as `oauth_query`, or nothing. */\n/** The options of a passkey sign-in, from `POST /v1/auth/passkey/options`. */\ntype PasskeyOptions = Awaited<ReturnType<typeof passkeyOptions>>\n\n/**\n * Requests passkey options for the sign-in that `oauthQuery` or `userCode` continues. With `link`,\n * it requests the email step's passkey.\n */\nfunction passkeyOptions(\n client: Client.Client,\n options: passkeyOptions.Options,\n) {\n const { link, oauthQuery, userCode } = options\n return parseResponse(\n client.v1.auth.passkey.options.$post({\n json: {\n ...(link ? { link } : {}),\n ...(oauthQuery ? { oauth_query: oauthQuery } : {}),\n // The API reads the device app from the code itself, so the code selects its realms.\n ...(userCode ? { user_code: userCode } : {}),\n },\n }),\n )\n}\n\ndeclare namespace passkeyOptions {\n type Options = {\n /** The email step's passkey link, whose passkey the options name. */\n link?: string | undefined\n /** The app's signed authorization request that the sign-in continues. */\n oauthQuery?: string | undefined\n /** The device page's user code, whose app selects the realms. */\n userCode: string | null\n }\n}\n\nfunction oauthQuery(): { oauth_query?: string } {\n const params = new URLSearchParams(window.location.search)\n if (!params.has('sig')) return {}\n return { oauth_query: params.toString() }\n}\n\nnamespace styles {\n export const page = style({\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n minHeight: '100dvh !custom',\n paddingBlock: '64',\n paddingInline: '16',\n })\n}\n","/**\n * The sign-in page: an emailed code or a passkey. A wallet.tempo passkey without an email waits for\n * the code that links it. After a sign-in, and for a visitor who already signed in, a wallet.tempo\n * passkey's wallet that waits for its upgrade on a chain whose accounts are configurable shows the\n * upgrade step. @module\n */\nimport { useMutation } from '@tanstack/react-query'\nimport { createFileRoute, useRouter } from '@tanstack/react-router'\nimport { parseResponse } from 'hono/client'\nimport { type FormEvent, useEffect, useRef, useState } from 'react'\nimport { Authentication } from 'webauthx/client'\nimport type * as Chain from '../../internal/Chain.js'\nimport * as ChainName from '../../internal/ChainName.js'\nimport * as Client from '../lib/Client.js'\nimport * as Loader from '../lib/Loader.js'\nimport * as Upgrade from '../lib/Upgrade.js'\nimport { SignIn } from '../screens/SignIn.js'\nimport { WalletUpgrade } from '../screens/WalletUpgrade.js'\nimport { style } from '../zyzz.config.js'\n\n/** A signed passkey assertion, as the browser returns it. */\ntype Assertion = Awaited<ReturnType<typeof Authentication.sign>>\n\n/** Wraps a failure of the browser's passkey ceremony. */\nclass CeremonyError extends Error {\n override name = 'Page.CeremonyError'\n}\n\nexport const Route = createFileRoute('/login')({\n component: () => <Page {...Route.useLoaderData()} />,\n /**\n * Redirects a signed-in user to `return_to` or the account, unless the request is signed, or a\n * wallet upgrade waits, which the page shows first. Otherwise returns the sign-in methods.\n */\n loader: async (match): Promise<Page.Props> => {\n const query = new URLSearchParams(match.location.searchStr)\n const signed = query.has('sig')\n const returnTo = query.get('return_to')\n const client = Client.create()\n const [session, methods] = await Promise.all([\n parseResponse(client.v1.auth.session.$get()),\n parseResponse(\n client.v1.auth.methods.$get({\n query: {\n // The API names the app only from a signed authorization request.\n ...(signed ? { oauth_query: query.toString() } : {}),\n ...(returnTo ? { return_to: returnTo } : {}),\n },\n }),\n ),\n ])\n // The step upgrades on the chain that the page shows, Tempo mainnet without one. An app's or a\n // device's request shows it on its own approval page instead, for its key's chain.\n const chain =\n signed || returnTo\n ? null\n : (ChainName.read(query.get('chain')) ?? 'mainnet')\n // A visitor who already signed in sees the wallet upgrade that waits before the redirect.\n const upgrade = await (async () => {\n if (!session.user || signed) return null\n // The redirect to the account page keeps the sign-in page's chain.\n const redirect =\n methods.return_to ??\n (chain && chain !== 'mainnet' ? `/?chain=${chain}` : '/')\n const pending = chain\n ? await Upgrade.pending(client, { chain })\n : undefined\n if (!pending) Loader.redirect({ href: redirect })\n return { pending, redirect }\n })()\n\n return {\n chain,\n // A server render requests the passkey button's options beside the page and streams them in\n // its response, so the page sends no request for them once it hydrates. The page renders\n // without them, so their refusal leaves its status as it is.\n passkeyOptions:\n typeof window === 'undefined' && methods.passkeys && !upgrade\n ? passkeyOptions(Client.create({ optional: true }), {\n oauthQuery: signed ? query.toString() : undefined,\n userCode: methods.user_code,\n }).catch(() => undefined)\n : null,\n passkeys: methods.passkeys,\n request: methods.app\n ? {\n app: methods.app,\n host: methods.host,\n key: methods.request?.key ?? null,\n verified: methods.verified,\n }\n : null,\n returnTo: methods.return_to,\n upgrade,\n userCode: methods.user_code,\n }\n },\n // The loader reads the whole query, so a change to any parameter loads the page again.\n loaderDeps: (match) => ({ search: match.search }),\n server: {\n handlers: {\n // The sign-in form posts here only when it is submitted before the page hydrates, and the page\n // then sends the code itself. The redirect keeps the query, so an app's signed authorization\n // request stays on the page.\n POST: (options) =>\n new Response(null, {\n headers: { location: `/login${new URL(options.request.url).search}` },\n status: 303,\n }),\n },\n },\n})\n\n/** Renders the page. */\nfunction Page(props: Page.Props) {\n const client = Client.use()\n const router = useRouter()\n // The email step's link, while a wallet.tempo passkey waits for the code that links it.\n const [link, setLink] = useState<string | undefined>(undefined)\n // After a sign-in, the wallet upgrade that waits, and where the sign-in continues after it.\n const [upgrade, setUpgrade] = useState<\n { pending: Upgrade.Pending; redirect: string | null } | undefined\n >(props.upgrade ?? undefined)\n const [skipping, setSkipping] = useState(false)\n const upgrading = Upgrade.use({ pending: upgrade?.pending })\n // A session older than 10 minutes cannot upgrade. Without a session, the page shows the sign-in\n // again, whose fresh session shows the step.\n const signOut = useMutation({\n mutationFn: () => parseResponse(client.v1.auth.logout.$post()),\n onSuccess: () => window.location.reload(),\n })\n const passkey = useMutation({\n async mutationFn(variables: { assertion?: Assertion | undefined }) {\n const assertion = variables.assertion ?? (await ceremony({}))\n const data = await parseResponse(\n client.v1.auth.passkey.verify.$post({\n json: { assertion, ...oauthQuery() },\n }),\n )\n if ('step' in data) return data\n // The discovery runs in the request, so a reset drops its result with the sign-in's.\n return {\n ...data,\n upgrade: await waiting(client, {\n chain: props.chain,\n redirect: data.redirect,\n }),\n }\n },\n })\n const resend = useMutation({ mutationFn: sendCode })\n const send = useMutation({ mutationFn: sendCode })\n\n // The passkey button's options, requested once the sign-in form shows, so its click starts the\n // ceremony without a request. A click takes them once, within their challenge's lifetime.\n const prefetched = useRef<\n | {\n at: number\n options: Promise<PasskeyOptions | undefined>\n }\n | undefined\n >(undefined)\n useEffect(() => {\n if (!props.passkeys || upgrade) return\n // The server render's options were requested with this document, so their lifetime runs from\n // its navigation. The router can render the same loader data again after a navigation back to\n // the page, so a document signs them at most once.\n prefetched.current ??=\n props.passkeyOptions && !taken.has(props.passkeyOptions)\n ? { at: performance.timeOrigin, options: props.passkeyOptions }\n : {\n at: Date.now(),\n // A failed request leaves no options, and the click requests them again, which shows\n // its error.\n options: requestOptions({}).catch(() => undefined),\n }\n }, [props.passkeyOptions, props.passkeys, upgrade])\n\n // The confirmation of a resent code clears after a short time, so the button offers a resend again.\n useEffect(() => {\n if (!resend.isSuccess) return\n const timer = window.setTimeout(() => resend.reset(), sentDelay)\n return () => window.clearTimeout(timer)\n }, [resend.isSuccess, resend.reset])\n\n const verify = useMutation({\n async mutationFn(variables: { code: string; email: string }) {\n // The link's passkey signs again, so a page left at the email step links nothing for the next\n // person, who cannot sign with it.\n const linked = link ? { assertion: await ceremony({ link }), link } : {}\n const data = await parseResponse(\n client.v1.auth.code.verify.$post({\n json: { ...variables, ...linked, ...oauthQuery() },\n }),\n )\n // The discovery runs in the request, so a reset drops its result with the sign-in's.\n return {\n ...data,\n upgrade: await waiting(client, {\n chain: props.chain,\n redirect: data.redirect,\n }),\n }\n },\n })\n const email = send.isSuccess ? send.variables.email : undefined\n\n /** Requests passkey options. With `link`, it requests the email step's passkey. */\n function requestOptions(variables: { link?: string | undefined }) {\n return passkeyOptions(client, {\n link: variables.link,\n oauthQuery: oauthQuery().oauth_query,\n userCode: props.userCode,\n })\n }\n\n /**\n * Signs passkey options: the prefetched ones once, or new ones. With `link`, it requests the email\n * step's passkey, whose options name it.\n */\n async function ceremony(options: { link?: string | undefined }) {\n const { link } = options\n const response = await (async () => {\n const entry = link ? undefined : prefetched.current\n prefetched.current = undefined\n if (entry) taken.add(entry.options)\n if (entry && Date.now() - entry.at < prefetchLifetime) {\n const prefetchedOptions = await entry.options\n // The request can settle past the lifetime, such as in a suspended tab.\n if (prefetchedOptions && Date.now() - entry.at < prefetchLifetime)\n return prefetchedOptions\n }\n return await requestOptions({ link })\n })()\n // The response reads optional fields as possibly `undefined`, which the ceremony's options\n // omit instead.\n const { allowCredentials, ...publicKey } = response.options.publicKey\n try {\n return await Authentication.sign({\n // ox types the request with optional members that the DOM types leave out when absent. The\n // object is the one that ox built for `navigator.credentials.get`.\n getFn: (request) =>\n navigator.credentials.get(request as CredentialRequestOptions),\n options: {\n publicKey: {\n ...publicKey,\n ...(allowCredentials ? { allowCredentials } : {}),\n },\n },\n })\n } catch (error) {\n throw new CeremonyError('Passkey ceremony failed.', { cause: error })\n }\n }\n\n function sendCode(variables: { email: string }) {\n return parseResponse(client.v1.auth.code.$post({ json: variables }))\n }\n\n function submitEmail(event: FormEvent<HTMLFormElement>) {\n event.preventDefault()\n // One sign-in runs at a time, since a passkey sign-in sets its own session.\n if (send.isPending || passkey.isPending) return\n passkey.reset()\n send.mutate({\n email: String(new FormData(event.currentTarget).get('email')),\n })\n }\n\n function submitCode(event: FormEvent<HTMLFormElement>) {\n event.preventDefault()\n // A complete code submits the form, and Enter can submit it again before the first returns.\n if (!email || verify.isPending || verify.isSuccess) return\n const form = event.currentTarget\n resend.reset()\n verify.mutate(\n { code: String(new FormData(form).get('code')), email },\n {\n onError(error) {\n // An expired link, or a passkey that does not sign again, leaves the code valid, so the next\n // attempt signs in with email only.\n if (linkFailed(error)) setLink(undefined)\n // The refused code clears, so the next one can be typed at once.\n const field = form.elements.namedItem('code')\n if (!(field instanceof HTMLInputElement)) return\n field.value = ''\n field.focus()\n },\n onSuccess(data) {\n // The accepted code shows green while the next page loads, so the confirmation adds no\n // wait to the sign-in.\n signedIn(data)\n },\n },\n )\n }\n\n /** Continues a sign-in, after the upgrade step when a wallet upgrade waits. */\n function signedIn(data: {\n redirect: string | null\n upgrade: Upgrade.Pending | undefined\n }) {\n if (data.upgrade)\n setUpgrade({ pending: data.upgrade, redirect: data.redirect })\n else continueTo(data)\n }\n\n /** Continues to the app's redirect, to `returnTo`, or to the account. */\n function continueTo(data: { redirect: string | null }) {\n if (data.redirect) window.location.assign(data.redirect)\n // The device page loads as a document, so its loader reads the code on the server, where a\n // refused lookup logs nothing in the browser.\n else if (props.returnTo) window.location.assign(props.returnTo)\n else void router.navigate({ to: '/' })\n }\n\n function signInWithPasskey() {\n if (passkey.isPending) return\n send.reset()\n // The result applies through the call's own callback, which a reset drops, so a sign-in that\n // returns after the email path takes over sets no link.\n passkey.mutate({}, { onSuccess: applyPasskey })\n }\n\n /** Continues a passkey sign-in, or requests the email for a wallet.tempo passkey. */\n function applyPasskey(data: NonNullable<typeof passkey.data>) {\n if ('step' in data) setLink(data.step.link)\n else signedIn(data)\n }\n\n function sendAgain() {\n if (!email || verify.isPending || verify.isSuccess) return\n verify.reset()\n resend.mutate({ email })\n }\n\n // A reset mutation drops the callbacks of its request, so a result that returns after the\n // address changes updates nothing. The passkey's link clears too, so the code of another address\n // in a shared browser links nothing.\n function changeEmail() {\n passkey.reset()\n resend.reset()\n send.reset()\n setLink(undefined)\n verify.reset()\n }\n\n // A tab left at the email step can reach the next person, who drops the passkey's link here. The\n // reset drops a pending code request too, so its result does not open the code step.\n function startOver() {\n passkey.reset()\n send.reset()\n setLink(undefined)\n }\n\n const error = (() => {\n if (email) return verify.error ?? resend.error\n return send.error ?? passkey.error\n })()\n if (upgrade)\n return (\n <main {...styles.page()}>\n <WalletUpgrade\n error={(() => {\n const error = signOut.error ?? upgrading.error\n if (!error || (upgrading.stale && !signOut.error)) return undefined\n return Upgrade.message(error)\n })()}\n onContinue={() =>\n upgrading.mutate(undefined, {\n onSuccess: () => continueTo(upgrade),\n })\n }\n onSignIn={upgrading.stale ? () => signOut.mutate() : undefined}\n onSkip={() => {\n setSkipping(true)\n continueTo(upgrade)\n }}\n preparing={upgrading.preparing}\n skipping={skipping}\n // The upgraded wallet holds the button while the next page loads.\n upgrading={\n upgrading.isPending ||\n upgrading.isSuccess ||\n signOut.isPending ||\n signOut.isSuccess\n }\n />\n </main>\n )\n\n return (\n <main {...styles.page()}>\n <SignIn\n autoFocus\n // Sign-in returns only to the device page, so any `return_to` names a device approval.\n device={Boolean(props.returnTo)}\n email={email}\n error={error ? message(error, { code: Boolean(email) }) : undefined}\n invalid={Boolean(email ? verify.error : send.error)}\n linking={Boolean(link)}\n onChangeEmail={changeEmail}\n onPasskey={props.passkeys ? signInWithPasskey : undefined}\n onResend={sendAgain}\n onStartOver={startOver}\n onSubmitCode={submitCode}\n onSubmitEmail={submitEmail}\n passkeyPending={passkey.isPending}\n request={props.request ?? undefined}\n resend={(() => {\n if (resend.isPending) return 'pending'\n if (resend.isSuccess) return 'sent'\n return 'idle'\n })()}\n sending={send.isPending}\n verified={verify.isSuccess}\n verifying={verify.isPending}\n />\n </main>\n )\n}\n\ndeclare namespace Page {\n type Props = {\n /**\n * The chain whose wallet upgrade the step offers: the page's `chain`, or `mainnet`. `null` for\n * an app's or a device's request, whose approval page offers it for the key's chain.\n */\n chain: Chain.Chain | null\n /**\n * The passkey button's options, which a server render requests and streams in, or `null` for a\n * render in the browser or a page without passkeys. A failed request resolves to `undefined`.\n */\n passkeyOptions: Promise<PasskeyOptions | undefined> | null\n /** Whether the app's realms offer passkey sign-in. */\n passkeys: boolean\n /** The app's request that the sign-in continues, with its key, or `null`. */\n request: SignIn.Props['request'] | null\n /** The device page's path that sign-in returns to, or `null` for the account. */\n returnTo: string | null\n /**\n * For a visitor who already signed in, the wallet upgrade that waits and the path that follows\n * it, or `null`.\n */\n upgrade: { pending: Upgrade.Pending; redirect: string } | null\n /** The device page's user code, or `null`. */\n userCode: string | null\n }\n}\n\n/**\n * Returns the wallet upgrade on `chain` that waits before a sign-in continues to `redirect`, or\n * `undefined`, as without `chain`. A redirect that leaves Tempo ID carries the app's authorization\n * code, which expires, so the step never holds it, and the next approval or the account page offers\n * the upgrade.\n */\nasync function waiting(\n client: Client.Client,\n options: { chain: Chain.Chain | null; redirect: string | null },\n) {\n const { chain, redirect } = options\n if (!chain) return undefined\n if (\n redirect !== null &&\n new URL(redirect, window.location.origin).origin !== window.location.origin\n )\n return undefined\n return await Upgrade.pending(client, { chain })\n}\n\n/**\n * How long the page uses prefetched passkey options, in milliseconds: a minute short of their\n * challenge's 5 minutes, so the challenge stays valid through the ceremony.\n */\nconst prefetchLifetime = 4 * 60 * 1000\n\n/** Milliseconds that the button shows \"Code sent\" after a resend. */\nconst sentDelay = 5000\n\n/**\n * The server render's passkey options that a click took, whose challenge is spent. Only a click in\n * the browser adds to it, so it lives as long as the document.\n */\nconst taken = new WeakSet<Promise<PasskeyOptions | undefined>>()\n\n/** Returns whether `error` refused the email step's link, which leaves the code valid. */\nfunction linkFailed(error: unknown) {\n if (error instanceof CeremonyError) return true\n const reason = Client.reason(error)\n return (\n reason === 'passkey_link_expired' ||\n reason === 'passkey_not_permitted' ||\n reason === 'webauthn_rejected'\n )\n}\n\n/** Returns the message for `error`, such as for a canceled ceremony. */\nfunction message(error: unknown, options: message.Options) {\n // At the code step, only the link's passkey runs a ceremony, and its failure drops the link. An\n // expired or refused link keeps the refusal's own message.\n if (\n options.code &&\n (error instanceof CeremonyError ||\n Client.reason(error) === 'webauthn_rejected')\n )\n return 'Your passkey did not confirm the sign-in. Enter the code again to sign in with email only.'\n if (!(error instanceof CeremonyError)) return Client.message(error)\n if (names(error).includes('NotAllowedError'))\n return 'Passkey sign-in was canceled. Try again, or continue with email.'\n return 'Passkey sign-in failed. Try again, or continue with email.'\n}\n\ndeclare namespace message {\n type Options = {\n /** Whether the page shows the code step, where a refused link drops the link. */\n code: boolean\n }\n}\n\n/** Returns the names of `error` and its causes. */\nfunction names(error: unknown): readonly string[] {\n if (!(error instanceof Error)) return []\n return [error.name, ...names(error.cause)]\n}\n\n/** Returns the page's signed request as `oauth_query`, or nothing. */\n/** The options of a passkey sign-in, from `POST /v1/auth/passkey/options`. */\ntype PasskeyOptions = Awaited<ReturnType<typeof passkeyOptions>>\n\n/**\n * Requests passkey options for the sign-in that `oauthQuery` or `userCode` continues. With `link`,\n * it requests the email step's passkey.\n */\nfunction passkeyOptions(\n client: Client.Client,\n options: passkeyOptions.Options,\n) {\n const { link, oauthQuery, userCode } = options\n return parseResponse(\n client.v1.auth.passkey.options.$post({\n json: {\n ...(link ? { link } : {}),\n ...(oauthQuery ? { oauth_query: oauthQuery } : {}),\n // The API reads the device app from the code itself, so the code selects its realms.\n ...(userCode ? { user_code: userCode } : {}),\n },\n }),\n )\n}\n\ndeclare namespace passkeyOptions {\n type Options = {\n /** The email step's passkey link, whose passkey the options name. */\n link?: string | undefined\n /** The app's signed authorization request that the sign-in continues. */\n oauthQuery?: string | undefined\n /** The device page's user code, whose app selects the realms. */\n userCode: string | null\n }\n}\n\nfunction oauthQuery(): { oauth_query?: string } {\n const params = new URLSearchParams(window.location.search)\n if (!params.has('sig')) return {}\n return { oauth_query: params.toString() }\n}\n\nnamespace styles {\n export const page = style({\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n minHeight: '100dvh !custom',\n paddingBlock: '64',\n paddingInline: '16',\n })\n}\n"],"mappings":"A,gTAqhBA,SAASC,EACPC,EACAE,EACA,CACA,GAAM,CAAEE,OAAMC,aAAYC,YAAaJ,EACvC,OAAOJ,EACLE,EAAOO,GAAGC,KAAKC,QAAQP,QAAQQ,MAAM,CACnCC,KAAM,CACJ,GAAIP,EAAO,CAAEA,MAAK,EAAI,CAAC,EACvB,GAAIC,EAAa,CAAEO,YAAaP,CAAW,EAAI,CAAC,EAEhD,GAAIC,EAAW,CAAEO,UAAWP,CAAS,EAAI,CAAC,CAC5C,CACF,CAAC,CACH,CACF,CCxgBA,IAAauB,EAAQf,EAAgB,QAAQ,CAAC,CAAC,CAC7CgB,UAASC,M,8BAAA,WAAA,EAKTE,OAAQ,KAAOC,IAA+B,CAC5C,IAAMI,EAAQ,IAAIC,gBAAgBL,EAAMM,SAASC,SAAS,EACpDC,EAASJ,EAAMK,IAAI,KAAK,EACxBC,EAAWN,EAAMO,IAAI,WAAW,EAChCC,EAAS5B,EAAc,EACvB,CAAC8B,EAASC,GAAW,MAAMd,QAAQe,IAAI,CAC3CnC,EAAc+B,EAAOK,GAAGC,KAAKJ,QAAQK,KAAK,CAAC,EAC3CtC,EACE+B,EAAOK,GAAGC,KAAKH,QAAQI,KAAK,CAC1Bf,MAAO,CAEL,GAAII,EAAS,CAAEY,YAAahB,EAAMiB,SAAS,CAAE,EAAI,CAAC,EAClD,GAAIX,EAAW,CAAEY,UAAWZ,CAAS,EAAI,CAAC,CAC5C,CACF,CAAC,CACH,CAAC,CACF,EAGKa,EACJf,GAAUE,EACN,KACC3B,EAAeqB,EAAMO,IAAI,OAAO,CAAC,GAAK,UAEvCc,EAAU,MAAO,SAAY,CACjC,GAAI,CAACX,EAAQY,MAAQlB,EAAQ,OAAO,KAEpC,IAAMmB,EACJZ,EAAQO,YACPC,GAASA,IAAU,UAAY,WAAWA,IAAU,KACjDK,EAAUL,EACZ,MAAMrC,EAAgB0B,EAAQ,CAAEW,OAAM,CAAC,EACvCM,IAAAA,GAEJ,OADKD,GAAS3C,EAAgB,CAAE6C,KAAMH,CAAS,CAAC,EACzC,CAAEC,QAAAA,EAASD,SAAAA,CAAS,CAC7B,EAAA,CAAG,EAEH,MAAO,CACLJ,QAIAQ,eACE,OAAOC,OAAW,KAAejB,EAAQkB,UAAY,CAACR,EAClDM,EAAe/C,EAAc,CAAEkD,SAAU,EAAK,CAAC,EAAG,CAChDC,WAAY3B,EAASJ,EAAMiB,SAAS,EAAIQ,IAAAA,GACxCO,SAAUrB,EAAQsB,SACpB,CAAC,CAAC,CAACC,UAAYT,IAAAA,EAAS,EACxB,KACNI,SAAUlB,EAAQkB,SAClBM,QAASxB,EAAQyB,IACb,CACEA,IAAKzB,EAAQyB,IACbC,KAAM1B,EAAQ0B,KACdC,IAAK3B,EAAQwB,SAASG,KAAO,KAC7BC,SAAU5B,EAAQ4B,QACpB,EACA,KACJjC,SAAUK,EAAQO,UAClBG,UACAW,SAAUrB,EAAQsB,SACpB,CACF,EAEAO,WAAa5C,IAAW,CAAE6C,OAAQ7C,EAAM6C,MAAO,GAC/CC,OAAQ,CACNC,SAAU,CAIRC,KAAOC,GACL,IAAIC,SAAS,KAAM,CACjBC,QAAS,CAAE7C,SAAU,SAAS,IAAI8C,IAAIH,EAAQV,QAAQc,GAAG,CAAC,CAACR,QAAS,EACpES,OAAQ,GACV,CAAC,CACL,CACF,CACF,CAAC,EAwcSE,GAAV,SAAA,EAAA,CACeC,EAAAA,KAAO,CAQtB,EAAA,CAAA,AAAA8B,IAAA,CAAA,CAAA,E"}
@@ -0,0 +1 @@
1
+ .z_tempo_2d_id-0xm92Y0{align-items:center}.z_tempo_2d_id-0xm92Y1{display:flex}.z_tempo_2d_id-0xm92Y2{justify-content:center}.z_tempo_2d_id-0xm92Y3{min-height:100dvh}.z_tempo_2d_id-0xm92Y4{padding-block:var(--z-tempo_2d_id-spacing-64,4rem);padding-inline:var(--z-tempo_2d_id-spacing-16,1rem)}
@@ -0,0 +1,2 @@
1
+ import{a as e}from"./rolldown-runtime-BWaJ3C7D.js";import{E as t}from"./react-dom-DYzj0HXX.js";function n(){throw Error(`Invariant failed`)}var r=e(t(),1),i=r.createContext(void 0),a=r.createContext(void 0);export{i as n,n as r,a as t};
2
+ //# sourceMappingURL=matchContext-ByrIUj4L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchContext-ByrIUj4L.js","names":["__toESM","require_react","invariant","import_react","matchContext","dummyMatchContext"],"sources":["../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.34/node_modules/@tanstack/router-core/dist/esm/invariant.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.41_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@tanstack/react-router/dist/esm/matchContext.js"],"sourcesContent":["//#region src/invariant.ts\nfunction invariant() {\n\tthrow new Error(\"Invariant failed\");\n}\n//#endregion\nexport { invariant };\n\n//# sourceMappingURL=invariant.js.map","\"use client\";\nimport * as React$1 from \"react\";\n//#region src/matchContext.tsx\nvar matchContext = React$1.createContext(void 0);\nvar dummyMatchContext = React$1.createContext(void 0);\n//#endregion\nexport { dummyMatchContext, matchContext };\n\n//# sourceMappingURL=matchContext.js.map"],"ignoreList":[0,1],"mappings":"A,+FACA,SAASE,GAAY,CACpB,MAAU,MAAM,kBAAkB,CACnC,C,eCAIE,EAAAD,EAAuB,cAAc,IAAK,EAAC,EAC3CE,EAAAF,EAA4B,cAAc,IAAK,EAAC,E"}
@@ -0,0 +1,2 @@
1
+ import{r as e,s as t}from"./sqlite-introspector-DSCAP82F-Crx7Ny14.js";import{t as n}from"./compiled-query-Ds2NVcFT.js";var r=class{get supportsCreateIfNotExists(){return!0}get supportsTransactionalDdl(){return!1}get supportsReturning(){return!0}async acquireMigrationLock(){}async releaseMigrationLock(){}get supportsOutput(){return!0}},i=class{#e;#t=new o;#n;#r;constructor(e){this.#e={...e}}async init(){this.#n=this.#e.database,this.#r=new a(this.#n),this.#e.onCreateConnection&&await this.#e.onCreateConnection(this.#r)}async acquireConnection(){return await this.#t.lock(),this.#r}async beginTransaction(e){await e.executeQuery(n.raw(`begin`))}async commitTransaction(e){await e.executeQuery(n.raw(`commit`))}async rollbackTransaction(e){await e.executeQuery(n.raw(`rollback`))}async releaseConnection(){this.#t.unlock()}async destroy(){this.#n?.close()}},a=class{#e;constructor(e){this.#e=e}executeQuery(e){let{sql:t,parameters:n}=e,r=this.#e.prepare(t),i=n;if(r.columns().length>0)return Promise.resolve({rows:r.all(...i)});let{changes:a,lastInsertRowid:o}=r.run(...i);return Promise.resolve({rows:[],numAffectedRows:BigInt(a),insertId:typeof o==`bigint`?o:BigInt(o)})}async*streamQuery(){throw Error(`Streaming query is not supported by SQLite driver.`)}},o=class{#e;#t;async lock(){for(;this.#e!==void 0;)await this.#e;this.#e=new Promise(e=>{this.#t=e})}unlock(){let e=this.#t;this.#e=void 0,this.#t=void 0,e?.()}},s=class extends t{getCurrentParameterPlaceholder(){return`?`}getLeftIdentifierWrapper(){return`"`}getRightIdentifierWrapper(){return`"`}getAutoIncrement(){return`autoincrement`}},c=class{#e;constructor(e){this.#e={...e}}createDriver(){return new i(this.#e)}createQueryCompiler(){return new s}createAdapter(){return new r}createIntrospector(t){return e(t)}};export{c as NodeSqliteDialect};
2
+ //# sourceMappingURL=node-sqlite-dialect-BowWLXvK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-sqlite-dialect-BowWLXvK.js","names":["createSqliteIntrospector","DefaultQueryCompiler","CompiledQuery","NodeSqliteAdapter","NodeSqliteDriver","ConnectionMutex","#config","config","#db","#connection","NodeSqliteConnection","#connectionMutex","connection","db","compiledQuery","stmt","sql","params","parameters","changes","lastInsertRowid","#promise","#resolve","resolve","NodeSqliteQueryCompiler","NodeSqliteDialect"],"sources":["../../../../../node_modules/.pnpm/@better-auth+kysely-adapter@1.8.0-beta.2_@better-auth+core@1.8.0-beta.2_@better-auth+ut_5f0f3bb0a8341722fdbf9aede56101c1/node_modules/@better-auth/kysely-adapter/dist/node-sqlite-dialect.mjs"],"sourcesContent":["import { t as createSqliteIntrospector } from \"./sqlite-introspector-DSCAP82F.mjs\";\nimport { CompiledQuery, DefaultQueryCompiler } from \"kysely\";\n//#region src/node-sqlite-dialect.ts\nvar NodeSqliteAdapter = class {\n\tget supportsCreateIfNotExists() {\n\t\treturn true;\n\t}\n\tget supportsTransactionalDdl() {\n\t\treturn false;\n\t}\n\tget supportsReturning() {\n\t\treturn true;\n\t}\n\tasync acquireMigrationLock() {}\n\tasync releaseMigrationLock() {}\n\tget supportsOutput() {\n\t\treturn true;\n\t}\n};\nvar NodeSqliteDriver = class {\n\t#config;\n\t#connectionMutex = new ConnectionMutex();\n\t#db;\n\t#connection;\n\tconstructor(config) {\n\t\tthis.#config = { ...config };\n\t}\n\tasync init() {\n\t\tthis.#db = this.#config.database;\n\t\tthis.#connection = new NodeSqliteConnection(this.#db);\n\t\tif (this.#config.onCreateConnection) await this.#config.onCreateConnection(this.#connection);\n\t}\n\tasync acquireConnection() {\n\t\tawait this.#connectionMutex.lock();\n\t\treturn this.#connection;\n\t}\n\tasync beginTransaction(connection) {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"begin\"));\n\t}\n\tasync commitTransaction(connection) {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"commit\"));\n\t}\n\tasync rollbackTransaction(connection) {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"rollback\"));\n\t}\n\tasync releaseConnection() {\n\t\tthis.#connectionMutex.unlock();\n\t}\n\tasync destroy() {\n\t\tthis.#db?.close();\n\t}\n};\nvar NodeSqliteConnection = class {\n\t#db;\n\tconstructor(db) {\n\t\tthis.#db = db;\n\t}\n\texecuteQuery(compiledQuery) {\n\t\tconst { sql, parameters } = compiledQuery;\n\t\tconst stmt = this.#db.prepare(sql);\n\t\tconst params = parameters;\n\t\tif (stmt.columns().length > 0) return Promise.resolve({ rows: stmt.all(...params) });\n\t\tconst { changes, lastInsertRowid } = stmt.run(...params);\n\t\treturn Promise.resolve({\n\t\t\trows: [],\n\t\t\tnumAffectedRows: BigInt(changes),\n\t\t\tinsertId: typeof lastInsertRowid === \"bigint\" ? lastInsertRowid : BigInt(lastInsertRowid)\n\t\t});\n\t}\n\tasync *streamQuery() {\n\t\tthrow new Error(\"Streaming query is not supported by SQLite driver.\");\n\t}\n};\nvar ConnectionMutex = class {\n\t#promise;\n\t#resolve;\n\tasync lock() {\n\t\twhile (this.#promise !== void 0) await this.#promise;\n\t\tthis.#promise = new Promise((resolve) => {\n\t\t\tthis.#resolve = resolve;\n\t\t});\n\t}\n\tunlock() {\n\t\tconst resolve = this.#resolve;\n\t\tthis.#promise = void 0;\n\t\tthis.#resolve = void 0;\n\t\tresolve?.();\n\t}\n};\nvar NodeSqliteQueryCompiler = class extends DefaultQueryCompiler {\n\tgetCurrentParameterPlaceholder() {\n\t\treturn \"?\";\n\t}\n\tgetLeftIdentifierWrapper() {\n\t\treturn \"\\\"\";\n\t}\n\tgetRightIdentifierWrapper() {\n\t\treturn \"\\\"\";\n\t}\n\tgetAutoIncrement() {\n\t\treturn \"autoincrement\";\n\t}\n};\nvar NodeSqliteDialect = class {\n\t#config;\n\tconstructor(config) {\n\t\tthis.#config = { ...config };\n\t}\n\tcreateDriver() {\n\t\treturn new NodeSqliteDriver(this.#config);\n\t}\n\tcreateQueryCompiler() {\n\t\treturn new NodeSqliteQueryCompiler();\n\t}\n\tcreateAdapter() {\n\t\treturn new NodeSqliteAdapter();\n\t}\n\tcreateIntrospector(db) {\n\t\treturn createSqliteIntrospector(db);\n\t}\n};\n//#endregion\nexport { NodeSqliteDialect };\n"],"ignoreList":[0],"mappings":"A,uHAGA,IAAIG,EAAoB,KAAM,CAC7B,IAAI,2BAA4B,CAC/B,MAAO,EACR,CACA,IAAI,0BAA2B,CAC9B,MAAO,EACR,CACA,IAAI,mBAAoB,CACvB,MAAO,EACR,CACA,MAAM,sBAAuB,CAAC,CAC9B,MAAM,sBAAuB,CAAC,CAC9B,IAAI,gBAAiB,CACpB,MAAO,EACR,CACD,EACIC,EAAmB,KAAM,CAC5B,GACA,GAAmB,IAAIC,EACvB,GACA,GACA,YAAY,EAAQ,CACnB,KAAKC,GAAU,CAAE,GAAGC,CAAO,CAC5B,CACA,MAAM,MAAO,CACZ,KAAKC,GAAM,KAAKF,GAAQ,SACxB,KAAKG,GAAc,IAAIC,EAAqB,KAAKF,EAAG,EAChD,KAAKF,GAAQ,oBAAoB,MAAM,KAAKA,GAAQ,mBAAmB,KAAKG,EAAW,CAC5F,CACA,MAAM,mBAAoB,CAEzB,OADA,MAAM,KAAKE,GAAiB,KAAK,EAC1B,KAAKF,EACb,CACA,MAAM,iBAAiB,EAAY,CAClC,MAAMG,EAAW,aAAaV,EAAc,IAAI,OAAO,CAAC,CACzD,CACA,MAAM,kBAAkB,EAAY,CACnC,MAAMU,EAAW,aAAaV,EAAc,IAAI,QAAQ,CAAC,CAC1D,CACA,MAAM,oBAAoB,EAAY,CACrC,MAAMU,EAAW,aAAaV,EAAc,IAAI,UAAU,CAAC,CAC5D,CACA,MAAM,mBAAoB,CACzB,KAAKS,GAAiB,OAAO,CAC9B,CACA,MAAM,SAAU,CACf,KAAKH,IAAK,MAAM,CACjB,CACD,EACIE,EAAuB,KAAM,CAChC,GACA,YAAY,EAAI,CACf,KAAKF,GAAMK,CACZ,CACA,aAAa,EAAe,CAC3B,GAAM,CAAE,MAAK,cAAeC,EACtBC,EAAO,KAAKP,GAAI,QAAQQ,CAAG,EAC3BC,EAASC,EACf,GAAIH,EAAK,QAAQ,CAAC,CAAC,OAAS,EAAG,OAAO,QAAQ,QAAQ,CAAE,KAAMA,EAAK,IAAI,GAAGE,CAAM,CAAE,CAAC,EACnF,GAAM,CAAE,UAAS,mBAAoBF,EAAK,IAAI,GAAGE,CAAM,EACvD,OAAO,QAAQ,QAAQ,CACtB,KAAM,CAAC,EACP,gBAAiB,OAAOE,CAAO,EAC/B,SAAU,OAAOC,GAAoB,SAAWA,EAAkB,OAAOA,CAAe,CACzF,CAAC,CACF,CACA,MAAO,aAAc,CACpB,MAAU,MAAM,oDAAoD,CACrE,CACD,EACIf,EAAkB,KAAM,CAC3B,GACA,GACA,MAAM,MAAO,CACZ,KAAO,KAAKgB,KAAa,IAAK,IAAG,MAAM,KAAKA,GAC5C,KAAKA,GAAW,IAAI,QAAS,GAAY,CACxC,KAAKC,GAAWC,CACjB,CAAC,CACF,CACA,QAAS,CACR,IAAMA,EAAU,KAAKD,GACrB,KAAKD,GAAW,IAAK,GACrB,KAAKC,GAAW,IAAK,GACrBC,IAAU,CACX,CACD,EACIC,EAA0B,cAAcvB,CAAqB,CAChE,gCAAiC,CAChC,MAAO,GACR,CACA,0BAA2B,CAC1B,MAAO,GACR,CACA,2BAA4B,CAC3B,MAAO,GACR,CACA,kBAAmB,CAClB,MAAO,eACR,CACD,EACIwB,EAAoB,KAAM,CAC7B,GACA,YAAY,EAAQ,CACnB,KAAKnB,GAAU,CAAE,GAAGC,CAAO,CAC5B,CACA,cAAe,CACd,OAAO,IAAIH,EAAiB,KAAKE,EAAO,CACzC,CACA,qBAAsB,CACrB,OAAO,IAAIkB,CACZ,CACA,eAAgB,CACf,OAAO,IAAIrB,CACZ,CACA,mBAAmB,EAAI,CACtB,OAAOH,EAAyBa,CAAE,CACnC,CACD,E"}
@@ -0,0 +1,25 @@
1
+ <svg width="400" height="400" viewBox="0 0 400 400" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="400" height="400" fill="black"/>
3
+ <g filter="url(#filter0_ii_1141_2008)">
4
+ <path d="M290.022 123.047C282.061 123.007 274.099 123.017 266.135 123.017H219.794L190.662 123.022H181.489C179.85 123.017 177.631 122.95 176.048 123.076C170.499 123.504 166.241 126.026 162.508 130.152C159.781 133.164 158.395 137.071 156.74 140.77L152.857 149.33L135.921 186.387L132.728 193.378C130.49 198.277 134.045 203.859 139.401 203.859H176.8C179.619 203.859 182.188 202.236 183.413 199.683C184.007 198.443 184.609 197.199 185.141 195.98C185.776 194.521 186.556 193.073 187.209 191.626L200.57 162.613L204.964 152.856C209.454 142.688 211.861 134.56 224.738 133.861C226.881 133.777 230.721 133.453 232.377 134.96C234.661 137.04 234.019 140.497 232.956 143.037C231.884 145.606 230.512 148.092 229.37 150.648C225.258 159.816 221.036 168.931 216.705 177.996L207.963 196.99C203.53 206.48 201.639 213.64 189.476 214.274C189.35 214.274 189.231 214.274 189.11 214.272L127.891 214.274C125.021 214.274 122.416 215.956 121.217 218.579L109.652 243.902C109.148 245.021 108.563 246.08 108.05 247.186C107.137 249.185 106.394 251.387 105.42 253.352C103.571 257.078 101.868 260.848 100.277 264.692C99.2188 267.246 97.8051 269.252 97.9995 272.121C98.1689 274.611 100.147 276.424 102.448 277.066C102.824 277.171 103.209 277.23 103.598 277.268C105.616 277.462 107.977 277.371 110.033 277.369L121.742 277.354L135.06 277.373C139.548 277.38 145.78 278.085 148.883 274.054C151.267 270.955 152.984 266.625 154.57 263.037L159.493 252.072C160.084 250.783 160.75 249.56 161.32 248.261L165.022 239.99C166.942 235.752 167.996 233.136 171.543 229.845C173.944 227.597 175.454 226.852 178.503 225.801C179.011 225.627 179.724 225.425 180.029 225.385C181.604 225.176 183.434 225.185 185.005 225.18H192.33H225.564L235.328 225.185C238.538 225.185 242.424 225.383 245.498 224.587C249.718 223.492 252.989 220.979 255.934 217.84C257.695 215.962 258.498 213.733 259.65 211.524C261.346 208.274 262.601 204.952 264.119 201.643L274.724 178.745C276.857 174.196 278.873 169.512 280.871 164.902C282.41 161.35 284.246 157.912 285.702 154.313C288.7 147.69 291.973 141.162 294.648 134.4C295.016 133.478 295.556 132.503 295.903 131.577C296.152 130.901 296.29 130.19 296.313 129.47C296.463 125.735 293.695 123.07 290.033 123.053L290.022 123.047Z" fill="white"/>
5
+ </g>
6
+ <path d="M181.486 124.291H190.662L219.794 124.287H278.079C281.942 124.289 285.804 124.296 289.666 124.314L289.677 124.321L290.026 124.323C293.02 124.337 295.164 126.453 295.044 129.419V129.43C295.025 130.012 294.914 130.587 294.714 131.132C294.561 131.539 294.362 131.969 294.136 132.447C293.918 132.909 293.671 133.424 293.469 133.93L293.468 133.933C290.807 140.658 287.572 147.103 284.545 153.789L284.534 153.812L284.524 153.837C283.812 155.599 283.004 157.328 282.171 159.08C281.343 160.822 280.486 162.595 279.705 164.396C277.705 169.013 275.698 173.678 273.574 178.206L273.572 178.211L262.967 201.109L262.965 201.113C261.393 204.54 260.207 207.711 258.524 210.937C257.273 213.334 256.61 215.262 255.008 216.971C252.239 219.922 249.269 222.2 245.542 223.259L245.18 223.357C243.026 223.915 240.437 223.95 237.87 223.933L235.328 223.915L225.564 223.911H185.001C183.653 223.915 182.012 223.906 180.501 224.053L179.862 224.126C179.419 224.184 178.603 224.424 178.09 224.601H178.089C176.546 225.132 175.317 225.611 174.154 226.269C172.984 226.93 171.926 227.747 170.68 228.914C166.922 232.4 165.778 235.244 163.865 239.466L163.863 239.472L160.161 247.742L160.158 247.75C159.886 248.37 159.588 248.978 159.276 249.606C158.969 250.228 158.644 250.877 158.339 251.542L158.334 251.552L153.411 262.518L153.408 262.524C151.885 265.972 150.347 269.821 148.295 272.714L147.877 273.279C146.622 274.91 144.684 275.661 142.326 275.969C139.929 276.281 137.422 276.107 135.062 276.104L121.744 276.085H121.74L110.031 276.1C107.901 276.102 105.656 276.19 103.72 276.004H103.721C103.376 275.97 103.07 275.921 102.79 275.843H102.789C100.906 275.317 99.4811 273.929 99.2822 272.203L99.2666 272.035C99.1861 270.847 99.4316 269.822 99.8506 268.751C100.064 268.206 100.317 267.661 100.597 267.066C100.803 266.629 101.024 266.163 101.238 265.675L101.45 265.178C103.031 261.358 104.722 257.614 106.557 253.916C107.068 252.885 107.514 251.803 107.936 250.757C108.362 249.698 108.762 248.685 109.202 247.72C109.448 247.19 109.712 246.669 109.988 246.12C110.261 245.578 110.545 245.01 110.81 244.422L122.372 219.106C123.365 216.932 125.522 215.543 127.891 215.543L189.088 215.541C189.222 215.543 189.352 215.543 189.476 215.543H189.509L189.542 215.542C195.921 215.21 199.787 213.134 202.594 209.767C203.962 208.125 205.045 206.216 206.054 204.165C207.046 202.146 208.035 199.835 209.113 197.527L209.116 197.521L217.851 178.543C222.186 169.469 226.413 160.344 230.528 151.167L230.529 151.166C231.088 149.915 231.704 148.68 232.329 147.407C232.794 146.46 233.263 145.495 233.701 144.514L234.128 143.527C234.695 142.171 235.182 140.5 235.191 138.833C235.201 137.144 234.713 135.37 233.232 134.021L233.231 134.021C232.058 132.953 230.289 132.646 228.825 132.547C227.303 132.444 225.708 132.553 224.688 132.593H224.669C217.911 132.96 213.743 135.31 210.723 139.004C207.809 142.567 205.996 147.376 203.803 152.343L199.417 162.082L186.056 191.096L186.052 191.104C185.736 191.804 185.388 192.507 185.028 193.239C184.673 193.963 184.307 194.714 183.977 195.473C183.457 196.666 182.866 197.886 182.268 199.135C181.252 201.25 179.127 202.59 176.801 202.59H139.401C134.983 202.59 132.024 197.975 133.883 193.905L137.076 186.914L154.012 149.857L154.014 149.854L157.896 141.295L157.899 141.289C159.615 137.453 160.898 133.822 163.449 131.004H163.45C167.014 127.064 170.987 124.74 176.145 124.343L176.148 124.342C177.662 124.221 179.78 124.287 181.486 124.291Z" stroke="white" stroke-opacity="0.4" stroke-width="2.53954"/>
7
+ <defs>
8
+ <filter id="filter0_ii_1141_2008" x="97.9814" y="119.614" width="198.337" height="161.197" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
9
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
10
+ <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
11
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
12
+ <feOffset dy="-3.38605"/>
13
+ <feGaussianBlur stdDeviation="3.59768"/>
14
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
15
+ <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
16
+ <feBlend mode="normal" in2="shape" result="effect1_innerShadow_1141_2008"/>
17
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
18
+ <feOffset dy="3.38605"/>
19
+ <feGaussianBlur stdDeviation="1.69302"/>
20
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
21
+ <feColorMatrix type="matrix" values="0 0 0 0 0.954364 0 0 0 0 0.954364 0 0 0 0 0.954364 0 0 0 1 0"/>
22
+ <feBlend mode="normal" in2="effect1_innerShadow_1141_2008" result="effect2_innerShadow_1141_2008"/>
23
+ </filter>
24
+ </defs>
25
+ </svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="158" height="158" fill="none" viewBox="0 0 158 158"><path fill="#fff" fill-rule="evenodd" d="M0 .21h52.51v52.51H0zm52.51 52.51L105.01.21h52.51v52.51zm52.5 52.5h52.51v52.51h-52.51zM0 157.73v-52.51l52.51-52.5v105.01z" clip-rule="evenodd"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" fill="none" viewBox="0 0 50 50"><circle cx="25" cy="25" r="25" fill="#97fedd"/><path fill="#000" fill-rule="evenodd" d="M32.165 20.898c-1.501 0-2.522.832-2.814 2.215h5.628c-.243-1.444-1.274-2.215-2.814-2.215m-.103-3.59c4.47 0 7.306 3.209 7.306 7.213l-.001 1.493-10.016-.012c.09 1.13 1.365 2.258 3.625 2.258 1.756 0 3.04-.482 3.659-.97l1.75 3.401c-1.038.614-3.237 1.439-5.82 1.439-5.32 0-8.04-3.398-8.04-7.609 0-3.982 2.955-7.213 7.537-7.213m-13.698 4.08c-.499-.067-1.62-.159-1.62 2.895l-.043 7.846h-5.163V17.598l4.739-.017v1.843c1.128-2.188 4.462-2.548 6.393-1.675v6.19c-.21.05-.593.12-.786.147-2.551.358-3.554-1.14-3.52-2.696" clip-rule="evenodd"/></svg>
@@ -0,0 +1,2 @@
1
+ import{a as e,t}from"./rolldown-runtime-BWaJ3C7D.js";var n=t((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var S=x.prototype=new b;S.constructor=x,_(S,y.prototype),S.isPureReactComponent=!0;var C=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function D(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function O(e,t){return D(e.type,t,e.props)}function k(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function A(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var j=/\/+/g;function M(e,t){return typeof e==`object`&&e&&e.key!=null?A(``+e.key):t.toString(36)}function N(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(w,w):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function P(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,P(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+M(e,0):a,C(o)?(i=``,c!=null&&(i=c.replace(j,`$&/`)+`/`),P(o,r,i,``,function(e){return e})):o!=null&&(k(o)&&(o=O(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(j,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(C(e))for(var u=0;u<e.length;u++)a=e[u],s=l+M(a,u),c+=P(a,r,i,s,o);else if(u=h(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+M(a,u++),c+=P(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return P(N(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function F(e,t,n){if(e==null)return e;var r=[],i=0;return P(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function I(e){if(e._status===-1){var t=e._result,n=t();n.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t,n.status===void 0&&(n.status=`fulfilled`,n.value=t))},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t,n.status===void 0&&(n.status=`rejected`,n.reason=t))}),e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return e._result.default;throw e._result}var L=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)};function R(e){var t=T.T,n={};n.types=t===null?null:t.types,T.T=n;try{var r=e(),i=T.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(w,L)}catch(e){L(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),T.T=t}}function z(e){var t=T.T;if(t!==null){var n=t.types;n===null?t.types=[e]:n.indexOf(e)===-1&&n.push(e)}else R(z.bind(null,e))}var B={map:F,forEach:function(e,t,n){F(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return F(e,function(){t++}),t},toArray:function(e){return F(e,function(e){return e})||[]},only:function(e){if(!k(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=B,e.Component=y,e.Fragment=r,e.Profiler=a,e.PureComponent=x,e.StrictMode=i,e.Suspense=l,e.ViewTransition=p,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=T,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return T.H.useMemoCache(e)}},e.addTransitionType=z,e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=_({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!E.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return D(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)E.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return D(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=k,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:I}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=R,e.unstable_useCacheRefresh=function(){return T.H.useCacheRefresh()},e.use=function(e){return T.H.use(e)},e.useActionState=function(e,t,n){return T.H.useActionState(e,t,n)},e.useCallback=function(e,t){return T.H.useCallback(e,t)},e.useContext=function(e){return T.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return T.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return T.H.useEffect(e,t)},e.useEffectEvent=function(e){return T.H.useEffectEvent(e)},e.useId=function(){return T.H.useId()},e.useImperativeHandle=function(e,t,n){return T.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return T.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return T.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return T.H.useMemo(e,t)},e.useOptimistic=function(e,t){return T.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return T.H.useReducer(e,t,n)},e.useRef=function(e){return T.H.useRef(e)},e.useState=function(e){return T.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return T.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return T.H.useTransition()},e.version=`19.3.0`})),r=t(((e,t)=>{t.exports=n()}));function i(e){return e[e.length-1]}function a(e,t){return typeof e==`function`?e(t):e}var o=Object.prototype.hasOwnProperty;function s(e){for(let t in e)if(o.call(e,t))return!0;return!1}var c=()=>Object.create(null),l=(e,t)=>u(e,t,!0);function u(e,t,n,r=0){return t}function d(e){return!e||typeof e!=`object`?!1:(Object.getPrototypeOf(e)?.constructor??Object)===Object}function f(e,t,n,r){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let i=0,a=e.length;i<a;i++){let a=e[i],o=t[i];if(a!==o&&!f(a,o,n,r))return!1}return!0}if(d(e)&&d(t)){if(n){for(let i in t)if((r||t[i]!==void 0)&&!f(e[i],t[i],n,r))return!1;return!0}let i=0;if(r)i=Object.keys(e).length;else for(let t in e)e[t]!==void 0&&i++;for(let a in t)if((r||t[a]!==void 0)&&(i--===0||!f(e[a],t[a],n,r)))return!1;return i===0}return!1}function p(e){return typeof e?.message==`string`?e.message.startsWith(`Failed to fetch dynamically imported module`)||e.message.startsWith(`error loading dynamically imported module`)||e.message.startsWith(`Importing a module script failed`):!1}function m(e){return!!(e&&typeof e==`object`&&typeof e.then==`function`)}var h=/[\x00-\x1f\x7f"<>`{}]/g;function g(e){return e.replace(h,e=>`%`+e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`))}function _(e){let t;try{t=decodeURI(e)}catch{t=e.replaceAll(/%[0-9A-F]{2}/gi,e=>{try{return decodeURI(e)}catch{return e}})}return g(t)}var v=[`http:`,`https:`,`mailto:`,`tel:`];function y(e){if(e[0]!==`/`&&e.includes(`:`))return/^[\x00-\x20]*([a-z][a-z\d+.\t\n\r-]*:)/i.exec(e)?.[1]?.replace(/[\t\n\r]/g,``).toLowerCase()}var b=/^[\x00-\x20]*[\\/][\t\n\r]*[\\/]/;function x(e,t){if(!e)return!1;if(b.test(e))return!0;let n=y(e);return n?!t.has(n):!1}var S={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},C=/[&><\u2028\u2029]/g;function w(e){return e.replace(C,e=>S[e])}function T(e){if(!e)return e;let t=e;if(/[%\\\x00-\x1f\x7f]/.test(e)){let n=/%25|%5C/gi,r=0,i;for(t=``;(i=n.exec(e))!==null;)t+=_(e.slice(r,i.index))+i[0],r=n.lastIndex;t+=_(r?e.slice(r):e)}return t}function E(e){return/[\s\u0080-\uFFFF]/.test(e)?e.replace(/\s|[^\u0000-\u007F]/gu,encodeURIComponent):e}function D(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}var O=t((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),k=t(((e,t)=>{t.exports=O()})),A=e(r(),1),j=A.createContext(null);function M(e){return A.useContext(j)}var N=t((e=>{var t=r();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:n,a=t.useState,o=t.useEffect,s=t.useLayoutEffect,c=t.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),P=t(((e,t)=>{t.exports=N()})),F=t((e=>{var t=r(),n=P();function i(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var a=typeof Object.is==`function`?Object.is:i,o=n.useSyncExternalStore,s=t.useRef,c=t.useEffect,l=t.useMemo,u=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var d=s(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=l(function(){function e(e){if(!o){if(o=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,a(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var o=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=o(e,d[0],d[1]);return c(function(){f.hasValue=!0,f.value=p},[p]),u(p),p}})),I=t(((e,t)=>{t.exports=F()})),L=I();function R(e,t){return e===t}function z(e,t=e=>e,n){let r=n?.compare??R,i=(0,A.useCallback)(t=>{let{unsubscribe:n}=e.subscribe(t);return n},[e]),a=(0,A.useCallback)(()=>e.get(),[e]);return(0,L.useSyncExternalStoreWithSelector)(i,a,a,t,r)}var B=t((e=>{var t=r();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function i(){}var a={d:{f:i,r:function(){throw Error(n(522))},D:i,C:i,L:i,m:i,X:i,S:i,M:i},p:0,findDOMNode:null},o=Symbol.for(`react.portal`),s=Symbol.for(`react.recoverable`),c=Symbol.for(`react.optimistic_key`);function l(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:o,key:r==null?null:r===c?c:``+r,children:e,containerInfo:t,implementation:n}}var u=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function d(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=a,e.browser=function(e){return{$$typeof:s,_reason:e}},e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return l(e,t,null,r)},e.flushSync=function(e){var t=u.T,n=a.p;try{if(u.T=null,a.p=2,e)return e()}finally{u.T=t,a.p=n,a.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,a.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&a.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=d(n,t.crossOrigin),i=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?a.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:i,fetchPriority:o}):n===`script`&&a.d.X(e,{crossOrigin:r,integrity:i,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`){if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=d(t.as,t.crossOrigin);a.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}}else t??a.d.M(e)}},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=d(n,t.crossOrigin);a.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`){if(t){var n=d(t.as,t.crossOrigin);a.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}else a.d.m(e)}},e.requestFormReset=function(e){a.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return u.H.useFormState(e,t,n)},e.useFormStatus=function(){return u.H.useHostTransitionStatus()},e.version=`19.3.0`})),V=t(((e,t)=>{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=B()}));export{l as C,r as E,i as S,u as T,s as _,M as a,p as b,v as c,T as d,f,y as g,a as h,P as i,D as l,w as m,z as n,j as o,E as p,I as r,k as s,V as t,c as u,o as v,b as w,m as x,x as y};
2
+ //# sourceMappingURL=react-dom-DYzj0HXX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-dom-DYzj0HXX.js","names":["useCallback","useSyncExternalStoreWithSelector","__toESM","require_react_production","__commonJSMin","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_ACTIVITY_TYPE","REACT_VIEW_TRANSITION_TYPE","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","ReactNoopUpdateQueue","assign","emptyObject","Component","props","context","updater","partialState","callback","ComponentDummy","PureComponent","pureComponentPrototype","isArrayImpl","noop","ReactSharedInternals","hasOwnProperty","ReactElement","refProp","cloneAndReplaceKey","oldElement","newKey","isValidElement","object","escape","escaperLookup","key","match","userProvidedKeyEscapeRegex","getElementKey","element","index","resolveThenable","thenable","fulfilledValue","error","mapIntoArray","type","children","invokeCallback","array","escapedPrefix","nameSoFar","c","nextNamePrefix","i","mapChildren","result","count","func","child","lazyInitializer","payload","ctor","moduleObject","reportGlobalError","event","startTransition","prevTransition","currentTransition","returnValue","scope","onStartTransitionFinish","addTransitionType","transition","transitionTypes","Children","forEachFunc","forEachContext","n","size","fn","config","propName","childArray","defaultValue","childrenLength","compare","usable","action","initialState","permalink","deps","Context","value","initialValue","create","ref","passthrough","reducer","initialArg","init","subscribe","getSnapshot","getServerSnapshot","require_react","last","arr","functionalUpdate","previous","hasOwn","hasKeys","obj","createNull","nullReplaceEqualDeep","replaceEqualDeep","prev","next","isPlainObject","o","deepEqual","a","b","l","av","bv","partial","explicitUndefined","k","aCount","isModuleNotFoundError","isPromise","PATH_UNSAFE_RE","sanitizePathSegment","segment","ch","decodeSegment","decoded","DEFAULT_PROTOCOL_ALLOWLIST","getUrlScheme","url","protocolRelativePrefixRegex","isDangerousProtocol","scheme","allowlist","HTML_ESCAPE_LOOKUP","HTML_ESCAPE_REGEX","escapeHtml","str","decodePath","path","re","cursor","encodePathLikeUrl","arraysEqual","require_react_jsx_runtime_production","jsxProd","maybeKey","require_jsx_runtime","import_react","routerContext","useRouter","require_use_sync_external_store_shim_production","React","is","x","y","objectIs","useState","useEffect","useLayoutEffect","useDebugValue","useSyncExternalStore$2","_useState","inst","forceUpdate","checkIfSnapshotChanged","latestGetSnapshot","nextValue","useSyncExternalStore$1","shim","require_shim","require_with_selector_production","useSyncExternalStore","useRef","useMemo","instRef","memoizedSelector","hasMemo","nextSnapshot","selector","isEqual","currentSelection","memoizedSelection","memoizedSnapshot","nextSelection","maybeGetServerSnapshot","require_with_selector","import_with_selector","defaultCompare","useSelector","s","options","source","handleStoreChange","unsubscribe","require_react_dom_production","formatProdErrorMessage","code","Internals","REACT_RECOVERABLE_TYPE","REACT_OPTIMISTIC_KEY","createPortal$1","getCrossOriginStringAs","as","input","reason","container","previousTransition","previousUpdatePriority","href","crossOrigin","integrity","fetchPriority","form","require_react_dom","checkDCE","err"],"sources":["../../../../../node_modules/.pnpm/react@19.3.0/node_modules/react/cjs/react.production.js","../../../../../node_modules/.pnpm/react@19.3.0/node_modules/react/index.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.34/node_modules/@tanstack/router-core/dist/esm/utils.js","../../../../../node_modules/.pnpm/react@19.3.0/node_modules/react/cjs/react-jsx-runtime.production.js","../../../../../node_modules/.pnpm/react@19.3.0/node_modules/react/jsx-runtime.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.41_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@tanstack/react-router/dist/esm/routerContext.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.41_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@tanstack/react-router/dist/esm/useRouter.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.7.0_react@19.3.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.7.0_react@19.3.0/node_modules/use-sync-external-store/shim/index.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.7.0_react@19.3.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.7.0_react@19.3.0/node_modules/use-sync-external-store/shim/with-selector.js","../../../../../node_modules/.pnpm/@tanstack+react-store@0.11.2_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@tanstack/react-store/dist/useSelector.js","../../../../../node_modules/.pnpm/react-dom@19.3.0_react@19.3.0/node_modules/react-dom/cjs/react-dom.production.js","../../../../../node_modules/.pnpm/react-dom@19.3.0_react@19.3.0/node_modules/react-dom/index.js"],"sourcesContent":["/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== refProp ? refProp : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result,\n thenable = ctor();\n thenable.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1),\n (payload._result = moduleObject),\n void 0 === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = moduleObject));\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2),\n (payload._result = error),\n void 0 === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n );\n -1 === payload._status &&\n ((payload._status = 0), (payload._result = thenable));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction startTransition(scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition.types =\n null !== prevTransition ? prevTransition.types : null;\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction addTransitionType(type) {\n var transition = ReactSharedInternals.T;\n if (null !== transition) {\n var transitionTypes = transition.types;\n null === transitionTypes\n ? (transition.types = [type])\n : -1 === transitionTypes.indexOf(type) && transitionTypes.push(type);\n } else startTransition(addTransitionType.bind(null, type));\n}\nvar Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n};\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.ViewTransition = REACT_VIEW_TRANSITION_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.addTransitionType = addTransitionType;\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cacheSignal = function () {\n return null;\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = startTransition;\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.3.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","import { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/utils.ts\n/**\n* Return the last element of an array.\n* Intended for non-empty arrays used within router internals.\n*/\nfunction last(arr) {\n\treturn arr[arr.length - 1];\n}\n/**\n* Apply a value-or-updater to a previous value.\n* Accepts either a literal value or a function of the previous value.\n*/\nfunction functionalUpdate(updater, previous) {\n\tif (typeof updater === \"function\") return updater(previous);\n\treturn updater;\n}\nconst hasOwn = Object.prototype.hasOwnProperty;\nfunction hasKeys(obj) {\n\tfor (const key in obj) if (hasOwn.call(obj, key)) return true;\n\treturn false;\n}\nconst createNull = () => Object.create(null);\nconst nullReplaceEqualDeep = (prev, next) => replaceEqualDeep(prev, next, true);\nfunction replaceEqualDeep(prev, next, _nullProto, _depth = 0) {\n\tif (isServer) return next;\n\tif (prev === next) return prev;\n\tif (_depth++ > 500) return next;\n\tconst array = Array.isArray(prev) && Array.isArray(next);\n\tif (!array && !(isPlainObject(prev) && isPlainObject(next))) return next;\n\tconst prevKeys = Object.keys(prev);\n\tconst previousCount = prevKeys.length;\n\tconst nextKeys = Object.keys(next);\n\tconst length = nextKeys.length;\n\tif (array ? previousCount !== prev.length || length !== next.length || previousCount && last(prevKeys) !== `${previousCount - 1}` || length && last(nextKeys) !== `${length - 1}` : previousCount !== Object.getOwnPropertyNames(prev).length || length !== Object.getOwnPropertyNames(next).length || Object.getOwnPropertySymbols(next).length) return next;\n\tlet i = 0;\n\tlet child;\n\tlet previous;\n\tlet key;\n\tif (array) {\n\t\tfor (; i < length; i++) {\n\t\t\tkey = i;\n\t\t\tprevious = prev[key];\n\t\t\tchild = next[key];\n\t\t\tchild = previous === child ? previous : typeof previous === \"object\" ? replaceEqualDeep(previous, child, _nullProto, _depth) : child;\n\t\t\tif (child !== previous) break;\n\t\t}\n\t\tif (i === length && previousCount === length) return prev;\n\t} else {\n\t\tlet equal = previousCount === length;\n\t\tlet unchanged = true;\n\t\tfor (; i < length; i++) {\n\t\t\tkey = nextKeys[i];\n\t\t\tprevious = prev[key];\n\t\t\tconst incoming = next[key];\n\t\t\tchild = previous === incoming ? previous : typeof previous === \"object\" ? replaceEqualDeep(previous, incoming, _nullProto, _depth) : incoming;\n\t\t\tequal &&= child === previous && (prevKeys[i] === key || hasOwn.call(prev, key));\n\t\t\tunchanged &&= Object.is(child, incoming);\n\t\t\tprevKeys[i] = child;\n\t\t}\n\t\tif (equal) return Object.getOwnPropertySymbols(prev).length ? next : prev;\n\t\tif (unchanged) return next;\n\t}\n\tconst copy = array ? nextKeys.fill(0) : _nullProto ? createNull() : {};\n\tfor (let j = 0; j < length; j++) {\n\t\tkey = array ? j : nextKeys[j];\n\t\tif (array) {\n\t\t\tprevious = prev[key];\n\t\t\tif (j > i) {\n\t\t\t\tchild = next[key];\n\t\t\t\tchild = previous === child ? previous : typeof previous === \"object\" ? replaceEqualDeep(previous, child, _nullProto, _depth) : child;\n\t\t\t}\n\t\t\tcopy[key] = j < i ? previous : child;\n\t\t} else copy[key] = prevKeys[j];\n\t}\n\treturn copy;\n}\nfunction isPlainObject(o) {\n\tif (!o || typeof o !== \"object\") return false;\n\treturn (Object.getPrototypeOf(o)?.constructor ?? Object) === Object;\n}\n/**\n* Perform a deep equality check optimized for router state comparisons.\n*\n* - `partial`: `b` may omit keys that `a` has (arrays stay length-exact).\n* - `explicitUndefined`: keys holding `undefined` take part in the comparison\n* instead of being ignored.\n*\n* Internal: the flags are positional so hot callers pass no options object.\n*/\nfunction deepEqual(a, b, partial, explicitUndefined) {\n\tif (a === b) return true;\n\tif (Array.isArray(a) && Array.isArray(b)) {\n\t\tif (a.length !== b.length) return false;\n\t\tfor (let i = 0, l = a.length; i < l; i++) {\n\t\t\tconst av = a[i];\n\t\t\tconst bv = b[i];\n\t\t\tif (av !== bv && !deepEqual(av, bv, partial, explicitUndefined)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tif (isPlainObject(a) && isPlainObject(b)) {\n\t\tif (partial) {\n\t\t\tfor (const k in b) if (explicitUndefined || b[k] !== void 0) {\n\t\t\t\tif (!deepEqual(a[k], b[k], partial, explicitUndefined)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tlet aCount = 0;\n\t\tif (explicitUndefined) aCount = Object.keys(a).length;\n\t\telse for (const k in a) if (a[k] !== void 0) aCount++;\n\t\tfor (const k in b) if (explicitUndefined || b[k] !== void 0) {\n\t\t\tif (aCount-- === 0 || !deepEqual(a[k], b[k], partial, explicitUndefined)) return false;\n\t\t}\n\t\treturn aCount === 0;\n\t}\n\treturn false;\n}\n/**\n* Create a promise with exposed resolve/reject and status fields.\n* Useful for coordinating async router lifecycle operations.\n*/\nfunction createControlledPromise(onResolve) {\n\tlet resolveLoadPromise;\n\tlet rejectLoadPromise;\n\tconst controlledPromise = new Promise((resolve, reject) => {\n\t\tresolveLoadPromise = resolve;\n\t\trejectLoadPromise = reject;\n\t});\n\tcontrolledPromise.status = \"pending\";\n\tcontrolledPromise.resolve = (value) => {\n\t\tcontrolledPromise.status = \"resolved\";\n\t\tcontrolledPromise.value = value;\n\t\tresolveLoadPromise(value);\n\t\tonResolve?.(value);\n\t};\n\tcontrolledPromise.reject = (e) => {\n\t\tcontrolledPromise.status = \"rejected\";\n\t\trejectLoadPromise(e);\n\t};\n\treturn controlledPromise;\n}\n/**\n* Heuristically detect dynamic import \"module not found\" errors\n* across major browsers for lazy route component handling.\n*/\nfunction isModuleNotFoundError(error) {\n\tif (typeof error?.message !== \"string\") return false;\n\treturn error.message.startsWith(\"Failed to fetch dynamically imported module\") || error.message.startsWith(\"error loading dynamically imported module\") || error.message.startsWith(\"Importing a module script failed\");\n}\nfunction isPromise(value) {\n\treturn Boolean(value && typeof value === \"object\" && typeof value.then === \"function\");\n}\nfunction findLast(array, predicate) {\n\tfor (let i = array.length - 1; i >= 0; i--) {\n\t\tconst item = array[i];\n\t\tif (predicate(item)) return item;\n\t}\n}\n/**\n* Re-encode characters that are unsafe in URL paths.\n* Includes ASCII control characters (0x00-0x1F, 0x7F) and a subset of the\n* WHATWG URL \"path percent-encode set\" (\", <, >, `, {, }).\n*\n* Space (0x20) is intentionally excluded — decodeURI decodes %20 to space\n* and the router stores decoded spaces in location.pathname. The existing\n* encodePathLikeUrl already handles re-encoding spaces for outgoing URLs.\n*\n* These characters are decoded by decodeURI but must remain percent-encoded\n* in paths to match how upstream layers (CDNs, edge middleware, browsers)\n* interpret the URL, preventing infinite redirect loops and path mismatches.\n*/\nconst PATH_UNSAFE_RE = /[\\x00-\\x1f\\x7f\"<>`{}]/g;\nfunction sanitizePathSegment(segment) {\n\treturn segment.replace(PATH_UNSAFE_RE, (ch) => \"%\" + ch.charCodeAt(0).toString(16).toUpperCase().padStart(2, \"0\"));\n}\nfunction decodeSegment(segment) {\n\tlet decoded;\n\ttry {\n\t\tdecoded = decodeURI(segment);\n\t} catch {\n\t\tdecoded = segment.replaceAll(/%[0-9A-F]{2}/gi, (match) => {\n\t\t\ttry {\n\t\t\t\treturn decodeURI(match);\n\t\t\t} catch {\n\t\t\t\treturn match;\n\t\t\t}\n\t\t});\n\t}\n\treturn sanitizePathSegment(decoded);\n}\n/**\n* Default list of URL protocols to allow in links, redirects, and navigation.\n* Any absolute URL protocol not in this list is treated as dangerous by default.\n*/\nconst DEFAULT_PROTOCOL_ALLOWLIST = [\n\t\"http:\",\n\t\"https:\",\n\t\"mailto:\",\n\t\"tel:\"\n];\n/**\n* Extract the explicit URL scheme, including its colon, using WHATWG\n* normalization rules. This does not validate the rest of the URL.\n*\n* Returning `undefined` means \"no explicit scheme\", not \"safe URL\";\n* protocol-relative URLs such as \"//evil.example\" require a separate check.\n*/\nfunction getUrlScheme(url) {\n\tif (url[0] === \"/\") return;\n\tif (!url.includes(\":\")) return;\n\treturn /^[\\x00-\\x20]*([a-z][a-z\\d+.\\t\\n\\r-]*:)/i.exec(url)?.[1]?.replace(/[\\t\\n\\r]/g, \"\").toLowerCase();\n}\nconst protocolRelativePrefixRegex = /^[\\x00-\\x20]*[\\\\/][\\t\\n\\r]*[\\\\/]/;\n/**\n* Check if a URL string uses a protocol that is not in the allowlist or is\n* protocol-relative (e.g. \"//evil.example\"), which can navigate to another host.\n* Returns true for blocked protocols like javascript:, blob:, and data:, as\n* well as slash/backslash variants of protocol-relative URLs.\n*\n* Scheme parsing normalizes:\n* - Mixed case (JavaScript: → javascript:)\n* - Whitespace/control characters (java\\nscript: → javascript:)\n* - Leading whitespace\n*\n* For relative URLs without a protocol-relative prefix, returns false.\n*\n* @param url - The URL string to check\n* @param allowlist - Set of protocols to allow\n* @returns true if the URL uses a protocol that is not allowed or can escape\n* the current origin through a protocol-relative URL\n*/\nfunction isDangerousProtocol(url, allowlist) {\n\tif (!url) return false;\n\tif (protocolRelativePrefixRegex.test(url)) return true;\n\tconst scheme = getUrlScheme(url);\n\treturn scheme ? !allowlist.has(scheme) : false;\n}\nconst HTML_ESCAPE_LOOKUP = {\n\t\"&\": \"\\\\u0026\",\n\t\">\": \"\\\\u003e\",\n\t\"<\": \"\\\\u003c\",\n\t\"\\u2028\": \"\\\\u2028\",\n\t\"\\u2029\": \"\\\\u2029\"\n};\nconst HTML_ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\n/**\n* Escape HTML special characters in a string to prevent XSS attacks\n* when embedding strings in script tags during SSR.\n*\n* This is essential for preventing XSS vulnerabilities when user-controlled\n* content is embedded in inline scripts.\n*/\nfunction escapeHtml(str) {\n\treturn str.replace(HTML_ESCAPE_REGEX, (match) => HTML_ESCAPE_LOOKUP[match]);\n}\nfunction decodePath(path) {\n\tif (!path) return path;\n\tlet result = path;\n\tif (/[%\\\\\\x00-\\x1f\\x7f]/.test(path)) {\n\t\tconst re = /%25|%5C/gi;\n\t\tlet cursor = 0;\n\t\tlet match;\n\t\tresult = \"\";\n\t\twhile (null !== (match = re.exec(path))) {\n\t\t\tresult += decodeSegment(path.slice(cursor, match.index)) + match[0];\n\t\t\tcursor = re.lastIndex;\n\t\t}\n\t\tresult += decodeSegment(cursor ? path.slice(cursor) : path);\n\t}\n\treturn result;\n}\n/**\n* Encodes a path the same way `new URL()` would, but without the overhead of full URL parsing.\n*\n* This function encodes:\n* - Whitespace characters (spaces → %20, tabs → %09, etc.)\n* - Non-ASCII/Unicode characters (emojis, accented characters, etc.)\n*\n* It preserves:\n* - Already percent-encoded sequences (won't double-encode %2F, %25, etc.)\n* - ASCII special characters valid in URL paths (@, $, &, +, etc.)\n* - Forward slashes as path separators\n*\n* Used to generate proper href values for SSR without constructing URL objects.\n*\n* @example\n* encodePathLikeUrl('/path/file name.pdf') // '/path/file%20name.pdf'\n* encodePathLikeUrl('/path/日本語') // '/path/%E6%97%A5%E6%9C%AC%E8%AA%9E'\n* encodePathLikeUrl('/path/already%20encoded') // '/path/already%20encoded' (preserved)\n*/\nfunction encodePathLikeUrl(path) {\n\tif (!/[\\s\\u0080-\\uFFFF]/.test(path)) return path;\n\treturn path.replace(/\\s|[^\\u0000-\\u007F]/gu, encodeURIComponent);\n}\n/**\n* Builds the dev-mode CSS styles URL for route-scoped CSS collection.\n* Used by HeadContent components in all framework implementations to construct\n* the URL for the `/@tanstack-start/styles.css` endpoint.\n*\n* @param basepath - The router's basepath (may or may not have leading slash)\n* @param routeIds - Array of matched route IDs to include in the CSS collection\n* @returns The full URL path for the dev styles CSS endpoint\n*/\nfunction buildDevStylesUrl(basepath, routeIds) {\n\tconst trimmedBasepath = basepath.replace(/^\\/+|\\/+$/g, \"\");\n\treturn `${trimmedBasepath === \"\" ? \"\" : `/${trimmedBasepath}`}/@tanstack-start/styles.css?routes=${encodeURIComponent(routeIds.join(\",\"))}`;\n}\nfunction arraysEqual(a, b) {\n\tif (a === b) return true;\n\tif (a.length !== b.length) return false;\n\tfor (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;\n\treturn true;\n}\n//#endregion\nexport { DEFAULT_PROTOCOL_ALLOWLIST, arraysEqual, buildDevStylesUrl, createControlledPromise, createNull, decodePath, deepEqual, encodePathLikeUrl, escapeHtml, findLast, functionalUpdate, getUrlScheme, hasKeys, hasOwn, isDangerousProtocol, isModuleNotFoundError, isPromise, last, nullReplaceEqualDeep, protocolRelativePrefixRegex, replaceEqualDeep };\n\n//# sourceMappingURL=utils.js.map","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","\"use client\";\nimport * as React$1 from \"react\";\n//#region src/routerContext.tsx\nvar routerContext = React$1.createContext(null);\n//#endregion\nexport { routerContext };\n\n//# sourceMappingURL=routerContext.js.map","\"use client\";\nimport { routerContext } from \"./routerContext.js\";\nimport * as React$1 from \"react\";\n//#region src/useRouter.tsx\n/**\n* Access the current TanStack Router instance from React context.\n* Must be used within a `RouterProvider`.\n*\n* Options:\n* - `warn`: Log a warning if no router context is found (default: true).\n*\n* @returns The registered router instance.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useRouterHook\n*/\nfunction useRouter(opts) {\n\tconst value = React$1.useContext(routerContext);\n\tif (!value) warnMissingRouter(opts);\n\treturn value;\n}\nfunction warnMissingRouter(opts) {\n\tif (process.env.NODE_ENV !== \"production\" && (opts?.warn ?? true)) console.warn(\"Warning: useRouter must be used inside a <RouterProvider> component!\");\n}\n//#endregion\nexport { useRouter };\n\n//# sourceMappingURL=useRouter.js.map","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import { useCallback } from \"react\";\nimport { useSyncExternalStoreWithSelector } from \"use-sync-external-store/shim/with-selector\";\n\n//#region src/useSelector.ts\nfunction defaultCompare(a, b) {\n\treturn a === b;\n}\n/**\n* Selects a slice of state from an atom or store and subscribes the component\n* to that selection.\n*\n* This is the primary React read hook for TanStack Store. It works with any\n* source that exposes `get()` and `subscribe()`, including atoms, readonly\n* atoms, stores, and readonly stores.\n*\n* Omit the selector to subscribe to the whole value.\n*\n* @example\n* ```tsx\n* const count = useSelector(counterStore, (state) => state.count)\n* ```\n*\n* @example\n* ```tsx\n* const value = useSelector(countAtom)\n* ```\n*/\nfunction useSelector(source, selector = (s) => s, options) {\n\tconst compare = options?.compare ?? defaultCompare;\n\tconst subscribe = useCallback((handleStoreChange) => {\n\t\tconst { unsubscribe } = source.subscribe(handleStoreChange);\n\t\treturn unsubscribe;\n\t}, [source]);\n\tconst getSnapshot = useCallback(() => source.get(), [source]);\n\treturn useSyncExternalStoreWithSelector(subscribe, getSnapshot, getSnapshot, selector, compare);\n}\n\n//#endregion\nexport { useSelector };\n//# sourceMappingURL=useSelector.js.map","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction noop() {}\nvar Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(formatProdErrorMessage(522));\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_RECOVERABLE_TYPE = Symbol.for(\"react.recoverable\"),\n REACT_OPTIMISTIC_KEY = Symbol.for(\"react.optimistic_key\");\nfunction createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key:\n null == key\n ? null\n : key === REACT_OPTIMISTIC_KEY\n ? REACT_OPTIMISTIC_KEY\n : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\nexports.browser = function (reason) {\n return { $$typeof: REACT_RECOVERABLE_TYPE, _reason: reason };\n};\nexports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(formatProdErrorMessage(299));\n return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f();\n }\n};\nexports.preconnect = function (href, options) {\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence ? options.precedence : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n};\nexports.preinitModule = function (href, options) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as) {\n var crossOrigin = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0\n });\n }\n } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n};\nexports.preloadModule = function (href, options) {\n if (\"string\" === typeof href)\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0\n });\n } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.3.0\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{a as e}from"./rolldown-runtime-BWaJ3C7D.js";import{E as t,s as n}from"./react-dom-DYzj0HXX.js";var r=e(t(),1),i=n(),a=r.createContext(void 0),o=e=>{let t=r.useContext(a);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},s=({client:e,children:t})=>(r.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,i.jsx)(a.Provider,{value:e,children:t})),c={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},l=new class{#e=c;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function u(e){setTimeout(e,0)}var d=typeof window>`u`||`Deno`in globalThis;function f(){}function p(e,t){return typeof e==`function`?e(t):e}function m(e){return typeof e==`number`&&e>=0&&e!==1/0}function h(e,t){return Math.max(e+(t||0)-Date.now(),0)}function g(e,t){return typeof e==`function`?e(t):e}function _(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==y(o,t.options))return!1}else if(!x(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function v(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(b(t.options.mutationKey)!==b(a))return!1}else if(!x(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function y(e,t){return(t?.queryKeyHashFn||b)(e)}function b(e){return JSON.stringify(e,(e,t)=>E(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function x(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(Array.isArray(e)&&Array.isArray(t)){if(t.length>e.length)return!1;for(let n=0;n<t.length;n++)if(!x(e[n],t[n]))return!1;return!0}let n=Object.keys(t);for(let r of n)if(!x(e[r],t[r]))return!1;return!0}return!1}var S=Object.prototype.hasOwnProperty;function C(e,t,n=0){if(e===t)return e;if(n>500)return t;let r=T(e)&&T(t);if(!r&&!(E(e)&&E(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l<o;l++){let o=r?l:a[l],u=e[o],d=t[o];if(u===d){s[o]=u,(r?l<i:S.call(e,o))&&c++;continue}if(u===null||d===null||typeof u!=`object`||typeof d!=`object`){s[o]=d;continue}let f=C(u,d,n+1);s[o]=f,f===u&&c++}return i===o&&c===i?e:s}function w(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function T(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function E(e){if(!D(e))return!1;let t=Object.getPrototypeOf(e),n=t?.constructor;if(n===void 0)return!0;if(typeof n!=`function`)return!1;let r=n.prototype;return!(!D(r)||!r.hasOwnProperty(`isPrototypeOf`)||t!==Object.prototype)}function D(e){return Object.prototype.toString.call(e)===`[object Object]`}function O(e){return new Promise(t=>{l.setTimeout(t,e)})}function k(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:C(e,t)}function A(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function j(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var M=Symbol();function N(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===M?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function P(e,t){return typeof e==`function`?e(...t):!!e}function F(e,t,n){let r=!1,i;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(i??=t(),r||(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0})),i)}),e}var I=()=>d,L=()=>I(),R=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},z=new class extends R{#e;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e==`boolean`?this.#e:globalThis.document?.visibilityState!==`hidden`}},B=u;function V(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=B,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var H=V(),U=new class extends R{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#e}};function W(e){return Math.min(1e3*2**e,3e4)}function G(e){return(e??`online`)!==`online`||U.isOnline()}var K=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function q(e){let t=!1,n=0,r,i=`pending`,a,o,s=new Promise((e,t)=>{a=e,o=t});s.catch(f);let c=()=>i!==`pending`,l=t=>{if(!c()){let n=new K(t);g(n),e.onCancel?.(n)}},u=()=>{t=!0},d=()=>{t=!1},p=()=>z.isFocused()&&(e.networkMode===`always`||U.isOnline())&&e.canRun(),m=()=>G(e.networkMode)&&e.canRun(),h=e=>{c()||(r?.(),i=`resolved`,a(e))},g=e=>{c()||(r?.(),i=`rejected`,o(e))},_=()=>new Promise(t=>{r=e=>{(c()||p())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,c()||e.onContinue?.()}),v=()=>{if(c())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(h).catch(r=>{if(c())return;let i=e.retry??(L()?0:3),a=e.retryDelay??W,o=typeof a==`function`?a(n,r):a,s=i===!0||typeof i==`number`&&n<i||typeof i==`function`&&i(n,r);t||!s?g(r):(n++,e.onFail?.(n,r),O(o).then(()=>p()?void 0:_()).then(()=>{t?g(r):v()}))})};return{promise:s,status:()=>i,cancel:l,continue:()=>(r?.(),s),cancelRetry:u,continueRetry:d,canStart:m,start:()=>(m()?v():_().then(v),s)}}var J=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),m(this.gcTime)&&(this.#e=l.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(L()?1/0:3e5))}clearGcTimeout(){this.#e!==void 0&&(l.clearTimeout(this.#e),this.#e=void 0)}};export{s as A,C,M as D,P as E,h as O,k as S,w as T,m as _,U as a,f as b,R as c,A as d,j as f,y as g,b as h,q as i,o as j,l as k,L as l,p as m,K as n,H as o,N as p,G as r,z as s,J as t,F as u,v,g as w,x,_ as y};
2
+ //# sourceMappingURL=removable-BCLTvPOx.js.map