tapimo 0.10.1 → 0.11.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 (225) hide show
  1. package/dist/App.d.ts +5249 -3572
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js.map +1 -1
  4. package/dist/Webhooks.d.ts +1 -76
  5. package/dist/Webhooks.d.ts.map +1 -1
  6. package/dist/Webhooks.js +2 -144
  7. package/dist/Webhooks.js.map +1 -1
  8. package/dist/admin/App.d.ts +74 -74
  9. package/dist/admin/apps/earn-vaults.d.ts +1 -1
  10. package/dist/admin/apps/organizations.d.ts +3 -3
  11. package/dist/admin/apps/verified-tokens.d.ts +74 -74
  12. package/dist/analytics/Analytics.d.ts.map +1 -1
  13. package/dist/analytics/Analytics.js +206 -0
  14. package/dist/analytics/Analytics.js.map +1 -1
  15. package/dist/analytics/tables/requestEvents.d.ts +4 -0
  16. package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
  17. package/dist/analytics/tables/requestEvents.js +2 -0
  18. package/dist/analytics/tables/requestEvents.js.map +1 -1
  19. package/dist/apps/data/App.d.ts +3618 -2954
  20. package/dist/apps/data/App.d.ts.map +1 -1
  21. package/dist/apps/data/App.js +7 -2
  22. package/dist/apps/data/App.js.map +1 -1
  23. package/dist/apps/data/routes/activities.d.ts +1 -1
  24. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  25. package/dist/apps/data/routes/activities.js +55 -27
  26. package/dist/apps/data/routes/activities.js.map +1 -1
  27. package/dist/apps/data/routes/balances.d.ts +11 -11
  28. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  29. package/dist/apps/data/routes/balances.js +2 -6
  30. package/dist/apps/data/routes/balances.js.map +1 -1
  31. package/dist/apps/data/routes/blocks.d.ts +5 -5
  32. package/dist/apps/data/routes/earn.d.ts +4 -4
  33. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  34. package/dist/apps/data/routes/earn.js +63 -34
  35. package/dist/apps/data/routes/earn.js.map +1 -1
  36. package/dist/apps/data/routes/exchanges.d.ts +8 -4
  37. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  38. package/dist/apps/data/routes/exchanges.js +115 -77
  39. package/dist/apps/data/routes/exchanges.js.map +1 -1
  40. package/dist/apps/data/routes/fee-amm.d.ts +26 -26
  41. package/dist/apps/data/routes/receipts.d.ts +240 -239
  42. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  43. package/dist/apps/data/routes/receipts.js +15 -14
  44. package/dist/apps/data/routes/receipts.js.map +1 -1
  45. package/dist/apps/data/routes/tokenlist.d.ts +12 -12
  46. package/dist/apps/data/routes/tokens.d.ts +4 -4
  47. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  48. package/dist/apps/data/routes/tokens.js +4 -3
  49. package/dist/apps/data/routes/tokens.js.map +1 -1
  50. package/dist/apps/data/routes/transactions.d.ts +282 -282
  51. package/dist/apps/data/routes/transfers.d.ts +13 -13
  52. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  53. package/dist/apps/data/routes/transfers.js +25 -7
  54. package/dist/apps/data/routes/transfers.js.map +1 -1
  55. package/dist/apps/data/routes/valuation.d.ts +21 -21
  56. package/dist/apps/data/routes/verified-tokens.d.ts +5 -5
  57. package/dist/apps/data/routes/webhooks.d.ts +1519 -643
  58. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  59. package/dist/apps/data/routes/webhooks.js +134 -740
  60. package/dist/apps/data/routes/webhooks.js.map +1 -1
  61. package/dist/apps/data/routes/zones.d.ts +3 -3
  62. package/dist/apps/funding/App.d.ts +233 -0
  63. package/dist/apps/funding/App.d.ts.map +1 -1
  64. package/dist/apps/funding/routes/deposit-addresses.d.ts +331 -1
  65. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
  66. package/dist/apps/funding/routes/deposit-addresses.js +207 -11
  67. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
  68. package/dist/apps/funding/routes/transfers.d.ts +33 -33
  69. package/dist/apps/management/App.d.ts +793 -16
  70. package/dist/apps/management/App.d.ts.map +1 -1
  71. package/dist/apps/management/routes/api-keys.d.ts +50 -50
  72. package/dist/apps/management/routes/faucet.d.ts +2 -2
  73. package/dist/apps/management/routes/invite-links.d.ts +42 -42
  74. package/dist/apps/management/routes/members.d.ts +2 -2
  75. package/dist/apps/management/routes/projects.d.ts +40 -40
  76. package/dist/apps/management/routes/webhooks.d.ts +1031 -59
  77. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  78. package/dist/apps/management/routes/webhooks.js +27 -4
  79. package/dist/apps/management/routes/webhooks.js.map +1 -1
  80. package/dist/db/Db.d.ts.map +1 -1
  81. package/dist/db/Db.js +53 -0
  82. package/dist/db/Db.js.map +1 -1
  83. package/dist/db/Schema.d.ts +7 -1
  84. package/dist/db/Schema.d.ts.map +1 -1
  85. package/dist/db/Schema.js +9 -0
  86. package/dist/db/Schema.js.map +1 -1
  87. package/dist/db/tables/fundingDepositAddresses.d.ts +20 -0
  88. package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -1
  89. package/dist/db/tables/fundingDepositAddresses.js +17 -0
  90. package/dist/db/tables/fundingDepositAddresses.js.map +1 -1
  91. package/dist/db/tables/fundingDeposits.d.ts +41 -0
  92. package/dist/db/tables/fundingDeposits.d.ts.map +1 -1
  93. package/dist/db/tables/fundingDeposits.js +69 -0
  94. package/dist/db/tables/fundingDeposits.js.map +1 -1
  95. package/dist/db/tables/webhookQueueEvents.d.ts +3 -1
  96. package/dist/db/tables/webhookQueueEvents.d.ts.map +1 -1
  97. package/dist/db/tables/webhookQueueEvents.js +4 -0
  98. package/dist/db/tables/webhookQueueEvents.js.map +1 -1
  99. package/dist/db/tables/webhookSubscriptions.d.ts +33 -69
  100. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  101. package/dist/db/tables/webhookSubscriptions.js +63 -100
  102. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  103. package/dist/internal/Auth.d.ts +0 -26
  104. package/dist/internal/Auth.d.ts.map +1 -1
  105. package/dist/internal/Auth.js +0 -33
  106. package/dist/internal/Auth.js.map +1 -1
  107. package/dist/internal/Credential.d.ts +27 -0
  108. package/dist/internal/Credential.d.ts.map +1 -0
  109. package/dist/internal/Credential.js +34 -0
  110. package/dist/internal/Credential.js.map +1 -0
  111. package/dist/internal/EarnRates.js +11 -7
  112. package/dist/internal/EarnRates.js.map +1 -1
  113. package/dist/internal/Log.d.ts +8 -0
  114. package/dist/internal/Log.d.ts.map +1 -1
  115. package/dist/internal/Log.js +4 -0
  116. package/dist/internal/Log.js.map +1 -1
  117. package/dist/internal/MetricSink.d.ts +50 -116
  118. package/dist/internal/MetricSink.d.ts.map +1 -1
  119. package/dist/internal/MetricSink.js +60 -106
  120. package/dist/internal/MetricSink.js.map +1 -1
  121. package/dist/internal/Schema.d.ts +3 -1
  122. package/dist/internal/Schema.d.ts.map +1 -1
  123. package/dist/internal/Schema.js +4 -2
  124. package/dist/internal/Schema.js.map +1 -1
  125. package/dist/internal/Tidx.d.ts +4 -3
  126. package/dist/internal/Tidx.d.ts.map +1 -1
  127. package/dist/internal/Tidx.js +2 -2
  128. package/dist/internal/Tidx.js.map +1 -1
  129. package/dist/internal/Viem.d.ts +4 -3
  130. package/dist/internal/Viem.d.ts.map +1 -1
  131. package/dist/internal/Viem.js +3 -2
  132. package/dist/internal/Viem.js.map +1 -1
  133. package/dist/internal/WebhookTransfer.d.ts +1 -55
  134. package/dist/internal/WebhookTransfer.d.ts.map +1 -1
  135. package/dist/internal/WebhookTransfer.js +1 -239
  136. package/dist/internal/WebhookTransfer.js.map +1 -1
  137. package/dist/internal/Webhooks.d.ts +85 -44
  138. package/dist/internal/Webhooks.d.ts.map +1 -1
  139. package/dist/internal/Webhooks.js +94 -73
  140. package/dist/internal/Webhooks.js.map +1 -1
  141. package/dist/internal/funding/DepositWebhook.d.ts +25 -0
  142. package/dist/internal/funding/DepositWebhook.d.ts.map +1 -0
  143. package/dist/internal/funding/DepositWebhook.js +74 -0
  144. package/dist/internal/funding/DepositWebhook.js.map +1 -0
  145. package/dist/internal/funding/Reconciliation.d.ts +6 -0
  146. package/dist/internal/funding/Reconciliation.d.ts.map +1 -1
  147. package/dist/internal/funding/Reconciliation.js +42 -10
  148. package/dist/internal/funding/Reconciliation.js.map +1 -1
  149. package/dist/internal/funding/index.d.ts +1 -0
  150. package/dist/internal/funding/index.d.ts.map +1 -1
  151. package/dist/internal/funding/index.js +1 -0
  152. package/dist/internal/funding/index.js.map +1 -1
  153. package/dist/internal/index.d.ts +1 -0
  154. package/dist/internal/index.d.ts.map +1 -1
  155. package/dist/internal/index.js +1 -0
  156. package/dist/internal/index.js.map +1 -1
  157. package/dist/internal/webhookDestinations/slack.d.ts.map +1 -1
  158. package/dist/internal/webhookDestinations/slack.js +16 -0
  159. package/dist/internal/webhookDestinations/slack.js.map +1 -1
  160. package/package.json +1 -1
  161. package/src/App.test.ts +30 -0
  162. package/src/App.ts +3 -0
  163. package/src/Client.test-d.ts +55 -2
  164. package/src/Webhooks.ts +2 -221
  165. package/src/analytics/Analytics.test.ts +34 -0
  166. package/src/analytics/Analytics.ts +206 -0
  167. package/src/analytics/tables/requestEvents.ts +6 -0
  168. package/src/apps/composition.test.ts +1 -0
  169. package/src/apps/data/App.ts +10 -2
  170. package/src/apps/data/routes/activities.test.ts +107 -11
  171. package/src/apps/data/routes/activities.ts +64 -32
  172. package/src/apps/data/routes/balances.ts +2 -6
  173. package/src/apps/data/routes/earn.ts +64 -34
  174. package/src/apps/data/routes/exchanges.test.ts +8 -3
  175. package/src/apps/data/routes/exchanges.ts +134 -82
  176. package/src/apps/data/routes/receipts.ts +16 -14
  177. package/src/apps/data/routes/tokens.ts +3 -2
  178. package/src/apps/data/routes/transactions.bench.ts +8 -0
  179. package/src/apps/data/routes/transfers.ts +36 -10
  180. package/src/apps/data/routes/webhooks.test.ts +179 -1497
  181. package/src/apps/data/routes/webhooks.ts +172 -975
  182. package/src/apps/funding/routes/deposit-addresses.test.ts +216 -2
  183. package/src/apps/funding/routes/deposit-addresses.ts +254 -18
  184. package/src/apps/funding/routes/transfers.test.ts +17 -2
  185. package/src/apps/management/routes/webhooks.test.ts +79 -1
  186. package/src/apps/management/routes/webhooks.ts +40 -4
  187. package/src/db/Db.test.ts +1 -5
  188. package/src/db/Db.ts +59 -0
  189. package/src/db/Schema.ts +13 -0
  190. package/src/db/tables/fundingDepositAddresses.test.ts +28 -0
  191. package/src/db/tables/fundingDepositAddresses.ts +39 -0
  192. package/src/db/tables/fundingDeposits.test.ts +82 -0
  193. package/src/db/tables/fundingDeposits.ts +130 -0
  194. package/src/db/tables/organizations.test.ts +5 -2
  195. package/src/db/tables/webhookQueueEvents.ts +7 -1
  196. package/src/db/tables/webhookSubscriptions.ts +89 -138
  197. package/src/internal/Auth.test.ts +0 -48
  198. package/src/internal/Auth.ts +0 -59
  199. package/src/internal/Credential.test.ts +51 -0
  200. package/src/internal/Credential.ts +58 -0
  201. package/src/internal/EarnRates.ts +13 -7
  202. package/src/internal/Log.test.ts +3 -1
  203. package/src/internal/Log.ts +14 -0
  204. package/src/internal/MetricSink.test.ts +75 -358
  205. package/src/internal/MetricSink.ts +117 -246
  206. package/src/internal/Schema.test.ts +18 -0
  207. package/src/internal/Schema.ts +13 -2
  208. package/src/internal/Tidx.ts +5 -4
  209. package/src/internal/Viem.test.ts +4 -0
  210. package/src/internal/Viem.ts +6 -4
  211. package/src/internal/WebhookTransfer.ts +1 -351
  212. package/src/internal/Webhooks.test.ts +111 -139
  213. package/src/internal/Webhooks.ts +181 -105
  214. package/src/internal/funding/DepositWebhook.test.ts +131 -0
  215. package/src/internal/funding/DepositWebhook.ts +101 -0
  216. package/src/internal/funding/Reconciliation.test.ts +14 -0
  217. package/src/internal/funding/Reconciliation.ts +161 -86
  218. package/src/internal/funding/index.test.ts +1 -0
  219. package/src/internal/funding/index.ts +1 -0
  220. package/src/internal/index.test.ts +1 -0
  221. package/src/internal/index.ts +1 -0
  222. package/src/internal/webhookDestinations/slack.ts +15 -0
  223. package/src/Webhooks.bench.ts +0 -714
  224. package/src/Webhooks.memory.bench.ts +0 -250
  225. package/src/Webhooks.test.ts +0 -146
