@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,54 @@
|
|
|
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
|
+
import type * as Key from '../Key.js'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Returns the app's key, or creates one. A browser key is non-extractable, since IndexedDB keeps
|
|
11
|
+
* a `CryptoKey` across page loads. Elsewhere a CLI or native app must store the key as a string.
|
|
12
|
+
*/
|
|
13
|
+
export async function resolve(
|
|
14
|
+
accessKey: Account.Account | undefined,
|
|
15
|
+
): Promise<resolve.ReturnType> {
|
|
16
|
+
if (accessKey) return { accessKey, material: {} }
|
|
17
|
+
|
|
18
|
+
if (typeof indexedDB !== 'undefined') {
|
|
19
|
+
const keyPair = await WebCryptoP256.createKeyPair()
|
|
20
|
+
return {
|
|
21
|
+
accessKey: Account.fromWebCryptoP256(keyPair),
|
|
22
|
+
material: { keyPair },
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const privateKey = Secp256k1.randomPrivateKey()
|
|
27
|
+
return {
|
|
28
|
+
accessKey: Account.fromSecp256k1(privateKey),
|
|
29
|
+
material: { privateKey },
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Rebuilds a key that {@link resolve} generated from its material. Returns `undefined` for the
|
|
35
|
+
* empty material of a key the app supplied.
|
|
36
|
+
*/
|
|
37
|
+
export function restore(
|
|
38
|
+
material: Key.Material,
|
|
39
|
+
): resolve.ReturnType | undefined {
|
|
40
|
+
if (material.keyPair)
|
|
41
|
+
return { accessKey: Account.fromWebCryptoP256(material.keyPair), material }
|
|
42
|
+
if (material.privateKey)
|
|
43
|
+
return { accessKey: Account.fromSecp256k1(material.privateKey), material }
|
|
44
|
+
return undefined
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export declare namespace resolve {
|
|
48
|
+
type ReturnType = {
|
|
49
|
+
/** The key, as a Viem account that signs with it. */
|
|
50
|
+
accessKey: Account.Account
|
|
51
|
+
/** What the authorization keeps to rebuild the key. Empty for a key the app supplied. */
|
|
52
|
+
material: Key.Material
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
|
|
8
|
+
/** The property that holds an `Auth.account()`'s state. Other accounts lack it. */
|
|
9
|
+
export const key = Symbol('tempo-id.account')
|
|
10
|
+
|
|
11
|
+
/** What an `Auth.account()` signs as. */
|
|
12
|
+
export type State = {
|
|
13
|
+
/** The signed-in access key account, or `undefined` while signed out. */
|
|
14
|
+
account: Account.AccessKeyAccount | undefined
|
|
15
|
+
}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calls Tempo ID's API, and reads its responses into what the actions return.
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
import { Base64 } from 'ox'
|
|
6
|
+
import type { KeyAuthorization } from 'ox/tempo'
|
|
7
|
+
import type { Account } from 'viem/tempo'
|
|
8
|
+
import { type Auth, RequestError } from '../Auth.js'
|
|
9
|
+
import type { Authorization } from '../Authorization.js'
|
|
10
|
+
import * as Key from '../Key.js'
|
|
11
|
+
import type { TempoAccount } from '../TempoAccount.js'
|
|
12
|
+
import type { Tokens } from '../Tokens.js'
|
|
13
|
+
import type { User } from '../User.js'
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Builds an authorization from what Tempo ID returned and the sign-in's key: the material the
|
|
17
|
+
* library generated, or the `accessKey` the app supplied. `chainId` is the chain the request named,
|
|
18
|
+
* which the key authorization repeats.
|
|
19
|
+
*/
|
|
20
|
+
export function authorization<chainId extends number = number>(
|
|
21
|
+
body: Headless,
|
|
22
|
+
options: {
|
|
23
|
+
accessKey?: Account.Account | undefined
|
|
24
|
+
material: Key.Material
|
|
25
|
+
},
|
|
26
|
+
): Authorization<chainId> {
|
|
27
|
+
const { accessKey, material } = options
|
|
28
|
+
// A response to a request with a key always carries one, so its absence is a fault.
|
|
29
|
+
if (!body.account || !body.key_authorization)
|
|
30
|
+
throw new RequestError({
|
|
31
|
+
code: 'server_error',
|
|
32
|
+
message:
|
|
33
|
+
'Missing key authorization in the response to a request with a key. Sign in again.',
|
|
34
|
+
status: 200,
|
|
35
|
+
})
|
|
36
|
+
const key = Key.from<chainId>({
|
|
37
|
+
...material,
|
|
38
|
+
account: body.account,
|
|
39
|
+
keyAuthorization: body.key_authorization,
|
|
40
|
+
})
|
|
41
|
+
const tokens_ =
|
|
42
|
+
'accessToken' in body.tokens ? body.tokens : tokens(body.tokens)
|
|
43
|
+
return {
|
|
44
|
+
...tokens_,
|
|
45
|
+
account: Key.toAccount(key, { accessKey }),
|
|
46
|
+
key,
|
|
47
|
+
user: user(tokens_),
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** What the headless API returns for an authorization. */
|
|
52
|
+
export type Headless = {
|
|
53
|
+
/** The Tempo Account the key acts for, present when the request asked for a key. */
|
|
54
|
+
account?: Key.Key['account'] | undefined
|
|
55
|
+
/** The signed key authorization, in the node's RPC format, present when the request asked for a key. */
|
|
56
|
+
key_authorization?: KeyAuthorization.Rpc | undefined
|
|
57
|
+
/** The tokens the sign-in issued, as the token endpoint returns them or already read into `Tokens`. */
|
|
58
|
+
tokens: TokenResponse | Tokens
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Reads a JSON response, and throws a {@link RequestError} for a refused request. */
|
|
62
|
+
export async function json<value = unknown>(
|
|
63
|
+
response: Response,
|
|
64
|
+
): Promise<value> {
|
|
65
|
+
// Some refusals, such as the CSRF check's, return plain text.
|
|
66
|
+
const body = (await response.json().catch(() => ({}))) as value &
|
|
67
|
+
Partial<ErrorBody>
|
|
68
|
+
if (!response.ok) throw error(body, { status: response.status })
|
|
69
|
+
return body
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** An OAuth error response, with Tempo ID's extension members. */
|
|
73
|
+
export type ErrorBody = {
|
|
74
|
+
/** The OAuth error code, which `reason` determines. */
|
|
75
|
+
error: string
|
|
76
|
+
/** The fault and its fix. Its wording may change. */
|
|
77
|
+
error_description?: string | undefined
|
|
78
|
+
/** The errors page, at the refusal's `reason`. */
|
|
79
|
+
error_uri?: string | undefined
|
|
80
|
+
/** The request field at fault, as a dotted path. */
|
|
81
|
+
field?: string | undefined
|
|
82
|
+
/** The values the refusal compared. Base units are decimal strings. */
|
|
83
|
+
meta?: Readonly<Record<string, number | string>> | undefined
|
|
84
|
+
/** A stable name for the refusal. The issuer's own errors carry none. */
|
|
85
|
+
reason?: RequestError.Reason | undefined
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** A {@link RequestError} from an OAuth error response, or from a refusal with no body. */
|
|
89
|
+
export function error(body: Partial<ErrorBody>, options: { status: number }) {
|
|
90
|
+
return new RequestError({
|
|
91
|
+
code: body.error ?? 'server_error',
|
|
92
|
+
field: body.field,
|
|
93
|
+
message:
|
|
94
|
+
body.error_description ??
|
|
95
|
+
body.error ??
|
|
96
|
+
`Request failed with status ${options.status}.`,
|
|
97
|
+
meta: body.meta,
|
|
98
|
+
reason: body.reason,
|
|
99
|
+
status: options.status,
|
|
100
|
+
uri: body.error_uri,
|
|
101
|
+
})
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** Posts JSON to Tempo ID's API with the session cookie. */
|
|
105
|
+
export function post(auth: Auth, path: string, options: { json: unknown }) {
|
|
106
|
+
return (auth.fetch ?? fetch)(new URL(path, auth.url), {
|
|
107
|
+
body: JSON.stringify(options.json),
|
|
108
|
+
credentials: 'include',
|
|
109
|
+
headers: { 'content-type': 'application/json' },
|
|
110
|
+
method: 'POST',
|
|
111
|
+
})
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** Calls Tempo ID's OAuth token endpoint with a standard OAuth form post, adding the client and any secret. */
|
|
115
|
+
export async function token(auth: Auth, body: Record<string, string>) {
|
|
116
|
+
return json<TokenResponse>(
|
|
117
|
+
await (auth.fetch ?? fetch)(new URL('/oauth2/token', auth.url), {
|
|
118
|
+
body: new URLSearchParams({
|
|
119
|
+
...body,
|
|
120
|
+
client_id: auth.clientId,
|
|
121
|
+
...(auth.clientSecret ? { client_secret: auth.clientSecret } : {}),
|
|
122
|
+
}),
|
|
123
|
+
method: 'POST',
|
|
124
|
+
}),
|
|
125
|
+
)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/** Reads the account's address, the type of its owner, which the API lists first, and its realm. */
|
|
129
|
+
export function tempoAccount(account: TempoAccountResponse): TempoAccount {
|
|
130
|
+
return {
|
|
131
|
+
address: account.address,
|
|
132
|
+
owner: account.config.owners[0].type,
|
|
133
|
+
realm: { id: account.realm.id, name: account.realm.name },
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/** A Tempo Account as the API returns it, with the fields the package reads. */
|
|
138
|
+
export type TempoAccountResponse = {
|
|
139
|
+
/** The account's address, the same on every Tempo chain. */
|
|
140
|
+
address: `0x${string}`
|
|
141
|
+
/** The account's configuration, whose owners the API lists in order. */
|
|
142
|
+
config: {
|
|
143
|
+
/** The account's owners, each with the kind of key that holds it, such as `privy` or `webAuthn`. */
|
|
144
|
+
owners: readonly [{ type: string }, ...{ type: string }[]]
|
|
145
|
+
}
|
|
146
|
+
/** The realm the account belongs to, with its display name. */
|
|
147
|
+
realm: {
|
|
148
|
+
/** The realm ID: `default`, or one an app's settings name, such as `tempo-cash`. */
|
|
149
|
+
id: string
|
|
150
|
+
/** The realm's display name, such as `Tempo Cash`. */
|
|
151
|
+
name: string
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/** What Tempo ID's token endpoint returns. Redeeming a redirect's code adds its key authorization. */
|
|
156
|
+
export type TokenResponse = {
|
|
157
|
+
/** The access token, which authorizes the app's requests to its APIs. */
|
|
158
|
+
access_token: string
|
|
159
|
+
/** The Tempo Account the key acts for, present with `key_authorization`. */
|
|
160
|
+
account?: Key.Key['account'] | undefined
|
|
161
|
+
/** The access token's lifetime, in seconds. */
|
|
162
|
+
expires_in: number
|
|
163
|
+
/** The OIDC ID token, which names the user. A refresh may omit it. */
|
|
164
|
+
id_token?: string | undefined
|
|
165
|
+
/** The signed key authorization that the user approved with the code, if any. */
|
|
166
|
+
key_authorization?: KeyAuthorization.Rpc | undefined
|
|
167
|
+
/** Exchanges for new tokens through `Actions.refresh`. It rotates on every refresh. */
|
|
168
|
+
refresh_token?: string | undefined
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/** Reads the signed-in user from the ID token of `tokens`, which every sign-in returns. */
|
|
172
|
+
export function user(tokens: Tokens): User {
|
|
173
|
+
const claims = JSON.parse(
|
|
174
|
+
Base64.toString(tokens.idToken!.split('.')[1]!),
|
|
175
|
+
) as { email: string; sub: string }
|
|
176
|
+
return { email: claims.email, id: claims.sub }
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/** Reads a token response into `Tokens`. */
|
|
180
|
+
export function tokens(response: TokenResponse): Tokens {
|
|
181
|
+
return {
|
|
182
|
+
accessToken: response.access_token,
|
|
183
|
+
expiresAt: Date.now() + response.expires_in * 1000,
|
|
184
|
+
idToken: response.id_token,
|
|
185
|
+
refreshToken: response.refresh_token,
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Rethrows an error that came after a sign-in's code or passkey verified as a {@link RequestError}
|
|
191
|
+
* marked `signedIn`, since the user is signed in. A failure without a response, such as a network
|
|
192
|
+
* error, has status 0 and the original error as its `cause`.
|
|
193
|
+
*/
|
|
194
|
+
export function signedIn(error: unknown): never {
|
|
195
|
+
if (!(error instanceof RequestError))
|
|
196
|
+
throw new RequestError({
|
|
197
|
+
cause: error,
|
|
198
|
+
code: 'server_error',
|
|
199
|
+
message:
|
|
200
|
+
'Authorization failed after the sign-in, with no response from Tempo ID. The user is signed in, so authorize again.',
|
|
201
|
+
signedIn: true,
|
|
202
|
+
status: 0,
|
|
203
|
+
})
|
|
204
|
+
throw new RequestError({
|
|
205
|
+
code: error.code,
|
|
206
|
+
field: error.field,
|
|
207
|
+
message: error.message,
|
|
208
|
+
meta: error.meta,
|
|
209
|
+
reason: error.reason,
|
|
210
|
+
signedIn: true,
|
|
211
|
+
status: error.status,
|
|
212
|
+
uri: error.uri,
|
|
213
|
+
})
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/** Reads what Tempo ID returned for an authorization without a key: the tokens and the user. */
|
|
217
|
+
export function withoutKey(body: Headless): WithoutKey {
|
|
218
|
+
const tokens_ =
|
|
219
|
+
'accessToken' in body.tokens ? body.tokens : tokens(body.tokens)
|
|
220
|
+
return { ...tokens_, user: user(tokens_) }
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/** What an authorization without a key returns: the tokens and the user. */
|
|
224
|
+
export type WithoutKey = Omit<Authorization, 'account' | 'key'>
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authorizes the app for the user whom a headless sign-in just signed in, for `Actions.email.signIn`
|
|
3
|
+
* and `Actions.passkey.signIn`.
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Account } from 'viem/tempo'
|
|
7
|
+
import { type Auth, RequestError } from '../Auth.js'
|
|
8
|
+
import type { Authorization } from '../Authorization.js'
|
|
9
|
+
import type { Permissions } from '../Permissions.js'
|
|
10
|
+
import * as AccessKey from './accessKey.js'
|
|
11
|
+
import * as Api from './api.js'
|
|
12
|
+
import { request } from './request.js'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Sends `POST /v1/account`, which creates the user's first Tempo Account and returns the existing
|
|
16
|
+
* ones unchanged, then `POST /v1/authorize`. A sign-in without a key needs no account, so it sends
|
|
17
|
+
* the authorization alone. Each refusal is marked `signedIn`, since the user is signed in. An
|
|
18
|
+
* authorization for another user than `userId` throws `session_changed`, since another sign-in
|
|
19
|
+
* replaced the session in between.
|
|
20
|
+
*/
|
|
21
|
+
export async function authorize(
|
|
22
|
+
auth: Auth,
|
|
23
|
+
options: authorize.Options,
|
|
24
|
+
): Promise<Authorization | Api.WithoutKey> {
|
|
25
|
+
const { challenge, permissions } = options
|
|
26
|
+
// The user is signed in already, so every failure from here on, key generation included, is marked.
|
|
27
|
+
try {
|
|
28
|
+
const key =
|
|
29
|
+
options.key === false
|
|
30
|
+
? undefined
|
|
31
|
+
: await AccessKey.resolve(options.accessKey)
|
|
32
|
+
if (key)
|
|
33
|
+
await Api.json(
|
|
34
|
+
await Api.post(auth, '/v1/account', {
|
|
35
|
+
json: { client_id: auth.clientId },
|
|
36
|
+
}),
|
|
37
|
+
)
|
|
38
|
+
const body = await Api.json<Api.Headless>(
|
|
39
|
+
await Api.post(auth, '/v1/authorize', {
|
|
40
|
+
json: request(auth, {
|
|
41
|
+
accessKey: key?.accessKey,
|
|
42
|
+
challenge,
|
|
43
|
+
permissions,
|
|
44
|
+
}),
|
|
45
|
+
}),
|
|
46
|
+
)
|
|
47
|
+
const authorization = key
|
|
48
|
+
? Api.authorization(body, key)
|
|
49
|
+
: Api.withoutKey(body)
|
|
50
|
+
if (authorization.user.id !== options.userId)
|
|
51
|
+
throw new RequestError({
|
|
52
|
+
code: 'invalid_request',
|
|
53
|
+
message:
|
|
54
|
+
'Session changed: another sign-in replaced this one before the authorization. Sign in again.',
|
|
55
|
+
reason: 'session_changed',
|
|
56
|
+
status: 409,
|
|
57
|
+
})
|
|
58
|
+
return authorization
|
|
59
|
+
} catch (error) {
|
|
60
|
+
return Api.signedIn(error)
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export declare namespace authorize {
|
|
65
|
+
type Options = {
|
|
66
|
+
/** The key to authorize. Defaults to a new key. */
|
|
67
|
+
accessKey?: Account.Account | undefined
|
|
68
|
+
/** A message the key's witness binds. */
|
|
69
|
+
challenge?: string | undefined
|
|
70
|
+
/** Whether the sign-in authorizes an access key. Defaults to `true`. */
|
|
71
|
+
key?: boolean | undefined
|
|
72
|
+
/** What the key may do. */
|
|
73
|
+
permissions?: Permissions | undefined
|
|
74
|
+
/** The ID of the user whom the sign-in verified. */
|
|
75
|
+
userId: string
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The default `storage` in a browser: IndexedDB, which keeps a non-extractable `CryptoKey` without
|
|
3
|
+
* exporting it.
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Storage } from '../Storage.js'
|
|
7
|
+
|
|
8
|
+
/** Opens a store in the page's IndexedDB. */
|
|
9
|
+
export function create(): Storage {
|
|
10
|
+
const database = new Promise<IDBDatabase>((resolve, reject) => {
|
|
11
|
+
const request = indexedDB.open('tempo-id')
|
|
12
|
+
request.onupgradeneeded = () => request.result.createObjectStore(store)
|
|
13
|
+
request.onsuccess = () => resolve(request.result)
|
|
14
|
+
request.onerror = () => reject(request.error)
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
/** Runs one request against the store, and resolves with its result. */
|
|
18
|
+
async function run<value>(
|
|
19
|
+
mode: IDBTransactionMode,
|
|
20
|
+
fn: (objectStore: IDBObjectStore) => IDBRequest<value>,
|
|
21
|
+
) {
|
|
22
|
+
const objectStore = (await database)
|
|
23
|
+
.transaction(store, mode)
|
|
24
|
+
.objectStore(store)
|
|
25
|
+
return new Promise<value>((resolve, reject) => {
|
|
26
|
+
const request = fn(objectStore)
|
|
27
|
+
request.onsuccess = () => resolve(request.result)
|
|
28
|
+
request.onerror = () => reject(request.error)
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return {
|
|
33
|
+
getItem: (key) => run('readonly', (objectStore) => objectStore.get(key)),
|
|
34
|
+
async removeItem(key) {
|
|
35
|
+
await run('readwrite', (objectStore) => objectStore.delete(key))
|
|
36
|
+
},
|
|
37
|
+
async setItem(key, value) {
|
|
38
|
+
await run('readwrite', (objectStore) => objectStore.put(value, key))
|
|
39
|
+
},
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** The object store that holds every value. */
|
|
44
|
+
const store = 'store'
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds the authorization and key authorization requests the actions send, in Tempo ID's wire
|
|
3
|
+
* format. The root type check holds them to Tempo ID's routes.
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { Hex } from 'ox'
|
|
7
|
+
import type { Account } from 'viem/tempo'
|
|
8
|
+
import type { Auth } from '../Auth.js'
|
|
9
|
+
import type { Permissions } from '../Permissions.js'
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The authorization request, with the key authorization request when the sign-in requests a key, in
|
|
13
|
+
* Tempo ID's wire format.
|
|
14
|
+
*/
|
|
15
|
+
export function request(
|
|
16
|
+
auth: Auth,
|
|
17
|
+
options: {
|
|
18
|
+
/** The key to authorize. Without one, the request carries no key authorization. */
|
|
19
|
+
accessKey?: Account.Account | undefined
|
|
20
|
+
/** The user's Tempo Account the key acts for, in place of the one `accessKey` names. */
|
|
21
|
+
account?: `0x${string}` | undefined
|
|
22
|
+
/** A message the key's witness binds. */
|
|
23
|
+
challenge?: string | undefined
|
|
24
|
+
permissions?: Permissions | undefined
|
|
25
|
+
},
|
|
26
|
+
) {
|
|
27
|
+
const { accessKey, challenge } = options
|
|
28
|
+
return {
|
|
29
|
+
...(challenge === undefined ? {} : { challenge }),
|
|
30
|
+
client_id: auth.clientId,
|
|
31
|
+
...(accessKey
|
|
32
|
+
? { key_authorization: keyAuthorization(auth, { ...options, accessKey }) }
|
|
33
|
+
: {}),
|
|
34
|
+
redirect_uri:
|
|
35
|
+
auth.redirectUri ?? `${globalThis.location?.origin ?? auth.url}/`,
|
|
36
|
+
scope: auth.scope,
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The key authorization request, in Tempo ID's wire format. An access key account names its Tempo
|
|
42
|
+
* Account through `access`, and a plain key leaves it to Tempo ID.
|
|
43
|
+
*/
|
|
44
|
+
export function keyAuthorization(
|
|
45
|
+
auth: Auth,
|
|
46
|
+
options: {
|
|
47
|
+
/** The key to authorize. */
|
|
48
|
+
accessKey: Account.Account
|
|
49
|
+
/** The user's Tempo Account the key acts for, in place of the one `accessKey` names. */
|
|
50
|
+
account?: `0x${string}` | undefined
|
|
51
|
+
permissions?: Permissions | undefined
|
|
52
|
+
},
|
|
53
|
+
) {
|
|
54
|
+
const { accessKey, permissions = {} } = options
|
|
55
|
+
const account =
|
|
56
|
+
options.account ??
|
|
57
|
+
(accessKey.accessKeyAddress ? accessKey.address : undefined)
|
|
58
|
+
return {
|
|
59
|
+
...(account ? { account } : {}),
|
|
60
|
+
address: accessKey.accessKeyAddress ?? accessKey.address,
|
|
61
|
+
chainId: Hex.fromNumber(permissions.chainId ?? auth.chainId),
|
|
62
|
+
expiry: permissions.expiry,
|
|
63
|
+
keyType: accessKey.keyType,
|
|
64
|
+
limits: permissions.limits?.map(({ limit, period, token }) => ({
|
|
65
|
+
limit: Hex.fromNumber(limit),
|
|
66
|
+
...(period ? { period } : {}),
|
|
67
|
+
token,
|
|
68
|
+
})),
|
|
69
|
+
scopes: permissions.scopes,
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves where actions keep state across page loads: the instance's `storage`, or IndexedDB.
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
import type { Auth } from '../Auth.js'
|
|
6
|
+
import type { Storage } from '../Storage.js'
|
|
7
|
+
import * as IndexedDb from './indexedDb.js'
|
|
8
|
+
|
|
9
|
+
/** The default `storage`, opened on first use. */
|
|
10
|
+
let indexedDb: Storage | undefined
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Returns the instance's `storage`, or the page's IndexedDB. Returns `undefined` outside a browser
|
|
14
|
+
* when the instance names no `storage`.
|
|
15
|
+
*/
|
|
16
|
+
export function get(auth: Auth) {
|
|
17
|
+
if (auth.storage) return auth.storage
|
|
18
|
+
if (typeof indexedDB === 'undefined') return undefined
|
|
19
|
+
return (indexedDb ??= IndexedDb.create())
|
|
20
|
+
}
|
package/src/client.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The client for apps that sign users in through Tempo ID. It returns Viem access key accounts on
|
|
3
|
+
* their Tempo Accounts, and imports nothing from the server code.
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
export * as Actions from './client/Actions.js'
|
|
7
|
+
export * as Auth from './client/Auth.js'
|
|
8
|
+
export * as Authorization from './client/Authorization.js'
|
|
9
|
+
export * as Decorator from './client/Decorator.js'
|
|
10
|
+
export { tempoId } from './client/Decorator.js'
|
|
11
|
+
export * as Key from './client/Key.js'
|
|
12
|
+
export * as Pending from './client/Pending.js'
|
|
13
|
+
export * as Permissions from './client/Permissions.js'
|
|
14
|
+
export * as Provider from './client/Provider.js'
|
|
15
|
+
export * as Step from './client/Step.js'
|
|
16
|
+
export * as Storage from './client/Storage.js'
|
|
17
|
+
export * as TempoAccount from './client/TempoAccount.js'
|
|
18
|
+
export * as Tokens from './client/Tokens.js'
|
|
19
|
+
export * as User from './client/User.js'
|