@tempoxyz/id 0.0.0-stage → 0.0.0
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 +80 -2
- 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-11GtFGrq.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 +79 -3
- 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,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `tempo-id whoami`: shows the signed-in user's email and the Tempo Account of the stored access
|
|
3
|
+
* key, with the access token refreshed when it expires.
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { Cli } from 'incur'
|
|
7
|
+
import * as User from '../User.js'
|
|
8
|
+
|
|
9
|
+
export default Cli.command({
|
|
10
|
+
description: 'Show the signed-in user and Tempo Account.',
|
|
11
|
+
env: User.env,
|
|
12
|
+
async run(c) {
|
|
13
|
+
const Session = await User.loadSession()
|
|
14
|
+
if (!Session) return c.error(User.missingPeers)
|
|
15
|
+
|
|
16
|
+
const user = await Session.whoami({
|
|
17
|
+
home: c.env.TEMPO_HOME,
|
|
18
|
+
url: c.env.TEMPO_ID_URL,
|
|
19
|
+
})
|
|
20
|
+
if (!user) return c.error(User.signedOut)
|
|
21
|
+
return user
|
|
22
|
+
},
|
|
23
|
+
})
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tempo ID's actions. Each takes an instance from `Auth.create`. Each sign-in flow has its own
|
|
3
|
+
* namespace, `oauth` holds the standard OAuth endpoints for tokens an app holds, and the actions
|
|
4
|
+
* every flow shares sit at the top level.
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import type { Account } from 'viem/tempo'
|
|
8
|
+
import { type Auth, ChallengeWithoutKeyError } from './Auth.js'
|
|
9
|
+
import type { Authorization } from './Authorization.js'
|
|
10
|
+
import * as AccessKey from './internal/accessKey.js'
|
|
11
|
+
import * as Api from './internal/api.js'
|
|
12
|
+
import { request } from './internal/request.js'
|
|
13
|
+
import type { Permissions } from './Permissions.js'
|
|
14
|
+
import type { Tokens } from './Tokens.js'
|
|
15
|
+
|
|
16
|
+
export * as account from './actions/account.js'
|
|
17
|
+
export * as device from './actions/device.js'
|
|
18
|
+
export * as email from './actions/email.js'
|
|
19
|
+
export * as oauth from './actions/oauth.js'
|
|
20
|
+
export * as passkey from './actions/passkey.js'
|
|
21
|
+
export * as provider from './actions/provider.js'
|
|
22
|
+
export * as realm from './actions/realm.js'
|
|
23
|
+
export * as redirect from './actions/redirect.js'
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Authorizes a first-party app, which skips consent, for a user already signed in to Tempo ID, with
|
|
27
|
+
* `POST /v1/authorize`, from a page on its redirect URI's origin. Any other app fails with
|
|
28
|
+
* `rejected`, and authorizes through a redirect. Returns `undefined` without a session, so the app
|
|
29
|
+
* shows sign-in. The key must fit Tempo ID's headless ceiling. An `account` that the call names
|
|
30
|
+
* becomes the app's account for its later requests. With `key: false`, the call returns the tokens
|
|
31
|
+
* and the user alone.
|
|
32
|
+
*
|
|
33
|
+
* A user who holds no Tempo Account in the app's realms receives `rejected`, since the call creates
|
|
34
|
+
* none. `Actions.account.get` creates the first one.
|
|
35
|
+
*
|
|
36
|
+
* Throws a `RequestError` with reason `webauthn_required` when a passkey owns the account, since a
|
|
37
|
+
* passkey signs a key only on a page that shows it. `Actions.redirect.start` then authorizes the
|
|
38
|
+
* key on Tempo ID's pages.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* const authorization = await Actions.authorize(auth)
|
|
43
|
+
* if (!authorization) showSignIn()
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export async function authorize<
|
|
47
|
+
const chainId extends number = number,
|
|
48
|
+
const key extends boolean = true,
|
|
49
|
+
>(
|
|
50
|
+
auth: Auth,
|
|
51
|
+
options: authorize.Options<chainId, key> = {},
|
|
52
|
+
): Promise<authorize.ReturnType<chainId, key>> {
|
|
53
|
+
// A challenge rides in the key, so a call without one refuses it before any request.
|
|
54
|
+
if (options.key === false && options.challenge !== undefined)
|
|
55
|
+
throw new ChallengeWithoutKeyError()
|
|
56
|
+
|
|
57
|
+
// Checking the session first avoids a failed request for a visitor without one.
|
|
58
|
+
const session = await Api.json<{ user: unknown }>(
|
|
59
|
+
await (auth.fetch ?? fetch)(new URL('/v1/auth/session', auth.url), {
|
|
60
|
+
credentials: 'include',
|
|
61
|
+
}),
|
|
62
|
+
)
|
|
63
|
+
if (!session.user) return undefined
|
|
64
|
+
|
|
65
|
+
const key =
|
|
66
|
+
options.key === false
|
|
67
|
+
? undefined
|
|
68
|
+
: await AccessKey.resolve(options.accessKey)
|
|
69
|
+
const response = await Api.post(auth, '/v1/authorize', {
|
|
70
|
+
json: request(auth, {
|
|
71
|
+
accessKey: key?.accessKey,
|
|
72
|
+
account: options.account,
|
|
73
|
+
challenge: options.challenge,
|
|
74
|
+
permissions: options.permissions,
|
|
75
|
+
}),
|
|
76
|
+
})
|
|
77
|
+
// The session can end between the two requests.
|
|
78
|
+
if (response.status === 401) return undefined
|
|
79
|
+
const body = await Api.json<Api.Headless>(response)
|
|
80
|
+
// `key` decides both the type and the runtime value of the result.
|
|
81
|
+
return (
|
|
82
|
+
key ? Api.authorization(body, key) : Api.withoutKey(body)
|
|
83
|
+
) as authorize.ReturnType<chainId, key>
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export declare namespace authorize {
|
|
87
|
+
type Options<chainId extends number = number, key extends boolean = true> = {
|
|
88
|
+
/**
|
|
89
|
+
* The key to authorize, as a Viem account. Its `access` names the Tempo Account, which
|
|
90
|
+
* defaults to the one the app selected, or the user's oldest. Defaults to a new key.
|
|
91
|
+
*/
|
|
92
|
+
accessKey?: Account.Account | undefined
|
|
93
|
+
/**
|
|
94
|
+
* The address of the user's Tempo Account the key acts for, such as the one that
|
|
95
|
+
* `Actions.account.get` returns. Takes the place of `accessKey`'s `access`, and becomes
|
|
96
|
+
* the app's account for its later requests that name none.
|
|
97
|
+
*/
|
|
98
|
+
account?: `0x${string}` | undefined
|
|
99
|
+
/**
|
|
100
|
+
* A message the owner's signature binds, such as a sign-in challenge the app's backend issued.
|
|
101
|
+
* Tempo ID binds its EIP-191 hash as the key authorization's `witness`. Only an app with the
|
|
102
|
+
* `tempo-id:sign` scope may send one, and only with a key.
|
|
103
|
+
*/
|
|
104
|
+
challenge?: ([key] extends [false] ? never : string) | undefined
|
|
105
|
+
/**
|
|
106
|
+
* Whether the call authorizes an access key. With `false`, it returns the tokens and the user
|
|
107
|
+
* alone. Defaults to `true`.
|
|
108
|
+
*/
|
|
109
|
+
key?: key | undefined
|
|
110
|
+
/** What the key may do. It must fit the headless ceiling, which fills what it leaves out. */
|
|
111
|
+
permissions?: Permissions<chainId> | undefined
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* The authorization, or the tokens and the user alone with `key: false`. A `boolean` `key`
|
|
116
|
+
* returns either. `undefined` without a session.
|
|
117
|
+
*/
|
|
118
|
+
type ReturnType<
|
|
119
|
+
chainId extends number = number,
|
|
120
|
+
key extends boolean = true,
|
|
121
|
+
> =
|
|
122
|
+
| (key extends false
|
|
123
|
+
? Omit<Authorization<chainId>, 'account' | 'key'>
|
|
124
|
+
: Authorization<chainId>)
|
|
125
|
+
| undefined
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Exchanges a refresh token for new tokens. Refresh tokens rotate, so store the new one.
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```ts
|
|
133
|
+
* const tokens = await Actions.refresh(auth, {
|
|
134
|
+
* refreshToken: saved.refreshToken,
|
|
135
|
+
* })
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
export async function refresh(
|
|
139
|
+
auth: Auth,
|
|
140
|
+
options: refresh.Options,
|
|
141
|
+
): Promise<Tokens> {
|
|
142
|
+
return Api.tokens(
|
|
143
|
+
await Api.token(auth, {
|
|
144
|
+
grant_type: 'refresh_token',
|
|
145
|
+
refresh_token: options.refreshToken,
|
|
146
|
+
}),
|
|
147
|
+
)
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export declare namespace refresh {
|
|
151
|
+
type Options = {
|
|
152
|
+
/** The latest refresh token. Each refresh rotates it. */
|
|
153
|
+
refreshToken: string
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Ends the user's Tempo ID session, which signs them out of every app that relies on it.
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* ```ts
|
|
162
|
+
* await Actions.signOut(auth)
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
export async function signOut(auth: Auth): Promise<void> {
|
|
166
|
+
// A JSON body keeps the request out of Tempo ID's CSRF check for cross-site form posts.
|
|
167
|
+
await Api.json(await Api.post(auth, '/v1/auth/logout', { json: {} }))
|
|
168
|
+
}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A Tempo ID instance, which every action takes. Create one with {@link create}, then pass it
|
|
3
|
+
* to each action in `Actions`. Every sign-in returns an `Authorization`: the user's tokens and a
|
|
4
|
+
* Viem access key account.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { Actions, Auth } from '@tempoxyz/id/client'
|
|
9
|
+
* import { Expiry, Scopes } from 'viem/tempo'
|
|
10
|
+
* import { tempo } from 'viem/tempo/chains'
|
|
11
|
+
* import * as Tokens from 'viem/tokens'
|
|
12
|
+
*
|
|
13
|
+
* // OUSD has its mainnet address on every Tempo chain.
|
|
14
|
+
* const ousd = Tokens.ousd(tempo.id).address
|
|
15
|
+
*
|
|
16
|
+
* const auth = Auth.create({ clientId: 'client_…', dev: true })
|
|
17
|
+
*
|
|
18
|
+
* const authorization = await Actions.authorize(auth, {
|
|
19
|
+
* permissions: {
|
|
20
|
+
* expiry: Expiry.days(1),
|
|
21
|
+
* limits: [{ limit: 10_000_000n, token: ousd }],
|
|
22
|
+
* scopes: [Scopes.tip20(ousd).transfer()],
|
|
23
|
+
* },
|
|
24
|
+
* })
|
|
25
|
+
* ```
|
|
26
|
+
* @module
|
|
27
|
+
*/
|
|
28
|
+
import type { Account as ViemAccount } from 'viem/tempo'
|
|
29
|
+
import { tempo, tempoTestnet } from 'viem/tempo/chains'
|
|
30
|
+
import * as AccountState from './internal/account.js'
|
|
31
|
+
import type { Storage } from './Storage.js'
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The account of a client extended with `tempoId`: an access key account that each sign-in sets
|
|
35
|
+
* and sign-out empties. Reading it while signed out throws {@link SignedOutError}.
|
|
36
|
+
*/
|
|
37
|
+
export type Account = ViemAccount.AccessKeyAccount & {
|
|
38
|
+
/** What the account signs as, which only the `tempoId` extension reads. */
|
|
39
|
+
readonly [AccountState.key]: AccountState.State
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** A Tempo ID instance, which every action takes. */
|
|
43
|
+
export type Auth = {
|
|
44
|
+
/** The chain the app's keys act on, unless an action's `permissions` names another. */
|
|
45
|
+
chainId: number
|
|
46
|
+
/** The app's client ID, from its registration as an OAuth app in Tempo ID. */
|
|
47
|
+
clientId: string
|
|
48
|
+
/** The app's client secret. Only a backend holds one. */
|
|
49
|
+
clientSecret?: string | undefined
|
|
50
|
+
/** Calls Tempo ID. Defaults to the global `fetch`. */
|
|
51
|
+
fetch?: typeof globalThis.fetch | undefined
|
|
52
|
+
/** Where Tempo ID redirects back to. Defaults to the page's origin in a browser. */
|
|
53
|
+
redirectUri?: string | undefined
|
|
54
|
+
/** The scopes the app's tokens carry. */
|
|
55
|
+
scope: string
|
|
56
|
+
/**
|
|
57
|
+
* Where `Actions.redirect.start` keeps its state until Tempo ID redirects back. It must keep
|
|
58
|
+
* objects as they are, since a browser key is a `CryptoKey`. Defaults to IndexedDB.
|
|
59
|
+
*/
|
|
60
|
+
storage?: Storage | undefined
|
|
61
|
+
/** Where Tempo ID runs, such as `https://id.tempo.xyz`. */
|
|
62
|
+
url: string
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** An action received a `challenge` with `key: false`, and a challenge rides in a key. */
|
|
66
|
+
export class ChallengeWithoutKeyError extends Error {
|
|
67
|
+
override readonly name = 'Auth.ChallengeWithoutKeyError'
|
|
68
|
+
|
|
69
|
+
constructor() {
|
|
70
|
+
super(
|
|
71
|
+
'A challenge rides in the key authorization, so a sign-in with `key: false` takes none. Remove `challenge`, or request a key.',
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** A request Tempo ID refused, with its status and message. */
|
|
77
|
+
export class RequestError extends Error {
|
|
78
|
+
override readonly name = 'Auth.RequestError'
|
|
79
|
+
/** The OAuth error code, such as `invalid_authorization_details`. */
|
|
80
|
+
readonly code: string
|
|
81
|
+
/** The request field at fault, as a dotted path. */
|
|
82
|
+
readonly field: string | undefined
|
|
83
|
+
/** The values the refusal compared, such as `limit` and `maximum`. Base units are decimal strings. */
|
|
84
|
+
readonly meta: Readonly<Record<string, number | string>> | undefined
|
|
85
|
+
/** A stable name for the refusal, to branch on. */
|
|
86
|
+
readonly reason: RequestError.Reason | undefined
|
|
87
|
+
/**
|
|
88
|
+
* Whether a sign-in's code or passkey verified before Tempo ID refused the authorization, so the
|
|
89
|
+
* user is signed in. `false` for every other refusal.
|
|
90
|
+
*/
|
|
91
|
+
readonly signedIn: boolean
|
|
92
|
+
/** The HTTP status of Tempo ID's response, or 0 for a request that received none. */
|
|
93
|
+
readonly status: number
|
|
94
|
+
/** The page that explains the error. */
|
|
95
|
+
readonly uri: string | undefined
|
|
96
|
+
|
|
97
|
+
constructor(options: RequestError.Options) {
|
|
98
|
+
super(options.message, { cause: options.cause })
|
|
99
|
+
this.code = options.code
|
|
100
|
+
this.field = options.field
|
|
101
|
+
this.meta = options.meta
|
|
102
|
+
this.reason = options.reason
|
|
103
|
+
this.signedIn = options.signedIn ?? false
|
|
104
|
+
this.status = options.status
|
|
105
|
+
this.uri = options.uri
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export declare namespace RequestError {
|
|
110
|
+
type Options = {
|
|
111
|
+
/** The error that caused this one, such as a network failure. */
|
|
112
|
+
cause?: unknown
|
|
113
|
+
/** The OAuth error code, such as `invalid_authorization_details`. */
|
|
114
|
+
code: string
|
|
115
|
+
/** The request field at fault, as a dotted path. */
|
|
116
|
+
field?: string | undefined
|
|
117
|
+
/** The fault and its fix, from `error_description`. */
|
|
118
|
+
message: string
|
|
119
|
+
/** The values the refusal compared, such as `limit` and `maximum`. Base units are decimal strings. */
|
|
120
|
+
meta?: Readonly<Record<string, number | string>> | undefined
|
|
121
|
+
/** A stable name for the refusal, to branch on. Absent from the issuer's own errors. */
|
|
122
|
+
reason?: Reason | undefined
|
|
123
|
+
/** Whether a sign-in's code or passkey verified before the refusal. Defaults to `false`. */
|
|
124
|
+
signedIn?: boolean | undefined
|
|
125
|
+
/** The HTTP status of Tempo ID's response. */
|
|
126
|
+
status: number
|
|
127
|
+
/** The page that explains the error, from `error_uri`. */
|
|
128
|
+
uri?: string | undefined
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** Each refusal's stable name. `docs/errors.md` explains each one. */
|
|
132
|
+
type Reason =
|
|
133
|
+
| 'already_decided'
|
|
134
|
+
| 'approval_pending'
|
|
135
|
+
| 'authorization_expired'
|
|
136
|
+
| 'body_too_large'
|
|
137
|
+
| 'challenge_not_permitted'
|
|
138
|
+
| 'cross_site_request'
|
|
139
|
+
| 'device_code_expired'
|
|
140
|
+
| 'duplicate_limit'
|
|
141
|
+
| 'duplicate_scope'
|
|
142
|
+
| 'empty_limits'
|
|
143
|
+
| 'empty_scopes'
|
|
144
|
+
| 'expiry_exceeds_maximum'
|
|
145
|
+
| 'expiry_passed'
|
|
146
|
+
| 'foreign_account'
|
|
147
|
+
| 'foreign_origin'
|
|
148
|
+
| 'invalid_chain'
|
|
149
|
+
| 'invalid_code'
|
|
150
|
+
| 'invalid_expiry'
|
|
151
|
+
| 'invalid_field'
|
|
152
|
+
| 'invalid_id_token_hint'
|
|
153
|
+
| 'invalid_origin'
|
|
154
|
+
| 'invalid_period'
|
|
155
|
+
| 'invalid_public_key'
|
|
156
|
+
| 'invalid_recipients'
|
|
157
|
+
| 'limit_exceeds_maximum'
|
|
158
|
+
| 'logout_not_permitted'
|
|
159
|
+
| 'malformed_body'
|
|
160
|
+
| 'missing_code_challenge'
|
|
161
|
+
| 'missing_key'
|
|
162
|
+
| 'missing_recipients'
|
|
163
|
+
| 'passkey_link_expired'
|
|
164
|
+
| 'passkey_not_permitted'
|
|
165
|
+
| 'post_logout_redirect_not_permitted'
|
|
166
|
+
| 'polling_too_fast'
|
|
167
|
+
| 'rate_limited'
|
|
168
|
+
| 'rejected'
|
|
169
|
+
| 'request_denied'
|
|
170
|
+
| 'return_to_not_permitted'
|
|
171
|
+
| 'scope_without_limit'
|
|
172
|
+
| 'session_changed'
|
|
173
|
+
| 'session_required'
|
|
174
|
+
| 'unexpected'
|
|
175
|
+
| 'unknown_code'
|
|
176
|
+
| 'unknown_endpoint'
|
|
177
|
+
| 'unknown_provider'
|
|
178
|
+
| 'unsupported_call'
|
|
179
|
+
| 'unsupported_token'
|
|
180
|
+
| 'upstream_unavailable'
|
|
181
|
+
| 'webauthn_rejected'
|
|
182
|
+
| 'webauthn_required'
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/** A client's {@link Account} read before a sign-in set it, or after sign-out emptied it. */
|
|
186
|
+
export class SignedOutError extends Error {
|
|
187
|
+
override readonly name = 'Auth.SignedOutError'
|
|
188
|
+
|
|
189
|
+
constructor() {
|
|
190
|
+
super(
|
|
191
|
+
"The client's account is signed out. Sign in through `client.auth` before sending.",
|
|
192
|
+
)
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Creates the account of a client extended with `tempoId`. It holds no key until a sign-in sets
|
|
198
|
+
* it, and reading it before then throws {@link SignedOutError}, so a transaction fails before it
|
|
199
|
+
* reaches the node. Each client needs its own, since the account signs as one user.
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* ```ts
|
|
203
|
+
* const client = createClient({
|
|
204
|
+
* account: Auth.account(),
|
|
205
|
+
* chain: tempoTestnet,
|
|
206
|
+
* }).extend(tempoId({ clientId: 'client_…' }))
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
export function account(): Account {
|
|
210
|
+
const state: AccountState.State = { account: undefined }
|
|
211
|
+
// Viem reads a client's account only when an action runs, through property reads, `in` checks,
|
|
212
|
+
// and spreads. Each trap reads through to the account that the latest sign-in set.
|
|
213
|
+
const proxy = new Proxy(
|
|
214
|
+
{},
|
|
215
|
+
{
|
|
216
|
+
get(_, key) {
|
|
217
|
+
if (key === AccountState.key) return state
|
|
218
|
+
if (state.account) return Reflect.get(state.account, key)
|
|
219
|
+
// Promise resolution, serialization, and inspection probe these, which must not throw.
|
|
220
|
+
if (typeof key === 'symbol' || key === 'then' || key === 'toJSON')
|
|
221
|
+
return undefined
|
|
222
|
+
throw new SignedOutError()
|
|
223
|
+
},
|
|
224
|
+
getOwnPropertyDescriptor(_, key) {
|
|
225
|
+
if (!state.account) return undefined
|
|
226
|
+
const descriptor = Reflect.getOwnPropertyDescriptor(state.account, key)
|
|
227
|
+
// A proxy may report a property its empty target lacks only as configurable.
|
|
228
|
+
return descriptor && { ...descriptor, configurable: true }
|
|
229
|
+
},
|
|
230
|
+
has: (_, key) =>
|
|
231
|
+
key === AccountState.key ||
|
|
232
|
+
(state.account !== undefined && Reflect.has(state.account, key)),
|
|
233
|
+
ownKeys: () => (state.account ? Reflect.ownKeys(state.account) : []),
|
|
234
|
+
},
|
|
235
|
+
)
|
|
236
|
+
return proxy as Account
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Creates a Tempo ID instance.
|
|
241
|
+
*
|
|
242
|
+
* @example
|
|
243
|
+
* ```ts
|
|
244
|
+
* const auth = Auth.create({ clientId: 'client_…' })
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
export function create(options: create.Options): Auth {
|
|
248
|
+
const { chainId, dev, scope = 'offline_access', url, ...rest } = options
|
|
249
|
+
// Every authorization reads the user from the ID token, which needs `openid` and `email`.
|
|
250
|
+
const scopes = scope.split(' ').filter(Boolean)
|
|
251
|
+
return {
|
|
252
|
+
...rest,
|
|
253
|
+
chainId: chainId ?? (dev ? tempoTestnet.id : tempo.id),
|
|
254
|
+
scope: [...new Set(['openid', 'email', ...scopes])].join(' '),
|
|
255
|
+
url: url ?? (dev ? urls.dev : urls.production),
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
export declare namespace create {
|
|
260
|
+
type Options = Omit<Auth, 'chainId' | 'scope' | 'url'> & {
|
|
261
|
+
/**
|
|
262
|
+
* The chain the app's keys act on, such as `client.chain.id`. Defaults to Tempo mainnet, or to
|
|
263
|
+
* Tempo testnet with `dev`.
|
|
264
|
+
*/
|
|
265
|
+
chainId?: number | undefined
|
|
266
|
+
/**
|
|
267
|
+
* Whether to use Tempo ID's development deployment, `https://id.tehq.dev`, with keys on
|
|
268
|
+
* Tempo testnet unless `chainId` names another chain. Defaults to `false`.
|
|
269
|
+
*/
|
|
270
|
+
dev?: boolean | undefined
|
|
271
|
+
/**
|
|
272
|
+
* Scopes the app's tokens carry beyond `openid` and `email`, which every instance includes.
|
|
273
|
+
* Defaults to `offline_access`, for a refresh token.
|
|
274
|
+
*/
|
|
275
|
+
scope?: string | undefined
|
|
276
|
+
/** Where Tempo ID runs. Defaults to `https://id.tempo.xyz`, or `https://id.tehq.dev` with `dev`. */
|
|
277
|
+
url?: string | undefined
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/** Where Tempo ID runs unless `create` receives a `url`. */
|
|
282
|
+
const urls = {
|
|
283
|
+
dev: 'https://id.tehq.dev',
|
|
284
|
+
production: 'https://id.tempo.xyz',
|
|
285
|
+
} as const
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What every sign-in returns: the app's tokens for Tempo APIs, its access key, and the user.
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
import type * as Key from './Key.js'
|
|
6
|
+
import type { Tokens } from './Tokens.js'
|
|
7
|
+
import type { User } from './User.js'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* What every sign-in returns: the app's tokens for Tempo APIs, with its access key and the user.
|
|
11
|
+
* `chainId` is the key's chain, as a literal type when the sign-in's `permissions` named one.
|
|
12
|
+
*/
|
|
13
|
+
export type Authorization<chainId extends number = number> = Tokens & {
|
|
14
|
+
/** The user's Tempo Account, as a Viem account that signs with the app's access key. */
|
|
15
|
+
account: ReturnType<typeof Key.toAccount>
|
|
16
|
+
/** The same key as data, for apps that store it and rebuild it with `Key.toAccount`. */
|
|
17
|
+
key: Key.Key<chainId>
|
|
18
|
+
/** The signed-in user, from the ID token. */
|
|
19
|
+
user: User
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Instantiates a {@link Authorization}.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const authorization = Authorization.from({ ...saved, account: Key.toAccount(saved.key) })
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export function from<chainId extends number = number>(
|
|
31
|
+
value: Authorization<chainId>,
|
|
32
|
+
): Authorization<chainId> {
|
|
33
|
+
return value
|
|
34
|
+
}
|