@tempoxyz/id 0.0.0-pr-187.sha-eed04d3
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 +81 -0
- package/dist/App.d.ts +20 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/App.js +26 -0
- package/dist/App.js.map +1 -0
- package/dist/app/client/.assetsignore +2 -0
- package/dist/app/client/assets/BRLA-CZvVDNYr.png +0 -0
- package/dist/app/client/assets/CHFAU-DCedc4aH.png +0 -0
- package/dist/app/client/assets/DLUSD-BnRXm3EI.png +0 -0
- package/dist/app/client/assets/PRIME-CiFp2-3e.svg +14 -0
- package/dist/app/client/assets/Pilat-Bold-C1t1eIrF.woff2 +0 -0
- package/dist/app/client/assets/Pilat-Book-CbS8ofT8.woff2 +0 -0
- package/dist/app/client/assets/Pilat-Demi-CADSbPAt.woff2 +0 -0
- package/dist/app/client/assets/Pilat-Regular-Bx8vzE7q.woff2 +0 -0
- package/dist/app/client/assets/USD1-COVcO_PB.svg +30 -0
- package/dist/app/client/assets/YLDS-CRh8Zw0g.svg +3 -0
- package/dist/app/client/assets/ccip-Cq1mMiVl.js +1 -0
- package/dist/app/client/assets/frxUSD-n9pTpinR.svg +1 -0
- package/dist/app/client/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
- package/dist/app/client/assets/index-B7YJVP00.css +1 -0
- package/dist/app/client/assets/index-UXTxXCLk.js +55 -0
- package/dist/app/client/assets/pathUSD-BvaO6ooS.svg +25 -0
- package/dist/app/client/assets/reset-co-CHrff.css +1 -0
- package/dist/app/client/assets/wYLDS-CaCKDrO-.svg +10 -0
- package/dist/app/db/auth.d.ts +3207 -0
- package/dist/app/db/auth.d.ts.map +1 -0
- package/dist/app/db/auth.js +330 -0
- package/dist/app/db/auth.js.map +1 -0
- package/dist/app/db/schema.d.ts +932 -0
- package/dist/app/db/schema.d.ts.map +1 -0
- package/dist/app/db/schema.js +171 -0
- package/dist/app/db/schema.js.map +1 -0
- package/dist/app/server/.vite/manifest.json +489 -0
- package/dist/app/server/assets/BRLA-CZvVDNYr.png +0 -0
- package/dist/app/server/assets/CHFAU-DCedc4aH.png +0 -0
- package/dist/app/server/assets/DLUSD-BnRXm3EI.png +0 -0
- package/dist/app/server/assets/PRIME-CiFp2-3e.svg +14 -0
- package/dist/app/server/assets/Pilat-Bold-C1t1eIrF.woff2 +0 -0
- package/dist/app/server/assets/Pilat-Book-CbS8ofT8.woff2 +0 -0
- package/dist/app/server/assets/Pilat-Demi-CADSbPAt.woff2 +0 -0
- package/dist/app/server/assets/Pilat-Regular-Bx8vzE7q.woff2 +0 -0
- package/dist/app/server/assets/USD1-COVcO_PB.svg +30 -0
- package/dist/app/server/assets/YLDS-CRh8Zw0g.svg +3 -0
- package/dist/app/server/assets/_tanstack-start-manifest_v-DjQNeRZp.js +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/authorize-C95F-9E1-CbESJKGU.js +31 -0
- package/dist/app/server/assets/authorize-C95F-9E1-CbESJKGU.js.map +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/call-UQamaCKN.js +32 -0
- package/dist/app/server/assets/call-UQamaCKN.js.map +1 -0
- package/dist/app/server/assets/ccip-CbNKFO4n.js +2 -0
- package/dist/app/server/assets/ccip-CbNKFO4n.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-CS900nSP.css +1 -0
- package/dist/app/server/assets/cookie-Cce9CrIP.js +10 -0
- package/dist/app/server/assets/cookie-Cce9CrIP.js.map +1 -0
- package/dist/app/server/assets/core-B1HCXUmx.js +56 -0
- package/dist/app/server/assets/core-B1HCXUmx.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/default-u_dwuiYb-BJJ9PwCi.js +2 -0
- package/dist/app/server/assets/default-u_dwuiYb-BJJ9PwCi.js.map +1 -0
- package/dist/app/server/assets/dist-BxSwugSY.js +1 -0
- package/dist/app/server/assets/dist-CZGFhmQd.js +2 -0
- package/dist/app/server/assets/dist-CZGFhmQd.js.map +1 -0
- package/dist/app/server/assets/dist-Dg3PQqiW.js +15 -0
- package/dist/app/server/assets/dist-Dg3PQqiW.js.map +1 -0
- package/dist/app/server/assets/effect-QlVUlMFu-2tSPDT2b.js +2 -0
- package/dist/app/server/assets/effect-QlVUlMFu-2tSPDT2b.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/factory-ipHlJXZY.js +5 -0
- package/dist/app/server/assets/factory-ipHlJXZY.js.map +1 -0
- package/dist/app/server/assets/frxUSD-n9pTpinR.svg +1 -0
- package/dist/app/server/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
- package/dist/app/server/assets/get-id-field-B0x109VU.js +6 -0
- package/dist/app/server/assets/get-id-field-B0x109VU.js.map +1 -0
- package/dist/app/server/assets/index-CLddUTqr-xpSuLpBt.js +2 -0
- package/dist/app/server/assets/index-CLddUTqr-xpSuLpBt.js.map +1 -0
- package/dist/app/server/assets/index-DZEfthgZ-8Uq5s5Pt.js +2 -0
- package/dist/app/server/assets/index-DZEfthgZ-8Uq5s5Pt.js.map +1 -0
- package/dist/app/server/assets/kysely-adapter-MkHAI9Jk.js +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/reset-co-CHrff.css +1 -0
- package/dist/app/server/assets/rolldown-runtime-B0Z9INg1.js +1 -0
- package/dist/app/server/assets/router-CcbyBCI4.css +1 -0
- package/dist/app/server/assets/router-xjZtEeaI.js +7 -0
- package/dist/app/server/assets/router-xjZtEeaI.js.map +1 -0
- package/dist/app/server/assets/schema-check-Cf7QOZZD.js +9 -0
- package/dist/app/server/assets/schema-check-Cf7QOZZD.js.map +1 -0
- package/dist/app/server/assets/schemas-C2lCYmR5.js +2 -0
- package/dist/app/server/assets/schemas-C2lCYmR5.js.map +1 -0
- package/dist/app/server/assets/secp256k1-buM5g4AL.js +2 -0
- package/dist/app/server/assets/secp256k1-buM5g4AL.js.map +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-Cg1N07hM.js +2 -0
- package/dist/app/server/assets/standard-json-Cg1N07hM.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/sury-CWZTCd75-xt1mWc9f.js +2 -0
- package/dist/app/server/assets/sury-CWZTCd75-xt1mWc9f.js.map +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/utils-C4ZXZIZW.js +2 -0
- package/dist/app/server/assets/utils-C4ZXZIZW.js.map +1 -0
- package/dist/app/server/assets/valibot--1zFm7rT-NSoY2xTp.js +2 -0
- package/dist/app/server/assets/valibot--1zFm7rT-NSoY2xTp.js.map +1 -0
- package/dist/app/server/assets/valibot-D_HTw1Gn-CJwWeOUE.js +2 -0
- package/dist/app/server/assets/valibot-D_HTw1Gn-CJwWeOUE.js.map +1 -0
- package/dist/app/server/assets/wYLDS-CaCKDrO-.svg +10 -0
- package/dist/app/server/assets/zod-Bwrt9trS-CV38yPnQ.js +2 -0
- package/dist/app/server/assets/zod-Bwrt9trS-CV38yPnQ.js.map +1 -0
- package/dist/app/server/assets/zod-DSgpEGAE-BvlnBE2L.js +2 -0
- package/dist/app/server/assets/zod-DSgpEGAE-BvlnBE2L.js.map +1 -0
- package/dist/app/server/index.js +574 -0
- package/dist/app/server/index.js.map +1 -0
- package/dist/app/server/wrangler.json +1 -0
- package/dist/cli/Admin.d.ts +38 -0
- package/dist/cli/Admin.d.ts.map +1 -0
- package/dist/cli/Admin.js +62 -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 +36 -0
- package/dist/cli/Apps.js.map +1 -0
- package/dist/cli/Cli.d.ts +14 -0
- package/dist/cli/Cli.d.ts.map +1 -0
- package/dist/cli/Cli.js +27 -0
- package/dist/cli/Cli.js.map +1 -0
- package/dist/cli/Project.d.ts +20 -0
- package/dist/cli/Project.d.ts.map +1 -0
- package/dist/cli/Project.js +88 -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 +49 -0
- package/dist/cli/Realms.js.map +1 -0
- package/dist/cli/Session.d.ts +85 -0
- package/dist/cli/Session.d.ts.map +1 -0
- package/dist/cli/Session.js +178 -0
- package/dist/cli/Session.js.map +1 -0
- package/dist/cli/User.d.ts +29 -0
- package/dist/cli/User.d.ts.map +1 -0
- package/dist/cli/User.js +39 -0
- package/dist/cli/User.js.map +1 -0
- package/dist/cli/V1.d.ts +35 -0
- package/dist/cli/V1.d.ts.map +1 -0
- package/dist/cli/V1.js +41 -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 +89 -0
- package/dist/cli/commands/admin/apps/create.js.map +1 -0
- package/dist/cli/commands/admin/apps/delete.d.ts +14 -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 +9 -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 +16 -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 +76 -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 +9 -0
- package/dist/cli/commands/admin/migrate.d.ts.map +1 -0
- package/dist/cli/commands/admin/migrate.js +17 -0
- package/dist/cli/commands/admin/migrate.js.map +1 -0
- package/dist/cli/commands/admin/realms/add.d.ts +12 -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 +13 -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 +16 -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 +18 -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 +11 -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 +15 -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 +15 -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 +16 -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 +15 -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 +101 -0
- package/dist/client/Actions.d.ts.map +1 -0
- package/dist/client/Actions.js +90 -0
- package/dist/client/Actions.js.map +1 -0
- package/dist/client/Auth.d.ts +161 -0
- package/dist/client/Auth.d.ts.map +1 -0
- package/dist/client/Auth.js +113 -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 +170 -0
- package/dist/client/Decorator.d.ts.map +1 -0
- package/dist/client/Decorator.js +227 -0
- package/dist/client/Decorator.js.map +1 -0
- package/dist/client/Key.d.ts +85 -0
- package/dist/client/Key.d.ts.map +1 -0
- package/dist/client/Key.js +83 -0
- package/dist/client/Key.js.map +1 -0
- package/dist/client/Pending.d.ts +39 -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 +34 -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/Provider.d.ts +16 -0
- package/dist/client/Provider.d.ts.map +1 -0
- package/dist/client/Provider.js +12 -0
- package/dist/client/Provider.js.map +1 -0
- package/dist/client/Step.d.ts +21 -0
- package/dist/client/Step.d.ts.map +1 -0
- package/dist/client/Step.js +16 -0
- package/dist/client/Step.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 +40 -0
- package/dist/client/TempoAccount.d.ts.map +1 -0
- package/dist/client/TempoAccount.js +16 -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 +25 -0
- package/dist/client/actions/account.d.ts.map +1 -0
- package/dist/client/actions/account.js +34 -0
- package/dist/client/actions/account.js.map +1 -0
- package/dist/client/actions/device.d.ts +53 -0
- package/dist/client/actions/device.d.ts.map +1 -0
- package/dist/client/actions/device.js +79 -0
- package/dist/client/actions/device.js.map +1 -0
- package/dist/client/actions/email.d.ts +84 -0
- package/dist/client/actions/email.d.ts.map +1 -0
- package/dist/client/actions/email.js +63 -0
- package/dist/client/actions/email.js.map +1 -0
- package/dist/client/actions/oauth.d.ts +115 -0
- package/dist/client/actions/oauth.d.ts.map +1 -0
- package/dist/client/actions/oauth.js +105 -0
- package/dist/client/actions/oauth.js.map +1 -0
- package/dist/client/actions/passkey.d.ts +88 -0
- package/dist/client/actions/passkey.d.ts.map +1 -0
- package/dist/client/actions/passkey.js +60 -0
- package/dist/client/actions/passkey.js.map +1 -0
- package/dist/client/actions/provider.d.ts +49 -0
- package/dist/client/actions/provider.d.ts.map +1 -0
- package/dist/client/actions/provider.js +34 -0
- package/dist/client/actions/provider.js.map +1 -0
- package/dist/client/actions/realm.d.ts +24 -0
- package/dist/client/actions/realm.d.ts.map +1 -0
- package/dist/client/actions/realm.js +15 -0
- package/dist/client/actions/realm.js.map +1 -0
- package/dist/client/actions/redirect.d.ts +153 -0
- package/dist/client/actions/redirect.d.ts.map +1 -0
- package/dist/client/actions/redirect.js +236 -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 +14 -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 +106 -0
- package/dist/client/internal/api.d.ts.map +1 -0
- package/dist/client/internal/api.js +129 -0
- package/dist/client/internal/api.js.map +1 -0
- package/dist/client/internal/headless.d.ts +33 -0
- package/dist/client/internal/headless.d.ts.map +1 -0
- package/dist/client/internal/headless.js +46 -0
- package/dist/client/internal/headless.js.map +1 -0
- package/dist/client/internal/indexedDb.d.ts +9 -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 +58 -0
- package/dist/client/internal/request.d.ts.map +1 -0
- package/dist/client/internal/request.js +45 -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.d.ts +20 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +20 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/Apps.d.ts +3051 -0
- package/dist/internal/Apps.d.ts.map +1 -0
- package/dist/internal/Apps.js +472 -0
- package/dist/internal/Apps.js.map +1 -0
- package/dist/internal/Auth.d.ts +4058 -0
- package/dist/internal/Auth.d.ts.map +1 -0
- package/dist/internal/Auth.js +137 -0
- package/dist/internal/Auth.js.map +1 -0
- package/dist/internal/Authorize.d.ts +532 -0
- package/dist/internal/Authorize.d.ts.map +1 -0
- package/dist/internal/Authorize.js +326 -0
- package/dist/internal/Authorize.js.map +1 -0
- package/dist/internal/Device.d.ts +371 -0
- package/dist/internal/Device.d.ts.map +1 -0
- package/dist/internal/Device.js +271 -0
- package/dist/internal/Device.js.map +1 -0
- package/dist/internal/Env.d.ts +57 -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 +609 -0
- package/dist/internal/ErrorResponse.d.ts.map +1 -0
- package/dist/internal/ErrorResponse.js +679 -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 +1456 -0
- package/dist/internal/KeyAuthorization.d.ts.map +1 -0
- package/dist/internal/KeyAuthorization.js +1030 -0
- package/dist/internal/KeyAuthorization.js.map +1 -0
- package/dist/internal/Limits.d.ts +65 -0
- package/dist/internal/Limits.d.ts.map +1 -0
- package/dist/internal/Limits.js +35 -0
- package/dist/internal/Limits.js.map +1 -0
- package/dist/internal/Log.d.ts +49 -0
- package/dist/internal/Log.d.ts.map +1 -0
- package/dist/internal/Log.js +101 -0
- package/dist/internal/Log.js.map +1 -0
- package/dist/internal/LogLine.d.ts +33 -0
- package/dist/internal/LogLine.d.ts.map +1 -0
- package/dist/internal/LogLine.js +56 -0
- package/dist/internal/LogLine.js.map +1 -0
- package/dist/internal/Migrations.d.ts +19 -0
- package/dist/internal/Migrations.d.ts.map +1 -0
- package/dist/internal/Migrations.js +57 -0
- package/dist/internal/Migrations.js.map +1 -0
- package/dist/internal/Owner.d.ts +146 -0
- package/dist/internal/Owner.d.ts.map +1 -0
- package/dist/internal/Owner.js +65 -0
- package/dist/internal/Owner.js.map +1 -0
- package/dist/internal/Passkey.d.ts +528 -0
- package/dist/internal/Passkey.d.ts.map +1 -0
- package/dist/internal/Passkey.js +658 -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 +105 -0
- package/dist/internal/Privy.d.ts.map +1 -0
- package/dist/internal/Privy.js +224 -0
- package/dist/internal/Privy.js.map +1 -0
- package/dist/internal/RateLimit.d.ts +190 -0
- package/dist/internal/RateLimit.d.ts.map +1 -0
- package/dist/internal/RateLimit.js +148 -0
- package/dist/internal/RateLimit.js.map +1 -0
- package/dist/internal/Realm.d.ts +281 -0
- package/dist/internal/Realm.d.ts.map +1 -0
- package/dist/internal/Realm.js +477 -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 +115 -0
- package/dist/internal/SigningKey.d.ts.map +1 -0
- package/dist/internal/SigningKey.js +197 -0
- package/dist/internal/SigningKey.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 +51 -0
- package/dist/internal/Timing.d.ts.map +1 -0
- package/dist/internal/Timing.js +103 -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/Wallet.d.ts +37 -0
- package/dist/internal/Wallet.d.ts.map +1 -0
- package/dist/internal/Wallet.js +43 -0
- package/dist/internal/Wallet.js.map +1 -0
- package/dist/worker.d.ts +12 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +12 -0
- package/dist/worker.js.map +1 -0
- package/package.json +82 -0
- package/src/Api.ts +151 -0
- package/src/App.ts +56 -0
- package/src/api/account.ts +311 -0
- package/src/api/authenticate.ts +1290 -0
- package/src/api/authorize.ts +1030 -0
- package/src/api/device.ts +874 -0
- package/src/api/health.ts +72 -0
- package/src/api/lib/AccountStep.ts +335 -0
- package/src/api/lib/Auth.ts +134 -0
- package/src/api/lib/Consent.ts +339 -0
- package/src/api/lib/Cors.ts +107 -0
- package/src/api/lib/Database.ts +10 -0
- package/src/api/lib/DeviceRequest.ts +265 -0
- package/src/api/lib/FirstAccount.ts +90 -0
- package/src/api/lib/KeySigner.ts +393 -0
- package/src/api/lib/PasskeyLink.ts +162 -0
- package/src/api/lib/Session.ts +34 -0
- package/src/api/lib/SignInConsent.ts +316 -0
- package/src/api/oauth.ts +1282 -0
- package/src/api/provider.ts +441 -0
- package/src/app/components/Button.tsx +128 -0
- package/src/app/components/CodeInput.tsx +186 -0
- package/src/app/components/ErrorMessage.tsx +66 -0
- package/src/app/components/Grant.tsx +323 -0
- package/src/app/components/Input.tsx +48 -0
- package/src/app/components/Tooltip.tsx +45 -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/crons/cleanup.ts +42 -0
- package/src/app/db/auth.ts +416 -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/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/_journal.json +83 -0
- package/src/app/db/schema.ts +218 -0
- package/src/app/env.ts +49 -0
- package/src/app/lib/Client.ts +82 -0
- package/src/app/lib/Loader.ts +24 -0
- package/src/app/package.json +8 -0
- package/src/app/routeTree.gen.ts +198 -0
- package/src/app/router.tsx +48 -0
- package/src/app/routes/[_].flows.tsx +3001 -0
- package/src/app/routes/__root.tsx +91 -0
- package/src/app/routes/authorize.tsx +197 -0
- package/src/app/routes/choose-account.tsx +111 -0
- package/src/app/routes/deposit.tsx +105 -0
- package/src/app/routes/device.tsx +227 -0
- package/src/app/routes/index.tsx +115 -0
- package/src/app/routes/login.tsx +506 -0
- package/src/app/screens/Account.tsx +347 -0
- package/src/app/screens/Approval.tsx +276 -0
- package/src/app/screens/ChooseAccount.tsx +240 -0
- package/src/app/screens/Deposit.tsx +762 -0
- package/src/app/screens/DeviceApproval.tsx +480 -0
- package/src/app/screens/SignIn.tsx +362 -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 +204 -0
- package/src/app/vite.config.ts +95 -0
- package/src/app/void.config.ts +29 -0
- package/src/app/zyzz.config.ts +274 -0
- package/src/cli/Admin.ts +73 -0
- package/src/cli/Apps.ts +29 -0
- package/src/cli/Cli.ts +42 -0
- package/src/cli/Project.ts +117 -0
- package/src/cli/Realms.ts +50 -0
- package/src/cli/Session.ts +239 -0
- package/src/cli/User.ts +45 -0
- package/src/cli/V1.ts +57 -0
- package/src/cli/bin.ts +44 -0
- package/src/cli/commands/admin/apps/create.ts +101 -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 +86 -0
- package/src/cli/commands/admin/index.ts +14 -0
- package/src/cli/commands/admin/migrate.ts +16 -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 +168 -0
- package/src/client/Auth.ts +285 -0
- package/src/client/Authorization.ts +34 -0
- package/src/client/Decorator.ts +410 -0
- package/src/client/Key.ts +140 -0
- package/src/client/Pending.ts +46 -0
- package/src/client/Permissions.ts +39 -0
- package/src/client/Provider.ts +18 -0
- package/src/client/Step.ts +24 -0
- package/src/client/Storage.ts +29 -0
- package/src/client/TempoAccount.ts +42 -0
- package/src/client/Tokens.ts +27 -0
- package/src/client/User.ts +23 -0
- package/src/client/actions/account.ts +57 -0
- package/src/client/actions/device.ts +151 -0
- package/src/client/actions/email.ts +141 -0
- package/src/client/actions/oauth.ts +182 -0
- package/src/client/actions/passkey.ts +141 -0
- package/src/client/actions/provider.ts +70 -0
- package/src/client/actions/realm.ts +36 -0
- package/src/client/actions/redirect.ts +408 -0
- package/src/client/internal/accessKey.ts +54 -0
- package/src/client/internal/account.ts +15 -0
- package/src/client/internal/api.ts +224 -0
- package/src/client/internal/headless.ts +77 -0
- package/src/client/internal/indexedDb.ts +44 -0
- package/src/client/internal/request.ts +71 -0
- package/src/client/internal/store.ts +20 -0
- package/src/client.ts +19 -0
- package/src/index.ts +6 -0
- package/src/internal/Apps.ts +718 -0
- package/src/internal/Auth.ts +203 -0
- package/src/internal/Authorize.ts +424 -0
- package/src/internal/Balance.ts +168 -0
- package/src/internal/BodyLimit.ts +36 -0
- package/src/internal/Chain.ts +16 -0
- package/src/internal/Device.ts +469 -0
- package/src/internal/Env.ts +58 -0
- package/src/internal/ErrorResponse.ts +854 -0
- package/src/internal/Id.ts +41 -0
- package/src/internal/KeyAuthorization.ts +1339 -0
- package/src/internal/Limits.ts +39 -0
- package/src/internal/Log.ts +178 -0
- package/src/internal/LogLine.ts +87 -0
- package/src/internal/Logout.ts +336 -0
- package/src/internal/Migrations.ts +86 -0
- package/src/internal/OpenApi.ts +300 -0
- package/src/internal/Owner.ts +211 -0
- package/src/internal/Passkey.ts +1052 -0
- package/src/internal/PendingKey.ts +104 -0
- package/src/internal/Privy.ts +402 -0
- package/src/internal/Provider.ts +125 -0
- package/src/internal/RateLimit.ts +259 -0
- package/src/internal/Realm.ts +768 -0
- package/src/internal/RequestId.ts +118 -0
- package/src/internal/SignInGrant.ts +168 -0
- package/src/internal/SigningKey.ts +286 -0
- package/src/internal/TempoAccount.ts +342 -0
- package/src/internal/TestInbox.ts +51 -0
- package/src/internal/Timing.ts +158 -0
- package/src/internal/Validation.ts +52 -0
- package/src/internal/Wallet.ts +62 -0
- package/src/internal/owners/Passkey.ts +72 -0
- package/src/internal/owners/Privy.ts +81 -0
- package/src/internal/owners/Secp256k1.ts +143 -0
- package/src/types/app.d.ts +19 -0
- package/src/worker.ts +11 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lists the realms the app reaches: the sets of Tempo Accounts its settings name.
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
import type { Auth } from '../Auth.js';
|
|
6
|
+
/**
|
|
7
|
+
* Lists the realms the app reaches, in its settings' order. The first holds a user's first account.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* const realms = await Actions.realm.list(auth)
|
|
12
|
+
* // [{ id: 'default', name: 'Tempo' }]
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare function list(auth: Auth): Promise<list.ReturnType>;
|
|
16
|
+
export declare namespace list {
|
|
17
|
+
type ReturnType = readonly {
|
|
18
|
+
/** The realm ID, such as `default` or `tempo-cash`. */
|
|
19
|
+
id: string;
|
|
20
|
+
/** The realm's display name, such as `Tempo Cash`. */
|
|
21
|
+
name: string;
|
|
22
|
+
}[];
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=realm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realm.d.ts","sourceRoot":"","sources":["../../../src/client/actions/realm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAGtC;;;;;;;;GAQG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAU/D;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAK,UAAU,GAAG,SAAS;QACzB,uDAAuD;QACvD,EAAE,EAAE,MAAM,CAAA;QACV,sDAAsD;QACtD,IAAI,EAAE,MAAM,CAAA;KACb,EAAE,CAAA;CACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as Api from '../internal/api.js';
|
|
2
|
+
/**
|
|
3
|
+
* Lists the realms the app reaches, in its settings' order. The first holds a user's first account.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* const realms = await Actions.realm.list(auth)
|
|
8
|
+
* // [{ id: 'default', name: 'Tempo' }]
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export async function list(auth) {
|
|
12
|
+
const { realms } = await Api.json(await (auth.fetch ?? fetch)(new URL(`/v1/realms?${new URLSearchParams({ client_id: auth.clientId })}`, auth.url)));
|
|
13
|
+
return realms;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=realm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realm.js","sourceRoot":"","sources":["../../../src/client/actions/realm.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAEzC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CACzB,IAAI,GAAG,CACL,cAAc,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EACjE,IAAI,CAAC,GAAG,CACT,CACF,CACF,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import type { Account } from 'viem/tempo';
|
|
2
|
+
import { type Auth } from '../Auth.js';
|
|
3
|
+
import type { Authorization } from '../Authorization.js';
|
|
4
|
+
import * as Pending from '../Pending.js';
|
|
5
|
+
import type { Permissions } from '../Permissions.js';
|
|
6
|
+
/** `complete` received a `key` that differs from the one `start` received for the stored redirect. */
|
|
7
|
+
export declare class KeyMismatchError extends Error {
|
|
8
|
+
readonly name = "Actions.redirect.KeyMismatchError";
|
|
9
|
+
constructor(options: {
|
|
10
|
+
stored: boolean;
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Finishes a {@link start} when the page loads with Tempo ID's callback, and returns `undefined`
|
|
15
|
+
* otherwise. The code is redeemed once, however often the page calls this. A callback that denies
|
|
16
|
+
* this page's redirect, such as `error=access_denied`, throws a `RequestError` with that `error` as
|
|
17
|
+
* its `code` and status 0.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const authorization =
|
|
22
|
+
* (await Actions.redirect.complete(auth)) ??
|
|
23
|
+
* (await Actions.authorize(auth))
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function complete<const key extends boolean = true>(auth: Auth, options?: complete.Options<key>): Promise<complete.ReturnType<key>>;
|
|
27
|
+
export declare namespace complete {
|
|
28
|
+
type Options<key extends boolean = true> = {
|
|
29
|
+
/** The key the app passed to {@link start}, if it supplied one. */
|
|
30
|
+
accessKey?: Account.Account | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* The `key` that {@link start} received: `false` for a sign-in without a key. Defaults to
|
|
33
|
+
* `true`. A stored redirect that `start` began with another `key` throws
|
|
34
|
+
* {@link KeyMismatchError}.
|
|
35
|
+
*/
|
|
36
|
+
key?: key | undefined;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* The authorization, or the tokens and the user alone for a sign-in without a key. `undefined`
|
|
40
|
+
* when the page is not a redirect's callback.
|
|
41
|
+
*/
|
|
42
|
+
type ReturnType<key extends boolean = true> = (key extends false ? handleCallback.WithoutKey : Authorization) | undefined;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Returns the URL that signs the user in on Tempo ID's pages and redirects back with a code,
|
|
46
|
+
* and the `Pending` state to keep until then, such as in a sealed cookie.
|
|
47
|
+
* {@link handleCallback} redeems the code for the tokens and the key authorization.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* const { pending, url } = await Actions.redirect.createUrl(auth, {
|
|
52
|
+
* redirectUri: 'https://app.example/auth/callback',
|
|
53
|
+
* })
|
|
54
|
+
* await seal(c, 'oauth', pending)
|
|
55
|
+
* return c.redirect(url)
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function createUrl<const key extends boolean = true>(auth: Auth, options?: createUrl.Options<key>): Promise<createUrl.ReturnType<key>>;
|
|
59
|
+
export declare namespace createUrl {
|
|
60
|
+
type Options<key extends boolean = true> = {
|
|
61
|
+
/**
|
|
62
|
+
* The key to authorize, as a Viem account. Its `access` names the Tempo Account, which
|
|
63
|
+
* defaults to the one the user selected at sign-in, or their oldest. Defaults to a new key, whose material `pending` keeps.
|
|
64
|
+
*/
|
|
65
|
+
accessKey?: Account.Account | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* A message the owner's signature binds, such as a sign-in challenge the app's backend issued.
|
|
68
|
+
* Tempo ID binds its EIP-191 hash as the key authorization's `witness`. Only an app with the
|
|
69
|
+
* `tempo-id:sign` scope may send one. With `key: false`, the call throws
|
|
70
|
+
* `Auth.ChallengeWithoutKeyError`.
|
|
71
|
+
*/
|
|
72
|
+
challenge?: ([key] extends [false] ? never : string) | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Whether the sign-in authorizes an access key. With `false`, the request carries no key
|
|
75
|
+
* authorization, and {@link handleCallback} returns the tokens and the user alone. Defaults to
|
|
76
|
+
* `true`.
|
|
77
|
+
*/
|
|
78
|
+
key?: key | undefined;
|
|
79
|
+
/** What the key may do. Tempo ID's pages show it, and the headless ceiling fills what it leaves out. */
|
|
80
|
+
permissions?: Permissions | undefined;
|
|
81
|
+
/** Where Tempo ID redirects back to. Defaults to the instance's `redirectUri`. */
|
|
82
|
+
redirectUri?: string | undefined;
|
|
83
|
+
};
|
|
84
|
+
type ReturnType<key extends boolean = true> = {
|
|
85
|
+
/** What to keep until the callback, such as in a sealed cookie. */
|
|
86
|
+
pending: key extends false ? Pending.WithoutKey : Pending.Pending;
|
|
87
|
+
/** Where to send the browser. */
|
|
88
|
+
url: string;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Finishes a sign-in redirect: checks its state, and redeems the code with the PKCE verifier (and
|
|
93
|
+
* the client secret, for a backend) for the tokens and the key authorization.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* const authorization = await Actions.redirect.handleCallback(auth, {
|
|
98
|
+
* pending: await unseal(c, 'oauth'),
|
|
99
|
+
* url: c.req.url,
|
|
100
|
+
* })
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
export declare function handleCallback<const pending extends Pending.Pending | Pending.WithoutKey = Pending.Pending>(auth: Auth, options: handleCallback.Options<pending>): Promise<handleCallback.ReturnType<pending>>;
|
|
104
|
+
export declare namespace handleCallback {
|
|
105
|
+
type Options<pending extends Pending.Pending | Pending.WithoutKey = Pending.Pending> = {
|
|
106
|
+
/** The key the app passed to `createUrl`, if it supplied one. */
|
|
107
|
+
accessKey?: Account.Account | undefined;
|
|
108
|
+
/** What `createUrl` returned to keep. */
|
|
109
|
+
pending: pending;
|
|
110
|
+
/** The callback URL Tempo ID redirected to. */
|
|
111
|
+
url: string | URL;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* The authorization, or the tokens and the user alone for a `Pending.WithoutKey`. A `pending`
|
|
115
|
+
* typed as either returns either.
|
|
116
|
+
*/
|
|
117
|
+
type ReturnType<pending extends Pending.Pending | Pending.WithoutKey = Pending.Pending> = [pending] extends [Pending.WithoutKey] ? WithoutKey : [pending] extends [Pending.Pending] ? Authorization : Authorization | WithoutKey;
|
|
118
|
+
/** What a sign-in without a key returns: the tokens and the user. */
|
|
119
|
+
type WithoutKey = Omit<Authorization, 'account' | 'key'>;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Sends the browser to Tempo ID's pages to sign in, keeping the redirect's state in `storage`.
|
|
123
|
+
* {@link complete} finishes it when the browser returns.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```ts
|
|
127
|
+
* await Actions.redirect.start(auth)
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export declare function start(auth: Auth, options?: start.Options): Promise<void>;
|
|
131
|
+
export declare namespace start {
|
|
132
|
+
type Options = {
|
|
133
|
+
/**
|
|
134
|
+
* The key to authorize, as a Viem account. Pass it to {@link complete} too. Defaults to a new
|
|
135
|
+
* key, which `storage` keeps until the browser returns.
|
|
136
|
+
*/
|
|
137
|
+
accessKey?: Account.Account | undefined;
|
|
138
|
+
/**
|
|
139
|
+
* A message the owner's signature binds, such as a sign-in challenge the app's backend issued.
|
|
140
|
+
* Tempo ID binds its EIP-191 hash as the key authorization's `witness`. Only an app with the
|
|
141
|
+
* `tempo-id:sign` scope may send one.
|
|
142
|
+
*/
|
|
143
|
+
challenge?: string | undefined;
|
|
144
|
+
/**
|
|
145
|
+
* Whether the sign-in authorizes an access key. With `false`, {@link complete} returns the
|
|
146
|
+
* tokens and the user alone. Defaults to `true`.
|
|
147
|
+
*/
|
|
148
|
+
key?: boolean | undefined;
|
|
149
|
+
/** What the key may do. Tempo ID's pages show it, and the headless ceiling fills what it leaves out. */
|
|
150
|
+
permissions?: Permissions | undefined;
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=redirect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect.d.ts","sourceRoot":"","sources":["../../../src/client/actions/redirect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signs the user in on Tempo ID's pages, which redirect back with a code. `start` and `complete`
|
|
3
|
+
* keep the redirect's state in `storage` for a browser app. `createUrl` and `handleCallback` leave
|
|
4
|
+
* it to the app to keep, for a backend or a native app.
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import { Base64, Bytes, Hash } from 'ox';
|
|
8
|
+
import { ChallengeWithoutKeyError, RequestError } from '../Auth.js';
|
|
9
|
+
import * as AccessKey from '../internal/accessKey.js';
|
|
10
|
+
import * as Api from '../internal/api.js';
|
|
11
|
+
import { keyAuthorization } from '../internal/request.js';
|
|
12
|
+
import * as Store from '../internal/store.js';
|
|
13
|
+
import * as Pending from '../Pending.js';
|
|
14
|
+
/** `complete` received a `key` that differs from the one `start` received for the stored redirect. */
|
|
15
|
+
export class KeyMismatchError extends Error {
|
|
16
|
+
name = 'Actions.redirect.KeyMismatchError';
|
|
17
|
+
constructor(options) {
|
|
18
|
+
super(options.stored
|
|
19
|
+
? 'The redirect authorized a key, but `complete` received `key: false`. Pass the `key` that `start` received.'
|
|
20
|
+
: 'The redirect authorized no key, but `complete` did not receive `key: false`. Pass the `key` that `start` received.');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Finishes a {@link start} when the page loads with Tempo ID's callback, and returns `undefined`
|
|
25
|
+
* otherwise. The code is redeemed once, however often the page calls this. A callback that denies
|
|
26
|
+
* this page's redirect, such as `error=access_denied`, throws a `RequestError` with that `error` as
|
|
27
|
+
* its `code` and status 0.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* const authorization =
|
|
32
|
+
* (await Actions.redirect.complete(auth)) ??
|
|
33
|
+
* (await Actions.authorize(auth))
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function complete(auth, options = {}) {
|
|
37
|
+
completed ??= (async () => {
|
|
38
|
+
const store = Store.get(auth);
|
|
39
|
+
const stored = (await store.getItem(storageKey));
|
|
40
|
+
const url = new URL(window.location.href);
|
|
41
|
+
// A registered redirect URI may hold its own `error`, which the app keeps. Only an `error` that
|
|
42
|
+
// the callback added after it belongs to the authorization response.
|
|
43
|
+
const redirectUri = stored?.redirectUri ?? url.origin;
|
|
44
|
+
const registered = new URL(redirectUri).searchParams;
|
|
45
|
+
const added = (name) => response(url, { name, redirectUri });
|
|
46
|
+
// A custom `storage` may return `null` for a missing item.
|
|
47
|
+
const ours = stored != null && url.searchParams.get('state') === stored.state;
|
|
48
|
+
// The result's type follows `key`, so a redirect that `start` began with another `key` fails. The
|
|
49
|
+
// state and the URL stay, so a page load that passes the right `key` finishes the redirect.
|
|
50
|
+
if (ours &&
|
|
51
|
+
url.searchParams.has('code') &&
|
|
52
|
+
(stored.key === false) !== (options.key === false))
|
|
53
|
+
throw new KeyMismatchError({ stored: stored.key !== false });
|
|
54
|
+
await store.removeItem(storageKey);
|
|
55
|
+
// The app keeps its own query and fragment, without the callback's parameters. A code this page
|
|
56
|
+
// did not request is dropped too, since it redeems for whoever crafted its request. A page that is
|
|
57
|
+
// no callback of this page keeps its own `state` and `error` parameters.
|
|
58
|
+
const callback = [
|
|
59
|
+
'code',
|
|
60
|
+
'error',
|
|
61
|
+
'error_description',
|
|
62
|
+
'error_uri',
|
|
63
|
+
'state',
|
|
64
|
+
];
|
|
65
|
+
if (ours || url.searchParams.has('code')) {
|
|
66
|
+
const clean = new URL(url);
|
|
67
|
+
for (const name of callback) {
|
|
68
|
+
clean.searchParams.delete(name);
|
|
69
|
+
for (const value of registered.getAll(name))
|
|
70
|
+
clean.searchParams.append(name, value);
|
|
71
|
+
}
|
|
72
|
+
window.history.replaceState(null, '', clean.pathname + clean.search + clean.hash);
|
|
73
|
+
}
|
|
74
|
+
// A denial of this page's redirect throws, so the app never mistakes it for a page load
|
|
75
|
+
// without a callback and authorizes another way.
|
|
76
|
+
const error = added('error');
|
|
77
|
+
if (ours && error)
|
|
78
|
+
throw new RequestError({
|
|
79
|
+
code: error,
|
|
80
|
+
message: added('error_description') ?? error,
|
|
81
|
+
status: 0,
|
|
82
|
+
uri: added('error_uri'),
|
|
83
|
+
});
|
|
84
|
+
if (!url.searchParams.has('code') || !stored)
|
|
85
|
+
return undefined;
|
|
86
|
+
return handleCallback(auth, {
|
|
87
|
+
accessKey: options.accessKey,
|
|
88
|
+
pending: stored,
|
|
89
|
+
url,
|
|
90
|
+
});
|
|
91
|
+
})();
|
|
92
|
+
// The check above holds the stored redirect to `key`, which types the result.
|
|
93
|
+
return completed;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Returns the URL that signs the user in on Tempo ID's pages and redirects back with a code,
|
|
97
|
+
* and the `Pending` state to keep until then, such as in a sealed cookie.
|
|
98
|
+
* {@link handleCallback} redeems the code for the tokens and the key authorization.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* const { pending, url } = await Actions.redirect.createUrl(auth, {
|
|
103
|
+
* redirectUri: 'https://app.example/auth/callback',
|
|
104
|
+
* })
|
|
105
|
+
* await seal(c, 'oauth', pending)
|
|
106
|
+
* return c.redirect(url)
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export async function createUrl(auth, options = {}) {
|
|
110
|
+
if (options.key === false && options.challenge !== undefined)
|
|
111
|
+
throw new ChallengeWithoutKeyError();
|
|
112
|
+
const redirectUri = options.redirectUri ?? auth.redirectUri ?? `${window.location.origin}/`;
|
|
113
|
+
const key = options.key === false
|
|
114
|
+
? undefined
|
|
115
|
+
: await AccessKey.resolve(options.accessKey);
|
|
116
|
+
const pending = Pending.from({
|
|
117
|
+
...(key ? key.material : { key: false }),
|
|
118
|
+
redirectUri,
|
|
119
|
+
// `Bytes.random` needs only `crypto.getRandomValues`, which React Native polyfills.
|
|
120
|
+
state: Base64.fromBytes(Bytes.random(16), base64url),
|
|
121
|
+
verifier: Base64.fromBytes(Bytes.random(32), base64url),
|
|
122
|
+
});
|
|
123
|
+
const authorization = key
|
|
124
|
+
? keyAuthorization(auth, {
|
|
125
|
+
accessKey: key.accessKey,
|
|
126
|
+
permissions: options.permissions,
|
|
127
|
+
})
|
|
128
|
+
: undefined;
|
|
129
|
+
const url = new URL('/authorize', auth.url);
|
|
130
|
+
url.search = new URLSearchParams({
|
|
131
|
+
...(options.challenge === undefined
|
|
132
|
+
? {}
|
|
133
|
+
: { challenge: options.challenge }),
|
|
134
|
+
client_id: auth.clientId,
|
|
135
|
+
code_challenge: Base64.fromBytes(Hash.sha256(Bytes.fromString(pending.verifier)), base64url),
|
|
136
|
+
...(authorization
|
|
137
|
+
? {
|
|
138
|
+
key_authorization: Base64.fromString(JSON.stringify(authorization), base64url),
|
|
139
|
+
}
|
|
140
|
+
: {}),
|
|
141
|
+
redirect_uri: redirectUri,
|
|
142
|
+
scope: auth.scope,
|
|
143
|
+
state: pending.state,
|
|
144
|
+
}).toString();
|
|
145
|
+
// `options.key` decides both the type and the runtime value of `pending`.
|
|
146
|
+
return { pending, url: url.href };
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Finishes a sign-in redirect: checks its state, and redeems the code with the PKCE verifier (and
|
|
150
|
+
* the client secret, for a backend) for the tokens and the key authorization.
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```ts
|
|
154
|
+
* const authorization = await Actions.redirect.handleCallback(auth, {
|
|
155
|
+
* pending: await unseal(c, 'oauth'),
|
|
156
|
+
* url: c.req.url,
|
|
157
|
+
* })
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
export async function handleCallback(auth, options) {
|
|
161
|
+
const { key, redirectUri, state, verifier, ...material } = options.pending;
|
|
162
|
+
const url = new URL(options.url);
|
|
163
|
+
const added = (name) => response(url, { name, redirectUri });
|
|
164
|
+
// State comes first, so a forged link cannot supply the error an app shows.
|
|
165
|
+
if (url.searchParams.get('state') !== state)
|
|
166
|
+
throw new RequestError({
|
|
167
|
+
code: 'invalid_request',
|
|
168
|
+
field: 'state',
|
|
169
|
+
message: 'Invalid `state` in the callback URL. Start sign-in again from this app.',
|
|
170
|
+
status: 400,
|
|
171
|
+
});
|
|
172
|
+
const code = url.searchParams.get('code');
|
|
173
|
+
if (!code)
|
|
174
|
+
throw new RequestError({
|
|
175
|
+
code: added('error') ?? 'invalid_request',
|
|
176
|
+
field: 'code',
|
|
177
|
+
message: added('error_description') ??
|
|
178
|
+
'Missing `code` in the callback URL. Start sign-in again.',
|
|
179
|
+
status: 400,
|
|
180
|
+
});
|
|
181
|
+
const body = await Api.token(auth, {
|
|
182
|
+
code,
|
|
183
|
+
code_verifier: verifier,
|
|
184
|
+
grant_type: 'authorization_code',
|
|
185
|
+
redirect_uri: redirectUri,
|
|
186
|
+
});
|
|
187
|
+
// `pending.key` decides both the type and the runtime value of the result.
|
|
188
|
+
if (key === false) {
|
|
189
|
+
const tokens = Api.tokens(body);
|
|
190
|
+
return {
|
|
191
|
+
...tokens,
|
|
192
|
+
user: Api.user(tokens),
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
if (!body.account || !body.key_authorization)
|
|
196
|
+
throw new RequestError({
|
|
197
|
+
code: 'invalid_grant',
|
|
198
|
+
message: 'Missing key authorization in the token response. The code was already redeemed, or did not request a key. Start sign-in again.',
|
|
199
|
+
status: 400,
|
|
200
|
+
});
|
|
201
|
+
return Api.authorization({
|
|
202
|
+
account: body.account,
|
|
203
|
+
key_authorization: body.key_authorization,
|
|
204
|
+
tokens: body,
|
|
205
|
+
}, { accessKey: options.accessKey, material });
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Sends the browser to Tempo ID's pages to sign in, keeping the redirect's state in `storage`.
|
|
209
|
+
* {@link complete} finishes it when the browser returns.
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* ```ts
|
|
213
|
+
* await Actions.redirect.start(auth)
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
216
|
+
export async function start(auth, options = {}) {
|
|
217
|
+
const { pending, url } = await createUrl(auth, options);
|
|
218
|
+
await Store.get(auth).setItem(storageKey, pending);
|
|
219
|
+
window.location.assign(url);
|
|
220
|
+
}
|
|
221
|
+
/** Unpadded URL-safe Base64, as PKCE and `key_authorization` use. */
|
|
222
|
+
const base64url = { pad: false, url: true };
|
|
223
|
+
/** The redirect this page load returns from, so its code is redeemed once. */
|
|
224
|
+
let completed;
|
|
225
|
+
/** Where a redirect keeps its state in `storage`. */
|
|
226
|
+
const storageKey = 'tempo-id:redirect';
|
|
227
|
+
/**
|
|
228
|
+
* Returns the first value of `name` that the authorization response added to the callback URL. A
|
|
229
|
+
* registered redirect URI may hold its own `error` parameters, which come first, since the issuer
|
|
230
|
+
* appends a refusal's. It replaces `code` and `state`, which have one value.
|
|
231
|
+
*/
|
|
232
|
+
function response(url, options) {
|
|
233
|
+
const registered = new URL(options.redirectUri).searchParams.getAll(options.name).length;
|
|
234
|
+
return url.searchParams.getAll(options.name)[registered];
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=redirect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect.js","sourceRoot":"","sources":["../../../src/client/actions/redirect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Account } from 'viem/tempo';
|
|
2
|
+
import type * as Key from '../Key.js';
|
|
3
|
+
/**
|
|
4
|
+
* Returns the app's key, or creates one. A browser key is non-extractable, since IndexedDB keeps
|
|
5
|
+
* a `CryptoKey` across page loads. Elsewhere a CLI or native app must store the key as a string.
|
|
6
|
+
*/
|
|
7
|
+
export declare function resolve(accessKey: Account.Account | undefined): Promise<resolve.ReturnType>;
|
|
8
|
+
/**
|
|
9
|
+
* Rebuilds a key that {@link resolve} generated from its material. Returns `undefined` for the
|
|
10
|
+
* empty material of a key the app supplied.
|
|
11
|
+
*/
|
|
12
|
+
export declare function restore(material: Key.Material): resolve.ReturnType | undefined;
|
|
13
|
+
export declare namespace resolve {
|
|
14
|
+
type ReturnType = {
|
|
15
|
+
/** The key, as a Viem account that signs with it. */
|
|
16
|
+
accessKey: Account.Account;
|
|
17
|
+
/** What the authorization keeps to rebuild the key. Empty for a key the app supplied. */
|
|
18
|
+
material: Key.Material;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=accessKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessKey.d.ts","sourceRoot":"","sources":["../../../src/client/internal/accessKey.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAa,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,KAAK,GAAG,MAAM,WAAW,CAAA;AAErC;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,SAAS,EAAE,OAAO,CAAC,OAAO,GAAG,SAAS,GACrC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAgB7B;AAED;;;GAGG;AACH,wBAAgB,OAAO,CACrB,QAAQ,EAAE,GAAG,CAAC,QAAQ,GACrB,OAAO,CAAC,UAAU,GAAG,SAAS,CAMhC;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,UAAU,GAAG;QAChB,qDAAqD;QACrD,SAAS,EAAE,OAAO,CAAC,OAAO,CAAA;QAC1B,yFAAyF;QACzF,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAA;KACvB,CAAA;CACF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves the access key a sign-in authorizes: the one the app supplied, or a new one.
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
import { WebCryptoP256 } from 'ox';
|
|
6
|
+
import { Account, Secp256k1 } from 'viem/tempo';
|
|
7
|
+
/**
|
|
8
|
+
* Returns the app's key, or creates one. A browser key is non-extractable, since IndexedDB keeps
|
|
9
|
+
* a `CryptoKey` across page loads. Elsewhere a CLI or native app must store the key as a string.
|
|
10
|
+
*/
|
|
11
|
+
export async function resolve(accessKey) {
|
|
12
|
+
if (accessKey)
|
|
13
|
+
return { accessKey, material: {} };
|
|
14
|
+
if (typeof indexedDB !== 'undefined') {
|
|
15
|
+
const keyPair = await WebCryptoP256.createKeyPair();
|
|
16
|
+
return {
|
|
17
|
+
accessKey: Account.fromWebCryptoP256(keyPair),
|
|
18
|
+
material: { keyPair },
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const privateKey = Secp256k1.randomPrivateKey();
|
|
22
|
+
return {
|
|
23
|
+
accessKey: Account.fromSecp256k1(privateKey),
|
|
24
|
+
material: { privateKey },
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Rebuilds a key that {@link resolve} generated from its material. Returns `undefined` for the
|
|
29
|
+
* empty material of a key the app supplied.
|
|
30
|
+
*/
|
|
31
|
+
export function restore(material) {
|
|
32
|
+
if (material.keyPair)
|
|
33
|
+
return { accessKey: Account.fromWebCryptoP256(material.keyPair), material };
|
|
34
|
+
if (material.privateKey)
|
|
35
|
+
return { accessKey: Account.fromSecp256k1(material.privateKey), material };
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=accessKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessKey.js","sourceRoot":"","sources":["../../../src/client/internal/accessKey.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAG/C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,SAAsC;IAEtC,IAAI,SAAS;QAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IAEjD,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,aAAa,EAAE,CAAA;QACnD,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC7C,QAAQ,EAAE,EAAE,OAAO,EAAE;SACtB,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAA;IAC/C,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;QAC5C,QAAQ,EAAE,EAAE,UAAU,EAAE;KACzB,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CACrB,QAAsB;IAEtB,IAAI,QAAQ,CAAC,OAAO;QAClB,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAA;IAC7E,IAAI,QAAQ,CAAC,UAAU;QACrB,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IAC5E,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The state behind `Auth.account()`: the access key account a sign-in set, which the account reads
|
|
3
|
+
* through to. The `tempoId` extension reads and writes it through {@link key}.
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Account } from 'viem/tempo';
|
|
7
|
+
/** The property that holds an `Auth.account()`'s state. Other accounts lack it. */
|
|
8
|
+
export declare const key: unique symbol;
|
|
9
|
+
/** What an `Auth.account()` signs as. */
|
|
10
|
+
export type State = {
|
|
11
|
+
/** The signed-in access key account, or `undefined` while signed out. */
|
|
12
|
+
account: Account.AccessKeyAccount | undefined;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/client/internal/account.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,mFAAmF;AACnF,eAAO,MAAM,GAAG,eAA6B,CAAA;AAE7C,yCAAyC;AACzC,MAAM,MAAM,KAAK,GAAG;IAClB,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAA;CAC9C,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/client/internal/account.ts"],"names":[],"mappings":"AAOA,mFAAmF;AACnF,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA"}
|