@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,371 @@
|
|
|
1
|
+
import * as ErrorResponse from './ErrorResponse.js';
|
|
2
|
+
import type * as KeyAuthorization from './KeyAuthorization.js';
|
|
3
|
+
import type * as PendingKey from './PendingKey.js';
|
|
4
|
+
import type * as Realm from './Realm.js';
|
|
5
|
+
declare const AlreadyDecidedError_base: {
|
|
6
|
+
new (options: ErrorResponse.define.Options): {
|
|
7
|
+
message: string;
|
|
8
|
+
stack?: string;
|
|
9
|
+
cause?: unknown;
|
|
10
|
+
readonly res?: Response;
|
|
11
|
+
readonly status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
12
|
+
getResponse(): Response;
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly response: Omit<{
|
|
15
|
+
error: string;
|
|
16
|
+
error_description: string;
|
|
17
|
+
error_uri: string;
|
|
18
|
+
field?: string | undefined;
|
|
19
|
+
meta?: Readonly<Record<string, string | number>> | undefined;
|
|
20
|
+
reason: string;
|
|
21
|
+
request_id?: string | undefined;
|
|
22
|
+
}, "error" | "reason"> & {
|
|
23
|
+
error: "invalid_request";
|
|
24
|
+
reason: "already_decided";
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
readonly reason: "already_decided";
|
|
28
|
+
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
|
29
|
+
prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
|
|
30
|
+
stackTraceLimit: number;
|
|
31
|
+
};
|
|
32
|
+
/** The user code was already approved or denied. */
|
|
33
|
+
export declare class AlreadyDecidedError extends AlreadyDecidedError_base {
|
|
34
|
+
readonly name = "Device.AlreadyDecidedError";
|
|
35
|
+
constructor();
|
|
36
|
+
}
|
|
37
|
+
declare const ApprovalPendingError_base: {
|
|
38
|
+
new (options: ErrorResponse.define.Options): {
|
|
39
|
+
message: string;
|
|
40
|
+
stack?: string;
|
|
41
|
+
cause?: unknown;
|
|
42
|
+
readonly res?: Response;
|
|
43
|
+
readonly status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
44
|
+
getResponse(): Response;
|
|
45
|
+
readonly name: string;
|
|
46
|
+
readonly response: Omit<{
|
|
47
|
+
error: string;
|
|
48
|
+
error_description: string;
|
|
49
|
+
error_uri: string;
|
|
50
|
+
field?: string | undefined;
|
|
51
|
+
meta?: Readonly<Record<string, string | number>> | undefined;
|
|
52
|
+
reason: string;
|
|
53
|
+
request_id?: string | undefined;
|
|
54
|
+
}, "error" | "reason"> & {
|
|
55
|
+
error: "authorization_pending";
|
|
56
|
+
reason: "approval_pending";
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
readonly reason: "approval_pending";
|
|
60
|
+
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
|
61
|
+
prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
|
|
62
|
+
stackTraceLimit: number;
|
|
63
|
+
};
|
|
64
|
+
/** The user did not decide the device code yet. */
|
|
65
|
+
export declare class ApprovalPendingError extends ApprovalPendingError_base {
|
|
66
|
+
readonly name = "Device.ApprovalPendingError";
|
|
67
|
+
constructor();
|
|
68
|
+
}
|
|
69
|
+
declare const DeviceCodeExpiredError_base: {
|
|
70
|
+
new (options: ErrorResponse.define.Options): {
|
|
71
|
+
message: string;
|
|
72
|
+
stack?: string;
|
|
73
|
+
cause?: unknown;
|
|
74
|
+
readonly res?: Response;
|
|
75
|
+
readonly status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
76
|
+
getResponse(): Response;
|
|
77
|
+
readonly name: string;
|
|
78
|
+
readonly response: Omit<{
|
|
79
|
+
error: string;
|
|
80
|
+
error_description: string;
|
|
81
|
+
error_uri: string;
|
|
82
|
+
field?: string | undefined;
|
|
83
|
+
meta?: Readonly<Record<string, string | number>> | undefined;
|
|
84
|
+
reason: string;
|
|
85
|
+
request_id?: string | undefined;
|
|
86
|
+
}, "error" | "reason"> & {
|
|
87
|
+
error: "expired_token";
|
|
88
|
+
reason: "device_code_expired";
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
readonly reason: "device_code_expired";
|
|
92
|
+
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
|
93
|
+
prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
|
|
94
|
+
stackTraceLimit: number;
|
|
95
|
+
};
|
|
96
|
+
/** The device code is unknown, expired, or already redeemed. */
|
|
97
|
+
export declare class DeviceCodeExpiredError extends DeviceCodeExpiredError_base {
|
|
98
|
+
readonly name = "Device.DeviceCodeExpiredError";
|
|
99
|
+
constructor();
|
|
100
|
+
}
|
|
101
|
+
declare const PollingTooFastError_base: {
|
|
102
|
+
new (options: ErrorResponse.define.Options): {
|
|
103
|
+
message: string;
|
|
104
|
+
stack?: string;
|
|
105
|
+
cause?: unknown;
|
|
106
|
+
readonly res?: Response;
|
|
107
|
+
readonly status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
108
|
+
getResponse(): Response;
|
|
109
|
+
readonly name: string;
|
|
110
|
+
readonly response: Omit<{
|
|
111
|
+
error: string;
|
|
112
|
+
error_description: string;
|
|
113
|
+
error_uri: string;
|
|
114
|
+
field?: string | undefined;
|
|
115
|
+
meta?: Readonly<Record<string, string | number>> | undefined;
|
|
116
|
+
reason: string;
|
|
117
|
+
request_id?: string | undefined;
|
|
118
|
+
}, "error" | "reason"> & {
|
|
119
|
+
error: "slow_down";
|
|
120
|
+
reason: "polling_too_fast";
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
readonly reason: "polling_too_fast";
|
|
124
|
+
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
|
125
|
+
prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
|
|
126
|
+
stackTraceLimit: number;
|
|
127
|
+
};
|
|
128
|
+
/** The device polled before its interval passed. */
|
|
129
|
+
export declare class PollingTooFastError extends PollingTooFastError_base {
|
|
130
|
+
readonly name = "Device.PollingTooFastError";
|
|
131
|
+
constructor();
|
|
132
|
+
}
|
|
133
|
+
declare const RequestDeniedError_base: {
|
|
134
|
+
new (options: ErrorResponse.define.Options): {
|
|
135
|
+
message: string;
|
|
136
|
+
stack?: string;
|
|
137
|
+
cause?: unknown;
|
|
138
|
+
readonly res?: Response;
|
|
139
|
+
readonly status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
140
|
+
getResponse(): Response;
|
|
141
|
+
readonly name: string;
|
|
142
|
+
readonly response: Omit<{
|
|
143
|
+
error: string;
|
|
144
|
+
error_description: string;
|
|
145
|
+
error_uri: string;
|
|
146
|
+
field?: string | undefined;
|
|
147
|
+
meta?: Readonly<Record<string, string | number>> | undefined;
|
|
148
|
+
reason: string;
|
|
149
|
+
request_id?: string | undefined;
|
|
150
|
+
}, "error" | "reason"> & {
|
|
151
|
+
error: "access_denied";
|
|
152
|
+
reason: "request_denied";
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
readonly reason: "request_denied";
|
|
156
|
+
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
|
157
|
+
prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
|
|
158
|
+
stackTraceLimit: number;
|
|
159
|
+
};
|
|
160
|
+
/** The user denied the device code. */
|
|
161
|
+
export declare class RequestDeniedError extends RequestDeniedError_base {
|
|
162
|
+
readonly name = "Device.RequestDeniedError";
|
|
163
|
+
constructor();
|
|
164
|
+
}
|
|
165
|
+
declare const UnknownCodeError_base: {
|
|
166
|
+
new (options: ErrorResponse.define.Options): {
|
|
167
|
+
message: string;
|
|
168
|
+
stack?: string;
|
|
169
|
+
cause?: unknown;
|
|
170
|
+
readonly res?: Response;
|
|
171
|
+
readonly status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
172
|
+
getResponse(): Response;
|
|
173
|
+
readonly name: string;
|
|
174
|
+
readonly response: Omit<{
|
|
175
|
+
error: string;
|
|
176
|
+
error_description: string;
|
|
177
|
+
error_uri: string;
|
|
178
|
+
field?: string | undefined;
|
|
179
|
+
meta?: Readonly<Record<string, string | number>> | undefined;
|
|
180
|
+
reason: string;
|
|
181
|
+
request_id?: string | undefined;
|
|
182
|
+
}, "error" | "reason"> & {
|
|
183
|
+
error: "invalid_request";
|
|
184
|
+
reason: "unknown_code";
|
|
185
|
+
};
|
|
186
|
+
};
|
|
187
|
+
readonly reason: "unknown_code";
|
|
188
|
+
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
|
189
|
+
prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
|
|
190
|
+
stackTraceLimit: number;
|
|
191
|
+
};
|
|
192
|
+
/** The user code is wrong or expired. */
|
|
193
|
+
export declare class UnknownCodeError extends UnknownCodeError_base {
|
|
194
|
+
readonly name = "Device.UnknownCodeError";
|
|
195
|
+
constructor();
|
|
196
|
+
}
|
|
197
|
+
/** What the CLI reported with a device code, and the code's state, as the device page shows them. */
|
|
198
|
+
export type Request = {
|
|
199
|
+
/** The message whose EIP-191 hash is the key's witness. Absent for a request without one. */
|
|
200
|
+
challenge?: string | undefined;
|
|
201
|
+
/** The client ID of the app that requested the code. */
|
|
202
|
+
clientId: string;
|
|
203
|
+
/** When the CLI requested the code. */
|
|
204
|
+
createdAt: Date;
|
|
205
|
+
/**
|
|
206
|
+
* The name that the CLI reported, such as its hostname. Absent for a code from `POST /device/code`,
|
|
207
|
+
* which reports none.
|
|
208
|
+
*/
|
|
209
|
+
device?: string | undefined;
|
|
210
|
+
/** The ID of the `device_code` row. */
|
|
211
|
+
id: string;
|
|
212
|
+
/** The CLI's IP address. Absent when it is unknown. */
|
|
213
|
+
ip?: string | undefined;
|
|
214
|
+
/**
|
|
215
|
+
* The key that the CLI requested, with every default filled and the challenge bound as its
|
|
216
|
+
* witness. Absent for a request without a key.
|
|
217
|
+
*/
|
|
218
|
+
key?: KeyAuthorization.Key | undefined;
|
|
219
|
+
/** The CLI's city and country, from its IP address. Absent when they are unknown. */
|
|
220
|
+
location?: string | undefined;
|
|
221
|
+
/** Whether the user approved or denied the code. `pending` until the user decides. */
|
|
222
|
+
status: 'approved' | 'denied' | 'pending';
|
|
223
|
+
/** The user code, as the pages show it, such as `BCDF-GHJK`. */
|
|
224
|
+
userCode: string;
|
|
225
|
+
/** The ID of the user whom the code is bound to, the first to read or decide it. Absent until then. */
|
|
226
|
+
userId?: string | undefined;
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* The client ID of the app that a device grant of `/v1/device/authorize` signs in to without a
|
|
230
|
+
* `client_id`. `tempo-id login` uses it.
|
|
231
|
+
*/
|
|
232
|
+
export declare const clientId = "tempo-cli";
|
|
233
|
+
/** The scopes of every device grant of `/v1/device/authorize`. */
|
|
234
|
+
export declare const scope = "openid email offline_access";
|
|
235
|
+
/** Seconds that a device code lasts. */
|
|
236
|
+
export declare const lifetime: number;
|
|
237
|
+
/** Seconds that a CLI waits between polls. */
|
|
238
|
+
export declare const interval = 5;
|
|
239
|
+
/**
|
|
240
|
+
* Returns the client ID of the app that requested the live user code `userCode`, as
|
|
241
|
+
* {@link normalize} returns it, while the code is pending and bound to no user. Returns `undefined`
|
|
242
|
+
* for any other code, so a sign-in that returns to the device page reveals nothing about a code that
|
|
243
|
+
* is unknown, expired, decided, or held. The read binds nothing.
|
|
244
|
+
*/
|
|
245
|
+
export declare function client(db: Realm.Database, options: client.Options): Promise<string | undefined>;
|
|
246
|
+
export declare namespace client {
|
|
247
|
+
type Options = {
|
|
248
|
+
/** The user code, as {@link normalize} returns it. */
|
|
249
|
+
userCode: string;
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Stores what the CLI reported with the device code whose row has `id`, and the key that it
|
|
254
|
+
* requested, until the code expires at `expiresAt`.
|
|
255
|
+
*/
|
|
256
|
+
export declare function create(db: Realm.Database, options: create.Options): Promise<void>;
|
|
257
|
+
export declare namespace create {
|
|
258
|
+
type Options = {
|
|
259
|
+
/** The message whose hash becomes the key's witness. Null for a request without one. */
|
|
260
|
+
challenge: string | null;
|
|
261
|
+
/** The name that the CLI reported, such as its hostname. Null for a code from `POST /device/code`. */
|
|
262
|
+
device: string | null;
|
|
263
|
+
/** When the device code expires. */
|
|
264
|
+
expiresAt: Date;
|
|
265
|
+
/** The ID of the device code's `device_code` row. */
|
|
266
|
+
id: string;
|
|
267
|
+
/** The CLI's IP address. Null when it is unknown. */
|
|
268
|
+
ip: string | null;
|
|
269
|
+
/**
|
|
270
|
+
* The key that the CLI requested, with every default filled, before the challenge is bound.
|
|
271
|
+
* Null for a request without a key.
|
|
272
|
+
*/
|
|
273
|
+
key: KeyAuthorization.Key | null;
|
|
274
|
+
/** The CLI's city and country. Null when they are unknown. */
|
|
275
|
+
location: string | null;
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Returns `userCode` as the pages show it, in two groups of four, such as `BCDF-GHJK`. Better Auth
|
|
280
|
+
* stores the code without the hyphen.
|
|
281
|
+
*/
|
|
282
|
+
export declare function format(userCode: string): string;
|
|
283
|
+
/**
|
|
284
|
+
* Returns the request of the live device code `userCode`, as {@link normalize} returns it, with the
|
|
285
|
+
* code's state. Returns `undefined` for an unknown or expired code.
|
|
286
|
+
*/
|
|
287
|
+
export declare function get(db: Realm.Database, options: get.Options): Promise<Request | undefined>;
|
|
288
|
+
export declare namespace get {
|
|
289
|
+
type Options = {
|
|
290
|
+
/** The user code, as {@link normalize} returns it. */
|
|
291
|
+
userCode: string;
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Holds `key`, which approval signed, in the request of the device code whose row has `id`, until
|
|
296
|
+
* the first redemption of the code takes it. Holds it only while the code is pending, bound to the
|
|
297
|
+
* user with `userId`, and holds no key yet, and returns whether it did. Of concurrent approvals, only
|
|
298
|
+
* the one that holds its key goes on to approve the code.
|
|
299
|
+
*/
|
|
300
|
+
export declare function hold(db: Realm.Database, options: hold.Options): Promise<boolean>;
|
|
301
|
+
export declare namespace hold {
|
|
302
|
+
type Options = {
|
|
303
|
+
/** The ID of the device code's `device_code` row. */
|
|
304
|
+
id: string;
|
|
305
|
+
/** The signed key authorization, and the account that it acts for. */
|
|
306
|
+
key: PendingKey.PendingKey;
|
|
307
|
+
/** The ID of the user who approves the code, whom the code must be bound to. */
|
|
308
|
+
userId: string;
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Releases `key`, which `hold` held for the device code whose row has `id`, while the code is
|
|
313
|
+
* still pending, so the approving user can approve again after a failed approval. Another
|
|
314
|
+
* approval's key stays.
|
|
315
|
+
*/
|
|
316
|
+
export declare function release(db: Realm.Database, options: release.Options): Promise<void>;
|
|
317
|
+
export declare namespace release {
|
|
318
|
+
type Options = {
|
|
319
|
+
/** The ID of the device code's `device_code` row. */
|
|
320
|
+
id: string;
|
|
321
|
+
/** The key that `hold` held. */
|
|
322
|
+
key: PendingKey.PendingKey;
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Returns the ID of the `device_code` row of `deviceCode`, the CLI's secret code, or `undefined`
|
|
327
|
+
* when no row holds it.
|
|
328
|
+
*/
|
|
329
|
+
export declare function id(db: Realm.Database, options: id.Options): Promise<string | undefined>;
|
|
330
|
+
export declare namespace id {
|
|
331
|
+
type Options = {
|
|
332
|
+
/** The device code that the CLI holds. */
|
|
333
|
+
deviceCode: string;
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Returns what a user typed as a user code, in the form that Better Auth stores: eight consonants in
|
|
338
|
+
* upper case, without the hyphen. Returns `undefined` when the value cannot be a user code.
|
|
339
|
+
*/
|
|
340
|
+
export declare function normalize(value: string): string | undefined;
|
|
341
|
+
/** The path of the device page, the verification URI. */
|
|
342
|
+
export declare const page = "/device";
|
|
343
|
+
/**
|
|
344
|
+
* Returns the device page that sign-in returns the browser to, from the `return_to` value `value`:
|
|
345
|
+
* the exact path `/device`, with at most one query parameter, the user code, as `code` or
|
|
346
|
+
* `user_code`. Parses `value` against Tempo ID's own `origin`, and rebuilds the path from the
|
|
347
|
+
* normalized code. Returns `undefined` for any other value, such as another path, host, or scheme, a
|
|
348
|
+
* protocol-relative or backslash form, or another parameter, so sign-in redirects only to the
|
|
349
|
+
* device page.
|
|
350
|
+
*/
|
|
351
|
+
export declare function returnTo(value: string | null | undefined, options: returnTo.Options): string | undefined;
|
|
352
|
+
export declare namespace returnTo {
|
|
353
|
+
type Options = {
|
|
354
|
+
/** Tempo ID's origin, such as `https://id.tempo.xyz`, which the path resolves against. */
|
|
355
|
+
origin: string;
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Deletes the request of the device code whose row has `id`, once its redemption issued tokens, and
|
|
360
|
+
* returns the signed key that approval held in it. Returns `undefined` when it holds none, or when
|
|
361
|
+
* another redemption took it.
|
|
362
|
+
*/
|
|
363
|
+
export declare function take(db: Realm.Database, options: take.Options): Promise<PendingKey.PendingKey | undefined>;
|
|
364
|
+
export declare namespace take {
|
|
365
|
+
type Options = {
|
|
366
|
+
/** The ID of the redeemed device code's `device_code` row. */
|
|
367
|
+
id: string;
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
export {};
|
|
371
|
+
//# sourceMappingURL=Device.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../src/internal/Device.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAC9D,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExC,oDAAoD;AACpD,qBAAa,mBAAoB,SAAQ,wBAExC;IACC,SAAkB,IAAI,gCAA+B;IAErD,cAKC;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,mDAAmD;AACnD,qBAAa,oBAAqB,SAAQ,yBAEzC;IACC,SAAkB,IAAI,iCAAgC;IAEtD,cAKC;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,gEAAgE;AAChE,qBAAa,sBAAuB,SAAQ,2BAE3C;IACC,SAAkB,IAAI,mCAAkC;IAExD,cAEC;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,oDAAoD;AACpD,qBAAa,mBAAoB,SAAQ,wBAExC;IACC,SAAkB,IAAI,gCAA+B;IAErD,cAIC;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,uCAAuC;AACvC,qBAAa,kBAAmB,SAAQ,uBAAsC;IAC5E,SAAkB,IAAI,+BAA8B;IAEpD,cAEC;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,yCAAyC;AACzC,qBAAa,gBAAiB,SAAQ,qBAAoC;IACxE,SAAkB,IAAI,6BAA4B;IAElD,cAMC;CACF;AAED,qGAAqG;AACrG,MAAM,MAAM,OAAO,GAAG;IACpB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAA;IAChB,uCAAuC;IACvC,SAAS,EAAE,IAAI,CAAA;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAA;IACV,uDAAuD;IACvD,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB;;;OAGG;IACH,GAAG,CAAC,EAAE,gBAAgB,CAAC,GAAG,GAAG,SAAS,CAAA;IACtC,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,sFAAsF;IACtF,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAA;IACzC,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAA;IAChB,uGAAuG;IACvG,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,cAAc,CAAA;AAEnC,kEAAkE;AAClE,eAAO,MAAM,KAAK,gCAAgC,CAAA;AAElD,wCAAwC;AACxC,eAAO,MAAM,QAAQ,QAAU,CAAA;AAE/B,8CAA8C;AAC9C,eAAO,MAAM,QAAQ,IAAI,CAAA;AAKzB;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,+BAIvE;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,GAAG;QACb,sDAAsD;QACtD,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,iBAavE;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,GAAG;QACb,wFAAwF;QACxF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;QACxB,sGAAsG;QACtG,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,oCAAoC;QACpC,SAAS,EAAE,IAAI,CAAA;QACf,qDAAqD;QACrD,EAAE,EAAE,MAAM,CAAA;QACV,qDAAqD;QACrD,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;QACjB;;;WAGG;QACH,GAAG,EAAE,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAA;QAChC,8DAA8D;QAC9D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KACxB,CAAA;CACF;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,UAEtC;AAED;;;GAGG;AACH,wBAAsB,GAAG,CACvB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAClB,OAAO,EAAE,GAAG,CAAC,OAAO,GACnB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAoD9B;AAED,MAAM,CAAC,OAAO,WAAW,GAAG,CAAC;IAC3B,KAAK,OAAO,GAAG;QACb,sDAAsD;QACtD,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF;AAED;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,oBA0BnE;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAK,OAAO,GAAG;QACb,qDAAqD;QACrD,EAAE,EAAE,MAAM,CAAA;QACV,sEAAsE;QACtE,GAAG,EAAE,UAAU,CAAC,UAAU,CAAA;QAC1B,gFAAgF;QAChF,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,iBAsBzE;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,OAAO,GAAG;QACb,qDAAqD;QACrD,EAAE,EAAE,MAAM,CAAA;QACV,gCAAgC;QAChC,GAAG,EAAE,UAAU,CAAC,UAAU,CAAA;KAC3B,CAAA;CACF;AAED;;;GAGG;AACH,wBAAsB,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,+BAM/D;AAED,MAAM,CAAC,OAAO,WAAW,EAAE,CAAC;IAC1B,KAAK,OAAO,GAAG;QACb,0CAA0C;QAC1C,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,sBAQtC;AAED,yDAAyD;AACzD,eAAO,MAAM,IAAI,YAAY,CAAA;AAE7B;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,EAAE,QAAQ,CAAC,OAAO,sBAkB1B;AAED,MAAM,CAAC,OAAO,WAAW,QAAQ,CAAC;IAChC,KAAK,OAAO,GAAG;QACb,0FAA0F;QAC1F,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED;;;;GAIG;AACH,wBAAsB,IAAI,CACxB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAClB,OAAO,EAAE,IAAI,CAAC,OAAO,GACpB,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC,CAc5C;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAK,OAAO,GAAG;QACb,8DAA8D;QAC9D,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;CACF"}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The device grant (RFC 8628) for CLIs, on Better Auth's device plugin. A CLI requests a code, a
|
|
3
|
+
* signed-in user approves it on the device page from any browser, and the CLI polls until it
|
|
4
|
+
* receives tokens. Better Auth holds each code's state in `device_code`, and `device_requests` holds
|
|
5
|
+
* what the CLI reported and the key that it requested, which the page shows. Approval signs the key
|
|
6
|
+
* and holds it in the same row, and the first redemption of the device code takes it.
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { and, eq, exists, gt, isNull, sql } from 'drizzle-orm';
|
|
10
|
+
import { Hex } from 'ox';
|
|
11
|
+
import * as Schema from '../app/db/schema.js';
|
|
12
|
+
import * as Authorize from './Authorize.js';
|
|
13
|
+
import * as ErrorResponse from './ErrorResponse.js';
|
|
14
|
+
/** The user code was already approved or denied. */
|
|
15
|
+
export class AlreadyDecidedError extends ErrorResponse.define('already_decided') {
|
|
16
|
+
name = 'Device.AlreadyDecidedError';
|
|
17
|
+
constructor() {
|
|
18
|
+
super({
|
|
19
|
+
error_description: 'Code already approved or denied.',
|
|
20
|
+
field: 'code',
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** The user did not decide the device code yet. */
|
|
25
|
+
export class ApprovalPendingError extends ErrorResponse.define('approval_pending') {
|
|
26
|
+
name = 'Device.ApprovalPendingError';
|
|
27
|
+
constructor() {
|
|
28
|
+
super({
|
|
29
|
+
error_description: 'Approval pending. Poll again after `interval` seconds.',
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** The device code is unknown, expired, or already redeemed. */
|
|
34
|
+
export class DeviceCodeExpiredError extends ErrorResponse.define('device_code_expired') {
|
|
35
|
+
name = 'Device.DeviceCodeExpiredError';
|
|
36
|
+
constructor() {
|
|
37
|
+
super({ error_description: 'Device code expired. Request a new code.' });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** The device polled before its interval passed. */
|
|
41
|
+
export class PollingTooFastError extends ErrorResponse.define('polling_too_fast') {
|
|
42
|
+
name = 'Device.PollingTooFastError';
|
|
43
|
+
constructor() {
|
|
44
|
+
super({
|
|
45
|
+
error_description: 'Polling too fast. Add 5 seconds to `interval`.',
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** The user denied the device code. */
|
|
50
|
+
export class RequestDeniedError extends ErrorResponse.define('request_denied') {
|
|
51
|
+
name = 'Device.RequestDeniedError';
|
|
52
|
+
constructor() {
|
|
53
|
+
super({ error_description: 'The user denied the request.' });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** The user code is wrong or expired. */
|
|
57
|
+
export class UnknownCodeError extends ErrorResponse.define('unknown_code') {
|
|
58
|
+
name = 'Device.UnknownCodeError';
|
|
59
|
+
constructor() {
|
|
60
|
+
super({
|
|
61
|
+
error_description: 'Invalid or expired code. Check the code in the terminal.',
|
|
62
|
+
field: 'code',
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* The client ID of the app that a device grant of `/v1/device/authorize` signs in to without a
|
|
68
|
+
* `client_id`. `tempo-id login` uses it.
|
|
69
|
+
*/
|
|
70
|
+
export const clientId = 'tempo-cli';
|
|
71
|
+
/** The scopes of every device grant of `/v1/device/authorize`. */
|
|
72
|
+
export const scope = 'openid email offline_access';
|
|
73
|
+
/** Seconds that a device code lasts. */
|
|
74
|
+
export const lifetime = 10 * 60;
|
|
75
|
+
/** Seconds that a CLI waits between polls. */
|
|
76
|
+
export const interval = 5;
|
|
77
|
+
/** Consonants only, so codes spell no words and survive being read aloud. */
|
|
78
|
+
const consonants = 'BCDFGHJKLMNPQRSTVWXZ';
|
|
79
|
+
/**
|
|
80
|
+
* Returns the client ID of the app that requested the live user code `userCode`, as
|
|
81
|
+
* {@link normalize} returns it, while the code is pending and bound to no user. Returns `undefined`
|
|
82
|
+
* for any other code, so a sign-in that returns to the device page reveals nothing about a code that
|
|
83
|
+
* is unknown, expired, decided, or held. The read binds nothing.
|
|
84
|
+
*/
|
|
85
|
+
export async function client(db, options) {
|
|
86
|
+
const found = await get(db, options);
|
|
87
|
+
if (!found || found.status !== 'pending' || found.userId)
|
|
88
|
+
return undefined;
|
|
89
|
+
return found.clientId;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Stores what the CLI reported with the device code whose row has `id`, and the key that it
|
|
93
|
+
* requested, until the code expires at `expiresAt`.
|
|
94
|
+
*/
|
|
95
|
+
export async function create(db, options) {
|
|
96
|
+
const { challenge, device, expiresAt, id, ip, location } = options;
|
|
97
|
+
// The key's bigints are stored as hex quantities, which the request schema parses back.
|
|
98
|
+
const key = options.key
|
|
99
|
+
? JSON.parse(JSON.stringify(options.key, (_, value) => typeof value === 'bigint' ? Hex.fromNumber(value) : value))
|
|
100
|
+
: null;
|
|
101
|
+
await db
|
|
102
|
+
.insert(Schema.deviceRequests)
|
|
103
|
+
.values({ challenge, device, expiresAt, id, ip, key, location });
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Returns `userCode` as the pages show it, in two groups of four, such as `BCDF-GHJK`. Better Auth
|
|
107
|
+
* stores the code without the hyphen.
|
|
108
|
+
*/
|
|
109
|
+
export function format(userCode) {
|
|
110
|
+
return `${userCode.slice(0, 4)}-${userCode.slice(4)}`;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Returns the request of the live device code `userCode`, as {@link normalize} returns it, with the
|
|
114
|
+
* code's state. Returns `undefined` for an unknown or expired code.
|
|
115
|
+
*/
|
|
116
|
+
export async function get(db, options) {
|
|
117
|
+
const [row] = await db
|
|
118
|
+
.select({
|
|
119
|
+
challenge: Schema.deviceRequests.challenge,
|
|
120
|
+
clientId: Schema.deviceCode.clientId,
|
|
121
|
+
createdAt: Schema.deviceRequests.createdAt,
|
|
122
|
+
device: Schema.deviceRequests.device,
|
|
123
|
+
expiresAt: Schema.deviceCode.expiresAt,
|
|
124
|
+
id: Schema.deviceCode.id,
|
|
125
|
+
ip: Schema.deviceRequests.ip,
|
|
126
|
+
key: Schema.deviceRequests.key,
|
|
127
|
+
location: Schema.deviceRequests.location,
|
|
128
|
+
status: Schema.deviceCode.status,
|
|
129
|
+
userCode: Schema.deviceCode.userCode,
|
|
130
|
+
userId: Schema.deviceCode.userId,
|
|
131
|
+
})
|
|
132
|
+
.from(Schema.deviceCode)
|
|
133
|
+
.leftJoin(Schema.deviceRequests, eq(Schema.deviceRequests.id, Schema.deviceCode.id))
|
|
134
|
+
.where(and(eq(Schema.deviceCode.userCode, options.userCode), gt(Schema.deviceCode.expiresAt, new Date())));
|
|
135
|
+
// Better Auth sets the client ID of every code that an app requests.
|
|
136
|
+
if (!row?.clientId)
|
|
137
|
+
return undefined;
|
|
138
|
+
// The stored key passed the same schema when the CLI requested it.
|
|
139
|
+
const key = row.key
|
|
140
|
+
? Authorize.schema.redirect.parse({
|
|
141
|
+
challenge: row.challenge ?? undefined,
|
|
142
|
+
key_authorization: row.key,
|
|
143
|
+
})
|
|
144
|
+
: undefined;
|
|
145
|
+
return {
|
|
146
|
+
...(row.challenge ? { challenge: row.challenge } : {}),
|
|
147
|
+
clientId: row.clientId,
|
|
148
|
+
// Tempo ID stores each code's request just after Better Auth issues the code, so a read between
|
|
149
|
+
// the two finds none. Every code lasts `lifetime` seconds.
|
|
150
|
+
createdAt: row.createdAt ?? new Date(row.expiresAt.getTime() - lifetime * 1000),
|
|
151
|
+
...(row.device ? { device: row.device } : {}),
|
|
152
|
+
id: row.id,
|
|
153
|
+
...(row.ip ? { ip: row.ip } : {}),
|
|
154
|
+
...(key ? { key } : {}),
|
|
155
|
+
...(row.location ? { location: row.location } : {}),
|
|
156
|
+
status: status(row.status),
|
|
157
|
+
userCode: format(row.userCode),
|
|
158
|
+
...(row.userId ? { userId: row.userId } : {}),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Holds `key`, which approval signed, in the request of the device code whose row has `id`, until
|
|
163
|
+
* the first redemption of the code takes it. Holds it only while the code is pending, bound to the
|
|
164
|
+
* user with `userId`, and holds no key yet, and returns whether it did. Of concurrent approvals, only
|
|
165
|
+
* the one that holds its key goes on to approve the code.
|
|
166
|
+
*/
|
|
167
|
+
export async function hold(db, options) {
|
|
168
|
+
const { id, key, userId } = options;
|
|
169
|
+
const rows = await db
|
|
170
|
+
.update(Schema.deviceRequests)
|
|
171
|
+
.set({ account: key.account, keyAuthorization: key.keyAuthorization })
|
|
172
|
+
.where(and(eq(Schema.deviceRequests.id, id), isNull(Schema.deviceRequests.keyAuthorization), exists(db
|
|
173
|
+
.select({ id: Schema.deviceCode.id })
|
|
174
|
+
.from(Schema.deviceCode)
|
|
175
|
+
.where(and(eq(Schema.deviceCode.id, id), eq(Schema.deviceCode.status, 'pending'), eq(Schema.deviceCode.userId, userId), gt(Schema.deviceCode.expiresAt, new Date()))))))
|
|
176
|
+
.returning({ id: Schema.deviceRequests.id });
|
|
177
|
+
return rows.length > 0;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Releases `key`, which `hold` held for the device code whose row has `id`, while the code is
|
|
181
|
+
* still pending, so the approving user can approve again after a failed approval. Another
|
|
182
|
+
* approval's key stays.
|
|
183
|
+
*/
|
|
184
|
+
export async function release(db, options) {
|
|
185
|
+
const { id, key } = options;
|
|
186
|
+
await db
|
|
187
|
+
.update(Schema.deviceRequests)
|
|
188
|
+
.set({ account: null, keyAuthorization: null })
|
|
189
|
+
.where(and(eq(Schema.deviceRequests.id, id), sql `${Schema.deviceRequests.keyAuthorization} = ${JSON.stringify(key.keyAuthorization)}::jsonb`, exists(db
|
|
190
|
+
.select({ id: Schema.deviceCode.id })
|
|
191
|
+
.from(Schema.deviceCode)
|
|
192
|
+
.where(and(eq(Schema.deviceCode.id, id), eq(Schema.deviceCode.status, 'pending'))))));
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Returns the ID of the `device_code` row of `deviceCode`, the CLI's secret code, or `undefined`
|
|
196
|
+
* when no row holds it.
|
|
197
|
+
*/
|
|
198
|
+
export async function id(db, options) {
|
|
199
|
+
const [row] = await db
|
|
200
|
+
.select({ id: Schema.deviceCode.id })
|
|
201
|
+
.from(Schema.deviceCode)
|
|
202
|
+
.where(eq(Schema.deviceCode.deviceCode, options.deviceCode));
|
|
203
|
+
return row?.id;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Returns what a user typed as a user code, in the form that Better Auth stores: eight consonants in
|
|
207
|
+
* upper case, without the hyphen. Returns `undefined` when the value cannot be a user code.
|
|
208
|
+
*/
|
|
209
|
+
export function normalize(value) {
|
|
210
|
+
const characters = value.toUpperCase().replace(/[^A-Z]/g, '');
|
|
211
|
+
if (characters.length !== 8 ||
|
|
212
|
+
[...characters].some((character) => !consonants.includes(character)))
|
|
213
|
+
return undefined;
|
|
214
|
+
return characters;
|
|
215
|
+
}
|
|
216
|
+
/** The path of the device page, the verification URI. */
|
|
217
|
+
export const page = '/device';
|
|
218
|
+
/**
|
|
219
|
+
* Returns the device page that sign-in returns the browser to, from the `return_to` value `value`:
|
|
220
|
+
* the exact path `/device`, with at most one query parameter, the user code, as `code` or
|
|
221
|
+
* `user_code`. Parses `value` against Tempo ID's own `origin`, and rebuilds the path from the
|
|
222
|
+
* normalized code. Returns `undefined` for any other value, such as another path, host, or scheme, a
|
|
223
|
+
* protocol-relative or backslash form, or another parameter, so sign-in redirects only to the
|
|
224
|
+
* device page.
|
|
225
|
+
*/
|
|
226
|
+
export function returnTo(value, options) {
|
|
227
|
+
// Only a path-absolute value names Tempo ID's own page. `//` and `/\` name another host.
|
|
228
|
+
if (!value || !value.startsWith('/') || /^\/[/\\]/.test(value))
|
|
229
|
+
return undefined;
|
|
230
|
+
const base = new URL(options.origin);
|
|
231
|
+
const url = URL.parse(value, base);
|
|
232
|
+
if (!url || url.origin !== base.origin || url.pathname !== page || url.hash)
|
|
233
|
+
return undefined;
|
|
234
|
+
const keys = [...url.searchParams.keys()];
|
|
235
|
+
if (keys.length === 0)
|
|
236
|
+
return page;
|
|
237
|
+
const [key] = keys;
|
|
238
|
+
if (keys.length > 1 || (key !== 'code' && key !== 'user_code'))
|
|
239
|
+
return undefined;
|
|
240
|
+
const userCode = normalize(url.searchParams.get(key) ?? '');
|
|
241
|
+
if (!userCode)
|
|
242
|
+
return undefined;
|
|
243
|
+
return `${page}?${new URLSearchParams({ code: format(userCode) })}`;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Deletes the request of the device code whose row has `id`, once its redemption issued tokens, and
|
|
247
|
+
* returns the signed key that approval held in it. Returns `undefined` when it holds none, or when
|
|
248
|
+
* another redemption took it.
|
|
249
|
+
*/
|
|
250
|
+
export async function take(db, options) {
|
|
251
|
+
const [row] = await db
|
|
252
|
+
.delete(Schema.deviceRequests)
|
|
253
|
+
.where(eq(Schema.deviceRequests.id, options.id))
|
|
254
|
+
.returning({
|
|
255
|
+
account: Schema.deviceRequests.account,
|
|
256
|
+
keyAuthorization: Schema.deviceRequests.keyAuthorization,
|
|
257
|
+
});
|
|
258
|
+
if (!row?.account || !row.keyAuthorization)
|
|
259
|
+
return undefined;
|
|
260
|
+
return {
|
|
261
|
+
account: row.account,
|
|
262
|
+
keyAuthorization: row.keyAuthorization,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
/** Returns the state that Better Auth stores in `device_code.status`. */
|
|
266
|
+
function status(value) {
|
|
267
|
+
if (value === 'approved' || value === 'denied')
|
|
268
|
+
return value;
|
|
269
|
+
return 'pending';
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=Device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Device.js","sourceRoot":"","sources":["../../src/internal/Device.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAKnD,oDAAoD;AACpD,MAAM,OAAO,mBAAoB,SAAQ,aAAa,CAAC,MAAM,CAC3D,iBAAiB,CAClB;IACmB,IAAI,GAAG,4BAA4B,CAAA;IAErD;QACE,KAAK,CAAC;YACJ,iBAAiB,EAAE,kCAAkC;YACrD,KAAK,EAAE,MAAM;SACd,CAAC,CAAA;IACJ,CAAC;CACF;AAED,mDAAmD;AACnD,MAAM,OAAO,oBAAqB,SAAQ,aAAa,CAAC,MAAM,CAC5D,kBAAkB,CACnB;IACmB,IAAI,GAAG,6BAA6B,CAAA;IAEtD;QACE,KAAK,CAAC;YACJ,iBAAiB,EACf,wDAAwD;SAC3D,CAAC,CAAA;IACJ,CAAC;CACF;AAED,gEAAgE;AAChE,MAAM,OAAO,sBAAuB,SAAQ,aAAa,CAAC,MAAM,CAC9D,qBAAqB,CACtB;IACmB,IAAI,GAAG,+BAA+B,CAAA;IAExD;QACE,KAAK,CAAC,EAAE,iBAAiB,EAAE,0CAA0C,EAAE,CAAC,CAAA;IAC1E,CAAC;CACF;AAED,oDAAoD;AACpD,MAAM,OAAO,mBAAoB,SAAQ,aAAa,CAAC,MAAM,CAC3D,kBAAkB,CACnB;IACmB,IAAI,GAAG,4BAA4B,CAAA;IAErD;QACE,KAAK,CAAC;YACJ,iBAAiB,EAAE,gDAAgD;SACpE,CAAC,CAAA;IACJ,CAAC;CACF;AAED,uCAAuC;AACvC,MAAM,OAAO,kBAAmB,SAAQ,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC1D,IAAI,GAAG,2BAA2B,CAAA;IAEpD;QACE,KAAK,CAAC,EAAE,iBAAiB,EAAE,8BAA8B,EAAE,CAAC,CAAA;IAC9D,CAAC;CACF;AAED,yCAAyC;AACzC,MAAM,OAAO,gBAAiB,SAAQ,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC;IACtD,IAAI,GAAG,yBAAyB,CAAA;IAElD;QACE,KAAK,CAAC;YACJ,iBAAiB,EACf,0DAA0D;YAC5D,KAAK,EAAE,MAAM;SACd,CAAC,CAAA;IACJ,CAAC;CACF;AAkCD;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAA;AAEnC,kEAAkE;AAClE,MAAM,CAAC,MAAM,KAAK,GAAG,6BAA6B,CAAA;AAElD,wCAAwC;AACxC,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,CAAA;AAE/B,8CAA8C;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAA;AAEzB,6EAA6E;AAC7E,MAAM,UAAU,GAAG,sBAAsB,CAAA;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,EAAkB,EAAE,OAAuB;IACtE,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACpC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAC1E,OAAO,KAAK,CAAC,QAAQ,CAAA;AACvB,CAAC;AASD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,EAAkB,EAAE,OAAuB;IACtE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAClE,wFAAwF;IACxF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;QACrB,CAAC,CAAE,IAAI,CAAC,KAAK,CACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAc,EAAE,EAAE,CAChD,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAC1D,CACU;QACf,CAAC,CAAC,IAAI,CAAA;IACR,MAAM,EAAE;SACL,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;SAC7B,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAA;AACpE,CAAC;AAwBD;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,QAAgB;IACrC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,EAAkB,EAClB,OAAoB;IAEpB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;SACnB,MAAM,CAAC;QACN,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS;QAC1C,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ;QACpC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS;QAC1C,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM;QACpC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS;QACtC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE;QACxB,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE;QAC5B,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG;QAC9B,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ;QACxC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;QAChC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ;QACpC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;KACjC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;SACvB,QAAQ,CACP,MAAM,CAAC,cAAc,EACrB,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CACnD;SACA,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAChD,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAC5C,CACF,CAAA;IACH,qEAAqE;IACrE,IAAI,CAAC,GAAG,EAAE,QAAQ;QAAE,OAAO,SAAS,CAAA;IACpC,mEAAmE;IACnE,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG;QACjB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC9B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;YACrC,iBAAiB,EAAE,GAAG,CAAC,GAAG;SAC3B,CAAC;QACJ,CAAC,CAAC,SAAS,CAAA;IACb,OAAO;QACL,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,gGAAgG;QAChG,2DAA2D;QAC3D,SAAS,EACP,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC;QACtE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAA;AACH,CAAC;AASD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAkB,EAAE,OAAqB;IAClE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACnC,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;SAC7B,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC;SACrE,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,EAChC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAC9C,MAAM,CACJ,EAAE;SACC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;SACpC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;SACvB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,EAC5B,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,EACvC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAC5C,CACF,CACJ,CACF,CACF;SACA,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;AACxB,CAAC;AAaD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAkB,EAAE,OAAwB;IACxE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAC3B,MAAM,EAAE;SACL,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;SAC7B,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;SAC9C,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,EAChC,GAAG,CAAA,GAAG,MAAM,CAAC,cAAc,CAAC,gBAAgB,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAC/F,MAAM,CACJ,EAAE;SACC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;SACpC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;SACvB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,EAC5B,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CACxC,CACF,CACJ,CACF,CACF,CAAA;AACL,CAAC;AAWD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,EAAkB,EAAE,OAAmB;IAC9D,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;SACnB,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;SACpC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;SACvB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;IAC9D,OAAO,GAAG,EAAE,EAAE,CAAA;AAChB,CAAC;AASD;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IAC7D,IACE,UAAU,CAAC,MAAM,KAAK,CAAC;QACvB,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEpE,OAAO,SAAS,CAAA;IAClB,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAA;AAE7B;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CACtB,KAAgC,EAChC,OAAyB;IAEzB,yFAAyF;IACzF,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5D,OAAO,SAAS,CAAA;IAClB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACpC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAClC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI;QACzE,OAAO,SAAS,CAAA;IAElB,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAA;IACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAClC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IAClB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,WAAW,CAAC;QAC5D,OAAO,SAAS,CAAA;IAClB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3D,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC/B,OAAO,GAAG,IAAI,IAAI,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;AACrE,CAAC;AASD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,EAAkB,EAClB,OAAqB;IAErB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;SACnB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;SAC7B,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;SAC/C,SAAS,CAAC;QACT,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO;QACtC,gBAAgB,EAAE,MAAM,CAAC,cAAc,CAAC,gBAAgB;KACzD,CAAC,CAAA;IACJ,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB;QAAE,OAAO,SAAS,CAAA;IAC5D,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,OAAwB;QACrC,gBAAgB,EACd,GAAG,CAAC,gBAA6D;KACpE,CAAA;AACH,CAAC;AASD,yEAAyE;AACzE,SAAS,MAAM,CAAC,KAAa;IAC3B,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC5D,OAAO,SAAS,CAAA;AAClB,CAAC"}
|