@stratum-hq/lib 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/crypto.d.ts.map +1 -1
  2. package/dist/crypto.js +7 -1
  3. package/dist/crypto.js.map +1 -1
  4. package/dist/index.d.ts +2 -2
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +3 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/migrate-schemas.d.ts.map +1 -1
  9. package/dist/migrate-schemas.js +19 -8
  10. package/dist/migrate-schemas.js.map +1 -1
  11. package/dist/migrations/011_demo_bootstrap.sql +3 -3
  12. package/dist/migrations/022_roles_name_per_tenant.sql +10 -0
  13. package/dist/migrations/024_propagate_ancestry_ltree.sql +42 -0
  14. package/dist/migrations/025_redact_sensitive_config_audit.sql +19 -0
  15. package/dist/migrations/026_redact_webhook_secret_audit.sql +28 -0
  16. package/dist/migrations/027_tenant_status_pending.sql +8 -0
  17. package/dist/services/abac-service.d.ts.map +1 -1
  18. package/dist/services/abac-service.js +49 -37
  19. package/dist/services/abac-service.js.map +1 -1
  20. package/dist/services/api-key-service.d.ts.map +1 -1
  21. package/dist/services/api-key-service.js +55 -33
  22. package/dist/services/api-key-service.js.map +1 -1
  23. package/dist/services/config-service.d.ts +2 -7
  24. package/dist/services/config-service.d.ts.map +1 -1
  25. package/dist/services/config-service.js +14 -6
  26. package/dist/services/config-service.js.map +1 -1
  27. package/dist/services/event-service.d.ts +12 -0
  28. package/dist/services/event-service.d.ts.map +1 -1
  29. package/dist/services/event-service.js +240 -79
  30. package/dist/services/event-service.js.map +1 -1
  31. package/dist/services/permission-service.d.ts.map +1 -1
  32. package/dist/services/permission-service.js +30 -13
  33. package/dist/services/permission-service.js.map +1 -1
  34. package/dist/services/retention-service.d.ts +7 -1
  35. package/dist/services/retention-service.d.ts.map +1 -1
  36. package/dist/services/retention-service.js +47 -7
  37. package/dist/services/retention-service.js.map +1 -1
  38. package/dist/services/role-service.d.ts +7 -0
  39. package/dist/services/role-service.d.ts.map +1 -1
  40. package/dist/services/role-service.js +25 -11
  41. package/dist/services/role-service.js.map +1 -1
  42. package/dist/services/tenant-service.d.ts +12 -3
  43. package/dist/services/tenant-service.d.ts.map +1 -1
  44. package/dist/services/tenant-service.js +120 -53
  45. package/dist/services/tenant-service.js.map +1 -1
  46. package/dist/services/webhook-service.d.ts +5 -0
  47. package/dist/services/webhook-service.d.ts.map +1 -1
  48. package/dist/services/webhook-service.js +14 -0
  49. package/dist/services/webhook-service.js.map +1 -1
  50. package/dist/stratum.d.ts +26 -18
  51. package/dist/stratum.d.ts.map +1 -1
  52. package/dist/stratum.js +105 -41
  53. package/dist/stratum.js.map +1 -1
  54. package/package.json +2 -2
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.validateWebhookUrl = validateWebhookUrl;
7
7
  exports.validateWebhookUrlWithDns = validateWebhookUrlWithDns;
8
+ exports.postWebhook = postWebhook;
8
9
  exports.emitEvent = emitEvent;
9
10
  exports.deliverWebhook = deliverWebhook;
10
11
  exports.processDeliveries = processDeliveries;
@@ -13,15 +14,25 @@ exports.retryDelivery = retryDelivery;
13
14
  exports.getDeliveryStats = getDeliveryStats;
14
15
  exports.listFailedDeliveries = listFailedDeliveries;
15
16
  const promises_1 = __importDefault(require("node:dns/promises"));
17
+ const node_http_1 = __importDefault(require("node:http"));
18
+ const node_https_1 = __importDefault(require("node:https"));
16
19
  const node_net_1 = __importDefault(require("node:net"));
17
20
  const pool_helpers_js_1 = require("../pool-helpers.js");
18
21
  const core_1 = require("@stratum-hq/core");
19
22
  const webhook_service_js_1 = require("./webhook-service.js");
20
23
  const webhook_signature_js_1 = require("../webhook-signature.js");
21
24
  const MAX_ATTEMPTS = 5;
25
+ const DELIVERY_TIMEOUT_MS = 10_000;
26
+ /** Deliveries claimed and sent concurrently per pass. */
27
+ const DELIVERY_BATCH_SIZE = 10;
22
28
  /**
23
- * Reserved, private, loopback, link-local, and cloud-metadata ranges a webhook
24
- * must never target (SSRF protection). BlockList compares parsed address bytes,
29
+ * How long a claimed delivery stays invisible to other workers. Longer than a
30
+ * delivery can take, so a row is only reclaimed if its worker died mid-flight.
31
+ */
32
+ const DELIVERY_LEASE_MS = 60_000;
33
+ /**
34
+ * Reserved, private, loopback, link-local, and cloud-metadata ranges, plus the
35
+ * IANA special-purpose ranges, that a webhook must never target (SSRF protection). BlockList compares parsed address bytes,
25
36
  * so it matches every textual notation of an address, and it also checks an
26
37
  * IPv4-mapped IPv6 literal against the IPv4 rules.
27
38
  */
