@tempoxyz/id 0.0.0-pr-187.sha-eed04d3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (712) hide show
  1. package/README.md +81 -0
  2. package/dist/App.d.ts +20 -0
  3. package/dist/App.d.ts.map +1 -0
  4. package/dist/App.js +26 -0
  5. package/dist/App.js.map +1 -0
  6. package/dist/app/client/.assetsignore +2 -0
  7. package/dist/app/client/assets/BRLA-CZvVDNYr.png +0 -0
  8. package/dist/app/client/assets/CHFAU-DCedc4aH.png +0 -0
  9. package/dist/app/client/assets/DLUSD-BnRXm3EI.png +0 -0
  10. package/dist/app/client/assets/PRIME-CiFp2-3e.svg +14 -0
  11. package/dist/app/client/assets/Pilat-Bold-C1t1eIrF.woff2 +0 -0
  12. package/dist/app/client/assets/Pilat-Book-CbS8ofT8.woff2 +0 -0
  13. package/dist/app/client/assets/Pilat-Demi-CADSbPAt.woff2 +0 -0
  14. package/dist/app/client/assets/Pilat-Regular-Bx8vzE7q.woff2 +0 -0
  15. package/dist/app/client/assets/USD1-COVcO_PB.svg +30 -0
  16. package/dist/app/client/assets/YLDS-CRh8Zw0g.svg +3 -0
  17. package/dist/app/client/assets/ccip-Cq1mMiVl.js +1 -0
  18. package/dist/app/client/assets/frxUSD-n9pTpinR.svg +1 -0
  19. package/dist/app/client/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
  20. package/dist/app/client/assets/index-B7YJVP00.css +1 -0
  21. package/dist/app/client/assets/index-UXTxXCLk.js +55 -0
  22. package/dist/app/client/assets/pathUSD-BvaO6ooS.svg +25 -0
  23. package/dist/app/client/assets/reset-co-CHrff.css +1 -0
  24. package/dist/app/client/assets/wYLDS-CaCKDrO-.svg +10 -0
  25. package/dist/app/db/auth.d.ts +3207 -0
  26. package/dist/app/db/auth.d.ts.map +1 -0
  27. package/dist/app/db/auth.js +330 -0
  28. package/dist/app/db/auth.js.map +1 -0
  29. package/dist/app/db/schema.d.ts +932 -0
  30. package/dist/app/db/schema.d.ts.map +1 -0
  31. package/dist/app/db/schema.js +171 -0
  32. package/dist/app/db/schema.js.map +1 -0
  33. package/dist/app/server/.vite/manifest.json +489 -0
  34. package/dist/app/server/assets/BRLA-CZvVDNYr.png +0 -0
  35. package/dist/app/server/assets/CHFAU-DCedc4aH.png +0 -0
  36. package/dist/app/server/assets/DLUSD-BnRXm3EI.png +0 -0
  37. package/dist/app/server/assets/PRIME-CiFp2-3e.svg +14 -0
  38. package/dist/app/server/assets/Pilat-Bold-C1t1eIrF.woff2 +0 -0
  39. package/dist/app/server/assets/Pilat-Book-CbS8ofT8.woff2 +0 -0
  40. package/dist/app/server/assets/Pilat-Demi-CADSbPAt.woff2 +0 -0
  41. package/dist/app/server/assets/Pilat-Regular-Bx8vzE7q.woff2 +0 -0
  42. package/dist/app/server/assets/USD1-COVcO_PB.svg +30 -0
  43. package/dist/app/server/assets/YLDS-CRh8Zw0g.svg +3 -0
  44. package/dist/app/server/assets/_tanstack-start-manifest_v-DjQNeRZp.js +1 -0
  45. package/dist/app/server/assets/arktype-aI7TBD0R-D1R3Byo5.js +2 -0
  46. package/dist/app/server/assets/arktype-aI7TBD0R-D1R3Byo5.js.map +1 -0
  47. package/dist/app/server/assets/authorize-C95F-9E1-CbESJKGU.js +31 -0
  48. package/dist/app/server/assets/authorize-C95F-9E1-CbESJKGU.js.map +1 -0
  49. package/dist/app/server/assets/bun-sqlite-dialect-DoOVo4ja-CtyBkVMb.js +2 -0
  50. package/dist/app/server/assets/bun-sqlite-dialect-DoOVo4ja-CtyBkVMb.js.map +1 -0
  51. package/dist/app/server/assets/call-UQamaCKN.js +32 -0
  52. package/dist/app/server/assets/call-UQamaCKN.js.map +1 -0
  53. package/dist/app/server/assets/ccip-CbNKFO4n.js +2 -0
  54. package/dist/app/server/assets/ccip-CbNKFO4n.js.map +1 -0
  55. package/dist/app/server/assets/compiled-query-Ds2NVcFT.js +2 -0
  56. package/dist/app/server/assets/compiled-query-Ds2NVcFT.js.map +1 -0
  57. package/dist/app/server/assets/convert-BIC8n32x.js +2 -0
  58. package/dist/app/server/assets/convert-BIC8n32x.js.map +1 -0
  59. package/dist/app/server/assets/cookie-CS900nSP.css +1 -0
  60. package/dist/app/server/assets/cookie-Cce9CrIP.js +10 -0
  61. package/dist/app/server/assets/cookie-Cce9CrIP.js.map +1 -0
  62. package/dist/app/server/assets/core-B1HCXUmx.js +56 -0
  63. package/dist/app/server/assets/core-B1HCXUmx.js.map +1 -0
  64. package/dist/app/server/assets/d1-sqlite-dialect-m0f01-4z-Cv-csE1u.js +2 -0
  65. package/dist/app/server/assets/d1-sqlite-dialect-m0f01-4z-Cv-csE1u.js.map +1 -0
  66. package/dist/app/server/assets/default-u_dwuiYb-BJJ9PwCi.js +2 -0
  67. package/dist/app/server/assets/default-u_dwuiYb-BJJ9PwCi.js.map +1 -0
  68. package/dist/app/server/assets/dist-BxSwugSY.js +1 -0
  69. package/dist/app/server/assets/dist-CZGFhmQd.js +2 -0
  70. package/dist/app/server/assets/dist-CZGFhmQd.js.map +1 -0
  71. package/dist/app/server/assets/dist-Dg3PQqiW.js +15 -0
  72. package/dist/app/server/assets/dist-Dg3PQqiW.js.map +1 -0
  73. package/dist/app/server/assets/effect-QlVUlMFu-2tSPDT2b.js +2 -0
  74. package/dist/app/server/assets/effect-QlVUlMFu-2tSPDT2b.js.map +1 -0
  75. package/dist/app/server/assets/empty-plugin-adapters-BaGcmrjC.js +2 -0
  76. package/dist/app/server/assets/empty-plugin-adapters-BaGcmrjC.js.map +1 -0
  77. package/dist/app/server/assets/factory-ipHlJXZY.js +5 -0
  78. package/dist/app/server/assets/factory-ipHlJXZY.js.map +1 -0
  79. package/dist/app/server/assets/frxUSD-n9pTpinR.svg +1 -0
  80. package/dist/app/server/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
  81. package/dist/app/server/assets/get-id-field-B0x109VU.js +6 -0
  82. package/dist/app/server/assets/get-id-field-B0x109VU.js.map +1 -0
  83. package/dist/app/server/assets/index-CLddUTqr-xpSuLpBt.js +2 -0
  84. package/dist/app/server/assets/index-CLddUTqr-xpSuLpBt.js.map +1 -0
  85. package/dist/app/server/assets/index-DZEfthgZ-8Uq5s5Pt.js +2 -0
  86. package/dist/app/server/assets/index-DZEfthgZ-8Uq5s5Pt.js.map +1 -0
  87. package/dist/app/server/assets/kysely-adapter-MkHAI9Jk.js +1 -0
  88. package/dist/app/server/assets/node-sqlite-dialect-BowWLXvK.js +2 -0
  89. package/dist/app/server/assets/node-sqlite-dialect-BowWLXvK.js.map +1 -0
  90. package/dist/app/server/assets/pathUSD-BvaO6ooS.svg +25 -0
  91. package/dist/app/server/assets/reset-co-CHrff.css +1 -0
  92. package/dist/app/server/assets/rolldown-runtime-B0Z9INg1.js +1 -0
  93. package/dist/app/server/assets/router-CcbyBCI4.css +1 -0
  94. package/dist/app/server/assets/router-xjZtEeaI.js +7 -0
  95. package/dist/app/server/assets/router-xjZtEeaI.js.map +1 -0
  96. package/dist/app/server/assets/schema-check-Cf7QOZZD.js +9 -0
  97. package/dist/app/server/assets/schema-check-Cf7QOZZD.js.map +1 -0
  98. package/dist/app/server/assets/schemas-C2lCYmR5.js +2 -0
  99. package/dist/app/server/assets/schemas-C2lCYmR5.js.map +1 -0
  100. package/dist/app/server/assets/secp256k1-buM5g4AL.js +2 -0
  101. package/dist/app/server/assets/secp256k1-buM5g4AL.js.map +1 -0
  102. package/dist/app/server/assets/sqlite-adapter-C_LAV4e3.js +2 -0
  103. package/dist/app/server/assets/sqlite-adapter-C_LAV4e3.js.map +1 -0
  104. package/dist/app/server/assets/sqlite-introspector-DSCAP82F-Crx7Ny14.js +6 -0
  105. package/dist/app/server/assets/sqlite-introspector-DSCAP82F-Crx7Ny14.js.map +1 -0
  106. package/dist/app/server/assets/standard-json-Cg1N07hM.js +2 -0
  107. package/dist/app/server/assets/standard-json-Cg1N07hM.js.map +1 -0
  108. package/dist/app/server/assets/standard-json-DY77efq0.js +2 -0
  109. package/dist/app/server/assets/standard-json-DY77efq0.js.map +1 -0
  110. package/dist/app/server/assets/standard-json-ig2t0wRt.js +2 -0
  111. package/dist/app/server/assets/standard-json-ig2t0wRt.js.map +1 -0
  112. package/dist/app/server/assets/standard-json-t-LNckA6.js +2 -0
  113. package/dist/app/server/assets/standard-json-t-LNckA6.js.map +1 -0
  114. package/dist/app/server/assets/standard-openapi-CONmVRl8.js +2 -0
  115. package/dist/app/server/assets/standard-openapi-CONmVRl8.js.map +1 -0
  116. package/dist/app/server/assets/start-C63VetBp.js +2 -0
  117. package/dist/app/server/assets/start-C63VetBp.js.map +1 -0
  118. package/dist/app/server/assets/sury-CWZTCd75-xt1mWc9f.js +2 -0
  119. package/dist/app/server/assets/sury-CWZTCd75-xt1mWc9f.js.map +1 -0
  120. package/dist/app/server/assets/typebox-Dei93FPO-D_lCVdAz.js +2 -0
  121. package/dist/app/server/assets/typebox-Dei93FPO-D_lCVdAz.js.map +1 -0
  122. package/dist/app/server/assets/utils-C4ZXZIZW.js +2 -0
  123. package/dist/app/server/assets/utils-C4ZXZIZW.js.map +1 -0
  124. package/dist/app/server/assets/valibot--1zFm7rT-NSoY2xTp.js +2 -0
  125. package/dist/app/server/assets/valibot--1zFm7rT-NSoY2xTp.js.map +1 -0
  126. package/dist/app/server/assets/valibot-D_HTw1Gn-CJwWeOUE.js +2 -0
  127. package/dist/app/server/assets/valibot-D_HTw1Gn-CJwWeOUE.js.map +1 -0
  128. package/dist/app/server/assets/wYLDS-CaCKDrO-.svg +10 -0
  129. package/dist/app/server/assets/zod-Bwrt9trS-CV38yPnQ.js +2 -0
  130. package/dist/app/server/assets/zod-Bwrt9trS-CV38yPnQ.js.map +1 -0
  131. package/dist/app/server/assets/zod-DSgpEGAE-BvlnBE2L.js +2 -0
  132. package/dist/app/server/assets/zod-DSgpEGAE-BvlnBE2L.js.map +1 -0
  133. package/dist/app/server/index.js +574 -0
  134. package/dist/app/server/index.js.map +1 -0
  135. package/dist/app/server/wrangler.json +1 -0
  136. package/dist/cli/Admin.d.ts +38 -0
  137. package/dist/cli/Admin.d.ts.map +1 -0
  138. package/dist/cli/Admin.js +62 -0
  139. package/dist/cli/Admin.js.map +1 -0
  140. package/dist/cli/Apps.d.ts +9 -0
  141. package/dist/cli/Apps.d.ts.map +1 -0
  142. package/dist/cli/Apps.js +36 -0
  143. package/dist/cli/Apps.js.map +1 -0
  144. package/dist/cli/Cli.d.ts +14 -0
  145. package/dist/cli/Cli.d.ts.map +1 -0
  146. package/dist/cli/Cli.js +27 -0
  147. package/dist/cli/Cli.js.map +1 -0
  148. package/dist/cli/Project.d.ts +20 -0
  149. package/dist/cli/Project.d.ts.map +1 -0
  150. package/dist/cli/Project.js +88 -0
  151. package/dist/cli/Project.js.map +1 -0
  152. package/dist/cli/Realms.d.ts +24 -0
  153. package/dist/cli/Realms.d.ts.map +1 -0
  154. package/dist/cli/Realms.js +49 -0
  155. package/dist/cli/Realms.js.map +1 -0
  156. package/dist/cli/Session.d.ts +85 -0
  157. package/dist/cli/Session.d.ts.map +1 -0
  158. package/dist/cli/Session.js +178 -0
  159. package/dist/cli/Session.js.map +1 -0
  160. package/dist/cli/User.d.ts +29 -0
  161. package/dist/cli/User.d.ts.map +1 -0
  162. package/dist/cli/User.js +39 -0
  163. package/dist/cli/User.js.map +1 -0
  164. package/dist/cli/V1.d.ts +35 -0
  165. package/dist/cli/V1.d.ts.map +1 -0
  166. package/dist/cli/V1.js +41 -0
  167. package/dist/cli/V1.js.map +1 -0
  168. package/dist/cli/bin.d.ts +3 -0
  169. package/dist/cli/bin.d.ts.map +1 -0
  170. package/dist/cli/bin.js +46 -0
  171. package/dist/cli/bin.js.map +1 -0
  172. package/dist/cli/commands/admin/apps/create.d.ts +23 -0
  173. package/dist/cli/commands/admin/apps/create.d.ts.map +1 -0
  174. package/dist/cli/commands/admin/apps/create.js +89 -0
  175. package/dist/cli/commands/admin/apps/create.js.map +1 -0
  176. package/dist/cli/commands/admin/apps/delete.d.ts +14 -0
  177. package/dist/cli/commands/admin/apps/delete.d.ts.map +1 -0
  178. package/dist/cli/commands/admin/apps/delete.js +41 -0
  179. package/dist/cli/commands/admin/apps/delete.js.map +1 -0
  180. package/dist/cli/commands/admin/apps/index.d.ts +5 -0
  181. package/dist/cli/commands/admin/apps/index.d.ts.map +1 -0
  182. package/dist/cli/commands/admin/apps/index.js +14 -0
  183. package/dist/cli/commands/admin/apps/index.js.map +1 -0
  184. package/dist/cli/commands/admin/apps/list.d.ts +9 -0
  185. package/dist/cli/commands/admin/apps/list.d.ts.map +1 -0
  186. package/dist/cli/commands/admin/apps/list.js +26 -0
  187. package/dist/cli/commands/admin/apps/list.js.map +1 -0
  188. package/dist/cli/commands/admin/apps/rotate-secret.d.ts +16 -0
  189. package/dist/cli/commands/admin/apps/rotate-secret.d.ts.map +1 -0
  190. package/dist/cli/commands/admin/apps/rotate-secret.js +47 -0
  191. package/dist/cli/commands/admin/apps/rotate-secret.js.map +1 -0
  192. package/dist/cli/commands/admin/apps/update.d.ts +20 -0
  193. package/dist/cli/commands/admin/apps/update.d.ts.map +1 -0
  194. package/dist/cli/commands/admin/apps/update.js +76 -0
  195. package/dist/cli/commands/admin/apps/update.js.map +1 -0
  196. package/dist/cli/commands/admin/index.d.ts +5 -0
  197. package/dist/cli/commands/admin/index.d.ts.map +1 -0
  198. package/dist/cli/commands/admin/index.js +13 -0
  199. package/dist/cli/commands/admin/index.js.map +1 -0
  200. package/dist/cli/commands/admin/migrate.d.ts +9 -0
  201. package/dist/cli/commands/admin/migrate.d.ts.map +1 -0
  202. package/dist/cli/commands/admin/migrate.js +17 -0
  203. package/dist/cli/commands/admin/migrate.js.map +1 -0
  204. package/dist/cli/commands/admin/realms/add.d.ts +12 -0
  205. package/dist/cli/commands/admin/realms/add.d.ts.map +1 -0
  206. package/dist/cli/commands/admin/realms/add.js +42 -0
  207. package/dist/cli/commands/admin/realms/add.js.map +1 -0
  208. package/dist/cli/commands/admin/realms/index.d.ts +5 -0
  209. package/dist/cli/commands/admin/realms/index.d.ts.map +1 -0
  210. package/dist/cli/commands/admin/realms/index.js +13 -0
  211. package/dist/cli/commands/admin/realms/index.js.map +1 -0
  212. package/dist/cli/commands/admin/realms/list.d.ts +13 -0
  213. package/dist/cli/commands/admin/realms/list.d.ts.map +1 -0
  214. package/dist/cli/commands/admin/realms/list.js +36 -0
  215. package/dist/cli/commands/admin/realms/list.js.map +1 -0
  216. package/dist/cli/commands/admin/realms/passkeys/index.d.ts +5 -0
  217. package/dist/cli/commands/admin/realms/passkeys/index.d.ts.map +1 -0
  218. package/dist/cli/commands/admin/realms/passkeys/index.js +13 -0
  219. package/dist/cli/commands/admin/realms/passkeys/index.js.map +1 -0
  220. package/dist/cli/commands/admin/realms/passkeys/set.d.ts +16 -0
  221. package/dist/cli/commands/admin/realms/passkeys/set.d.ts.map +1 -0
  222. package/dist/cli/commands/admin/realms/passkeys/set.js +46 -0
  223. package/dist/cli/commands/admin/realms/passkeys/set.js.map +1 -0
  224. package/dist/cli/commands/admin/realms/privy/index.d.ts +5 -0
  225. package/dist/cli/commands/admin/realms/privy/index.d.ts.map +1 -0
  226. package/dist/cli/commands/admin/realms/privy/index.js +13 -0
  227. package/dist/cli/commands/admin/realms/privy/index.js.map +1 -0
  228. package/dist/cli/commands/admin/realms/privy/set.d.ts +18 -0
  229. package/dist/cli/commands/admin/realms/privy/set.d.ts.map +1 -0
  230. package/dist/cli/commands/admin/realms/privy/set.js +66 -0
  231. package/dist/cli/commands/admin/realms/privy/set.js.map +1 -0
  232. package/dist/cli/commands/admin/realms/remove.d.ts +11 -0
  233. package/dist/cli/commands/admin/realms/remove.d.ts.map +1 -0
  234. package/dist/cli/commands/admin/realms/remove.js +35 -0
  235. package/dist/cli/commands/admin/realms/remove.js.map +1 -0
  236. package/dist/cli/commands/admin/realms/secp256k1/disable.d.ts +15 -0
  237. package/dist/cli/commands/admin/realms/secp256k1/disable.d.ts.map +1 -0
  238. package/dist/cli/commands/admin/realms/secp256k1/disable.js +42 -0
  239. package/dist/cli/commands/admin/realms/secp256k1/disable.js.map +1 -0
  240. package/dist/cli/commands/admin/realms/secp256k1/enable.d.ts +15 -0
  241. package/dist/cli/commands/admin/realms/secp256k1/enable.d.ts.map +1 -0
  242. package/dist/cli/commands/admin/realms/secp256k1/enable.js +42 -0
  243. package/dist/cli/commands/admin/realms/secp256k1/enable.js.map +1 -0
  244. package/dist/cli/commands/admin/realms/secp256k1/index.d.ts +9 -0
  245. package/dist/cli/commands/admin/realms/secp256k1/index.d.ts.map +1 -0
  246. package/dist/cli/commands/admin/realms/secp256k1/index.js +17 -0
  247. package/dist/cli/commands/admin/realms/secp256k1/index.js.map +1 -0
  248. package/dist/cli/commands/admin/realms/set.d.ts +16 -0
  249. package/dist/cli/commands/admin/realms/set.d.ts.map +1 -0
  250. package/dist/cli/commands/admin/realms/set.js +46 -0
  251. package/dist/cli/commands/admin/realms/set.js.map +1 -0
  252. package/dist/cli/commands/admin/rotate-key.d.ts +15 -0
  253. package/dist/cli/commands/admin/rotate-key.d.ts.map +1 -0
  254. package/dist/cli/commands/admin/rotate-key.js +46 -0
  255. package/dist/cli/commands/admin/rotate-key.js.map +1 -0
  256. package/dist/cli/commands/init.d.ts +11 -0
  257. package/dist/cli/commands/init.d.ts.map +1 -0
  258. package/dist/cli/commands/init.js +34 -0
  259. package/dist/cli/commands/init.js.map +1 -0
  260. package/dist/cli/commands/login.d.ts +12 -0
  261. package/dist/cli/commands/login.d.ts.map +1 -0
  262. package/dist/cli/commands/login.js +29 -0
  263. package/dist/cli/commands/login.js.map +1 -0
  264. package/dist/cli/commands/logout.d.ts +8 -0
  265. package/dist/cli/commands/logout.d.ts.map +1 -0
  266. package/dist/cli/commands/logout.js +19 -0
  267. package/dist/cli/commands/logout.js.map +1 -0
  268. package/dist/cli/commands/whoami.d.ts +12 -0
  269. package/dist/cli/commands/whoami.d.ts.map +1 -0
  270. package/dist/cli/commands/whoami.js +24 -0
  271. package/dist/cli/commands/whoami.js.map +1 -0
  272. package/dist/client/Actions.d.ts +101 -0
  273. package/dist/client/Actions.d.ts.map +1 -0
  274. package/dist/client/Actions.js +90 -0
  275. package/dist/client/Actions.js.map +1 -0
  276. package/dist/client/Auth.d.ts +161 -0
  277. package/dist/client/Auth.d.ts.map +1 -0
  278. package/dist/client/Auth.js +113 -0
  279. package/dist/client/Auth.js.map +1 -0
  280. package/dist/client/Authorization.d.ts +29 -0
  281. package/dist/client/Authorization.d.ts.map +1 -0
  282. package/dist/client/Authorization.js +12 -0
  283. package/dist/client/Authorization.js.map +1 -0
  284. package/dist/client/Decorator.d.ts +170 -0
  285. package/dist/client/Decorator.d.ts.map +1 -0
  286. package/dist/client/Decorator.js +227 -0
  287. package/dist/client/Decorator.js.map +1 -0
  288. package/dist/client/Key.d.ts +85 -0
  289. package/dist/client/Key.d.ts.map +1 -0
  290. package/dist/client/Key.js +83 -0
  291. package/dist/client/Key.js.map +1 -0
  292. package/dist/client/Pending.d.ts +39 -0
  293. package/dist/client/Pending.d.ts.map +1 -0
  294. package/dist/client/Pending.js +12 -0
  295. package/dist/client/Pending.js.map +1 -0
  296. package/dist/client/Permissions.d.ts +34 -0
  297. package/dist/client/Permissions.d.ts.map +1 -0
  298. package/dist/client/Permissions.js +16 -0
  299. package/dist/client/Permissions.js.map +1 -0
  300. package/dist/client/Provider.d.ts +16 -0
  301. package/dist/client/Provider.d.ts.map +1 -0
  302. package/dist/client/Provider.js +12 -0
  303. package/dist/client/Provider.js.map +1 -0
  304. package/dist/client/Step.d.ts +21 -0
  305. package/dist/client/Step.d.ts.map +1 -0
  306. package/dist/client/Step.js +16 -0
  307. package/dist/client/Step.js.map +1 -0
  308. package/dist/client/Storage.d.ts +27 -0
  309. package/dist/client/Storage.d.ts.map +1 -0
  310. package/dist/client/Storage.js +16 -0
  311. package/dist/client/Storage.js.map +1 -0
  312. package/dist/client/TempoAccount.d.ts +40 -0
  313. package/dist/client/TempoAccount.d.ts.map +1 -0
  314. package/dist/client/TempoAccount.js +16 -0
  315. package/dist/client/TempoAccount.js.map +1 -0
  316. package/dist/client/Tokens.d.ts +25 -0
  317. package/dist/client/Tokens.d.ts.map +1 -0
  318. package/dist/client/Tokens.js +12 -0
  319. package/dist/client/Tokens.js.map +1 -0
  320. package/dist/client/User.d.ts +21 -0
  321. package/dist/client/User.d.ts.map +1 -0
  322. package/dist/client/User.js +12 -0
  323. package/dist/client/User.js.map +1 -0
  324. package/dist/client/actions/account.d.ts +25 -0
  325. package/dist/client/actions/account.d.ts.map +1 -0
  326. package/dist/client/actions/account.js +34 -0
  327. package/dist/client/actions/account.js.map +1 -0
  328. package/dist/client/actions/device.d.ts +53 -0
  329. package/dist/client/actions/device.d.ts.map +1 -0
  330. package/dist/client/actions/device.js +79 -0
  331. package/dist/client/actions/device.js.map +1 -0
  332. package/dist/client/actions/email.d.ts +84 -0
  333. package/dist/client/actions/email.d.ts.map +1 -0
  334. package/dist/client/actions/email.js +63 -0
  335. package/dist/client/actions/email.js.map +1 -0
  336. package/dist/client/actions/oauth.d.ts +115 -0
  337. package/dist/client/actions/oauth.d.ts.map +1 -0
  338. package/dist/client/actions/oauth.js +105 -0
  339. package/dist/client/actions/oauth.js.map +1 -0
  340. package/dist/client/actions/passkey.d.ts +88 -0
  341. package/dist/client/actions/passkey.d.ts.map +1 -0
  342. package/dist/client/actions/passkey.js +60 -0
  343. package/dist/client/actions/passkey.js.map +1 -0
  344. package/dist/client/actions/provider.d.ts +49 -0
  345. package/dist/client/actions/provider.d.ts.map +1 -0
  346. package/dist/client/actions/provider.js +34 -0
  347. package/dist/client/actions/provider.js.map +1 -0
  348. package/dist/client/actions/realm.d.ts +24 -0
  349. package/dist/client/actions/realm.d.ts.map +1 -0
  350. package/dist/client/actions/realm.js +15 -0
  351. package/dist/client/actions/realm.js.map +1 -0
  352. package/dist/client/actions/redirect.d.ts +153 -0
  353. package/dist/client/actions/redirect.d.ts.map +1 -0
  354. package/dist/client/actions/redirect.js +236 -0
  355. package/dist/client/actions/redirect.js.map +1 -0
  356. package/dist/client/internal/accessKey.d.ts +21 -0
  357. package/dist/client/internal/accessKey.d.ts.map +1 -0
  358. package/dist/client/internal/accessKey.js +38 -0
  359. package/dist/client/internal/accessKey.js.map +1 -0
  360. package/dist/client/internal/account.d.ts +14 -0
  361. package/dist/client/internal/account.d.ts.map +1 -0
  362. package/dist/client/internal/account.js +3 -0
  363. package/dist/client/internal/account.js.map +1 -0
  364. package/dist/client/internal/api.d.ts +106 -0
  365. package/dist/client/internal/api.d.ts.map +1 -0
  366. package/dist/client/internal/api.js +129 -0
  367. package/dist/client/internal/api.js.map +1 -0
  368. package/dist/client/internal/headless.d.ts +33 -0
  369. package/dist/client/internal/headless.d.ts.map +1 -0
  370. package/dist/client/internal/headless.js +46 -0
  371. package/dist/client/internal/headless.js.map +1 -0
  372. package/dist/client/internal/indexedDb.d.ts +9 -0
  373. package/dist/client/internal/indexedDb.d.ts.map +1 -0
  374. package/dist/client/internal/indexedDb.js +32 -0
  375. package/dist/client/internal/indexedDb.js.map +1 -0
  376. package/dist/client/internal/request.d.ts +58 -0
  377. package/dist/client/internal/request.d.ts.map +1 -0
  378. package/dist/client/internal/request.js +45 -0
  379. package/dist/client/internal/request.js.map +1 -0
  380. package/dist/client/internal/store.d.ts +12 -0
  381. package/dist/client/internal/store.d.ts.map +1 -0
  382. package/dist/client/internal/store.js +15 -0
  383. package/dist/client/internal/store.js.map +1 -0
  384. package/dist/client.d.ts +20 -0
  385. package/dist/client.d.ts.map +1 -0
  386. package/dist/client.js +20 -0
  387. package/dist/client.js.map +1 -0
  388. package/dist/index.d.ts +7 -0
  389. package/dist/index.d.ts.map +1 -0
  390. package/dist/index.js +7 -0
  391. package/dist/index.js.map +1 -0
  392. package/dist/internal/Apps.d.ts +3051 -0
  393. package/dist/internal/Apps.d.ts.map +1 -0
  394. package/dist/internal/Apps.js +472 -0
  395. package/dist/internal/Apps.js.map +1 -0
  396. package/dist/internal/Auth.d.ts +4058 -0
  397. package/dist/internal/Auth.d.ts.map +1 -0
  398. package/dist/internal/Auth.js +137 -0
  399. package/dist/internal/Auth.js.map +1 -0
  400. package/dist/internal/Authorize.d.ts +532 -0
  401. package/dist/internal/Authorize.d.ts.map +1 -0
  402. package/dist/internal/Authorize.js +326 -0
  403. package/dist/internal/Authorize.js.map +1 -0
  404. package/dist/internal/Device.d.ts +371 -0
  405. package/dist/internal/Device.d.ts.map +1 -0
  406. package/dist/internal/Device.js +271 -0
  407. package/dist/internal/Device.js.map +1 -0
  408. package/dist/internal/Env.d.ts +57 -0
  409. package/dist/internal/Env.d.ts.map +1 -0
  410. package/dist/internal/Env.js +2 -0
  411. package/dist/internal/Env.js.map +1 -0
  412. package/dist/internal/ErrorResponse.d.ts +609 -0
  413. package/dist/internal/ErrorResponse.d.ts.map +1 -0
  414. package/dist/internal/ErrorResponse.js +679 -0
  415. package/dist/internal/ErrorResponse.js.map +1 -0
  416. package/dist/internal/Id.d.ts +10 -0
  417. package/dist/internal/Id.d.ts.map +1 -0
  418. package/dist/internal/Id.js +34 -0
  419. package/dist/internal/Id.js.map +1 -0
  420. package/dist/internal/KeyAuthorization.d.ts +1456 -0
  421. package/dist/internal/KeyAuthorization.d.ts.map +1 -0
  422. package/dist/internal/KeyAuthorization.js +1030 -0
  423. package/dist/internal/KeyAuthorization.js.map +1 -0
  424. package/dist/internal/Limits.d.ts +65 -0
  425. package/dist/internal/Limits.d.ts.map +1 -0
  426. package/dist/internal/Limits.js +35 -0
  427. package/dist/internal/Limits.js.map +1 -0
  428. package/dist/internal/Log.d.ts +49 -0
  429. package/dist/internal/Log.d.ts.map +1 -0
  430. package/dist/internal/Log.js +101 -0
  431. package/dist/internal/Log.js.map +1 -0
  432. package/dist/internal/LogLine.d.ts +33 -0
  433. package/dist/internal/LogLine.d.ts.map +1 -0
  434. package/dist/internal/LogLine.js +56 -0
  435. package/dist/internal/LogLine.js.map +1 -0
  436. package/dist/internal/Migrations.d.ts +19 -0
  437. package/dist/internal/Migrations.d.ts.map +1 -0
  438. package/dist/internal/Migrations.js +57 -0
  439. package/dist/internal/Migrations.js.map +1 -0
  440. package/dist/internal/Owner.d.ts +146 -0
  441. package/dist/internal/Owner.d.ts.map +1 -0
  442. package/dist/internal/Owner.js +65 -0
  443. package/dist/internal/Owner.js.map +1 -0
  444. package/dist/internal/Passkey.d.ts +528 -0
  445. package/dist/internal/Passkey.d.ts.map +1 -0
  446. package/dist/internal/Passkey.js +658 -0
  447. package/dist/internal/Passkey.js.map +1 -0
  448. package/dist/internal/PendingKey.d.ts +49 -0
  449. package/dist/internal/PendingKey.d.ts.map +1 -0
  450. package/dist/internal/PendingKey.js +58 -0
  451. package/dist/internal/PendingKey.js.map +1 -0
  452. package/dist/internal/Privy.d.ts +105 -0
  453. package/dist/internal/Privy.d.ts.map +1 -0
  454. package/dist/internal/Privy.js +224 -0
  455. package/dist/internal/Privy.js.map +1 -0
  456. package/dist/internal/RateLimit.d.ts +190 -0
  457. package/dist/internal/RateLimit.d.ts.map +1 -0
  458. package/dist/internal/RateLimit.js +148 -0
  459. package/dist/internal/RateLimit.js.map +1 -0
  460. package/dist/internal/Realm.d.ts +281 -0
  461. package/dist/internal/Realm.d.ts.map +1 -0
  462. package/dist/internal/Realm.js +477 -0
  463. package/dist/internal/Realm.js.map +1 -0
  464. package/dist/internal/RequestId.d.ts +16 -0
  465. package/dist/internal/RequestId.d.ts.map +1 -0
  466. package/dist/internal/RequestId.js +78 -0
  467. package/dist/internal/RequestId.js.map +1 -0
  468. package/dist/internal/SigningKey.d.ts +115 -0
  469. package/dist/internal/SigningKey.d.ts.map +1 -0
  470. package/dist/internal/SigningKey.js +197 -0
  471. package/dist/internal/SigningKey.js.map +1 -0
  472. package/dist/internal/TestInbox.d.ts +42 -0
  473. package/dist/internal/TestInbox.d.ts.map +1 -0
  474. package/dist/internal/TestInbox.js +20 -0
  475. package/dist/internal/TestInbox.js.map +1 -0
  476. package/dist/internal/Timing.d.ts +51 -0
  477. package/dist/internal/Timing.d.ts.map +1 -0
  478. package/dist/internal/Timing.js +103 -0
  479. package/dist/internal/Timing.js.map +1 -0
  480. package/dist/internal/Validation.d.ts +52 -0
  481. package/dist/internal/Validation.d.ts.map +1 -0
  482. package/dist/internal/Validation.js +22 -0
  483. package/dist/internal/Validation.js.map +1 -0
  484. package/dist/internal/Wallet.d.ts +37 -0
  485. package/dist/internal/Wallet.d.ts.map +1 -0
  486. package/dist/internal/Wallet.js +43 -0
  487. package/dist/internal/Wallet.js.map +1 -0
  488. package/dist/worker.d.ts +12 -0
  489. package/dist/worker.d.ts.map +1 -0
  490. package/dist/worker.js +12 -0
  491. package/dist/worker.js.map +1 -0
  492. package/package.json +82 -0
  493. package/src/Api.ts +151 -0
  494. package/src/App.ts +56 -0
  495. package/src/api/account.ts +311 -0
  496. package/src/api/authenticate.ts +1290 -0
  497. package/src/api/authorize.ts +1030 -0
  498. package/src/api/device.ts +874 -0
  499. package/src/api/health.ts +72 -0
  500. package/src/api/lib/AccountStep.ts +335 -0
  501. package/src/api/lib/Auth.ts +134 -0
  502. package/src/api/lib/Consent.ts +339 -0
  503. package/src/api/lib/Cors.ts +107 -0
  504. package/src/api/lib/Database.ts +10 -0
  505. package/src/api/lib/DeviceRequest.ts +265 -0
  506. package/src/api/lib/FirstAccount.ts +90 -0
  507. package/src/api/lib/KeySigner.ts +393 -0
  508. package/src/api/lib/PasskeyLink.ts +162 -0
  509. package/src/api/lib/Session.ts +34 -0
  510. package/src/api/lib/SignInConsent.ts +316 -0
  511. package/src/api/oauth.ts +1282 -0
  512. package/src/api/provider.ts +441 -0
  513. package/src/app/components/Button.tsx +128 -0
  514. package/src/app/components/CodeInput.tsx +186 -0
  515. package/src/app/components/ErrorMessage.tsx +66 -0
  516. package/src/app/components/Grant.tsx +323 -0
  517. package/src/app/components/Input.tsx +48 -0
  518. package/src/app/components/Tooltip.tsx +45 -0
  519. package/src/app/components/icons/BRLA.png +0 -0
  520. package/src/app/components/icons/BRZ.svg +1 -0
  521. package/src/app/components/icons/CHFAU.png +0 -0
  522. package/src/app/components/icons/DLUSD.png +0 -0
  523. package/src/app/components/icons/EURAU.svg +1 -0
  524. package/src/app/components/icons/EURC.e.svg +1 -0
  525. package/src/app/components/icons/GBPA.svg +4 -0
  526. package/src/app/components/icons/GUSD.svg +1 -0
  527. package/src/app/components/icons/MACH.svg +4 -0
  528. package/src/app/components/icons/OUSD.svg +5 -0
  529. package/src/app/components/icons/PRIME.svg +14 -0
  530. package/src/app/components/icons/SBC.svg +1 -0
  531. package/src/app/components/icons/SEKAU.svg +5 -0
  532. package/src/app/components/icons/USD1.svg +30 -0
  533. package/src/app/components/icons/USDB.svg +11 -0
  534. package/src/app/components/icons/USDC.e.svg +1 -0
  535. package/src/app/components/icons/USDT0.svg +1 -0
  536. package/src/app/components/icons/USDY.svg +16 -0
  537. package/src/app/components/icons/USDe.svg +1 -0
  538. package/src/app/components/icons/YLDS.svg +3 -0
  539. package/src/app/components/icons/alphaUSD.svg +1 -0
  540. package/src/app/components/icons/betaUSD.svg +1 -0
  541. package/src/app/components/icons/cUSD.svg +1 -0
  542. package/src/app/components/icons/cbBTC.svg +1 -0
  543. package/src/app/components/icons/frxUSD.svg +1 -0
  544. package/src/app/components/icons/goUSD.svg +5 -0
  545. package/src/app/components/icons/iUSD.svg +1 -0
  546. package/src/app/components/icons/pathUSD.svg +25 -0
  547. package/src/app/components/icons/rUSD.svg +1 -0
  548. package/src/app/components/icons/reUSD.svg +1 -0
  549. package/src/app/components/icons/sUSDe.svg +1 -0
  550. package/src/app/components/icons/siUSD.svg +1 -0
  551. package/src/app/components/icons/stcUSD.svg +1 -0
  552. package/src/app/components/icons/syrupUSDC.svg +5 -0
  553. package/src/app/components/icons/thetaUSD.svg +1 -0
  554. package/src/app/components/icons/wYLDS.svg +10 -0
  555. package/src/app/components/icons/wsrUSD.svg +1 -0
  556. package/src/app/components/logos/OUSD.dark.svg +17 -0
  557. package/src/app/components/logos/OUSD.light.svg +17 -0
  558. package/src/app/crons/cleanup.ts +42 -0
  559. package/src/app/db/auth.ts +416 -0
  560. package/src/app/db/migrations/0000_better_auth.sql +53 -0
  561. package/src/app/db/migrations/0001_oauth_provider.sql +162 -0
  562. package/src/app/db/migrations/0002_device_code.sql +17 -0
  563. package/src/app/db/migrations/0003_realms.sql +27 -0
  564. package/src/app/db/migrations/0004_default_realm.sql +2 -0
  565. package/src/app/db/migrations/0005_passkeys.sql +30 -0
  566. package/src/app/db/migrations/0006_first_accounts.sql +9 -0
  567. package/src/app/db/migrations/0007_pending_keys.sql +13 -0
  568. package/src/app/db/migrations/0008_secp256k1_owners.sql +18 -0
  569. package/src/app/db/migrations/0009_device_requests.sql +8 -0
  570. package/src/app/db/migrations/0010_device_keys.sql +4 -0
  571. package/src/app/db/migrations/meta/0000_snapshot.json +362 -0
  572. package/src/app/db/migrations/meta/0001_snapshot.json +1487 -0
  573. package/src/app/db/migrations/meta/0002_snapshot.json +1603 -0
  574. package/src/app/db/migrations/meta/0003_snapshot.json +1760 -0
  575. package/src/app/db/migrations/meta/0004_snapshot.json +1760 -0
  576. package/src/app/db/migrations/meta/0005_snapshot.json +1911 -0
  577. package/src/app/db/migrations/meta/0006_snapshot.json +1967 -0
  578. package/src/app/db/migrations/meta/0007_snapshot.json +2047 -0
  579. package/src/app/db/migrations/meta/0008_snapshot.json +2157 -0
  580. package/src/app/db/migrations/meta/0009_snapshot.json +2207 -0
  581. package/src/app/db/migrations/meta/0010_snapshot.json +2231 -0
  582. package/src/app/db/migrations/meta/_journal.json +83 -0
  583. package/src/app/db/schema.ts +218 -0
  584. package/src/app/env.ts +49 -0
  585. package/src/app/lib/Client.ts +82 -0
  586. package/src/app/lib/Loader.ts +24 -0
  587. package/src/app/package.json +8 -0
  588. package/src/app/routeTree.gen.ts +198 -0
  589. package/src/app/router.tsx +48 -0
  590. package/src/app/routes/[_].flows.tsx +3001 -0
  591. package/src/app/routes/__root.tsx +91 -0
  592. package/src/app/routes/authorize.tsx +197 -0
  593. package/src/app/routes/choose-account.tsx +111 -0
  594. package/src/app/routes/deposit.tsx +105 -0
  595. package/src/app/routes/device.tsx +227 -0
  596. package/src/app/routes/index.tsx +115 -0
  597. package/src/app/routes/login.tsx +506 -0
  598. package/src/app/screens/Account.tsx +347 -0
  599. package/src/app/screens/Approval.tsx +276 -0
  600. package/src/app/screens/ChooseAccount.tsx +240 -0
  601. package/src/app/screens/Deposit.tsx +762 -0
  602. package/src/app/screens/DeviceApproval.tsx +480 -0
  603. package/src/app/screens/SignIn.tsx +362 -0
  604. package/src/app/screens/chains/base.svg +3 -0
  605. package/src/app/screens/chains/ethereum.svg +11 -0
  606. package/src/app/screens/chains/solana.svg +4 -0
  607. package/src/app/screens/chains/tempo.svg +4 -0
  608. package/src/app/server.ts +204 -0
  609. package/src/app/vite.config.ts +95 -0
  610. package/src/app/void.config.ts +29 -0
  611. package/src/app/zyzz.config.ts +274 -0
  612. package/src/cli/Admin.ts +73 -0
  613. package/src/cli/Apps.ts +29 -0
  614. package/src/cli/Cli.ts +42 -0
  615. package/src/cli/Project.ts +117 -0
  616. package/src/cli/Realms.ts +50 -0
  617. package/src/cli/Session.ts +239 -0
  618. package/src/cli/User.ts +45 -0
  619. package/src/cli/V1.ts +57 -0
  620. package/src/cli/bin.ts +44 -0
  621. package/src/cli/commands/admin/apps/create.ts +101 -0
  622. package/src/cli/commands/admin/apps/delete.ts +38 -0
  623. package/src/cli/commands/admin/apps/index.ts +15 -0
  624. package/src/cli/commands/admin/apps/list.ts +25 -0
  625. package/src/cli/commands/admin/apps/rotate-secret.ts +47 -0
  626. package/src/cli/commands/admin/apps/update.ts +86 -0
  627. package/src/cli/commands/admin/index.ts +14 -0
  628. package/src/cli/commands/admin/migrate.ts +16 -0
  629. package/src/cli/commands/admin/realms/add.ts +40 -0
  630. package/src/cli/commands/admin/realms/index.ts +14 -0
  631. package/src/cli/commands/admin/realms/list.ts +38 -0
  632. package/src/cli/commands/admin/realms/passkeys/index.ts +15 -0
  633. package/src/cli/commands/admin/realms/passkeys/set.ts +44 -0
  634. package/src/cli/commands/admin/realms/privy/index.ts +14 -0
  635. package/src/cli/commands/admin/realms/privy/set.ts +69 -0
  636. package/src/cli/commands/admin/realms/remove.ts +33 -0
  637. package/src/cli/commands/admin/realms/secp256k1/disable.ts +40 -0
  638. package/src/cli/commands/admin/realms/secp256k1/enable.ts +40 -0
  639. package/src/cli/commands/admin/realms/secp256k1/index.ts +19 -0
  640. package/src/cli/commands/admin/realms/set.ts +46 -0
  641. package/src/cli/commands/admin/rotate-key.ts +47 -0
  642. package/src/cli/commands/init.ts +42 -0
  643. package/src/cli/commands/login.ts +32 -0
  644. package/src/cli/commands/logout.ts +19 -0
  645. package/src/cli/commands/whoami.ts +23 -0
  646. package/src/client/Actions.ts +168 -0
  647. package/src/client/Auth.ts +285 -0
  648. package/src/client/Authorization.ts +34 -0
  649. package/src/client/Decorator.ts +410 -0
  650. package/src/client/Key.ts +140 -0
  651. package/src/client/Pending.ts +46 -0
  652. package/src/client/Permissions.ts +39 -0
  653. package/src/client/Provider.ts +18 -0
  654. package/src/client/Step.ts +24 -0
  655. package/src/client/Storage.ts +29 -0
  656. package/src/client/TempoAccount.ts +42 -0
  657. package/src/client/Tokens.ts +27 -0
  658. package/src/client/User.ts +23 -0
  659. package/src/client/actions/account.ts +57 -0
  660. package/src/client/actions/device.ts +151 -0
  661. package/src/client/actions/email.ts +141 -0
  662. package/src/client/actions/oauth.ts +182 -0
  663. package/src/client/actions/passkey.ts +141 -0
  664. package/src/client/actions/provider.ts +70 -0
  665. package/src/client/actions/realm.ts +36 -0
  666. package/src/client/actions/redirect.ts +408 -0
  667. package/src/client/internal/accessKey.ts +54 -0
  668. package/src/client/internal/account.ts +15 -0
  669. package/src/client/internal/api.ts +224 -0
  670. package/src/client/internal/headless.ts +77 -0
  671. package/src/client/internal/indexedDb.ts +44 -0
  672. package/src/client/internal/request.ts +71 -0
  673. package/src/client/internal/store.ts +20 -0
  674. package/src/client.ts +19 -0
  675. package/src/index.ts +6 -0
  676. package/src/internal/Apps.ts +718 -0
  677. package/src/internal/Auth.ts +203 -0
  678. package/src/internal/Authorize.ts +424 -0
  679. package/src/internal/Balance.ts +168 -0
  680. package/src/internal/BodyLimit.ts +36 -0
  681. package/src/internal/Chain.ts +16 -0
  682. package/src/internal/Device.ts +469 -0
  683. package/src/internal/Env.ts +58 -0
  684. package/src/internal/ErrorResponse.ts +854 -0
  685. package/src/internal/Id.ts +41 -0
  686. package/src/internal/KeyAuthorization.ts +1339 -0
  687. package/src/internal/Limits.ts +39 -0
  688. package/src/internal/Log.ts +178 -0
  689. package/src/internal/LogLine.ts +87 -0
  690. package/src/internal/Logout.ts +336 -0
  691. package/src/internal/Migrations.ts +86 -0
  692. package/src/internal/OpenApi.ts +300 -0
  693. package/src/internal/Owner.ts +211 -0
  694. package/src/internal/Passkey.ts +1052 -0
  695. package/src/internal/PendingKey.ts +104 -0
  696. package/src/internal/Privy.ts +402 -0
  697. package/src/internal/Provider.ts +125 -0
  698. package/src/internal/RateLimit.ts +259 -0
  699. package/src/internal/Realm.ts +768 -0
  700. package/src/internal/RequestId.ts +118 -0
  701. package/src/internal/SignInGrant.ts +168 -0
  702. package/src/internal/SigningKey.ts +286 -0
  703. package/src/internal/TempoAccount.ts +342 -0
  704. package/src/internal/TestInbox.ts +51 -0
  705. package/src/internal/Timing.ts +158 -0
  706. package/src/internal/Validation.ts +52 -0
  707. package/src/internal/Wallet.ts +62 -0
  708. package/src/internal/owners/Passkey.ts +72 -0
  709. package/src/internal/owners/Privy.ts +81 -0
  710. package/src/internal/owners/Secp256k1.ts +143 -0
  711. package/src/types/app.d.ts +19 -0
  712. package/src/worker.ts +11 -0