@@ -31,6 +31,15 @@ export type Owner = {
31
31
  /** Owner kind. */
32
32
  type: 'mpp';
33
33
  };
34
+ /** API-key scope applied when managing private-resource subscriptions. */
35
+ export type Access = {
36
+ /** API-key environment. */
37
+ environment: 'production' | 'sandbox';
38
+ /** Project attribution, when the key is project-scoped. */
39
+ projectId?: string | undefined;
40
+ /** API-key scopes used to authorize private resource reads. */
41
+ scopes: readonly string[];
42
+ };
34
43
  /**
35
44
  * Optional human context describing what a subscription is for. Carried onto
36
45
  * every delivered {@link Envelope} and surfaced by destinations (Slack header +
@@ -54,6 +63,8 @@ export type Subscription = {
54
63
  createdAt: string;
55
64
  /** Where matched events are delivered (URL or Slack channel). */
56
65
  destination: WebhookDestination.Destination;
66
+ /** API-key environment captured when the subscription was created. */
67
+ environment?: 'production' | 'sandbox' | undefined;
57
68
  /** Event type the subscription listens to. */
58
69
  eventType: EventType;
59
70
  /** ISO expiry timestamp; set for MPP-owned subscriptions (TTL-bounded). */
@@ -68,6 +79,8 @@ export type Subscription = {
68
79
  lastDeliveryAt?: string | undefined;
69
80
  /** Authenticated owner. */
70
81
  owner: Owner;
82
+ /** Project attribution captured from the creating API key. */
83
+ projectId?: string | undefined;
71
84
  /** HMAC signing secret. Returned once at creation; never exposed by reads. */
72
85
  secret: string;
73
86
  /** Lifecycle status. */
@@ -83,12 +96,16 @@ export type CreateInput = {
83
96
  context?: Context | undefined;
84
97
  /** Where matched events are delivered. `url` destinations are SSRF-validated. */
85
98
  destination: WebhookDestination.Destination;
99
+ /** API-key environment used to isolate private resource events. */
100
+ environment?: 'production' | 'sandbox' | undefined;
86
101
  /** Event type to listen to. */
87
102
  eventType: EventType;
88
103
  /** Event-type-specific filter predicates. */
89
104
  filters?: Record<string, unknown> | undefined;
90
105
  /** Owner derived from the request principal. */
91
106
  owner: Owner;
107
+ /** Project attribution used to isolate private resource events. */
108
+ projectId?: string | undefined;
92
109
  /** Time-to-live in milliseconds; set the subscription to expire (MPP TTL). */
93
110
  ttl?: number | undefined;
94
111
  };
@@ -155,7 +172,13 @@ export declare namespace createSubscription {
155
172
  };
156
173
  }
