@tempoxyz/id 0.0.0-pr-192.sha-ffc93d6 → 0.0.0-pr-331.sha-b603cbf

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 (267) hide show
  1. package/README.md +3 -0
  2. package/dist/Admin.d.ts +51 -0
  3. package/dist/Admin.d.ts.map +1 -0
  4. package/dist/Admin.js +52 -0
  5. package/dist/Admin.js.map +1 -0
  6. package/dist/admin/Env.d.ts +42 -0
  7. package/dist/admin/Env.d.ts.map +1 -0
  8. package/dist/admin/Env.js +2 -0
  9. package/dist/admin/Env.js.map +1 -0
  10. package/dist/admin/app/client/.assetsignore +2 -0
  11. package/dist/admin/app/client/assets/GeistMono-Variable-BRXCGrxA.woff2 +0 -0
  12. package/dist/admin/app/client/assets/Inter-cyrillic-e3OmmzmJ.woff2 +0 -0
  13. package/dist/admin/app/client/assets/Inter-cyrillic-ext-DOWZeO4Q.woff2 +0 -0
  14. package/dist/admin/app/client/assets/Inter-greek-BD3ujQlX.woff2 +0 -0
  15. package/dist/admin/app/client/assets/Inter-greek-ext-CXEwbus4.woff2 +0 -0
  16. package/dist/admin/app/client/assets/Inter-latin-BDFm4vTb.woff2 +0 -0
  17. package/dist/admin/app/client/assets/Inter-latin-ext-E7a9JEPe.woff2 +0 -0
  18. package/dist/admin/app/client/assets/Inter-symbols-DEch7Rxr.woff2 +0 -0
  19. package/dist/admin/app/client/assets/Inter-vietnamese-Bg9723vR.woff2 +0 -0
  20. package/dist/admin/app/client/assets/index-2OAWXAPd.js +14 -0
  21. package/dist/admin/app/client/assets/index-BWqWX6La.css +1 -0
  22. package/dist/admin/app/client/assets/reset-co-CHrff.css +1 -0
  23. package/dist/admin/app/client/assets/rolldown-runtime-WkwZ5CU-.js +1 -0
  24. package/dist/admin/app/client/assets/routes-MNZtzL8a.css +1 -0
  25. package/dist/admin/app/client/assets/routes-kYsk94oq.js +1 -0
  26. package/dist/admin/app/server/.vite/manifest.json +320 -0
  27. package/dist/admin/app/server/assets/GeistMono-Variable-BRXCGrxA.woff2 +0 -0
  28. package/dist/admin/app/server/assets/Inter-cyrillic-e3OmmzmJ.woff2 +0 -0
  29. package/dist/admin/app/server/assets/Inter-cyrillic-ext-DOWZeO4Q.woff2 +0 -0
  30. package/dist/admin/app/server/assets/Inter-greek-BD3ujQlX.woff2 +0 -0
  31. package/dist/admin/app/server/assets/Inter-greek-ext-CXEwbus4.woff2 +0 -0
  32. package/dist/admin/app/server/assets/Inter-latin-BDFm4vTb.woff2 +0 -0
  33. package/dist/admin/app/server/assets/Inter-latin-ext-E7a9JEPe.woff2 +0 -0
  34. package/dist/admin/app/server/assets/Inter-symbols-DEch7Rxr.woff2 +0 -0
  35. package/dist/admin/app/server/assets/Inter-vietnamese-Bg9723vR.woff2 +0 -0
  36. package/dist/admin/app/server/assets/_tanstack-start-manifest_v-79jEv39V.js +1 -0
  37. package/dist/admin/app/server/assets/arktype-aI7TBD0R-D1R3Byo5.js +2 -0
  38. package/dist/admin/app/server/assets/arktype-aI7TBD0R-D1R3Byo5.js.map +1 -0
  39. package/dist/admin/app/server/assets/async-local-storage-DHUUbDdH.js +2 -0
  40. package/dist/admin/app/server/assets/async-local-storage-DHUUbDdH.js.map +1 -0
  41. package/dist/admin/app/server/assets/convert-BIC8n32x.js +2 -0
  42. package/dist/admin/app/server/assets/convert-BIC8n32x.js.map +1 -0
  43. package/dist/admin/app/server/assets/cookie-C4vZVqKH.js +2 -0
  44. package/dist/admin/app/server/assets/cookie-C4vZVqKH.js.map +1 -0
  45. package/dist/admin/app/server/assets/cookie-CtN3s9oH.css +1 -0
  46. package/dist/admin/app/server/assets/default-u_dwuiYb-Bm4vFBlA.js +2 -0
  47. package/dist/admin/app/server/assets/default-u_dwuiYb-Bm4vFBlA.js.map +1 -0
  48. package/dist/admin/app/server/assets/effect-QlVUlMFu-CZ2pslRQ.js +2 -0
  49. package/dist/admin/app/server/assets/effect-QlVUlMFu-CZ2pslRQ.js.map +1 -0
  50. package/dist/admin/app/server/assets/empty-plugin-adapters-BaGcmrjC.js +2 -0
  51. package/dist/admin/app/server/assets/empty-plugin-adapters-BaGcmrjC.js.map +1 -0
  52. package/dist/admin/app/server/assets/esm-C6SW--yt.js +4 -0
  53. package/dist/admin/app/server/assets/esm-C6SW--yt.js.map +1 -0
  54. package/dist/admin/app/server/assets/index-CLddUTqr-BZ4S36uu.js +2 -0
  55. package/dist/admin/app/server/assets/index-CLddUTqr-BZ4S36uu.js.map +1 -0
  56. package/dist/admin/app/server/assets/index-DZEfthgZ-DLoGRVqi.js +2 -0
  57. package/dist/admin/app/server/assets/index-DZEfthgZ-DLoGRVqi.js.map +1 -0
  58. package/dist/admin/app/server/assets/reset-co-CHrff.css +1 -0
  59. package/dist/admin/app/server/assets/rolldown-runtime-BWaJ3C7D.js +1 -0
  60. package/dist/admin/app/server/assets/router-BJCmvGlS.js +3 -0
  61. package/dist/admin/app/server/assets/router-BJCmvGlS.js.map +1 -0
  62. package/dist/admin/app/server/assets/router-Cbo1RPkb.css +1 -0
  63. package/dist/admin/app/server/assets/routes-H0Uv-wD-.js +2 -0
  64. package/dist/admin/app/server/assets/routes-H0Uv-wD-.js.map +1 -0
  65. package/dist/admin/app/server/assets/routes-MNZtzL8a.css +1 -0
  66. package/dist/admin/app/server/assets/server-Dp3ybuaF.js +77 -0
  67. package/dist/admin/app/server/assets/server-Dp3ybuaF.js.map +1 -0
  68. package/dist/admin/app/server/assets/standard-json-DY77efq0.js +2 -0
  69. package/dist/admin/app/server/assets/standard-json-DY77efq0.js.map +1 -0
  70. package/dist/admin/app/server/assets/standard-json-ig2t0wRt.js +2 -0
  71. package/dist/admin/app/server/assets/standard-json-ig2t0wRt.js.map +1 -0
  72. package/dist/admin/app/server/assets/standard-json-t-LNckA6.js +2 -0
  73. package/dist/admin/app/server/assets/standard-json-t-LNckA6.js.map +1 -0
  74. package/dist/admin/app/server/assets/standard-openapi-CONmVRl8.js +2 -0
  75. package/dist/admin/app/server/assets/standard-openapi-CONmVRl8.js.map +1 -0
  76. package/dist/admin/app/server/assets/start-C63VetBp.js +2 -0
  77. package/dist/admin/app/server/assets/start-C63VetBp.js.map +1 -0
  78. package/dist/admin/app/server/assets/sury-CWZTCd75-dqNvKm8e.js +2 -0
  79. package/dist/admin/app/server/assets/sury-CWZTCd75-dqNvKm8e.js.map +1 -0
  80. package/dist/admin/app/server/assets/typebox-Dei93FPO-D_lCVdAz.js +2 -0
  81. package/dist/admin/app/server/assets/typebox-Dei93FPO-D_lCVdAz.js.map +1 -0
  82. package/dist/admin/app/server/assets/valibot--1zFm7rT-Dijk_1Zb.js +2 -0
  83. package/dist/admin/app/server/assets/valibot--1zFm7rT-Dijk_1Zb.js.map +1 -0
  84. package/dist/admin/app/server/assets/valibot-D_HTw1Gn-tlW7HLMp.js +2 -0
  85. package/dist/admin/app/server/assets/valibot-D_HTw1Gn-tlW7HLMp.js.map +1 -0
  86. package/dist/admin/app/server/assets/worker-entry-1I-pge_g.js +87 -0
  87. package/dist/admin/app/server/assets/worker-entry-1I-pge_g.js.map +1 -0
  88. package/dist/admin/app/server/assets/zod-Bwrt9trS-RavM4bLF.js +2 -0
  89. package/dist/admin/app/server/assets/zod-Bwrt9trS-RavM4bLF.js.map +1 -0
  90. package/dist/admin/app/server/assets/zod-DSgpEGAE-7QASpGiW.js +2 -0
  91. package/dist/admin/app/server/assets/zod-DSgpEGAE-7QASpGiW.js.map +1 -0
  92. package/dist/admin/app/server/index.js +1 -0
  93. package/dist/admin/app/server/wrangler.json +1 -0
  94. package/dist/admin/index.d.ts +15 -0
  95. package/dist/admin/index.d.ts.map +1 -0
  96. package/dist/admin/index.js +15 -0
  97. package/dist/admin/index.js.map +1 -0
  98. package/dist/app/server/assets/Grant-D_tun0mF.js.map +1 -1
  99. package/dist/app/server/index.js +3 -3
  100. package/dist/app/server/index.js.map +1 -1
  101. package/dist/cli/AdminApi.d.ts +35 -0
  102. package/dist/cli/AdminApi.d.ts.map +1 -0
  103. package/dist/cli/AdminApi.js +47 -0
  104. package/dist/cli/AdminApi.js.map +1 -0
  105. package/dist/cli/Cli.d.ts +8 -1
  106. package/dist/cli/Cli.d.ts.map +1 -1
  107. package/dist/cli/Cli.js +9 -6
  108. package/dist/cli/Cli.js.map +1 -1
  109. package/dist/cli/bin.js +23 -4
  110. package/dist/cli/bin.js.map +1 -1
  111. package/dist/client/Actions.d.ts +1 -0
  112. package/dist/client/Actions.d.ts.map +1 -1
  113. package/dist/client/Actions.js +1 -0
  114. package/dist/client/Actions.js.map +1 -1
  115. package/dist/client/Admin.d.ts +77 -0
  116. package/dist/client/Admin.d.ts.map +1 -0
  117. package/dist/client/Admin.js +35 -0
  118. package/dist/client/Admin.js.map +1 -0
  119. package/dist/client/Auth.d.ts +1 -1
  120. package/dist/client/Auth.d.ts.map +1 -1
  121. package/dist/client/Auth.js.map +1 -1
  122. package/dist/client/actions/admin/apps.d.ts +131 -0
  123. package/dist/client/actions/admin/apps.d.ts.map +1 -0
  124. package/dist/client/actions/admin/apps.js +102 -0
  125. package/dist/client/actions/admin/apps.js.map +1 -0
  126. package/dist/client/actions/admin.d.ts +6 -0
  127. package/dist/client/actions/admin.d.ts.map +1 -0
  128. package/dist/client/actions/admin.js +6 -0
  129. package/dist/client/actions/admin.js.map +1 -0
  130. package/dist/client.d.ts +1 -0
  131. package/dist/client.d.ts.map +1 -1
  132. package/dist/client.js +1 -0
  133. package/dist/client.js.map +1 -1
  134. package/dist/internal/ErrorResponse.d.ts +20 -0
  135. package/dist/internal/ErrorResponse.d.ts.map +1 -1
  136. package/dist/internal/ErrorResponse.js +35 -0
  137. package/dist/internal/ErrorResponse.js.map +1 -1
  138. package/dist/internal/RequestId.d.ts +7 -1
  139. package/dist/internal/RequestId.d.ts.map +1 -1
  140. package/dist/internal/RequestId.js.map +1 -1
  141. package/dist/internal/Timing.d.ts +4 -1
  142. package/dist/internal/Timing.d.ts.map +1 -1
  143. package/dist/internal/Timing.js.map +1 -1
  144. package/package.json +7 -1
  145. package/src/Admin.ts +96 -0
  146. package/src/admin/Api.ts +189 -0
  147. package/src/admin/Env.ts +44 -0
  148. package/src/admin/app/.void/env.d.ts +17 -0
  149. package/src/admin/app/.void/preview-deploy-config.json +1 -0
  150. package/src/admin/app/.void/tanstack-start-trigger-wrapper.ts +12 -0
  151. package/src/admin/app/.void/tsconfig.json +5 -0
  152. package/src/admin/app/.void-wrangler.jsonc +1 -0
  153. package/src/admin/app/dist/client/.assetsignore +2 -0
  154. package/src/admin/app/dist/client/assets/GeistMono-Variable-BRXCGrxA.woff2 +0 -0
  155. package/src/admin/app/dist/client/assets/Inter-cyrillic-e3OmmzmJ.woff2 +0 -0
  156. package/src/admin/app/dist/client/assets/Inter-cyrillic-ext-DOWZeO4Q.woff2 +0 -0
  157. package/src/admin/app/dist/client/assets/Inter-greek-BD3ujQlX.woff2 +0 -0
  158. package/src/admin/app/dist/client/assets/Inter-greek-ext-CXEwbus4.woff2 +0 -0
  159. package/src/admin/app/dist/client/assets/Inter-latin-BDFm4vTb.woff2 +0 -0
  160. package/src/admin/app/dist/client/assets/Inter-latin-ext-E7a9JEPe.woff2 +0 -0
  161. package/src/admin/app/dist/client/assets/Inter-symbols-DEch7Rxr.woff2 +0 -0
  162. package/src/admin/app/dist/client/assets/Inter-vietnamese-Bg9723vR.woff2 +0 -0
  163. package/src/admin/app/dist/client/assets/index-2OAWXAPd.js +14 -0
  164. package/src/admin/app/dist/client/assets/index-BWqWX6La.css +1 -0
  165. package/src/admin/app/dist/client/assets/reset-co-CHrff.css +1 -0
  166. package/src/admin/app/dist/client/assets/rolldown-runtime-WkwZ5CU-.js +1 -0
  167. package/src/admin/app/dist/client/assets/routes-MNZtzL8a.css +1 -0
  168. package/src/admin/app/dist/client/assets/routes-kYsk94oq.js +1 -0
  169. package/src/admin/app/dist/server/.vite/manifest.json +320 -0
  170. package/src/admin/app/dist/server/assets/GeistMono-Variable-BRXCGrxA.woff2 +0 -0
  171. package/src/admin/app/dist/server/assets/Inter-cyrillic-e3OmmzmJ.woff2 +0 -0
  172. package/src/admin/app/dist/server/assets/Inter-cyrillic-ext-DOWZeO4Q.woff2 +0 -0
  173. package/src/admin/app/dist/server/assets/Inter-greek-BD3ujQlX.woff2 +0 -0
  174. package/src/admin/app/dist/server/assets/Inter-greek-ext-CXEwbus4.woff2 +0 -0
  175. package/src/admin/app/dist/server/assets/Inter-latin-BDFm4vTb.woff2 +0 -0
  176. package/src/admin/app/dist/server/assets/Inter-latin-ext-E7a9JEPe.woff2 +0 -0
  177. package/src/admin/app/dist/server/assets/Inter-symbols-DEch7Rxr.woff2 +0 -0
  178. package/src/admin/app/dist/server/assets/Inter-vietnamese-Bg9723vR.woff2 +0 -0
  179. package/src/admin/app/dist/server/assets/_tanstack-start-manifest_v-79jEv39V.js +1 -0
  180. package/src/admin/app/dist/server/assets/arktype-aI7TBD0R-D1R3Byo5.js +2 -0
  181. package/src/admin/app/dist/server/assets/arktype-aI7TBD0R-D1R3Byo5.js.map +1 -0
  182. package/src/admin/app/dist/server/assets/async-local-storage-DHUUbDdH.js +2 -0
  183. package/src/admin/app/dist/server/assets/async-local-storage-DHUUbDdH.js.map +1 -0
  184. package/src/admin/app/dist/server/assets/convert-BIC8n32x.js +2 -0
  185. package/src/admin/app/dist/server/assets/convert-BIC8n32x.js.map +1 -0
  186. package/src/admin/app/dist/server/assets/cookie-C4vZVqKH.js +2 -0
  187. package/src/admin/app/dist/server/assets/cookie-C4vZVqKH.js.map +1 -0
  188. package/src/admin/app/dist/server/assets/cookie-CtN3s9oH.css +1 -0
  189. package/src/admin/app/dist/server/assets/default-u_dwuiYb-Bm4vFBlA.js +2 -0
  190. package/src/admin/app/dist/server/assets/default-u_dwuiYb-Bm4vFBlA.js.map +1 -0
  191. package/src/admin/app/dist/server/assets/effect-QlVUlMFu-CZ2pslRQ.js +2 -0
  192. package/src/admin/app/dist/server/assets/effect-QlVUlMFu-CZ2pslRQ.js.map +1 -0
  193. package/src/admin/app/dist/server/assets/empty-plugin-adapters-BaGcmrjC.js +2 -0
  194. package/src/admin/app/dist/server/assets/empty-plugin-adapters-BaGcmrjC.js.map +1 -0
  195. package/src/admin/app/dist/server/assets/esm-C6SW--yt.js +4 -0
  196. package/src/admin/app/dist/server/assets/esm-C6SW--yt.js.map +1 -0
  197. package/src/admin/app/dist/server/assets/index-CLddUTqr-BZ4S36uu.js +2 -0
  198. package/src/admin/app/dist/server/assets/index-CLddUTqr-BZ4S36uu.js.map +1 -0
  199. package/src/admin/app/dist/server/assets/index-DZEfthgZ-DLoGRVqi.js +2 -0
  200. package/src/admin/app/dist/server/assets/index-DZEfthgZ-DLoGRVqi.js.map +1 -0
  201. package/src/admin/app/dist/server/assets/reset-co-CHrff.css +1 -0
  202. package/src/admin/app/dist/server/assets/rolldown-runtime-BWaJ3C7D.js +1 -0
  203. package/src/admin/app/dist/server/assets/router-BJCmvGlS.js +3 -0
  204. package/src/admin/app/dist/server/assets/router-BJCmvGlS.js.map +1 -0
  205. package/src/admin/app/dist/server/assets/router-Cbo1RPkb.css +1 -0
  206. package/src/admin/app/dist/server/assets/routes-H0Uv-wD-.js +2 -0
  207. package/src/admin/app/dist/server/assets/routes-H0Uv-wD-.js.map +1 -0
  208. package/src/admin/app/dist/server/assets/routes-MNZtzL8a.css +1 -0
  209. package/src/admin/app/dist/server/assets/server-Dp3ybuaF.js +77 -0
  210. package/src/admin/app/dist/server/assets/server-Dp3ybuaF.js.map +1 -0
  211. package/src/admin/app/dist/server/assets/standard-json-DY77efq0.js +2 -0
  212. package/src/admin/app/dist/server/assets/standard-json-DY77efq0.js.map +1 -0
  213. package/src/admin/app/dist/server/assets/standard-json-ig2t0wRt.js +2 -0
  214. package/src/admin/app/dist/server/assets/standard-json-ig2t0wRt.js.map +1 -0
  215. package/src/admin/app/dist/server/assets/standard-json-t-LNckA6.js +2 -0
  216. package/src/admin/app/dist/server/assets/standard-json-t-LNckA6.js.map +1 -0
  217. package/src/admin/app/dist/server/assets/standard-openapi-CONmVRl8.js +2 -0
  218. package/src/admin/app/dist/server/assets/standard-openapi-CONmVRl8.js.map +1 -0
  219. package/src/admin/app/dist/server/assets/start-C63VetBp.js +2 -0
  220. package/src/admin/app/dist/server/assets/start-C63VetBp.js.map +1 -0
  221. package/src/admin/app/dist/server/assets/sury-CWZTCd75-dqNvKm8e.js +2 -0
  222. package/src/admin/app/dist/server/assets/sury-CWZTCd75-dqNvKm8e.js.map +1 -0
  223. package/src/admin/app/dist/server/assets/typebox-Dei93FPO-D_lCVdAz.js +2 -0
  224. package/src/admin/app/dist/server/assets/typebox-Dei93FPO-D_lCVdAz.js.map +1 -0
  225. package/src/admin/app/dist/server/assets/valibot--1zFm7rT-Dijk_1Zb.js +2 -0
  226. package/src/admin/app/dist/server/assets/valibot--1zFm7rT-Dijk_1Zb.js.map +1 -0
  227. package/src/admin/app/dist/server/assets/valibot-D_HTw1Gn-tlW7HLMp.js +2 -0
  228. package/src/admin/app/dist/server/assets/valibot-D_HTw1Gn-tlW7HLMp.js.map +1 -0
  229. package/src/admin/app/dist/server/assets/worker-entry-1I-pge_g.js +87 -0
  230. package/src/admin/app/dist/server/assets/worker-entry-1I-pge_g.js.map +1 -0
  231. package/src/admin/app/dist/server/assets/zod-Bwrt9trS-RavM4bLF.js +2 -0
  232. package/src/admin/app/dist/server/assets/zod-Bwrt9trS-RavM4bLF.js.map +1 -0
  233. package/src/admin/app/dist/server/assets/zod-DSgpEGAE-7QASpGiW.js +2 -0
  234. package/src/admin/app/dist/server/assets/zod-DSgpEGAE-7QASpGiW.js.map +1 -0
  235. package/src/admin/app/dist/server/index.js +1 -0
  236. package/src/admin/app/dist/server/wrangler.json +1 -0
  237. package/src/admin/app/env.ts +11 -0
  238. package/src/admin/app/lib/Client.ts +22 -0
  239. package/src/admin/app/package.json +8 -0
  240. package/src/admin/app/routeTree.gen.ts +68 -0
  241. package/src/admin/app/router.tsx +19 -0
  242. package/src/admin/app/routes/__root.tsx +84 -0
  243. package/src/admin/app/routes/index.tsx +18 -0
  244. package/src/admin/app/screens/Dashboard.tsx +238 -0
  245. package/src/admin/app/server.ts +137 -0
  246. package/src/admin/app/tsconfig.json +7 -0
  247. package/src/admin/app/vite.config.ts +52 -0
  248. package/src/admin/app/void.config.ts +13 -0
  249. package/src/admin/app/zyzz.config.ts +25 -0
  250. package/src/admin/apps.ts +427 -0
  251. package/src/admin/index.ts +14 -0
  252. package/src/admin/session.ts +50 -0
  253. package/src/cli/AdminApi.ts +67 -0
  254. package/src/cli/Cli.ts +13 -5
  255. package/src/cli/bin.ts +26 -4
  256. package/src/client/Actions.ts +1 -0
  257. package/src/client/Admin.ts +93 -0
  258. package/src/client/Auth.ts +4 -0
  259. package/src/client/actions/admin/apps.ts +211 -0
  260. package/src/client/actions/admin.ts +5 -0
  261. package/src/client.ts +1 -0
  262. package/src/internal/AdminApps.ts +64 -0
  263. package/src/internal/ErrorResponse.ts +41 -0
  264. package/src/internal/OpenApi.ts +27 -4
  265. package/src/internal/RequestId.ts +8 -2
  266. package/src/internal/Timing.ts +4 -1
  267. package/src/types/app.d.ts +14 -0