@@ -29,15 +40,38 @@ const BLOCKED_IP_RANGES = new node_net_1.default.BlockList();
29
40
  // IPv4
30
41
  BLOCKED_IP_RANGES.addSubnet("0.0.0.0", 8, "ipv4"); // "this" network / unspecified
31
42
  BLOCKED_IP_RANGES.addSubnet("10.0.0.0", 8, "ipv4"); // RFC 1918
43
+ BLOCKED_IP_RANGES.addSubnet("100.64.0.0", 10, "ipv4"); // shared address space (CGNAT), incl. some cloud metadata
32
44
  BLOCKED_IP_RANGES.addSubnet("127.0.0.0", 8, "ipv4"); // loopback
33
45
  BLOCKED_IP_RANGES.addSubnet("169.254.0.0", 16, "ipv4"); // link-local, incl. cloud metadata
34
46
  BLOCKED_IP_RANGES.addSubnet("172.16.0.0", 12, "ipv4"); // RFC 1918
47
+ BLOCKED_IP_RANGES.addSubnet("192.0.0.0", 24, "ipv4"); // IETF protocol assignments
48
+ BLOCKED_IP_RANGES.addSubnet("192.0.2.0", 24, "ipv4"); // documentation (TEST-NET-1)
49
+ BLOCKED_IP_RANGES.addSubnet("192.31.196.0", 24, "ipv4"); // AS112-v4
50
+ BLOCKED_IP_RANGES.addSubnet("192.52.193.0", 24, "ipv4"); // AMT
51
+ BLOCKED_IP_RANGES.addSubnet("192.88.99.0", 24, "ipv4"); // deprecated 6to4 relay anycast
35
52
  BLOCKED_IP_RANGES.addSubnet("192.168.0.0", 16, "ipv4"); // RFC 1918
53
+ BLOCKED_IP_RANGES.addSubnet("192.175.48.0", 24, "ipv4"); // direct delegation AS112
54
+ BLOCKED_IP_RANGES.addSubnet("198.18.0.0", 15, "ipv4"); // benchmarking
55
+ BLOCKED_IP_RANGES.addSubnet("198.51.100.0", 24, "ipv4"); // documentation (TEST-NET-2)
56
+ BLOCKED_IP_RANGES.addSubnet("203.0.113.0", 24, "ipv4"); // documentation (TEST-NET-3)
57
+ BLOCKED_IP_RANGES.addSubnet("224.0.0.0", 4, "ipv4"); // multicast
58
+ BLOCKED_IP_RANGES.addSubnet("240.0.0.0", 4, "ipv4"); // reserved, incl. limited broadcast
36
59
  // IPv6
37
- BLOCKED_IP_RANGES.addAddress("::", "ipv6"); // unspecified
38
- BLOCKED_IP_RANGES.addAddress("::1", "ipv6"); // loopback
60
+ BLOCKED_IP_RANGES.addSubnet("::", 96, "ipv6"); // unspecified, loopback, deprecated IPv4-compatible
61
+ BLOCKED_IP_RANGES.addSubnet("64:ff9b::", 96, "ipv6"); // NAT64 well-known prefix (maps to IPv4)
62
+ BLOCKED_IP_RANGES.addSubnet("64:ff9b:1::", 48, "ipv6"); // local-use NAT64 (maps to IPv4)
63
+ BLOCKED_IP_RANGES.addSubnet("100::", 64, "ipv6"); // discard-only
64
+ BLOCKED_IP_RANGES.addSubnet("100:0:0:1::", 64, "ipv6"); // dummy prefix
65
+ BLOCKED_IP_RANGES.addSubnet("2001::", 23, "ipv6"); // IETF protocol assignments, incl. Teredo (maps to IPv4)
66
+ BLOCKED_IP_RANGES.addSubnet("2001:db8::", 32, "ipv6"); // documentation
67
+ BLOCKED_IP_RANGES.addSubnet("2002::", 16, "ipv6"); // 6to4 (maps to IPv4)
68
+ BLOCKED_IP_RANGES.addSubnet("2620:4f:8000::", 48, "ipv6"); // direct delegation AS112
69
+ BLOCKED_IP_RANGES.addSubnet("3fff::", 20, "ipv6"); // documentation
70
+ BLOCKED_IP_RANGES.addSubnet("5f00::", 16, "ipv6"); // SRv6 SIDs
39
71
  BLOCKED_IP_RANGES.addSubnet("fc00::", 7, "ipv6"); // unique-local (covers fc00::/8 and fd00::/8)