@@ -0,0 +1,170 @@
1
+ /**
2
+ * `tempoId`, a Viem client extension that adds Tempo ID's actions as `client.auth`. It reads the
3
+ * chain from the client, and sets the client's {@link Auth.Account} at each sign-in, so the client
4
+ * sends with the signed-in user's access key.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { Auth, tempoId } from '@tempoxyz/id/client'
9
+ * import { createClient } from 'viem/tempo'
10
+ * import { tempoTestnet } from 'viem/tempo/chains'
11
+ *
12
+ * const client = createClient({
13
+ * account: Auth.account(),
14
+ * chain: tempoTestnet,
15
+ * }).extend(tempoId({ clientId: 'client_…' }))
16
+ *
17
+ * await client.auth.email.signIn({ code, email })
18
+ * await client.token.transferSync({ amount, to, token })
19
+ * ```
20
+ * @module
21
+ */
22
+ import type { Chain, Client, Transport } from 'viem';
23
+ import * as Actions from './Actions.js';
24
+ import * as Auth from './Auth.js';
25
+ import type { Authorization } from './Authorization.js';
26
+ import * as Key from './Key.js';
27
+ import type * as Pending from './Pending.js';
28
+ import type { User } from './User.js';
29
+ /** A client created without `account: Auth.account()`, which the extension sets at sign-in. */
30
+ export declare class AccountRequiredError extends Error {
31
+ readonly name = "Decorator.AccountRequiredError";
32
+ constructor();
33
+ }
34
+ /** A client created without a chain, which the extension reads the instance's `chainId` from. */
35
+ export declare class ChainRequiredError extends Error {
36
+ readonly name = "Decorator.ChainRequiredError";
37
+ constructor();
38
+ }
39
+ /**
40
+ * A sign-in that another sign-in or a sign-out overtook. The client keeps the newer state, so the
41
+ * overtaken authorization is never returned to sign with.
42
+ */
43
+ export declare class SupersededError extends Error {
44
+ readonly name = "Decorator.SupersededError";
45
+ constructor();
46
+ }
47
+ /**
48
+ * Returns a Viem client extension that adds Tempo ID's actions as `client.auth`. Each member calls
49
+ * the action of the same name in `Actions` with one instance, whose `chainId` is the client's chain.
50
+ * Each sign-in sets the client's account to the authorization's, and `signOut` empties it at once.
51
+ * A sign-in that another sign-in or a sign-out overtook throws {@link SupersededError}. Throws
52
+ * {@link ChainRequiredError} for a client without a chain, and {@link AccountRequiredError} for one
53
+ * whose account is not an `Auth.account()`.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * const client = createClient({
58
+ * account: Auth.account(),
59
+ * chain: tempoTestnet,
60
+ * }).extend(tempoId({ clientId: 'client_…' }))
61
+ * ```
62
+ */
63
+ export declare function tempoId(options: tempoId.Options): <transport extends Transport, chain extends Chain>(client: Client<transport, chain, Auth.Account>) => tempoId.Decorator<chain['id']>;
64
+ export declare namespace tempoId {
65
+ /** `Auth.create`'s options, without `chainId`, which the extension reads from the client. */
66
+ type Options = Omit<Auth.create.Options, 'chainId'>;
67
+ /**
68
+ * What the extension adds to a client on the chain `chainId`. Each member's `permissions.chainId`
69
+ * defaults to `chainId`, and an override names another chain.
70
+ */
71
+ type Decorator<chainId extends number> = {
72
+ /** Tempo ID's actions, with the extension's instance. */
73
+ auth: {
74
+ /** Actions for the user's Tempo Account. */
75
+ account: {
76
+ /** `Actions.account.get`. */
77
+ get: () => Promise<Actions.account.get.ReturnType>;
78
+ };
79
+ /**
80
+ * `Actions.authorize`, which sets the client's account, or empties it for an authorization
81
+ * without a key or a user without a session.
82
+ */
83
+ authorize: <const id extends number = chainId, const key extends boolean = true>(options?: Actions.authorize.Options<id, key>) => Promise<Actions.authorize.ReturnType<id, key>>;
84
+ /** Actions for device authorization grants. */
85
+ device: {
86
+ /** `Actions.device.authorize`, whose `wait` sets the client's account. */
87
+ authorize: <const id extends number = chainId>(options?: Actions.device.authorize.Options<id>) => Promise<Actions.device.authorize.ReturnType<id>>;
88
+ };
89
+ /** Actions for sign-in with an emailed code. */
90
+ email: {
91
+ /** `Actions.email.sendCode`. */
92
+ sendCode: (options: Actions.email.sendCode.Options) => Promise<void>;
93
+ /**
94
+ * `Actions.email.signIn`, which sets the client's account, or empties it for a sign-in without
95
+ * a key, or for a refusal whose `signedIn` is `true`. A sign-in that another sign-in or a
96
+ * sign-out overtook throws {@link SupersededError}.
97
+ */
98
+ signIn: <const id extends number = chainId, const key extends boolean = true>(options: Actions.email.signIn.Options<id, key>) => Promise<Actions.email.signIn.ReturnType<id, key>>;
99
+ };
100
+ /** The instance the members call `Actions` with. */
101
+ instance: Auth.Auth;
102
+ /** Actions for the issuer's OAuth endpoints. */
103
+ oauth: {
104
+ /** `Actions.oauth.introspect`. */
105
+ introspect: (options: Actions.oauth.introspect.Options) => Promise<Actions.oauth.introspect.ReturnType>;
106
+ /** `Actions.oauth.jwks`. */
107
+ jwks: () => Promise<Actions.oauth.jwks.ReturnType>;
108
+ /** `Actions.oauth.userInfo`. */
109
+ userInfo: (options: Actions.oauth.userInfo.Options) => Promise<User>;
110
+ };
111
+ /** Actions for sign-in with a passkey. */
112
+ passkey: {
113
+ /**
114
+ * `Actions.passkey.signIn`, which sets the client's account unless it returns a step, as
115
+ * `auth.email.signIn` does. A step or sign-in that another sign-in or a sign-out overtook
116
+ * throws {@link SupersededError}.
117
+ */
118
+ signIn: <const id extends number = chainId, const key extends boolean = true>(options?: Actions.passkey.signIn.Options<id, key>) => Promise<Actions.passkey.signIn.ReturnType<id, key>>;
119
+ };
120
+ /** Actions for sign-in with an identity provider, such as Google or SSO. */
121
+ provider: {
122
+ /** `Actions.provider.list`. */
123
+ list: () => Promise<Actions.provider.list.ReturnType>;
124
+ /** `Actions.provider.signIn`. */
125
+ signIn: (options: Actions.provider.signIn.Options) => void;
126
+ };
127
+ /** Actions for the realms the app reaches. */
128
+ realm: {
129
+ /** `Actions.realm.list`. */
130
+ list: () => Promise<Actions.realm.list.ReturnType>;
131
+ };
132
+ /** Actions for sign-in through a redirect to Tempo ID's pages. */
133
+ redirect: {
134
+ /**
135
+ * `Actions.redirect.complete`, which sets the client's account, or empties it for a sign-in
136
+ * without a key. The first call settles the page load's redirect, and later calls return
137
+ * the same result.
138
+ */
139
+ complete: <const key extends boolean = true>(options?: Actions.redirect.complete.Options<key>) => Promise<Actions.redirect.complete.ReturnType<key>>;
140
+ /** `Actions.redirect.createUrl`. */
141
+ createUrl: <const key extends boolean = true>(options?: Actions.redirect.createUrl.Options<key>) => Promise<Actions.redirect.createUrl.ReturnType<key>>;
142
+ /**
143
+ * `Actions.redirect.handleCallback`, which sets the client's account, or empties it for a
144
+ * sign-in without a key.
145
+ */
146
+ handleCallback: <const pending extends Pending.Pending | Pending.WithoutKey = Pending.Pending>(options: Actions.redirect.handleCallback.Options<pending>) => Promise<Actions.redirect.handleCallback.ReturnType<pending>>;
147
+ /** `Actions.redirect.start`. */
148
+ start: (options?: Actions.redirect.start.Options) => Promise<void>;
149
+ };
150
+ /** `Actions.refresh`. */
151
+ refresh: (options: Actions.refresh.Options) => ReturnType<typeof Actions.refresh>;
152
+ /**
153
+ * Rebuilds a stored authorization's account with `Key.toAccount`, sets the client's account to
154
+ * it, and returns the authorization. `Key.from` fills the key's `chainId` when a sign-in stored
155
+ * before it existed leaves it out. Throws `Key.AccessKeyRequiredError` for a key that carries
156
+ * no material without the `accessKey` the app supplied.
157
+ */
158
+ restore: <id extends number = chainId>(authorization: Omit<Authorization<id>, 'account' | 'key'> & {
159
+ /** The stored key, with or without its `chainId`. */
160
+ key: Key.from.Value<id>;
161
+ }, options?: Key.toAccount.Options) => Authorization<id>;
162
+ /**
163
+ * `Actions.signOut`, which empties the client's account before the request, even when it
164
+ * fails, and discards any sign-in still pending.
165
+ */
166
+ signOut: () => Promise<void>;
167
+ };
168
+ };
169
+ }
170
+ //# sourceMappingURL=Decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Decorator.d.ts","sourceRoot":"","sources":["../../src/client/Decorator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ import * as Actions from './Actions.js';
2
+ import * as Auth from './Auth.js';
3
+ import * as AccountState from './internal/account.js';
4
+ import * as Key from './Key.js';
5
+ /** A client created without `account: Auth.account()`, which the extension sets at sign-in. */
6
+ export class AccountRequiredError extends Error {
7
+ name = 'Decorator.AccountRequiredError';
8
+ constructor() {
9
+ super('The client has no Tempo ID account. Create the client with `account: Auth.account()`.');
10
+ }
11
+ }
12
+ /** A client created without a chain, which the extension reads the instance's `chainId` from. */
13
+ export class ChainRequiredError extends Error {
14
+ name = 'Decorator.ChainRequiredError';
15
+ constructor() {
16
+ super('The client has no chain. Create the client with a Tempo `chain`.');
17
+ }
18
+ }
19
+ /**
20
+ * A sign-in that another sign-in or a sign-out overtook. The client keeps the newer state, so the
21
+ * overtaken authorization is never returned to sign with.
22
+ */
23
+ export class SupersededError extends Error {
24
+ name = 'Decorator.SupersededError';
25
+ constructor() {
26
+ super('Another sign-in or a sign-out completed while this sign-in was pending. Sign in again.');
27
+ }
28
+ }
29
+ /**
30
+ * Returns a Viem client extension that adds Tempo ID's actions as `client.auth`. Each member calls
31
+ * the action of the same name in `Actions` with one instance, whose `chainId` is the client's chain.
32
+ * Each sign-in sets the client's account to the authorization's, and `signOut` empties it at once.
33
+ * A sign-in that another sign-in or a sign-out overtook throws {@link SupersededError}. Throws
34
+ * {@link ChainRequiredError} for a client without a chain, and {@link AccountRequiredError} for one
35
+ * whose account is not an `Auth.account()`.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * const client = createClient({
40
+ * account: Auth.account(),
41
+ * chain: tempoTestnet,
42
+ * }).extend(tempoId({ clientId: 'client_…' }))
43
+ * ```
44
+ */
45
+ export function tempoId(options) {
46
+ return (client) => {
47
+ if (!client.chain)
48
+ throw new ChainRequiredError();
49
+ const state = client.account?.[AccountState.key];
50
+ if (!state)
51
+ throw new AccountRequiredError();
52
+ const auth = Auth.create({ ...options, chainId: client.chain.id });
53
+ // Counts changes to the client's account. Each sign-in applies its result only when no other
54
+ // sign-in or sign-out completed after it began. A stale result never replaces a newer one,
55
+ // and a sign-in still pending at sign-out never signs the client back in.
56
+ let version = 0;
57
+ // The version that the latest sign-out produced, until another change follows it.
58
+ let signedOut;
59
+ // The redirect result that `complete` settled on this page load.
60
+ let completing;
61
+ /**
62
+ * Begins an operation that changes the client's account. `apply` applies its result: the
63
+ * account to sign with, or `undefined` to stop signing. `check` accepts a result that changes
64
+ * no account, such as a step. Applying an account, or checking a step, that a newer change
65
+ * overtook throws {@link SupersededError}. The caller never holds a result that the
66
+ * client's newer state contradicts. `settle` applies a result's account, or empties the account
67
+ * for a result without a key. `fail` rethrows the operation's error, or throws `SupersededError`
68
+ * when a newer change overtook it, so the caller never acts on a stale refusal. A refusal marked
69
+ * `signedIn` also empties the account, since the user whom the sign-in signed in does not hold it.
70
+ */
71
+ const begin = () => {
72
+ const started = version;
73
+ // A sign-in that finishes after sign-out can set a new server session, so it ends that
74
+ // session again, unless a newer change already followed the sign-out.
75
+ const superseded = async () => {
76
+ if (signedOut === version)
77
+ await Actions.signOut(auth);
78
+ return new SupersededError();
79
+ };
80
+ return {
81
+ async apply(account) {
82
+ if (version !== started) {
83
+ if (account)
84
+ throw await superseded();
85
+ return;
86
+ }
87
+ state.account = account;
88
+ version++;
89
+ },
90
+ async check() {
91
+ if (version !== started)
92
+ throw await superseded();
93
+ },
94
+ // An arrow function, which `catch` takes unbound.
95
+ fail: async (error) => {
96
+ if (version !== started)
97
+ throw await superseded();
98
+ if (error instanceof Auth.RequestError && error.signedIn) {
99
+ state.account = undefined;
100
+ version++;
101
+ }
102
+ throw error;
103
+ },
104
+ async settle(result) {
105
+ if ('account' in result)
106
+ return this.apply(result.account);
107
+ // The check and the change run with no `await` between them, so no other change lands
108
+ // after the check, and an overtaken result throws even without an account.
109
+ if (version !== started)
110
+ throw await superseded();
111
+ state.account = undefined;
112
+ version++;
113
+ },
114
+ };
115
+ };
116
+ return {
117
+ auth: {
118
+ account: {
119
+ get: () => Actions.account.get(auth),
120
+ },
121
+ async authorize(options = {}) {
122
+ const change = begin();
123
+ const authorization = await Actions.authorize(auth, options);
124
+ // Without a session, the client stops signing as the user it last authorized.
125
+ if (authorization)
126
+ await change.settle(authorization);
127
+ else
128
+ await change.apply(undefined);
129
+ return authorization;
130
+ },
131
+ device: {
132
+ async authorize(options = {}) {
133
+ const change = begin();
134
+ const device = await Actions.device.authorize(auth, options);
135
+ return {
136
+ ...device,
137
+ async wait() {
138
+ const authorization = await device.wait();
139
+ await change.apply(authorization.account);
140
+ return authorization;
141
+ },
142
+ };
143
+ },
144
+ },
145
+ email: {
146
+ sendCode: (options) => Actions.email.sendCode(auth, options),
147
+ async signIn(options) {
148
+ const change = begin();
149
+ const authorization = await Actions.email
150
+ .signIn(auth, options)
151
+ .catch(change.fail);
152
+ await change.settle(authorization);
153
+ return authorization;
154
+ },
155
+ },
156
+ instance: auth,
157
+ oauth: {
158
+ introspect: (options) => Actions.oauth.introspect(auth, options),
159
+ jwks: () => Actions.oauth.jwks(auth),
160
+ userInfo: (options) => Actions.oauth.userInfo(auth, options),
161
+ },
162
+ passkey: {
163
+ async signIn(options = {}) {
164
+ const change = begin();
165
+ const result = await Actions.passkey
166
+ .signIn(auth, options)
167
+ .catch(change.fail);
168
+ if ('step' in result)
169
+ await change.check();
170
+ else
171
+ await change.settle(result);
172
+ return result;
173
+ },
174
+ },
175
+ provider: {
176
+ list: () => Actions.provider.list(auth),
177
+ signIn: (options) => Actions.provider.signIn(auth, options),
178
+ },
179
+ realm: {
180
+ list: () => Actions.realm.list(auth),
181
+ },
182
+ redirect: {
183
+ complete(options = {}) {
184
+ // A page load settles its redirect once, so a later call never applies a result that a
185
+ // newer sign-in replaced.
186
+ completing ??= (async () => {
187
+ const change = begin();
188
+ const authorization = await Actions.redirect.complete(auth, options);
189
+ // `undefined` means the page is not a callback, which shows nothing about the session.
190
+ if (authorization)
191
+ await change.settle(authorization);
192
+ return authorization;
193
+ })();
194
+ // The first call's `key` typed the settled result, which later calls share.
195
+ return completing;
196
+ },
197
+ createUrl: (options = {}) => Actions.redirect.createUrl(auth, options),
198
+ async handleCallback(options) {
199
+ const change = begin();
200
+ const authorization = await Actions.redirect.handleCallback(auth, options);
201
+ await change.settle(authorization);
202
+ return authorization;
203
+ },
204
+ start: (options = {}) => Actions.redirect.start(auth, options),
205
+ },
206
+ refresh: (options) => Actions.refresh(auth, options),
207
+ restore: (authorization, options = {}) => {
208
+ // A sign-in stored before `Key.chainId` existed gains it here.
209
+ const key = Key.from(authorization.key);
210
+ const account = Key.toAccount(key, options);
211
+ state.account = account;
212
+ version++;
213
+ return { ...authorization, account, key };
214
+ },
215
+ async signOut() {
216
+ // The client stops signing at once, even when the request fails, and any sign-in still
217
+ // pending is discarded, since the user asked to leave.
218
+ state.account = undefined;
219
+ version++;
220
+ signedOut = version;
221
+ await Actions.signOut(auth);
222
+ },
223
+ },
224
+ };
225
+ };
226
+ }
227
+ //# sourceMappingURL=Decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Decorator.js","sourceRoot":"","sources":["../../src/client/Decorator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * An app's access key on a user's Tempo Account, as the app stores it: the account it acts for,
3
+ * the authorization Tempo ID signed for it, and the key material the library generated.
4
+ * @module
5
+ */
6
+ import { type Address, type Hex, type WebCryptoP256 } from 'ox';
7
+ import { KeyAuthorization } from 'ox/tempo';
8
+ import type { OneOf } from 'viem';
9
+ import { Account } from 'viem/tempo';
10
+ /**
11
+ * A stored access key. A browser key is a non-extractable WebCrypto key pair, which IndexedDB
12
+ * keeps without exporting. Elsewhere it is a secp256k1 private key, as JSON for a cookie or a file.
13
+ * A key the app supplied as `accessKey` carries no material.
14
+ */
15
+ export type Key<chainId extends number = number> = {
16
+ /** The Tempo Account the key acts for. */
17
+ account: Address.Address;
18
+ /** The chain the key acts on, from its authorization. */
19
+ chainId: chainId;
20
+ /** The signed authorization, in the node's RPC format. */
21
+ keyAuthorization: KeyAuthorization.Rpc;
22
+ } & Material;
23
+ /** The key material the library generated for a sign-in. */
24
+ export type Material = OneOf<{
25
+ /** A non-extractable WebCrypto P256 key pair, in a browser. */
26
+ keyPair: WebCryptoP256.createKeyPair.ReturnType;
27
+ } | {
28
+ /** A secp256k1 private key, outside a browser. Keep it as secret as a session. */
29
+ privateKey: Hex.Hex;
30
+ } | {}>;
31
+ /** A key the app supplied as `accessKey`, which `toAccount` needs to rebuild its account. */
32
+ export declare class AccessKeyRequiredError extends Error {
33
+ readonly name = "Key.AccessKeyRequiredError";
34
+ constructor();
35
+ }
36
+ /**
37
+ * Whether the key's authorization is expired, so a new sign-in must authorize a new key.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * if (Key.expired(saved.key)) await signInAgain()
42
+ * ```
43
+ */
44
+ export declare function expired(key: Key): boolean;
45
+ /**
46
+ * Instantiates a {@link Key}. Fills `chainId` from the key authorization when the value leaves it
47
+ * out, as a key stored before `chainId` existed does.
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * const key = Key.from(JSON.parse(saved).key)
52
+ * ```
53
+ */
54
+ export declare function from<chainId extends number = number>(value: from.Value<chainId>): Key<chainId>;
55
+ export declare namespace from {
56
+ type Value<chainId extends number = number> = {
57
+ /** The Tempo Account the key acts for. */
58
+ account: Address.Address;
59
+ /** The chain the key acts on. Defaults to the key authorization's. */
60
+ chainId?: chainId | undefined;
61
+ /** The signed authorization, in the node's RPC format. */
62
+ keyAuthorization: KeyAuthorization.Rpc;
63
+ } & Material;
64
+ }
65
+ /**
66
+ * Returns the key as a Viem access key account acting for its Tempo Account. Viem attaches the
67
+ * authorization to transactions until the chain registers the key. A key the app supplied signs
68
+ * with that `accessKey`. Throws {@link AccessKeyRequiredError} when neither holds key material.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * import { Key } from '@tempoxyz/id/client'
73
+ *
74
+ * const account = Key.toAccount(key)
75
+ * await client.token.transferSync({ account, amount, to, token })
76
+ * ```
77
+ */
78
+ export declare function toAccount(key: Key, options?: toAccount.Options): Account.AccessKeyAccount;
79
+ export declare namespace toAccount {
80
+ type Options = {
81
+ /** The key the app supplied to the sign-in, for a key that carries no material. */
82
+ accessKey?: Account.Account | undefined;
83
+ };
84
+ }
85
+ //# sourceMappingURL=Key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Key.d.ts","sourceRoot":"","sources":["../../src/client/Key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAa,KAAK,aAAa,EAAE,MAAM,IAAI,CAAA;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AACjC,OAAO,EAAE,OAAO,EAA2B,MAAM,YAAY,CAAA;AAE7D;;;;GAIG;AACH,MAAM,MAAM,GAAG,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI;IACjD,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,yDAAyD;IACzD,OAAO,EAAE,OAAO,CAAA;IAChB,0DAA0D;IAC1D,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAA;CACvC,GAAG,QAAQ,CAAA;AAEZ,4DAA4D;AAC5D,MAAM,MAAM,QAAQ,GAAG,KAAK,CACxB;IACE,+DAA+D;IAC/D,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,UAAU,CAAA;CAChD,GACD;IACE,kFAAkF;IAClF,UAAU,EAAE,GAAG,CAAC,GAAG,CAAA;CACpB,GACD,EAAE,CACL,CAAA;AAED,6FAA6F;AAC7F,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAkB,IAAI,gCAA+B;IAErD,cAEC;CACF;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,WAG/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAClD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GACzB,GAAG,CAAC,OAAO,CAAC,CAOd;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAK,KAAK,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI;QAC5C,0CAA0C;QAC1C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;QACxB,sEAAsE;QACtE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC7B,0DAA0D;QAC1D,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAA;KACvC,GAAG,QAAQ,CAAA;CACb;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,GAAG,EACR,OAAO,GAAE,SAAS,CAAC,OAAY,GAC9B,OAAO,CAAC,gBAAgB,CA0B1B;AAED,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC,KAAK,OAAO,GAAG;QACb,mFAAmF;QACnF,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,SAAS,CAAA;KACxC,CAAA;CACF"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * An app's access key on a user's Tempo Account, as the app stores it: the account it acts for,
3
+ * the authorization Tempo ID signed for it, and the key material the library generated.
4
+ * @module
5
+ */
6
+ import { PublicKey } from 'ox';
7
+ import { KeyAuthorization } from 'ox/tempo';
8
+ import { Account, KeyAuthorizationManager } from 'viem/tempo';
9
+ /** A key the app supplied as `accessKey`, which `toAccount` needs to rebuild its account. */
10
+ export class AccessKeyRequiredError extends Error {
11
+ name = 'Key.AccessKeyRequiredError';
12
+ constructor() {
13
+ super('The key carries no material. Pass the `accessKey` the app supplied.');
14
+ }
15
+ }
16
+ /**
17
+ * Whether the key's authorization is expired, so a new sign-in must authorize a new key.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * if (Key.expired(saved.key)) await signInAgain()
22
+ * ```
23
+ */
24
+ export function expired(key) {
25
+ const { expiry } = KeyAuthorization.fromRpc(key.keyAuthorization);
26
+ return Boolean(expiry) && expiry * 1000 <= Date.now();
27
+ }
28
+ /**
29
+ * Instantiates a {@link Key}. Fills `chainId` from the key authorization when the value leaves it
30
+ * out, as a key stored before `chainId` existed does.
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * const key = Key.from(JSON.parse(saved).key)
35
+ * ```
36
+ */
37
+ export function from(value) {
38
+ if (value.chainId !== undefined)
39
+ return { ...value, chainId: value.chainId };
40
+ // The node signs the chain ID the request named, so it is the request's literal.
41
+ const chainId = Number(KeyAuthorization.fromRpc(value.keyAuthorization).chainId);
42
+ return { ...value, chainId };
43
+ }
44
+ /**
45
+ * Returns the key as a Viem access key account acting for its Tempo Account. Viem attaches the
46
+ * authorization to transactions until the chain registers the key. A key the app supplied signs
47
+ * with that `accessKey`. Throws {@link AccessKeyRequiredError} when neither holds key material.
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * import { Key } from '@tempoxyz/id/client'
52
+ *
53
+ * const account = Key.toAccount(key)
54
+ * await client.token.transferSync({ account, amount, to, token })
55
+ * ```
56
+ */
57
+ export function toAccount(key, options = {}) {
58
+ const { accessKey } = options;
59
+ const keyAuthorization = KeyAuthorization.fromRpc(key.keyAuthorization);
60
+ const keyAuthorizationManager = KeyAuthorizationManager.memory();
61
+ // The memory manager stores synchronously, so the authorization is in place before the account
62
+ // is returned.
63
+ void keyAuthorizationManager.set({
64
+ accessKey: keyAuthorization.address,
65
+ address: key.account,
66
+ chainId: Number(keyAuthorization.chainId),
67
+ }, keyAuthorization);
68
+ const access = { access: key.account, keyAuthorizationManager };
69
+ if (key.keyPair)
70
+ return Account.fromWebCryptoP256(key.keyPair, access);
71
+ if (key.privateKey)
72
+ return Account.fromSecp256k1(key.privateKey, access);
73
+ if (!accessKey)
74
+ throw new AccessKeyRequiredError();
75
+ // A raw signature is the key's own, which the bound account wraps for the Tempo Account.
76
+ return Account.from({
77
+ ...access,
78
+ keyType: accessKey.keyType,
79
+ publicKey: PublicKey.fromHex(accessKey.publicKey),
80
+ sign: (parameters) => accessKey.sign({ ...parameters, raw: true }),
81
+ });
82
+ }
83
+ //# sourceMappingURL=Key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Key.js","sourceRoot":"","sources":["../../src/client/Key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAA0B,SAAS,EAAsB,MAAM,IAAI,CAAA;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AA6B7D,6FAA6F;AAC7F,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC7B,IAAI,GAAG,4BAA4B,CAAA;IAErD;QACE,KAAK,CAAC,qEAAqE,CAAC,CAAA;IAC9E,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,GAAQ;IAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACjE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,MAAO,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;AACxD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,IAAI,CAClB,KAA0B;IAE1B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;IAC5E,iFAAiF;IACjF,MAAM,OAAO,GAAG,MAAM,CACpB,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAC9C,CAAA;IACZ,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAA;AAC9B,CAAC;AAaD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CACvB,GAAQ,EACR,OAAO,GAAsB,EAAE;IAE/B,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IAC7B,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACvE,MAAM,uBAAuB,GAAG,uBAAuB,CAAC,MAAM,EAAE,CAAA;IAChE,+FAA+F;IAC/F,eAAe;IACf,KAAK,uBAAuB,CAAC,GAAG,CAC9B;QACE,SAAS,EAAE,gBAAgB,CAAC,OAAO;QACnC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;KAC1C,EACD,gBAAgB,CACjB,CAAA;IACD,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,uBAAuB,EAAE,CAAA;IAE/D,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACtE,IAAI,GAAG,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IACxE,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,sBAAsB,EAAE,CAAA;IAClD,yFAAyF;IACzF,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,GAAG,MAAM;QACT,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;QACjD,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;KACnE,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * A sign-in redirect in progress, which an app keeps until Tempo ID redirects back.
3
+ * @module
4
+ */
5
+ import type * as Key from './Key.js';
6
+ /**
7
+ * A sign-in redirect in progress: what the app keeps until Tempo ID redirects back, with the
8
+ * material of the new access key the callback authorizes. {@link WithoutKey} is a redirect that
9
+ * authorizes no key.
10
+ */
11
+ export type Pending = Key.Material & Base & {
12
+ /** Absent, since the redirect authorizes a key. */
13
+ key?: undefined;
14
+ };
15
+ /** What every sign-in redirect keeps. */
16
+ type Base = {
17
+ /** Where Tempo ID redirects back to, which the code exchange repeats. */
18
+ redirectUri: string;
19
+ /** The value the callback must echo, so a forged callback is refused. */
20
+ state: string;
21
+ /** The PKCE verifier that redeems the code. */
22
+ verifier: string;
23
+ };
24
+ /** A redirect that authorizes no access key. */
25
+ export type WithoutKey = Base & {
26
+ /** `false`, since the redirect authorizes no key. */
27
+ key: false;
28
+ };
29
+ /**
30
+ * Instantiates a {@link Pending}, or a {@link WithoutKey}.
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * const pending = Pending.from(await unseal(c, 'oauth'))
35
+ * ```
36
+ */
37
+ export declare function from<const value extends Pending | WithoutKey>(value: value): value;
38
+ export {};
39
+ //# sourceMappingURL=Pending.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pending.d.ts","sourceRoot":"","sources":["../../src/client/Pending.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU,CAAA;AAEpC;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,GAChC,IAAI,GAAG;IACL,mDAAmD;IACnD,GAAG,CAAC,EAAE,SAAS,CAAA;CAChB,CAAA;AAEH,yCAAyC;AACzC,KAAK,IAAI,GAAG;IACV,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAA;IACb,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,gDAAgD;AAChD,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG;IAC9B,qDAAqD;IACrD,GAAG,EAAE,KAAK,CAAA;CACX,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,OAAO,GAAG,UAAU,EAC3D,KAAK,EAAE,KAAK,GACX,KAAK,CAEP"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Instantiates a {@link Pending}, or a {@link WithoutKey}.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const pending = Pending.from(await unseal(c, 'oauth'))
7
+ * ```
8
+ */
9
+ export function from(value) {
10
+ return value;
11
+ }
12
+ //# sourceMappingURL=Pending.js.map