157
174
  /** Reads a single subscription scoped to its owner. Returns null when absent. */
158
- export declare function getSubscription(db: Db.Db, owner: Owner, id: string): Promise<Subscription | null>;
175
+ export declare function getSubscription(db: Db.Db, owner: Owner, id: string, options?: getSubscription.Options): Promise<Subscription | null>;
176
+ export declare namespace getSubscription {
177
+ /** Private-resource visibility options. */
178
+ type Options = {
179
+ access?: Access | undefined;
180
+ };
181
+ }
159
182
  /**
160
183
  * Lists an owner's subscriptions, newest first, with optional keyset paging.
161
184
  * Subscription ids embed a timestamp, so lexical id order is chronological.
@@ -164,6 +187,8 @@ export declare function listSubscriptions(db: Db.Db, owner: Owner, options?: lis
164
187
  export declare namespace listSubscriptions {
165
188
  /** Options for {@link listSubscriptions}. */
166
189
  type Options = {
190
+ /** Private-resource visibility scope. */
191
+ access?: Access | undefined;
167
192
  /** Return subscriptions older than this id (keyset paging, newest first). */
168
193
  cursor?: string | undefined;
169
194
  /** Maximum subscriptions to return. */
@@ -177,71 +202,53 @@ export declare namespace listSubscriptions {
177
202
  * since the per-owner set is bounded by `maxPerOwner`. Feeds the opt-in
178
203
  * `meta.totalCount` on `GET /webhooks`.
179
204
  */
180
- export declare function countSubscriptions(db: Db.Db, owner: Owner): Promise<number>;
205
+ export declare function countSubscriptions(db: Db.Db, owner: Owner, options?: countSubscriptions.Options): Promise<number>;
206
+ export declare namespace countSubscriptions {
207
+ /** Private-resource visibility options. */
208
+ type Options = {
209
+ access?: Access | undefined;
210
+ };
211
+ }
181
212
  /**
182
213
  * Patches an owner's subscription, re-validating the URL when changed.
183
- * Returns null when absent. The status column drives the poller's partial
214
+ * Returns null when absent. The status column drives the partial active
184
215
  * index, so no secondary-index maintenance is needed.
185
216
  */
186
217
  export declare function updateSubscription(db: Db.Db, owner: Owner, id: string, patch: PatchInput, options?: updateSubscription.Options): Promise<Subscription | null>;
187
218
  export declare namespace updateSubscription {
188
219
  /** Options for {@link updateSubscription}. */
189
220
  type Options = {
221
+ /** Private-resource visibility scope. */
222
+ access?: Access | undefined;
190
223
  /** Clock used for timestamps (injectable for tests). */
191
224
  now?: (() => Date) | undefined;
192
225
  };
193
226
  }
194
227
  /** Deletes an owner's subscription; its delivery rows cascade via the FK. */
195
- export declare function deleteSubscription(db: Db.Db, owner: Owner, id: string): Promise<boolean>;
196
- /**
197
- * Lists active subscriptions for a `(chainId, eventType)` stream. Used by the
198
- * poller; one indexed query (the partial status index replaces the old
199
- * secondary key space).
200
- */
201
- export declare function listActive(db: Db.Db, chainId: number, eventType: EventType): Promise<Subscription[]>;
202
- /**
203
- * Lists a stream's live active subscriptions paired with their poller cursors,
204
- * from one query. The poller's per-tick lookup.
205
- */
206
- export declare function listActiveWithCursors(db: Db.Db, chainId: number, eventType: EventType): Promise<{
207
- cursor: string | null;
208
- subscription: Subscription;
209
- }[]>;
210
- /** Reads every live active subscription on a chain in one poller query. */
228
+ export declare function deleteSubscription(db: Db.Db, owner: Owner, id: string, options?: deleteSubscription.Options): Promise<boolean>;
229
+ export declare namespace deleteSubscription {
230
+ /** Private-resource visibility options. */
231
+ type Options = {
232
+ access?: Access | undefined;
233
+ };
234
+ }
235
+ /** Reads every live active subscription on a chain in one query. */
211
236
  export declare function listActiveForChain(db: Db.Db, options: listActiveForChain.Options): Promise<{
212
237
  cursor: string | null;
213
238
  subscription: Subscription;
214
239
  }[]>;
215
240
  export declare namespace listActiveForChain {
216
- /** Filters for the poller's chain-level subscription read. */
241
+ /** Filters for the chain-level subscription read. */
217
242
  type Options = Pick<WebhookSubscriptions.listActiveForChain.Options, 'chainId' | 'eventTypes'>;
218
243
  }
219
- /**
220
- * Reads the freshest cursor block across a chain's active subscriptions, or
221
- * null when none carry a cursor. Creation checkpoints count at their recorded
222
- * head, so a brand-new subscription reads as fresh.
223
- */
224
- export declare function maxCursorBlock(db: Db.Db, chainId: number): Promise<number | null>;
244
+ /** Decodes the block component of a subscription cursor, if any. */
245
+ export declare function cursorBlock(cursor: string | null): number | undefined;
225
246
  /** Reads a subscription's keyset cursor. Returns null when unset. */
226
247
  export declare function getCursor(db: Db.Db, subscriptionId: string): Promise<string | null>;
227
- /** Writes a cursor only when its stored value matches the expected cursor. */
228
- export declare function compareAndSetCursor(db: Db.Db, options: compareAndSetCursor.Options): Promise<boolean>;
229
- export declare namespace compareAndSetCursor {
230
- /** Options for {@link compareAndSetCursor}. */
231
- type Options = WebhookSubscriptions.compareAndSetCursor.Options;
232
- }
233
- /** Writes cursors whose stored values match their expected cursors. */
234
- export declare function compareAndSetCursors(db: Db.Db, options: compareAndSetCursors.Options): Promise<Set<string>>;
235
- export declare namespace compareAndSetCursors {
236
- /** Options for {@link compareAndSetCursors}. */
237
- type Options = WebhookSubscriptions.compareAndSetCursors.Options;
238
- }
239
- /** Writes a subscription's keyset cursor. */
240
- export declare function setCursor(db: Db.Db, subscriptionId: string, cursor: string): Promise<void>;
241
248
  /**
242
249
  * Deletes expired MPP-owned subscriptions (delivery rows cascade) and
243
- * deliveries past retention. Reads already filter expiry at query time this
244
- * is the janitor reclaiming space, called best-effort per poller tick.
250
+ * deliveries past retention. Reads already filter expiry at query time; this
251
+ * is the janitor reclaiming space, run best-effort on a schedule.
245
252
  */
246
253
  export declare function pruneExpired(db: Db.Db, options?: pruneExpired.Options): Promise<void>;
247
254
  export declare namespace pruneExpired {
@@ -297,6 +304,8 @@ export declare namespace ensureQueueEvents {
297
304
  type Options = {
298
305
  /** Clock used for staging timestamps. */
299
306
  now?: (() => Date) | undefined;
307
+ /** Epoch ms the head owing these events was observed; absent on replays. */
308
+ observedAt?: number | undefined;
300
309
  /** Staged-envelope TTL in ms; defaults to {@link deliveryRetentionMs}. */
301
310
  ttl?: number | undefined;
302
311
  };
@@ -357,6 +366,8 @@ export declare namespace deliverClaimedAndRecord {
357
366
  type Claimed = {
358
367
  /** Immutable event envelope to deliver. */
359
368
  envelope: Envelope;
369
+ /** ISO head-observation stamp carried by the staged row; null on replays. */
370
+ observedAt?: string | null | undefined;
360
371
  /** Subscription re-resolved for current status and secret. */
361
372
  subscriptionId: string;
362
373
  };
@@ -423,7 +434,7 @@ export declare function countDeliveries(db: Db.Db, subscriptionId: string): Prom
423
434
  export declare function getDelivery(db: Db.Db, subscriptionId: string, deliveryId: string): Promise<Delivery | null>;
424
435
  /**
425
436
  * Default number of consecutive delivery failures after which a subscription
426
- * auto-disables (and is dropped from the poller's active index).
437
+ * auto-disables (and is dropped from the partial active index).
427
438
  */
428
439
  export declare const maxFailures = 10;
429
440
  /**
@@ -442,7 +453,7 @@ export declare namespace recordSuccess {
442
453
  /**
443
454
  * Records a failed delivery: atomically increments the consecutive-failure
444
455
  * counter and, once it reaches `maxFailures`, sets `status: 'disabled'` so the
445
- * subscription drops out of the poller's partial index (surfaced via the API).
456
+ * subscription drops out of the partial active index (surfaced via the API).
446
457
  * Returns the updated subscription.
447
458
  */
448
459
  export declare function recordFailure(db: Db.Db, subscription: Subscription, options?: recordFailure.Options): Promise<Subscription>;
@@ -483,6 +494,8 @@ export declare namespace deliverAndRecord {
483
494
  metrics?: Metrics.Metrics | undefined;
484
495
  /** Clock used for timestamps; injectable for tests. */
485
496
  now?: (() => Date) | undefined;
497
+ /** Epoch ms the head owing this event was observed; absent on replays. */
498
+ observedAt?: number | undefined;
486
499
  /** Cloudflare Queue delivery attempt, starting at one; absent for inline delivery paths. */
487
500
  queueAttempt?: number | undefined;
488
501
  /** Queue enqueue time as epoch milliseconds, used to isolate queue wait. */
@@ -530,6 +543,19 @@ export declare namespace eventId {
530
543
  logIndex: bigint | number | string;
531
544
  };
532
545
  }
546
+ /** Computes a stable event id from an event-type-specific identity key. */
547
+ export declare function eventIdFromKey(options: eventIdFromKey.Options): string;
548
+ export declare namespace eventIdFromKey {
549
+ /** Stable identity inputs for a webhook event. */
550
+ type Options = {
551
+ /** Chain the event belongs to. */
552
+ chainId: number;
553
+ /** Event type. */
554
+ eventType: EventType;
555
+ /** Stable event-type-specific identity. */
556
+ key: string;
557
+ };
558
+ }
533
559
  /** The JSON envelope delivered to subscribers. */
534
560
  export type Envelope = {
535
561
  /** Chain the event occurred on. */
@@ -564,6 +590,21 @@ export declare namespace buildEnvelope {
564
590
  subscription: Subscription;
565
591
  };
566
592
  }
593
+ /** Builds a delivery envelope from a stable application-event identity. */
594
+ export declare function buildKeyedEnvelope(options: buildKeyedEnvelope.Options): Envelope;
595
+ export declare namespace buildKeyedEnvelope {
596
+ /** Application-event envelope fields. */
597
+ type Options = {
598
+ /** Timestamp to stamp on the envelope; defaults to now. */
599
+ createdAt?: Date | undefined;
600
+ /** Public event payload. */
601
+ data: unknown;
602
+ /** Stable event-type-specific identity. */
603
+ key: string;
604
+ /** Subscription the event matched. */
605
+ subscription: Subscription;
606
+ };
607
+ }
567
608
  /**
568
609
  * Builds a synthetic `ping` envelope so an owner can test a subscription's
569
610
  * endpoint (connectivity, TLS, signature verification) without waiting for a real
@@ -1 +1 @@
1
- {"version":3,"file":"Webhooks.d.ts","sourceRoot":"","sources":["../../src/internal/Webhooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Webhooks.d.ts","sourceRoot":"","sources":["../../src/internal/Webhooks.ts"],"names":[],"mappings":"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"}
@@ -20,18 +20,20 @@ export async function createSubscription(db, input, options = {}) {
20
20
  const now = (options.now ?? (() => new Date()))();
21
21
  const iso = now.toISOString();
22
22
  // A one-field checkpoint records the live creation head without claiming it
23
- // was scanned. The poller expands it using its confirmation depth.
23
+ // was scanned; it anchors the fanout boundary for the new subscription.
24
24
  const pollerCursor = options.startBlockNumber === undefined ? undefined : Cursor.encode([options.startBlockNumber]);
25
25
  const subscription = {
26
26
  chainId: input.chainId,
27
27
  ...(input.context === undefined ? {} : { context: input.context }),
28
28
  createdAt: iso,
29
29
  destination: input.destination,
30
+ ...(input.environment === undefined ? {} : { environment: input.environment }),
30
31
  eventType: input.eventType,
31
32
  failureCount: 0,
32
33
  filters: input.filters ?? {},
33
34
  id: generateId(now),
34
35
  owner: input.owner,
36
+ ...(input.projectId === undefined ? {} : { projectId: input.projectId }),
35
37
  secret: generateSecret(),
36
38
  status: 'active',
37
39
  updatedAt: iso,
@@ -53,8 +55,8 @@ export async function createSubscription(db, input, options = {}) {
53
55
  return subscription;
54
56
  }
55
57
  /** Reads a single subscription scoped to its owner. Returns null when absent. */
56
- export async function getSubscription(db, owner, id) {
57
- return WebhookSubscriptions.get(db, owner, id, new Date().toISOString());
58
+ export async function getSubscription(db, owner, id, options = {}) {
59
+ return WebhookSubscriptions.get(db, owner, id, new Date().toISOString(), options.access);
58
60
  }
59
61
  /**
60
62
  * Lists an owner's subscriptions, newest first, with optional keyset paging.
@@ -68,16 +70,16 @@ export async function listSubscriptions(db, owner, options = {}) {
68
70
  * since the per-owner set is bounded by `maxPerOwner`. Feeds the opt-in
69
71
  * `meta.totalCount` on `GET /webhooks`.
70
72
  */
71
- export async function countSubscriptions(db, owner) {
72
- return WebhookSubscriptions.count(db, owner, new Date().toISOString());
73
+ export async function countSubscriptions(db, owner, options = {}) {
74
+ return WebhookSubscriptions.count(db, owner, new Date().toISOString(), options.access);
73
75
  }
74
76
  /**
75
77
  * Patches an owner's subscription, re-validating the URL when changed.
76
- * Returns null when absent. The status column drives the poller's partial
78
+ * Returns null when absent. The status column drives the partial active
77
79
  * index, so no secondary-index maintenance is needed.
78
80
  */
79
81
  export async function updateSubscription(db, owner, id, patch, options = {}) {
80
- const current = await getSubscription(db, owner, id);
82
+ const current = await getSubscription(db, owner, id, options.access === undefined ? {} : { access: options.access });
81
83
  if (!current)
82
84
  return null;
83
85
  if (current.destination.type !== 'url' && patch.destination?.type === 'url')
@@ -96,26 +98,10 @@ export async function updateSubscription(db, owner, id, patch, options = {}) {
96
98
  return next ?? null;
97
99
  }
98
100
  /** Deletes an owner's subscription; its delivery rows cascade via the FK. */
99
- export async function deleteSubscription(db, owner, id) {
100
- return WebhookSubscriptions.remove(db, owner, id, new Date().toISOString());
101
+ export async function deleteSubscription(db, owner, id, options = {}) {
102
+ return WebhookSubscriptions.remove(db, owner, id, new Date().toISOString(), options.access);
101
103
  }
102
- /**
103
- * Lists active subscriptions for a `(chainId, eventType)` stream. Used by the
104
- * poller; one indexed query (the partial status index replaces the old
105
- * secondary key space).
106
- */
107
- export async function listActive(db, chainId, eventType) {
108
- const pairs = await listActiveWithCursors(db, chainId, eventType);
109
- return pairs.map((pair) => pair.subscription);
110
- }
111
- /**
112
- * Lists a stream's live active subscriptions paired with their poller cursors,
113
- * from one query. The poller's per-tick lookup.
114
- */
115
- export async function listActiveWithCursors(db, chainId, eventType) {
116
- return WebhookSubscriptions.listActive(db, chainId, eventType, new Date().toISOString());
117
- }
118
- /** Reads every live active subscription on a chain in one poller query. */
104
+ /** Reads every live active subscription on a chain in one query. */
119
105
  export async function listActiveForChain(db, options) {
120
106
  return WebhookSubscriptions.listActiveForChain(db, {
121
107
  chainId: options.chainId,
@@ -123,42 +109,22 @@ export async function listActiveForChain(db, options) {
123
109
  now: new Date().toISOString(),
124
110
  });
125
111
  }
126
- /**
127
- * Reads the freshest cursor block across a chain's active subscriptions, or
128
- * null when none carry a cursor. Creation checkpoints count at their recorded
129
- * head, so a brand-new subscription reads as fresh.
130
- */
131
- export async function maxCursorBlock(db, chainId) {
132
- const cursors = await WebhookSubscriptions.listActiveCursors(db, chainId, new Date().toISOString());
133
- let max = null;
134
- for (const cursor of cursors) {
135
- const decoded = Cursor.decode(cursor, ['int', 'int']) ?? Cursor.decode(cursor, ['int']);
136
- const block = decoded?.[0];
137
- if (typeof block === 'number' && (max === null || block > max))
138
- max = block;
139
- }
140
- return max;
112
+ /** Decodes the block component of a subscription cursor, if any. */
113
+ export function cursorBlock(cursor) {
114
+ if (cursor === null)
115
+ return undefined;
116
+ const decoded = Cursor.decode(cursor, ['int', 'int']) ?? Cursor.decode(cursor, ['int']);
117
+ const block = decoded?.[0];
118
+ return typeof block === 'number' ? block : undefined;
141
119
  }
142
120
  /** Reads a subscription's keyset cursor. Returns null when unset. */
143
121
  export async function getCursor(db, subscriptionId) {
144
122
  return WebhookSubscriptions.getCursor(db, subscriptionId);
145
123
  }
146
- /** Writes a cursor only when its stored value matches the expected cursor. */
147
- export async function compareAndSetCursor(db, options) {
148
- return WebhookSubscriptions.compareAndSetCursor(db, options);
149
- }
150
- /** Writes cursors whose stored values match their expected cursors. */
151
- export async function compareAndSetCursors(db, options) {
152
- return WebhookSubscriptions.compareAndSetCursors(db, options);
153
- }
154
- /** Writes a subscription's keyset cursor. */
155
- export async function setCursor(db, subscriptionId, cursor) {
156
- await WebhookSubscriptions.setCursor(db, subscriptionId, cursor);
157
- }
158
124
  /**
159
125
  * Deletes expired MPP-owned subscriptions (delivery rows cascade) and
160
- * deliveries past retention. Reads already filter expiry at query time this
161
- * is the janitor reclaiming space, called best-effort per poller tick.
126
+ * deliveries past retention. Reads already filter expiry at query time; this
127
+ * is the janitor reclaiming space, run best-effort on a schedule.
162
128
  */
163
129
  export async function pruneExpired(db, options = {}) {
164
130
  const iso = (options.now ?? (() => new Date()))().toISOString();
@@ -188,6 +154,9 @@ export function retryDelayMs(attemptCount) {
188
154
  export async function ensureQueueEvents(db, dispatchables, options = {}) {
189
155
  const now = (options.now ?? (() => new Date()))();
190
156
  const expiresAt = new Date(now.getTime() + (options.ttl ?? deliveryRetentionMs)).toISOString();
157
+ // Carried so the delivery worker can measure observation-to-attempt without
158
+ // re-reading the block; replays have no observation and stay null.
159
+ const observedAt = options.observedAt === undefined ? null : new Date(options.observedAt).toISOString();
191
160
  const events = dispatchables.map(({ envelope, subscription }) => ({
192
161
  createdAt: now.toISOString(),
193
162
  envelope,
@@ -197,6 +166,7 @@ export async function ensureQueueEvents(db, dispatchables, options = {}) {
197
166
  expiresAt,
198
167
  // Due immediately; the value orders the sweep so it is never null here.
199
168
  nextAttemptAt: now.toISOString(),
169
+ observedAt,
200
170
  subscriptionId: subscription.id,
201
171
  }));
202
172
  return {
@@ -272,10 +242,13 @@ export async function deliverClaimedAndRecord(db, claimed, options = {}) {
272
242
  const subscription = await WebhookSubscriptions.getById(db, claimed.subscriptionId, new Date().toISOString());
273
243
  if (!subscription || subscription.status !== 'active')
274
244
  return { status: 'skipped' };
245
+ // A staged row predating the observation column, or a replay, reads null.
246
+ const observedAt = claimed.observedAt ? Date.parse(claimed.observedAt) : Number.NaN;
275
247
  return {
276
248
  result: await deliverAndRecord(db, subscription, claimed.envelope, {
277
249
  ...options,
278
250
  dequeuedAt,
251
+ ...(Number.isNaN(observedAt) ? {} : { observedAt }),
279
252
  subscriptionReadMs: Date.now() - subscriptionReadStartedAt,
280
253
  }),
281
254
  status: 'delivered',
@@ -285,7 +258,7 @@ export async function deliverClaimedAndRecord(db, claimed, options = {}) {
285
258
  export async function recordDelivery(db, delivery, options = {}) {
286
259
  const ttl = options.ttl ?? deliveryRetentionMs;
287
260
  // The retention deadline replaces the old store TTL: reads filter on it at
288
- // query time and the poller prunes past it. Anchored to write time (not the
261
+ // query time and pruning reclaims past it. Anchored to write time (not the
289
262
  // row's `createdAt`, which tests pin) — exactly like the old `put` TTL.
290
263
  const expiresAt = new Date(Date.now() + ttl).toISOString();
291
264
  await WebhookDeliveries.insert(db, delivery, expiresAt);
@@ -311,7 +284,7 @@ export async function getDelivery(db, subscriptionId, deliveryId) {
311
284
  }
312
285
  /**
313
286
  * Default number of consecutive delivery failures after which a subscription
314
- * auto-disables (and is dropped from the poller's active index).
287
+ * auto-disables (and is dropped from the partial active index).
315
288
  */
316
289
  export const maxFailures = 10;
317
290
  /**
@@ -330,7 +303,7 @@ export async function recordSuccess(db, subscription, options = {}) {
330
303
  /**
331
304
  * Records a failed delivery: atomically increments the consecutive-failure
332
305
  * counter and, once it reaches `maxFailures`, sets `status: 'disabled'` so the
333
- * subscription drops out of the poller's partial index (surfaced via the API).
306
+ * subscription drops out of the partial active index (surfaced via the API).
334
307
  * Returns the updated subscription.
335
308
  */
336
309
  export async function recordFailure(db, subscription, options = {}) {
@@ -375,21 +348,31 @@ export async function deliverAndRecord(db, subscription, envelope, options = {})
375
348
  return { error: 'delivery failed before request', ok: false };
376
349
  }
377
350
  })();
378
- const stateWriteStartedAt = Date.now();
379
- if (result.ok)
380
- await recordSuccess(db, subscription, options);
381
- else
382
- await recordFailure(db, subscription, options);
383
- const stateWriteMs = Date.now() - stateWriteStartedAt;
351
+ // Overlapped: the two writes touch different rows and the log carries the
352
+ // immutable pre-attempt subscription, so it never reads the state write's
353
+ // result. Sequentially they cost two Postgres round trips per delivery.
354
+ const writeStartedAt = Date.now();
384
355
  // Append a delivery-log row. Best-effort: a logging failure must never change
385
356
  // the delivery outcome the caller (Queue consumer / inline path) acts on.
386
- const deliveryLogStartedAt = Date.now();
387
- try {
388
- await recordDelivery(db, buildDelivery({ attempt, envelope, result, subscription }, options), options.deliveryRetentionMs === undefined ? {} : { ttl: options.deliveryRetentionMs });
389
- }
390
- catch {
391
- // delivery logging is best-effort
392
- }
357
+ const deliveryLog = (async () => {
358
+ try {
359
+ await recordDelivery(db, buildDelivery({ attempt, envelope, result, subscription }, options), options.deliveryRetentionMs === undefined ? {} : { ttl: options.deliveryRetentionMs });
360
+ }
361
+ catch {
362
+ // delivery logging is best-effort
363
+ }
364
+ return Date.now() - writeStartedAt;
365
+ })();
366
+ const stateWrite = (async () => {
367
+ if (result.ok)
368
+ await recordSuccess(db, subscription, options);
369
+ else
370
+ await recordFailure(db, subscription, options);
371
+ return Date.now() - writeStartedAt;
372
+ })();
373
+ // A state-write rejection still propagates to the caller's retry path; the
374
+ // log promise never rejects, so it cannot mask it or go unhandled.
375
+ const [stateWriteMs, deliveryLogMs] = await Promise.all([stateWrite, deliveryLog]);
393
376
  const completedAt = Date.now();
394
377
  // Emit after all delivery work so the timings cover every stage. The
395
378
  // subscription is immutable, preserving the pre-attempt failure count.
@@ -405,16 +388,29 @@ export async function deliverAndRecord(db, subscription, envelope, options = {})
405
388
  subscription,
406
389
  attempt,
407
390
  timings: {
408
- deliveryLogMs: completedAt - deliveryLogStartedAt,
391
+ deliveryLogMs,
409
392
  envelopeToQueueMs: options.queuedAt === undefined || Number.isNaN(envelopeAt)
410
393
  ? undefined
411
394
  : Math.max(0, options.queuedAt - envelopeAt),
412
395
  endToEndMs: eventAt === undefined ? undefined : Math.max(0, completedAt - eventAt),
396
+ // The attempt leaving, not bookkeeping finishing: everything after
397
+ // `startedAt` is either the subscriber's time or our own recording,
398
+ // neither of which delays the event reaching them. Gated on a request
399
+ // actually being made, so a failure before send (formatting, invalid
400
+ // destination) does not report an attempt that never left.
401
+ eventToAttemptMs: eventAt === undefined || result.durationMs === undefined
402
+ ? undefined
403
+ : Math.max(0, startedAt - eventAt),
413
404
  eventToEnvelopeMs: eventAt === undefined || Number.isNaN(envelopeAt)
414
405
  ? undefined
415
406
  : Math.max(0, envelopeAt - eventAt),
407
+ observedToAttemptMs: options.observedAt === undefined || result.durationMs === undefined
408
+ ? undefined
409
+ : Math.max(0, startedAt - options.observedAt),
410
+ preflightMs: Math.max(0, startedAt - dequeuedAt),
416
411
  processingMs: Math.max(0, completedAt - dequeuedAt),
417
412
  queueWaitMs: options.queuedAt === undefined ? undefined : Math.max(0, dequeuedAt - options.queuedAt),
413
+ settleMs: Math.max(0, completedAt - writeStartedAt),
418
414
  stateWriteMs,
419
415
  subscriptionReadMs: options.subscriptionReadMs,
420
416
  },
@@ -478,7 +474,15 @@ function buildDelivery(input, options = {}) {
478
474
  * re-deliveries are dedupable by the receiver.
479
475
  */
480
476
  export function eventId(options) {
481
- const input = `${options.chainId}:${options.eventType}:${options.blockNumber}:${options.logIndex}`;
477
+ return eventIdFromKey({
478
+ chainId: options.chainId,
479
+ eventType: options.eventType,
480
+ key: `${options.blockNumber}:${options.logIndex}`,
481
+ });
482
+ }
483
+ /** Computes a stable event id from an event-type-specific identity key. */
484
+ export function eventIdFromKey(options) {
485
+ const input = `${options.chainId}:${options.eventType}:${options.key}`;
482
486
  return `evt_${Hash.sha256(Hex.fromString(input)).slice(2)}`;
483
487
  }
484
488
  /** Builds a delivery envelope for an event matched against a subscription. */
@@ -499,6 +503,23 @@ export function buildEnvelope(options) {
499
503
  type: subscription.eventType,
500
504
  };
501
505
  }
506
+ /** Builds a delivery envelope from a stable application-event identity. */
507
+ export function buildKeyedEnvelope(options) {
508
+ const { subscription } = options;
509
+ return {
510
+ chainId: subscription.chainId,
511
+ ...(subscription.context === undefined ? {} : { context: subscription.context }),
512
+ createdAt: (options.createdAt ?? new Date()).toISOString(),
513
+ data: options.data,
514
+ id: eventIdFromKey({
515
+ chainId: subscription.chainId,
516
+ eventType: subscription.eventType,
517
+ key: options.key,
518
+ }),
519
+ subscriptionId: subscription.id,
520
+ type: subscription.eventType,
521
+ };
522
+ }
502
523
  /**
503
524
  * Builds a synthetic `ping` envelope so an owner can test a subscription's
504
525
  * endpoint (connectivity, TLS, signature verification) without waiting for a real