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
@@ -1,22 +1,24 @@
1
1
  import { nanoid } from 'nanoid';
2
2
  import { Hash, Hex } from 'ox';
3
+ import * as WebhookDeliveries from '../db/tables/webhookDeliveries.js';
4
+ import * as WebhookSubscriptions from '../db/tables/webhookSubscriptions.js';
3
5
  import * as MetricSink from './MetricSink.js';
4
- import * as Store from './Store.js';
5
6
  import * as WebhookDestination from './WebhookDestination.js';
6
7
  export { InvalidUrlError, sign, signatureHeader, verify } from './WebhookDestination.js';
7
8
  /**
8
9
  * Creates a subscription, validating its URL and (optionally) enforcing a
9
- * per-owner cap, then persists it and indexes it for the poller.
10
+ * per-owner cap, then persists it. The cap check stays best-effort (count then
11
+ * insert, non-transactional) — parity with the old store behavior.
10
12
  */
11
- export async function createSubscription(store, input, options = {}) {
13
+ export async function createSubscription(db, input, options = {}) {
12
14
  WebhookDestination.assertDestination(input.destination);
15
+ const now = (options.now ?? (() => new Date()))();
16
+ const iso = now.toISOString();
13
17
  if (options.maxPerOwner !== undefined) {
14
- const existing = await listSubscriptions(store, input.owner);
15
- if (existing.length >= options.maxPerOwner)
18
+ const existing = await WebhookSubscriptions.count(db, input.owner, iso);
19
+ if (existing >= options.maxPerOwner)
16
20
  throw new LimitExceededError(options.maxPerOwner);
17
21
  }
18
- const now = (options.now ?? (() => new Date()))();
19
- const iso = now.toISOString();
20
22
  const subscription = {
21
23
  chainId: input.chainId,
22
24
  ...(input.context === undefined ? {} : { context: input.context }),
@@ -34,110 +36,79 @@ export async function createSubscription(store, input, options = {}) {
34
36
  ? {}
35
37
  : { expiresAt: new Date(now.getTime() + input.ttl).toISOString() }),
36
38
  };
37
- await writeSubscription(store, subscription);
39
+ await WebhookSubscriptions.insert(db, subscription);
38
40
  return subscription;
39
41
  }
40
42
  /** Reads a single subscription scoped to its owner. Returns null when absent. */
41
- export async function getSubscription(store, owner, id) {
42
- return readSubscription(store, subscriptionKey(owner, id));
43
+ export async function getSubscription(db, owner, id) {
44
+ return WebhookSubscriptions.get(db, owner, id, new Date().toISOString());
43
45
  }
44
46
  /**
45
47
  * Lists an owner's subscriptions, newest first, with optional keyset paging.
46
- * Subscription ids embed a timestamp, so lexical key order is chronological.
48
+ * Subscription ids embed a timestamp, so lexical id order is chronological.
47
49
  */
48
- export async function listSubscriptions(store, owner, options = {}) {
49
- const prefix = subscriptionPrefix(owner);
50
- const { keys } = await store.list({ prefix });
51
- // Newest first: ids sort chronologically ascending, so reverse for descending.
52
- let names = keys
53
- .map((key) => key.name)
54
- .sort()
55
- .reverse();
56
- if (options.cursor)
57
- names = names.filter((name) => name < `${prefix}${options.cursor}`);
58
- if (options.offset)
59
- names = names.slice(options.offset);
60
- if (options.limit !== undefined)
61
- names = names.slice(0, options.limit);
62
- // Hydrate the page in parallel: the reads are independent, and a serial
63
- // loop costs one store round trip per row (an N+1 against the production
64
- // Durable Object).
65
- const subscriptions = await Promise.all(names.map((name) => readSubscription(store, name)));
66
- return subscriptions.filter((subscription) => subscription !== null);
50
+ export async function listSubscriptions(db, owner, options = {}) {
51
+ return WebhookSubscriptions.list(db, owner, { ...options, now: new Date().toISOString() });
67
52
  }
68
53
  /**
69
- * Counts an owner's subscriptions. Reads only the key set under the owner
70
- * prefix (no row hydration), so it's a single store `list` — exact and cheap,
54
+ * Counts an owner's subscriptions a single indexed count, exact and cheap,
71
55
  * since the per-owner set is bounded by `maxPerOwner`. Feeds the opt-in
72
56
  * `meta.totalCount` on `GET /webhooks`.
73
57
  */
74
- export async function countSubscriptions(store, owner) {
75
- const { keys } = await store.list({ prefix: subscriptionPrefix(owner) });
76
- return keys.length;
58
+ export async function countSubscriptions(db, owner) {
59
+ return WebhookSubscriptions.count(db, owner, new Date().toISOString());
77
60
  }
78
61
  /**
79
- * Patches an owner's subscription, re-validating the URL when changed and
80
- * re-indexing for the poller when the status changes. Returns null when absent.
62
+ * Patches an owner's subscription, re-validating the URL when changed.
63
+ * Returns null when absent. The status column drives the poller's partial
64
+ * index, so no secondary-index maintenance is needed.
81
65
  */
82
- export async function updateSubscription(store, owner, id, patch, options = {}) {
83
- const current = await getSubscription(store, owner, id);
66
+ export async function updateSubscription(db, owner, id, patch, options = {}) {
67
+ const current = await getSubscription(db, owner, id);
84
68
  if (!current)
85
69
  return null;
86
70
  if (patch.destination !== undefined)
87
71
  WebhookDestination.assertDestination(patch.destination);
88
72
  const now = (options.now ?? (() => new Date()))();
89
- const next = {
90
- ...current,
91
- // `context: null` clears it (stored as undefined; drops from JSON + reads).
92
- ...(patch.context === undefined
93
- ? {}
94
- : { context: patch.context === null ? undefined : patch.context }),
73
+ const next = await WebhookSubscriptions.update(db, id, {
74
+ // `context: null` clears it (stored as a null column; drops from reads).
75
+ ...(patch.context === undefined ? {} : { context: patch.context }),
95
76
  ...(patch.destination === undefined ? {} : { destination: patch.destination }),
96
77
  ...(patch.filters === undefined ? {} : { filters: patch.filters }),
97
78
  ...(patch.status === undefined ? {} : { status: patch.status }),
98
79
  updatedAt: now.toISOString(),
99
- };
100
- await writeSubscription(store, next);
101
- return next;
80
+ });
81
+ return next ?? null;
102
82
  }
103
- /** Deletes an owner's subscription and its index/cursor keys. */
104
- export async function deleteSubscription(store, owner, id) {
105
- const current = await getSubscription(store, owner, id);
106
- if (!current)
107
- return false;
108
- await store.delete(subscriptionKey(owner, id));
109
- await store.delete(activeKey(current.chainId, current.eventType, id));
110
- await store.delete(cursorKey(id));
111
- // Drop the delivery log so a deleted subscription leaves no orphaned rows.
112
- const { keys } = await store.list({ prefix: deliveryPrefix(id) });
113
- for (const { name } of keys)
114
- await store.delete(name);
115
- return true;
83
+ /** Deletes an owner's subscription; its delivery rows cascade via the FK. */
84
+ export async function deleteSubscription(db, owner, id) {
85
+ return WebhookSubscriptions.remove(db, owner, id, new Date().toISOString());
116
86
  }
117
87
  /**
118
88
  * Lists active subscriptions for a `(chainId, eventType)` stream. Used by the
119
- * poller; reads the secondary index, then hydrates each subscription.
89
+ * poller; one indexed query (the partial status index replaces the old
90
+ * secondary key space).
120
91
  */
121
- export async function listActive(store, chainId, eventType) {
122
- const { keys } = await store.list({ prefix: activePrefix(chainId, eventType) });
123
- const subscriptions = [];
124
- for (const { name } of keys) {
125
- const subKey = await store.get(name);
126
- if (!subKey)
127
- continue;
128
- const subscription = await readSubscription(store, subKey);
129
- if (subscription)
130
- subscriptions.push(subscription);
131
- }
132
- return subscriptions;
92
+ export async function listActive(db, chainId, eventType) {
93
+ return WebhookSubscriptions.listActive(db, chainId, eventType, new Date().toISOString());
133
94
  }
134
95
  /** Reads a subscription's keyset cursor. Returns null when unset. */
135
- export async function getCursor(store, subscriptionId) {
136
- return store.get(cursorKey(subscriptionId));
96
+ export async function getCursor(db, subscriptionId) {
97
+ return WebhookSubscriptions.getCursor(db, subscriptionId);
137
98
  }
138
99
  /** Writes a subscription's keyset cursor. */
139
- export async function setCursor(store, subscriptionId, cursor) {
140
- await store.put(cursorKey(subscriptionId), cursor);
100
+ export async function setCursor(db, subscriptionId, cursor) {
101
+ await WebhookSubscriptions.setCursor(db, subscriptionId, cursor);
102
+ }
103
+ /**
104
+ * Deletes expired MPP-owned subscriptions (delivery rows cascade) and
105
+ * deliveries past retention. Reads already filter expiry at query time — this
106
+ * is the janitor reclaiming space, called best-effort per poller tick.
107
+ */
108
+ export async function pruneExpired(db, options = {}) {
109
+ const iso = (options.now ?? (() => new Date()))().toISOString();
110
+ await WebhookDeliveries.pruneExpired(db, iso);
111
+ await WebhookSubscriptions.pruneExpired(db, iso);
141
112
  }
142
113
  /**
143
114
  * Default delivery-log retention. Rows are written with this TTL so a busy
@@ -145,49 +116,32 @@ export async function setCursor(store, subscriptionId, cursor) {
145
116
  */
146
117
  export const deliveryRetentionMs = 7 * 24 * 60 * 60 * 1_000;
147
118
  /** Records one delivery-log row (stateful, owner-agnostic; scoped per subscription). */
148
- export async function recordDelivery(store, delivery, options = {}) {
119
+ export async function recordDelivery(db, delivery, options = {}) {
149
120
  const ttl = options.ttl ?? deliveryRetentionMs;
150
- await store.put(deliveryKey(delivery.subscriptionId, delivery.id), JSON.stringify(delivery), {
151
- ttl,
152
- });
121
+ // The retention deadline replaces the old store TTL: reads filter on it at
122
+ // query time and the poller prunes past it. Anchored to write time (not the
123
+ // row's `createdAt`, which tests pin) — exactly like the old `put` TTL.
124
+ const expiresAt = new Date(Date.now() + ttl).toISOString();
125
+ await WebhookDeliveries.insert(db, delivery, expiresAt);
153
126
  }
154
127
  /**
155
128
  * Lists a subscription's delivery log, newest first, with optional keyset
156
129
  * paging. Delivery ids embed a timestamp, so lexical key order is chronological.
157
130
  */
158
- export async function listDeliveries(store, subscriptionId, options = {}) {
159
- const prefix = deliveryPrefix(subscriptionId);
160
- const { keys } = await store.list({ prefix });
161
- // Newest first: ids sort chronologically ascending, so reverse for descending.
162
- let names = keys
163
- .map((key) => key.name)
164
- .sort()
165
- .reverse();
166
- if (options.cursor)
167
- names = names.filter((name) => name < `${prefix}${options.cursor}`);
168
- if (options.offset)
169
- names = names.slice(options.offset);
170
- if (options.limit !== undefined)
171
- names = names.slice(0, options.limit);
172
- // Hydrate the page in parallel: the reads are independent, and a serial
173
- // loop costs one store round trip per row (an N+1 against the production
174
- // Durable Object).
175
- const deliveries = await Promise.all(names.map((name) => readDelivery(store, name)));
176
- return deliveries.filter((delivery) => delivery !== null);
131
+ export async function listDeliveries(db, subscriptionId, options = {}) {
132
+ return WebhookDeliveries.list(db, subscriptionId, { ...options, now: new Date().toISOString() });
177
133
  }
178
134
  /**
179
- * Counts a subscription's delivery-log entries. Reads only the key set under
180
- * the delivery prefix (no row hydration), so it's a single store `list` —
181
- * exact, and bounded by the delivery retention TTL. Feeds the opt-in
135
+ * Counts a subscription's delivery-log entries a single indexed count,
136
+ * exact, and bounded by the delivery retention window. Feeds the opt-in
182
137
  * `meta.totalCount` on `GET /webhooks/:id/deliveries`.
183
138
  */
184
- export async function countDeliveries(store, subscriptionId) {
185
- const { keys } = await store.list({ prefix: deliveryPrefix(subscriptionId) });
186
- return keys.length;
139
+ export async function countDeliveries(db, subscriptionId) {
140
+ return WebhookDeliveries.count(db, subscriptionId, new Date().toISOString());
187
141
  }
188
142
  /** Loads a single delivery-log row (`null` when absent), scoped to its subscription. */
189
- export async function getDelivery(store, subscriptionId, deliveryId) {
190
- return readDelivery(store, deliveryKey(subscriptionId, deliveryId));
143
+ export async function getDelivery(db, subscriptionId, deliveryId) {
144
+ return WebhookDeliveries.get(db, subscriptionId, deliveryId, new Date().toISOString());
191
145
  }
192
146
  /**
193
147
  * Default number of consecutive delivery failures after which a subscription
@@ -196,38 +150,39 @@ export async function getDelivery(store, subscriptionId, deliveryId) {
196
150
  export const maxFailures = 10;
197
151
  /**
198
152
  * Records a successful delivery: resets the consecutive-failure counter and
199
- * stamps `lastDeliveryAt`. Returns the updated subscription (re-persisted so the
200
- * poller's active index and TTL stay correct).
153
+ * stamps `lastDeliveryAt`. A column-targeted update, so a concurrent patch is
154
+ * never clobbered by the stale copy carried through the delivery queue.
201
155
  */
202
- export async function recordSuccess(store, subscription, options = {}) {
156
+ export async function recordSuccess(db, subscription, options = {}) {
203
157
  const now = (options.now ?? (() => new Date()))();
204
- const next = {
205
- ...subscription,
206
- failureCount: 0,
207
- lastDeliveryAt: now.toISOString(),
208
- updatedAt: now.toISOString(),
209
- };
210
- await writeSubscription(store, next);
211
- return next;
158
+ const iso = now.toISOString();
159
+ const next = await WebhookSubscriptions.recordSuccess(db, subscription.id, iso);
160
+ // A concurrently deleted subscription is not resurrected; return the
161
+ // optimistic next state so the caller still observes the outcome.
162
+ return next ?? { ...subscription, failureCount: 0, lastDeliveryAt: iso, updatedAt: iso };
212
163
  }
213
164
  /**
214
- * Records a failed delivery: increments the consecutive-failure counter and,
215
- * once it reaches `maxFailures`, sets `status: 'disabled'` so the subscription
216
- * drops out of the poller's active index (surfaced via the API). Returns the
217
- * updated subscription.
165
+ * Records a failed delivery: atomically increments the consecutive-failure
166
+ * counter and, once it reaches `maxFailures`, sets `status: 'disabled'` so the
167
+ * subscription drops out of the poller's partial index (surfaced via the API).
168
+ * Returns the updated subscription.
218
169
  */
219
- export async function recordFailure(store, subscription, options = {}) {
170
+ export async function recordFailure(db, subscription, options = {}) {
220
171
  const now = (options.now ?? (() => new Date()))();
172
+ const iso = now.toISOString();
173
+ const max = options.maxFailures ?? maxFailures;
174
+ const next = await WebhookSubscriptions.recordFailure(db, subscription.id, max, iso);
175
+ if (next)
176
+ return next;
177
+ // A concurrently deleted subscription is not resurrected; return the
178
+ // optimistic next state so the caller still observes the outcome.
221
179
  const failureCount = subscription.failureCount + 1;
222
- const disabled = failureCount >= (options.maxFailures ?? maxFailures);
223
- const next = {
180
+ return {
224
181
  ...subscription,
225
182
  failureCount,
226
- ...(disabled ? { status: 'disabled' } : {}),
227
- updatedAt: now.toISOString(),
183
+ ...(failureCount >= max ? { status: 'disabled' } : {}),
184
+ updatedAt: iso,
228
185
  };
229
- await writeSubscription(store, next);
230
- return next;
231
186
  }
232
187
  /**
233
188
  * Delivers an envelope to its subscription and records the outcome: success
@@ -235,7 +190,7 @@ export async function recordFailure(store, subscription, options = {}) {
235
190
  * and auto-disables after {@link maxFailures}. This is the single delivery entry
236
191
  * point shared by the Cloudflare Queue consumer and the self-host inline path.
237
192
  */
238
- export async function deliverAndRecord(store, subscription, envelope, options = {}) {
193
+ export async function deliverAndRecord(db, subscription, envelope, options = {}) {
239
194
  // Snapshot the attempt before recordSuccess/recordFailure mutate the counter.
240
195
  const attempt = subscription.failureCount + 1;
241
196
  const result = await WebhookDestination.from(subscription.destination).deliver({
@@ -245,9 +200,9 @@ export async function deliverAndRecord(store, subscription, envelope, options =
245
200
  ...(options.timeoutMs === undefined ? {} : { timeoutMs: options.timeoutMs }),
246
201
  });
247
202
  if (result.ok)
248
- await recordSuccess(store, subscription, options);
203
+ await recordSuccess(db, subscription, options);
249
204
  else
250
- await recordFailure(store, subscription, options);
205
+ await recordFailure(db, subscription, options);
251
206
  // Emit a `webhook:delivery` metric. recordSuccess/recordFailure are immutable
252
207
  // (they spread into a new record), so `subscription.failureCount` here is still
253
208
  // the pre-mutation snapshot the sink needs to derive the attempt bucket.
@@ -266,7 +221,7 @@ export async function deliverAndRecord(store, subscription, envelope, options =
266
221
  // Append a delivery-log row. Best-effort: a logging failure must never change
267
222
  // the delivery outcome the caller (Queue consumer / inline path) acts on.
268
223
  try {
269
- await recordDelivery(store, buildDelivery({ attempt, envelope, result, subscription }, options), options.deliveryRetentionMs === undefined ? {} : { ttl: options.deliveryRetentionMs });
224
+ await recordDelivery(db, buildDelivery({ attempt, envelope, result, subscription }, options), options.deliveryRetentionMs === undefined ? {} : { ttl: options.deliveryRetentionMs });
270
225
  }
271
226
  catch {
272
227
  // delivery logging is best-effort
@@ -346,7 +301,7 @@ export function buildPingEnvelope(subscription, options = {}) {
346
301
  * delivery row is still appended (best-effort) so the ping is observable via the
347
302
  * delivery log.
348
303
  */
349
- export async function ping(store, subscription, options = {}) {
304
+ export async function ping(db, subscription, options = {}) {
350
305
  const now = options.now ?? (() => new Date());
351
306
  const envelope = buildPingEnvelope(subscription, {
352
307
  createdAt: now(),
@@ -361,81 +316,13 @@ export async function ping(store, subscription, options = {}) {
361
316
  // Best-effort: a logging failure must never change the result the caller sees.
362
317
  const delivery = buildDelivery({ attempt: 1, envelope, result, subscription }, { now });
363
318
  try {
364
- await recordDelivery(store, delivery, options.deliveryRetentionMs === undefined ? {} : { ttl: options.deliveryRetentionMs });
319
+ await recordDelivery(db, delivery, options.deliveryRetentionMs === undefined ? {} : { ttl: options.deliveryRetentionMs });
365
320
  }
366
321
  catch {
367
322
  // delivery logging is best-effort
368
323
  }
369
324
  return { delivery, envelope, result };
370
325
  }
371
- function ownerKey(owner) {
372
- return owner.type === 'api_key'
373
- ? `api_key:${encodeURIComponent(owner.orgId)}`
374
- : `mpp:${encodeURIComponent(owner.payer)}`;
375
- }
376
- function subscriptionPrefix(owner) {
377
- return `webhook:sub:${ownerKey(owner)}:`;
378
- }
379
- function subscriptionKey(owner, id) {
380
- return `${subscriptionPrefix(owner)}${id}`;
381
- }
382
- function cursorKey(subscriptionId) {
383
- return `webhook:cursor:${subscriptionId}`;
384
- }
385
- function deliveryPrefix(subscriptionId) {
386
- return `webhook:delivery:${subscriptionId}:`;
387
- }
388
- function deliveryKey(subscriptionId, deliveryId) {
389
- return `${deliveryPrefix(subscriptionId)}${deliveryId}`;
390
- }
391
- function activePrefix(chainId, eventType) {
392
- return `webhook:active:${chainId}:${eventType}:`;
393
- }
394
- function activeKey(chainId, eventType, id) {
395
- return `${activePrefix(chainId, eventType)}${id}`;
396
- }
397
- async function readSubscription(store, key) {
398
- const raw = await store.get(key);
399
- if (!raw)
400
- return null;
401
- try {
402
- return JSON.parse(raw);
403
- }
404
- catch {
405
- // Corrupt entries are treated as absent.
406
- return null;
407
- }
408
- }
409
- async function readDelivery(store, key) {
410
- const raw = await store.get(key);
411
- if (!raw)
412
- return null;
413
- try {
414
- return JSON.parse(raw);
415
- }
416
- catch {
417
- // Corrupt entries are treated as absent.
418
- return null;
419
- }
420
- }
421
- async function writeSubscription(store, subscription) {
422
- const ttl = ttlFor(subscription);
423
- const key = subscriptionKey(subscription.owner, subscription.id);
424
- await store.put(key, JSON.stringify(subscription), { ttl });
425
- // Mirror status into the poller's secondary index: only `active`
426
- // subscriptions are polled. The index value is the subscription's storage key
427
- // so the poller can hydrate without knowing the owner.
428
- const indexKey = activeKey(subscription.chainId, subscription.eventType, subscription.id);
429
- if (subscription.status === 'active')
430
- await store.put(indexKey, key, { ttl });
431
- else
432
- await store.delete(indexKey);
433
- }
434
- function ttlFor(subscription) {
435
- if (!subscription.expiresAt)
436
- return undefined;
437
- return Math.max(1, new Date(subscription.expiresAt).getTime() - Date.now());
438
- }
439
326
  function generateId(now) {
440
327
  // Zero-pad the epoch-ms so ids sort chronologically by string comparison
441
328
  // (mirroring delivery ids), letting listSubscriptions page newest-first; 15
@@ -1 +1 @@
1
- {"version":3,"file":"Webhooks.js","sourceRoot":"","sources":["../../src/internal/Webhooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Webhooks.js","sourceRoot":"","sources":["../../src/internal/Webhooks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,27 +1,33 @@
1
1
  {
2
2
  "name": "tapimo",
3
3
  "type": "module",
4
- "version": "0.0.2",
4
+ "version": "0.2.0",
5
5
  "main": "./dist/index.js",
6
6
  "license": "MIT",
7
+ "bin": {
8
+ "tapimo": "./dist/cli/bin.js",
9
+ "tapimo.src": "./src/cli/bin.ts"
10
+ },
7
11
  "files": [
8
12
  "dist",
9
- "seeds",
10
13
  "src"
11
14
  ],
12
15
  "dependencies": {
13
16
  "@hono/node-server": "^2.0.3",
14
17
  "@hono/standard-validator": "^0.2.2",
18
+ "accounts": "^0.14.11",
15
19
  "hono": "^4.12.26",
16
20
  "hono-openapi": "^1.3.0",
17
21
  "incur": "^0.4.7",
18
22
  "jose": "^6.2.3",
19
- "mppx": "^0.8.4",
23
+ "kysely": "^0.29.2",
24
+ "mppx": "^0.8.5",
20
25
  "nanoid": "^5.1.11",
21
- "ox": "0.14.29",
26
+ "ox": "0.14.30",
27
+ "pg": "^8.22.0",
22
28
  "tidx.ts": "^0.1.1",
23
- "viem": "2.54.1",
24
- "vocs": "^2.2.4",
29
+ "viem": "2.54.6",
30
+ "vocs": "^2.3.3",
25
31
  "zod": "^4.4.3"
26
32
  },
27
33
  "sideEffects": false,
@@ -33,6 +39,11 @@
33
39
  "types": "./dist/index.d.ts",
34
40
  "default": "./dist/index.js"
35
41
  },
42
+ "./apps": {
43
+ "src": "./src/apps/index.ts",
44
+ "types": "./dist/apps/index.d.ts",
45
+ "default": "./dist/apps/index.js"
46
+ },
36
47
  "./admin": {
37
48
  "src": "./src/admin/index.ts",
38
49
  "types": "./dist/admin/index.d.ts",
@@ -42,6 +53,26 @@
42
53
  "src": "./src/cloudflare.ts",
43
54
  "types": "./dist/cloudflare.d.ts",
44
55
  "default": "./dist/cloudflare.js"
56
+ },
57
+ "./data": {
58
+ "src": "./src/apps/data/index.ts",
59
+ "types": "./dist/apps/data/index.d.ts",
60
+ "default": "./dist/apps/data/index.js"
61
+ },
62
+ "./docs": {
63
+ "src": "./src/apps/docs/index.ts",
64
+ "types": "./dist/apps/docs/index.d.ts",
65
+ "default": "./dist/apps/docs/index.js"
66
+ },
67
+ "./platform": {
68
+ "src": "./src/apps/platform/index.ts",
69
+ "types": "./dist/apps/platform/index.d.ts",
70
+ "default": "./dist/apps/platform/index.js"
71
+ },
72
+ "./relay": {
73
+ "src": "./src/apps/relay/index.ts",
74
+ "types": "./dist/apps/relay/index.d.ts",
75
+ "default": "./dist/apps/relay/index.js"
45
76
  }
46
77
  }
47
78
  }
@@ -1,5 +1,5 @@
1
- import * as ApiKeySource from './ApiKeySource.js'
2
1
  import * as ApiKey from './ApiKey.js'
2
+ import * as ApiKeys from './ApiKeys.js'
3
3
  import * as Store from './internal/Store.js'
4
4
 
5
5
  describe('schema.ApiKey', () => {
@@ -81,8 +81,8 @@ describe('keyFor', () => {
81
81
  scopes: ['data:read'],
82
82
  tokenLast4: token.slice(-4),
83
83
  }
84
- const store = Store.memory({ entries: [[ApiKey.keyFor(token), JSON.stringify(record)]] })
85
- expect(await ApiKeySource.store(store).resolve(token)).toMatchObject({
84
+ const state = Store.memory({ entries: [[ApiKey.keyFor(token), JSON.stringify(record)]] })
85
+ expect(await ApiKeys.resolve(state, token)).toMatchObject({
86
86
  id: 'key_smoke',
87
87
  orgId: 'org_test',
88
88
  scopes: ['data:read'],
package/src/ApiKey.ts CHANGED
@@ -1,16 +1,14 @@
1
1
  /**
2
- * The resolved API-key resource and the reusable credential primitives every
3
- * source backend shares.
2
+ * The resolved API-key resource and the reusable credential primitives.
4
3
  *
5
4
  * Holds the resolved {@link ApiKey} type and its {@link schema}, the token
6
- * format/generation ({@link generateToken}/{@link generateId}), the storage-key
7
- * derivation ({@link keyFor}/{@link recordPrefix}), and log {@link redact}ion.
8
- * These live here — not in a single source — so every `ApiKeySource` backend
9
- * (the built-in store, a future D1/Postgres source) issues and parses
10
- * byte-identical credentials and cannot drift. The persisted record/mint-input
11
- * shapes and provisioning (mint/list/revoke) belong to the
12
- * `ApiKeySource.Source` contract, which composes these primitives with its own
13
- * persistence.
5
+ * format/generation ({@link generateToken}/{@link generateId}), the
6
+ * storage-key derivation ({@link keyFor}/{@link recordPrefix}), and log
7
+ * {@link redact}ion. These live here — not in the persistence module — so
8
+ * issued and parsed credentials are byte-identical and cannot drift. The
9
+ * persisted record/mint-input shapes and provisioning (mint/list/revoke) live
10
+ * in `./ApiKeys.js`, which composes these primitives with the app's KV state
11
+ * store (`App.create({ kv })`).
14
12
  */
15
13
 
16
14
  import { nanoid } from 'nanoid'
@@ -24,7 +22,7 @@ import * as Scope from './Scope.js'
24
22
  export namespace schema {
25
23
  /**
26
24
  * Canonical schema for resolved API-key metadata, and the single source of
27
- * truth for the {@link ApiKey} type. `ApiKeySource` derives its persisted
25
+ * truth for the {@link ApiKey} type. `ApiKeys` derives its persisted
28
26
  * `Record` and `MintInput` schemas from this one, so the resolved and
29
27
  * persisted shapes cannot drift.
30
28
  */
@@ -35,6 +33,7 @@ export namespace schema {
35
33
  id: z.string().check(z.describe('Stable key id.')),
36
34
  name: z.optional(z.string()).check(z.describe('Human-readable key name.')),
37
35
  orgId: z.string().check(z.describe('Owning organization id.')),
36
+ projectId: z.optional(z.string()).check(z.describe('Owning project id (`prj_…`).')),
38
37
  rateLimits: z
39
38
  .optional(z.record(z.string(), RateLimit.schema.Limit))
40
39
  .check(
@@ -112,7 +111,7 @@ export function generateId(): string {
112
111
  export const recordPrefix = 'apikey:'
113
112
 
114
113
  /** Hashes a plaintext token to its at-rest lookup hash (lowercase hex, no `0x`). */
115
- function hash(token: string): string {
114
+ export function hash(token: string): string {
116
115
  return Hash.sha256(Hex.fromString(token)).slice(2)
117
116
  }
118
117