@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,690 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signs an app's key authorization as the owner of the user's Tempo Account. The key acts for the
|
|
3
|
+
* account that it names, else the app's selected account, else the user's oldest. An owner with a
|
|
4
|
+
* server signer, such as a Privy wallet, signs on the server. A passkey signs only in the browser:
|
|
5
|
+
* on the approval page, {@link challenge} issues the key's digest as the passkey's challenge, and
|
|
6
|
+
* {@link sign} verifies the assertion over it. A sign-in with key signature on an app's page signs
|
|
7
|
+
* the digest with the assertion that signs the user in. Elsewhere its account refuses the key with
|
|
8
|
+
* `webauthn_required`. When the user skips a wallet.tempo passkey's upgrade, the passkey signs as
|
|
9
|
+
* its own account, and {@link unlinked} returns a passkey of the user's email that has not linked.
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import type { Context } from 'hono'
|
|
13
|
+
import { Address } from 'ox'
|
|
14
|
+
import type { KeyAuthorization as ox_KeyAuthorization } from 'ox/tempo'
|
|
15
|
+
import { Account } from 'viem/tempo'
|
|
16
|
+
import { env } from 'void/env'
|
|
17
|
+
import { Authentication } from 'webauthx/server'
|
|
18
|
+
import * as z from 'zod'
|
|
19
|
+
import * as Authorize from '../../internal/Authorize.js'
|
|
20
|
+
import * as ConfigurableAccount from '../../internal/ConfigurableAccount.js'
|
|
21
|
+
import type { Env } from '../../internal/Env.js'
|
|
22
|
+
import * as ErrorResponse from '../../internal/ErrorResponse.js'
|
|
23
|
+
import * as Log from '../../internal/Log.js'
|
|
24
|
+
import * as KeyAuthorization from '../../internal/KeyAuthorization.js'
|
|
25
|
+
import * as Owner from '../../internal/Owner.js'
|
|
26
|
+
import * as Passkey from '../../internal/Passkey.js'
|
|
27
|
+
import * as RateLimit from '../../internal/RateLimit.js'
|
|
28
|
+
import * as Realm from '../../internal/Realm.js'
|
|
29
|
+
import * as TempoAccount from '../../internal/TempoAccount.js'
|
|
30
|
+
import * as Timing from '../../internal/Timing.js'
|
|
31
|
+
import * as AccountStep from './AccountStep.js'
|
|
32
|
+
import * as Configure from './Configure.js'
|
|
33
|
+
import { db } from './Database.js'
|
|
34
|
+
|
|
35
|
+
export namespace schema {
|
|
36
|
+
/** Why approval cannot sign a key, as {@link preview} returns it. */
|
|
37
|
+
export const refusal = z
|
|
38
|
+
.enum([
|
|
39
|
+
'foreign_account',
|
|
40
|
+
'no_account',
|
|
41
|
+
'passkey',
|
|
42
|
+
'unavailable',
|
|
43
|
+
'upgrade',
|
|
44
|
+
])
|
|
45
|
+
.meta({
|
|
46
|
+
description:
|
|
47
|
+
"Why approval cannot sign the key: the key names another user's account (`foreign_account`), the user holds no account and none can be created (`no_account`), a passkey that this page cannot use owns the account (`passkey`), the accounts could not be read (`unavailable`), or the account must upgrade first (`upgrade`). Absent when approval can sign it.",
|
|
48
|
+
examples: ['passkey'],
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Issues the digest of `key` as the challenge of a signature by `owner`'s passkey, for the user with
|
|
54
|
+
* `userId`, and returns the request options for `navigator.credentials.get()`. The options name only
|
|
55
|
+
* that passkey, and require user verification.
|
|
56
|
+
*/
|
|
57
|
+
export async function challenge(
|
|
58
|
+
c: Timing.measure.Context,
|
|
59
|
+
options: challenge.Options,
|
|
60
|
+
) {
|
|
61
|
+
const { account, clientId, key, owner, userId } = options
|
|
62
|
+
// `resolve` returns a passkey owner only with its credential.
|
|
63
|
+
const credential = owner.credential!
|
|
64
|
+
const digest = KeyAuthorization.digest({
|
|
65
|
+
account: Owner.configured(owner),
|
|
66
|
+
key,
|
|
67
|
+
})
|
|
68
|
+
await Timing.measure(
|
|
69
|
+
c,
|
|
70
|
+
Passkey.requestSignature(db, {
|
|
71
|
+
account,
|
|
72
|
+
clientId,
|
|
73
|
+
credential,
|
|
74
|
+
digest,
|
|
75
|
+
userId,
|
|
76
|
+
}),
|
|
77
|
+
'Passkey.requestSignature',
|
|
78
|
+
)
|
|
79
|
+
return Authentication.getOptions({
|
|
80
|
+
challenge: digest,
|
|
81
|
+
credentialId: credential.id,
|
|
82
|
+
rpId: credential.rpId,
|
|
83
|
+
userVerification: 'required',
|
|
84
|
+
}).options
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export declare namespace challenge {
|
|
88
|
+
type Options = {
|
|
89
|
+
/** The account that the key acts for. */
|
|
90
|
+
account: `0x${string}`
|
|
91
|
+
/** The client ID of the app that requests the key. */
|
|
92
|
+
clientId: string
|
|
93
|
+
/** The key authorization whose digest the passkey signs. */
|
|
94
|
+
key: KeyAuthorization.Key
|
|
95
|
+
/** The account's passkey owner, as `resolve` returns it with `passkey`. */
|
|
96
|
+
owner: Owner.Owner
|
|
97
|
+
/** The signed-in user's ID. */
|
|
98
|
+
userId: string
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Returns what an approval page shows of a key before the user decides: the account that approval
|
|
104
|
+
* signs for, the user's accounts in the app's realms, and why approval cannot sign it, if it cannot.
|
|
105
|
+
* Without `account`, it is the app's selected account, else the user's oldest. The owners' lookup can call every realm's
|
|
106
|
+
* Privy app, so it counts against the user's `ACCOUNT_LIMIT`, as `GET /v1/account` does. A spent
|
|
107
|
+
* limit or a failed read, such as during a Privy outage, returns `unavailable`. A user who holds no
|
|
108
|
+
* account can approve when the app's first realm creates one on approval, unless a wallet.tempo
|
|
109
|
+
* passkey of the user's email waits for its upgrade, which returns `upgrade`.
|
|
110
|
+
*/
|
|
111
|
+
export async function preview(
|
|
112
|
+
c: Context<Env>,
|
|
113
|
+
options: preview.Options,
|
|
114
|
+
): Promise<preview.ReturnType> {
|
|
115
|
+
const { clientId, sessionId, userId } = options
|
|
116
|
+
const chainId =
|
|
117
|
+
options.chainId === undefined ? undefined : Number(options.chainId)
|
|
118
|
+
const read = await (async () => {
|
|
119
|
+
const admitted = await RateLimit.count(c, {
|
|
120
|
+
binding: 'ACCOUNT_LIMIT',
|
|
121
|
+
key: userId,
|
|
122
|
+
})
|
|
123
|
+
if (!admitted) return undefined
|
|
124
|
+
try {
|
|
125
|
+
const owners = await Timing.measure(
|
|
126
|
+
c,
|
|
127
|
+
AccountStep.held(c, { chainId, clientId, userId }),
|
|
128
|
+
'AccountStep.held',
|
|
129
|
+
)
|
|
130
|
+
const signing = await Timing.measure(
|
|
131
|
+
c,
|
|
132
|
+
resolve(c, {
|
|
133
|
+
account: options.account,
|
|
134
|
+
chainId,
|
|
135
|
+
clientId,
|
|
136
|
+
cookie: c.req.header('cookie'),
|
|
137
|
+
owners,
|
|
138
|
+
// The approval page runs the passkey step.
|
|
139
|
+
passkey: true,
|
|
140
|
+
sessionId,
|
|
141
|
+
userId,
|
|
142
|
+
}),
|
|
143
|
+
'KeySigner.resolve',
|
|
144
|
+
)
|
|
145
|
+
return { owners, signing }
|
|
146
|
+
} catch (error) {
|
|
147
|
+
Log.warn(c, {
|
|
148
|
+
error,
|
|
149
|
+
fields: { clientId },
|
|
150
|
+
message: "An approval page's account owners failed to load.",
|
|
151
|
+
})
|
|
152
|
+
return undefined
|
|
153
|
+
}
|
|
154
|
+
})()
|
|
155
|
+
const signing = read?.signing
|
|
156
|
+
|
|
157
|
+
// A wallet.tempo passkey of the user's email becomes their account through its upgrade, so approval
|
|
158
|
+
// creates no account beside it, and waits for the upgrade instead.
|
|
159
|
+
const waits =
|
|
160
|
+
signing instanceof Authorize.RejectedError
|
|
161
|
+
? await Timing.measure(
|
|
162
|
+
c,
|
|
163
|
+
AccountStep.awaitsUpgrade(c, {
|
|
164
|
+
clientId,
|
|
165
|
+
email: options.email,
|
|
166
|
+
userId,
|
|
167
|
+
}),
|
|
168
|
+
'AccountStep.awaitsUpgrade',
|
|
169
|
+
)
|
|
170
|
+
: false
|
|
171
|
+
// A user who holds no account receives the first one on approval, when the app's first realm can
|
|
172
|
+
// create it.
|
|
173
|
+
const creates =
|
|
174
|
+
signing instanceof Authorize.RejectedError && !waits
|
|
175
|
+
? await Timing.measure(
|
|
176
|
+
c,
|
|
177
|
+
AccountStep.creates(c, { clientId }),
|
|
178
|
+
'AccountStep.creates',
|
|
179
|
+
)
|
|
180
|
+
: false
|
|
181
|
+
const account = (() => {
|
|
182
|
+
if (!signing) return options.account
|
|
183
|
+
if (
|
|
184
|
+
signing instanceof KeyAuthorization.WebAuthnRequiredError ||
|
|
185
|
+
signing instanceof ConfigurableAccount.UpgradeRequiredError
|
|
186
|
+
)
|
|
187
|
+
return signing.response.meta?.account as `0x${string}` | undefined
|
|
188
|
+
if (signing instanceof ErrorResponse.ResponseError) return options.account
|
|
189
|
+
return signing.account
|
|
190
|
+
})()
|
|
191
|
+
const refusal = ((): z.output<typeof schema.refusal> | undefined => {
|
|
192
|
+
if (!signing) return 'unavailable'
|
|
193
|
+
if (signing instanceof TempoAccount.ForeignAccountError)
|
|
194
|
+
return 'foreign_account'
|
|
195
|
+
// A passkey signs only at its own relying party, which may not cover this page.
|
|
196
|
+
if (signing instanceof KeyAuthorization.WebAuthnRequiredError)
|
|
197
|
+
return 'passkey'
|
|
198
|
+
if (signing instanceof ConfigurableAccount.UpgradeRequiredError || waits)
|
|
199
|
+
return 'upgrade'
|
|
200
|
+
if (signing instanceof Authorize.RejectedError && !creates)
|
|
201
|
+
return 'no_account'
|
|
202
|
+
return undefined
|
|
203
|
+
})()
|
|
204
|
+
const accounts = read ? read.owners.map(TempoAccount.serialize) : []
|
|
205
|
+
return { account, accounts, refusal }
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
export declare namespace preview {
|
|
209
|
+
type Options = {
|
|
210
|
+
/** The account that the key names, if any. */
|
|
211
|
+
account?: `0x${string}` | undefined
|
|
212
|
+
/** The ID of the chain that the key acts on, if any, whose view of the accounts the page shows. */
|
|
213
|
+
chainId?: bigint | number | undefined
|
|
214
|
+
/** The client ID of the app that requests the key. */
|
|
215
|
+
clientId: string
|
|
216
|
+
/** The signed-in user's verified email, whose wallet.tempo passkey can wait for its upgrade. */
|
|
217
|
+
email: string
|
|
218
|
+
/** The ID of the signed-in session, which bounds the account step's selection. */
|
|
219
|
+
sessionId: string
|
|
220
|
+
/** The signed-in user's ID. */
|
|
221
|
+
userId: string
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
type ReturnType = {
|
|
225
|
+
/** The account that approval signs for. Absent for a user who holds no account. */
|
|
226
|
+
account: `0x${string}` | undefined
|
|
227
|
+
/**
|
|
228
|
+
* The user's accounts in the app's realms, oldest first. Empty when the limit is spent or the
|
|
229
|
+
* read fails.
|
|
230
|
+
*/
|
|
231
|
+
accounts: readonly TempoAccount.TempoAccount[]
|
|
232
|
+
/** Why approval cannot sign the key. Absent when it can. */
|
|
233
|
+
refusal: z.output<typeof schema.refusal> | undefined
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Returns the account that the key acts for and its owner: the account that `account` names, else
|
|
239
|
+
* the one that the `Cookie` header selects for the app within the session, else the user's oldest
|
|
240
|
+
* in the app's realms. With `signInCredential`, the account that the passkey of the sign-in with
|
|
241
|
+
* key signature owns comes before the selected one. With `create`, a user who holds no account and
|
|
242
|
+
* names none first receives a Privy-owned account, as `POST /v1/account` creates it. Returns a
|
|
243
|
+
* refusal when `account` is not the user's, when the user holds no account, when a passkey owns
|
|
244
|
+
* the account, unless it is the passkey of the sign-in with key signature, or when a wallet.tempo
|
|
245
|
+
* passkey's account waits for its upgrade, unless `skipUpgrade` is set.
|
|
246
|
+
*/
|
|
247
|
+
export async function resolve(
|
|
248
|
+
c: Context<Env>,
|
|
249
|
+
options: resolve.Options,
|
|
250
|
+
): Promise<resolve.ReturnType | ErrorResponse.Instance<typeof resolve.errors>> {
|
|
251
|
+
const { clientId, cookie, sessionId, userId } = options
|
|
252
|
+
const chainId =
|
|
253
|
+
options.chainId === undefined ? undefined : Number(options.chainId)
|
|
254
|
+
// A named account is one the user already holds, so its request creates none.
|
|
255
|
+
const owners =
|
|
256
|
+
options.owners ??
|
|
257
|
+
(options.create && !options.account
|
|
258
|
+
? await Timing.measure(
|
|
259
|
+
c,
|
|
260
|
+
AccountStep.create(c, {
|
|
261
|
+
chainId,
|
|
262
|
+
clientId,
|
|
263
|
+
email: options.email,
|
|
264
|
+
userId,
|
|
265
|
+
}),
|
|
266
|
+
'AccountStep.create',
|
|
267
|
+
)
|
|
268
|
+
: await Timing.measure(
|
|
269
|
+
c,
|
|
270
|
+
AccountStep.held(c, { chainId, clientId, userId }),
|
|
271
|
+
'AccountStep.held',
|
|
272
|
+
))
|
|
273
|
+
const listed = owners.map(TempoAccount.serialize)
|
|
274
|
+
|
|
275
|
+
const named = options.account
|
|
276
|
+
// The passkey that signed the sign-in selects the account that it owns.
|
|
277
|
+
const tapped = owners.find(
|
|
278
|
+
(entry) =>
|
|
279
|
+
options.signInCredential !== undefined &&
|
|
280
|
+
entry.credential?.id === options.signInCredential,
|
|
281
|
+
)
|
|
282
|
+
const selected = named
|
|
283
|
+
? undefined
|
|
284
|
+
: ((tapped && TempoAccount.serialize(tapped).address) ??
|
|
285
|
+
AccountStep.find(
|
|
286
|
+
listed,
|
|
287
|
+
AccountStep.selected({ clientId, cookie, sessionId }),
|
|
288
|
+
)?.address)
|
|
289
|
+
// A user who chose no account, and holds several, signs only on a page that shows the account.
|
|
290
|
+
if (options.single && !named && !selected && listed.length > 1)
|
|
291
|
+
return new Authorize.RejectedError({
|
|
292
|
+
description:
|
|
293
|
+
"Several Tempo Accounts: the user holds more than one account in the app's realms and chose none. Choose the account on the account step, or name it in `key_authorization.account`.",
|
|
294
|
+
})
|
|
295
|
+
const account = (() => {
|
|
296
|
+
if (named) return AccountStep.find(listed, named)?.address
|
|
297
|
+
return selected ?? listed[0]?.address
|
|
298
|
+
})()
|
|
299
|
+
if (named && !account)
|
|
300
|
+
return new TempoAccount.ForeignAccountError({
|
|
301
|
+
account: named,
|
|
302
|
+
field: 'key_authorization.account',
|
|
303
|
+
})
|
|
304
|
+
const found = account
|
|
305
|
+
? owners.find(
|
|
306
|
+
(entry) =>
|
|
307
|
+
TempoAccount.serialize(entry).address.toLowerCase() ===
|
|
308
|
+
account.toLowerCase(),
|
|
309
|
+
)
|
|
310
|
+
: undefined
|
|
311
|
+
if (!account || !found)
|
|
312
|
+
return new Authorize.RejectedError({
|
|
313
|
+
description: options.create
|
|
314
|
+
? "No Tempo Account: the user holds no account in the app's realms, and the app's first realm has no Privy app to create one. Authorize without `key_authorization`."
|
|
315
|
+
: "No Tempo Account: the user holds no account in the app's realms, so no owner signs the key. Create the account with `POST /v1/account`, or authorize without `key_authorization`.",
|
|
316
|
+
})
|
|
317
|
+
// On a chain whose accounts are configurable, the configurable account signs, never a root key. A
|
|
318
|
+
// wallet.tempo passkey's account signs nothing there until its upgrade, unless the user skips the
|
|
319
|
+
// upgrade, and the passkey then signs as its own account until the upgrade.
|
|
320
|
+
if (
|
|
321
|
+
found.linked &&
|
|
322
|
+
!found.configurable &&
|
|
323
|
+
!options.skipUpgrade &&
|
|
324
|
+
ConfigurableAccount.on({ chainId, env })
|
|
325
|
+
)
|
|
326
|
+
return new ConfigurableAccount.UpgradeRequiredError({ account })
|
|
327
|
+
const owner = Owner.on(found, { chainId })
|
|
328
|
+
// A passkey signs only in the browser: on a page that shows the key, at its relying party, or in
|
|
329
|
+
// the sign-in with key signature that it signed. A sign-in with key signature signs only as the
|
|
330
|
+
// key that acts as the account, since its digest binds no configuration.
|
|
331
|
+
if (
|
|
332
|
+
!owner.signer &&
|
|
333
|
+
!(options.passkey && signsHere(owner, { page: options.page })) &&
|
|
334
|
+
!(
|
|
335
|
+
options.signInCredential !== undefined &&
|
|
336
|
+
owner === found &&
|
|
337
|
+
owner.credential?.id === options.signInCredential
|
|
338
|
+
)
|
|
339
|
+
)
|
|
340
|
+
return new KeyAuthorization.WebAuthnRequiredError({ account })
|
|
341
|
+
return { account, owner }
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
export namespace resolve {
|
|
345
|
+
export type Options = {
|
|
346
|
+
/** The account that the request names, if any. */
|
|
347
|
+
account?: `0x${string}` | undefined
|
|
348
|
+
/**
|
|
349
|
+
* The ID of the chain that the key acts on. On a chain whose accounts are configurable, the
|
|
350
|
+
* configurable account signs, through one of its owners. Absent, the key that acts as the
|
|
351
|
+
* account signs.
|
|
352
|
+
*/
|
|
353
|
+
chainId?: bigint | number | undefined
|
|
354
|
+
/** The client ID of the app that requests the key. */
|
|
355
|
+
clientId: string
|
|
356
|
+
/** The request's `Cookie` header, which holds the account step's selection. */
|
|
357
|
+
cookie: string | undefined
|
|
358
|
+
/**
|
|
359
|
+
* Whether a user who holds no account and names none receives a first account. An approval on
|
|
360
|
+
* Tempo ID's own page sets it, and so does a sign-in that carries the authorization request.
|
|
361
|
+
* Defaults to `false`.
|
|
362
|
+
*/
|
|
363
|
+
create?: boolean | undefined
|
|
364
|
+
/** The user's verified email, when the caller holds it, which `create` reads. */
|
|
365
|
+
email?: string | undefined
|
|
366
|
+
/**
|
|
367
|
+
* The owners of the user's accounts in the app's realms, as `AccountStep.held` returns them, when
|
|
368
|
+
* the caller already read them. Takes the place of the read, and of `create`.
|
|
369
|
+
*/
|
|
370
|
+
owners?: readonly Owner.Owner[] | undefined
|
|
371
|
+
/**
|
|
372
|
+
* The origin of the app's page that signs with a passkey, with `passkey`. The passkey's relying
|
|
373
|
+
* party must then cover that origin too. Absent for Tempo ID's own page.
|
|
374
|
+
*/
|
|
375
|
+
page?: string | undefined
|
|
376
|
+
/**
|
|
377
|
+
* Whether the caller signs with a passkey in the browser, as the approval page does. A passkey
|
|
378
|
+
* owner whose relying party covers Tempo ID's origin then resolves, in place of
|
|
379
|
+
* `webauthn_required`. Defaults to `false`.
|
|
380
|
+
*/
|
|
381
|
+
passkey?: boolean | undefined
|
|
382
|
+
/** The ID of the signed-in session, which bounds the selection. */
|
|
383
|
+
sessionId: string
|
|
384
|
+
/**
|
|
385
|
+
* The credential ID of the passkey whose sign-in assertion signed the key's digest, if any.
|
|
386
|
+
* That passkey's account resolves in place of `webauthn_required`, and comes before the
|
|
387
|
+
* selected one.
|
|
388
|
+
*/
|
|
389
|
+
signInCredential?: string | undefined
|
|
390
|
+
/**
|
|
391
|
+
* Whether a user who names no account, selected none, and holds several is refused, in place of
|
|
392
|
+
* the oldest account. A grant that shows no account sets it. Defaults to `false`.
|
|
393
|
+
*/
|
|
394
|
+
single?: boolean | undefined
|
|
395
|
+
/**
|
|
396
|
+
* Whether a linked wallet.tempo passkey's account that is not configurable on the key's chain
|
|
397
|
+
* resolves, in place of `upgrade_required`. The passkey then signs as its own account, as on a
|
|
398
|
+
* chain whose accounts are not configurable, and the key stops working on that chain once the
|
|
399
|
+
* account upgrades. The approval page sets it when the user skips the upgrade. Defaults to
|
|
400
|
+
* `false`.
|
|
401
|
+
*/
|
|
402
|
+
skipUpgrade?: boolean | undefined
|
|
403
|
+
/** The signed-in user's ID. */
|
|
404
|
+
userId: string
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
export type ReturnType = {
|
|
408
|
+
/** The account that the key acts for. */
|
|
409
|
+
account: `0x${string}`
|
|
410
|
+
/**
|
|
411
|
+
* The account's owner, which signs the key: on a chain whose accounts are configurable, the
|
|
412
|
+
* configurable view that `Owner.on` returns.
|
|
413
|
+
*/
|
|
414
|
+
owner: Owner.Owner
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
/** The refusals `resolve` returns. Its return type admits no other. */
|
|
418
|
+
export const errors = [
|
|
419
|
+
...AccountStep.create.errors,
|
|
420
|
+
...AccountStep.held.errors,
|
|
421
|
+
Authorize.RejectedError,
|
|
422
|
+
ConfigurableAccount.UpgradeRequiredError,
|
|
423
|
+
KeyAuthorization.WebAuthnRequiredError,
|
|
424
|
+
TempoAccount.ForeignAccountError,
|
|
425
|
+
] as const
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/**
|
|
429
|
+
* Signs `key` as `owner`, the owner of `account`, and returns the signed authorization in the node's
|
|
430
|
+
* RPC format. A passkey owner signs with `assertion`, over the challenge that {@link challenge} or
|
|
431
|
+
* `Passkey.requestSignature` issued for the same user, app, account, passkey, and key, at `origin`. Returns
|
|
432
|
+
* `KeyAuthorization.WebAuthnRequiredError` for a passkey owner without an assertion, and
|
|
433
|
+
* `Passkey.WebAuthnRejectedError` for an assertion that does not verify.
|
|
434
|
+
*/
|
|
435
|
+
export async function sign(
|
|
436
|
+
c: Context<Env>,
|
|
437
|
+
options: sign.Options,
|
|
438
|
+
): Promise<sign.ReturnType | ErrorResponse.Instance<typeof sign.errors>> {
|
|
439
|
+
const { account, assertion, key, owner } = options
|
|
440
|
+
if (!owner.signer) {
|
|
441
|
+
if (!assertion || !owner.credential)
|
|
442
|
+
return new KeyAuthorization.WebAuthnRequiredError({ account })
|
|
443
|
+
const credential = owner.credential
|
|
444
|
+
// A sign-in's challenge was the key's digest, so its assertion verifies over that digest with
|
|
445
|
+
// no stored signature challenge, and is recorded as spent once it verifies.
|
|
446
|
+
if (options.challenge === 'sign-in') {
|
|
447
|
+
const digest = KeyAuthorization.digest({
|
|
448
|
+
account: Owner.configured(owner),
|
|
449
|
+
key,
|
|
450
|
+
})
|
|
451
|
+
const verified =
|
|
452
|
+
assertion.id === credential.id &&
|
|
453
|
+
Passkey.verify(assertion, {
|
|
454
|
+
challenge: digest,
|
|
455
|
+
origin: options.origin ?? new URL(env.URL).origin,
|
|
456
|
+
publicKey: credential.publicKey,
|
|
457
|
+
rpId: credential.rpId,
|
|
458
|
+
})
|
|
459
|
+
if (
|
|
460
|
+
!verified ||
|
|
461
|
+
!(await Timing.measure(
|
|
462
|
+
c,
|
|
463
|
+
Passkey.spendSignature(db, {
|
|
464
|
+
authenticatorData: assertion.metadata.authenticatorData,
|
|
465
|
+
expiry: key.expiry,
|
|
466
|
+
signature: assertion.signature,
|
|
467
|
+
}),
|
|
468
|
+
'Passkey.spendSignature',
|
|
469
|
+
))
|
|
470
|
+
)
|
|
471
|
+
return new Passkey.WebAuthnRejectedError()
|
|
472
|
+
return await Timing.measure(
|
|
473
|
+
c,
|
|
474
|
+
KeyAuthorization.signWithAssertion(assertion, {
|
|
475
|
+
account: Owner.configured(owner),
|
|
476
|
+
key,
|
|
477
|
+
publicKey: credential.publicKey,
|
|
478
|
+
}),
|
|
479
|
+
'KeyAuthorization.signWithAssertion',
|
|
480
|
+
)
|
|
481
|
+
}
|
|
482
|
+
// The challenge is spent before any other check, so a refused assertion cannot be tried again.
|
|
483
|
+
const challenge = await Timing.measure(
|
|
484
|
+
c,
|
|
485
|
+
Passkey.takeSignature(db, {
|
|
486
|
+
account,
|
|
487
|
+
authenticatorData: assertion.metadata.authenticatorData,
|
|
488
|
+
clientId: options.clientId,
|
|
489
|
+
clientDataJSON: assertion.metadata.clientDataJSON,
|
|
490
|
+
credentialId: assertion.id,
|
|
491
|
+
expiry: key.expiry,
|
|
492
|
+
signature: assertion.signature,
|
|
493
|
+
userId: options.userId,
|
|
494
|
+
verify: (challenge) =>
|
|
495
|
+
challenge.account === account.toLowerCase() &&
|
|
496
|
+
challenge.clientId === options.clientId &&
|
|
497
|
+
challenge.credential.id === credential.id &&
|
|
498
|
+
challenge.credential.publicKey === credential.publicKey &&
|
|
499
|
+
assertion.id === credential.id &&
|
|
500
|
+
// The repeated request names the key that the passkey signs, so its signature reaches
|
|
501
|
+
// only a request for that key.
|
|
502
|
+
challenge.digest ===
|
|
503
|
+
KeyAuthorization.digest({
|
|
504
|
+
account: Owner.configured(owner),
|
|
505
|
+
key,
|
|
506
|
+
}) &&
|
|
507
|
+
Passkey.verify(assertion, {
|
|
508
|
+
challenge: challenge.digest,
|
|
509
|
+
origin: options.origin ?? new URL(env.URL).origin,
|
|
510
|
+
publicKey: credential.publicKey,
|
|
511
|
+
rpId: credential.rpId,
|
|
512
|
+
}),
|
|
513
|
+
}),
|
|
514
|
+
'Passkey.takeSignature',
|
|
515
|
+
)
|
|
516
|
+
if (!challenge) return new Passkey.WebAuthnRejectedError()
|
|
517
|
+
return await Timing.measure(
|
|
518
|
+
c,
|
|
519
|
+
KeyAuthorization.signWithAssertion(assertion, {
|
|
520
|
+
account: Owner.configured(owner),
|
|
521
|
+
key,
|
|
522
|
+
publicKey: credential.publicKey,
|
|
523
|
+
}),
|
|
524
|
+
'KeyAuthorization.signWithAssertion',
|
|
525
|
+
)
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
const signer = await Timing.measure(
|
|
529
|
+
c,
|
|
530
|
+
owner.signer(c, { auth: c.var.auth }),
|
|
531
|
+
'Owner.signer',
|
|
532
|
+
)
|
|
533
|
+
return await Timing.measure(
|
|
534
|
+
c,
|
|
535
|
+
KeyAuthorization.sign(signer, { key }),
|
|
536
|
+
'KeyAuthorization.sign',
|
|
537
|
+
)
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
export namespace sign {
|
|
541
|
+
export type Options = {
|
|
542
|
+
/** The account that the key acts for. */
|
|
543
|
+
account: `0x${string}`
|
|
544
|
+
/** The passkey's assertion over its challenge, for a passkey owner. */
|
|
545
|
+
assertion?: Passkey.Assertion | undefined
|
|
546
|
+
/**
|
|
547
|
+
* Where the challenge of `assertion` came from: `sign-in`, a sign-in with key signature whose challenge was
|
|
548
|
+
* the key's digest, or `stored`, a signature challenge of {@link challenge}. Defaults to
|
|
549
|
+
* `stored`.
|
|
550
|
+
*/
|
|
551
|
+
challenge?: 'sign-in' | 'stored' | undefined
|
|
552
|
+
/** The client ID of the app that requests the key. */
|
|
553
|
+
clientId: string
|
|
554
|
+
/** The key authorization to sign, which the flow's checks accept. */
|
|
555
|
+
key: KeyAuthorization.Key
|
|
556
|
+
/**
|
|
557
|
+
* The origin that the assertion reports: the app's page of a sign-in with key signature. Defaults to Tempo
|
|
558
|
+
* ID's own.
|
|
559
|
+
*/
|
|
560
|
+
origin?: string | undefined
|
|
561
|
+
/** The account's owner. */
|
|
562
|
+
owner: Owner.Owner
|
|
563
|
+
/** The signed-in user's ID. */
|
|
564
|
+
userId: string
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/** The signed authorization, in the node's RPC format. */
|
|
568
|
+
export type ReturnType = ox_KeyAuthorization.Rpc
|
|
569
|
+
|
|
570
|
+
/** The refusals `sign` returns. Its return type admits no other. */
|
|
571
|
+
export const errors = [
|
|
572
|
+
KeyAuthorization.WebAuthnRequiredError,
|
|
573
|
+
Passkey.WebAuthnRejectedError,
|
|
574
|
+
] as const
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
/**
|
|
578
|
+
* Returns a wallet.tempo passkey of `email`, the signed-in user's, that has not linked, as the owner
|
|
579
|
+
* that signs a key when the user skips its upgrade: the passkey `credentialId`, else the first. The
|
|
580
|
+
* passkey signs as its own account, at the `default` realm's relying party, which wallet.tempo
|
|
581
|
+
* shares. `link` links it to the user. Returns `undefined` when the app's realms leave out the
|
|
582
|
+
* `default` realm, or when no such passkey exists.
|
|
583
|
+
*/
|
|
584
|
+
export async function unlinked(
|
|
585
|
+
c: Context<Env>,
|
|
586
|
+
options: unlinked.Options,
|
|
587
|
+
): Promise<unlinked.ReturnType | undefined> {
|
|
588
|
+
const { clientId, credentialId, email, userId } = options
|
|
589
|
+
const realms = await Timing.measure(
|
|
590
|
+
c,
|
|
591
|
+
Configure.reach(c, { clientId }),
|
|
592
|
+
'Configure.reach',
|
|
593
|
+
)
|
|
594
|
+
const realm = realms.find((entry) => entry.id === Realm.defaultId)
|
|
595
|
+
const relyingParty = realm
|
|
596
|
+
? Passkey.relyingParty([realm], { origin: env.URL })
|
|
597
|
+
: undefined
|
|
598
|
+
if (!realm || !relyingParty) return undefined
|
|
599
|
+
|
|
600
|
+
const listed = await Timing.measure(
|
|
601
|
+
c,
|
|
602
|
+
Configure.unlinked(c, { email }),
|
|
603
|
+
'Configure.unlinked',
|
|
604
|
+
)
|
|
605
|
+
const entry =
|
|
606
|
+
credentialId === undefined
|
|
607
|
+
? listed[0]
|
|
608
|
+
: listed.find((item) => item.credentialId === credentialId)
|
|
609
|
+
if (!entry) return undefined
|
|
610
|
+
|
|
611
|
+
const { rpId } = relyingParty
|
|
612
|
+
const account = Address.checksum(entry.address as Address.Address)
|
|
613
|
+
const credential = {
|
|
614
|
+
id: entry.credentialId,
|
|
615
|
+
publicKey: entry.publicKey,
|
|
616
|
+
rpId,
|
|
617
|
+
}
|
|
618
|
+
return {
|
|
619
|
+
account,
|
|
620
|
+
// A passkey that links to another user, in a race, refuses the key.
|
|
621
|
+
link: async () => {
|
|
622
|
+
const linked = await Timing.measure(
|
|
623
|
+
c,
|
|
624
|
+
Passkey.link(db, {
|
|
625
|
+
credential: entry,
|
|
626
|
+
id: credential.id,
|
|
627
|
+
rpId,
|
|
628
|
+
userId,
|
|
629
|
+
}),
|
|
630
|
+
'Passkey.link',
|
|
631
|
+
)
|
|
632
|
+
TempoAccount.forget(c)
|
|
633
|
+
return linked === userId
|
|
634
|
+
? undefined
|
|
635
|
+
: new TempoAccount.ForeignAccountError({ account, field: 'passkey' })
|
|
636
|
+
},
|
|
637
|
+
owner: Owner.from({
|
|
638
|
+
account: Account.fromConfig({
|
|
639
|
+
owners: [Account.fromWebAuthnP256(credential, { rpId })],
|
|
640
|
+
}),
|
|
641
|
+
createdAt:
|
|
642
|
+
entry.createdAt === null ? new Date() : new Date(entry.createdAt),
|
|
643
|
+
credential,
|
|
644
|
+
linked: true,
|
|
645
|
+
realm,
|
|
646
|
+
signer: undefined,
|
|
647
|
+
type: 'webAuthn',
|
|
648
|
+
}),
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
export namespace unlinked {
|
|
653
|
+
export type Options = {
|
|
654
|
+
/** The client ID of the app that requests the key, whose realms must include `default`. */
|
|
655
|
+
clientId: string
|
|
656
|
+
/**
|
|
657
|
+
* The credential ID of the passkey, such as that of the assertion that signs the key. Absent,
|
|
658
|
+
* the first passkey that wallet.tempo lists.
|
|
659
|
+
*/
|
|
660
|
+
credentialId?: string | undefined
|
|
661
|
+
/** The signed-in user's verified email, which wallet.tempo lists the passkeys of. */
|
|
662
|
+
email: string
|
|
663
|
+
/** The signed-in user's ID. */
|
|
664
|
+
userId: string
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
export type ReturnType = resolve.ReturnType & {
|
|
668
|
+
/**
|
|
669
|
+
* Links the passkey to the user. Run it only once the passkey's assertion over the key verifies,
|
|
670
|
+
* which proves that the user holds the passkey, as an upgrade's assertion does. Returns
|
|
671
|
+
* `foreign_account` when the passkey linked to another user first.
|
|
672
|
+
*/
|
|
673
|
+
link: () => Promise<TempoAccount.ForeignAccountError | undefined>
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
/** The refusal that `link` returns. */
|
|
677
|
+
export const errors = [TempoAccount.ForeignAccountError] as const
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
/**
|
|
681
|
+
* Returns whether `owner`'s passkey signs at Tempo ID's origin, and at `page` when given: its relying
|
|
682
|
+
* party ID is the host of each origin or a registrable suffix of it, as WebAuthn requires.
|
|
683
|
+
*/
|
|
684
|
+
function signsHere(owner: Owner.Owner, options: { page?: string | undefined }) {
|
|
685
|
+
if (!owner.credential) return false
|
|
686
|
+
return (
|
|
687
|
+
Passkey.relyingParty([owner.realm], { origin: env.URL, page: options.page })
|
|
688
|
+
?.rpId === owner.credential.rpId
|
|
689
|
+
)
|
|
690
|
+
}
|