40
72
  BLOCKED_IP_RANGES.addSubnet("fe80::", 10, "ipv6"); // link-local
73
+ BLOCKED_IP_RANGES.addSubnet("fec0::", 10, "ipv6"); // deprecated site-local
74
+ BLOCKED_IP_RANGES.addSubnet("ff00::", 8, "ipv6"); // multicast
41
75
  const BLOCKED_HOSTNAMES = new Set([
42
76
  "localhost",
43
77
  "localhost.localdomain",
@@ -119,6 +153,75 @@ async function validateWebhookUrlWithDns(url) {
119
153
  }
120
154
  }
121
155
  }
156
+ /**
157
+ * Resolve a webhook host once and validate every address it resolves to.
158
+ * The caller connects only to the returned addresses.
159
+ */
160
+ async function resolveWebhookHost(hostname) {
161
+ const literal = unwrapHostLiteral(hostname);
162
+ const family = node_net_1.default.isIP(literal);
163
+ if (family !== 0) {
164
+ return [{ address: literal, family }]; // IP literal, already checked by validateWebhookUrl
165
+ }
166
+ let addresses;
167
+ try {
168
+ addresses = await promises_1.default.lookup(hostname, { all: true });
169
+ }
170
+ catch {
171
+ addresses = [];
172
+ }
173
+ if (addresses.length === 0) {
174
+ throw new core_1.WebhookUrlValidationError(`DNS resolution failed for webhook host: ${hostname}`);
175
+ }
176
+ for (const { address } of addresses) {
177
+ if (isBlockedIp(address)) {
178
+ throw new core_1.WebhookUrlValidationError(`Webhook URL hostname ${hostname} resolves to blocked IP ${address}`);
179
+ }
180
+ }
181
+ return addresses;
182
+ }
183
+ /**
184
+ * POST a webhook payload and return the HTTP status. The host is resolved once,
185
+ * every address is validated, and the socket connects only to those addresses
186
+ * (the client never resolves the name again), so a DNS answer that changes
187
+ * after validation cannot redirect the request. Redirects are not followed.
188
+ */
189
+ async function postWebhook(url, headers, body) {
190
+ validateWebhookUrl(url);
191
+ const target = new URL(url);
192
+ const signal = AbortSignal.timeout(DELIVERY_TIMEOUT_MS);
193
+ const addresses = await Promise.race([
194
+ resolveWebhookHost(target.hostname.toLowerCase()),
195
+ new Promise((_, reject) => {
196
+ signal.addEventListener("abort", () => reject(signal.reason), { once: true });
197
+ }),
198
+ ]);
199
+ const pinnedLookup = (_hostname, options, callback) => {
200
+ if (options.all) {
201
+ callback(null, addresses);
202
+ }
203
+ else {
204
+ callback(null, addresses[0].address, addresses[0].family);
205
+ }
206
+ };
207
+ const send = target.protocol === "https:" ? node_https_1.default.request : node_http_1.default.request;
208
+ return new Promise((resolve, reject) => {
209
+ const req = send(target, {
210
+ method: "POST",
211
+ headers: { ...headers, "Content-Length": String(Buffer.byteLength(body)) },
212
+ lookup: pinnedLookup,
213
+ signal,
214
+ }, (res) => {
215
+ // Only the status is used; drain the body. A timeout that fires while
216
+ // the body is still arriving must not surface as an unhandled error.
217
+ res.on("error", () => { });
218
+ res.resume();
219
+ resolve(res.statusCode ?? 0);
220
+ });
221
+ req.on("error", reject);
222
+ req.end(body);
223
+ });
224
+ }
122
225
  function retryDelayMs(attempts) {
123
226
  // attempts^2 * 5000ms: 5s, 20s, 45s, 80s, 125s
124
227
  return Math.pow(attempts, 2) * 5000;
@@ -156,32 +259,27 @@ async function deliverWebhook(webhook, event, deliveryId) {
156
259
  data: event.data,
157
260
  created_at: event.created_at,
158
261
  });
