tapimo 0.1.0 → 0.3.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 (520) hide show
  1. package/README.md +57 -16
  2. package/dist/ApiKey.d.ts +4 -1
  3. package/dist/ApiKey.d.ts.map +1 -1
  4. package/dist/ApiKey.js +6 -2
  5. package/dist/ApiKey.js.map +1 -1
  6. package/dist/ApiKeys.d.ts +98 -3
  7. package/dist/ApiKeys.d.ts.map +1 -1
  8. package/dist/ApiKeys.js +150 -1
  9. package/dist/ApiKeys.js.map +1 -1
  10. package/dist/App.d.ts +7917 -2315
  11. package/dist/App.d.ts.map +1 -1
  12. package/dist/App.js +141 -329
  13. package/dist/App.js.map +1 -1
  14. package/dist/Scope.d.ts +20 -4
  15. package/dist/Scope.d.ts.map +1 -1
  16. package/dist/Scope.js +23 -4
  17. package/dist/Scope.js.map +1 -1
  18. package/dist/Webhooks.d.ts +2 -2
  19. package/dist/Webhooks.d.ts.map +1 -1
  20. package/dist/Webhooks.js +2 -2
  21. package/dist/Webhooks.js.map +1 -1
  22. package/dist/admin/App.d.ts +203 -120
  23. package/dist/admin/App.d.ts.map +1 -1
  24. package/dist/admin/apps/api-keys.d.ts +111 -6
  25. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  26. package/dist/admin/apps/api-keys.js +67 -0
  27. package/dist/admin/apps/api-keys.js.map +1 -1
  28. package/dist/admin/apps/scopes.d.ts +12 -1
  29. package/dist/admin/apps/scopes.d.ts.map +1 -1
  30. package/dist/admin/apps/scopes.js +3 -0
  31. package/dist/admin/apps/scopes.js.map +1 -1
  32. package/dist/admin/apps/verified-tokens.d.ts +116 -116
  33. package/dist/admin/apps/verified-tokens.js +1 -1
  34. package/dist/admin/apps/verified-tokens.js.map +1 -1
  35. package/dist/admin/ui.generated.d.ts +1 -1
  36. package/dist/admin/ui.generated.js +13 -13
  37. package/dist/admin/ui.generated.js.map +1 -1
  38. package/dist/analytics/Analytics.d.ts +151 -0
  39. package/dist/analytics/Analytics.d.ts.map +1 -0
  40. package/dist/analytics/Analytics.js +212 -0
  41. package/dist/analytics/Analytics.js.map +1 -0
  42. package/dist/analytics/tables/requestEvents.d.ts +215 -0
  43. package/dist/analytics/tables/requestEvents.d.ts.map +1 -0
  44. package/dist/analytics/tables/requestEvents.js +264 -0
  45. package/dist/analytics/tables/requestEvents.js.map +1 -0
  46. package/dist/apps/data/App.d.ts +19576 -0
  47. package/dist/apps/data/App.d.ts.map +1 -0
  48. package/dist/apps/data/App.js +272 -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} +4 -4
  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} +8 -8
  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} +108 -108
  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} +39 -39
  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/data/routes/funding.d.ts +765 -0
  83. package/dist/apps/data/routes/funding.d.ts.map +1 -0
  84. package/dist/apps/data/routes/funding.js +383 -0
  85. package/dist/apps/data/routes/funding.js.map +1 -0
  86. package/dist/apps/{indexer.d.ts → data/routes/indexer.d.ts} +4 -4
  87. package/dist/apps/data/routes/indexer.d.ts.map +1 -0
  88. package/dist/apps/{indexer.js → data/routes/indexer.js} +13 -9
  89. package/dist/apps/data/routes/indexer.js.map +1 -0
  90. package/dist/apps/{receipts.d.ts → data/routes/receipts.d.ts} +49 -49
  91. package/dist/apps/data/routes/receipts.d.ts.map +1 -0
  92. package/dist/apps/{receipts.js → data/routes/receipts.js} +14 -20
  93. package/dist/apps/data/routes/receipts.js.map +1 -0
  94. package/dist/apps/{rpc.d.ts → data/routes/rpc.d.ts} +33 -40
  95. package/dist/apps/data/routes/rpc.d.ts.map +1 -0
  96. package/dist/apps/{rpc.js → data/routes/rpc.js} +35 -7
  97. package/dist/apps/data/routes/rpc.js.map +1 -0
  98. package/dist/apps/{tokenlist.d.ts → data/routes/tokenlist.d.ts} +40 -40
  99. package/dist/apps/data/routes/tokenlist.d.ts.map +1 -0
  100. package/dist/apps/{tokenlist.js → data/routes/tokenlist.js} +8 -8
  101. package/dist/apps/data/routes/tokenlist.js.map +1 -0
  102. package/dist/apps/{tokens.d.ts → data/routes/tokens.d.ts} +468 -468
  103. package/dist/apps/data/routes/tokens.d.ts.map +1 -0
  104. package/dist/apps/{tokens.js → data/routes/tokens.js} +19 -19
  105. package/dist/apps/data/routes/tokens.js.map +1 -0
  106. package/dist/apps/{transactions.d.ts → data/routes/transactions.d.ts} +304 -304
  107. package/dist/apps/data/routes/transactions.d.ts.map +1 -0
  108. package/dist/apps/{transactions.js → data/routes/transactions.js} +13 -13
  109. package/dist/apps/data/routes/transactions.js.map +1 -0
  110. package/dist/apps/{transfers.d.ts → data/routes/transfers.d.ts} +62 -62
  111. package/dist/apps/data/routes/transfers.d.ts.map +1 -0
  112. package/dist/apps/{transfers.js → data/routes/transfers.js} +13 -13
  113. package/dist/apps/data/routes/transfers.js.map +1 -0
  114. package/dist/apps/{verified-tokens.d.ts → data/routes/verified-tokens.d.ts} +6 -6
  115. package/dist/apps/data/routes/verified-tokens.d.ts.map +1 -0
  116. package/dist/apps/{verified-tokens.js → data/routes/verified-tokens.js} +9 -9
  117. package/dist/apps/data/routes/verified-tokens.js.map +1 -0
  118. package/dist/apps/{webhooks.d.ts → data/routes/webhooks.d.ts} +17 -17
  119. package/dist/apps/{webhooks.d.ts.map → data/routes/webhooks.d.ts.map} +1 -1
  120. package/dist/apps/{webhooks.js → data/routes/webhooks.js} +38 -34
  121. package/dist/apps/data/routes/webhooks.js.map +1 -0
  122. package/dist/apps/docs/App.d.ts +29 -0
  123. package/dist/apps/docs/App.d.ts.map +1 -0
  124. package/dist/apps/docs/App.js +54 -0
  125. package/dist/apps/docs/App.js.map +1 -0
  126. package/dist/{internal/OpenApi.fonts.d.ts → apps/docs/fonts.d.ts} +1 -1
  127. package/dist/apps/docs/fonts.d.ts.map +1 -0
  128. package/dist/{internal/OpenApi.fonts.js → apps/docs/fonts.js} +1 -1
  129. package/dist/apps/docs/fonts.js.map +1 -0
  130. package/dist/apps/docs/index.d.ts +2 -0
  131. package/dist/apps/docs/index.d.ts.map +1 -0
  132. package/dist/apps/docs/index.js +2 -0
  133. package/dist/apps/docs/index.js.map +1 -0
  134. package/dist/{internal/OpenApi.logo.d.ts → apps/docs/logo.d.ts} +1 -1
  135. package/dist/apps/docs/logo.d.ts.map +1 -0
  136. package/dist/{internal/OpenApi.logo.js → apps/docs/logo.js} +1 -1
  137. package/dist/apps/docs/logo.js.map +1 -0
  138. package/dist/apps/docs/reference.d.ts +21 -0
  139. package/dist/apps/docs/reference.d.ts.map +1 -0
  140. package/dist/apps/docs/reference.js +112 -0
  141. package/dist/apps/docs/reference.js.map +1 -0
  142. package/dist/apps/index.d.ts +5 -0
  143. package/dist/apps/index.d.ts.map +1 -0
  144. package/dist/apps/index.js +5 -0
  145. package/dist/apps/index.js.map +1 -0
  146. package/dist/apps/mcp.d.ts +76 -0
  147. package/dist/apps/mcp.d.ts.map +1 -0
  148. package/dist/apps/mcp.js +188 -0
  149. package/dist/apps/mcp.js.map +1 -0
  150. package/dist/apps/metadata.d.ts +7 -0
  151. package/dist/apps/metadata.d.ts.map +1 -0
  152. package/dist/apps/metadata.js +15 -0
  153. package/dist/apps/metadata.js.map +1 -0
  154. package/dist/apps/platform/App.d.ts +5262 -0
  155. package/dist/apps/platform/App.d.ts.map +1 -0
  156. package/dist/apps/platform/App.js +84 -0
  157. package/dist/apps/platform/App.js.map +1 -0
  158. package/dist/apps/platform/Billing.d.ts +279 -0
  159. package/dist/apps/platform/Billing.d.ts.map +1 -0
  160. package/dist/apps/platform/Billing.js +477 -0
  161. package/dist/apps/platform/Billing.js.map +1 -0
  162. package/dist/apps/platform/index.d.ts +3 -0
  163. package/dist/apps/platform/index.d.ts.map +1 -0
  164. package/dist/apps/platform/index.js +3 -0
  165. package/dist/apps/platform/index.js.map +1 -0
  166. package/dist/apps/platform/routes/api-keys.d.ts +973 -0
  167. package/dist/apps/platform/routes/api-keys.d.ts.map +1 -0
  168. package/dist/apps/platform/routes/api-keys.js +430 -0
  169. package/dist/apps/platform/routes/api-keys.js.map +1 -0
  170. package/dist/apps/platform/routes/billing.d.ts +1520 -0
  171. package/dist/apps/platform/routes/billing.d.ts.map +1 -0
  172. package/dist/apps/platform/routes/billing.js +795 -0
  173. package/dist/apps/platform/routes/billing.js.map +1 -0
  174. package/dist/apps/platform/routes/invitations.d.ts +851 -0
  175. package/dist/apps/platform/routes/invitations.d.ts.map +1 -0
  176. package/dist/apps/platform/routes/invitations.js +471 -0
  177. package/dist/apps/platform/routes/invitations.js.map +1 -0
  178. package/dist/apps/platform/routes/me.d.ts +95 -0
  179. package/dist/apps/platform/routes/me.d.ts.map +1 -0
  180. package/dist/apps/platform/routes/me.js +81 -0
  181. package/dist/apps/platform/routes/me.js.map +1 -0
  182. package/dist/apps/platform/routes/members.d.ts +554 -0
  183. package/dist/apps/platform/routes/members.d.ts.map +1 -0
  184. package/dist/apps/platform/routes/members.js +251 -0
  185. package/dist/apps/platform/routes/members.js.map +1 -0
  186. package/dist/apps/platform/routes/orgs.d.ts +596 -0
  187. package/dist/apps/platform/routes/orgs.d.ts.map +1 -0
  188. package/dist/apps/platform/routes/orgs.js +276 -0
  189. package/dist/apps/platform/routes/orgs.js.map +1 -0
  190. package/dist/apps/platform/routes/projects.d.ts +740 -0
  191. package/dist/apps/platform/routes/projects.d.ts.map +1 -0
  192. package/dist/apps/platform/routes/projects.js +286 -0
  193. package/dist/apps/platform/routes/projects.js.map +1 -0
  194. package/dist/apps/platform/routes/scopes.d.ts +107 -0
  195. package/dist/apps/platform/routes/scopes.d.ts.map +1 -0
  196. package/dist/apps/platform/routes/scopes.js +66 -0
  197. package/dist/apps/platform/routes/scopes.js.map +1 -0
  198. package/dist/apps/platform/routes/usage.d.ts +588 -0
  199. package/dist/apps/platform/routes/usage.d.ts.map +1 -0
  200. package/dist/apps/platform/routes/usage.js +391 -0
  201. package/dist/apps/platform/routes/usage.js.map +1 -0
  202. package/dist/apps/relay/App.d.ts +44 -0
  203. package/dist/apps/relay/App.d.ts.map +1 -0
  204. package/dist/apps/relay/App.js +211 -0
  205. package/dist/apps/relay/App.js.map +1 -0
  206. package/dist/apps/relay/Sponsorships.d.ts +107 -0
  207. package/dist/apps/relay/Sponsorships.d.ts.map +1 -0
  208. package/dist/apps/relay/Sponsorships.js +194 -0
  209. package/dist/apps/relay/Sponsorships.js.map +1 -0
  210. package/dist/apps/relay/index.d.ts +3 -0
  211. package/dist/apps/relay/index.d.ts.map +1 -0
  212. package/dist/apps/relay/index.js +3 -0
  213. package/dist/apps/relay/index.js.map +1 -0
  214. package/dist/cli/Cli.d.ts +9 -2
  215. package/dist/cli/Cli.d.ts.map +1 -1
  216. package/dist/cli/Cli.js +12 -4
  217. package/dist/cli/Cli.js.map +1 -1
  218. package/dist/cli/commands/admin.d.ts +5 -1
  219. package/dist/cli/commands/admin.d.ts.map +1 -1
  220. package/dist/cli/commands/admin.js +82 -3
  221. package/dist/cli/commands/admin.js.map +1 -1
  222. package/dist/db/Db.d.ts +17 -0
  223. package/dist/db/Db.d.ts.map +1 -1
  224. package/dist/db/Db.js +254 -0
  225. package/dist/db/Db.js.map +1 -1
  226. package/dist/db/Schema.d.ts +159 -0
  227. package/dist/db/Schema.d.ts.map +1 -1
  228. package/dist/db/Schema.js +187 -2
  229. package/dist/db/Schema.js.map +1 -1
  230. package/dist/db/tables/billingSettings.d.ts +55 -0
  231. package/dist/db/tables/billingSettings.d.ts.map +1 -0
  232. package/dist/db/tables/billingSettings.js +70 -0
  233. package/dist/db/tables/billingSettings.js.map +1 -0
  234. package/dist/db/tables/invitations.d.ts +84 -0
  235. package/dist/db/tables/invitations.d.ts.map +1 -0
  236. package/dist/db/tables/invitations.js +165 -0
  237. package/dist/db/tables/invitations.js.map +1 -0
  238. package/dist/db/tables/memberships.d.ts +108 -0
  239. package/dist/db/tables/memberships.d.ts.map +1 -0
  240. package/dist/db/tables/memberships.js +153 -0
  241. package/dist/db/tables/memberships.js.map +1 -0
  242. package/dist/db/tables/organizations.d.ts +48 -0
  243. package/dist/db/tables/organizations.d.ts.map +1 -1
  244. package/dist/db/tables/organizations.js +97 -2
  245. package/dist/db/tables/organizations.js.map +1 -1
  246. package/dist/db/tables/projects.d.ts +65 -0
  247. package/dist/db/tables/projects.d.ts.map +1 -0
  248. package/dist/db/tables/projects.js +75 -0
  249. package/dist/db/tables/projects.js.map +1 -0
  250. package/dist/db/tables/requestUsage.d.ts +121 -0
  251. package/dist/db/tables/requestUsage.d.ts.map +1 -0
  252. package/dist/db/tables/requestUsage.js +150 -0
  253. package/dist/db/tables/requestUsage.js.map +1 -0
  254. package/dist/db/tables/sponsoredTransactions.d.ts +239 -0
  255. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -0
  256. package/dist/db/tables/sponsoredTransactions.js +314 -0
  257. package/dist/db/tables/sponsoredTransactions.js.map +1 -0
  258. package/dist/db/tables/stripeCustomers.d.ts +81 -0
  259. package/dist/db/tables/stripeCustomers.d.ts.map +1 -0
  260. package/dist/db/tables/stripeCustomers.js +120 -0
  261. package/dist/db/tables/stripeCustomers.js.map +1 -0
  262. package/dist/db/tables/users.d.ts +48 -0
  263. package/dist/db/tables/users.d.ts.map +1 -0
  264. package/dist/db/tables/users.js +65 -0
  265. package/dist/db/tables/users.js.map +1 -0
  266. package/dist/handlers/internal/executionError.d.ts.map +1 -1
  267. package/dist/handlers/internal/executionError.js +2 -0
  268. package/dist/handlers/internal/executionError.js.map +1 -1
  269. package/dist/handlers/internal/multisig.d.ts +2 -6
  270. package/dist/handlers/internal/multisig.d.ts.map +1 -1
  271. package/dist/handlers/internal/multisig.js +11 -36
  272. package/dist/handlers/internal/multisig.js.map +1 -1
  273. package/dist/handlers/internal/sponsorship.d.ts +35 -2
  274. package/dist/handlers/internal/sponsorship.d.ts.map +1 -1
  275. package/dist/handlers/internal/sponsorship.js +53 -14
  276. package/dist/handlers/internal/sponsorship.js.map +1 -1
  277. package/dist/handlers/internal/utils.d.ts +10 -3
  278. package/dist/handlers/internal/utils.d.ts.map +1 -1
  279. package/dist/handlers/internal/utils.js +14 -6
  280. package/dist/handlers/internal/utils.js.map +1 -1
  281. package/dist/handlers/relay.d.ts +6 -2
  282. package/dist/handlers/relay.d.ts.map +1 -1
  283. package/dist/handlers/relay.js +16 -2
  284. package/dist/handlers/relay.js.map +1 -1
  285. package/dist/index.d.ts +1 -0
  286. package/dist/index.d.ts.map +1 -1
  287. package/dist/index.js +1 -0
  288. package/dist/index.js.map +1 -1
  289. package/dist/internal/Auth.d.ts +222 -6
  290. package/dist/internal/Auth.d.ts.map +1 -1
  291. package/dist/internal/Auth.js +625 -74
  292. package/dist/internal/Auth.js.map +1 -1
  293. package/dist/internal/Cache.d.ts.map +1 -1
  294. package/dist/internal/Cache.js +4 -1
  295. package/dist/internal/Cache.js.map +1 -1
  296. package/dist/internal/EdgeCache.d.ts +10 -0
  297. package/dist/internal/EdgeCache.d.ts.map +1 -1
  298. package/dist/internal/EdgeCache.js +39 -8
  299. package/dist/internal/EdgeCache.js.map +1 -1
  300. package/dist/internal/Fees.d.ts +27 -0
  301. package/dist/internal/Fees.d.ts.map +1 -0
  302. package/dist/internal/Fees.js +48 -0
  303. package/dist/internal/Fees.js.map +1 -0
  304. package/dist/internal/FundingRoutes.d.ts +183 -0
  305. package/dist/internal/FundingRoutes.d.ts.map +1 -0
  306. package/dist/internal/FundingRoutes.js +490 -0
  307. package/dist/internal/FundingRoutes.js.map +1 -0
  308. package/dist/internal/Id.d.ts +15 -0
  309. package/dist/internal/Id.d.ts.map +1 -0
  310. package/dist/internal/Id.js +22 -0
  311. package/dist/internal/Id.js.map +1 -0
  312. package/dist/internal/Log.d.ts +9 -3
  313. package/dist/internal/Log.d.ts.map +1 -1
  314. package/dist/internal/Log.js +7 -0
  315. package/dist/internal/Log.js.map +1 -1
  316. package/dist/internal/OpenApi.d.ts +10 -20
  317. package/dist/internal/OpenApi.d.ts.map +1 -1
  318. package/dist/internal/OpenApi.js +8 -58
  319. package/dist/internal/OpenApi.js.map +1 -1
  320. package/dist/internal/RateLimit.d.ts +25 -0
  321. package/dist/internal/RateLimit.d.ts.map +1 -1
  322. package/dist/internal/RateLimit.js +51 -0
  323. package/dist/internal/RateLimit.js.map +1 -1
  324. package/dist/internal/Response.d.ts +1 -1
  325. package/dist/internal/Response.d.ts.map +1 -1
  326. package/dist/internal/Schema.d.ts +8 -0
  327. package/dist/internal/Schema.d.ts.map +1 -1
  328. package/dist/internal/Schema.js +7 -0
  329. package/dist/internal/Schema.js.map +1 -1
  330. package/dist/internal/Store.d.ts +7 -1
  331. package/dist/internal/Store.d.ts.map +1 -1
  332. package/dist/internal/Store.js +16 -2
  333. package/dist/internal/Store.js.map +1 -1
  334. package/dist/internal/Viem.d.ts +84 -0
  335. package/dist/internal/Viem.d.ts.map +1 -1
  336. package/dist/internal/Webhooks.d.ts +1 -1
  337. package/dist/internal/Webhooks.d.ts.map +1 -1
  338. package/dist/internal/Webhooks.js +3 -3
  339. package/dist/internal/Webhooks.js.map +1 -1
  340. package/package.json +33 -6
  341. package/src/ApiKey.ts +10 -2
  342. package/src/ApiKeys.test.ts +155 -1
  343. package/src/ApiKeys.ts +203 -1
  344. package/src/App.test.ts +64 -75741
  345. package/src/App.ts +218 -420
  346. package/src/Client.test-d.ts +657 -15
  347. package/src/Scope.ts +26 -4
  348. package/src/Webhooks.ts +2 -2
  349. package/src/admin/apps/api-keys.test.ts +51 -0
  350. package/src/admin/apps/api-keys.ts +84 -0
  351. package/src/admin/apps/scopes.test.ts +11 -1
  352. package/src/admin/apps/scopes.ts +3 -0
  353. package/src/admin/apps/verified-tokens.ts +1 -1
  354. package/src/admin/ui/src/components/Page.tsx +2 -3
  355. package/src/admin/ui/src/routes/__root.tsx +2 -2
  356. package/src/admin/ui/src/routes/api-keys.tsx +2 -2
  357. package/src/admin/ui.generated.ts +13 -13
  358. package/src/analytics/Analytics.test.ts +527 -0
  359. package/src/analytics/Analytics.ts +318 -0
  360. package/src/analytics/tables/requestEvents.ts +523 -0
  361. package/src/apps/composition.test.ts +66 -0
  362. package/src/apps/data/App.test.ts +72 -0
  363. package/src/apps/data/App.ts +330 -0
  364. package/src/apps/data/index.ts +2 -0
  365. package/src/apps/{activities.test.ts → data/routes/activities.test.ts} +3 -3
  366. package/src/apps/{activities.ts → data/routes/activities.ts} +15 -15
  367. package/src/apps/{addresses.ts → data/routes/addresses.ts} +6 -6
  368. package/src/apps/{balances.test.ts → data/routes/balances.test.ts} +2 -2
  369. package/src/apps/{balances.ts → data/routes/balances.ts} +46 -12
  370. package/src/apps/{blocks.test.ts → data/routes/blocks.test.ts} +3 -3
  371. package/src/apps/{blocks.ts → data/routes/blocks.ts} +14 -14
  372. package/src/apps/{coingecko.test.ts → data/routes/coingecko.test.ts} +2 -2
  373. package/src/apps/{coingecko.ts → data/routes/coingecko.ts} +14 -14
  374. package/src/apps/{exchanges.test.ts → data/routes/exchanges.test.ts} +1 -1
  375. package/src/apps/{exchanges.ts → data/routes/exchanges.ts} +20 -20
  376. package/src/apps/{fee-amm.test.ts → data/routes/fee-amm.test.ts} +3 -3
  377. package/src/apps/{fee-amm.ts → data/routes/fee-amm.ts} +18 -18
  378. package/src/apps/data/routes/funding.test.ts +214 -0
  379. package/src/apps/data/routes/funding.ts +584 -0
  380. package/src/apps/{indexer.test.ts → data/routes/indexer.test.ts} +26 -5
  381. package/src/apps/{indexer.ts → data/routes/indexer.ts} +13 -10
  382. package/src/apps/{receipts.test.ts → data/routes/receipts.test.ts} +3 -3
  383. package/src/apps/{receipts.ts → data/routes/receipts.ts} +15 -22
  384. package/src/apps/{rpc.test.ts → data/routes/rpc.test.ts} +122 -7
  385. package/src/apps/{rpc.ts → data/routes/rpc.ts} +38 -8
  386. package/src/apps/{tokenlist.test.ts → data/routes/tokenlist.test.ts} +3 -3
  387. package/src/apps/{tokenlist.ts → data/routes/tokenlist.ts} +9 -9
  388. package/src/apps/{tokens.test.ts → data/routes/tokens.test.ts} +2 -2
  389. package/src/apps/{tokens.ts → data/routes/tokens.ts} +20 -20
  390. package/src/apps/{transactions.test.ts → data/routes/transactions.test.ts} +3 -3
  391. package/src/apps/{transactions.ts → data/routes/transactions.ts} +15 -15
  392. package/src/apps/{transfers.test.ts → data/routes/transfers.test.ts} +2 -2
  393. package/src/apps/{transfers.ts → data/routes/transfers.ts} +15 -15
  394. package/src/apps/{verified-tokens.test.ts → data/routes/verified-tokens.test.ts} +3 -3
  395. package/src/apps/{verified-tokens.ts → data/routes/verified-tokens.ts} +10 -10
  396. package/src/apps/{webhooks.test.ts → data/routes/webhooks.test.ts} +7 -7
  397. package/src/apps/{webhooks.ts → data/routes/webhooks.ts} +50 -43
  398. package/src/apps/docs/App.ts +65 -0
  399. package/src/apps/docs/index.ts +1 -0
  400. package/src/apps/docs/reference.ts +132 -0
  401. package/src/apps/index.ts +4 -0
  402. package/src/apps/mcp.test.ts +206 -0
  403. package/src/apps/mcp.ts +250 -0
  404. package/src/apps/metadata.ts +23 -0
  405. package/src/apps/platform/App.ts +169 -0
  406. package/src/apps/platform/Billing.test.ts +530 -0
  407. package/src/apps/platform/Billing.ts +682 -0
  408. package/src/apps/platform/index.ts +2 -0
  409. package/src/apps/platform/routes/api-keys.test.ts +493 -0
  410. package/src/apps/platform/routes/api-keys.ts +543 -0
  411. package/src/apps/platform/routes/billing.test.ts +1100 -0
  412. package/src/apps/platform/routes/billing.ts +966 -0
  413. package/src/apps/platform/routes/invitations.test.ts +409 -0
  414. package/src/apps/platform/routes/invitations.ts +587 -0
  415. package/src/apps/platform/routes/me.test.ts +351 -0
  416. package/src/apps/platform/routes/me.ts +106 -0
  417. package/src/apps/platform/routes/members.test.ts +195 -0
  418. package/src/apps/platform/routes/members.ts +313 -0
  419. package/src/apps/platform/routes/orgs.test.ts +313 -0
  420. package/src/apps/platform/routes/orgs.ts +365 -0
  421. package/src/apps/platform/routes/projects.test.ts +181 -0
  422. package/src/apps/platform/routes/projects.ts +367 -0
  423. package/src/apps/platform/routes/scopes.test.ts +29 -0
  424. package/src/apps/platform/routes/scopes.ts +85 -0
  425. package/src/apps/platform/routes/usage.test.ts +422 -0
  426. package/src/apps/platform/routes/usage.ts +527 -0
  427. package/src/apps/relay/App.test.ts +933 -0
  428. package/src/apps/relay/App.ts +236 -0
  429. package/src/apps/relay/Sponsorships.test.ts +375 -0
  430. package/src/apps/relay/Sponsorships.ts +306 -0
  431. package/src/apps/relay/index.ts +2 -0
  432. package/src/cli/Cli.test.ts +25 -2
  433. package/src/cli/Cli.ts +18 -3
  434. package/src/cli/commands/admin.test.ts +83 -0
  435. package/src/cli/commands/admin.ts +91 -3
  436. package/src/db/Db.ts +296 -0
  437. package/src/db/Schema.ts +241 -2
  438. package/src/db/tables/billingSettings.test.ts +87 -0
  439. package/src/db/tables/billingSettings.ts +108 -0
  440. package/src/db/tables/invitations.ts +198 -0
  441. package/src/db/tables/memberships.ts +208 -0
  442. package/src/db/tables/organizations.test.ts +38 -2
  443. package/src/db/tables/organizations.ts +117 -2
  444. package/src/db/tables/projects.ts +107 -0
  445. package/src/db/tables/requestUsage.ts +231 -0
  446. package/src/db/tables/sponsoredTransactions.test.ts +325 -0
  447. package/src/db/tables/sponsoredTransactions.ts +464 -0
  448. package/src/db/tables/stripeCustomers.test.ts +109 -0
  449. package/src/db/tables/stripeCustomers.ts +162 -0
  450. package/src/db/tables/users.ts +85 -0
  451. package/src/handlers/internal/executionError.ts +2 -0
  452. package/src/handlers/internal/multisig.test.ts +84 -10
  453. package/src/handlers/internal/multisig.ts +15 -50
  454. package/src/handlers/internal/sponsorship.ts +106 -20
  455. package/src/handlers/internal/utils.ts +19 -7
  456. package/src/handlers/{internal/relay.localnet.test.ts → relay.test.ts} +2 -2
  457. package/src/handlers/relay.ts +23 -5
  458. package/src/index.ts +1 -0
  459. package/src/internal/Auth.test.ts +491 -25
  460. package/src/internal/Auth.ts +839 -84
  461. package/src/internal/Cache.ts +5 -1
  462. package/src/internal/Cursor.test.ts +3 -2
  463. package/src/internal/EdgeCache.test.ts +27 -4
  464. package/src/internal/EdgeCache.ts +47 -9
  465. package/src/internal/Fees.test.ts +32 -0
  466. package/src/internal/Fees.ts +51 -0
  467. package/src/internal/FundingRoutes.ts +583 -0
  468. package/src/internal/Id.test.ts +17 -0
  469. package/src/internal/Id.ts +24 -0
  470. package/src/internal/Log.test.ts +2 -1
  471. package/src/internal/Log.ts +16 -3
  472. package/src/internal/MetricSink.ts +1 -1
  473. package/src/internal/OpenApi.ts +12 -60
  474. package/src/internal/RateLimit.test.ts +84 -0
  475. package/src/internal/RateLimit.ts +70 -0
  476. package/src/internal/Response.ts +1 -1
  477. package/src/internal/Schema.ts +8 -0
  478. package/src/internal/Store.test.ts +52 -0
  479. package/src/internal/Store.ts +24 -5
  480. package/src/internal/Tidx.local.test.ts +1 -1
  481. package/src/internal/VerifiedTokens.test.ts +1 -1
  482. package/src/internal/WebhookDestination.test.ts +1 -1
  483. package/src/internal/Webhooks.test.ts +7 -7
  484. package/src/internal/Webhooks.ts +4 -4
  485. package/dist/apps/activities.js.map +0 -1
  486. package/dist/apps/addresses.js.map +0 -1
  487. package/dist/apps/balances.d.ts.map +0 -1
  488. package/dist/apps/balances.js.map +0 -1
  489. package/dist/apps/blocks.d.ts.map +0 -1
  490. package/dist/apps/blocks.js.map +0 -1
  491. package/dist/apps/coingecko.d.ts.map +0 -1
  492. package/dist/apps/coingecko.js.map +0 -1
  493. package/dist/apps/exchanges.d.ts.map +0 -1
  494. package/dist/apps/exchanges.js.map +0 -1
  495. package/dist/apps/fee-amm.d.ts.map +0 -1
  496. package/dist/apps/fee-amm.js.map +0 -1
  497. package/dist/apps/indexer.d.ts.map +0 -1
  498. package/dist/apps/indexer.js.map +0 -1
  499. package/dist/apps/receipts.d.ts.map +0 -1
  500. package/dist/apps/receipts.js.map +0 -1
  501. package/dist/apps/rpc.d.ts.map +0 -1
  502. package/dist/apps/rpc.js.map +0 -1
  503. package/dist/apps/tokenlist.d.ts.map +0 -1
  504. package/dist/apps/tokenlist.js.map +0 -1
  505. package/dist/apps/tokens.d.ts.map +0 -1
  506. package/dist/apps/tokens.js.map +0 -1
  507. package/dist/apps/transactions.d.ts.map +0 -1
  508. package/dist/apps/transactions.js.map +0 -1
  509. package/dist/apps/transfers.d.ts.map +0 -1
  510. package/dist/apps/transfers.js.map +0 -1
  511. package/dist/apps/verified-tokens.d.ts.map +0 -1
  512. package/dist/apps/verified-tokens.js.map +0 -1
  513. package/dist/apps/webhooks.js.map +0 -1
  514. package/dist/internal/OpenApi.fonts.d.ts.map +0 -1
  515. package/dist/internal/OpenApi.fonts.js.map +0 -1
  516. package/dist/internal/OpenApi.logo.d.ts.map +0 -1
  517. package/dist/internal/OpenApi.logo.js.map +0 -1
  518. package/src/handlers/internal/multisig.localnet.test.ts +0 -146
  519. /package/src/{internal/OpenApi.fonts.ts → apps/docs/fonts.ts} +0 -0
  520. /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,mDAAmD;IACnD,UAAiB,iBAAiB,CAAC;QACjC,qDAAqD;QAC9C,MAAM,QAAQ;;yBASiD,CAAA;KACvE;IAED,kDAAkD;IAClD,UAAiB,gBAAgB,CAAC;QAChC,oDAAoD;QAC7C,MAAM,QAAQ;;yBASgD,CAAA;KACtE;CACF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qEAmT1B"}