package/README.md CHANGED
@@ -64,6 +64,8 @@ npx tempo-id init my-id --from "Tempo ID <noreply@id.example.com>" --url https:/
64
64
 
65
65
  [Self-hosting](docs/self-hosting.md) covers the database, secrets, migrations, and deploys.
66
66
 
67
+ An optional second Worker runs the Admin API and its dashboard through `Admin.create` from `@tempoxyz/id/admin`, on a host that the public cannot reach, with an `authorize` function of the deployment's own. [Admin API](docs/development/admin.md) describes Tempo's deployment of it.
68
+
67
69
  ## Playgrounds
68
70
 
69
71
  [`playgrounds/`](playgrounds/README.md) holds one app per flow, deployed beside `https://id.tempo.xyz`.
@@ -109,6 +111,7 @@ Sign in at the printed URL with a test address, such as `tempo-id-test+dev@examp
109
111
  pnpm i # install dependencies
110
112
  pnpm dev # start Tempo ID, the playgrounds, and a local chain on OrbStack
111
113
  pnpm dev:app # serve the app from src/app with Void, with HMR, the email inbox, and the dev toolbar
114
+ pnpm dev:admin # serve the admin app from src/admin/app with Void, with HMR, signed in as a local admin
112
115
  pnpm dev:id # build the app, and serve apps/id with wrangler dev
113
116
  pnpm env:pull # populate .env variables from 1Password
114
117
  pnpm build # build the package and the app
@@ -0,0 +1,51 @@
1
+ import type * as Env from './admin/Env.js';
2
+ /** An option of `Admin.create` is absent or invalid. */
3
+ export declare class InvalidOptionError extends Error {
4
+ readonly name = "Admin.InvalidOptionError";
5
+ }
6
+ /** The employee or service that a request acts as. */
7
+ export type Actor = Env.Actor;
8
+ /**
9
+ * Returns the admin Worker's handler, which serves the admin app's pages, such as the dashboard,
10
+ * and the Admin API: OAuth app registration and
11
+ * operation. `authorize` runs before every request, so a deployment without it never starts. Serve
12
+ * it on a host that the public cannot reach, never on Tempo ID's own.
13
+ *
14
+ * ```ts
15
+ * import { env } from 'cloudflare:workers'
16
+ * import { Admin } from '@tempoxyz/id/admin'
17
+ *
18
+ * export default Admin.create({
19
+ * authorize: async (request) =>
20
+ * (await verify(request)) ?? new Response(null, { status: 401 }),
21
+ * db: env.HYPERDRIVE,
22
+ * })
23
+ * ```
24
+ *
25
+ * @throws {InvalidOptionError} When an option is absent or invalid, so the Worker fails to start.
26
+ */
27
+ export declare function create(options: create.Options): create.ReturnType;
28
+ export declare namespace create {
29
+ type Options = {
30
+ /**
31
+ * Decides whether a request may reach the Admin API, before every route. Returns the actor,
32
+ * whose `sub` the audit logs record, or a `Response` that refuses the request, such as a 401.
33
+ * It verifies the request itself, such as a Cloudflare Access assertion, and fails closed.
34
+ */
35
+ authorize: Env.Authorize;
36
+ /**
37
+ * A Hyperdrive binding, such as `env.HYPERDRIVE`, or `{ connectionString }`, to the database of
38
+ * the Tempo ID deployment that the API operates.
39
+ */
40
+ db: {
41
+ /** The Postgres connection string. */
42
+ connectionString: string;
43
+ };
44
+ };
45
+ type ReturnType = {
46
+ /** Serves a request to the Worker. */
47
+ fetch: (request: Request, env: Record<string, unknown>, ctx: unknown) => Promise<Response>;
48
+ };
49
+ type ErrorType = InvalidOptionError;
50
+ }
51
+ //# sourceMappingURL=Admin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Admin.d.ts","sourceRoot":"","sources":["../src/Admin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAE1C,wDAAwD;AACxD,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAkB,IAAI,8BAA6B;CACpD;AAED,sDAAsD;AACtD,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAA;AAE7B;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAgBjE;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,GAAG;QACb;;;;WAIG;QACH,SAAS,EAAE,GAAG,CAAC,SAAS,CAAA;QACxB;;;WAGG;QACH,EAAE,EAAE;YACF,sCAAsC;YACtC,gBAAgB,EAAE,MAAM,CAAA;SACzB,CAAA;KACF,CAAA;IAED,KAAK,UAAU,GAAG;QAChB,sCAAsC;QACtC,KAAK,EAAE,CACL,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,GAAG,EAAE,OAAO,KACT,OAAO,CAAC,QAAQ,CAAC,CAAA;KACvB,CAAA;IAED,KAAK,SAAS,GAAG,kBAAkB,CAAA;CACpC"}
package/dist/Admin.js ADDED
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Tempo ID's Admin API as a Cloudflare Worker, on a host of its own, from the deployment's options.
3
+ * @module
4
+ */
5
+ import handlers from '#admin-app';
6
+ /** An option of `Admin.create` is absent or invalid. */
7
+ export class InvalidOptionError extends Error {
8
+ name = 'Admin.InvalidOptionError';
9
+ }
10
+ /**
11
+ * Returns the admin Worker's handler, which serves the admin app's pages, such as the dashboard,
12
+ * and the Admin API: OAuth app registration and
13
+ * operation. `authorize` runs before every request, so a deployment without it never starts. Serve
14
+ * it on a host that the public cannot reach, never on Tempo ID's own.
15
+ *
16
+ * ```ts
17
+ * import { env } from 'cloudflare:workers'
18
+ * import { Admin } from '@tempoxyz/id/admin'
19
+ *
20
+ * export default Admin.create({
21
+ * authorize: async (request) =>
22
+ * (await verify(request)) ?? new Response(null, { status: 401 }),
23
+ * db: env.HYPERDRIVE,
24
+ * })
25
+ * ```
26
+ *
27
+ * @throws {InvalidOptionError} When an option is absent or invalid, so the Worker fails to start.
28
+ */
29
+ export function create(options) {
30
+ validate(options);
31
+ const { authorize, db } = options;
32
+ // The built admin app reads its settings from the bindings under these names. A Hyperdrive
33
+ // binding's connection string is read for each request.
34
+ const bindings = (env) => ({
35
+ ...env,
36
+ ADMIN_AUTHORIZE: authorize,
37
+ ADMIN_DATABASE_URL: db.connectionString,
38
+ });
39
+ return {
40
+ fetch: (request, env, ctx) => handlers.fetch(request, bindings(env), ctx),
41
+ };
42
+ }
43
+ /** Throws when an option is absent or invalid, since bindings and functions escape type checks. */
44
+ function validate(options) {
45
+ const { authorize, db } = options;
46
+ if (typeof authorize !== 'function')
47
+ throw new InvalidOptionError('Missing `authorize`. Pass a function that verifies each request, such as a Cloudflare Access assertion, and returns its actor or a refusal.');
48
+ // `db` can be a Hyperdrive binding, whose connection string is read only within a request.
49
+ if (typeof db !== 'object' || db === null)
50
+ throw new InvalidOptionError('Missing `db`. Pass a Hyperdrive binding, such as `env.HYPERDRIVE`, or `{ connectionString }`.');
51
+ }
52
+ //# sourceMappingURL=Admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Admin.js","sourceRoot":"","sources":["../src/Admin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,QAAQ,MAAM,YAAY,CAAA;AAGjC,wDAAwD;AACxD,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACzB,IAAI,GAAG,0BAA0B,CAAA;CACpD;AAKD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,MAAM,CAAC,OAAuB;IAC5C,QAAQ,CAAC,OAAO,CAAC,CAAA;IAEjB,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,OAAO,CAAA;IAEjC,2FAA2F;IAC3F,wDAAwD;IACxD,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CAAC,CAAC;QAClD,GAAG,GAAG;QACN,eAAe,EAAE,SAAS;QAC1B,kBAAkB,EAAE,EAAE,CAAC,gBAAgB;KACxC,CAAC,CAAA;IAEF,OAAO;QACL,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;KAC1E,CAAA;AACH,CAAC;AAgCD,mGAAmG;AACnG,SAAS,QAAQ,CAAC,OAAuB;IACvC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,OAAO,CAAA;IAEjC,IAAI,OAAO,SAAS,KAAK,UAAU;QACjC,MAAM,IAAI,kBAAkB,CAC1B,6IAA6I,CAC9I,CAAA;IACH,2FAA2F;IAC3F,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI;QACvC,MAAM,IAAI,kBAAkB,CAC1B,+FAA+F,CAChG,CAAA;AACL,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The Hono environment of the Admin API, which `Admin.create` serves on a host of its own.
3
+ * @module
4
+ */
5
+ import type { Context } from 'hono';
6
+ import type * as Env_ from '../internal/Env.js';
7
+ import type * as Realm from '../internal/Realm.js';
8
+ /** The employee or service that a request acts as, from the deployment's `authorize`. */
9
+ export type Actor = {
10
+ /**
11
+ * The actor's email address, which the dashboard shows to the actor alone. Logs never record it.
12
+ * Absent, the dashboard shows `sub`.
13
+ */
14
+ email?: string | undefined;
15
+ /** A stable, opaque ID of the actor, which audit logs record. Never an email address. */
16
+ sub: string;
17
+ };
18
+ /** Decides whether a request may reach the Admin API. */
19
+ export type Authorize = (request: Request) => Promise<Actor | Response>;
20
+ /** The bindings and variables of an admin request. */
21
+ export type Env = {
22
+ /** The values that `Admin.create` adds to the Worker's bindings. */
23
+ Bindings: {
24
+ /** The deployment's authorization, from `Admin.create`. */
25
+ ADMIN_AUTHORIZE: Authorize;
26
+ /** The Postgres connection string, read for each request, from `Admin.create`. */
27
+ ADMIN_DATABASE_URL: string;
28
+ /**
29
+ * Renders the admin app's page of `c`'s request through TanStack Start. Absent, as in the
30
+ * Admin API without its app's build, a page path responds with `unknown_endpoint`.
31
+ */
32
+ ADMIN_PAGES?: ((c: Context<Env>) => Promise<Response>) | undefined;
33
+ };
34
+ /** The values that middleware sets on `c.var`. */
35
+ Variables: Pick<Env_.Variables, 'refusal' | 'requestId' | 'timing'> & {
36
+ /** The actor that `authorize` returned. */
37
+ actor: Actor;
38
+ /** The request's database client, which the admin app connects for the app routes. */
39
+ db: Realm.Database;
40
+ };
41
+ };
42
+ //# sourceMappingURL=Env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Env.d.ts","sourceRoot":"","sources":["../../src/admin/Env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,KAAK,KAAK,MAAM,sBAAsB,CAAA;AAElD,yFAAyF;AACzF,MAAM,MAAM,KAAK,GAAG;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,yFAAyF;IACzF,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,yDAAyD;AACzD,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAA;AAEvE,sDAAsD;AACtD,MAAM,MAAM,GAAG,GAAG;IAChB,oEAAoE;IACpE,QAAQ,EAAE;QACR,2DAA2D;QAC3D,eAAe,EAAE,SAAS,CAAA;QAC1B,kFAAkF;QAClF,kBAAkB,EAAE,MAAM,CAAA;QAC1B;;;WAGG;QACH,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;KACnE,CAAA;IACD,kDAAkD;IAClD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC,GAAG;QACpE,2CAA2C;QAC3C,KAAK,EAAE,KAAK,CAAA;QACZ,sFAAsF;QACtF,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Env.js","sourceRoot":"","sources":["../../src/admin/Env.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ wrangler.json
2
+ .dev.vars