159
- // SSRF protection: validate URL with DNS rebinding check before making request
160
- await validateWebhookUrlWithDns(webhook.url);
161
- const rawSecret = (0, webhook_service_js_1.decryptSecret)(webhook.secret_hash);
162
- const timestamp = new Date().toISOString();
163
- const signature = (0, webhook_signature_js_1.signWebhookPayload)(rawSecret, timestamp, payload);
262
+ // Any failure, including URL validation and secret decryption, is reported
263
+ // as a failed attempt so it gets backoff and eventually reaches the DLQ.
164
264
  try {
165
- const response = await globalThis.fetch(webhook.url, {
166
- method: "POST",
167
- headers: {
168
- "Content-Type": "application/json",
169
- "X-Stratum-Event": event.type,
170
- "X-Stratum-Signature": signature,
171
- "X-Stratum-Delivery-ID": deliveryId,
172
- "X-Stratum-Timestamp": timestamp,
173
- },
174
- body: payload,
175
- redirect: "error",
176
- signal: AbortSignal.timeout(10_000),
177
- });
178
- if (response.ok) {
179
- return { success: true, responseCode: response.status, error: null };
265
+ const rawSecret = (0, webhook_service_js_1.decryptSecret)(webhook.secret_hash);
266
+ const timestamp = new Date().toISOString();
267
+ const signature = (0, webhook_signature_js_1.signWebhookPayload)(rawSecret, timestamp, payload);
268
+ // SSRF protection: resolves, validates and pins the address it connects to.
269
+ const status = await postWebhook(webhook.url, {
270
+ "Content-Type": "application/json",
271
+ "X-Stratum-Event": event.type,
272
+ "X-Stratum-Signature": signature,
273
+ "X-Stratum-Delivery-ID": deliveryId,
274
+ "X-Stratum-Timestamp": timestamp,
275
+ }, payload);
276
+ if (status >= 200 && status < 300) {
277
+ return { success: true, responseCode: status, error: null };
180
278
  }
181
279
  return {
182
280
  success: false,
183
- responseCode: response.status,
184
- error: `HTTP ${response.status}`,
281
+ responseCode: status,
282
+ error: `HTTP ${status}`,
185
283
  };
186
284
  }
187
285
  catch (err) {
@@ -189,61 +287,124 @@ async function deliverWebhook(webhook, event, deliveryId) {
189
287
  return { success: false, responseCode: null, error: message };
190
288
  }
191
289
  }
192
- async function processDeliveries(pool) {
193
- // Find pending deliveries due for delivery
194
- const deliveries = await (0, pool_helpers_js_1.withClient)(pool, async (client) => {
195
- const res = await client.query(`SELECT * FROM webhook_deliveries
196
- WHERE status = 'pending'
197
- AND (next_retry_at IS NULL OR next_retry_at <= now())
198
- ORDER BY created_at ASC
199
- LIMIT 100`);
200
- return res.rows;
290
+ /** In-flight delivery run per pool, so concurrent triggers share one worker loop. */
291
+ const activeRuns = new WeakMap();
292
+ const rerunRequested = new WeakSet();
293
+ /**
294
+ * Deliver every due pending delivery. At most one run is active per pool in
295
+ * this process; a trigger that arrives during a run joins it and makes it
296
+ * check for due deliveries once more before finishing.
297
+ */
298
+ function processDeliveries(pool) {
299
+ const active = activeRuns.get(pool);
300
+ if (active) {
301
+ rerunRequested.add(pool);
302
+ return active;
303
+ }
304
+ const run = (async () => {
305
+ try {
306
+ do {
307
+ rerunRequested.delete(pool);
308
+ while ((await deliverDueBatch(pool)) > 0) {
309
+ // keep going until nothing is due
310
+ }
311
+ } while (rerunRequested.has(pool));
312
+ }
313
+ finally {
314
+ activeRuns.delete(pool);
315
+ }
316
+ })();
317
+ activeRuns.set(pool, run);
318
+ return run;
319
+ }
320
+ /**
321
+ * Claim, deliver and record one batch. No database connection or transaction
322
+ * is held while a delivery is on the network: the claim and each result are
323
+ * separate short transactions. Returns the number of deliveries claimed.
324
+ */
325
+ async function deliverDueBatch(pool) {
326
+ const claimed = await claimDueDeliveries(pool);
327
+ await Promise.all(claimed.map((c) => deliverClaimed(pool, c).catch(() => {
328
+ // Non-fatal: the lease expires and the delivery is picked up again.
329
+ })));
330
+ return claimed.length;
331
+ }
332
+ /**
333
+ * Lease a batch of due deliveries: count the attempt and move next_retry_at
334
+ * past the lease so no other worker takes them. Deliveries are taken in turns
335
+ * across tenants (oldest first within a tenant), so one tenant's backlog does
336
+ * not crowd out everyone else's.
337
+ */
338
+ async function claimDueDeliveries(pool) {
339
+ return (0, pool_helpers_js_1.withTransaction)(pool, async (client) => {
340
+ const res = await client.query(`WITH due AS (
341
+ SELECT d.id, d.created_at,
342
+ row_number() OVER (PARTITION BY e.tenant_id ORDER BY d.created_at) AS turn
343
+ FROM webhook_deliveries d
344
+ JOIN webhook_events e ON e.id = d.event_id
345
+ WHERE d.status = 'pending'
346
+ AND (d.next_retry_at IS NULL OR d.next_retry_at <= now())
347
+ ), picked AS (
348
+ SELECT id FROM due ORDER BY turn, created_at LIMIT $2
349
+ )
350
+ UPDATE webhook_deliveries d
351
+ SET attempts = d.attempts + 1,
352
+ next_retry_at = now() + ($1 || ' milliseconds')::interval
353
+ WHERE d.id IN (
354
+ SELECT id FROM webhook_deliveries
355
+ WHERE id IN (SELECT id FROM picked)
356
+ AND status = 'pending'
357
+ AND (next_retry_at IS NULL OR next_retry_at <= now())
358
+ FOR UPDATE SKIP LOCKED
359
+ )
360
+ RETURNING d.*`, [DELIVERY_LEASE_MS, DELIVERY_BATCH_SIZE]);
361
+ if (res.rows.length === 0) {
362
+ return [];
363
+ }
364
+ const webhookRes = await client.query(`SELECT * FROM webhooks WHERE id = ANY($1)`, [res.rows.map((d) => d.webhook_id)]);
365
+ const eventRes = await client.query(`SELECT * FROM webhook_events WHERE id = ANY($1)`, [res.rows.map((d) => d.event_id)]);
366
+ const webhooks = new Map(webhookRes.rows.map((w) => [w.id, w]));
367
+ const events = new Map(eventRes.rows.map((e) => [e.id, e]));
368
+ return res.rows.map((delivery) => ({
369
+ delivery,
370
+ webhook: webhooks.get(delivery.webhook_id),
371
+ event: events.get(delivery.event_id),
372
+ }));
201
373
  });
202
- for (const delivery of deliveries) {
203
- await (0, pool_helpers_js_1.withTransaction)(pool, async (client) => {
204
- // Re-fetch delivery with row lock
205
- const lockRes = await client.query(`SELECT * FROM webhook_deliveries WHERE id = $1 AND status = 'pending' FOR UPDATE SKIP LOCKED`, [delivery.id]);
206
- if (lockRes.rows.length === 0) {
207
- return; // Already processed by another worker
208
- }
209
- const locked = lockRes.rows[0];
210
- // Fetch the webhook and event
211
- const webhookRes = await client.query(`SELECT * FROM webhooks WHERE id = $1`, [locked.webhook_id]);
212
- const eventRes = await client.query(`SELECT * FROM webhook_events WHERE id = $1`, [locked.event_id]);
213
- if (webhookRes.rows.length === 0 || eventRes.rows.length === 0) {
214
- // Webhook or event was deleted; mark failed
215
- await client.query(`UPDATE webhook_deliveries
216
- SET status = 'failed', last_error = 'Webhook or event not found', completed_at = now()
217
- WHERE id = $1`, [locked.id]);
218
- return;
219
- }
220
- const webhook = webhookRes.rows[0];
221
- const event = eventRes.rows[0];
222
- const attempts = locked.attempts + 1;
223
- const result = await deliverWebhook(webhook, event, locked.id);
224
- if (result.success) {
225
- await client.query(`UPDATE webhook_deliveries
226
- SET status = 'success', attempts = $1, response_code = $2,
227
- last_error = NULL, completed_at = now()
228
- WHERE id = $3`, [attempts, result.responseCode, locked.id]);
229
- }
230
- else if (attempts >= MAX_ATTEMPTS) {
231
- await client.query(`UPDATE webhook_deliveries
232
- SET status = 'failed', attempts = $1, response_code = $2,
233
- last_error = $3, completed_at = now()
234
- WHERE id = $4`, [attempts, result.responseCode, result.error, locked.id]);
235
- }
236
- else {
237
- const nextRetryMs = retryDelayMs(attempts);
238
- await client.query(`UPDATE webhook_deliveries
239
- SET attempts = $1, response_code = $2, last_error = $3,
240
- next_retry_at = now() + ($4 || ' milliseconds')::interval
241
- WHERE id = $5`, [attempts, result.responseCode, result.error, nextRetryMs, locked.id]);
242
- }
243
- }).catch(() => {
244
- // Per-delivery failures are non-fatal; continue processing others
245
- });
374
+ }
375
+ async function deliverClaimed(pool, claimed) {
376
+ const { delivery, webhook, event } = claimed;
377
+ if (!webhook || !event) {
378
+ // Webhook or event was deleted; mark failed
379
+ await (0, pool_helpers_js_1.withClient)(pool, (client) => client.query(`UPDATE webhook_deliveries
380
+ SET status = 'failed', last_error = 'Webhook or event not found', completed_at = now()
381
+ WHERE id = $1 AND status = 'pending'`, [delivery.id]));
382
+ return;
246
383
  }
384
+ // The attempt was already counted when the delivery was claimed.
385
+ const attempts = delivery.attempts;
386
+ const result = await deliverWebhook(webhook, event, delivery.id);
387
+ await (0, pool_helpers_js_1.withClient)(pool, async (client) => {
388
+ if (result.success) {
389
+ await client.query(`UPDATE webhook_deliveries
390
+ SET status = 'success', response_code = $1,
391
+ last_error = NULL, completed_at = now()
392
+ WHERE id = $2 AND status = 'pending'`, [result.responseCode, delivery.id]);
393
+ }
394
+ else if (attempts >= MAX_ATTEMPTS) {
395
+ await client.query(`UPDATE webhook_deliveries
396
+ SET status = 'failed', response_code = $1,
397
+ last_error = $2, completed_at = now()
398
+ WHERE id = $3 AND status = 'pending'`, [result.responseCode, result.error, delivery.id]);
399
+ }
400
+ else {
401
+ const nextRetryMs = retryDelayMs(attempts);
402
+ await client.query(`UPDATE webhook_deliveries
403
+ SET response_code = $1, last_error = $2,
404
+ next_retry_at = now() + ($3 || ' milliseconds')::interval
405
+ WHERE id = $4 AND status = 'pending'`, [result.responseCode, result.error, nextRetryMs, delivery.id]);
406
+ }
407
+ });
247
408
  }
248
409
  async function retryFailedDeliveries(pool, tenantId) {
249
410
  const result = await (0, pool_helpers_js_1.withClient)(pool, async (client) => {
@@ -1 +1 @@
1
- {"version":3,"file":"event-service.js","sourceRoot":"","sources":["../../src/services/event-service.ts"],"names":[],"mappings":";;;;;AAsDA,gDAwBC;AAMD,8DAsCC;AAwCD,8BAuCC;AAED,wCAgDC;AAED,8CAmFC;AAED,sDA4BC;AAED,sCAgBC;AASD,4CA0BC;AAED,oDA8BC;AAncD,iEAAoC;AACpC,wDAA2B;AAE3B,wDAAiE;AACjE,2CAA+E;AAC/E,6DAA0E;AAC1E,kEAA6D;AAE7D,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,IAAI,kBAAG,CAAC,SAAS,EAAE,CAAC;AAC9C,OAAO;AACP,iBAAiB,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,+BAA+B;AAClF,iBAAiB,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW;AAC/D,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW;AAChE,iBAAiB,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,mCAAmC;AAC3F,iBAAiB,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW;AAClE,iBAAiB,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW;AACnE,OAAO;AACP,iBAAiB,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc;AAC1D,iBAAiB,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW;AACxD,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,8CAA8C;AAChG,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa;AAEhE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,WAAW;IACX,uBAAuB;IACvB,0BAA0B,EAAE,eAAe;IAC3C,eAAe,EAAE,gBAAgB;IACjC,iBAAiB,EAAE,qBAAqB;CACzC,CAAC,CAAC;AAEH,uFAAuF;AACvF,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED,wFAAwF;AACxF,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,kBAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5B,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,CAAC,uDAAuD;IACvE,CAAC;IACD,OAAO,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,8EAA8E;AAC9E,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gCAAyB,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,wBAAwB;IACxB,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,gCAAyB,CAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAE/C,iCAAiC;IACjC,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,gCAAyB,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,0BAA0B;IAC1B,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,gCAAyB,CAAC,oDAAoD,QAAQ,EAAE,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,yBAAyB,CAAC,GAAW;IACzD,mCAAmC;IACnC,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAExB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAE/C,wEAAwE;IACxE,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtE,OAAO;IACT,CAAC;IAED,sEAAsE;IACtE,IAAI,SAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACpD,kBAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACtB,kBAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACvB,CAAC,CAAC;QACH,SAAS,GAAG;YACV,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CAAC;QACF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,MAAM,IAAI,gCAAyB,CAAC,2CAA2C,QAAQ,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,gCAAyB,CACjC,wBAAwB,QAAQ,2BAA2B,EAAE,EAAE,CAChE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,+CAA+C;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACtC,CAAC;AAmCM,KAAK,UAAU,SAAS,CAC7B,IAAa,EACb,IAAiB,EACjB,QAAgB,EAChB,IAA6B;IAE7B,sBAAsB;IACtB,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACvD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B;;mBAEa,EACb,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CACvC,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,yBAAyB;IACzB,MAAM,QAAQ,GAAG,MAAM,IAAA,wCAAmB,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEjE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,oDAAoD;IACpD,MAAM,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACtC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,CAAC,KAAK,CAChB;uCAC+B,EAC/B,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0CAA0C;IAC1C,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACjC,oEAAoE;IACtE,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,OAAmB,EACnB,KAAsB,EACtB,UAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;IAEH,+EAA+E;IAC/E,MAAM,yBAAyB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE7C,MAAM,SAAS,GAAG,IAAA,kCAAa,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAA,yCAAkB,EAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAEpE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;YACnD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,iBAAiB,EAAE,KAAK,CAAC,IAAI;gBAC7B,qBAAqB,EAAE,SAAS;gBAChC,uBAAuB,EAAE,UAAU;gBACnC,qBAAqB,EAAE,SAAS;aACjC;YACD,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACvE,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,QAAQ,CAAC,MAAM;YAC7B,KAAK,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE;SACjC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAChE,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,IAAa;IACnD,2CAA2C;IAC3C,MAAM,UAAU,GAAG,MAAM,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACzD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B;;;;iBAIW,CACZ,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,MAAM,IAAA,iCAAe,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC3C,kCAAkC;YAClC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAChC,8FAA8F,EAC9F,CAAC,QAAQ,CAAC,EAAE,CAAC,CACd,CAAC;YACF,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,sCAAsC;YAChD,CAAC;YAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE/B,8BAA8B;YAC9B,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,KAAK,CACnC,sCAAsC,EACtC,CAAC,MAAM,CAAC,UAAU,CAAC,CACpB,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC,4CAA4C,EAC5C,CAAC,MAAM,CAAC,QAAQ,CAAC,CAClB,CAAC;YAEF,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/D,4CAA4C;gBAC5C,MAAM,MAAM,CAAC,KAAK,CAChB;;yBAEe,EACf,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAC;gBACF,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAE/D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,MAAM,CAAC,KAAK,CAChB;;;yBAGe,EACf,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAC3C,CAAC;YACJ,CAAC;iBAAM,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;gBACpC,MAAM,MAAM,CAAC,KAAK,CAChB;;;yBAGe,EACf,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CACzD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC3C,MAAM,MAAM,CAAC,KAAK,CAChB;;;yBAGe,EACf,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,CACtE,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACZ,kEAAkE;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAC,IAAa,EAAE,QAAiB;IAC1E,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACrD,IAAI,KAAa,CAAC;QAClB,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,GAAG;;;;;8CAKgC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,KAAK,GAAG;;;;;8CAKgC,CAAC;QAC3C,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAoB,KAAK,EAAE,MAAM,CAAC,CAAC;QACjE,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,IAAa,EAAE,UAAkB;IACnE,MAAM,OAAO,GAAG,MAAM,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACtD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B;;;oBAGc,EACd,CAAC,UAAU,CAAC,CACb,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,CAAC;QACZ,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AASM,KAAK,UAAU,gBAAgB,CAAC,IAAa,EAAE,QAAiB;IACrE,OAAO,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACvC,IAAI,KAAa,CAAC;QAClB,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,GAAG;;yDAE2C,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,0EAA0E,CAAC;QACrF,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAoC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjF,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7C,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO;YACL,KAAK;YACL,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAC/B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAC/B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,IAAa,EACb,KAAK,GAAG,GAAG,EACX,QAAiB;IAEjB,OAAO,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACvC,IAAI,KAAa,CAAC;QAClB,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,GAAG;;;;;;wBAMU,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,KAAK,GAAG;;;;;;wBAMU,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAA0B,KAAK,EAAE,MAAM,CAAC,CAAC;QACvE,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"event-service.js","sourceRoot":"","sources":["../../src/services/event-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"permission-service.d.ts","sourceRoot":"","sources":["../../src/services/permission-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EAQxB,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CA2F7C;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CA0C3B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAiE3B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA0Df"}
1
+ {"version":3,"file":"permission-service.d.ts","sourceRoot":"","sources":["../../src/services/permission-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EASxB,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CA2F7C;AAuBD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CA2C3B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CA4E3B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA4Df"}
@@ -85,6 +85,20 @@ async function resolvePermissions(pool, tenantId) {
85
85
  return Object.fromEntries(resolved);
86
86
  });
87
87
  }
88
+ /**
89
+ * Enforce ancestor delegation modes on a descendant write. A LOCKED ancestor
90
+ * blocks the key entirely. An INHERITED ancestor lets descendants override the
91
+ * value only: they may not change the mode or re-delegate the key.
92
+ */
93
+ function assertAncestorsAllowMode(ancestorPolicies, key, mode) {
94
+ const locker = ancestorPolicies.find((p) => p.mode === core_1.PermissionMode.LOCKED);
95
+ if (locker) {
96
+ throw new core_1.PermissionLockedError(key, locker.source_tenant_id);
97
+ }
98
+ if (ancestorPolicies.length > 0 && mode !== core_1.PermissionMode.INHERITED) {
99
+ throw new core_1.ForbiddenError(`Permission '${key}' is INHERITED from an ancestor; descendants may override its value but not change its mode or re-delegate it`);
100
+ }
101
+ }
88
102
  /**
89
103
  * Create a new permission policy for a tenant.
90
104
  * Rejects if the key is already LOCKED by an ancestor.
@@ -99,14 +113,11 @@ async function createPermission(pool, tenantId, input) {
99
113
  const ancestorIds = (0, core_1.parseAncestryPath)(tenantRes.rows[0].ancestry_path);
100
114
  // Exclude self (ancestry_path does not include self)
101
115
  if (ancestorIds.length > 0) {
102
- const lockedRes = await client.query(`SELECT * FROM permission_policies
116
+ const restrictingRes = await client.query(`SELECT * FROM permission_policies
103
117
  WHERE tenant_id = ANY($1)
104
118
  AND key = $2
105
- AND mode = $3`, [ancestorIds, input.key, core_1.PermissionMode.LOCKED]);
106
- if (lockedRes.rows.length > 0) {
107
- const locker = lockedRes.rows[0];
108
- throw new core_1.PermissionLockedError(input.key, locker.source_tenant_id);
109
- }
119
+ AND mode = ANY($3)`, [ancestorIds, input.key, [core_1.PermissionMode.LOCKED, core_1.PermissionMode.INHERITED]]);
120
+ assertAncestorsAllowMode(restrictingRes.rows, input.key, input.mode ?? core_1.PermissionMode.INHERITED);
110
121
  }
111
122
  const res = await client.query(`INSERT INTO permission_policies (tenant_id, key, value, mode, revocation_mode, source_tenant_id)
112
123
  VALUES ($1, $2, $3, $4, $5, $1)
@@ -137,14 +148,18 @@ async function updatePermission(pool, tenantId, policyId, input) {
137
148
  }
138
149
  const ancestorIds = (0, core_1.parseAncestryPath)(tenantRes.rows[0].ancestry_path);
139
150
  if (ancestorIds.length > 0) {
140
- const lockedRes = await client.query(`SELECT * FROM permission_policies
151
+ const restrictingRes = await client.query(`SELECT * FROM permission_policies
141
152
  WHERE tenant_id = ANY($1)
142
153
  AND key = $2
143
- AND mode = $3`, [ancestorIds, current.key, core_1.PermissionMode.LOCKED]);
144
- if (lockedRes.rows.length > 0) {
145
- const locker = lockedRes.rows[0];
146
- throw new core_1.PermissionLockedError(current.key, locker.source_tenant_id);
147
- }
154
+ AND mode = ANY($3)`, [ancestorIds, current.key, [core_1.PermissionMode.LOCKED, core_1.PermissionMode.INHERITED]]);
155
+ assertAncestorsAllowMode(restrictingRes.rows, current.key, input.mode ?? current.mode);
156
+ }
157
+ // A PERMANENT policy cannot be deleted, so it must not be possible to
158
+ // switch it to a deletable revocation mode either.
159
+ if (current.revocation_mode === core_1.RevocationMode.PERMANENT &&
160
+ input.revocation_mode !== undefined &&
161
+ input.revocation_mode !== core_1.RevocationMode.PERMANENT) {
162
+ throw new core_1.PermissionRevocationDeniedError(current.key);
148
163
  }
149
164
  const sets = [];
150
165
  const values = [];
@@ -193,9 +208,11 @@ async function deletePermission(pool, tenantId, policyId) {
193
208
  WHERE id != $1
194
209
  AND (ancestry_path LIKE '%/' || $1 || '/%' OR ancestry_path LIKE '%/' || $1)`, [tenantId]);
195
210
  const descendantIds = descendantsRes.rows.map((r) => r.id);
211
+ // A descendant's own PERMANENT policy on the same key is not
212
+ // revocable, so the cascade leaves it in place.
196
213
  if (descendantIds.length > 0) {
197
214
  await client.query(`DELETE FROM permission_policies
198
- WHERE tenant_id = ANY($1) AND key = $2`, [descendantIds, policy.key]);
215
+ WHERE tenant_id = ANY($1) AND key = $2 AND revocation_mode != $3`, [descendantIds, policy.key, core_1.RevocationMode.PERMANENT]);
199
216
  }
200
217
  await client.query(`DELETE FROM permission_policies WHERE id = $1`, [policyId]);
201
218
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"permission-service.js","sourceRoot":"","sources":["../../src/services/permission-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permission-service.js","sourceRoot":"","sources":["../../src/services/permission-service.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,13 @@ export declare function purgeExpiredData(pool: pg.Pool, retentionDays?: number):
8
8
  }>;
9
9
  /**
10
10
  * GDPR Article 17 — Right to Erasure.
11
- * Hard-delete ALL data belonging to a specific tenant, in correct FK order.
11
+ * Hard-delete ALL data belonging to a specific tenant, in correct FK order,
12
+ * including its own schema (SCHEMA_PER_TENANT) or database (DB_PER_TENANT).
13
+ *
14
+ * The schema is dropped in the same transaction as the rows, so both go or
15
+ * neither does. DROP DATABASE cannot run in a transaction, so the database is
16
+ * dropped first: if that fails nothing has changed, and if removing the rows
17
+ * then fails, purging again completes (the drop is IF EXISTS).
12
18
  */
13
19
  export declare function purgeTenant(pool: pg.Pool, tenantId: string): Promise<void>;
14
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"retention-service.d.ts","sourceRoot":"","sources":["../../src/services/retention-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAMpB;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,aAAa,GAAE,MAA+B,GAC7C,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CA+BpC;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA2BlC"}
1
+ {"version":3,"file":"retention-service.d.ts","sourceRoot":"","sources":["../../src/services/retention-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAOpB;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,aAAa,GAAE,MAA+B,GAC7C,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CA+BpC;AA+BD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA4Df;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA2BlC"}