@@ -0,0 +1,471 @@
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 declineInvitation operation. */
116
+ let declineInvitation;
117
+ (function (declineInvitation) {
118
+ /** Confirmation that the invitation was declined. */
119
+ declineInvitation.Response = z
120
+ .object({
121
+ id: z
122
+ .string()
123
+ .check(z.describe('ID of the invitation that was declined.'), z.meta({ examples: ['inv_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
124
+ })
125
+ .check(z.describe('Confirmation that the invitation was declined.'));
126
+ })(declineInvitation = schema.declineInvitation || (schema.declineInvitation = {}));
127
+ /** Schemas for the revokeInvitation operation. */
128
+ let revokeInvitation;
129
+ (function (revokeInvitation) {
130
+ /** Confirmation that the invitation was revoked. */
131
+ revokeInvitation.Response = z
132
+ .object({
133
+ id: z
134
+ .string()
135
+ .check(z.describe('ID of the invitation that was revoked.'), z.meta({ examples: ['inv_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
136
+ })
137
+ .check(z.describe('Confirmation that the invitation was revoked.'));
138
+ })(revokeInvitation = schema.revokeInvitation || (schema.revokeInvitation = {}));
139
+ })(schema || (schema = {}));
140
+ /**
141
+ * Mounts the invitations surface: org-scoped management
142
+ * (`/orgs/:orgId/invitations`, admins and owners) plus the invitee's side
143
+ * (`/invitations`, matched against the session's verified email). Invitation
144
+ * emails dispatch through the sender the platform group publishes on context
145
+ * (`c.get('email')`), best-effort.
146
+ */
147
+ export function invitations() {
148
+ return new Hono()
149
+ .post('/v1/orgs/:orgId{org_[A-Za-z0-9_-]+}/invitations', Auth.policy({ session: true }), Auth.ensureOrg({ role: 'admin' }), OpenApi.validate('param', schema.Params, {
150
+ code: 'param_invalid',
151
+ message: 'Check the path parameters and try again.',
152
+ }), OpenApi.validate('json', schema.InvitationBody, {
153
+ code: 'body_invalid',
154
+ message: 'Check the request body and try again.',
155
+ }), OpenApi.describeRoute({
156
+ description: 'Invite an email to the organization with a role. The invitee accepts after signing in with that verified email.', // prettier-ignore
157
+ operationId: 'createInvitation',
158
+ responses: OpenApi.responses({
159
+ errors: { 404: 'No accessible organization was found for this id.' },
160
+ success: { description: 'The created invitation.', schema: schema.Invitation },
161
+ }),
162
+ summary: 'Create invitation',
163
+ tags: ['Invitations'],
164
+ }), async (c) => {
165
+ if (Auth.narrowAccess)
166
+ return Auth.superAdminAccessError(c);
167
+ if (Auth.narrowScope)
168
+ return Auth.ensureOrgError(c);
169
+ if (OpenApi.narrowValidation)
170
+ return OpenApi.validationError(c, {
171
+ code: 'param_invalid',
172
+ message: 'Check the path parameters and try again.',
173
+ });
174
+ if (OpenApi.narrowValidation)
175
+ return OpenApi.validationError(c, {
176
+ code: 'body_invalid',
177
+ message: 'Check the request body and try again.',
178
+ });
179
+ const body = c.req.valid('json');
180
+ // Owners invite anyone; everyone else grants only roles strictly below
181
+ // their own (an admin invites members, never peers). The super admin
182
+ // has no membership and may grant any role.
183
+ const caller = Auth.membership(c);
184
+ if (caller &&
185
+ caller.role !== 'owner' &&
186
+ Memberships.rank[body.role] >= Memberships.rank[caller.role])
187
+ return Response.error(c, {
188
+ code: 'forbidden',
189
+ message: 'Cannot invite at or above your own role',
190
+ status: 403,
191
+ });
192
+ const invitedBy = caller?.userId ?? 'super_admin';
193
+ const db = Db.get(c.get('db'));
194
+ try {
195
+ const record = await Invitations.create(db, {
196
+ email: body.email,
197
+ expiresAt: new Date(Date.now() + ttlDays * 86_400_000).toISOString(),
198
+ invitedBy,
199
+ orgId: Auth.org(c).id,
200
+ role: body.role,
201
+ });
202
+ dispatchEmail(c, { email: c.get('email'), org: Auth.org(c).name, record });
203
+ return c.json(Response.validated(schema.Invitation, serializeInvitation(record)), 200);
204
+ }
205
+ catch (cause) {
206
+ return Response.upstream(c, cause);
207
+ }
208
+ })
209
+ .get('/v1/orgs/:orgId{org_[A-Za-z0-9_-]+}/invitations', Auth.policy({ session: true }), Auth.ensureOrg({ role: 'admin' }), OpenApi.validate('param', schema.Params, {
210
+ code: 'param_invalid',
211
+ message: 'Check the path parameters and try again.',
212
+ }), OpenApi.describeRoute({
213
+ operationId: 'listInvitations',
214
+ responses: OpenApi.responses({
215
+ errors: { 404: 'No accessible organization was found for this id.' },
216
+ success: {
217
+ description: 'Pending invitations, newest first.',
218
+ schema: schema.listInvitations.Response,
219
+ },
220
+ }),
221
+ summary: 'List invitations',
222
+ tags: ['Invitations'],
223
+ }), async (c) => {
224
+ if (Auth.narrowAccess)
225
+ return Auth.superAdminAccessError(c);
226
+ if (Auth.narrowScope)
227
+ return Auth.ensureOrgError(c);
228
+ if (OpenApi.narrowValidation)
229
+ return OpenApi.validationError(c, {
230
+ code: 'param_invalid',
231
+ message: 'Check the path parameters and try again.',
232
+ });
233
+ const db = Db.get(c.get('db'));
234
+ try {
235
+ const records = await Invitations.listByOrg(db, Auth.org(c).id);
236
+ return c.json(Response.validated(schema.listInvitations.Response, {
237
+ data: records.map(serializeInvitation),
238
+ }), 200);
239
+ }
240
+ catch (cause) {
241
+ return Response.upstream(c, cause);
242
+ }
243
+ })
244
+ .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, {
245
+ code: 'param_invalid',
246
+ message: 'Check the path parameters and try again.',
247
+ }), OpenApi.describeRoute({
248
+ operationId: 'revokeInvitation',
249
+ responses: OpenApi.responses({
250
+ errors: { 404: 'No accessible pending invitation was found for this id.' },
251
+ success: {
252
+ description: 'Confirmation that the invitation was revoked.',
253
+ schema: schema.revokeInvitation.Response,
254
+ },
255
+ }),
256
+ summary: 'Revoke invitation',
257
+ tags: ['Invitations'],
258
+ }), async (c) => {
259
+ if (Auth.narrowAccess)
260
+ return Auth.superAdminAccessError(c);
261
+ if (Auth.narrowScope)
262
+ return Auth.ensureOrgError(c);
263
+ if (OpenApi.narrowValidation)
264
+ return OpenApi.validationError(c, {
265
+ code: 'param_invalid',
266
+ message: 'Check the path parameters and try again.',
267
+ });
268
+ const { invitationId } = c.req.valid('param');
269
+ const db = Db.get(c.get('db'));
270
+ try {
271
+ // Bind the invitation to the scoped org before revoking.
272
+ const record = await Invitations.get(db, invitationId);
273
+ if (!record || record.orgId !== Auth.org(c).id)
274
+ return invitationNotFound(c);
275
+ const revoked = await Invitations.revoke(db, invitationId);
276
+ if (!revoked)
277
+ return invitationNotFound(c);
278
+ return c.json(Response.validated(schema.revokeInvitation.Response, { id: invitationId }), 200);
279
+ }
280
+ catch (cause) {
281
+ return Response.upstream(c, cause);
282
+ }
283
+ })
284
+ .get('/v1/invitations', Auth.policy({ session: true }), OpenApi.describeRoute({
285
+ description: "Pending invitations addressed to the session's verified email.",
286
+ operationId: 'listMyInvitations',
287
+ responses: OpenApi.responses({
288
+ success: {
289
+ description: 'Pending invitations, newest first.',
290
+ schema: schema.listMyInvitations.Response,
291
+ },
292
+ }),
293
+ summary: 'List my invitations',
294
+ tags: ['Invitations'],
295
+ }), async (c) => {
296
+ if (Auth.narrowAccess)
297
+ return Auth.superAdminAccessError(c);
298
+ const principal = Auth.getPrincipal(c);
299
+ if (principal?.type !== 'session')
300
+ return sessionRequired(c);
301
+ // Without a verified email there is nothing to match against.
302
+ if (!principal.email)
303
+ return c.json(Response.validated(schema.listMyInvitations.Response, { data: [] }), 200);
304
+ const db = Db.get(c.get('db'));
305
+ try {
306
+ const records = await Invitations.listByEmail(db, principal.email);
307
+ return c.json(Response.validated(schema.listMyInvitations.Response, {
308
+ data: records.map((record) => ({
309
+ ...serializeInvitation(record),
310
+ orgName: record.orgName,
311
+ })),
312
+ }), 200);
313
+ }
314
+ catch (cause) {
315
+ return Response.upstream(c, cause);
316
+ }
317
+ })
318
+ .post('/v1/invitations/:invitationId{inv_[A-Za-z0-9_-]+}/accept', Auth.policy({ session: true }), OpenApi.validate('param', schema.AcceptParams, {
319
+ code: 'param_invalid',
320
+ message: 'Check the path parameters and try again.',
321
+ }), OpenApi.describeRoute({
322
+ description: "Accept an invitation addressed to the session's verified email, joining the organization with the invited role.", // prettier-ignore
323
+ operationId: 'acceptInvitation',
324
+ responses: OpenApi.responses({
325
+ errors: { 404: 'No accessible pending invitation was found for this id.' },
326
+ success: {
327
+ description: 'The membership granted by accepting.',
328
+ schema: schema.acceptInvitation.Response,
329
+ },
330
+ }),
331
+ summary: 'Accept invitation',
332
+ tags: ['Invitations'],
333
+ }), async (c) => {
334
+ if (Auth.narrowAccess)
335
+ return Auth.superAdminAccessError(c);
336
+ if (OpenApi.narrowValidation)
337
+ return OpenApi.validationError(c, {
338
+ code: 'param_invalid',
339
+ message: 'Check the path parameters and try again.',
340
+ });
341
+ const principal = Auth.getPrincipal(c);
342
+ if (principal?.type !== 'session')
343
+ return sessionRequired(c);
344
+ const { invitationId } = c.req.valid('param');
345
+ const db = Db.get(c.get('db'));
346
+ try {
347
+ // An invitation is visible only to the verified holder of its email;
348
+ // everyone else sees 404.
349
+ const record = await Invitations.get(db, invitationId);
350
+ if (!record || record.email !== principal.email?.toLowerCase())
351
+ return invitationNotFound(c);
352
+ const accepted = await Invitations.accept(db, invitationId, principal.id);
353
+ if (!accepted)
354
+ return invitationNotFound(c);
355
+ const membership = await Memberships.get(db, accepted.orgId, principal.id);
356
+ return c.json(Response.validated(schema.acceptInvitation.Response, {
357
+ orgId: accepted.orgId,
358
+ role: membership?.role ?? accepted.role,
359
+ userId: principal.id,
360
+ }), 200);
361
+ }
362
+ catch (cause) {
363
+ return Response.upstream(c, cause);
364
+ }
365
+ })
366
+ .post('/v1/invitations/:invitationId{inv_[A-Za-z0-9_-]+}/decline', Auth.policy({ session: true }), OpenApi.validate('param', schema.AcceptParams, {
367
+ code: 'param_invalid',
368
+ message: 'Check the path parameters and try again.',
369
+ }), OpenApi.describeRoute({
370
+ description: "Decline an invitation addressed to the session's verified email. Declining settles the invitation; it can no longer be accepted.", // prettier-ignore
371
+ operationId: 'declineInvitation',
372
+ responses: OpenApi.responses({
373
+ errors: { 404: 'No accessible pending invitation was found for this id.' },
374
+ success: {
375
+ description: 'Confirmation that the invitation was declined.',
376
+ schema: schema.declineInvitation.Response,
377
+ },
378
+ }),
379
+ summary: 'Decline invitation',
380
+ tags: ['Invitations'],
381
+ }), async (c) => {
382
+ if (Auth.narrowAccess)
383
+ return Auth.superAdminAccessError(c);
384
+ if (OpenApi.narrowValidation)
385
+ return OpenApi.validationError(c, {
386
+ code: 'param_invalid',
387
+ message: 'Check the path parameters and try again.',
388
+ });
389
+ const principal = Auth.getPrincipal(c);
390
+ if (principal?.type !== 'session')
391
+ return sessionRequired(c);
392
+ const { invitationId } = c.req.valid('param');
393
+ const db = Db.get(c.get('db'));
394
+ try {
395
+ // An invitation is visible only to the verified holder of its email;
396
+ // everyone else sees 404.
397
+ const record = await Invitations.get(db, invitationId);
398
+ if (!record || record.email !== principal.email?.toLowerCase())
399
+ return invitationNotFound(c);
400
+ // Declining reuses the revoke settle; no surface distinguishes the two.
401
+ const declined = await Invitations.revoke(db, invitationId);
402
+ if (!declined)
403
+ return invitationNotFound(c);
404
+ return c.json(Response.validated(schema.declineInvitation.Response, { id: invitationId }), 200);
405
+ }
406
+ catch (cause) {
407
+ return Response.upstream(c, cause);
408
+ }
409
+ });
410
+ }
411
+ /** Dispatches the invitation email through the app's sender, best-effort. */
412
+ function dispatchEmail(c, options) {
413
+ const { email: sender, org, record } = options;
414
+ if (!sender)
415
+ return;
416
+ const days = Math.max(1, Math.round((Date.parse(record.expiresAt) - Date.now()) / 86_400_000));
417
+ const expiry = days === 1 ? '1 day' : `${days} days`;
418
+ const link = new URL(sender.consoleUrl ?? 'https://console.tempo.xyz');
419
+ link.searchParams.set('email', record.email);
420
+ // The console's index route steers `?invitation=` to the accept screen.
421
+ link.searchParams.set('invitation', record.id);
422
+ const url = link.href;
423
+ const dispatch = Promise.resolve(sender.send({
424
+ from: sender.from,
425
+ 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>`,
426
+ subject: `You've been invited to ${org} on the Tempo Developer Platform`,
427
+ 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}.`,
428
+ to: record.email,
429
+ })).catch((error) => console.error('invitation email dispatch failed', error));
430
+ try {
431
+ c.executionCtx.waitUntil(dispatch);
432
+ }
433
+ catch {
434
+ // Non-Workers runtime: the floating promise settles on its own.
435
+ }
436
+ }
437
+ /** Escapes org-controlled text for the HTML body. */
438
+ function escapeHtml(text) {
439
+ return text
440
+ .replaceAll('&', '&amp;')
441
+ .replaceAll('<', '&lt;')
442
+ .replaceAll('>', '&gt;')
443
+ .replaceAll('"', '&quot;');
444
+ }
445
+ /** Projects an invitation row onto the pending-invitation shape. */
446
+ function serializeInvitation(record) {
447
+ return {
448
+ createdAt: record.createdAt,
449
+ email: record.email,
450
+ expiresAt: record.expiresAt,
451
+ id: record.id,
452
+ invitedBy: record.invitedBy,
453
+ orgId: record.orgId,
454
+ role: record.role,
455
+ };
456
+ }
457
+ function invitationNotFound(c) {
458
+ return Response.error(c, {
459
+ code: 'invitation_not_found',
460
+ message: 'Invitation not found',
461
+ status: 404,
462
+ });
463
+ }
464
+ function sessionRequired(c) {
465
+ return Response.error(c, {
466
+ code: 'forbidden',
467
+ message: 'Session required',
468
+ status: 403,
469
+ });
470
+ }
471
+ //# 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
+ address?: string | undefined;
24
+ createdAt: string;
25
+ email?: string | undefined;
26
+ id: string;
27
+ updatedAt: string;
28
+ };
29
+ outputFormat: "json";
30
+ status: 200;
31
+ input: {};
32
+ } | {
33
+ output: {
34
+ error: {
35
+ code: "api_key_malformed";
36
+ details?: readonly Response.error.Detail[] | undefined;
37
+ message: string;
38
+ };
39
+ requestId: string;
40
+ };
41
+ outputFormat: "json";
42
+ status: 400;
43
+ input: {};
44
+ } | {
45
+ output: {
46
+ error: {
47
+ code: "api_key_invalid" | "api_key_missing";
48
+ details?: readonly Response.error.Detail[] | undefined;
49
+ message: string;
50
+ };
51
+ requestId: string;
52
+ };
53
+ outputFormat: "json";
54
+ status: 401;
55
+ input: {};
56
+ } | {
57
+ output: {
58
+ error: {
59
+ code: "forbidden";
60
+ details?: readonly Response.error.Detail[] | undefined;
61
+ message: string;
62
+ };
63
+ requestId: string;
64
+ };
65
+ outputFormat: "json";
66
+ status: 403;
67
+ input: {};
68
+ } | {
69
+ output: {
70
+ error: {
71
+ code: "user_not_found";
72
+ details?: readonly Response.error.Detail[] | undefined;
73
+ message: string;
74
+ };
75
+ requestId: string;
76
+ };
77
+ outputFormat: "json";
78
+ status: 404;
79
+ input: {};
80
+ } | {
81
+ output: {
82
+ error: {
83
+ code: "upstream_error";
84
+ details?: readonly Response.error.Detail[] | undefined;
85
+ message: string;
86
+ };
87
+ requestId: string;
88
+ };
89
+ outputFormat: "json";
90
+ status: 502;
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"}