@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.
- package/README.md +121 -2
- package/dist/App.d.ts +121 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/App.js +132 -0
- package/dist/App.js.map +1 -0
- package/dist/app/client/.assetsignore +2 -0
- package/dist/app/client/_headers +4 -0
- package/dist/app/client/assets/Account-BYLpNFf3.css +1 -0
- package/dist/app/client/assets/Account-BllJah07.js +1 -0
- package/dist/app/client/assets/Amount-E_7snI0-.js +1 -0
- package/dist/app/client/assets/Amount-ZdtluGf-.css +1 -0
- package/dist/app/client/assets/Approval-CgV5JHlb.css +1 -0
- package/dist/app/client/assets/Approval-yKflypU2.js +1 -0
- package/dist/app/client/assets/ArrowUp-CRvqfMNU.js +1 -0
- package/dist/app/client/assets/Authentication-BAXhOh_4.js +2 -0
- package/dist/app/client/assets/BRLA-CZvVDNYr.png +0 -0
- package/dist/app/client/assets/BRZ-Cn3jEi9t.svg +1 -0
- package/dist/app/client/assets/CHFAU-DCedc4aH.png +0 -0
- package/dist/app/client/assets/Callout-B736759d.js +1 -0
- package/dist/app/client/assets/Callout-DBfEmP7q.css +1 -0
- package/dist/app/client/assets/Check-DVgD8tDG.js +1 -0
- package/dist/app/client/assets/ChevronRight-CsXtIZCB.js +1 -0
- package/dist/app/client/assets/ChooseAccount-BjxfQjPK.js +1 -0
- package/dist/app/client/assets/ChooseAccount-DL3wgJhE.css +1 -0
- package/dist/app/client/assets/Client-JrABNovb.js +1 -0
- package/dist/app/client/assets/Close-CRvWlhqc.js +1 -0
- package/dist/app/client/assets/Cloud-DgJsrqpQ.js +1 -0
- package/dist/app/client/assets/CodeInput-79Ctx8ZA.js +1 -0
- package/dist/app/client/assets/CodeInput-BqRteSwD.css +1 -0
- package/dist/app/client/assets/DLUSD-BnRXm3EI.png +0 -0
- package/dist/app/client/assets/Deposit-CclrAoXL.css +1 -0
- package/dist/app/client/assets/Deposit-c7uYn2Eb.js +1 -0
- package/dist/app/client/assets/DevTools-BYkmtuV5.css +1 -0
- package/dist/app/client/assets/DevTools-BgnzDGo2.js +1 -0
- package/dist/app/client/assets/DeviceApproval-BBUVv58e.js +1 -0
- package/dist/app/client/assets/DeviceApproval-BffFLD8F.css +1 -0
- package/dist/app/client/assets/EURAU-sjieTTB9.svg +1 -0
- package/dist/app/client/assets/EURC.e-CxYiiwkz.svg +1 -0
- package/dist/app/client/assets/Fingerprint-BNCA6qOJ.js +1 -0
- package/dist/app/client/assets/GBPA-DI_25xSG.svg +4 -0
- package/dist/app/client/assets/GUSD-BDEP2Qb-.svg +1 -0
- package/dist/app/client/assets/GeistMono-Variable-BRXCGrxA.woff2 +0 -0
- package/dist/app/client/assets/Globe-f0eWzcEI.js +1 -0
- package/dist/app/client/assets/Grant-5a-n1gJH.css +1 -0
- package/dist/app/client/assets/Grant-Dp7mpcEi.js +1 -0
- package/dist/app/client/assets/Hex-C9KeV7_9.css +1 -0
- package/dist/app/client/assets/Hex-CSp2U46W.js +10 -0
- package/dist/app/client/assets/IconChip-DpZHa1JW.js +1 -0
- package/dist/app/client/assets/IconChip-yqaQ2y_d.css +1 -0
- package/dist/app/client/assets/InputGroup-BlZvt9In.css +1 -0
- package/dist/app/client/assets/InputGroup-CsOeBnpB.js +1 -0
- package/dist/app/client/assets/Inter-cyrillic-e3OmmzmJ.woff2 +0 -0
- package/dist/app/client/assets/Inter-cyrillic-ext-DOWZeO4Q.woff2 +0 -0
- package/dist/app/client/assets/Inter-greek-BD3ujQlX.woff2 +0 -0
- package/dist/app/client/assets/Inter-greek-ext-CXEwbus4.woff2 +0 -0
- package/dist/app/client/assets/Inter-latin-BDFm4vTb.woff2 +0 -0
- package/dist/app/client/assets/Inter-latin-ext-E7a9JEPe.woff2 +0 -0
- package/dist/app/client/assets/Inter-symbols-DEch7Rxr.woff2 +0 -0
- package/dist/app/client/assets/Inter-vietnamese-Bg9723vR.woff2 +0 -0
- package/dist/app/client/assets/Loader-Cm9YJNNJ.js +1 -0
- package/dist/app/client/assets/MACH-sK0r79kQ.svg +4 -0
- package/dist/app/client/assets/OUSD-BFXgVo-Z.svg +5 -0
- package/dist/app/client/assets/OUSD.dark-BbbjMvA1.svg +17 -0
- package/dist/app/client/assets/OUSD.light-B_zpSz_c.svg +17 -0
- package/dist/app/client/assets/PRIME-CiFp2-3e.svg +14 -0
- package/dist/app/client/assets/PopoverPopup-DprRXRQe.js +1 -0
- package/dist/app/client/assets/Rows-DPGTUdA8.css +1 -0
- package/dist/app/client/assets/Rows-Qqo3evtk.js +1 -0
- package/dist/app/client/assets/SBC-BTYkbkiD.svg +1 -0
- package/dist/app/client/assets/SEKAU-CB5Fc6o8.svg +5 -0
- package/dist/app/client/assets/Separator-CZUjVQOL.js +1 -0
- package/dist/app/client/assets/SignIn-HdaDzFmq.js +1 -0
- package/dist/app/client/assets/SignIn-mlBTwUq4.css +1 -0
- package/dist/app/client/assets/Stack-CkkvkOzj.js +1 -0
- package/dist/app/client/assets/Stack-D7Yt22Ed.css +1 -0
- package/dist/app/client/assets/Tag-BMh6ajrW.css +1 -0
- package/dist/app/client/assets/Tag-CLOVANTX.js +1 -0
- package/dist/app/client/assets/ToolbarRootContext-Zty_Dh3J.js +1 -0
- package/dist/app/client/assets/Tooltip-CLATV6YU.js +1 -0
- package/dist/app/client/assets/Tooltip-d3y9ESUJ.css +1 -0
- package/dist/app/client/assets/USD1-COVcO_PB.svg +30 -0
- package/dist/app/client/assets/USDB-Ckwb6UQw.svg +11 -0
- package/dist/app/client/assets/USDC.e-3nMsKAMC.svg +1 -0
- package/dist/app/client/assets/USDT0-ia60Dw0e.svg +1 -0
- package/dist/app/client/assets/USDY-CB4iet2q.svg +16 -0
- package/dist/app/client/assets/USDe-BXHQCd92.svg +1 -0
- package/dist/app/client/assets/Upgrade-D0_aO5AP.js +1 -0
- package/dist/app/client/assets/WalletUpgrade-BPsPNQsd.js +1 -0
- package/dist/app/client/assets/WalletUpgrade-C04kW0Jl.css +1 -0
- package/dist/app/client/assets/YLDS-CRh8Zw0g.svg +3 -0
- package/dist/app/client/assets/___-I98bns4o.css +1 -0
- package/dist/app/client/assets/___.flows-XOlLwMIy.js +5 -0
- package/dist/app/client/assets/alphaUSD-CpCFoVuh.svg +1 -0
- package/dist/app/client/assets/authorize-C-MlCyaM.js +1 -0
- package/dist/app/client/assets/betaUSD-9A8AjgYg.svg +1 -0
- package/dist/app/client/assets/cUSD-WsQfa-iC.svg +1 -0
- package/dist/app/client/assets/cbBTC-DvUDqrDi.svg +1 -0
- package/dist/app/client/assets/choose-account-nXR-SKa2.js +1 -0
- package/dist/app/client/assets/deposit-G8tiLPN4.js +1 -0
- package/dist/app/client/assets/device-BojBF7hZ.js +1 -0
- package/dist/app/client/assets/error-KiOpX7GD.js +1 -0
- package/dist/app/client/assets/frxUSD-n9pTpinR.svg +1 -0
- package/dist/app/client/assets/getPseudoElementBounds-BsLy4zf_.js +1 -0
- package/dist/app/client/assets/goUSD-D9kUvHsF.svg +5 -0
- package/dist/app/client/assets/iUSD-CWCJAq9X.svg +1 -0
- package/dist/app/client/assets/index-BZH0M7Nf.js +13 -0
- package/dist/app/client/assets/index-CIYxHmYA.css +1 -0
- package/dist/app/client/assets/login-DUjpk60p.js +1 -0
- package/dist/app/client/assets/pathUSD-BvaO6ooS.svg +25 -0
- package/dist/app/client/assets/preload-helper-Bs9KvdYl.js +1 -0
- package/dist/app/client/assets/rUSD-B-xuFS7T.svg +1 -0
- package/dist/app/client/assets/reUSD-CkIUs0Lx.svg +1 -0
- package/dist/app/client/assets/removable-DMiA3t_o.js +1 -0
- package/dist/app/client/assets/reset-co-CHrff.css +1 -0
- package/dist/app/client/assets/rolldown-runtime-WkwZ5CU-.js +1 -0
- package/dist/app/client/assets/routes-CK8cthzA.js +1 -0
- package/dist/app/client/assets/sUSDe-j9GOnH7I.svg +1 -0
- package/dist/app/client/assets/siUSD-C10QUNYS.svg +1 -0
- package/dist/app/client/assets/stcUSD-DIntDJeh.svg +1 -0
- package/dist/app/client/assets/syrupUSDC-DhYwZqdM.svg +5 -0
- package/dist/app/client/assets/thetaUSD-Dgmksf6G.svg +1 -0
- package/dist/app/client/assets/useNavigate-CB6S2u4J.js +1 -0
- package/dist/app/client/assets/useQuery-BpHfPhTT.js +1 -0
- package/dist/app/client/assets/useRegisterFieldControl-DsslqY-V.js +1 -0
- package/dist/app/client/assets/wYLDS-CaCKDrO-.svg +10 -0
- package/dist/app/client/assets/wsrUSD-B2Ey0bDQ.svg +1 -0
- package/dist/app/client/assets/zyzz-DYC-X0_B.css +1 -0
- package/dist/app/client/assets/zyzz.config-DX_D_7j3.js +2 -0
- package/dist/app/db/auth.d.ts +3412 -0
- package/dist/app/db/auth.d.ts.map +1 -0
- package/dist/app/db/auth.js +349 -0
- package/dist/app/db/auth.js.map +1 -0
- package/dist/app/db/schema.d.ts +1091 -0
- package/dist/app/db/schema.d.ts.map +1 -0
- package/dist/app/db/schema.js +183 -0
- package/dist/app/db/schema.js.map +1 -0
- package/dist/app/db/table.d.ts +8 -0
- package/dist/app/db/table.d.ts.map +1 -0
- package/dist/app/db/table.js +28 -0
- package/dist/app/db/table.js.map +1 -0
- package/dist/app/server/.vite/manifest.json +2093 -0
- package/dist/app/server/assets/Account-BYLpNFf3.css +1 -0
- package/dist/app/server/assets/Account-G_SUeRU3.js +2 -0
- package/dist/app/server/assets/Account-G_SUeRU3.js.map +1 -0
- package/dist/app/server/assets/Amount-Cgwdr3Xt.js +2 -0
- package/dist/app/server/assets/Amount-Cgwdr3Xt.js.map +1 -0
- package/dist/app/server/assets/Amount-ZdtluGf-.css +1 -0
- package/dist/app/server/assets/Approval-CgV5JHlb.css +1 -0
- package/dist/app/server/assets/Approval-DvkB9tWA.js +2 -0
- package/dist/app/server/assets/Approval-DvkB9tWA.js.map +1 -0
- package/dist/app/server/assets/ArrowUp-DpK_zNgZ.js +2 -0
- package/dist/app/server/assets/ArrowUp-DpK_zNgZ.js.map +1 -0
- package/dist/app/server/assets/Authentication-BOkhlNQu.js +2 -0
- package/dist/app/server/assets/Authentication-BOkhlNQu.js.map +1 -0
- package/dist/app/server/assets/Authentication-C3oNZAVX.js +2 -0
- package/dist/app/server/assets/Authentication-C3oNZAVX.js.map +1 -0
- package/dist/app/server/assets/BRLA-CZvVDNYr.png +0 -0
- package/dist/app/server/assets/BRZ-Cn3jEi9t.svg +1 -0
- package/dist/app/server/assets/Bytes-C7CRVS3J.js +4 -0
- package/dist/app/server/assets/Bytes-C7CRVS3J.js.map +1 -0
- package/dist/app/server/assets/CHFAU-DCedc4aH.png +0 -0
- package/dist/app/server/assets/Callout-DBfEmP7q.css +1 -0
- package/dist/app/server/assets/Callout-tQoAitWq.js +2 -0
- package/dist/app/server/assets/Callout-tQoAitWq.js.map +1 -0
- package/dist/app/server/assets/ChainList-C4A_7e-9.js +6 -0
- package/dist/app/server/assets/ChainList-C4A_7e-9.js.map +1 -0
- package/dist/app/server/assets/ChainName-BMnJyJrd.js +2 -0
- package/dist/app/server/assets/ChainName-BMnJyJrd.js.map +1 -0
- package/dist/app/server/assets/Check-DU_oR3Ev.js +2 -0
- package/dist/app/server/assets/Check-DU_oR3Ev.js.map +1 -0
- package/dist/app/server/assets/ChevronRight-DTBnw-W6.js +2 -0
- package/dist/app/server/assets/ChevronRight-DTBnw-W6.js.map +1 -0
- package/dist/app/server/assets/ChooseAccount-BizJvMrY.js +2 -0
- package/dist/app/server/assets/ChooseAccount-BizJvMrY.js.map +1 -0
- package/dist/app/server/assets/ChooseAccount-DL3wgJhE.css +1 -0
- package/dist/app/server/assets/Client-Dx3KrpJZ.js +2 -0
- package/dist/app/server/assets/Client-Dx3KrpJZ.js.map +1 -0
- package/dist/app/server/assets/ClientOnly-CKLiu67O.js +2 -0
- package/dist/app/server/assets/ClientOnly-CKLiu67O.js.map +1 -0
- package/dist/app/server/assets/Close-DUeE37ev.js +2 -0
- package/dist/app/server/assets/Close-DUeE37ev.js.map +1 -0
- package/dist/app/server/assets/Cloud-CLB3rTTy.js +2 -0
- package/dist/app/server/assets/Cloud-CLB3rTTy.js.map +1 -0
- package/dist/app/server/assets/CodeInput-BqRteSwD.css +1 -0
- package/dist/app/server/assets/CodeInput-FsPzVuLU.js +2 -0
- package/dist/app/server/assets/CodeInput-FsPzVuLU.js.map +1 -0
- package/dist/app/server/assets/Credential-DFjcrdyI.js +2 -0
- package/dist/app/server/assets/Credential-DFjcrdyI.js.map +1 -0
- package/dist/app/server/assets/DLUSD-BnRXm3EI.png +0 -0
- package/dist/app/server/assets/Deposit-CclrAoXL.css +1 -0
- package/dist/app/server/assets/Deposit-ChYGRfW2.js +2 -0
- package/dist/app/server/assets/Deposit-ChYGRfW2.js.map +1 -0
- package/dist/app/server/assets/DevTools-BYkmtuV5.css +1 -0
- package/dist/app/server/assets/DevTools-ZJVXqrIK.js +2 -0
- package/dist/app/server/assets/DevTools-ZJVXqrIK.js.map +1 -0
- package/dist/app/server/assets/DeviceApproval-BffFLD8F.css +1 -0
- package/dist/app/server/assets/DeviceApproval-Bqe3Mi78.js +2 -0
- package/dist/app/server/assets/DeviceApproval-Bqe3Mi78.js.map +1 -0
- package/dist/app/server/assets/EURAU-sjieTTB9.svg +1 -0
- package/dist/app/server/assets/EURC.e-CxYiiwkz.svg +1 -0
- package/dist/app/server/assets/ExecutionError-CDszGSF1.js +9 -0
- package/dist/app/server/assets/ExecutionError-CDszGSF1.js.map +1 -0
- package/dist/app/server/assets/Fingerprint-DhOPOdRr.js +2 -0
- package/dist/app/server/assets/Fingerprint-DhOPOdRr.js.map +1 -0
- package/dist/app/server/assets/GBPA-DI_25xSG.svg +4 -0
- package/dist/app/server/assets/GUSD-BDEP2Qb-.svg +1 -0
- package/dist/app/server/assets/GeistMono-Variable-BRXCGrxA.woff2 +0 -0
- package/dist/app/server/assets/Globe-2CxqxU-7.js +2 -0
- package/dist/app/server/assets/Globe-2CxqxU-7.js.map +1 -0
- package/dist/app/server/assets/Grant-5a-n1gJH.css +1 -0
- package/dist/app/server/assets/Grant-D_tun0mF.js +2 -0
- package/dist/app/server/assets/Grant-D_tun0mF.js.map +1 -0
- package/dist/app/server/assets/Hex-C9KeV7_9.css +1 -0
- package/dist/app/server/assets/Hex-Z6m_0Y0m.js +11 -0
- package/dist/app/server/assets/Hex-Z6m_0Y0m.js.map +1 -0
- package/dist/app/server/assets/IconChip-C9ZrmGB5.js +2 -0
- package/dist/app/server/assets/IconChip-C9ZrmGB5.js.map +1 -0
- package/dist/app/server/assets/IconChip-yqaQ2y_d.css +1 -0
- package/dist/app/server/assets/InputGroup-BlZvt9In.css +1 -0
- package/dist/app/server/assets/InputGroup-hpjuLuR7.js +2 -0
- package/dist/app/server/assets/InputGroup-hpjuLuR7.js.map +1 -0
- package/dist/app/server/assets/Inter-cyrillic-e3OmmzmJ.woff2 +0 -0
- package/dist/app/server/assets/Inter-cyrillic-ext-DOWZeO4Q.woff2 +0 -0
- package/dist/app/server/assets/Inter-greek-BD3ujQlX.woff2 +0 -0
- package/dist/app/server/assets/Inter-greek-ext-CXEwbus4.woff2 +0 -0
- package/dist/app/server/assets/Inter-latin-BDFm4vTb.woff2 +0 -0
- package/dist/app/server/assets/Inter-latin-ext-E7a9JEPe.woff2 +0 -0
- package/dist/app/server/assets/Inter-symbols-DEch7Rxr.woff2 +0 -0
- package/dist/app/server/assets/Inter-vietnamese-Bg9723vR.woff2 +0 -0
- package/dist/app/server/assets/Loader-DnKC9P5p.js +2 -0
- package/dist/app/server/assets/Loader-DnKC9P5p.js.map +1 -0
- package/dist/app/server/assets/MACH-sK0r79kQ.svg +4 -0
- package/dist/app/server/assets/Match-CyVdYcSf.js +2 -0
- package/dist/app/server/assets/Match-CyVdYcSf.js.map +1 -0
- package/dist/app/server/assets/OUSD-BFXgVo-Z.svg +5 -0
- package/dist/app/server/assets/OUSD.dark-BbbjMvA1.svg +17 -0
- package/dist/app/server/assets/OUSD.light-B_zpSz_c.svg +17 -0
- package/dist/app/server/assets/PRIME-CiFp2-3e.svg +14 -0
- package/dist/app/server/assets/PopoverPopup-CwqeQelI.js +2 -0
- package/dist/app/server/assets/PopoverPopup-CwqeQelI.js.map +1 -0
- package/dist/app/server/assets/Rows-CQKQwTI1.js +2 -0
- package/dist/app/server/assets/Rows-CQKQwTI1.js.map +1 -0
- package/dist/app/server/assets/Rows-DPGTUdA8.css +1 -0
- package/dist/app/server/assets/SBC-BTYkbkiD.svg +1 -0
- package/dist/app/server/assets/SEKAU-CB5Fc6o8.svg +5 -0
- package/dist/app/server/assets/Separator-DrI7KRAs.js +2 -0
- package/dist/app/server/assets/Separator-DrI7KRAs.js.map +1 -0
- package/dist/app/server/assets/SignIn-DfeeLEmN.js +2 -0
- package/dist/app/server/assets/SignIn-DfeeLEmN.js.map +1 -0
- package/dist/app/server/assets/SignIn-mlBTwUq4.css +1 -0
- package/dist/app/server/assets/Stack-D7Yt22Ed.css +1 -0
- package/dist/app/server/assets/Stack-DGktaLZc.js +2 -0
- package/dist/app/server/assets/Stack-DGktaLZc.js.map +1 -0
- package/dist/app/server/assets/Tag-9vSRBpph.js +2 -0
- package/dist/app/server/assets/Tag-9vSRBpph.js.map +1 -0
- package/dist/app/server/assets/Tag-BMh6ajrW.css +1 -0
- package/dist/app/server/assets/ToolbarRootContext-BH_CFSWd.js +2 -0
- package/dist/app/server/assets/ToolbarRootContext-BH_CFSWd.js.map +1 -0
- package/dist/app/server/assets/Tooltip-DLX41peb.js +2 -0
- package/dist/app/server/assets/Tooltip-DLX41peb.js.map +1 -0
- package/dist/app/server/assets/Tooltip-d3y9ESUJ.css +1 -0
- package/dist/app/server/assets/USD1-COVcO_PB.svg +30 -0
- package/dist/app/server/assets/USDB-Ckwb6UQw.svg +11 -0
- package/dist/app/server/assets/USDC.e-3nMsKAMC.svg +1 -0
- package/dist/app/server/assets/USDT0-ia60Dw0e.svg +1 -0
- package/dist/app/server/assets/USDY-CB4iet2q.svg +16 -0
- package/dist/app/server/assets/USDe-BXHQCd92.svg +1 -0
- package/dist/app/server/assets/Upgrade-Dbfm2nm0.js +2 -0
- package/dist/app/server/assets/Upgrade-Dbfm2nm0.js.map +1 -0
- package/dist/app/server/assets/WalletUpgrade-C04kW0Jl.css +1 -0
- package/dist/app/server/assets/WalletUpgrade-CWKc5fYt.js +2 -0
- package/dist/app/server/assets/WalletUpgrade-CWKc5fYt.js.map +1 -0
- package/dist/app/server/assets/YLDS-CRh8Zw0g.svg +3 -0
- package/dist/app/server/assets/___-I98bns4o.css +1 -0
- package/dist/app/server/assets/___.flows-Cc-awUoC.js +6 -0
- package/dist/app/server/assets/___.flows-Cc-awUoC.js.map +1 -0
- package/dist/app/server/assets/_tanstack-start-manifest_v-U7TrtUSA.js +1 -0
- package/dist/app/server/assets/_zyzz__2Fhome_2Frunner_2Fwork_2Fid_2Fid_2Fsrc_2Fapp_2Froutes_2F_5B__5D.flows-B1pPOqsM.css +1 -0
- package/dist/app/server/assets/_zyzz__2Fhome_2Frunner_2Fwork_2Fid_2Fid_2Fsrc_2Fapp_2Froutes_2F_5B__5D.flows.tsx-CKALi9oD.js +2 -0
- package/dist/app/server/assets/_zyzz__2Fhome_2Frunner_2Fwork_2Fid_2Fid_2Fsrc_2Fapp_2Froutes_2F_5B__5D.flows.tsx-CKALi9oD.js.map +1 -0
- package/dist/app/server/assets/_zyzz_shared-BbDIEd_j.css +1 -0
- package/dist/app/server/assets/alphaUSD-CpCFoVuh.svg +1 -0
- package/dist/app/server/assets/arktype-aI7TBD0R-D1R3Byo5.js +2 -0
- package/dist/app/server/assets/arktype-aI7TBD0R-D1R3Byo5.js.map +1 -0
- package/dist/app/server/assets/async-local-storage-DlOvwxXd.js +2 -0
- package/dist/app/server/assets/async-local-storage-DlOvwxXd.js.map +1 -0
- package/dist/app/server/assets/authorize-BXzTo2Pb.js +2 -0
- package/dist/app/server/assets/authorize-BXzTo2Pb.js.map +1 -0
- package/dist/app/server/assets/authorize-BzoUqOdA.js +2 -0
- package/dist/app/server/assets/authorize-BzoUqOdA.js.map +1 -0
- package/dist/app/server/assets/authorize-DXYo-K2n-rmQQ42x1.js +56 -0
- package/dist/app/server/assets/authorize-DXYo-K2n-rmQQ42x1.js.map +1 -0
- package/dist/app/server/assets/authorize-DfjPYJqS.css +1 -0
- package/dist/app/server/assets/betaUSD-9A8AjgYg.svg +1 -0
- package/dist/app/server/assets/bun-sqlite-dialect-DoOVo4ja-CtyBkVMb.js +2 -0
- package/dist/app/server/assets/bun-sqlite-dialect-DoOVo4ja-CtyBkVMb.js.map +1 -0
- package/dist/app/server/assets/cUSD-WsQfa-iC.svg +1 -0
- package/dist/app/server/assets/call-dzi0xjZd.js +31 -0
- package/dist/app/server/assets/call-dzi0xjZd.js.map +1 -0
- package/dist/app/server/assets/cbBTC-DvUDqrDi.svg +1 -0
- package/dist/app/server/assets/ccip-DjD8z_3B.js +2 -0
- package/dist/app/server/assets/ccip-DjD8z_3B.js.map +1 -0
- package/dist/app/server/assets/choose-account-_X7xq5am.js +2 -0
- package/dist/app/server/assets/choose-account-_X7xq5am.js.map +1 -0
- package/dist/app/server/assets/choose-account-lqA5SLx9.css +1 -0
- package/dist/app/server/assets/choose-account-zm-5Qs3e.js +2 -0
- package/dist/app/server/assets/choose-account-zm-5Qs3e.js.map +1 -0
- package/dist/app/server/assets/compiled-query-Ds2NVcFT.js +2 -0
- package/dist/app/server/assets/compiled-query-Ds2NVcFT.js.map +1 -0
- package/dist/app/server/assets/convert-BIC8n32x.js +2 -0
- package/dist/app/server/assets/convert-BIC8n32x.js.map +1 -0
- package/dist/app/server/assets/cookie-DxViaO10.js +2 -0
- package/dist/app/server/assets/cookie-DxViaO10.js.map +1 -0
- package/dist/app/server/assets/core-BBrZXfrB.js +56 -0
- package/dist/app/server/assets/core-BBrZXfrB.js.map +1 -0
- package/dist/app/server/assets/d1-sqlite-dialect-m0f01-4z-Cv-csE1u.js +2 -0
- package/dist/app/server/assets/d1-sqlite-dialect-m0f01-4z-Cv-csE1u.js.map +1 -0
- package/dist/app/server/assets/decodeFunctionData-bP6V2ai4.js +2 -0
- package/dist/app/server/assets/decodeFunctionData-bP6V2ai4.js.map +1 -0
- package/dist/app/server/assets/default-u_dwuiYb-DOrMMcg9.js +2 -0
- package/dist/app/server/assets/default-u_dwuiYb-DOrMMcg9.js.map +1 -0
- package/dist/app/server/assets/deposit-BBaNI01u.js +2 -0
- package/dist/app/server/assets/deposit-BBaNI01u.js.map +1 -0
- package/dist/app/server/assets/deposit-LWS6ZTuf.js +2 -0
- package/dist/app/server/assets/deposit-LWS6ZTuf.js.map +1 -0
- package/dist/app/server/assets/deposit-oFx15XCA.css +1 -0
- package/dist/app/server/assets/device-CrXlusjr.js +2 -0
- package/dist/app/server/assets/device-CrXlusjr.js.map +1 -0
- package/dist/app/server/assets/device-DdFMgYe2.js +2 -0
- package/dist/app/server/assets/device-DdFMgYe2.js.map +1 -0
- package/dist/app/server/assets/device-tMCpu5zk.css +1 -0
- package/dist/app/server/assets/dist-CR6FW-yS.js +1 -0
- package/dist/app/server/assets/dist-CoH0hD1s.js +15 -0
- package/dist/app/server/assets/dist-CoH0hD1s.js.map +1 -0
- package/dist/app/server/assets/dist-DcICI3fd.js +2 -0
- package/dist/app/server/assets/dist-DcICI3fd.js.map +1 -0
- package/dist/app/server/assets/effect-QlVUlMFu-mXPkuQTb.js +2 -0
- package/dist/app/server/assets/effect-QlVUlMFu-mXPkuQTb.js.map +1 -0
- package/dist/app/server/assets/empty-plugin-adapters-BaGcmrjC.js +2 -0
- package/dist/app/server/assets/empty-plugin-adapters-BaGcmrjC.js.map +1 -0
- package/dist/app/server/assets/error-CXy8gqdE.css +1 -0
- package/dist/app/server/assets/error-DXDT2AHy.js +2 -0
- package/dist/app/server/assets/error-DXDT2AHy.js.map +1 -0
- package/dist/app/server/assets/error-bnVzy9tx.js +2 -0
- package/dist/app/server/assets/error-bnVzy9tx.js.map +1 -0
- package/dist/app/server/assets/esm-C6SW--yt.js +4 -0
- package/dist/app/server/assets/esm-C6SW--yt.js.map +1 -0
- package/dist/app/server/assets/factory-dvoOlKer.js +5 -0
- package/dist/app/server/assets/factory-dvoOlKer.js.map +1 -0
- package/dist/app/server/assets/frxUSD-n9pTpinR.svg +1 -0
- package/dist/app/server/assets/get-id-field-OwLpfjj2.js +6 -0
- package/dist/app/server/assets/get-id-field-OwLpfjj2.js.map +1 -0
- package/dist/app/server/assets/getPseudoElementBounds-PkWU72kn.js +2 -0
- package/dist/app/server/assets/getPseudoElementBounds-PkWU72kn.js.map +1 -0
- package/dist/app/server/assets/goUSD-D9kUvHsF.svg +5 -0
- package/dist/app/server/assets/iUSD-CWCJAq9X.svg +1 -0
- package/dist/app/server/assets/index-CLddUTqr-CC33CMvS.js +2 -0
- package/dist/app/server/assets/index-CLddUTqr-CC33CMvS.js.map +1 -0
- package/dist/app/server/assets/index-DZEfthgZ-Ec2MMQ_e.js +2 -0
- package/dist/app/server/assets/index-DZEfthgZ-Ec2MMQ_e.js.map +1 -0
- package/dist/app/server/assets/kysely-adapter-B8tQwTcu.js +1 -0
- package/dist/app/server/assets/lazyRouteComponent-DPOOPZw_.js +2 -0
- package/dist/app/server/assets/lazyRouteComponent-DPOOPZw_.js.map +1 -0
- package/dist/app/server/assets/load-server-Dr0IlySo.js +3 -0
- package/dist/app/server/assets/load-server-Dr0IlySo.js.map +1 -0
- package/dist/app/server/assets/login-BLq3tEEr.js +2 -0
- package/dist/app/server/assets/login-BLq3tEEr.js.map +1 -0
- package/dist/app/server/assets/login-DCIrAbED.js +2 -0
- package/dist/app/server/assets/login-DCIrAbED.js.map +1 -0
- package/dist/app/server/assets/login-msDnt3yT.css +1 -0
- package/dist/app/server/assets/matchContext-ByrIUj4L.js +2 -0
- package/dist/app/server/assets/matchContext-ByrIUj4L.js.map +1 -0
- package/dist/app/server/assets/node-sqlite-dialect-BowWLXvK.js +2 -0
- package/dist/app/server/assets/node-sqlite-dialect-BowWLXvK.js.map +1 -0
- package/dist/app/server/assets/pathUSD-BvaO6ooS.svg +25 -0
- package/dist/app/server/assets/rUSD-B-xuFS7T.svg +1 -0
- package/dist/app/server/assets/reUSD-CkIUs0Lx.svg +1 -0
- package/dist/app/server/assets/react-dom-DYzj0HXX.js +2 -0
- package/dist/app/server/assets/react-dom-DYzj0HXX.js.map +1 -0
- package/dist/app/server/assets/removable-BCLTvPOx.js +2 -0
- package/dist/app/server/assets/removable-BCLTvPOx.js.map +1 -0
- package/dist/app/server/assets/reset-DZWeTZeQ.js +2 -0
- package/dist/app/server/assets/reset-DZWeTZeQ.js.map +1 -0
- package/dist/app/server/assets/reset-co-CHrff.css +1 -0
- package/dist/app/server/assets/resolveError-CZXXvCJR.js +2 -0
- package/dist/app/server/assets/resolveError-CZXXvCJR.js.map +1 -0
- package/dist/app/server/assets/rolldown-runtime-BWaJ3C7D.js +1 -0
- package/dist/app/server/assets/router-Bqz5X4Qw.js +2 -0
- package/dist/app/server/assets/router-Bqz5X4Qw.js.map +1 -0
- package/dist/app/server/assets/router-CclzitkY.css +1 -0
- package/dist/app/server/assets/routes-BLQdKqcZ.js +2 -0
- package/dist/app/server/assets/routes-BLQdKqcZ.js.map +1 -0
- package/dist/app/server/assets/routes-BgiIzrOt.css +1 -0
- package/dist/app/server/assets/routes-Bv6WzsSR.js +2 -0
- package/dist/app/server/assets/routes-Bv6WzsSR.js.map +1 -0
- package/dist/app/server/assets/sUSDe-j9GOnH7I.svg +1 -0
- package/dist/app/server/assets/schema-check-oLqvHR8y.js +9 -0
- package/dist/app/server/assets/schema-check-oLqvHR8y.js.map +1 -0
- package/dist/app/server/assets/secp256k1-yg8eeIYU.js +2 -0
- package/dist/app/server/assets/secp256k1-yg8eeIYU.js.map +1 -0
- package/dist/app/server/assets/server-RRUiOef2.js +76 -0
- package/dist/app/server/assets/server-RRUiOef2.js.map +1 -0
- package/dist/app/server/assets/siUSD-C10QUNYS.svg +1 -0
- package/dist/app/server/assets/sqlite-adapter-C_LAV4e3.js +2 -0
- package/dist/app/server/assets/sqlite-adapter-C_LAV4e3.js.map +1 -0
- package/dist/app/server/assets/sqlite-introspector-DSCAP82F-Crx7Ny14.js +6 -0
- package/dist/app/server/assets/sqlite-introspector-DSCAP82F-Crx7Ny14.js.map +1 -0
- package/dist/app/server/assets/standard-json-DY77efq0.js +2 -0
- package/dist/app/server/assets/standard-json-DY77efq0.js.map +1 -0
- package/dist/app/server/assets/standard-json-ig2t0wRt.js +2 -0
- package/dist/app/server/assets/standard-json-ig2t0wRt.js.map +1 -0
- package/dist/app/server/assets/standard-json-t-LNckA6.js +2 -0
- package/dist/app/server/assets/standard-json-t-LNckA6.js.map +1 -0
- package/dist/app/server/assets/standard-openapi-CONmVRl8.js +2 -0
- package/dist/app/server/assets/standard-openapi-CONmVRl8.js.map +1 -0
- package/dist/app/server/assets/start-C63VetBp.js +2 -0
- package/dist/app/server/assets/start-C63VetBp.js.map +1 -0
- package/dist/app/server/assets/stcUSD-DIntDJeh.svg +1 -0
- package/dist/app/server/assets/sury-CWZTCd75-CDaOS2oM.js +2 -0
- package/dist/app/server/assets/sury-CWZTCd75-CDaOS2oM.js.map +1 -0
- package/dist/app/server/assets/syrupUSDC-DhYwZqdM.svg +5 -0
- package/dist/app/server/assets/thetaUSD-Dgmksf6G.svg +1 -0
- package/dist/app/server/assets/typebox-Dei93FPO-D_lCVdAz.js +2 -0
- package/dist/app/server/assets/typebox-Dei93FPO-D_lCVdAz.js.map +1 -0
- package/dist/app/server/assets/useNavigate-D6d1w7KE.js +2 -0
- package/dist/app/server/assets/useNavigate-D6d1w7KE.js.map +1 -0
- package/dist/app/server/assets/useQuery-BRpCr5vj.js +2 -0
- package/dist/app/server/assets/useQuery-BRpCr5vj.js.map +1 -0
- package/dist/app/server/assets/useRegisterFieldControl-cJesrOWK.js +2 -0
- package/dist/app/server/assets/useRegisterFieldControl-cJesrOWK.js.map +1 -0
- package/dist/app/server/assets/utils-C4ZXZIZW.js +2 -0
- package/dist/app/server/assets/utils-C4ZXZIZW.js.map +1 -0
- package/dist/app/server/assets/utils-D57zfcg-.js +2 -0
- package/dist/app/server/assets/utils-D57zfcg-.js.map +1 -0
- package/dist/app/server/assets/valibot--1zFm7rT-CIKoH3MS.js +2 -0
- package/dist/app/server/assets/valibot--1zFm7rT-CIKoH3MS.js.map +1 -0
- package/dist/app/server/assets/valibot-D_HTw1Gn-BdPyLkXt.js +2 -0
- package/dist/app/server/assets/valibot-D_HTw1Gn-BdPyLkXt.js.map +1 -0
- package/dist/app/server/assets/wYLDS-CaCKDrO-.svg +10 -0
- package/dist/app/server/assets/wsrUSD-B2Ey0bDQ.svg +1 -0
- package/dist/app/server/assets/zod-Bwrt9trS-BezI5Gi1.js +2 -0
- package/dist/app/server/assets/zod-Bwrt9trS-BezI5Gi1.js.map +1 -0
- package/dist/app/server/assets/zod-DSgpEGAE-DZ7M_Q33.js +2 -0
- package/dist/app/server/assets/zod-DSgpEGAE-DZ7M_Q33.js.map +1 -0
- package/dist/app/server/assets/zyzz-6R2K52xP.css +1 -0
- package/dist/app/server/assets/zyzz.config-CJRpjn0E.js +3 -0
- package/dist/app/server/assets/zyzz.config-CJRpjn0E.js.map +1 -0
- package/dist/app/server/index.js +532 -0
- package/dist/app/server/index.js.map +1 -0
- package/dist/app/server/wrangler.json +1 -0
- package/dist/cli/Admin.d.ts +34 -0
- package/dist/cli/Admin.d.ts.map +1 -0
- package/dist/cli/Admin.js +61 -0
- package/dist/cli/Admin.js.map +1 -0
- package/dist/cli/Apps.d.ts +9 -0
- package/dist/cli/Apps.d.ts.map +1 -0
- package/dist/cli/Apps.js +34 -0
- package/dist/cli/Apps.js.map +1 -0
- package/dist/cli/Cli.d.ts +13 -0
- package/dist/cli/Cli.d.ts.map +1 -0
- package/dist/cli/Cli.js +26 -0
- package/dist/cli/Cli.js.map +1 -0
- package/dist/cli/Project.d.ts +17 -0
- package/dist/cli/Project.d.ts.map +1 -0
- package/dist/cli/Project.js +90 -0
- package/dist/cli/Project.js.map +1 -0
- package/dist/cli/Realms.d.ts +24 -0
- package/dist/cli/Realms.d.ts.map +1 -0
- package/dist/cli/Realms.js +48 -0
- package/dist/cli/Realms.js.map +1 -0
- package/dist/cli/Session.d.ts +79 -0
- package/dist/cli/Session.d.ts.map +1 -0
- package/dist/cli/Session.js +229 -0
- package/dist/cli/Session.js.map +1 -0
- package/dist/cli/User.d.ts +24 -0
- package/dist/cli/User.d.ts.map +1 -0
- package/dist/cli/User.js +34 -0
- package/dist/cli/User.js.map +1 -0
- package/dist/cli/V1.d.ts +32 -0
- package/dist/cli/V1.d.ts.map +1 -0
- package/dist/cli/V1.js +38 -0
- package/dist/cli/V1.js.map +1 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +46 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/admin/apps/create.d.ts +23 -0
- package/dist/cli/commands/admin/apps/create.d.ts.map +1 -0
- package/dist/cli/commands/admin/apps/create.js +84 -0
- package/dist/cli/commands/admin/apps/create.js.map +1 -0
- package/dist/cli/commands/admin/apps/delete.d.ts +15 -0
- package/dist/cli/commands/admin/apps/delete.d.ts.map +1 -0
- package/dist/cli/commands/admin/apps/delete.js +41 -0
- package/dist/cli/commands/admin/apps/delete.js.map +1 -0
- package/dist/cli/commands/admin/apps/index.d.ts +5 -0
- package/dist/cli/commands/admin/apps/index.d.ts.map +1 -0
- package/dist/cli/commands/admin/apps/index.js +14 -0
- package/dist/cli/commands/admin/apps/index.js.map +1 -0
- package/dist/cli/commands/admin/apps/list.d.ts +10 -0
- package/dist/cli/commands/admin/apps/list.d.ts.map +1 -0
- package/dist/cli/commands/admin/apps/list.js +26 -0
- package/dist/cli/commands/admin/apps/list.js.map +1 -0
- package/dist/cli/commands/admin/apps/rotate-secret.d.ts +17 -0
- package/dist/cli/commands/admin/apps/rotate-secret.d.ts.map +1 -0
- package/dist/cli/commands/admin/apps/rotate-secret.js +47 -0
- package/dist/cli/commands/admin/apps/rotate-secret.js.map +1 -0
- package/dist/cli/commands/admin/apps/update.d.ts +20 -0
- package/dist/cli/commands/admin/apps/update.d.ts.map +1 -0
- package/dist/cli/commands/admin/apps/update.js +71 -0
- package/dist/cli/commands/admin/apps/update.js.map +1 -0
- package/dist/cli/commands/admin/index.d.ts +5 -0
- package/dist/cli/commands/admin/index.d.ts.map +1 -0
- package/dist/cli/commands/admin/index.js +13 -0
- package/dist/cli/commands/admin/index.js.map +1 -0
- package/dist/cli/commands/admin/migrate.d.ts +10 -0
- package/dist/cli/commands/admin/migrate.d.ts.map +1 -0
- package/dist/cli/commands/admin/migrate.js +20 -0
- package/dist/cli/commands/admin/migrate.js.map +1 -0
- package/dist/cli/commands/admin/realms/add.d.ts +13 -0
- package/dist/cli/commands/admin/realms/add.d.ts.map +1 -0
- package/dist/cli/commands/admin/realms/add.js +42 -0
- package/dist/cli/commands/admin/realms/add.js.map +1 -0
- package/dist/cli/commands/admin/realms/index.d.ts +5 -0
- package/dist/cli/commands/admin/realms/index.d.ts.map +1 -0
- package/dist/cli/commands/admin/realms/index.js +13 -0
- package/dist/cli/commands/admin/realms/index.js.map +1 -0
- package/dist/cli/commands/admin/realms/list.d.ts +14 -0
- package/dist/cli/commands/admin/realms/list.d.ts.map +1 -0
- package/dist/cli/commands/admin/realms/list.js +36 -0
- package/dist/cli/commands/admin/realms/list.js.map +1 -0
- package/dist/cli/commands/admin/realms/passkeys/index.d.ts +5 -0
- package/dist/cli/commands/admin/realms/passkeys/index.d.ts.map +1 -0
- package/dist/cli/commands/admin/realms/passkeys/index.js +13 -0
- package/dist/cli/commands/admin/realms/passkeys/index.js.map +1 -0
- package/dist/cli/commands/admin/realms/passkeys/set.d.ts +17 -0
- package/dist/cli/commands/admin/realms/passkeys/set.d.ts.map +1 -0
- package/dist/cli/commands/admin/realms/passkeys/set.js +46 -0
- package/dist/cli/commands/admin/realms/passkeys/set.js.map +1 -0
- package/dist/cli/commands/admin/realms/privy/index.d.ts +5 -0
- package/dist/cli/commands/admin/realms/privy/index.d.ts.map +1 -0
- package/dist/cli/commands/admin/realms/privy/index.js +13 -0
- package/dist/cli/commands/admin/realms/privy/index.js.map +1 -0
- package/dist/cli/commands/admin/realms/privy/set.d.ts +19 -0
- package/dist/cli/commands/admin/realms/privy/set.d.ts.map +1 -0
- package/dist/cli/commands/admin/realms/privy/set.js +66 -0
- package/dist/cli/commands/admin/realms/privy/set.js.map +1 -0
- package/dist/cli/commands/admin/realms/remove.d.ts +12 -0
- package/dist/cli/commands/admin/realms/remove.d.ts.map +1 -0
- package/dist/cli/commands/admin/realms/remove.js +35 -0
- package/dist/cli/commands/admin/realms/remove.js.map +1 -0
- package/dist/cli/commands/admin/realms/secp256k1/disable.d.ts +16 -0
- package/dist/cli/commands/admin/realms/secp256k1/disable.d.ts.map +1 -0
- package/dist/cli/commands/admin/realms/secp256k1/disable.js +42 -0
- package/dist/cli/commands/admin/realms/secp256k1/disable.js.map +1 -0
- package/dist/cli/commands/admin/realms/secp256k1/enable.d.ts +16 -0
- package/dist/cli/commands/admin/realms/secp256k1/enable.d.ts.map +1 -0
- package/dist/cli/commands/admin/realms/secp256k1/enable.js +42 -0
- package/dist/cli/commands/admin/realms/secp256k1/enable.js.map +1 -0
- package/dist/cli/commands/admin/realms/secp256k1/index.d.ts +9 -0
- package/dist/cli/commands/admin/realms/secp256k1/index.d.ts.map +1 -0
- package/dist/cli/commands/admin/realms/secp256k1/index.js +17 -0
- package/dist/cli/commands/admin/realms/secp256k1/index.js.map +1 -0
- package/dist/cli/commands/admin/realms/set.d.ts +17 -0
- package/dist/cli/commands/admin/realms/set.d.ts.map +1 -0
- package/dist/cli/commands/admin/realms/set.js +46 -0
- package/dist/cli/commands/admin/realms/set.js.map +1 -0
- package/dist/cli/commands/admin/rotate-key.d.ts +16 -0
- package/dist/cli/commands/admin/rotate-key.d.ts.map +1 -0
- package/dist/cli/commands/admin/rotate-key.js +46 -0
- package/dist/cli/commands/admin/rotate-key.js.map +1 -0
- package/dist/cli/commands/init.d.ts +11 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +34 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/login.d.ts +12 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +29 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/logout.d.ts +8 -0
- package/dist/cli/commands/logout.d.ts.map +1 -0
- package/dist/cli/commands/logout.js +19 -0
- package/dist/cli/commands/logout.js.map +1 -0
- package/dist/cli/commands/whoami.d.ts +12 -0
- package/dist/cli/commands/whoami.d.ts.map +1 -0
- package/dist/cli/commands/whoami.js +24 -0
- package/dist/cli/commands/whoami.js.map +1 -0
- package/dist/client/Actions.d.ts +108 -0
- package/dist/client/Actions.d.ts.map +1 -0
- package/dist/client/Actions.js +94 -0
- package/dist/client/Actions.js.map +1 -0
- package/dist/client/Auth.d.ts +143 -0
- package/dist/client/Auth.d.ts.map +1 -0
- package/dist/client/Auth.js +106 -0
- package/dist/client/Auth.js.map +1 -0
- package/dist/client/Authorization.d.ts +29 -0
- package/dist/client/Authorization.d.ts.map +1 -0
- package/dist/client/Authorization.js +12 -0
- package/dist/client/Authorization.js.map +1 -0
- package/dist/client/Decorator.d.ts +172 -0
- package/dist/client/Decorator.d.ts.map +1 -0
- package/dist/client/Decorator.js +241 -0
- package/dist/client/Decorator.js.map +1 -0
- package/dist/client/Key.d.ts +82 -0
- package/dist/client/Key.d.ts.map +1 -0
- package/dist/client/Key.js +81 -0
- package/dist/client/Key.js.map +1 -0
- package/dist/client/Pending.d.ts +38 -0
- package/dist/client/Pending.d.ts.map +1 -0
- package/dist/client/Pending.js +12 -0
- package/dist/client/Pending.js.map +1 -0
- package/dist/client/Permissions.d.ts +36 -0
- package/dist/client/Permissions.d.ts.map +1 -0
- package/dist/client/Permissions.js +16 -0
- package/dist/client/Permissions.js.map +1 -0
- package/dist/client/Storage.d.ts +27 -0
- package/dist/client/Storage.d.ts.map +1 -0
- package/dist/client/Storage.js +16 -0
- package/dist/client/Storage.js.map +1 -0
- package/dist/client/TempoAccount.d.ts +52 -0
- package/dist/client/TempoAccount.d.ts.map +1 -0
- package/dist/client/TempoAccount.js +17 -0
- package/dist/client/TempoAccount.js.map +1 -0
- package/dist/client/Tokens.d.ts +25 -0
- package/dist/client/Tokens.d.ts.map +1 -0
- package/dist/client/Tokens.js +12 -0
- package/dist/client/Tokens.js.map +1 -0
- package/dist/client/User.d.ts +21 -0
- package/dist/client/User.d.ts.map +1 -0
- package/dist/client/User.js +12 -0
- package/dist/client/User.js.map +1 -0
- package/dist/client/actions/account.d.ts +75 -0
- package/dist/client/actions/account.d.ts.map +1 -0
- package/dist/client/actions/account.js +102 -0
- package/dist/client/actions/account.js.map +1 -0
- package/dist/client/actions/device.d.ts +52 -0
- package/dist/client/actions/device.d.ts.map +1 -0
- package/dist/client/actions/device.js +103 -0
- package/dist/client/actions/device.js.map +1 -0
- package/dist/client/actions/email.d.ts +89 -0
- package/dist/client/actions/email.d.ts.map +1 -0
- package/dist/client/actions/email.js +86 -0
- package/dist/client/actions/email.js.map +1 -0
- package/dist/client/actions/oauth.d.ts +112 -0
- package/dist/client/actions/oauth.d.ts.map +1 -0
- package/dist/client/actions/oauth.js +103 -0
- package/dist/client/actions/oauth.js.map +1 -0
- package/dist/client/actions/passkey.d.ts +140 -0
- package/dist/client/actions/passkey.d.ts.map +1 -0
- package/dist/client/actions/passkey.js +170 -0
- package/dist/client/actions/passkey.js.map +1 -0
- package/dist/client/actions/realm.d.ts +25 -0
- package/dist/client/actions/realm.d.ts.map +1 -0
- package/dist/client/actions/realm.js +16 -0
- package/dist/client/actions/realm.js.map +1 -0
- package/dist/client/actions/redirect.d.ts +152 -0
- package/dist/client/actions/redirect.d.ts.map +1 -0
- package/dist/client/actions/redirect.js +311 -0
- package/dist/client/actions/redirect.js.map +1 -0
- package/dist/client/internal/accessKey.d.ts +21 -0
- package/dist/client/internal/accessKey.d.ts.map +1 -0
- package/dist/client/internal/accessKey.js +38 -0
- package/dist/client/internal/accessKey.js.map +1 -0
- package/dist/client/internal/account.d.ts +17 -0
- package/dist/client/internal/account.d.ts.map +1 -0
- package/dist/client/internal/account.js +3 -0
- package/dist/client/internal/account.js.map +1 -0
- package/dist/client/internal/api.d.ts +110 -0
- package/dist/client/internal/api.d.ts.map +1 -0
- package/dist/client/internal/api.js +136 -0
- package/dist/client/internal/api.js.map +1 -0
- package/dist/client/internal/headless.d.ts +159 -0
- package/dist/client/internal/headless.d.ts.map +1 -0
- package/dist/client/internal/headless.js +196 -0
- package/dist/client/internal/headless.js.map +1 -0
- package/dist/client/internal/indexedDb.d.ts +8 -0
- package/dist/client/internal/indexedDb.d.ts.map +1 -0
- package/dist/client/internal/indexedDb.js +32 -0
- package/dist/client/internal/indexedDb.js.map +1 -0
- package/dist/client/internal/request.d.ts +56 -0
- package/dist/client/internal/request.d.ts.map +1 -0
- package/dist/client/internal/request.js +44 -0
- package/dist/client/internal/request.js.map +1 -0
- package/dist/client/internal/store.d.ts +12 -0
- package/dist/client/internal/store.d.ts.map +1 -0
- package/dist/client/internal/store.js +15 -0
- package/dist/client/internal/store.js.map +1 -0
- package/dist/client/internal/verifier.d.ts +25 -0
- package/dist/client/internal/verifier.d.ts.map +1 -0
- package/dist/client/internal/verifier.js +52 -0
- package/dist/client/internal/verifier.js.map +1 -0
- package/dist/client.d.ts +18 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +18 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/Apps.d.ts +3169 -0
- package/dist/internal/Apps.d.ts.map +1 -0
- package/dist/internal/Apps.js +948 -0
- package/dist/internal/Apps.js.map +1 -0
- package/dist/internal/Auth.d.ts +4287 -0
- package/dist/internal/Auth.d.ts.map +1 -0
- package/dist/internal/Auth.js +185 -0
- package/dist/internal/Auth.js.map +1 -0
- package/dist/internal/Authorize.d.ts +526 -0
- package/dist/internal/Authorize.d.ts.map +1 -0
- package/dist/internal/Authorize.js +330 -0
- package/dist/internal/Authorize.js.map +1 -0
- package/dist/internal/Cache.d.ts +56 -0
- package/dist/internal/Cache.d.ts.map +1 -0
- package/dist/internal/Cache.js +65 -0
- package/dist/internal/Cache.js.map +1 -0
- package/dist/internal/Chain.d.ts +738 -0
- package/dist/internal/Chain.d.ts.map +1 -0
- package/dist/internal/Chain.js +65 -0
- package/dist/internal/Chain.js.map +1 -0
- package/dist/internal/ChainList.d.ts +117 -0
- package/dist/internal/ChainList.d.ts.map +1 -0
- package/dist/internal/ChainList.js +148 -0
- package/dist/internal/ChainList.js.map +1 -0
- package/dist/internal/ChainName.d.ts +11 -0
- package/dist/internal/ChainName.d.ts.map +1 -0
- package/dist/internal/ChainName.js +13 -0
- package/dist/internal/ChainName.js.map +1 -0
- package/dist/internal/CodeEmail.d.ts +38 -0
- package/dist/internal/CodeEmail.d.ts.map +1 -0
- package/dist/internal/CodeEmail.js +85 -0
- package/dist/internal/CodeEmail.js.map +1 -0
- package/dist/internal/ConfigurableAccount.d.ts +600 -0
- package/dist/internal/ConfigurableAccount.d.ts.map +1 -0
- package/dist/internal/ConfigurableAccount.js +795 -0
- package/dist/internal/ConfigurableAccount.js.map +1 -0
- package/dist/internal/Device.d.ts +246 -0
- package/dist/internal/Device.d.ts.map +1 -0
- package/dist/internal/Device.js +257 -0
- package/dist/internal/Device.js.map +1 -0
- package/dist/internal/Env.d.ts +97 -0
- package/dist/internal/Env.d.ts.map +1 -0
- package/dist/internal/Env.js +2 -0
- package/dist/internal/Env.js.map +1 -0
- package/dist/internal/ErrorResponse.d.ts +608 -0
- package/dist/internal/ErrorResponse.d.ts.map +1 -0
- package/dist/internal/ErrorResponse.js +701 -0
- package/dist/internal/ErrorResponse.js.map +1 -0
- package/dist/internal/Id.d.ts +10 -0
- package/dist/internal/Id.d.ts.map +1 -0
- package/dist/internal/Id.js +34 -0
- package/dist/internal/Id.js.map +1 -0
- package/dist/internal/KeyAuthorization.d.ts +1650 -0
- package/dist/internal/KeyAuthorization.d.ts.map +1 -0
- package/dist/internal/KeyAuthorization.js +1187 -0
- package/dist/internal/KeyAuthorization.js.map +1 -0
- package/dist/internal/Limits.d.ts +70 -0
- package/dist/internal/Limits.d.ts.map +1 -0
- package/dist/internal/Limits.js +36 -0
- package/dist/internal/Limits.js.map +1 -0
- package/dist/internal/Log.d.ts +34 -0
- package/dist/internal/Log.d.ts.map +1 -0
- package/dist/internal/Log.js +99 -0
- package/dist/internal/Log.js.map +1 -0
- package/dist/internal/LogLine.d.ts +29 -0
- package/dist/internal/LogLine.d.ts.map +1 -0
- package/dist/internal/LogLine.js +50 -0
- package/dist/internal/LogLine.js.map +1 -0
- package/dist/internal/Migrations.d.ts +28 -0
- package/dist/internal/Migrations.d.ts.map +1 -0
- package/dist/internal/Migrations.js +82 -0
- package/dist/internal/Migrations.js.map +1 -0
- package/dist/internal/Owner.d.ts +230 -0
- package/dist/internal/Owner.d.ts.map +1 -0
- package/dist/internal/Owner.js +101 -0
- package/dist/internal/Owner.js.map +1 -0
- package/dist/internal/Passkey.d.ts +901 -0
- package/dist/internal/Passkey.d.ts.map +1 -0
- package/dist/internal/Passkey.js +1185 -0
- package/dist/internal/Passkey.js.map +1 -0
- package/dist/internal/PendingKey.d.ts +49 -0
- package/dist/internal/PendingKey.d.ts.map +1 -0
- package/dist/internal/PendingKey.js +58 -0
- package/dist/internal/PendingKey.js.map +1 -0
- package/dist/internal/Privy.d.ts +138 -0
- package/dist/internal/Privy.d.ts.map +1 -0
- package/dist/internal/Privy.js +285 -0
- package/dist/internal/Privy.js.map +1 -0
- package/dist/internal/RateLimit.d.ts +218 -0
- package/dist/internal/RateLimit.d.ts.map +1 -0
- package/dist/internal/RateLimit.js +209 -0
- package/dist/internal/RateLimit.js.map +1 -0
- package/dist/internal/Realm.d.ts +290 -0
- package/dist/internal/Realm.d.ts.map +1 -0
- package/dist/internal/Realm.js +502 -0
- package/dist/internal/Realm.js.map +1 -0
- package/dist/internal/RequestId.d.ts +16 -0
- package/dist/internal/RequestId.d.ts.map +1 -0
- package/dist/internal/RequestId.js +78 -0
- package/dist/internal/RequestId.js.map +1 -0
- package/dist/internal/SigningKey.d.ts +126 -0
- package/dist/internal/SigningKey.d.ts.map +1 -0
- package/dist/internal/SigningKey.js +221 -0
- package/dist/internal/SigningKey.js.map +1 -0
- package/dist/internal/TempoAccount.d.ts +181 -0
- package/dist/internal/TempoAccount.d.ts.map +1 -0
- package/dist/internal/TempoAccount.js +369 -0
- package/dist/internal/TempoAccount.js.map +1 -0
- package/dist/internal/TestInbox.d.ts +42 -0
- package/dist/internal/TestInbox.d.ts.map +1 -0
- package/dist/internal/TestInbox.js +20 -0
- package/dist/internal/TestInbox.js.map +1 -0
- package/dist/internal/Timing.d.ts +52 -0
- package/dist/internal/Timing.d.ts.map +1 -0
- package/dist/internal/Timing.js +116 -0
- package/dist/internal/Timing.js.map +1 -0
- package/dist/internal/Validation.d.ts +52 -0
- package/dist/internal/Validation.d.ts.map +1 -0
- package/dist/internal/Validation.js +22 -0
- package/dist/internal/Validation.js.map +1 -0
- package/dist/internal/Verification.d.ts +24 -0
- package/dist/internal/Verification.d.ts.map +1 -0
- package/dist/internal/Verification.js +37 -0
- package/dist/internal/Verification.js.map +1 -0
- package/dist/internal/Wallet.d.ts +66 -0
- package/dist/internal/Wallet.d.ts.map +1 -0
- package/dist/internal/Wallet.js +59 -0
- package/dist/internal/Wallet.js.map +1 -0
- package/dist/internal/owners/Passkey.d.ts +9 -0
- package/dist/internal/owners/Passkey.d.ts.map +1 -0
- package/dist/internal/owners/Passkey.js +58 -0
- package/dist/internal/owners/Passkey.js.map +1 -0
- package/dist/internal/owners/Privy.d.ts +13 -0
- package/dist/internal/owners/Privy.d.ts.map +1 -0
- package/dist/internal/owners/Privy.js +59 -0
- package/dist/internal/owners/Privy.js.map +1 -0
- package/dist/internal/owners/Secp256k1.d.ts +12 -0
- package/dist/internal/owners/Secp256k1.d.ts.map +1 -0
- package/dist/internal/owners/Secp256k1.js +99 -0
- package/dist/internal/owners/Secp256k1.js.map +1 -0
- package/dist/worker.d.ts +18 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +18 -0
- package/dist/worker.js.map +1 -0
- package/package.json +83 -3
- package/src/Api.ts +157 -0
- package/src/App.ts +316 -0
- package/src/api/account.ts +2266 -0
- package/src/api/authenticate.ts +1662 -0
- package/src/api/authorize.ts +1086 -0
- package/src/api/device.ts +516 -0
- package/src/api/health.ts +72 -0
- package/src/api/lib/AccountStep.ts +485 -0
- package/src/api/lib/Auth.ts +164 -0
- package/src/api/lib/Configure.ts +921 -0
- package/src/api/lib/Consent.ts +388 -0
- package/src/api/lib/Cors.ts +160 -0
- package/src/api/lib/Database.ts +10 -0
- package/src/api/lib/DeviceRequest.ts +244 -0
- package/src/api/lib/FirstAccount.ts +136 -0
- package/src/api/lib/Headless.ts +616 -0
- package/src/api/lib/IsolateCache.ts +28 -0
- package/src/api/lib/KeySigner.ts +690 -0
- package/src/api/lib/PasskeyLink.ts +162 -0
- package/src/api/lib/Session.ts +64 -0
- package/src/api/lib/SignInConsent.ts +393 -0
- package/src/api/oauth.ts +1796 -0
- package/src/app/components/CodeInput.tsx +153 -0
- package/src/app/components/DevTools.tsx +1071 -0
- package/src/app/components/Grant.tsx +476 -0
- package/src/app/components/icons/BRLA.png +0 -0
- package/src/app/components/icons/BRZ.svg +1 -0
- package/src/app/components/icons/CHFAU.png +0 -0
- package/src/app/components/icons/DLUSD.png +0 -0
- package/src/app/components/icons/EURAU.svg +1 -0
- package/src/app/components/icons/EURC.e.svg +1 -0
- package/src/app/components/icons/GBPA.svg +4 -0
- package/src/app/components/icons/GUSD.svg +1 -0
- package/src/app/components/icons/MACH.svg +4 -0
- package/src/app/components/icons/OUSD.svg +5 -0
- package/src/app/components/icons/PRIME.svg +14 -0
- package/src/app/components/icons/SBC.svg +1 -0
- package/src/app/components/icons/SEKAU.svg +5 -0
- package/src/app/components/icons/USD1.svg +30 -0
- package/src/app/components/icons/USDB.svg +11 -0
- package/src/app/components/icons/USDC.e.svg +1 -0
- package/src/app/components/icons/USDT0.svg +1 -0
- package/src/app/components/icons/USDY.svg +16 -0
- package/src/app/components/icons/USDe.svg +1 -0
- package/src/app/components/icons/YLDS.svg +3 -0
- package/src/app/components/icons/alphaUSD.svg +1 -0
- package/src/app/components/icons/betaUSD.svg +1 -0
- package/src/app/components/icons/cUSD.svg +1 -0
- package/src/app/components/icons/cbBTC.svg +1 -0
- package/src/app/components/icons/frxUSD.svg +1 -0
- package/src/app/components/icons/goUSD.svg +5 -0
- package/src/app/components/icons/iUSD.svg +1 -0
- package/src/app/components/icons/pathUSD.svg +25 -0
- package/src/app/components/icons/rUSD.svg +1 -0
- package/src/app/components/icons/reUSD.svg +1 -0
- package/src/app/components/icons/sUSDe.svg +1 -0
- package/src/app/components/icons/siUSD.svg +1 -0
- package/src/app/components/icons/stcUSD.svg +1 -0
- package/src/app/components/icons/syrupUSDC.svg +5 -0
- package/src/app/components/icons/thetaUSD.svg +1 -0
- package/src/app/components/icons/wYLDS.svg +10 -0
- package/src/app/components/icons/wsrUSD.svg +1 -0
- package/src/app/components/logos/OUSD.dark.svg +17 -0
- package/src/app/components/logos/OUSD.light.svg +17 -0
- package/src/app/coverage.server.ts +73 -0
- package/src/app/coverage.ts +69 -0
- package/src/app/crons/cleanup.ts +104 -0
- package/src/app/db/auth.ts +440 -0
- package/src/app/db/migrations/0000_better_auth.sql +53 -0
- package/src/app/db/migrations/0001_oauth_provider.sql +162 -0
- package/src/app/db/migrations/0002_device_code.sql +17 -0
- package/src/app/db/migrations/0003_realms.sql +27 -0
- package/src/app/db/migrations/0004_default_realm.sql +2 -0
- package/src/app/db/migrations/0005_passkeys.sql +30 -0
- package/src/app/db/migrations/0006_first_accounts.sql +9 -0
- package/src/app/db/migrations/0007_pending_keys.sql +13 -0
- package/src/app/db/migrations/0008_secp256k1_owners.sql +18 -0
- package/src/app/db/migrations/0009_device_requests.sql +8 -0
- package/src/app/db/migrations/0010_device_keys.sql +4 -0
- package/src/app/db/migrations/0011_registered_passkeys.sql +2 -0
- package/src/app/db/migrations/0012_passkey_accounts.sql +7 -0
- package/src/app/db/migrations/0013_first_party_apps.sql +4 -0
- package/src/app/db/migrations/0014_logout_revokes_tokens.sql +17 -0
- package/src/app/db/migrations/0015_expiry_indexes.sql +9 -0
- package/src/app/db/migrations/0016_configurable_accounts.sql +15 -0
- package/src/app/db/migrations/0017_account_config_keys.sql +3 -0
- package/src/app/db/migrations/0018_better_auth_1_8.sql +9 -0
- package/src/app/db/migrations/0019_drop_provider_account_index.sql +1 -0
- package/src/app/db/migrations/meta/0000_snapshot.json +362 -0
- package/src/app/db/migrations/meta/0001_snapshot.json +1487 -0
- package/src/app/db/migrations/meta/0002_snapshot.json +1603 -0
- package/src/app/db/migrations/meta/0003_snapshot.json +1760 -0
- package/src/app/db/migrations/meta/0004_snapshot.json +1760 -0
- package/src/app/db/migrations/meta/0005_snapshot.json +1911 -0
- package/src/app/db/migrations/meta/0006_snapshot.json +1967 -0
- package/src/app/db/migrations/meta/0007_snapshot.json +2047 -0
- package/src/app/db/migrations/meta/0008_snapshot.json +2157 -0
- package/src/app/db/migrations/meta/0009_snapshot.json +2207 -0
- package/src/app/db/migrations/meta/0010_snapshot.json +2231 -0
- package/src/app/db/migrations/meta/0011_snapshot.json +2231 -0
- package/src/app/db/migrations/meta/0012_snapshot.json +2231 -0
- package/src/app/db/migrations/meta/0013_snapshot.json +2231 -0
- package/src/app/db/migrations/meta/0014_snapshot.json +2231 -0
- package/src/app/db/migrations/meta/0015_snapshot.json +2375 -0
- package/src/app/db/migrations/meta/0016_snapshot.json +2475 -0
- package/src/app/db/migrations/meta/0017_snapshot.json +2481 -0
- package/src/app/db/migrations/meta/0018_snapshot.json +2535 -0
- package/src/app/db/migrations/meta/0019_snapshot.json +2514 -0
- package/src/app/db/migrations/meta/_journal.json +146 -0
- package/src/app/db/schema.ts +241 -0
- package/src/app/db/table.ts +31 -0
- package/src/app/env.ts +57 -0
- package/src/app/inbox.ts +190 -0
- package/src/app/lib/Client.ts +82 -0
- package/src/app/lib/Inbox.ts +11 -0
- package/src/app/lib/Loader.ts +21 -0
- package/src/app/lib/Upgrade.ts +221 -0
- package/src/app/package.json +8 -0
- package/src/app/public/_headers +4 -0
- package/src/app/routeTree.gen.ts +219 -0
- package/src/app/router.tsx +47 -0
- package/src/app/routes/[_].flows.tsx +4254 -0
- package/src/app/routes/__root.tsx +172 -0
- package/src/app/routes/authorize.tsx +379 -0
- package/src/app/routes/choose-account.tsx +144 -0
- package/src/app/routes/deposit.tsx +107 -0
- package/src/app/routes/device.tsx +273 -0
- package/src/app/routes/error.tsx +62 -0
- package/src/app/routes/index.tsx +511 -0
- package/src/app/routes/login.tsx +577 -0
- package/src/app/screens/Account.tsx +559 -0
- package/src/app/screens/Approval.tsx +444 -0
- package/src/app/screens/ChooseAccount.tsx +206 -0
- package/src/app/screens/Deposit.tsx +523 -0
- package/src/app/screens/DeviceApproval.tsx +500 -0
- package/src/app/screens/NotFound.tsx +62 -0
- package/src/app/screens/SignIn.tsx +372 -0
- package/src/app/screens/WalletUpgrade.tsx +121 -0
- package/src/app/screens/chains/base.svg +3 -0
- package/src/app/screens/chains/ethereum.svg +11 -0
- package/src/app/screens/chains/solana.svg +4 -0
- package/src/app/screens/chains/tempo.svg +4 -0
- package/src/app/server.ts +342 -0
- package/src/app/vite.config.ts +128 -0
- package/src/app/void.config.ts +36 -0
- package/src/app/wallet.ts +69 -0
- package/src/app/zyzz.config.ts +52 -0
- package/src/cli/Admin.ts +74 -0
- package/src/cli/Apps.ts +27 -0
- package/src/cli/Cli.ts +41 -0
- package/src/cli/Project.ts +119 -0
- package/src/cli/Realms.ts +49 -0
- package/src/cli/Session.ts +290 -0
- package/src/cli/User.ts +40 -0
- package/src/cli/V1.ts +54 -0
- package/src/cli/bin.ts +44 -0
- package/src/cli/commands/admin/apps/create.ts +96 -0
- package/src/cli/commands/admin/apps/delete.ts +38 -0
- package/src/cli/commands/admin/apps/index.ts +15 -0
- package/src/cli/commands/admin/apps/list.ts +25 -0
- package/src/cli/commands/admin/apps/rotate-secret.ts +47 -0
- package/src/cli/commands/admin/apps/update.ts +79 -0
- package/src/cli/commands/admin/index.ts +14 -0
- package/src/cli/commands/admin/migrate.ts +19 -0
- package/src/cli/commands/admin/realms/add.ts +40 -0
- package/src/cli/commands/admin/realms/index.ts +14 -0
- package/src/cli/commands/admin/realms/list.ts +38 -0
- package/src/cli/commands/admin/realms/passkeys/index.ts +15 -0
- package/src/cli/commands/admin/realms/passkeys/set.ts +44 -0
- package/src/cli/commands/admin/realms/privy/index.ts +14 -0
- package/src/cli/commands/admin/realms/privy/set.ts +69 -0
- package/src/cli/commands/admin/realms/remove.ts +33 -0
- package/src/cli/commands/admin/realms/secp256k1/disable.ts +40 -0
- package/src/cli/commands/admin/realms/secp256k1/enable.ts +40 -0
- package/src/cli/commands/admin/realms/secp256k1/index.ts +19 -0
- package/src/cli/commands/admin/realms/set.ts +46 -0
- package/src/cli/commands/admin/rotate-key.ts +47 -0
- package/src/cli/commands/init.ts +42 -0
- package/src/cli/commands/login.ts +32 -0
- package/src/cli/commands/logout.ts +19 -0
- package/src/cli/commands/whoami.ts +23 -0
- package/src/client/Actions.ts +180 -0
- package/src/client/Auth.ts +267 -0
- package/src/client/Authorization.ts +34 -0
- package/src/client/Decorator.ts +444 -0
- package/src/client/Key.ts +137 -0
- package/src/client/Pending.ts +45 -0
- package/src/client/Permissions.ts +41 -0
- package/src/client/Storage.ts +29 -0
- package/src/client/TempoAccount.ts +55 -0
- package/src/client/Tokens.ts +27 -0
- package/src/client/User.ts +23 -0
- package/src/client/actions/account.ts +171 -0
- package/src/client/actions/device.ts +166 -0
- package/src/client/actions/email.ts +164 -0
- package/src/client/actions/oauth.ts +179 -0
- package/src/client/actions/passkey.ts +333 -0
- package/src/client/actions/realm.ts +37 -0
- package/src/client/actions/redirect.ts +502 -0
- package/src/client/internal/accessKey.ts +54 -0
- package/src/client/internal/account.ts +18 -0
- package/src/client/internal/api.ts +242 -0
- package/src/client/internal/headless.ts +308 -0
- package/src/client/internal/indexedDb.ts +44 -0
- package/src/client/internal/request.ts +70 -0
- package/src/client/internal/store.ts +20 -0
- package/src/client/internal/verifier.ts +75 -0
- package/src/client.ts +17 -0
- package/src/index.ts +5 -0
- package/src/internal/Apps.ts +1283 -0
- package/src/internal/Auth.ts +273 -0
- package/src/internal/Authorize.ts +433 -0
- package/src/internal/Balance.ts +144 -0
- package/src/internal/BodyLimit.ts +31 -0
- package/src/internal/Cache.ts +119 -0
- package/src/internal/Chain.ts +99 -0
- package/src/internal/ChainList.ts +270 -0
- package/src/internal/ChainName.ts +14 -0
- package/src/internal/ChainStatus.ts +65 -0
- package/src/internal/CodeEmail.ts +138 -0
- package/src/internal/ConfigurableAccount.ts +1315 -0
- package/src/internal/Device.ts +471 -0
- package/src/internal/Env.ts +92 -0
- package/src/internal/ErrorResponse.ts +896 -0
- package/src/internal/Faucet.ts +43 -0
- package/src/internal/Id.ts +41 -0
- package/src/internal/KeyAuthorization.ts +1536 -0
- package/src/internal/Limits.ts +40 -0
- package/src/internal/Log.ts +166 -0
- package/src/internal/LogLine.ts +81 -0
- package/src/internal/Logout.ts +356 -0
- package/src/internal/Migrations.ts +120 -0
- package/src/internal/OpenApi.ts +300 -0
- package/src/internal/Owner.ts +310 -0
- package/src/internal/Passkey.ts +1904 -0
- package/src/internal/PendingKey.ts +104 -0
- package/src/internal/Privy.ts +536 -0
- package/src/internal/RateLimit.ts +346 -0
- package/src/internal/Realm.ts +814 -0
- package/src/internal/RequestId.ts +118 -0
- package/src/internal/SignInGrant.ts +175 -0
- package/src/internal/SigningKey.ts +319 -0
- package/src/internal/TempoAccount.ts +545 -0
- package/src/internal/TestInbox.ts +51 -0
- package/src/internal/Timing.ts +172 -0
- package/src/internal/Validation.ts +52 -0
- package/src/internal/Verification.ts +58 -0
- package/src/internal/Wallet.ts +101 -0
- package/src/internal/owners/Passkey.ts +76 -0
- package/src/internal/owners/Privy.ts +82 -0
- package/src/internal/owners/Secp256k1.ts +139 -0
- package/src/types/app.d.ts +39 -0
- package/src/worker.ts +17 -0
|
@@ -0,0 +1,616 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs an app's headless authorization for a signed-in session: the code or tokens, with the key
|
|
3
|
+
* authorization that the account's owner signs. `POST /v1/authorize` runs it, and so does a digest
|
|
4
|
+
* sign-in: a passkey sign-in from an app's page whose challenge was the key's digest, with that
|
|
5
|
+
* assertion as the passkey's signature.
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import type { Context } from 'hono'
|
|
9
|
+
import type { Hex } from 'ox'
|
|
10
|
+
import { Base64, Bytes, Hash } from 'ox'
|
|
11
|
+
import { env } from 'void/env'
|
|
12
|
+
import * as z from 'zod'
|
|
13
|
+
import * as Apps from '../../internal/Apps.js'
|
|
14
|
+
import * as Authorize from '../../internal/Authorize.js'
|
|
15
|
+
import * as ConfigurableAccount from '../../internal/ConfigurableAccount.js'
|
|
16
|
+
import type { Env } from '../../internal/Env.js'
|
|
17
|
+
import * as ErrorResponse from '../../internal/ErrorResponse.js'
|
|
18
|
+
import * as Log from '../../internal/Log.js'
|
|
19
|
+
import * as Owner from '../../internal/Owner.js'
|
|
20
|
+
import * as Passkey from '../../internal/Passkey.js'
|
|
21
|
+
import * as RateLimit from '../../internal/RateLimit.js'
|
|
22
|
+
import * as Timing from '../../internal/Timing.js'
|
|
23
|
+
import * as AccountStep from './AccountStep.js'
|
|
24
|
+
import { db } from './Database.js'
|
|
25
|
+
import * as KeySigner from './KeySigner.js'
|
|
26
|
+
import * as SignInConsent from './SignInConsent.js'
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The response header that marks a refusal of the authorization of a sign-in with key signature,
|
|
30
|
+
* which comes after the sign-in created the session. Its value is `true`.
|
|
31
|
+
*/
|
|
32
|
+
export const signedInHeader = 'Tempo-Id-Signed-In'
|
|
33
|
+
|
|
34
|
+
/** The request options of the passkey step, as `KeySigner.challenge` returns them. */
|
|
35
|
+
type StepOptions = Awaited<ReturnType<typeof KeySigner.challenge>>
|
|
36
|
+
|
|
37
|
+
/** Unpadded URL-safe Base64, as PKCE encodes verifiers and challenges. */
|
|
38
|
+
const base64url = { pad: false, url: true } as const
|
|
39
|
+
|
|
40
|
+
/** Better Auth's authorization result, which names the redirect with the code. */
|
|
41
|
+
const redirectResult = z.object({ url: z.string().min(1) })
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Returns the enabled app with `clientId`, or `undefined` when no enabled app has it. A write from
|
|
45
|
+
* a first-party app's page takes the app that `Cors.firstParty` read for this request, and any
|
|
46
|
+
* other request reads it with `Apps.get`, so a disabled app is refused at once.
|
|
47
|
+
*/
|
|
48
|
+
export async function app(c: Context<Env>, options: app.Options) {
|
|
49
|
+
const { clientId } = options
|
|
50
|
+
const matched = c.var.firstParty?.find((entry) => entry.clientId === clientId)
|
|
51
|
+
if (matched) return matched
|
|
52
|
+
return await Timing.measure(
|
|
53
|
+
c,
|
|
54
|
+
Apps.get(db, { clientId, enabled: true }).catch((error: unknown) => {
|
|
55
|
+
if (error instanceof Apps.NotFoundError) return undefined
|
|
56
|
+
throw error
|
|
57
|
+
}),
|
|
58
|
+
'Apps.get',
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export declare namespace app {
|
|
63
|
+
type Options = {
|
|
64
|
+
/** The client ID that the request names. */
|
|
65
|
+
clientId: string
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Returns why Tempo ID refuses the headless request of `app`'s page before any sign-in or
|
|
71
|
+
* authorization, or `undefined`: `Authorize.check`'s refusals, and tokens for an app that holds a
|
|
72
|
+
* client secret. Every refusal depends only on the app and the request, so a sign-in that carries
|
|
73
|
+
* the request checks it before it spends the code.
|
|
74
|
+
*/
|
|
75
|
+
export function check(
|
|
76
|
+
request: Authorize.Request,
|
|
77
|
+
options: check.Options,
|
|
78
|
+
): ErrorResponse.Instance<typeof check.errors> | undefined {
|
|
79
|
+
return (
|
|
80
|
+
Authorize.check(request, options) ??
|
|
81
|
+
refusesTokens(request, { secret: Boolean(options.app?.secret) })
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export namespace check {
|
|
86
|
+
export type Options = Authorize.check.Options
|
|
87
|
+
|
|
88
|
+
/** The refusals `check` returns. Its return type admits no other. */
|
|
89
|
+
export const errors = [
|
|
90
|
+
...Authorize.check.errors,
|
|
91
|
+
Authorize.RejectedError,
|
|
92
|
+
] as const
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Authorizes the app of `request` for `session`, and returns the response of `POST /v1/authorize`.
|
|
97
|
+
* The caller checks the request with `Authorize.check` first. A spent rate limit returns its
|
|
98
|
+
* response. With `keySignature`, the passkey that signed the sign-in signs the key of an account
|
|
99
|
+
* that it owns. With `create`, a user who holds no account receives a first one, as
|
|
100
|
+
* `POST /v1/account` creates it. With `passkey`, a passkey that owns the account signs the key on
|
|
101
|
+
* the app's page: the request without an assertion returns the passkey step, and the repeated
|
|
102
|
+
* request with the assertion signs the key.
|
|
103
|
+
*/
|
|
104
|
+
export async function authorize(
|
|
105
|
+
c: Context<Env>,
|
|
106
|
+
options: authorize.Options,
|
|
107
|
+
): Promise<
|
|
108
|
+
| authorize.ReturnType
|
|
109
|
+
| authorize.Step
|
|
110
|
+
| ErrorResponse.Instance<typeof authorize.errors>
|
|
111
|
+
| NonNullable<Awaited<ReturnType<typeof RateLimit.check>>>
|
|
112
|
+
> {
|
|
113
|
+
const { headers, keySignature, passkey, request, session } = options
|
|
114
|
+
const create = options.create ?? Boolean(keySignature)
|
|
115
|
+
const clientId = request.client_id
|
|
116
|
+
const cookie = headers.get('cookie') ?? undefined
|
|
117
|
+
|
|
118
|
+
const refused = refusesTokens(request, { secret: options.secret })
|
|
119
|
+
if (refused) return refused
|
|
120
|
+
|
|
121
|
+
// Counted per user once the request can authorize, so no other caller spends the user's quota. A
|
|
122
|
+
// key that can create the first account, as `POST /v1/account` does, counts there too: one that
|
|
123
|
+
// names no account.
|
|
124
|
+
const requested = request.key_authorization
|
|
125
|
+
const limited = await Timing.measure(
|
|
126
|
+
c,
|
|
127
|
+
RateLimit.check(c, {
|
|
128
|
+
limits: [
|
|
129
|
+
{ binding: 'AUTHORIZE_LIMIT', key: session.user.id },
|
|
130
|
+
...(create && requested && !requested.account
|
|
131
|
+
? [{ binding: 'ACCOUNT_LIMIT' as const, key: session.user.id }]
|
|
132
|
+
: []),
|
|
133
|
+
],
|
|
134
|
+
}),
|
|
135
|
+
'RateLimit.check',
|
|
136
|
+
)
|
|
137
|
+
if (limited) return limited
|
|
138
|
+
|
|
139
|
+
// A key needs the owner of its account, to sign it. With `create`, a user who holds no account
|
|
140
|
+
// receives a first one, so the app's page needs no `POST /v1/account` before the request.
|
|
141
|
+
const signing = requested
|
|
142
|
+
? await Timing.measure(
|
|
143
|
+
c,
|
|
144
|
+
KeySigner.resolve(c, {
|
|
145
|
+
account: requested.account,
|
|
146
|
+
chainId: requested.chainId,
|
|
147
|
+
clientId,
|
|
148
|
+
cookie,
|
|
149
|
+
create,
|
|
150
|
+
email: session.user.email,
|
|
151
|
+
// The app's page runs the passkey's ceremony, at the redirect URI's origin that
|
|
152
|
+
// `Authorize.check` accepted as the request's `Origin`.
|
|
153
|
+
page: passkey ? new URL(request.redirect_uri).origin : undefined,
|
|
154
|
+
passkey: Boolean(passkey),
|
|
155
|
+
sessionId: session.session.id,
|
|
156
|
+
signInCredential: keySignature?.assertion.id,
|
|
157
|
+
// Only a passkey that signs in this request signs the key as its own account. Without
|
|
158
|
+
// one, the account keeps `upgrade_required`, which names the wait.
|
|
159
|
+
skipUpgrade: request.skip_upgrade && Boolean(keySignature || passkey),
|
|
160
|
+
userId: session.user.id,
|
|
161
|
+
}),
|
|
162
|
+
'KeySigner.resolve',
|
|
163
|
+
)
|
|
164
|
+
: undefined
|
|
165
|
+
if (signing instanceof ErrorResponse.ResponseError) return signing
|
|
166
|
+
|
|
167
|
+
// A sign-in with key signature signs only for the account that its own passkey owns. Its digest
|
|
168
|
+
// binds the sign-in's witness, so the key carries that witness. A configurable account's owners
|
|
169
|
+
// sign its digest, which the sign-in's assertion does not sign.
|
|
170
|
+
const tapped =
|
|
171
|
+
keySignature &&
|
|
172
|
+
signing &&
|
|
173
|
+
!Owner.configured(signing.owner) &&
|
|
174
|
+
signing.owner.credential?.id === keySignature.assertion.id
|
|
175
|
+
? keySignature
|
|
176
|
+
: undefined
|
|
177
|
+
const key =
|
|
178
|
+
requested && tapped ? { ...requested, witness: tapped.witness } : requested
|
|
179
|
+
|
|
180
|
+
// A passkey signs only in the browser, so the app's page signs the key's digest and repeats the
|
|
181
|
+
// request. The step returns the key's expiry, which the repeated request sends, since a default
|
|
182
|
+
// expiry would change the digest.
|
|
183
|
+
if (key && signing && !signing.owner.signer && !tapped && !passkey?.assertion)
|
|
184
|
+
return {
|
|
185
|
+
expiry: key.expiry,
|
|
186
|
+
options: await Timing.measure(
|
|
187
|
+
c,
|
|
188
|
+
KeySigner.challenge(c, {
|
|
189
|
+
account: signing.account,
|
|
190
|
+
clientId,
|
|
191
|
+
key,
|
|
192
|
+
owner: signing.owner,
|
|
193
|
+
userId: session.user.id,
|
|
194
|
+
}),
|
|
195
|
+
'KeySigner.challenge',
|
|
196
|
+
),
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Without a key, the accounts only pick the selection, so a Privy outage skips it, as the account
|
|
200
|
+
// step does.
|
|
201
|
+
const account = await (async () => {
|
|
202
|
+
if (signing) return signing.account
|
|
203
|
+
const listed = await Timing.measure(
|
|
204
|
+
c,
|
|
205
|
+
AccountStep.accounts(c, {
|
|
206
|
+
chainId:
|
|
207
|
+
requested?.chainId === undefined
|
|
208
|
+
? undefined
|
|
209
|
+
: Number(requested.chainId),
|
|
210
|
+
clientId,
|
|
211
|
+
userId: session.user.id,
|
|
212
|
+
}),
|
|
213
|
+
'AccountStep.accounts',
|
|
214
|
+
).catch((error: unknown) => {
|
|
215
|
+
Log.warn(c, {
|
|
216
|
+
error,
|
|
217
|
+
fields: { clientId },
|
|
218
|
+
message:
|
|
219
|
+
'The headless authorization skipped an account selection whose accounts failed to load.',
|
|
220
|
+
})
|
|
221
|
+
return []
|
|
222
|
+
})
|
|
223
|
+
const selected = AccountStep.selected({
|
|
224
|
+
clientId,
|
|
225
|
+
cookie,
|
|
226
|
+
sessionId: session.session.id,
|
|
227
|
+
})
|
|
228
|
+
return AccountStep.find(listed, selected)?.address ?? listed[0]?.address
|
|
229
|
+
})()
|
|
230
|
+
|
|
231
|
+
// The in-process authorization reads the account, so the account step passes. Only an account
|
|
232
|
+
// that the key names, or that the passkey of the sign-in with key signature owns, becomes the
|
|
233
|
+
// app's account for later requests.
|
|
234
|
+
const selection = account
|
|
235
|
+
? AccountStep.select({
|
|
236
|
+
account: account.toLowerCase(),
|
|
237
|
+
clientId,
|
|
238
|
+
cookie,
|
|
239
|
+
sessionId: session.session.id,
|
|
240
|
+
})
|
|
241
|
+
: undefined
|
|
242
|
+
const authorizeHeaders = new Headers(headers)
|
|
243
|
+
if (selection) authorizeHeaders.set('cookie', selection.header)
|
|
244
|
+
// The route read the accounts and chose one, so the account step reads them no second time.
|
|
245
|
+
c.set('accountChosen', true)
|
|
246
|
+
|
|
247
|
+
// Without the app's challenge, Tempo ID holds the verifier and redeems the code itself.
|
|
248
|
+
const verifier = request.code_challenge
|
|
249
|
+
? undefined
|
|
250
|
+
: Base64.fromBytes(Bytes.random(32), base64url)
|
|
251
|
+
const query = {
|
|
252
|
+
client_id: clientId,
|
|
253
|
+
code_challenge:
|
|
254
|
+
request.code_challenge ??
|
|
255
|
+
Base64.fromBytes(Hash.sha256(Bytes.fromString(verifier!)), base64url),
|
|
256
|
+
code_challenge_method: 'S256',
|
|
257
|
+
redirect_uri: request.redirect_uri,
|
|
258
|
+
// In-process calls skip `withResource`, so each names the one audience that APIs verify.
|
|
259
|
+
resource: env.URL,
|
|
260
|
+
response_type: 'code',
|
|
261
|
+
scope: request.scope ?? 'openid',
|
|
262
|
+
...(request.state ? { state: request.state } : {}),
|
|
263
|
+
}
|
|
264
|
+
const url = new URL('/oauth2/authorize', env.URL)
|
|
265
|
+
url.search = new URLSearchParams(query).toString()
|
|
266
|
+
// Better Auth returns the redirect as JSON for a request that accepts it.
|
|
267
|
+
authorizeHeaders.set('accept', 'application/json')
|
|
268
|
+
const authorized = await Timing.measure(
|
|
269
|
+
c,
|
|
270
|
+
c.var.auth.api.oauth2Authorize({
|
|
271
|
+
asResponse: false,
|
|
272
|
+
// A `GET` request reads `query`. The endpoint types a body for its `POST` form.
|
|
273
|
+
body: {},
|
|
274
|
+
headers: authorizeHeaders,
|
|
275
|
+
query,
|
|
276
|
+
request: new Request(url, { headers: authorizeHeaders }),
|
|
277
|
+
}),
|
|
278
|
+
'auth.oauth2Authorize',
|
|
279
|
+
)
|
|
280
|
+
const location = redirectResult.safeParse(authorized)
|
|
281
|
+
const redirect = location.success
|
|
282
|
+
? URL.parse(location.data.url, env.URL)
|
|
283
|
+
: null
|
|
284
|
+
// A request that needs the approval page, or that Better Auth refuses, returns no code. Better
|
|
285
|
+
// Auth sets its `code` in place of a registered one, and appends its `error` to the registered
|
|
286
|
+
// URI's query, which may hold its own.
|
|
287
|
+
const registered = new URL(request.redirect_uri).searchParams
|
|
288
|
+
const code = redirect?.searchParams.get('code')
|
|
289
|
+
if (
|
|
290
|
+
!redirect ||
|
|
291
|
+
!code ||
|
|
292
|
+
redirect.searchParams.getAll('error').length >
|
|
293
|
+
registered.getAll('error').length ||
|
|
294
|
+
!`${redirect.origin}${redirect.pathname}`.startsWith(
|
|
295
|
+
new URL(request.redirect_uri).origin,
|
|
296
|
+
)
|
|
297
|
+
)
|
|
298
|
+
return new Authorize.RejectedError({
|
|
299
|
+
description:
|
|
300
|
+
"Authorization refused: the app's request needs the user's approval, which no page shows here. Authorize through a redirect, or register the app to skip consent.",
|
|
301
|
+
})
|
|
302
|
+
|
|
303
|
+
// The owner signs only once the authorization returns a code, so a refused request signs nothing.
|
|
304
|
+
// The code's redemption runs beside the signature, since neither reads the other. A refused
|
|
305
|
+
// signature returns no tokens.
|
|
306
|
+
const [signature, redemption] = await Promise.allSettled([
|
|
307
|
+
key && signing
|
|
308
|
+
? Timing.measure(
|
|
309
|
+
c,
|
|
310
|
+
KeySigner.sign(c, {
|
|
311
|
+
account: signing.account,
|
|
312
|
+
assertion: tapped?.assertion ?? passkey?.assertion,
|
|
313
|
+
// The sign-in already spent its own challenge, which was the key's digest.
|
|
314
|
+
challenge: tapped ? 'sign-in' : 'stored',
|
|
315
|
+
clientId,
|
|
316
|
+
key,
|
|
317
|
+
origin:
|
|
318
|
+
tapped?.origin ??
|
|
319
|
+
(passkey ? new URL(request.redirect_uri).origin : undefined),
|
|
320
|
+
owner: signing.owner,
|
|
321
|
+
userId: session.user.id,
|
|
322
|
+
}),
|
|
323
|
+
'KeySigner.sign',
|
|
324
|
+
)
|
|
325
|
+
: undefined,
|
|
326
|
+
verifier
|
|
327
|
+
? Timing.measure(
|
|
328
|
+
c,
|
|
329
|
+
c.var.auth.api.oauth2Token({
|
|
330
|
+
body: {
|
|
331
|
+
client_id: clientId,
|
|
332
|
+
code,
|
|
333
|
+
code_verifier: verifier,
|
|
334
|
+
grant_type: 'authorization_code',
|
|
335
|
+
redirect_uri: request.redirect_uri,
|
|
336
|
+
resource: env.URL,
|
|
337
|
+
},
|
|
338
|
+
headers: new Headers({
|
|
339
|
+
'content-type': 'application/x-www-form-urlencoded',
|
|
340
|
+
}),
|
|
341
|
+
}),
|
|
342
|
+
'auth.oauth2Token',
|
|
343
|
+
)
|
|
344
|
+
: undefined,
|
|
345
|
+
])
|
|
346
|
+
if (signature.status === 'rejected') throw signature.reason
|
|
347
|
+
const signed = signature.value
|
|
348
|
+
if (signed instanceof ErrorResponse.ResponseError) return signed
|
|
349
|
+
|
|
350
|
+
// A linked wallet.tempo passkey's account that is not configurable on a flagged chain signed only
|
|
351
|
+
// because the request skipped its upgrade.
|
|
352
|
+
const upgrade =
|
|
353
|
+
signed &&
|
|
354
|
+
signing?.owner.linked &&
|
|
355
|
+
!signing.owner.configurable &&
|
|
356
|
+
ConfigurableAccount.on({ chainId: Number(requested!.chainId), env })
|
|
357
|
+
const result = {
|
|
358
|
+
...(account && signed ? { account, key_authorization: signed } : {}),
|
|
359
|
+
...(request.state ? { state: request.state } : {}),
|
|
360
|
+
...(upgrade ? { upgrade_available: true as const } : {}),
|
|
361
|
+
}
|
|
362
|
+
// The account that the key names, or that the passkey of the sign-in with key signature owns,
|
|
363
|
+
// stays the app's account for later requests in the session.
|
|
364
|
+
if (selection && (requested?.account || tapped))
|
|
365
|
+
c.header('set-cookie', selection.setCookie, { append: true })
|
|
366
|
+
c.header('cache-control', 'no-store')
|
|
367
|
+
if (!verifier) return { ...result, code }
|
|
368
|
+
|
|
369
|
+
if (redemption.status === 'rejected') throw redemption.reason
|
|
370
|
+
return {
|
|
371
|
+
...result,
|
|
372
|
+
tokens: Authorize.schema.tokens.parse(redemption.value),
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
export namespace authorize {
|
|
377
|
+
export type Options = {
|
|
378
|
+
/**
|
|
379
|
+
* Whether a user who holds no account, and whose key names none, receives a first one. Defaults
|
|
380
|
+
* to `true` with `keySignature`, and to `false` without it.
|
|
381
|
+
*/
|
|
382
|
+
create?: boolean | undefined
|
|
383
|
+
/** The request headers, with the cookie of the signed-in session. */
|
|
384
|
+
headers: Headers
|
|
385
|
+
/** A passkey sign-in whose assertion signed the key's digest, if any. */
|
|
386
|
+
keySignature?: KeySignature | undefined
|
|
387
|
+
/**
|
|
388
|
+
* Whether the app's page signs the key with the passkey that owns the account, and the
|
|
389
|
+
* passkey's assertion over the step's options once the page holds it. Absent, a passkey-owned
|
|
390
|
+
* account refuses the key with `webauthn_required`.
|
|
391
|
+
*/
|
|
392
|
+
passkey?: { assertion?: Passkey.Assertion | undefined } | undefined
|
|
393
|
+
/** The headless request, which `Authorize.check` accepted. */
|
|
394
|
+
request: Authorize.Request
|
|
395
|
+
/** Whether the app holds a client secret. */
|
|
396
|
+
secret: boolean
|
|
397
|
+
/** The signed-in session, with the user's email when the caller holds it. */
|
|
398
|
+
session: {
|
|
399
|
+
session: { id: string }
|
|
400
|
+
user: { email?: string | undefined; id: string }
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/** The authorization: a code or tokens, with the signed key and its account. */
|
|
405
|
+
export type ReturnType = {
|
|
406
|
+
/** The account that the key acts for, with a signed key. */
|
|
407
|
+
account?: `0x${string}` | undefined
|
|
408
|
+
/** The authorization code, for a request with a `code_challenge`. */
|
|
409
|
+
code?: string | undefined
|
|
410
|
+
/** The signed key authorization, for a request with a key. */
|
|
411
|
+
key_authorization?: KeySigner.sign.ReturnType | undefined
|
|
412
|
+
/** The request's `state`, unchanged. */
|
|
413
|
+
state?: string | undefined
|
|
414
|
+
/** The tokens, for a request without a `code_challenge`. */
|
|
415
|
+
tokens?: z.output<typeof Authorize.schema.tokens> | undefined
|
|
416
|
+
/** Present when the request skipped the upgrade that the key's account waits for. */
|
|
417
|
+
upgrade_available?: true | undefined
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/** The passkey step, which the app's page signs before it repeats the request. */
|
|
421
|
+
export type Step = {
|
|
422
|
+
/** The key's expiry in Unix seconds, which the repeated request sends. */
|
|
423
|
+
expiry: number
|
|
424
|
+
/** The options for `navigator.credentials.get()`, whose challenge is the key's digest. */
|
|
425
|
+
options: StepOptions
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/** The refusals `authorize` returns. Its return type admits no other. */
|
|
429
|
+
export const errors = [
|
|
430
|
+
...KeySigner.resolve.errors,
|
|
431
|
+
...KeySigner.sign.errors,
|
|
432
|
+
Authorize.RejectedError,
|
|
433
|
+
] as const
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
/** A passkey sign-in from an app's page whose challenge was the digest of the request's key. */
|
|
437
|
+
export type KeySignature = {
|
|
438
|
+
/** The passkey's assertion, which signed the sign-in and the key's digest. */
|
|
439
|
+
assertion: Passkey.Assertion
|
|
440
|
+
/** The origin of the app's page, which the assertion reports. */
|
|
441
|
+
origin: string
|
|
442
|
+
/** The witness that the key's digest binds. */
|
|
443
|
+
witness: Hex.Hex
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Runs the headless authorization that an emailed-code sign-in on an app's page carried, for the
|
|
448
|
+
* user whom the sign-in just signed in. The caller checks the request with `Authorize.check` before
|
|
449
|
+
* the code, so a refused request spends no code. A user who holds no account receives a first one,
|
|
450
|
+
* as `POST /v1/account` creates it. With `passkey`, a passkey-owned account returns the passkey
|
|
451
|
+
* step, which `POST /v1/authorize` completes. A spent rate limit returns its response.
|
|
452
|
+
*/
|
|
453
|
+
export async function afterCode(
|
|
454
|
+
c: Context<Env>,
|
|
455
|
+
options: afterCode.Options,
|
|
456
|
+
): Promise<
|
|
457
|
+
| authorize.ReturnType
|
|
458
|
+
| authorize.Step
|
|
459
|
+
| ErrorResponse.Instance<typeof afterCode.errors>
|
|
460
|
+
| NonNullable<Awaited<ReturnType<typeof RateLimit.check>>>
|
|
461
|
+
> {
|
|
462
|
+
const { app, email, passkey, request, setCookie } = options
|
|
463
|
+
// The sign-in created the session in this request, so the session needs no read.
|
|
464
|
+
const session = c.var.newSession
|
|
465
|
+
if (!session) throw new Error('The sign-in session is missing.')
|
|
466
|
+
return await Timing.measure(
|
|
467
|
+
c,
|
|
468
|
+
authorize(c, {
|
|
469
|
+
create: true,
|
|
470
|
+
headers: SignInConsent.sessionHeaders(c, { setCookie }),
|
|
471
|
+
// The code signs the key with no assertion, so the page's passkey signs it at
|
|
472
|
+
// `POST /v1/authorize`.
|
|
473
|
+
passkey: passkey ? {} : undefined,
|
|
474
|
+
request,
|
|
475
|
+
secret: Boolean(app.secret),
|
|
476
|
+
session: { ...session, user: { ...session.user, email } },
|
|
477
|
+
}),
|
|
478
|
+
'Headless.authorize',
|
|
479
|
+
)
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
export namespace afterCode {
|
|
483
|
+
export type Options = {
|
|
484
|
+
/** The app of the request, which `Authorize.check` accepted. */
|
|
485
|
+
app: Pick<Apps.App, 'secret'>
|
|
486
|
+
/** The email address that the code verified. */
|
|
487
|
+
email: string
|
|
488
|
+
/** Whether a passkey-owned account returns the passkey step, in place of `webauthn_required`. */
|
|
489
|
+
passkey?: boolean | undefined
|
|
490
|
+
/** The headless request, which `Authorize.check` accepted. */
|
|
491
|
+
request: Authorize.Request
|
|
492
|
+
/** The `Set-Cookie` headers of the sign-in, which carry the new session. */
|
|
493
|
+
setCookie: readonly string[]
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
/** The refusals `afterCode` returns. Its return type admits no other. */
|
|
497
|
+
export const errors = authorize.errors
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
/**
|
|
501
|
+
* Runs the headless authorization that a key challenge of an app's page stored, for the user
|
|
502
|
+
* whom the sign-in just signed in. The request is checked again, since time passed since the options.
|
|
503
|
+
* The passkey's assertion signs the key of an account that it owns, and a server signer, such as a
|
|
504
|
+
* Privy wallet, signs any other account's key. Another passkey's account refuses it with
|
|
505
|
+
* `webauthn_required`. A spent rate limit returns its response.
|
|
506
|
+
*/
|
|
507
|
+
export async function keySignature(
|
|
508
|
+
c: Context<Env>,
|
|
509
|
+
options: keySignature.Options,
|
|
510
|
+
): Promise<
|
|
511
|
+
| authorize.ReturnType
|
|
512
|
+
| ErrorResponse.Instance<typeof keySignature.errors>
|
|
513
|
+
| NonNullable<Awaited<ReturnType<typeof RateLimit.check>>>
|
|
514
|
+
> {
|
|
515
|
+
const { assertion, challenge, email, setCookie } = options
|
|
516
|
+
const request = Authorize.schema.request.parse(challenge.authorize)
|
|
517
|
+
const found = await Timing.measure(
|
|
518
|
+
c,
|
|
519
|
+
app(c, { clientId: request.client_id }),
|
|
520
|
+
'Headless.app',
|
|
521
|
+
)
|
|
522
|
+
const refused = Authorize.check(request, {
|
|
523
|
+
app: found,
|
|
524
|
+
origin: c.req.header('origin'),
|
|
525
|
+
})
|
|
526
|
+
if (refused) return refused
|
|
527
|
+
|
|
528
|
+
const headers = SignInConsent.sessionHeaders(c, { setCookie })
|
|
529
|
+
// The sign-in created the session in this request, so the session needs no read.
|
|
530
|
+
const session = c.var.newSession
|
|
531
|
+
if (!session) throw new Error('The sign-in session is missing.')
|
|
532
|
+
const result = await Timing.measure(
|
|
533
|
+
c,
|
|
534
|
+
authorize(c, {
|
|
535
|
+
headers,
|
|
536
|
+
keySignature:
|
|
537
|
+
challenge.witness && challenge.origin
|
|
538
|
+
? { assertion, origin: challenge.origin, witness: challenge.witness }
|
|
539
|
+
: undefined,
|
|
540
|
+
request,
|
|
541
|
+
secret: Boolean(found!.secret),
|
|
542
|
+
session: { ...session, user: { ...session.user, email } },
|
|
543
|
+
}),
|
|
544
|
+
'Headless.authorize',
|
|
545
|
+
)
|
|
546
|
+
// Only a request with `passkey` returns the passkey step.
|
|
547
|
+
if ('options' in result) throw new Error('The passkey step is unexpected.')
|
|
548
|
+
return result
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
export namespace keySignature {
|
|
552
|
+
export type Options = {
|
|
553
|
+
/** The assertion that signed the user in, over the challenge. */
|
|
554
|
+
assertion: Passkey.Assertion
|
|
555
|
+
/** The spent key challenge, which stores the request. */
|
|
556
|
+
challenge: Passkey.Challenge
|
|
557
|
+
/** The signed-in user's email, when the sign-in holds it. */
|
|
558
|
+
email?: string | undefined
|
|
559
|
+
/** The `Set-Cookie` headers of the sign-in, which carry the new session. */
|
|
560
|
+
setCookie: readonly string[]
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
/** The refusals `keySignature` returns. Its return type admits no other. */
|
|
564
|
+
export const errors = [
|
|
565
|
+
...Authorize.check.errors,
|
|
566
|
+
...authorize.errors,
|
|
567
|
+
] as const
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
/**
|
|
571
|
+
* Records the assertion of a key challenge of an app's page as spent until its key expires, once
|
|
572
|
+
* the assertion verified, and returns whether it was unspent. Returns `false` once the key expired,
|
|
573
|
+
* and `true` for any other challenge, whose digest no request can repeat.
|
|
574
|
+
*/
|
|
575
|
+
export async function spend(c: Timing.measure.Context, options: spend.Options) {
|
|
576
|
+
const { assertion, challenge } = options
|
|
577
|
+
if (challenge.authorize === undefined) return true
|
|
578
|
+
const request = Authorize.schema.request.parse(challenge.authorize)
|
|
579
|
+
// A request without a key has a random challenge, which no request repeats.
|
|
580
|
+
if (!request.key_authorization) return true
|
|
581
|
+
// An expired key reaches the chain no more, so its assertion signs in no one.
|
|
582
|
+
if (request.key_authorization.expiry <= Date.now() / 1000) return false
|
|
583
|
+
return await Timing.measure(
|
|
584
|
+
c,
|
|
585
|
+
Passkey.spendSignIn(db, {
|
|
586
|
+
authenticatorData: assertion.metadata.authenticatorData,
|
|
587
|
+
expiry: request.key_authorization.expiry,
|
|
588
|
+
signature: assertion.signature,
|
|
589
|
+
}),
|
|
590
|
+
'Passkey.spendSignIn',
|
|
591
|
+
)
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
export declare namespace spend {
|
|
595
|
+
type Options = {
|
|
596
|
+
/** The verified assertion. */
|
|
597
|
+
assertion: Passkey.Assertion
|
|
598
|
+
/** The spent challenge, as `Passkey.take` returns it. */
|
|
599
|
+
challenge: Passkey.Challenge
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* Returns the refusal of a request for tokens from an app that holds a client secret, whose backend
|
|
605
|
+
* redeems a code with the secret, which a page never holds.
|
|
606
|
+
*/
|
|
607
|
+
function refusesTokens(
|
|
608
|
+
request: Authorize.Request,
|
|
609
|
+
options: { secret: boolean },
|
|
610
|
+
) {
|
|
611
|
+
if (request.code_challenge || !options.secret) return undefined
|
|
612
|
+
return new Authorize.RejectedError({
|
|
613
|
+
description:
|
|
614
|
+
'Tokens refused: the app holds a client secret, so its backend redeems a code. Send `code_challenge`, then redeem the code with the secret.',
|
|
615
|
+
})
|
|
616
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sets `c.var.cache`, the handler's cache of configuration rows, on every request, as
|
|
3
|
+
* `src/internal/Cache.ts` describes.
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { createMiddleware } from 'hono/factory'
|
|
7
|
+
import { env } from 'void/env'
|
|
8
|
+
import * as Cache from '../../internal/Cache.js'
|
|
9
|
+
import type { Env } from '../../internal/Env.js'
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The isolate's cache when no `CACHE` binding names one, as in `vp dev`, which the first request
|
|
13
|
+
* creates, since its lifetime comes from the env. It holds no user data and no request's I/O.
|
|
14
|
+
*/
|
|
15
|
+
let fallback: Cache.Cache | undefined
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Sets `c.var.cache` to the `CACHE` binding that `App.create` passes, or to the isolate's own. The
|
|
19
|
+
* root app mounts it before CORS, whose first-party check reads it.
|
|
20
|
+
*/
|
|
21
|
+
export const middleware = createMiddleware<Env>(async (c, next) => {
|
|
22
|
+
c.set(
|
|
23
|
+
'cache',
|
|
24
|
+
c.env.CACHE ??
|
|
25
|
+
(fallback ??= Cache.create({ ttl: (env.CONFIG_CACHE_TTL ?? 30) * 1000 })),
|
|
26
|
+
)
|
|
27
|
+
await next()
|
|
28
|
+
})
|