tapimo 0.0.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/README.md +38 -16
  2. package/dist/ApiKey.d.ts +14 -11
  3. package/dist/ApiKey.d.ts.map +1 -1
  4. package/dist/ApiKey.js +11 -12
  5. package/dist/ApiKey.js.map +1 -1
  6. package/dist/ApiKeys.d.ts +207 -0
  7. package/dist/ApiKeys.d.ts.map +1 -0
  8. package/dist/ApiKeys.js +282 -0
  9. package/dist/ApiKeys.js.map +1 -0
  10. package/dist/App.d.ts +6771 -3819
  11. package/dist/App.d.ts.map +1 -1
  12. package/dist/App.js +145 -317
  13. package/dist/App.js.map +1 -1
  14. package/dist/Handler.d.ts +86 -0
  15. package/dist/Handler.d.ts.map +1 -0
  16. package/dist/Handler.js +83 -0
  17. package/dist/Handler.js.map +1 -0
  18. package/dist/Scope.d.ts +14 -4
  19. package/dist/Scope.d.ts.map +1 -1
  20. package/dist/Scope.js +16 -4
  21. package/dist/Scope.js.map +1 -1
  22. package/dist/Webhooks.d.ts +5 -7
  23. package/dist/Webhooks.d.ts.map +1 -1
  24. package/dist/Webhooks.js +11 -4
  25. package/dist/Webhooks.js.map +1 -1
  26. package/dist/admin/Access.d.ts +1 -3
  27. package/dist/admin/Access.d.ts.map +1 -1
  28. package/dist/admin/Access.js +1 -3
  29. package/dist/admin/Access.js.map +1 -1
  30. package/dist/admin/App.d.ts +167 -205
  31. package/dist/admin/App.d.ts.map +1 -1
  32. package/dist/admin/App.js +2 -4
  33. package/dist/admin/App.js.map +1 -1
  34. package/dist/admin/apps/api-keys.d.ts +105 -5
  35. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  36. package/dist/admin/apps/api-keys.js +75 -9
  37. package/dist/admin/apps/api-keys.js.map +1 -1
  38. package/dist/admin/apps/scopes.d.ts +6 -0
  39. package/dist/admin/apps/scopes.d.ts.map +1 -1
  40. package/dist/admin/apps/verified-tokens.d.ts +35 -149
  41. package/dist/admin/apps/verified-tokens.d.ts.map +1 -1
  42. package/dist/admin/apps/verified-tokens.js +18 -39
  43. package/dist/admin/apps/verified-tokens.js.map +1 -1
  44. package/dist/admin/ui.generated.d.ts +1 -1
  45. package/dist/admin/ui.generated.js +1 -1
  46. package/dist/apps/data/App.d.ts +19176 -0
  47. package/dist/apps/data/App.d.ts.map +1 -0
  48. package/dist/apps/data/App.js +236 -0
  49. package/dist/apps/data/App.js.map +1 -0
  50. package/dist/apps/data/index.d.ts +3 -0
  51. package/dist/apps/data/index.d.ts.map +1 -0
  52. package/dist/apps/data/index.js +3 -0
  53. package/dist/apps/data/index.js.map +1 -0
  54. package/dist/apps/{activities.d.ts → data/routes/activities.d.ts} +32 -32
  55. package/dist/apps/{activities.d.ts.map → data/routes/activities.d.ts.map} +1 -1
  56. package/dist/apps/{activities.js → data/routes/activities.js} +13 -13
  57. package/dist/apps/data/routes/activities.js.map +1 -0
  58. package/dist/apps/{addresses.d.ts → data/routes/addresses.d.ts} +22 -22
  59. package/dist/apps/{addresses.d.ts.map → data/routes/addresses.d.ts.map} +1 -1
  60. package/dist/apps/{addresses.js → data/routes/addresses.js} +5 -5
  61. package/dist/apps/data/routes/addresses.js.map +1 -0
  62. package/dist/apps/{balances.d.ts → data/routes/balances.d.ts} +49 -49
  63. package/dist/apps/data/routes/balances.d.ts.map +1 -0
  64. package/dist/apps/{balances.js → data/routes/balances.js} +42 -11
  65. package/dist/apps/data/routes/balances.js.map +1 -0
  66. package/dist/apps/{blocks.d.ts → data/routes/blocks.d.ts} +47 -47
  67. package/dist/apps/data/routes/blocks.d.ts.map +1 -0
  68. package/dist/apps/{blocks.js → data/routes/blocks.js} +13 -13
  69. package/dist/apps/data/routes/blocks.js.map +1 -0
  70. package/dist/apps/{coingecko.d.ts → data/routes/coingecko.d.ts} +183 -183
  71. package/dist/apps/data/routes/coingecko.d.ts.map +1 -0
  72. package/dist/apps/{coingecko.js → data/routes/coingecko.js} +13 -13
  73. package/dist/apps/data/routes/coingecko.js.map +1 -0
  74. package/dist/apps/{exchanges.d.ts → data/routes/exchanges.d.ts} +460 -460
  75. package/dist/apps/data/routes/exchanges.d.ts.map +1 -0
  76. package/dist/apps/{exchanges.js → data/routes/exchanges.js} +19 -19
  77. package/dist/apps/data/routes/exchanges.js.map +1 -0
  78. package/dist/apps/{fee-amm.d.ts → data/routes/fee-amm.d.ts} +94 -94
  79. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -0
  80. package/dist/apps/{fee-amm.js → data/routes/fee-amm.js} +17 -17
  81. package/dist/apps/data/routes/fee-amm.js.map +1 -0
  82. package/dist/apps/{indexer.d.ts → data/routes/indexer.d.ts} +4 -4
  83. package/dist/apps/data/routes/indexer.d.ts.map +1 -0
  84. package/dist/apps/{indexer.js → data/routes/indexer.js} +13 -9
  85. package/dist/apps/data/routes/indexer.js.map +1 -0
  86. package/dist/apps/{receipts.d.ts → data/routes/receipts.d.ts} +6 -6
  87. package/dist/apps/data/routes/receipts.d.ts.map +1 -0
  88. package/dist/apps/{receipts.js → data/routes/receipts.js} +12 -12
  89. package/dist/apps/data/routes/receipts.js.map +1 -0
  90. package/dist/apps/{rpc.d.ts → data/routes/rpc.d.ts} +4 -4
  91. package/dist/apps/data/routes/rpc.d.ts.map +1 -0
  92. package/dist/apps/{rpc.js → data/routes/rpc.js} +6 -6
  93. package/dist/apps/data/routes/rpc.js.map +1 -0
  94. package/dist/apps/{tokenlist.d.ts → data/routes/tokenlist.d.ts} +4 -4
  95. package/dist/apps/data/routes/tokenlist.d.ts.map +1 -0
  96. package/dist/apps/{tokenlist.js → data/routes/tokenlist.js} +8 -8
  97. package/dist/apps/data/routes/tokenlist.js.map +1 -0
  98. package/dist/apps/{tokens.d.ts → data/routes/tokens.d.ts} +11 -11
  99. package/dist/apps/data/routes/tokens.d.ts.map +1 -0
  100. package/dist/apps/{tokens.js → data/routes/tokens.js} +19 -19
  101. package/dist/apps/data/routes/tokens.js.map +1 -0
  102. package/dist/apps/{transactions.d.ts → data/routes/transactions.d.ts} +288 -288
  103. package/dist/apps/data/routes/transactions.d.ts.map +1 -0
  104. package/dist/apps/{transactions.js → data/routes/transactions.js} +13 -13
  105. package/dist/apps/data/routes/transactions.js.map +1 -0
  106. package/dist/apps/{transfers.d.ts → data/routes/transfers.d.ts} +35 -35
  107. package/dist/apps/data/routes/transfers.d.ts.map +1 -0
  108. package/dist/apps/{transfers.js → data/routes/transfers.js} +13 -13
  109. package/dist/apps/data/routes/transfers.js.map +1 -0
  110. package/dist/apps/{verified-tokens.d.ts → data/routes/verified-tokens.d.ts} +42 -42
  111. package/dist/apps/data/routes/verified-tokens.d.ts.map +1 -0
  112. package/dist/apps/{verified-tokens.js → data/routes/verified-tokens.js} +9 -9
  113. package/dist/apps/data/routes/verified-tokens.js.map +1 -0
  114. package/dist/apps/{webhooks.d.ts → data/routes/webhooks.d.ts} +66 -63
  115. package/dist/apps/{webhooks.d.ts.map → data/routes/webhooks.d.ts.map} +1 -1
  116. package/dist/apps/{webhooks.js → data/routes/webhooks.js} +67 -59
  117. package/dist/apps/data/routes/webhooks.js.map +1 -0
  118. package/dist/apps/docs/App.d.ts +27 -0
  119. package/dist/apps/docs/App.d.ts.map +1 -0
  120. package/dist/apps/docs/App.js +122 -0
  121. package/dist/apps/docs/App.js.map +1 -0
  122. package/dist/{internal/OpenApi.fonts.d.ts → apps/docs/fonts.d.ts} +1 -1
  123. package/dist/apps/docs/fonts.d.ts.map +1 -0
  124. package/dist/{internal/OpenApi.fonts.js → apps/docs/fonts.js} +1 -1
  125. package/dist/apps/docs/fonts.js.map +1 -0
  126. package/dist/apps/docs/index.d.ts +2 -0
  127. package/dist/apps/docs/index.d.ts.map +1 -0
  128. package/dist/apps/docs/index.js +2 -0
  129. package/dist/apps/docs/index.js.map +1 -0
  130. package/dist/{internal/OpenApi.logo.d.ts → apps/docs/logo.d.ts} +1 -1
  131. package/dist/apps/docs/logo.d.ts.map +1 -0
  132. package/dist/{internal/OpenApi.logo.js → apps/docs/logo.js} +1 -1
  133. package/dist/apps/docs/logo.js.map +1 -0
  134. package/dist/apps/index.d.ts +4 -0
  135. package/dist/apps/index.d.ts.map +1 -0
  136. package/dist/apps/index.js +4 -0
  137. package/dist/apps/index.js.map +1 -0
  138. package/dist/apps/metadata.d.ts +7 -0
  139. package/dist/apps/metadata.d.ts.map +1 -0
  140. package/dist/apps/metadata.js +15 -0
  141. package/dist/apps/metadata.js.map +1 -0
  142. package/dist/apps/platform/App.d.ts +2985 -0
  143. package/dist/apps/platform/App.d.ts.map +1 -0
  144. package/dist/apps/platform/App.js +74 -0
  145. package/dist/apps/platform/App.js.map +1 -0
  146. package/dist/apps/platform/index.d.ts +2 -0
  147. package/dist/apps/platform/index.d.ts.map +1 -0
  148. package/dist/apps/platform/index.js +2 -0
  149. package/dist/apps/platform/index.js.map +1 -0
  150. package/dist/apps/platform/routes/api-keys.d.ts +681 -0
  151. package/dist/apps/platform/routes/api-keys.d.ts.map +1 -0
  152. package/dist/apps/platform/routes/api-keys.js +328 -0
  153. package/dist/apps/platform/routes/api-keys.js.map +1 -0
  154. package/dist/apps/platform/routes/invitations.d.ts +733 -0
  155. package/dist/apps/platform/routes/invitations.d.ts.map +1 -0
  156. package/dist/apps/platform/routes/invitations.js +413 -0
  157. package/dist/apps/platform/routes/invitations.js.map +1 -0
  158. package/dist/apps/platform/routes/me.d.ts +95 -0
  159. package/dist/apps/platform/routes/me.d.ts.map +1 -0
  160. package/dist/apps/platform/routes/me.js +81 -0
  161. package/dist/apps/platform/routes/me.js.map +1 -0
  162. package/dist/apps/platform/routes/members.d.ts +554 -0
  163. package/dist/apps/platform/routes/members.d.ts.map +1 -0
  164. package/dist/apps/platform/routes/members.js +251 -0
  165. package/dist/apps/platform/routes/members.js.map +1 -0
  166. package/dist/apps/platform/routes/orgs.d.ts +582 -0
  167. package/dist/apps/platform/routes/orgs.d.ts.map +1 -0
  168. package/dist/apps/platform/routes/orgs.js +265 -0
  169. package/dist/apps/platform/routes/orgs.js.map +1 -0
  170. package/dist/apps/platform/routes/projects.d.ts +740 -0
  171. package/dist/apps/platform/routes/projects.d.ts.map +1 -0
  172. package/dist/apps/platform/routes/projects.js +286 -0
  173. package/dist/apps/platform/routes/projects.js.map +1 -0
  174. package/dist/apps/relay/App.d.ts +41 -0
  175. package/dist/apps/relay/App.d.ts.map +1 -0
  176. package/dist/apps/relay/App.js +103 -0
  177. package/dist/apps/relay/App.js.map +1 -0
  178. package/dist/apps/relay/Sponsorships.d.ts +107 -0
  179. package/dist/apps/relay/Sponsorships.d.ts.map +1 -0
  180. package/dist/apps/relay/Sponsorships.js +193 -0
  181. package/dist/apps/relay/Sponsorships.js.map +1 -0
  182. package/dist/apps/relay/index.d.ts +3 -0
  183. package/dist/apps/relay/index.d.ts.map +1 -0
  184. package/dist/apps/relay/index.js +3 -0
  185. package/dist/apps/relay/index.js.map +1 -0
  186. package/dist/{Cli.d.ts → cli/Cli.d.ts} +13 -2
  187. package/dist/cli/Cli.d.ts.map +1 -0
  188. package/dist/cli/Cli.js +19 -0
  189. package/dist/cli/Cli.js.map +1 -0
  190. package/dist/cli/bin.d.ts +3 -0
  191. package/dist/cli/bin.d.ts.map +1 -0
  192. package/dist/cli/bin.js +4 -0
  193. package/dist/cli/bin.js.map +1 -0
  194. package/dist/cli/commands/admin.d.ts +15 -0
  195. package/dist/cli/commands/admin.d.ts.map +1 -0
  196. package/dist/cli/commands/admin.js +60 -0
  197. package/dist/cli/commands/admin.js.map +1 -0
  198. package/dist/cloudflare.d.ts +7 -0
  199. package/dist/cloudflare.d.ts.map +1 -1
  200. package/dist/cloudflare.js +9 -0
  201. package/dist/cloudflare.js.map +1 -1
  202. package/dist/db/Db.d.ts +113 -0
  203. package/dist/db/Db.d.ts.map +1 -0
  204. package/dist/db/Db.js +402 -0
  205. package/dist/db/Db.js.map +1 -0
  206. package/dist/db/Schema.d.ts +168 -0
  207. package/dist/db/Schema.d.ts.map +1 -0
  208. package/dist/db/Schema.js +229 -0
  209. package/dist/db/Schema.js.map +1 -0
  210. package/dist/db/tables/invitations.d.ts +84 -0
  211. package/dist/db/tables/invitations.d.ts.map +1 -0
  212. package/dist/db/tables/invitations.js +165 -0
  213. package/dist/db/tables/invitations.js.map +1 -0
  214. package/dist/db/tables/memberships.d.ts +108 -0
  215. package/dist/db/tables/memberships.d.ts.map +1 -0
  216. package/dist/db/tables/memberships.js +153 -0
  217. package/dist/db/tables/memberships.js.map +1 -0
  218. package/dist/db/tables/organizations.d.ts +123 -0
  219. package/dist/db/tables/organizations.d.ts.map +1 -0
  220. package/dist/db/tables/organizations.js +170 -0
  221. package/dist/db/tables/organizations.js.map +1 -0
  222. package/dist/db/tables/projects.d.ts +65 -0
  223. package/dist/db/tables/projects.d.ts.map +1 -0
  224. package/dist/db/tables/projects.js +75 -0
  225. package/dist/db/tables/projects.js.map +1 -0
  226. package/dist/db/tables/sponsoredTransactions.d.ts +120 -0
  227. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -0
  228. package/dist/db/tables/sponsoredTransactions.js +161 -0
  229. package/dist/db/tables/sponsoredTransactions.js.map +1 -0
  230. package/dist/db/tables/users.d.ts +48 -0
  231. package/dist/db/tables/users.d.ts.map +1 -0
  232. package/dist/db/tables/users.js +65 -0
  233. package/dist/db/tables/users.js.map +1 -0
  234. package/dist/db/tables/verifiedTokens.d.ts +53 -0
  235. package/dist/db/tables/verifiedTokens.d.ts.map +1 -0
  236. package/dist/db/tables/verifiedTokens.js +74 -0
  237. package/dist/db/tables/verifiedTokens.js.map +1 -0
  238. package/dist/db/tables/webhookDeliveries.d.ts +71 -0
  239. package/dist/db/tables/webhookDeliveries.d.ts.map +1 -0
  240. package/dist/db/tables/webhookDeliveries.js +119 -0
  241. package/dist/db/tables/webhookDeliveries.js.map +1 -0
  242. package/dist/db/tables/webhookSubscriptions.d.ts +158 -0
  243. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -0
  244. package/dist/db/tables/webhookSubscriptions.js +272 -0
  245. package/dist/db/tables/webhookSubscriptions.js.map +1 -0
  246. package/dist/handlers/internal/executionError.d.ts +25 -0
  247. package/dist/handlers/internal/executionError.d.ts.map +1 -0
  248. package/dist/handlers/internal/executionError.js +186 -0
  249. package/dist/handlers/internal/executionError.js.map +1 -0
  250. package/dist/handlers/internal/multisig.d.ts +233 -0
  251. package/dist/handlers/internal/multisig.d.ts.map +1 -0
  252. package/dist/handlers/internal/multisig.js +542 -0
  253. package/dist/handlers/internal/multisig.js.map +1 -0
  254. package/dist/handlers/internal/requestListener.d.ts +124 -0
  255. package/dist/handlers/internal/requestListener.d.ts.map +1 -0
  256. package/dist/handlers/internal/requestListener.js +173 -0
  257. package/dist/handlers/internal/requestListener.js.map +1 -0
  258. package/dist/handlers/internal/sponsorship.d.ts +113 -0
  259. package/dist/handlers/internal/sponsorship.d.ts.map +1 -0
  260. package/dist/handlers/internal/sponsorship.js +128 -0
  261. package/dist/handlers/internal/sponsorship.js.map +1 -0
  262. package/dist/handlers/internal/types.d.ts +284 -0
  263. package/dist/handlers/internal/types.d.ts.map +1 -0
  264. package/dist/handlers/internal/types.js +2 -0
  265. package/dist/handlers/internal/types.js.map +1 -0
  266. package/dist/handlers/internal/utils.d.ts +34 -0
  267. package/dist/handlers/internal/utils.d.ts.map +1 -0
  268. package/dist/handlers/internal/utils.js +131 -0
  269. package/dist/handlers/internal/utils.js.map +1 -0
  270. package/dist/handlers/relay.d.ts +123 -0
  271. package/dist/handlers/relay.d.ts.map +1 -0
  272. package/dist/handlers/relay.js +1278 -0
  273. package/dist/handlers/relay.js.map +1 -0
  274. package/dist/index.d.ts +4 -2
  275. package/dist/index.d.ts.map +1 -1
  276. package/dist/index.js +4 -2
  277. package/dist/index.js.map +1 -1
  278. package/dist/internal/Auth.d.ts +224 -16
  279. package/dist/internal/Auth.d.ts.map +1 -1
  280. package/dist/internal/Auth.js +572 -33
  281. package/dist/internal/Auth.js.map +1 -1
  282. package/dist/internal/Log.d.ts +7 -3
  283. package/dist/internal/Log.d.ts.map +1 -1
  284. package/dist/internal/Log.js +4 -0
  285. package/dist/internal/Log.js.map +1 -1
  286. package/dist/internal/OpenApi.d.ts +0 -19
  287. package/dist/internal/OpenApi.d.ts.map +1 -1
  288. package/dist/internal/OpenApi.js +0 -57
  289. package/dist/internal/OpenApi.js.map +1 -1
  290. package/dist/internal/RpcSchema.d.ts +10 -0
  291. package/dist/internal/RpcSchema.d.ts.map +1 -0
  292. package/dist/internal/RpcSchema.js +2 -0
  293. package/dist/internal/RpcSchema.js.map +1 -0
  294. package/dist/internal/Store.d.ts +49 -4
  295. package/dist/internal/Store.d.ts.map +1 -1
  296. package/dist/internal/Store.js +81 -5
  297. package/dist/internal/Store.js.map +1 -1
  298. package/dist/internal/VerifiedTokens.d.ts +15 -34
  299. package/dist/internal/VerifiedTokens.d.ts.map +1 -1
  300. package/dist/internal/VerifiedTokens.js +115 -159
  301. package/dist/internal/VerifiedTokens.js.map +1 -1
  302. package/dist/internal/Viem.d.ts +84 -0
  303. package/dist/internal/Viem.d.ts.map +1 -1
  304. package/dist/internal/Webhooks.d.ts +50 -36
  305. package/dist/internal/Webhooks.d.ts.map +1 -1
  306. package/dist/internal/Webhooks.js +92 -205
  307. package/dist/internal/Webhooks.js.map +1 -1
  308. package/package.json +37 -6
  309. package/src/ApiKey.test.ts +3 -3
  310. package/src/ApiKey.ts +11 -12
  311. package/src/ApiKeys.test.ts +278 -0
  312. package/src/ApiKeys.ts +358 -0
  313. package/src/App.test-d.ts +1 -1
  314. package/src/App.test.ts +40508 -19083
  315. package/src/App.ts +239 -416
  316. package/src/Client.test-d.ts +307 -16
  317. package/src/Handler.ts +154 -0
  318. package/src/Scope.ts +17 -4
  319. package/src/Webhooks.test.ts +8 -7
  320. package/src/Webhooks.ts +13 -7
  321. package/src/admin/Access.ts +1 -3
  322. package/src/admin/App.ts +19 -24
  323. package/src/admin/apps/api-keys.test.ts +70 -18
  324. package/src/admin/apps/api-keys.ts +92 -9
  325. package/src/admin/apps/scopes.test.ts +8 -0
  326. package/src/admin/apps/verified-tokens.test.ts +3 -30
  327. package/src/admin/apps/verified-tokens.ts +18 -37
  328. package/src/admin/ui.generated.ts +1 -1
  329. package/src/apps/composition.test.ts +66 -0
  330. package/src/apps/data/App.ts +295 -0
  331. package/src/apps/data/index.ts +2 -0
  332. package/src/apps/{activities.test.ts → data/routes/activities.test.ts} +3 -3
  333. package/src/apps/{activities.ts → data/routes/activities.ts} +15 -15
  334. package/src/apps/{addresses.ts → data/routes/addresses.ts} +6 -6
  335. package/src/apps/{balances.test.ts → data/routes/balances.test.ts} +6 -5
  336. package/src/apps/{balances.ts → data/routes/balances.ts} +46 -12
  337. package/src/apps/{blocks.test.ts → data/routes/blocks.test.ts} +4 -4
  338. package/src/apps/{blocks.ts → data/routes/blocks.ts} +14 -14
  339. package/src/apps/{coingecko.test.ts → data/routes/coingecko.test.ts} +2 -2
  340. package/src/apps/{coingecko.ts → data/routes/coingecko.ts} +14 -14
  341. package/src/apps/{exchanges.test.ts → data/routes/exchanges.test.ts} +2 -2
  342. package/src/apps/{exchanges.ts → data/routes/exchanges.ts} +20 -20
  343. package/src/apps/{fee-amm.test.ts → data/routes/fee-amm.test.ts} +3 -3
  344. package/src/apps/{fee-amm.ts → data/routes/fee-amm.ts} +18 -18
  345. package/src/apps/{indexer.test.ts → data/routes/indexer.test.ts} +27 -6
  346. package/src/apps/{indexer.ts → data/routes/indexer.ts} +13 -10
  347. package/src/apps/{receipts.test.ts → data/routes/receipts.test.ts} +4 -4
  348. package/src/apps/{receipts.ts → data/routes/receipts.ts} +13 -13
  349. package/src/apps/{rpc.test.ts → data/routes/rpc.test.ts} +142 -13
  350. package/src/apps/{rpc.ts → data/routes/rpc.ts} +7 -7
  351. package/src/apps/{tokenlist.test.ts → data/routes/tokenlist.test.ts} +8 -10
  352. package/src/apps/{tokenlist.ts → data/routes/tokenlist.ts} +9 -9
  353. package/src/apps/{tokens.test.ts → data/routes/tokens.test.ts} +6 -5
  354. package/src/apps/{tokens.ts → data/routes/tokens.ts} +20 -20
  355. package/src/apps/{transactions.test.ts → data/routes/transactions.test.ts} +4 -4
  356. package/src/apps/{transactions.ts → data/routes/transactions.ts} +15 -15
  357. package/src/apps/{transfers.test.ts → data/routes/transfers.test.ts} +3 -3
  358. package/src/apps/{transfers.ts → data/routes/transfers.ts} +15 -15
  359. package/src/apps/{verified-tokens.test.ts → data/routes/verified-tokens.test.ts} +27 -15
  360. package/src/apps/{verified-tokens.ts → data/routes/verified-tokens.ts} +10 -10
  361. package/src/apps/{webhooks.test.ts → data/routes/webhooks.test.ts} +137 -150
  362. package/src/apps/{webhooks.ts → data/routes/webhooks.ts} +83 -81
  363. package/src/apps/docs/App.ts +136 -0
  364. package/src/apps/docs/index.ts +1 -0
  365. package/src/apps/index.ts +3 -0
  366. package/src/apps/metadata.ts +23 -0
  367. package/src/apps/platform/App.ts +130 -0
  368. package/src/apps/platform/index.ts +1 -0
  369. package/src/apps/platform/routes/api-keys.test.ts +330 -0
  370. package/src/apps/platform/routes/api-keys.ts +427 -0
  371. package/src/apps/platform/routes/invitations.test.ts +361 -0
  372. package/src/apps/platform/routes/invitations.ts +519 -0
  373. package/src/apps/platform/routes/me.test.ts +121 -0
  374. package/src/apps/platform/routes/me.ts +106 -0
  375. package/src/apps/platform/routes/members.test.ts +195 -0
  376. package/src/apps/platform/routes/members.ts +313 -0
  377. package/src/apps/platform/routes/orgs.test.ts +313 -0
  378. package/src/apps/platform/routes/orgs.ts +343 -0
  379. package/src/apps/platform/routes/projects.test.ts +181 -0
  380. package/src/apps/platform/routes/projects.ts +367 -0
  381. package/src/apps/relay/App.test.ts +484 -0
  382. package/src/apps/relay/App.ts +128 -0
  383. package/src/apps/relay/Sponsorships.test.ts +375 -0
  384. package/src/apps/relay/Sponsorships.ts +305 -0
  385. package/src/apps/relay/index.ts +2 -0
  386. package/src/{Cli.test.ts → cli/Cli.test.ts} +10 -9
  387. package/src/{Cli.ts → cli/Cli.ts} +16 -9
  388. package/src/cli/bin.ts +4 -0
  389. package/src/cli/commands/admin.test.ts +71 -0
  390. package/src/cli/commands/admin.ts +60 -0
  391. package/src/cloudflare.ts +10 -0
  392. package/src/db/Db.test.ts +84 -0
  393. package/src/db/Db.ts +542 -0
  394. package/src/db/Schema.ts +301 -0
  395. package/src/db/tables/invitations.ts +198 -0
  396. package/src/db/tables/memberships.ts +208 -0
  397. package/src/db/tables/organizations.test.ts +160 -0
  398. package/src/db/tables/organizations.ts +232 -0
  399. package/src/db/tables/projects.ts +107 -0
  400. package/src/db/tables/sponsoredTransactions.test.ts +218 -0
  401. package/src/db/tables/sponsoredTransactions.ts +236 -0
  402. package/src/db/tables/users.ts +85 -0
  403. package/src/db/tables/verifiedTokens.ts +111 -0
  404. package/src/db/tables/webhookDeliveries.ts +159 -0
  405. package/src/db/tables/webhookSubscriptions.ts +358 -0
  406. package/src/handlers/internal/executionError.ts +207 -0
  407. package/src/handlers/internal/multisig.test.ts +818 -0
  408. package/src/handlers/internal/multisig.ts +823 -0
  409. package/src/handlers/internal/requestListener.ts +273 -0
  410. package/src/handlers/internal/sponsorship.ts +245 -0
  411. package/src/handlers/internal/types.ts +378 -0
  412. package/src/handlers/internal/utils.ts +153 -0
  413. package/src/handlers/relay.test.ts +2035 -0
  414. package/src/handlers/relay.ts +1623 -0
  415. package/src/index.ts +4 -2
  416. package/src/internal/Auth.test.ts +337 -21
  417. package/src/internal/Auth.ts +783 -44
  418. package/src/internal/Cursor.test.ts +3 -2
  419. package/src/internal/Log.test.ts +1 -1
  420. package/src/internal/Log.ts +11 -3
  421. package/src/internal/MetricSink.ts +1 -1
  422. package/src/internal/OpenApi.ts +0 -59
  423. package/src/internal/RateLimit.test.ts +1 -1
  424. package/src/internal/RpcSchema.ts +10 -0
  425. package/src/internal/Store.test.ts +150 -10
  426. package/src/internal/Store.ts +136 -11
  427. package/src/internal/Tidx.local.test.ts +1 -1
  428. package/src/internal/VerifiedTokens.test.ts +99 -115
  429. package/src/internal/VerifiedTokens.ts +123 -175
  430. package/src/internal/WebhookDestination.test.ts +1 -1
  431. package/src/internal/Webhooks.test.ts +111 -111
  432. package/src/internal/Webhooks.ts +103 -221
  433. package/dist/ApiKeySource.d.ts +0 -166
  434. package/dist/ApiKeySource.d.ts.map +0 -1
  435. package/dist/ApiKeySource.js +0 -234
  436. package/dist/ApiKeySource.js.map +0 -1
  437. package/dist/Cli.d.ts.map +0 -1
  438. package/dist/Cli.js +0 -13
  439. package/dist/Cli.js.map +0 -1
  440. package/dist/apps/activities.js.map +0 -1
  441. package/dist/apps/addresses.js.map +0 -1
  442. package/dist/apps/balances.d.ts.map +0 -1
  443. package/dist/apps/balances.js.map +0 -1
  444. package/dist/apps/blocks.d.ts.map +0 -1
  445. package/dist/apps/blocks.js.map +0 -1
  446. package/dist/apps/coingecko.d.ts.map +0 -1
  447. package/dist/apps/coingecko.js.map +0 -1
  448. package/dist/apps/exchanges.d.ts.map +0 -1
  449. package/dist/apps/exchanges.js.map +0 -1
  450. package/dist/apps/fee-amm.d.ts.map +0 -1
  451. package/dist/apps/fee-amm.js.map +0 -1
  452. package/dist/apps/indexer.d.ts.map +0 -1
  453. package/dist/apps/indexer.js.map +0 -1
  454. package/dist/apps/receipts.d.ts.map +0 -1
  455. package/dist/apps/receipts.js.map +0 -1
  456. package/dist/apps/rpc.d.ts.map +0 -1
  457. package/dist/apps/rpc.js.map +0 -1
  458. package/dist/apps/tokenlist.d.ts.map +0 -1
  459. package/dist/apps/tokenlist.js.map +0 -1
  460. package/dist/apps/tokens.d.ts.map +0 -1
  461. package/dist/apps/tokens.js.map +0 -1
  462. package/dist/apps/transactions.d.ts.map +0 -1
  463. package/dist/apps/transactions.js.map +0 -1
  464. package/dist/apps/transfers.d.ts.map +0 -1
  465. package/dist/apps/transfers.js.map +0 -1
  466. package/dist/apps/verified-tokens.d.ts.map +0 -1
  467. package/dist/apps/verified-tokens.js.map +0 -1
  468. package/dist/apps/webhooks.js.map +0 -1
  469. package/dist/internal/OpenApi.fonts.d.ts.map +0 -1
  470. package/dist/internal/OpenApi.fonts.js.map +0 -1
  471. package/dist/internal/OpenApi.logo.d.ts.map +0 -1
  472. package/dist/internal/OpenApi.logo.js.map +0 -1
  473. package/seeds/31318/icons/0x20c0000000000000000000000000000000000000.svg +0 -1
  474. package/seeds/31318/icons/0x20c0000000000000000000000000000000000001.svg +0 -1
  475. package/seeds/31318/icons/0x20c0000000000000000000000000000000000002.svg +0 -1
  476. package/seeds/31318/icons/0x20c0000000000000000000000000000000000003.svg +0 -1
  477. package/seeds/31318/verified-tokens.json +0 -30
  478. package/seeds/4217/icons/0x20c0000000000000000000000000000000000000.svg +0 -25
  479. package/seeds/4217/icons/0x20c000000000000000000000048c8f36df1c9a4a.svg +0 -1
  480. package/seeds/4217/icons/0x20c0000000000000000000000520792dcccccccc.svg +0 -1
  481. package/seeds/4217/icons/0x20c0000000000000000000000a6da882d075a4c3.svg +0 -4
  482. package/seeds/4217/icons/0x20c000000000000000000000111111111e910f0f.svg +0 -30
  483. package/seeds/4217/icons/0x20c00000000000000000000014f22ca97301eb73.svg +0 -1
  484. package/seeds/4217/icons/0x20c0000000000000000000001621e21f71cf12fb.svg +0 -1
  485. package/seeds/4217/icons/0x20c0000000000000000000002f52d5cc21a3207b.svg +0 -1
  486. package/seeds/4217/icons/0x20c0000000000000000000003158081efd85bfc2.svg +0 -11
  487. package/seeds/4217/icons/0x20c0000000000000000000003554d28269e0f3c2.svg +0 -1
  488. package/seeds/4217/icons/0x20c000000000000000000000383a23bacb546ab9.svg +0 -1
  489. package/seeds/4217/icons/0x20c00000000000000000000042109aef2f8b28e1.png +0 -0
  490. package/seeds/4217/icons/0x20c0000000000000000000005c0bac7cef389a11.svg +0 -1
  491. package/seeds/4217/icons/0x20c0000000000000000000006fd9a167923ba194.png +0 -0
  492. package/seeds/4217/icons/0x20c0000000000000000000007f7ba549dd0251b9.svg +0 -1
  493. package/seeds/4217/icons/0x20c0000000000000000000008191667423f70e67.svg +0 -5
  494. package/seeds/4217/icons/0x20c0000000000000000000008ee4fcff88888888.svg +0 -1
  495. package/seeds/4217/icons/0x20c0000000000000000000009a4a4b17e0dc6651.svg +0 -1
  496. package/seeds/4217/icons/0x20c000000000000000000000ab02d39df30bd17e.svg +0 -1
  497. package/seeds/4217/icons/0x20c000000000000000000000ae247a1130450f09.svg +0 -1
  498. package/seeds/4217/icons/0x20c000000000000000000000aeed2ec36a54d0e5.svg +0 -1
  499. package/seeds/4217/icons/0x20c000000000000000000000b9537d11c60e8b50.svg +0 -1
  500. package/seeds/4217/icons/0x20c000000000000000000000bd95bfb69fbe6ce3.svg +0 -1
  501. package/seeds/4217/icons/0x20c000000000000000000000c412ec89d0c08be5.svg +0 -1
  502. package/seeds/4217/icons/0x20c000000000000000000000f047dd7018e50367.png +0 -0
  503. package/seeds/4217/verified-tokens.json +0 -177
  504. package/seeds/42431/icons/0x20c0000000000000000000000000000000000000.svg +0 -25
  505. package/seeds/42431/icons/0x20c0000000000000000000000000000000000001.svg +0 -1
  506. package/seeds/42431/icons/0x20c0000000000000000000000000000000000002.svg +0 -1
  507. package/seeds/42431/icons/0x20c0000000000000000000000000000000000003.svg +0 -1
  508. package/seeds/42431/icons/0x20c0000000000000000000009e8d7eb59b783726.svg +0 -1
  509. package/seeds/42431/icons/0x20c000000000000000000000d72572838bbee59c.svg +0 -1
  510. package/seeds/42431/verified-tokens.json +0 -44
  511. package/seeds/openrpc/README.md +0 -27
  512. package/seeds/openrpc/execution-apis.json +0 -8989
  513. package/src/ApiKeySource.test-d.ts +0 -11
  514. package/src/ApiKeySource.test.ts +0 -295
  515. package/src/ApiKeySource.ts +0 -303
  516. /package/src/{internal/OpenApi.fonts.ts → apps/docs/fonts.ts} +0 -0
  517. /package/src/{internal/OpenApi.logo.ts → apps/docs/logo.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invitations.d.ts","sourceRoot":"","sources":["../../../../src/apps/platform/routes/invitations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAO7B,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AAGzD,OAAO,KAAK,EAAS,WAAW,EAAE,MAAM,WAAW,CAAA;AAKnD,qDAAqD;AACrD,yBAAiB,MAAM,CAAC;IAMtB,8BAA8B;IACvB,MAAM,UAAU;;;;;;;;;;;;qBAsCtB,CAAA;IAED,0EAA0E;IACnE,MAAM,MAAM;;qBASuD,CAAA;IAE1E,4DAA4D;IACrD,MAAM,gBAAgB;;;qBAe8B,CAAA;IAE3D,kEAAkE;IAC3D,MAAM,YAAY;;qBASmD,CAAA;IAE5E,2CAA2C;IACpC,MAAM,cAAc;;;;;;;qBAO+B,CAAA;IAE1D,sEAAsE;IACtE,UAAiB,eAAe,CAAC;QAC/B,iDAAiD;QAC1C,MAAM,QAAQ;;;;;;;;;;;;;;yBAKpB,CAAA;KACF;IAED,mDAAmD;IACnD,UAAiB,iBAAiB,CAAC;QACjC,kFAAkF;QAC3E,MAAM,IAAI;;;;;;;;;;;;;yBAOf,CAAA;QAEF,8DAA8D;QACvD,MAAM,QAAQ;;;;;;;;;;;;;;;yBAKpB,CAAA;KACF;IAED,kDAAkD;IAClD,UAAiB,gBAAgB,CAAC;QAChC,2CAA2C;QACpC,MAAM,QAAQ;;;;;;;;yBAmBpB,CAAA;KACF;IAED,kDAAkD;IAClD,UAAiB,gBAAgB,CAAC;QAChC,oDAAoD;QAC7C,MAAM,QAAQ;;yBASgD,CAAA;KACtE;CACF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEAgQ1B"}
@@ -0,0 +1,413 @@
1
+ import { Hono } from 'hono';
2
+ import * as z from 'zod/mini';
3
+ import * as Auth from '../../../internal/Auth.js';
4
+ import * as Db from '../../../db/Db.js';
5
+ import * as Invitations from '../../../db/tables/invitations.js';
6
+ import * as Memberships from '../../../db/tables/memberships.js';
7
+ import * as OpenApi from '../../../internal/OpenApi.js';
8
+ import * as Response from '../../../internal/Response.js';
9
+ import * as Schema from '../../../internal/Schema.js';
10
+ /** How long an invitation stays acceptable. */
11
+ const ttlDays = 7;
12
+ /** Zod schemas owned by the invitations resource. */
13
+ export var schema;
14
+ (function (schema) {
15
+ /** A membership role. */
16
+ const role = z
17
+ .enum(Memberships.roles)
18
+ .check(z.describe('Role granted when the invitation is accepted.'), z.meta({ examples: ['member'] })); // prettier-ignore
19
+ /** One pending invitation. */
20
+ schema.Invitation = Schema.describe(z.object({
21
+ createdAt: z
22
+ .string()
23
+ .check(z.describe('When the invitation was created (ISO 8601).'), z.meta({ examples: ['2026-01-01T00:00:00.000Z'] })),
24
+ email: z
25
+ .string()
26
+ .check(z.describe('Invitee email (lowercase).'), z.meta({ examples: ['dev@example.com'] })),
27
+ expiresAt: z
28
+ .string()
29
+ .check(z.describe('When the invitation expires (ISO 8601).'), z.meta({ examples: ['2026-01-08T00:00:00.000Z'] })),
30
+ id: z
31
+ .string()
32
+ .check(z.describe('Opaque invitation id (`inv_…`).'), z.meta({ examples: ['inv_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
33
+ invitedBy: z
34
+ .string()
35
+ .check(z.describe('User id (`usr_…`) that created the invitation.'), z.meta({ examples: ['usr_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
36
+ orgId: z
37
+ .string()
38
+ .check(z.describe('Organization id (`org_…`) the invitation joins.'), z.meta({ examples: ['org_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
39
+ role,
40
+ }), 'One pending invitation.');
41
+ /** Path parameters addressing an organization's invitation collection. */
42
+ schema.Params = z
43
+ .object({
44
+ orgId: z
45
+ .string()
46
+ .check(z.describe('The organization id (`org_…`).'), z.meta({ examples: ['org_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
47
+ })
48
+ .check(z.describe("Path parameters for an organization's invitations."));
49
+ /** Path parameters addressing one org-scoped invitation. */
50
+ schema.InvitationParams = z
51
+ .object({
52
+ invitationId: z
53
+ .string()
54
+ .check(z.describe('The invitation id (`inv_…`).'), z.meta({ examples: ['inv_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
55
+ orgId: z
56
+ .string()
57
+ .check(z.describe('The organization id (`org_…`).'), z.meta({ examples: ['org_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
58
+ })
59
+ .check(z.describe('Path parameters for one invitation.'));
60
+ /** Path parameters addressing one of the caller's invitations. */
61
+ schema.AcceptParams = z
62
+ .object({
63
+ invitationId: z
64
+ .string()
65
+ .check(z.describe('The invitation id (`inv_…`).'), z.meta({ examples: ['inv_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
66
+ })
67
+ .check(z.describe("Path parameters for one of the caller's invitations."));
68
+ /** Request body creating an invitation. */
69
+ schema.InvitationBody = z
70
+ .object({
71
+ email: z
72
+ .email()
73
+ .check(z.describe('Invitee email.'), z.meta({ examples: ['dev@example.com'] })),
74
+ role,
75
+ })
76
+ .check(z.describe('Fields for creating an invitation.'));
77
+ /** Schemas for the listInvitations / listMyInvitations operations. */
78
+ let listInvitations;
79
+ (function (listInvitations) {
80
+ /** Non-paginated list of pending invitations. */
81
+ listInvitations.Response = Schema.describe(z.object({
82
+ data: z.array(schema.Invitation).check(z.describe('Pending invitations, newest first.')),
83
+ }), 'A non-paginated list of pending invitations.');
84
+ })(listInvitations = schema.listInvitations || (schema.listInvitations = {}));
85
+ /** Schemas for the listMyInvitations operation. */
86
+ let listMyInvitations;
87
+ (function (listMyInvitations) {
88
+ /** A pending invitation addressed to the caller, with the inviting org's name. */
89
+ listMyInvitations.Item = z.extend(schema.Invitation, {
90
+ orgName: z
91
+ .string()
92
+ .check(z.describe('Human-readable name of the inviting organization.'), z.meta({ examples: ['Acme, Inc.'] })),
93
+ });
94
+ /** Non-paginated list of the caller's pending invitations. */
95
+ listMyInvitations.Response = Schema.describe(z.object({
96
+ data: z.array(listMyInvitations.Item).check(z.describe('Pending invitations, newest first.')),
97
+ }), "A non-paginated list of the caller's pending invitations.");
98
+ })(listMyInvitations = schema.listMyInvitations || (schema.listMyInvitations = {}));
99
+ /** Schemas for the acceptInvitation operation. */
100
+ let acceptInvitation;
101
+ (function (acceptInvitation) {
102
+ /** The membership granted by accepting. */
103
+ acceptInvitation.Response = Schema.describe(z.object({
104
+ orgId: z
105
+ .string()
106
+ .check(z.describe('Organization id (`org_…`) joined.'), z.meta({ examples: ['org_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
107
+ role: z
108
+ .enum(Memberships.roles)
109
+ .check(z.describe('Granted role.'), z.meta({ examples: ['member'] })),
110
+ userId: z
111
+ .string()
112
+ .check(z.describe('Member user id (`usr_…`).'), z.meta({ examples: ['usr_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
113
+ }), 'The membership granted by accepting.');
114
+ })(acceptInvitation = schema.acceptInvitation || (schema.acceptInvitation = {}));
115
+ /** Schemas for the revokeInvitation operation. */
116
+ let revokeInvitation;
117
+ (function (revokeInvitation) {
118
+ /** Confirmation that the invitation was revoked. */
119
+ revokeInvitation.Response = z
120
+ .object({
121
+ id: z
122
+ .string()
123
+ .check(z.describe('ID of the invitation that was revoked.'), z.meta({ examples: ['inv_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
124
+ })
125
+ .check(z.describe('Confirmation that the invitation was revoked.'));
126
+ })(revokeInvitation = schema.revokeInvitation || (schema.revokeInvitation = {}));
127
+ })(schema || (schema = {}));
128
+ /**
129
+ * Mounts the invitations surface: org-scoped management
130
+ * (`/orgs/:orgId/invitations`, admins and owners) plus the invitee's side
131
+ * (`/invitations`, matched against the session's verified email). Invitation
132
+ * emails dispatch through the sender the platform group publishes on context
133
+ * (`c.get('email')`), best-effort.
134
+ */
135
+ export function invitations() {
136
+ return new Hono()
137
+ .post('/v1/orgs/:orgId{org_[A-Za-z0-9_-]+}/invitations', Auth.policy({ session: true }), Auth.ensureOrg({ role: 'admin' }), OpenApi.validate('param', schema.Params, {
138
+ code: 'param_invalid',
139
+ message: 'Check the path parameters and try again.',
140
+ }), OpenApi.validate('json', schema.InvitationBody, {
141
+ code: 'body_invalid',
142
+ message: 'Check the request body and try again.',
143
+ }), OpenApi.describeRoute({
144
+ description: 'Invite an email to the organization with a role. The invitee accepts after signing in with that verified email.', // prettier-ignore
145
+ operationId: 'createInvitation',
146
+ responses: OpenApi.responses({
147
+ errors: { 404: 'No accessible organization was found for this id.' },
148
+ success: { description: 'The created invitation.', schema: schema.Invitation },
149
+ }),
150
+ summary: 'Create invitation',
151
+ tags: ['Invitations'],
152
+ }), async (c) => {
153
+ if (Auth.narrowAccess)
154
+ return Auth.superAdminAccessError(c);
155
+ if (Auth.narrowScope)
156
+ return Auth.ensureOrgError(c);
157
+ if (OpenApi.narrowValidation)
158
+ return OpenApi.validationError(c, {
159
+ code: 'param_invalid',
160
+ message: 'Check the path parameters and try again.',
161
+ });
162
+ if (OpenApi.narrowValidation)
163
+ return OpenApi.validationError(c, {
164
+ code: 'body_invalid',
165
+ message: 'Check the request body and try again.',
166
+ });
167
+ const body = c.req.valid('json');
168
+ // Owners invite anyone; everyone else grants only roles strictly below
169
+ // their own (an admin invites members, never peers). The super admin
170
+ // has no membership and may grant any role.
171
+ const caller = Auth.membership(c);
172
+ if (caller &&
173
+ caller.role !== 'owner' &&
174
+ Memberships.rank[body.role] >= Memberships.rank[caller.role])
175
+ return Response.error(c, {
176
+ code: 'forbidden',
177
+ message: 'Cannot invite at or above your own role',
178
+ status: 403,
179
+ });
180
+ const invitedBy = caller?.userId ?? 'super_admin';
181
+ const db = Db.get(c.get('db'));
182
+ try {
183
+ const record = await Invitations.create(db, {
184
+ email: body.email,
185
+ expiresAt: new Date(Date.now() + ttlDays * 86_400_000).toISOString(),
186
+ invitedBy,
187
+ orgId: Auth.org(c).id,
188
+ role: body.role,
189
+ });
190
+ dispatchEmail(c, { email: c.get('email'), org: Auth.org(c).name, record });
191
+ return c.json(Response.validated(schema.Invitation, serializeInvitation(record)), 200);
192
+ }
193
+ catch (cause) {
194
+ return Response.upstream(c, cause);
195
+ }
196
+ })
197
+ .get('/v1/orgs/:orgId{org_[A-Za-z0-9_-]+}/invitations', Auth.policy({ session: true }), Auth.ensureOrg({ role: 'admin' }), OpenApi.validate('param', schema.Params, {
198
+ code: 'param_invalid',
199
+ message: 'Check the path parameters and try again.',
200
+ }), OpenApi.describeRoute({
201
+ operationId: 'listInvitations',
202
+ responses: OpenApi.responses({
203
+ errors: { 404: 'No accessible organization was found for this id.' },
204
+ success: {
205
+ description: 'Pending invitations, newest first.',
206
+ schema: schema.listInvitations.Response,
207
+ },
208
+ }),
209
+ summary: 'List invitations',
210
+ tags: ['Invitations'],
211
+ }), async (c) => {
212
+ if (Auth.narrowAccess)
213
+ return Auth.superAdminAccessError(c);
214
+ if (Auth.narrowScope)
215
+ return Auth.ensureOrgError(c);
216
+ if (OpenApi.narrowValidation)
217
+ return OpenApi.validationError(c, {
218
+ code: 'param_invalid',
219
+ message: 'Check the path parameters and try again.',
220
+ });
221
+ const db = Db.get(c.get('db'));
222
+ try {
223
+ const records = await Invitations.listByOrg(db, Auth.org(c).id);
224
+ return c.json(Response.validated(schema.listInvitations.Response, {
225
+ data: records.map(serializeInvitation),
226
+ }), 200);
227
+ }
228
+ catch (cause) {
229
+ return Response.upstream(c, cause);
230
+ }
231
+ })
232
+ .delete('/v1/orgs/:orgId{org_[A-Za-z0-9_-]+}/invitations/:invitationId{inv_[A-Za-z0-9_-]+}', Auth.policy({ session: true }), Auth.ensureOrg({ role: 'admin' }), OpenApi.validate('param', schema.InvitationParams, {
233
+ code: 'param_invalid',
234
+ message: 'Check the path parameters and try again.',
235
+ }), OpenApi.describeRoute({
236
+ operationId: 'revokeInvitation',
237
+ responses: OpenApi.responses({
238
+ errors: { 404: 'No accessible pending invitation was found for this id.' },
239
+ success: {
240
+ description: 'Confirmation that the invitation was revoked.',
241
+ schema: schema.revokeInvitation.Response,
242
+ },
243
+ }),
244
+ summary: 'Revoke invitation',
245
+ tags: ['Invitations'],
246
+ }), async (c) => {
247
+ if (Auth.narrowAccess)
248
+ return Auth.superAdminAccessError(c);
249
+ if (Auth.narrowScope)
250
+ return Auth.ensureOrgError(c);
251
+ if (OpenApi.narrowValidation)
252
+ return OpenApi.validationError(c, {
253
+ code: 'param_invalid',
254
+ message: 'Check the path parameters and try again.',
255
+ });
256
+ const { invitationId } = c.req.valid('param');
257
+ const db = Db.get(c.get('db'));
258
+ try {
259
+ // Bind the invitation to the scoped org before revoking.
260
+ const record = await Invitations.get(db, invitationId);
261
+ if (!record || record.orgId !== Auth.org(c).id)
262
+ return invitationNotFound(c);
263
+ const revoked = await Invitations.revoke(db, invitationId);
264
+ if (!revoked)
265
+ return invitationNotFound(c);
266
+ return c.json(Response.validated(schema.revokeInvitation.Response, { id: invitationId }), 200);
267
+ }
268
+ catch (cause) {
269
+ return Response.upstream(c, cause);
270
+ }
271
+ })
272
+ .get('/v1/invitations', Auth.policy({ session: true }), OpenApi.describeRoute({
273
+ description: "Pending invitations addressed to the session's verified email.",
274
+ operationId: 'listMyInvitations',
275
+ responses: OpenApi.responses({
276
+ success: {
277
+ description: 'Pending invitations, newest first.',
278
+ schema: schema.listMyInvitations.Response,
279
+ },
280
+ }),
281
+ summary: 'List my invitations',
282
+ tags: ['Invitations'],
283
+ }), async (c) => {
284
+ if (Auth.narrowAccess)
285
+ return Auth.superAdminAccessError(c);
286
+ const principal = Auth.getPrincipal(c);
287
+ if (principal?.type !== 'session')
288
+ return sessionRequired(c);
289
+ // Without a verified email there is nothing to match against.
290
+ if (!principal.email)
291
+ return c.json(Response.validated(schema.listMyInvitations.Response, { data: [] }), 200);
292
+ const db = Db.get(c.get('db'));
293
+ try {
294
+ const records = await Invitations.listByEmail(db, principal.email);
295
+ return c.json(Response.validated(schema.listMyInvitations.Response, {
296
+ data: records.map((record) => ({
297
+ ...serializeInvitation(record),
298
+ orgName: record.orgName,
299
+ })),
300
+ }), 200);
301
+ }
302
+ catch (cause) {
303
+ return Response.upstream(c, cause);
304
+ }
305
+ })
306
+ .post('/v1/invitations/:invitationId{inv_[A-Za-z0-9_-]+}/accept', Auth.policy({ session: true }), OpenApi.validate('param', schema.AcceptParams, {
307
+ code: 'param_invalid',
308
+ message: 'Check the path parameters and try again.',
309
+ }), OpenApi.describeRoute({
310
+ description: "Accept an invitation addressed to the session's verified email, joining the organization with the invited role.", // prettier-ignore
311
+ operationId: 'acceptInvitation',
312
+ responses: OpenApi.responses({
313
+ errors: { 404: 'No accessible pending invitation was found for this id.' },
314
+ success: {
315
+ description: 'The membership granted by accepting.',
316
+ schema: schema.acceptInvitation.Response,
317
+ },
318
+ }),
319
+ summary: 'Accept invitation',
320
+ tags: ['Invitations'],
321
+ }), async (c) => {
322
+ if (Auth.narrowAccess)
323
+ return Auth.superAdminAccessError(c);
324
+ if (OpenApi.narrowValidation)
325
+ return OpenApi.validationError(c, {
326
+ code: 'param_invalid',
327
+ message: 'Check the path parameters and try again.',
328
+ });
329
+ const principal = Auth.getPrincipal(c);
330
+ if (principal?.type !== 'session')
331
+ return sessionRequired(c);
332
+ const { invitationId } = c.req.valid('param');
333
+ const db = Db.get(c.get('db'));
334
+ try {
335
+ // An invitation is visible only to the verified holder of its email;
336
+ // everyone else sees 404.
337
+ const record = await Invitations.get(db, invitationId);
338
+ if (!record || record.email !== principal.email?.toLowerCase())
339
+ return invitationNotFound(c);
340
+ const accepted = await Invitations.accept(db, invitationId, principal.id);
341
+ if (!accepted)
342
+ return invitationNotFound(c);
343
+ const membership = await Memberships.get(db, accepted.orgId, principal.id);
344
+ return c.json(Response.validated(schema.acceptInvitation.Response, {
345
+ orgId: accepted.orgId,
346
+ role: membership?.role ?? accepted.role,
347
+ userId: principal.id,
348
+ }), 200);
349
+ }
350
+ catch (cause) {
351
+ return Response.upstream(c, cause);
352
+ }
353
+ });
354
+ }
355
+ /** Dispatches the invitation email through the app's sender, best-effort. */
356
+ function dispatchEmail(c, options) {
357
+ const { email: sender, org, record } = options;
358
+ if (!sender)
359
+ return;
360
+ const days = Math.max(1, Math.round((Date.parse(record.expiresAt) - Date.now()) / 86_400_000));
361
+ const expiry = days === 1 ? '1 day' : `${days} days`;
362
+ const link = new URL(sender.consoleUrl ?? 'https://console.tempo.xyz');
363
+ link.searchParams.set('email', record.email);
364
+ const url = link.href;
365
+ const dispatch = Promise.resolve(sender.send({
366
+ from: sender.from,
367
+ html: `<p>You've been invited to join <strong>${escapeHtml(org)}</strong> on the Tempo Developer Platform</p><p>Sign in at <a href="${url}">${url}</a> to accept. This invitation expires in ${expiry}.</p>`,
368
+ subject: `You've been invited to ${org} on the Tempo Developer Platform`,
369
+ text: `You've been invited to join ${org} on the Tempo Developer Platform\n\nSign in at ${url} to accept. This invitation expires in ${expiry}.`,
370
+ to: record.email,
371
+ })).catch((error) => console.error('invitation email dispatch failed', error));
372
+ try {
373
+ c.executionCtx.waitUntil(dispatch);
374
+ }
375
+ catch {
376
+ // Non-Workers runtime: the floating promise settles on its own.
377
+ }
378
+ }
379
+ /** Escapes org-controlled text for the HTML body. */
380
+ function escapeHtml(text) {
381
+ return text
382
+ .replaceAll('&', '&amp;')
383
+ .replaceAll('<', '&lt;')
384
+ .replaceAll('>', '&gt;')
385
+ .replaceAll('"', '&quot;');
386
+ }
387
+ /** Projects an invitation row onto the pending-invitation shape. */
388
+ function serializeInvitation(record) {
389
+ return {
390
+ createdAt: record.createdAt,
391
+ email: record.email,
392
+ expiresAt: record.expiresAt,
393
+ id: record.id,
394
+ invitedBy: record.invitedBy,
395
+ orgId: record.orgId,
396
+ role: record.role,
397
+ };
398
+ }
399
+ function invitationNotFound(c) {
400
+ return Response.error(c, {
401
+ code: 'invitation_not_found',
402
+ message: 'Invitation not found',
403
+ status: 404,
404
+ });
405
+ }
406
+ function sessionRequired(c) {
407
+ return Response.error(c, {
408
+ code: 'forbidden',
409
+ message: 'Session required',
410
+ status: 403,
411
+ });
412
+ }
413
+ //# sourceMappingURL=invitations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invitations.js","sourceRoot":"","sources":["../../../../src/apps/platform/routes/invitations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import * as z from 'zod/mini';
2
+ import type * as App from '../../../App.js';
3
+ import * as Response from '../../../internal/Response.js';
4
+ /** Zod schemas owned by the current-user resource. */
5
+ export declare namespace schema {
6
+ /** The signed-in developer. */
7
+ const User: z.ZodMiniObject<{
8
+ address: z.ZodMiniOptional<z.ZodMiniString<string>>;
9
+ createdAt: z.ZodMiniString<string>;
10
+ email: z.ZodMiniOptional<z.ZodMiniString<string>>;
11
+ id: z.ZodMiniString<string>;
12
+ updatedAt: z.ZodMiniString<string>;
13
+ }, z.core.$strip>;
14
+ }
15
+ /**
16
+ * Mounts the `/me` resource: the session's user. Session lane only — API keys
17
+ * identify workloads, not developers.
18
+ */
19
+ export declare function me(): import("hono/hono-base").HonoBase<App.Environment, {
20
+ "/v1/me": {
21
+ $get: {
22
+ output: {
23
+ error: {
24
+ code: "api_key_malformed";
25
+ details?: readonly Response.error.Detail[] | undefined;
26
+ message: string;
27
+ };
28
+ requestId: string;
29
+ };
30
+ outputFormat: "json";
31
+ status: 400;
32
+ input: {};
33
+ } | {
34
+ output: {
35
+ error: {
36
+ code: "api_key_invalid" | "api_key_missing";
37
+ details?: readonly Response.error.Detail[] | undefined;
38
+ message: string;
39
+ };
40
+ requestId: string;
41
+ };
42
+ outputFormat: "json";
43
+ status: 401;
44
+ input: {};
45
+ } | {
46
+ output: {
47
+ error: {
48
+ code: "upstream_error";
49
+ details?: readonly Response.error.Detail[] | undefined;
50
+ message: string;
51
+ };
52
+ requestId: string;
53
+ };
54
+ outputFormat: "json";
55
+ status: 502;
56
+ input: {};
57
+ } | {
58
+ output: {
59
+ error: {
60
+ code: "forbidden";
61
+ details?: readonly Response.error.Detail[] | undefined;
62
+ message: string;
63
+ };
64
+ requestId: string;
65
+ };
66
+ outputFormat: "json";
67
+ status: 403;
68
+ input: {};
69
+ } | {
70
+ output: {
71
+ error: {
72
+ code: "user_not_found";
73
+ details?: readonly Response.error.Detail[] | undefined;
74
+ message: string;
75
+ };
76
+ requestId: string;
77
+ };
78
+ outputFormat: "json";
79
+ status: 404;
80
+ input: {};
81
+ } | {
82
+ output: {
83
+ address?: string | undefined;
84
+ createdAt: string;
85
+ email?: string | undefined;
86
+ id: string;
87
+ updatedAt: string;
88
+ };
89
+ outputFormat: "json";
90
+ status: 200;
91
+ input: {};
92
+ };
93
+ };
94
+ }, "/", "/v1/me">;
95
+ //# sourceMappingURL=me.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../../../src/apps/platform/routes/me.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,OAAO,KAAK,KAAK,GAAG,MAAM,iBAAiB,CAAA;AAI3C,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AAIzD,sDAAsD;AACtD,yBAAiB,MAAM,CAAC;IACtB,+BAA+B;IACxB,MAAM,IAAI;;;;;;qBA+BhB,CAAA;CACF;AAED;;;GAGG;AACH,wBAAgB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAqDjB"}
@@ -0,0 +1,81 @@
1
+ import { Hono } from 'hono';
2
+ import * as z from 'zod/mini';
3
+ import * as Auth from '../../../internal/Auth.js';
4
+ import * as Db from '../../../db/Db.js';
5
+ import * as OpenApi from '../../../internal/OpenApi.js';
6
+ import * as Response from '../../../internal/Response.js';
7
+ import * as Schema from '../../../internal/Schema.js';
8
+ import * as Users from '../../../db/tables/users.js';
9
+ /** Zod schemas owned by the current-user resource. */
10
+ export var schema;
11
+ (function (schema) {
12
+ /** The signed-in developer. */
13
+ schema.User = Schema.describe(z.object({
14
+ address: z
15
+ .optional(z.string())
16
+ .check(z.describe('Wallet address bound to this user, when wallet sign-in established it.'), z.meta({ examples: ['0x0000000000000000000000000000000000000001'] })),
17
+ createdAt: z
18
+ .string()
19
+ .check(z.describe('When the user was created (ISO 8601).'), z.meta({ examples: ['2026-01-01T00:00:00.000Z'] })),
20
+ email: z
21
+ .optional(z.string())
22
+ .check(z.describe('Verified email from the wallet identity token, when present.')),
23
+ id: z
24
+ .string()
25
+ .check(z.describe('Opaque user id (`usr_…`).'), z.meta({ examples: ['usr_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
26
+ updatedAt: z
27
+ .string()
28
+ .check(z.describe('When the user was last updated (ISO 8601).'), z.meta({ examples: ['2026-01-01T00:00:00.000Z'] })),
29
+ }), 'The signed-in developer.');
30
+ })(schema || (schema = {}));
31
+ /**
32
+ * Mounts the `/me` resource: the session's user. Session lane only — API keys
33
+ * identify workloads, not developers.
34
+ */
35
+ export function me() {
36
+ return new Hono().get('/v1/me', Auth.policy({ session: true }), OpenApi.describeRoute({
37
+ operationId: 'getMe',
38
+ responses: OpenApi.responses({
39
+ errors: {
40
+ 403: 'The caller is not a signed-in user.',
41
+ 404: 'No user exists for this session.',
42
+ },
43
+ success: { description: 'The authenticated user.', schema: schema.User },
44
+ }),
45
+ summary: 'Get current user',
46
+ tags: ['Users'],
47
+ }), async (c) => {
48
+ if (Auth.narrowAccess)
49
+ return Auth.superAdminAccessError(c);
50
+ // The session lane is the only lane here; `super_admin` bypasses lanes
51
+ // but has no user row, so it is rejected too.
52
+ const principal = Auth.getPrincipal(c);
53
+ if (principal?.type !== 'session')
54
+ return Response.error(c, {
55
+ code: 'forbidden',
56
+ message: 'Session required',
57
+ status: 403,
58
+ });
59
+ const db = Db.get(c.get('db'));
60
+ try {
61
+ const user = await Users.get(db, principal.id);
62
+ if (!user)
63
+ return Response.error(c, {
64
+ code: 'user_not_found',
65
+ message: 'User not found',
66
+ status: 404,
67
+ });
68
+ return c.json(Response.validated(schema.User, {
69
+ ...(user.address ? { address: user.address } : {}),
70
+ createdAt: user.createdAt,
71
+ ...(user.email ? { email: user.email } : {}),
72
+ id: user.id,
73
+ updatedAt: user.updatedAt,
74
+ }), 200);
75
+ }
76
+ catch (cause) {
77
+ return Response.upstream(c, cause);
78
+ }
79
+ });
80
+ }
81
+ //# sourceMappingURL=me.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"me.js","sourceRoot":"","sources":["../../../../src/apps/platform/routes/me.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAG7B,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AACzD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA;AAEpD,sDAAsD;AACtD,MAAM,KAAW,MAAM,CAkCtB;AAlCD,WAAiB,MAAM;IACrB,+BAA+B;IAClB,WAAI,GAAG,MAAM,CAAC,QAAQ,CACjC,CAAC,CAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;aACP,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACpB,KAAK,CACJ,CAAC,CAAC,QAAQ,CAAC,wEAAwE,CAAC,EACpF,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,4CAA4C,CAAC,EAAE,CAAC,CACrE;QACH,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,KAAK,CACJ,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC,EACnD,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,CACnD;QACH,KAAK,EAAE,CAAC;aACL,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACpB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,8DAA8D,CAAC,CAAC;QACpF,EAAE,EAAE,CAAC;aACF,MAAM,EAAE;aACR,KAAK,CACJ,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EACvC,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,8BAA8B,CAAC,EAAE,CAAC,CACvD;QACH,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,KAAK,CACJ,CAAC,CAAC,QAAQ,CAAC,4CAA4C,CAAC,EACxD,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,CACnD;KACJ,CAAC,EACF,0BAA0B,CAC3B,CAAA;AACH,CAAC,EAlCgB,MAAM,KAAN,MAAM,QAkCtB;AAED;;;GAGG;AACH,MAAM,UAAU,EAAE;IAChB,OAAO,IAAI,IAAI,EAAmB,CAAC,GAAG,CACpC,QAAQ,EACR,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAC9B,OAAO,CAAC,aAAa,CAAC;QACpB,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;YAC3B,MAAM,EAAE;gBACN,GAAG,EAAE,qCAAqC;gBAC1C,GAAG,EAAE,kCAAkC;aACxC;YACD,OAAO,EAAE,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;SACzE,CAAC;QACF,OAAO,EAAE,kBAAkB;QAC3B,IAAI,EAAE,CAAC,OAAO,CAAC;KAChB,CAAC,EACF,KAAK,EAAE,CAAC,EAAE,EAAE;QACV,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QAE3D,uEAAuE;QACvE,8CAA8C;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACtC,IAAI,SAAS,EAAE,IAAI,KAAK,SAAS;YAC/B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;gBACvB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kBAAkB;gBAC3B,MAAM,EAAE,GAAG;aACZ,CAAC,CAAA;QAEJ,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAA;YAC9C,IAAI,CAAC,IAAI;gBACP,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;oBACvB,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,gBAAgB;oBACzB,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAA;YACJ,OAAO,CAAC,CAAC,IAAI,CACX,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;gBAC9B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,EACF,GAAG,CACJ,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QACpC,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC"}