@nestarc/webhook 0.12.1 → 0.13.1
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.
- package/README.md +154 -0
- package/dist/adapters/fetch-http-client.d.ts +2 -2
- package/dist/adapters/fetch-http-client.d.ts.map +1 -1
- package/dist/adapters/fetch-http-client.js +165 -29
- package/dist/adapters/fetch-http-client.js.map +1 -1
- package/dist/adapters/prisma-delivery.repository.d.ts +9 -3
- package/dist/adapters/prisma-delivery.repository.d.ts.map +1 -1
- package/dist/adapters/prisma-delivery.repository.js +228 -19
- package/dist/adapters/prisma-delivery.repository.js.map +1 -1
- package/dist/adapters/prisma-endpoint.repository.js +1 -1
- package/dist/adapters/prisma-event.repository.d.ts +3 -1
- package/dist/adapters/prisma-event.repository.d.ts.map +1 -1
- package/dist/adapters/prisma-event.repository.js +36 -2
- package/dist/adapters/prisma-event.repository.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/webhook-delivery.interface.d.ts +26 -0
- package/dist/interfaces/webhook-delivery.interface.d.ts.map +1 -1
- package/dist/interfaces/webhook-options.interface.d.ts +27 -0
- package/dist/interfaces/webhook-options.interface.d.ts.map +1 -1
- package/dist/ports/webhook-delivery.repository.d.ts +6 -2
- package/dist/ports/webhook-delivery.repository.d.ts.map +1 -1
- package/dist/ports/webhook-event.repository.d.ts +6 -0
- package/dist/ports/webhook-event.repository.d.ts.map +1 -1
- package/dist/ports/webhook-http-client.d.ts +8 -1
- package/dist/ports/webhook-http-client.d.ts.map +1 -1
- package/dist/webhook.admin.service.d.ts +4 -2
- package/dist/webhook.admin.service.d.ts.map +1 -1
- package/dist/webhook.admin.service.js +8 -2
- package/dist/webhook.admin.service.js.map +1 -1
- package/dist/webhook.delivery-admin.service.d.ts +4 -2
- package/dist/webhook.delivery-admin.service.d.ts.map +1 -1
- package/dist/webhook.delivery-admin.service.js +14 -2
- package/dist/webhook.delivery-admin.service.js.map +1 -1
- package/dist/webhook.dispatcher.d.ts.map +1 -1
- package/dist/webhook.dispatcher.js +5 -2
- package/dist/webhook.dispatcher.js.map +1 -1
- package/dist/webhook.module.d.ts.map +1 -1
- package/dist/webhook.module.js +6 -2
- package/dist/webhook.module.js.map +1 -1
- package/dist/webhook.retention-admin.service.d.ts +10 -0
- package/dist/webhook.retention-admin.service.d.ts.map +1 -0
- package/dist/webhook.retention-admin.service.js +50 -0
- package/dist/webhook.retention-admin.service.js.map +1 -0
- package/dist/webhook.service.d.ts +7 -4
- package/dist/webhook.service.d.ts.map +1 -1
- package/dist/webhook.service.js +40 -10
- package/dist/webhook.service.js.map +1 -1
- package/dist/webhook.signer.d.ts +5 -0
- package/dist/webhook.signer.d.ts.map +1 -1
- package/dist/webhook.signer.js +14 -0
- package/dist/webhook.signer.js.map +1 -1
- package/dist/webhook.url-validator.d.ts +1 -1
- package/dist/webhook.url-validator.d.ts.map +1 -1
- package/dist/webhook.url-validator.js +145 -51
- package/dist/webhook.url-validator.js.map +1 -1
- package/package.json +23 -12
- package/src/sql/create-webhook-tables.sql +11 -5
- package/src/sql/migrations/v0.13.0.sql +11 -0
|
@@ -41,9 +41,11 @@ function normalizeBacklogNumber(value, field) {
|
|
|
41
41
|
let PrismaDeliveryRepository = class PrismaDeliveryRepository {
|
|
42
42
|
prisma;
|
|
43
43
|
vault;
|
|
44
|
-
|
|
44
|
+
redaction;
|
|
45
|
+
constructor(prisma, vault, redaction) {
|
|
45
46
|
this.prisma = prisma;
|
|
46
47
|
this.vault = vault;
|
|
48
|
+
this.redaction = redaction;
|
|
47
49
|
}
|
|
48
50
|
async createDeliveriesInTransaction(tx, eventId, endpointIds, maxAttempts) {
|
|
49
51
|
await tx.$executeRawUnsafe(`INSERT INTO webhook_deliveries (
|
|
@@ -74,7 +76,11 @@ let PrismaDeliveryRepository = class PrismaDeliveryRepository {
|
|
|
74
76
|
ELSE NULL
|
|
75
77
|
END
|
|
76
78
|
FROM webhook_endpoints e
|
|
77
|
-
|
|
79
|
+
JOIN webhook_events ev ON ev.id = $1::uuid
|
|
80
|
+
WHERE e.id = ANY($2::uuid[])
|
|
81
|
+
AND e.active = true
|
|
82
|
+
AND (ev.tenant_id IS NULL OR e.tenant_id = ev.tenant_id)
|
|
83
|
+
AND (ev.event_type = ANY(e.events) OR '*' = ANY(e.events))`, eventId, endpointIds, maxAttempts);
|
|
78
84
|
}
|
|
79
85
|
async runInTransaction(fn) {
|
|
80
86
|
return this.prisma.$transaction(fn);
|
|
@@ -134,45 +140,48 @@ let PrismaDeliveryRepository = class PrismaDeliveryRepository {
|
|
|
134
140
|
return rows;
|
|
135
141
|
}
|
|
136
142
|
async markSent(deliveryId, attempts, result) {
|
|
143
|
+
const sanitizedResult = this.sanitizeDeliveryResult(deliveryId, result);
|
|
137
144
|
await this.prisma.$transaction(async (tx) => {
|
|
138
145
|
await tx.$executeRaw `
|
|
139
146
|
UPDATE webhook_deliveries
|
|
140
147
|
SET status = 'SENT', attempts = ${attempts},
|
|
141
148
|
last_attempt_at = NOW(), completed_at = NOW(),
|
|
142
|
-
response_status = ${
|
|
143
|
-
response_body = ${
|
|
144
|
-
latency_ms = ${
|
|
149
|
+
response_status = ${sanitizedResult.statusCode ?? null},
|
|
150
|
+
response_body = ${sanitizedResult.body ?? null},
|
|
151
|
+
latency_ms = ${sanitizedResult.latencyMs}
|
|
145
152
|
WHERE id = ${deliveryId}::uuid`;
|
|
146
|
-
await this.appendAttemptLog(tx, deliveryId, attempts, 'SENT',
|
|
153
|
+
await this.appendAttemptLog(tx, deliveryId, attempts, 'SENT', sanitizedResult);
|
|
147
154
|
});
|
|
148
155
|
}
|
|
149
156
|
async markFailed(deliveryId, attempts, result) {
|
|
157
|
+
const sanitizedResult = this.sanitizeDeliveryResult(deliveryId, result);
|
|
150
158
|
await this.prisma.$transaction(async (tx) => {
|
|
151
159
|
await tx.$executeRaw `
|
|
152
160
|
UPDATE webhook_deliveries
|
|
153
161
|
SET status = 'FAILED', attempts = ${attempts},
|
|
154
162
|
last_attempt_at = NOW(), completed_at = NOW(),
|
|
155
163
|
next_attempt_at = NULL,
|
|
156
|
-
response_status = ${
|
|
157
|
-
response_body = ${
|
|
158
|
-
latency_ms = ${
|
|
159
|
-
last_error = ${
|
|
164
|
+
response_status = ${sanitizedResult.statusCode ?? null},
|
|
165
|
+
response_body = ${sanitizedResult.body ?? null},
|
|
166
|
+
latency_ms = ${sanitizedResult.latencyMs},
|
|
167
|
+
last_error = ${sanitizedResult.error ?? null}
|
|
160
168
|
WHERE id = ${deliveryId}::uuid`;
|
|
161
|
-
await this.appendAttemptLog(tx, deliveryId, attempts, 'FAILED',
|
|
169
|
+
await this.appendAttemptLog(tx, deliveryId, attempts, 'FAILED', sanitizedResult);
|
|
162
170
|
});
|
|
163
171
|
}
|
|
164
172
|
async markRetry(deliveryId, attempts, nextAt, result) {
|
|
173
|
+
const sanitizedResult = this.sanitizeDeliveryResult(deliveryId, result);
|
|
165
174
|
await this.prisma.$transaction(async (tx) => {
|
|
166
175
|
await tx.$executeRaw `
|
|
167
176
|
UPDATE webhook_deliveries
|
|
168
177
|
SET status = 'PENDING', attempts = ${attempts},
|
|
169
178
|
last_attempt_at = NOW(), next_attempt_at = ${nextAt},
|
|
170
|
-
response_status = ${
|
|
171
|
-
response_body = ${
|
|
172
|
-
latency_ms = ${
|
|
173
|
-
last_error = ${
|
|
179
|
+
response_status = ${sanitizedResult.statusCode ?? null},
|
|
180
|
+
response_body = ${sanitizedResult.body ?? null},
|
|
181
|
+
latency_ms = ${sanitizedResult.latencyMs},
|
|
182
|
+
last_error = ${sanitizedResult.error ?? null}
|
|
174
183
|
WHERE id = ${deliveryId}::uuid`;
|
|
175
|
-
await this.appendAttemptLog(tx, deliveryId, attempts, 'PENDING',
|
|
184
|
+
await this.appendAttemptLog(tx, deliveryId, attempts, 'PENDING', sanitizedResult);
|
|
176
185
|
});
|
|
177
186
|
}
|
|
178
187
|
async recoverStaleSending(stalenessMinutes) {
|
|
@@ -357,13 +366,198 @@ let PrismaDeliveryRepository = class PrismaDeliveryRepository {
|
|
|
357
366
|
WHERE delivery_id = ${deliveryId}::uuid
|
|
358
367
|
ORDER BY attempt_number ASC`;
|
|
359
368
|
}
|
|
360
|
-
async retryDelivery(deliveryId) {
|
|
369
|
+
async retryDelivery(deliveryId, _options) {
|
|
361
370
|
const result = await this.prisma.$executeRaw `
|
|
362
371
|
UPDATE webhook_deliveries
|
|
363
|
-
SET status = 'PENDING',
|
|
372
|
+
SET status = 'PENDING',
|
|
373
|
+
next_attempt_at = NOW(),
|
|
374
|
+
max_attempts = GREATEST(max_attempts, attempts + 1)
|
|
364
375
|
WHERE id = ${deliveryId}::uuid AND status = 'FAILED'`;
|
|
365
376
|
return result > 0;
|
|
366
377
|
}
|
|
378
|
+
async retryFailedDeliveries(filters, _options) {
|
|
379
|
+
if (filters.status && filters.status !== 'FAILED') {
|
|
380
|
+
return { matched: 0, retried: 0, skipped: 0 };
|
|
381
|
+
}
|
|
382
|
+
const limit = filters.limit ?? 100;
|
|
383
|
+
if (!Number.isInteger(limit) || limit < 1 || limit > 1000) {
|
|
384
|
+
throw new Error('Bulk retry limit must be between 1 and 1000');
|
|
385
|
+
}
|
|
386
|
+
const conditions = [`d.status = 'FAILED'`];
|
|
387
|
+
const values = [];
|
|
388
|
+
let paramIndex = 1;
|
|
389
|
+
if (filters.endpointId) {
|
|
390
|
+
conditions.push(`d.endpoint_id = $${paramIndex++}::uuid`);
|
|
391
|
+
values.push(filters.endpointId);
|
|
392
|
+
}
|
|
393
|
+
if (filters.eventType) {
|
|
394
|
+
conditions.push(`ev.event_type = $${paramIndex++}`);
|
|
395
|
+
values.push(filters.eventType);
|
|
396
|
+
}
|
|
397
|
+
if (filters.since) {
|
|
398
|
+
conditions.push(`d.completed_at >= $${paramIndex++}`);
|
|
399
|
+
values.push(filters.since);
|
|
400
|
+
}
|
|
401
|
+
if (filters.until) {
|
|
402
|
+
conditions.push(`d.completed_at <= $${paramIndex++}`);
|
|
403
|
+
values.push(filters.until);
|
|
404
|
+
}
|
|
405
|
+
values.push(limit);
|
|
406
|
+
const query = `
|
|
407
|
+
WITH candidates AS (
|
|
408
|
+
SELECT d.id
|
|
409
|
+
FROM webhook_deliveries d
|
|
410
|
+
JOIN webhook_events ev ON ev.id = d.event_id
|
|
411
|
+
WHERE ${conditions.join(' AND ')}
|
|
412
|
+
ORDER BY d.completed_at DESC NULLS LAST, d.id
|
|
413
|
+
LIMIT $${paramIndex}
|
|
414
|
+
FOR UPDATE SKIP LOCKED
|
|
415
|
+
),
|
|
416
|
+
updated AS (
|
|
417
|
+
UPDATE webhook_deliveries d
|
|
418
|
+
SET status = 'PENDING',
|
|
419
|
+
next_attempt_at = NOW(),
|
|
420
|
+
max_attempts = GREATEST(max_attempts, attempts + 1)
|
|
421
|
+
WHERE d.id IN (SELECT id FROM candidates)
|
|
422
|
+
RETURNING d.id
|
|
423
|
+
)
|
|
424
|
+
SELECT
|
|
425
|
+
(SELECT COUNT(*) FROM candidates) AS matched,
|
|
426
|
+
(SELECT COUNT(*) FROM updated) AS retried,
|
|
427
|
+
(SELECT COUNT(*) FROM candidates) - (SELECT COUNT(*) FROM updated) AS skipped`;
|
|
428
|
+
const rows = (await this.prisma.$queryRawUnsafe(query, ...values));
|
|
429
|
+
const [result] = rows;
|
|
430
|
+
return {
|
|
431
|
+
matched: normalizeBacklogNumber(result?.matched ?? 0, 'matched'),
|
|
432
|
+
retried: normalizeBacklogNumber(result?.retried ?? 0, 'retried'),
|
|
433
|
+
skipped: normalizeBacklogNumber(result?.skipped ?? 0, 'skipped'),
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
async replayEvent(eventId, options) {
|
|
437
|
+
const tenantId = options?.tenantId ?? null;
|
|
438
|
+
const endpointIds = options?.endpointIds ?? null;
|
|
439
|
+
const [result] = await this.prisma.$queryRaw `
|
|
440
|
+
WITH source_event AS (
|
|
441
|
+
SELECT ev.id, ev.event_type, ev.tenant_id
|
|
442
|
+
FROM webhook_events ev
|
|
443
|
+
WHERE ev.id = ${eventId}::uuid
|
|
444
|
+
AND ev.payload_purged_at IS NULL
|
|
445
|
+
AND (${tenantId}::text IS NULL OR ev.tenant_id = ${tenantId})
|
|
446
|
+
),
|
|
447
|
+
selected_endpoints AS (
|
|
448
|
+
SELECT
|
|
449
|
+
e.id,
|
|
450
|
+
e.url,
|
|
451
|
+
e.secret,
|
|
452
|
+
CASE
|
|
453
|
+
WHEN e.previous_secret IS NOT NULL
|
|
454
|
+
AND e.previous_secret_expires_at IS NOT NULL
|
|
455
|
+
AND e.previous_secret_expires_at > NOW()
|
|
456
|
+
THEN e.previous_secret
|
|
457
|
+
ELSE NULL
|
|
458
|
+
END AS secondary_secret
|
|
459
|
+
FROM webhook_endpoints e
|
|
460
|
+
JOIN source_event ev ON true
|
|
461
|
+
WHERE e.active = true
|
|
462
|
+
AND (ev.tenant_id IS NULL OR e.tenant_id = ev.tenant_id)
|
|
463
|
+
AND (${tenantId}::text IS NULL OR e.tenant_id = ${tenantId})
|
|
464
|
+
AND (${endpointIds}::uuid[] IS NULL OR e.id = ANY(${endpointIds}::uuid[]))
|
|
465
|
+
AND (ev.event_type = ANY(e.events) OR '*' = ANY(e.events))
|
|
466
|
+
),
|
|
467
|
+
inserted AS (
|
|
468
|
+
INSERT INTO webhook_deliveries (
|
|
469
|
+
event_id,
|
|
470
|
+
endpoint_id,
|
|
471
|
+
status,
|
|
472
|
+
attempts,
|
|
473
|
+
max_attempts,
|
|
474
|
+
next_attempt_at,
|
|
475
|
+
endpoint_url_snapshot,
|
|
476
|
+
signing_secret_snapshot,
|
|
477
|
+
secondary_signing_secret_snapshot
|
|
478
|
+
)
|
|
479
|
+
SELECT
|
|
480
|
+
${eventId}::uuid,
|
|
481
|
+
e.id,
|
|
482
|
+
'PENDING',
|
|
483
|
+
0,
|
|
484
|
+
${webhook_constants_1.DEFAULT_MAX_RETRIES},
|
|
485
|
+
NOW(),
|
|
486
|
+
e.url,
|
|
487
|
+
e.secret,
|
|
488
|
+
e.secondary_secret
|
|
489
|
+
FROM selected_endpoints e
|
|
490
|
+
RETURNING endpoint_id
|
|
491
|
+
)
|
|
492
|
+
SELECT
|
|
493
|
+
${eventId} AS "eventId",
|
|
494
|
+
(SELECT COUNT(*) FROM source_event) AS "sourceEventCount",
|
|
495
|
+
COUNT(inserted.endpoint_id) AS "deliveriesCreated",
|
|
496
|
+
COALESCE(array_agg(inserted.endpoint_id::text)
|
|
497
|
+
FILTER (WHERE inserted.endpoint_id IS NOT NULL), ARRAY[]::text[]) AS "endpointIds"
|
|
498
|
+
FROM inserted`;
|
|
499
|
+
if (normalizeBacklogNumber(result?.sourceEventCount ?? 0, 'sourceEventCount') === 0) {
|
|
500
|
+
throw new Error('Webhook event is missing or its payload has been purged');
|
|
501
|
+
}
|
|
502
|
+
return {
|
|
503
|
+
eventId: result.eventId,
|
|
504
|
+
deliveriesCreated: normalizeBacklogNumber(result.deliveriesCreated, 'deliveriesCreated'),
|
|
505
|
+
endpointIds: result.endpointIds ?? [],
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
async purgeExpiredData(options, now = new Date()) {
|
|
509
|
+
const eventPayloadRetentionDays = options.eventPayloadRetentionDays ?? null;
|
|
510
|
+
const deliveryResponseBodyRetentionDays = options.deliveryResponseBodyRetentionDays ?? null;
|
|
511
|
+
const attemptResponseBodyRetentionDays = options.attemptResponseBodyRetentionDays ?? null;
|
|
512
|
+
if (eventPayloadRetentionDays == null &&
|
|
513
|
+
deliveryResponseBodyRetentionDays == null &&
|
|
514
|
+
attemptResponseBodyRetentionDays == null) {
|
|
515
|
+
return { eventsPurged: 0, deliveriesPurged: 0, attemptsPurged: 0 };
|
|
516
|
+
}
|
|
517
|
+
const [result] = await this.prisma.$queryRaw `
|
|
518
|
+
WITH event_payloads AS (
|
|
519
|
+
UPDATE webhook_events ev
|
|
520
|
+
SET payload = '{}'::jsonb,
|
|
521
|
+
payload_purged_at = ${now}
|
|
522
|
+
WHERE ${eventPayloadRetentionDays}::int IS NOT NULL
|
|
523
|
+
AND ev.payload_purged_at IS NULL
|
|
524
|
+
AND ev.created_at <= ${now}::timestamptz - (${eventPayloadRetentionDays}::text || ' days')::interval
|
|
525
|
+
AND NOT EXISTS (
|
|
526
|
+
SELECT 1
|
|
527
|
+
FROM webhook_deliveries d
|
|
528
|
+
WHERE d.event_id = ev.id
|
|
529
|
+
AND d.status IN ('PENDING', 'SENDING')
|
|
530
|
+
)
|
|
531
|
+
RETURNING ev.id
|
|
532
|
+
),
|
|
533
|
+
delivery_bodies AS (
|
|
534
|
+
UPDATE webhook_deliveries d
|
|
535
|
+
SET response_body = NULL
|
|
536
|
+
WHERE ${deliveryResponseBodyRetentionDays}::int IS NOT NULL
|
|
537
|
+
AND d.response_body IS NOT NULL
|
|
538
|
+
AND d.completed_at IS NOT NULL
|
|
539
|
+
AND d.completed_at <= ${now}::timestamptz - (${deliveryResponseBodyRetentionDays}::text || ' days')::interval
|
|
540
|
+
RETURNING d.id
|
|
541
|
+
),
|
|
542
|
+
attempt_bodies AS (
|
|
543
|
+
UPDATE webhook_delivery_attempts a
|
|
544
|
+
SET response_body = NULL,
|
|
545
|
+
response_body_truncated = FALSE
|
|
546
|
+
WHERE ${attemptResponseBodyRetentionDays}::int IS NOT NULL
|
|
547
|
+
AND a.response_body IS NOT NULL
|
|
548
|
+
AND a.created_at <= ${now}::timestamptz - (${attemptResponseBodyRetentionDays}::text || ' days')::interval
|
|
549
|
+
RETURNING a.id
|
|
550
|
+
)
|
|
551
|
+
SELECT
|
|
552
|
+
(SELECT COUNT(*) FROM event_payloads) AS "eventsPurged",
|
|
553
|
+
(SELECT COUNT(*) FROM delivery_bodies) AS "deliveriesPurged",
|
|
554
|
+
(SELECT COUNT(*) FROM attempt_bodies) AS "attemptsPurged"`;
|
|
555
|
+
return {
|
|
556
|
+
eventsPurged: normalizeBacklogNumber(result?.eventsPurged ?? 0, 'eventsPurged'),
|
|
557
|
+
deliveriesPurged: normalizeBacklogNumber(result?.deliveriesPurged ?? 0, 'deliveriesPurged'),
|
|
558
|
+
attemptsPurged: normalizeBacklogNumber(result?.attemptsPurged ?? 0, 'attemptsPurged'),
|
|
559
|
+
};
|
|
560
|
+
}
|
|
367
561
|
async createTestDelivery(eventId, endpointId) {
|
|
368
562
|
await this.prisma.$executeRaw `
|
|
369
563
|
INSERT INTO webhook_deliveries (
|
|
@@ -418,10 +612,25 @@ let PrismaDeliveryRepository = class PrismaDeliveryRepository {
|
|
|
418
612
|
${result.error ?? null}
|
|
419
613
|
)`;
|
|
420
614
|
}
|
|
615
|
+
sanitizeDeliveryResult(deliveryId, result) {
|
|
616
|
+
if (result.body == null || !this.redaction?.sanitizeResponseBody) {
|
|
617
|
+
return result;
|
|
618
|
+
}
|
|
619
|
+
const sanitizedBody = this.redaction.sanitizeResponseBody(result.body, {
|
|
620
|
+
deliveryId,
|
|
621
|
+
endpointId: null,
|
|
622
|
+
eventId: null,
|
|
623
|
+
statusCode: result.statusCode ?? null,
|
|
624
|
+
});
|
|
625
|
+
return {
|
|
626
|
+
...result,
|
|
627
|
+
body: sanitizedBody ?? undefined,
|
|
628
|
+
};
|
|
629
|
+
}
|
|
421
630
|
};
|
|
422
631
|
exports.PrismaDeliveryRepository = PrismaDeliveryRepository;
|
|
423
632
|
exports.PrismaDeliveryRepository = PrismaDeliveryRepository = __decorate([
|
|
424
633
|
(0, common_1.Injectable)(),
|
|
425
|
-
__metadata("design:paramtypes", [Object, Object])
|
|
634
|
+
__metadata("design:paramtypes", [Object, Object, Object])
|
|
426
635
|
], PrismaDeliveryRepository);
|
|
427
636
|
//# sourceMappingURL=prisma-delivery.repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma-delivery.repository.js","sourceRoot":"","sources":["../../src/adapters/prisma-delivery.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAe5C,4DAAwE;AAiBxE,MAAM,4BAA4B,GAChC,6DAA6D,CAAC;AAEhE,SAAS,2BAA2B,CAAC,IAA+B;IAClE,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,qBAAqB,EAAE,KAAK;SAC7B,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,oDAAgC,EAAE,CAAC;QACpD,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,qBAAqB,EAAE,KAAK;SAC7B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,oDAAgC,CAAC;QAC7D,qBAAqB,EAAE,IAAI;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc,EAAE,KAAa;IAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAGM,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAEd;IACA;IAFrB,YACqB,MAAW,EACX,KAA0B;QAD1B,WAAM,GAAN,MAAM,CAAK;QACX,UAAK,GAAL,KAAK,CAAqB;IAC5C,CAAC;IAEJ,KAAK,CAAC,6BAA6B,CACjC,EAAO,EACP,OAAe,EACf,WAAqB,EACrB,WAAmB;QAEnB,MAAM,EAAE,CAAC,iBAAiB,CACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA4B8B,EAC9B,OAAO,EACP,WAAW,EACX,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAI,EAA0C;QAClE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,SAAiB;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAmB;;;;;;;;;gBASnC,SAAS;;;;;;;;yDAQgC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,WAAqB;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAmB;;;;;;;;;;;;;;;;;;;;yBAoBtC,WAAW,WAAW,CAAC;QAE5C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAoB,EAAE,EAAE;gBACtC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBACpD,IAAI,CAAC,KAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;oBAC/B,OAAO,CAAC,GAAG,CACT,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAC3C,IAAI,CAAC,KAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAC5B,CACF;iBACF,CAAC,CAAC;gBAEH,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;gBACpB,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YAC5C,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAAkB,EAAE,QAAgB,EAAE,MAAsB;QACzE,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAoB,EAAE,EAAE;YAC5D,MAAM,EAAE,CAAC,WAAW,CAAA;;0CAEgB,QAAQ;;gCAElB,MAAM,CAAC,UAAU,IAAI,IAAI;8BAC3B,MAAM,CAAC,IAAI,IAAI,IAAI;2BACtB,MAAM,CAAC,SAAS;qBACtB,UAAU,QAAQ,CAAC;YAClC,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,QAAgB,EAAE,MAAsB;QAC3E,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAoB,EAAE,EAAE;YAC5D,MAAM,EAAE,CAAC,WAAW,CAAA;;4CAEkB,QAAQ;;;gCAGpB,MAAM,CAAC,UAAU,IAAI,IAAI;8BAC3B,MAAM,CAAC,IAAI,IAAI,IAAI;2BACtB,MAAM,CAAC,SAAS;2BAChB,MAAM,CAAC,KAAK,IAAI,IAAI;qBAC1B,UAAU,QAAQ,CAAC;YAClC,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CACb,UAAkB,EAClB,QAAgB,EAChB,MAAY,EACZ,MAAsB;QAEtB,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAoB,EAAE,EAAE;YAC5D,MAAM,EAAE,CAAC,WAAW,CAAA;;6CAEmB,QAAQ;yDACI,MAAM;gCAC/B,MAAM,CAAC,UAAU,IAAI,IAAI;8BAC3B,MAAM,CAAC,IAAI,IAAI,IAAI;2BACtB,MAAM,CAAC,SAAS;2BAChB,MAAM,CAAC,KAAK,IAAI,IAAI;qBAC1B,UAAU,QAAQ,CAAC;YAClC,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,gBAAwB;QAChD,MAAM,QAAQ,GAAG,GAAG,gBAAgB,UAAU,CAAC;QAC/C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAkB;;;;;;;;;;;;;;;;;;;;;2BAqBxC,4BAA4B;;;qCAGlB,QAAQ;;;;;;;;;;;;;;;;;;;;;;YAsBjC,4BAA4B;;;;;;;sEAO8B,CAAC;QACnE,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAoCtD,CAAC;QAEhB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;gBACL,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,CAAC;gBACf,oBAAoB,EAAE,CAAC;gBACvB,kBAAkB,EAAE,IAAI;gBACxB,mBAAmB,EAAE,IAAI;aAC1B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,YAAY,EAAE,sBAAsB,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC;YACtE,YAAY,EAAE,sBAAsB,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC;YACtE,oBAAoB,EAAE,sBAAsB,CAC1C,GAAG,CAAC,oBAAoB,EACxB,sBAAsB,CACvB;YACD,kBAAkB,EAChB,GAAG,CAAC,kBAAkB,IAAI,IAAI;gBAC5B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;YAC1E,mBAAmB,EACjB,GAAG,CAAC,mBAAmB,IAAI,IAAI;gBAC7B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,sBAAsB,CACpB,GAAG,CAAC,mBAAmB,EACvB,qBAAqB,CACtB;SACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,UAAkB,EAClB,OAA4B;QAE5B,MAAM,UAAU,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAChD,MAAM,MAAM,GAAc,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,eAAe,UAAU,EAAE,EAAE,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,oBAAoB,UAAU,EAAE,EAAE,CAAC,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,yBAAyB,UAAU,EAAE,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,yBAAyB,UAAU,EAAE,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;cAiBJ,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;eAEvB,UAAU,EAAE;gBACX,UAAU,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAE3B,MAAM,OAAO,GAAqB,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;QACtF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAAkB;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAyB;;;;;;;;;;;;;4BAa7B,UAAU;kCACJ,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAAkB;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA;;;mBAG7B,UAAU,8BAA8B,CAAC;QACxD,OAAO,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAAe,EAAE,UAAkB;QAC1D,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA;;;;;;;;;;;;UAYvB,OAAO;;;;;;;;;;;;;;;qBAeI,UAAU,QAAQ,CAAC;IACtC,CAAC;IAES,KAAK,CAAC,gBAAgB,CAC9B,MAAwB,EACxB,UAAkB,EAClB,QAAgB,EAChB,MAAqC,EACrC,MAAsB;QAEtB,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,GAC3C,2BAA2B,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QAEnD,MAAM,MAAM,CAAC,WAAW,CAAA;;;;;;;;;;;;UAYlB,UAAU;UACV,QAAQ;UACR,MAAM;UACN,MAAM,CAAC,UAAU,IAAI,IAAI;UACzB,YAAY;UACZ,qBAAqB;UACrB,MAAM,CAAC,SAAS;UAChB,MAAM,CAAC,KAAK,IAAI,IAAI;QACtB,CAAC;IACP,CAAC;CACF,CAAA;AAzbY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;;GACA,wBAAwB,CAybpC"}
|
|
1
|
+
{"version":3,"file":"prisma-delivery.repository.js","sourceRoot":"","sources":["../../src/adapters/prisma-delivery.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,7 +68,7 @@ let PrismaEndpointRepository = class PrismaEndpointRepository {
|
|
|
68
68
|
? await this.vault.encrypt(input.secret)
|
|
69
69
|
: input.secret;
|
|
70
70
|
const [endpoint] = await this.prisma.$queryRawUnsafe(`INSERT INTO webhook_endpoints (url, secret, events, description, metadata, tenant_id)
|
|
71
|
-
VALUES ($1, $2, $3::varchar[], $4, $5::jsonb, $6
|
|
71
|
+
VALUES ($1, $2, $3::varchar[], $4, $5::jsonb, $6)
|
|
72
72
|
RETURNING ${ENDPOINT_COLUMNS_WITH_SECRET}`, input.url, encryptedSecret, input.events, input.description, input.metadata ? JSON.stringify(input.metadata) : null, input.tenantId);
|
|
73
73
|
return endpoint;
|
|
74
74
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { WebhookEventRepository } from '../ports/webhook-event.repository';
|
|
1
|
+
import { SavedWebhookEvent, WebhookEventRepository } from '../ports/webhook-event.repository';
|
|
2
|
+
import { WebhookPublishOptions } from '../interfaces/webhook-options.interface';
|
|
2
3
|
export declare class PrismaEventRepository implements WebhookEventRepository {
|
|
3
4
|
private readonly prisma;
|
|
4
5
|
constructor(prisma: any);
|
|
5
6
|
saveEvent(eventType: string, payload: Record<string, unknown>, tenantId: string | null): Promise<string>;
|
|
6
7
|
saveEventInTransaction(tx: any, eventType: string, payload: Record<string, unknown>, tenantId: string | null): Promise<string>;
|
|
8
|
+
saveEventOnceInTransaction(tx: any, eventType: string, payload: Record<string, unknown>, tenantId: string | null, options: Required<Pick<WebhookPublishOptions, 'idempotencyKey'>> & Pick<WebhookPublishOptions, 'correlationId'>): Promise<SavedWebhookEvent>;
|
|
7
9
|
}
|
|
8
10
|
//# sourceMappingURL=prisma-event.repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma-event.repository.d.ts","sourceRoot":"","sources":["../../src/adapters/prisma-event.repository.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"prisma-event.repository.d.ts","sourceRoot":"","sources":["../../src/adapters/prisma-event.repository.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,qBACa,qBAAsB,YAAW,sBAAsB;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,GAAG;IAElC,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,MAAM,CAAC;IAQZ,sBAAsB,CAC1B,EAAE,EAAE,GAAG,EACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,MAAM,CAAC;IAQZ,0BAA0B,CAC9B,EAAE,EAAE,GAAG,EACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC,GAC9D,IAAI,CAAC,qBAAqB,EAAE,eAAe,CAAC,GAC7C,OAAO,CAAC,iBAAiB,CAAC;CAoC9B"}
|
|
@@ -19,17 +19,51 @@ let PrismaEventRepository = class PrismaEventRepository {
|
|
|
19
19
|
async saveEvent(eventType, payload, tenantId) {
|
|
20
20
|
const [saved] = await this.prisma.$queryRaw `
|
|
21
21
|
INSERT INTO webhook_events (event_type, payload, tenant_id)
|
|
22
|
-
VALUES (${eventType}, ${JSON.stringify(payload)}::jsonb, ${tenantId}
|
|
22
|
+
VALUES (${eventType}, ${JSON.stringify(payload)}::jsonb, ${tenantId})
|
|
23
23
|
RETURNING id`;
|
|
24
24
|
return saved.id;
|
|
25
25
|
}
|
|
26
26
|
async saveEventInTransaction(tx, eventType, payload, tenantId) {
|
|
27
27
|
const [saved] = await tx.$queryRaw `
|
|
28
28
|
INSERT INTO webhook_events (event_type, payload, tenant_id)
|
|
29
|
-
VALUES (${eventType}, ${JSON.stringify(payload)}::jsonb, ${tenantId}
|
|
29
|
+
VALUES (${eventType}, ${JSON.stringify(payload)}::jsonb, ${tenantId})
|
|
30
30
|
RETURNING id`;
|
|
31
31
|
return saved.id;
|
|
32
32
|
}
|
|
33
|
+
async saveEventOnceInTransaction(tx, eventType, payload, tenantId, options) {
|
|
34
|
+
const [saved] = await tx.$queryRaw `
|
|
35
|
+
WITH inserted AS (
|
|
36
|
+
INSERT INTO webhook_events (
|
|
37
|
+
event_type,
|
|
38
|
+
payload,
|
|
39
|
+
tenant_id,
|
|
40
|
+
idempotency_key,
|
|
41
|
+
correlation_id
|
|
42
|
+
)
|
|
43
|
+
VALUES (
|
|
44
|
+
${eventType},
|
|
45
|
+
${JSON.stringify(payload)}::jsonb,
|
|
46
|
+
${tenantId},
|
|
47
|
+
${options.idempotencyKey},
|
|
48
|
+
${options.correlationId ?? null}
|
|
49
|
+
)
|
|
50
|
+
ON CONFLICT DO NOTHING
|
|
51
|
+
RETURNING id, TRUE AS created
|
|
52
|
+
)
|
|
53
|
+
SELECT id, created FROM inserted
|
|
54
|
+
UNION ALL
|
|
55
|
+
SELECT id, FALSE AS created
|
|
56
|
+
FROM webhook_events
|
|
57
|
+
WHERE COALESCE(tenant_id, '') = COALESCE(${tenantId}, '')
|
|
58
|
+
AND event_type = ${eventType}
|
|
59
|
+
AND idempotency_key = ${options.idempotencyKey}
|
|
60
|
+
AND NOT EXISTS (SELECT 1 FROM inserted)
|
|
61
|
+
LIMIT 1`;
|
|
62
|
+
if (!saved) {
|
|
63
|
+
throw new Error('Failed to save idempotent webhook event');
|
|
64
|
+
}
|
|
65
|
+
return saved;
|
|
66
|
+
}
|
|
33
67
|
};
|
|
34
68
|
exports.PrismaEventRepository = PrismaEventRepository;
|
|
35
69
|
exports.PrismaEventRepository = PrismaEventRepository = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma-event.repository.js","sourceRoot":"","sources":["../../src/adapters/prisma-event.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;
|
|
1
|
+
{"version":3,"file":"prisma-event.repository.js","sourceRoot":"","sources":["../../src/adapters/prisma-event.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAQrC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACH;IAA7B,YAA6B,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;IAAG,CAAC;IAE5C,KAAK,CAAC,SAAS,CACb,SAAiB,EACjB,OAAgC,EAChC,QAAuB;QAEvB,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAkB;;gBAEjD,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,QAAQ;mBACtD,CAAC;QAChB,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,EAAO,EACP,SAAiB,EACjB,OAAgC,EAChC,QAAuB;QAEvB,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,CAAkB;;gBAExC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,QAAQ;mBACtD,CAAC;QAChB,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,0BAA0B,CAC9B,EAAO,EACP,SAAiB,EACjB,OAAgC,EAChC,QAAuB,EACvB,OAC8C;QAE9C,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,CAAqB;;;;;;;;;;YAU/C,SAAS;YACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YACvB,QAAQ;YACR,OAAO,CAAC,cAAc;YACtB,OAAO,CAAC,aAAa,IAAI,IAAI;;;;;;;;;iDASQ,QAAQ;2BAC9B,SAAS;gCACJ,OAAO,CAAC,cAAc;;cAExC,CAAC;QAEX,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAA;AAvEY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;;GACA,qBAAqB,CAuEjC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,15 +6,16 @@ export { WebhookDeliveryWorker } from './webhook.delivery-worker';
|
|
|
6
6
|
export { WebhookDispatcher } from './webhook.dispatcher';
|
|
7
7
|
/** @internal Wired automatically by WebhookModule. Exported for advanced testing/custom integration only. */
|
|
8
8
|
export { WebhookRetryPolicy } from './webhook.retry-policy';
|
|
9
|
-
export { WebhookSigner, type SignatureHeaders } from './webhook.signer';
|
|
9
|
+
export { WebhookSigner, type SignatureHeaders, type WebhookVerificationOptions, } from './webhook.signer';
|
|
10
10
|
/** @internal Wired automatically by WebhookModule. Exported for advanced testing/custom integration only. */
|
|
11
11
|
export { WebhookCircuitBreaker } from './webhook.circuit-breaker';
|
|
12
12
|
export { WebhookEvent } from './webhook.event';
|
|
13
13
|
export { WebhookEndpointAdminService } from './webhook.endpoint-admin.service';
|
|
14
14
|
export { WebhookDeliveryAdminService } from './webhook.delivery-admin.service';
|
|
15
|
+
export { WebhookRetentionAdminService } from './webhook.retention-admin.service';
|
|
15
16
|
/** @deprecated since v0.2.0. Will be removed in v1.0.0. Use {@link WebhookEndpointAdminService} and {@link WebhookDeliveryAdminService}. */
|
|
16
17
|
export { WebhookAdminService } from './webhook.admin.service';
|
|
17
|
-
export type { WebhookEventRepository } from './ports/webhook-event.repository';
|
|
18
|
+
export type { WebhookEventRepository, SavedWebhookEvent, } from './ports/webhook-event.repository';
|
|
18
19
|
export type { WebhookEndpointRepository, ResolvedCreateEndpointInput, ResolvedRotateEndpointSecretInput, } from './ports/webhook-endpoint.repository';
|
|
19
20
|
export type { WebhookDeliveryRepository, ClaimedDelivery, DeliveryBacklogSummary, PendingDelivery, WebhookTransaction, } from './ports/webhook-delivery.repository';
|
|
20
21
|
export type { WebhookHttpClient } from './ports/webhook-http-client';
|
|
@@ -24,9 +25,9 @@ export { PrismaEndpointRepository } from './adapters/prisma-endpoint.repository'
|
|
|
24
25
|
export { PrismaDeliveryRepository } from './adapters/prisma-delivery.repository';
|
|
25
26
|
export { FetchHttpClient } from './adapters/fetch-http-client';
|
|
26
27
|
export { PlaintextSecretVault } from './adapters/plaintext-secret-vault';
|
|
27
|
-
export type { WebhookModuleOptions, WebhookModuleAsyncOptions, WebhookOptionsFactory, DeliveryOptions, CircuitBreakerOptions, PollingOptions, WebhookPollContext, WebhookPollResult, WebhookDeliveryProcessingStatus, WebhookDeliveryProcessingResult, WebhookWorkerObserver, DeliveryFailedContext, DeliveryFailureKind, DeliveryRetryScheduledContext, EndpointDisabledContext, EndpointDegradedContext, } from './interfaces/webhook-options.interface';
|
|
28
|
+
export type { WebhookModuleOptions, WebhookModuleAsyncOptions, WebhookOptionsFactory, WebhookPublishOptions, WebhookRetentionOptions, WebhookRedactionOptions, DeliveryOptions, CircuitBreakerOptions, PollingOptions, WebhookPollContext, WebhookPollResult, WebhookDeliveryProcessingStatus, WebhookDeliveryProcessingResult, WebhookWorkerObserver, DeliveryFailedContext, DeliveryFailureKind, DeliveryRetryScheduledContext, EndpointDisabledContext, EndpointDegradedContext, } from './interfaces/webhook-options.interface';
|
|
28
29
|
export type { EndpointRecord, EndpointRecordWithSecret, CreateEndpointDto, UpdateEndpointDto, RotateEndpointSecretDto, } from './interfaces/webhook-endpoint.interface';
|
|
29
|
-
export type { DeliveryStatus, DeliveryAttemptStatus, DeliveryRecord, DeliveryAttemptRecord, EventRecord, DeliveryResult, DeliveryLogFilters, } from './interfaces/webhook-delivery.interface';
|
|
30
|
+
export type { DeliveryStatus, DeliveryAttemptStatus, DeliveryRecord, DeliveryAttemptRecord, EventRecord, DeliveryResult, DeliveryLogFilters, RetryDeliveryOptions, RetryFailedDeliveriesFilters, RetryFailedDeliveriesResult, ReplayEventOptions, ReplayEventResult, WebhookRetentionPurgeResult, } from './interfaces/webhook-delivery.interface';
|
|
30
31
|
export { WEBHOOK_MODULE_OPTIONS, WEBHOOK_EVENT_REPOSITORY, WEBHOOK_ENDPOINT_REPOSITORY, WEBHOOK_DELIVERY_REPOSITORY, WEBHOOK_HTTP_CLIENT, WEBHOOK_SECRET_VAULT, DEFAULT_BACKOFF_SCHEDULE, DEFAULT_DELIVERY_TIMEOUT, DEFAULT_MAX_RETRIES, DEFAULT_POLLING_INTERVAL, DEFAULT_POLLING_BATCH_SIZE, DEFAULT_CIRCUIT_BREAKER_THRESHOLD, DEFAULT_CIRCUIT_BREAKER_COOLDOWN_MINUTES, ENDPOINT_DISABLED_REASON_CONSECUTIVE_FAILURES_EXCEEDED, DEFAULT_STALE_SENDING_MINUTES, } from './webhook.constants';
|
|
31
32
|
export type { EndpointDisabledReason } from './webhook.constants';
|
|
32
33
|
export { validateWebhookUrl, resolveAndValidateHost, WebhookUrlValidationError, type WebhookUrlValidationReason, } from './webhook.url-validator';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,6GAA6G;AAC7G,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,6GAA6G;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,6GAA6G;AAC7G,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebhookUrlValidationError = exports.resolveAndValidateHost = exports.validateWebhookUrl = exports.DEFAULT_STALE_SENDING_MINUTES = exports.ENDPOINT_DISABLED_REASON_CONSECUTIVE_FAILURES_EXCEEDED = exports.DEFAULT_CIRCUIT_BREAKER_COOLDOWN_MINUTES = exports.DEFAULT_CIRCUIT_BREAKER_THRESHOLD = exports.DEFAULT_POLLING_BATCH_SIZE = exports.DEFAULT_POLLING_INTERVAL = exports.DEFAULT_MAX_RETRIES = exports.DEFAULT_DELIVERY_TIMEOUT = exports.DEFAULT_BACKOFF_SCHEDULE = exports.WEBHOOK_SECRET_VAULT = exports.WEBHOOK_HTTP_CLIENT = exports.WEBHOOK_DELIVERY_REPOSITORY = exports.WEBHOOK_ENDPOINT_REPOSITORY = exports.WEBHOOK_EVENT_REPOSITORY = exports.WEBHOOK_MODULE_OPTIONS = exports.PlaintextSecretVault = exports.FetchHttpClient = exports.PrismaDeliveryRepository = exports.PrismaEndpointRepository = exports.PrismaEventRepository = exports.WebhookAdminService = exports.WebhookDeliveryAdminService = exports.WebhookEndpointAdminService = exports.WebhookEvent = exports.WebhookCircuitBreaker = exports.WebhookSigner = exports.WebhookRetryPolicy = exports.WebhookDispatcher = exports.WebhookDeliveryWorker = exports.WebhookService = exports.WebhookModule = void 0;
|
|
3
|
+
exports.WebhookUrlValidationError = exports.resolveAndValidateHost = exports.validateWebhookUrl = exports.DEFAULT_STALE_SENDING_MINUTES = exports.ENDPOINT_DISABLED_REASON_CONSECUTIVE_FAILURES_EXCEEDED = exports.DEFAULT_CIRCUIT_BREAKER_COOLDOWN_MINUTES = exports.DEFAULT_CIRCUIT_BREAKER_THRESHOLD = exports.DEFAULT_POLLING_BATCH_SIZE = exports.DEFAULT_POLLING_INTERVAL = exports.DEFAULT_MAX_RETRIES = exports.DEFAULT_DELIVERY_TIMEOUT = exports.DEFAULT_BACKOFF_SCHEDULE = exports.WEBHOOK_SECRET_VAULT = exports.WEBHOOK_HTTP_CLIENT = exports.WEBHOOK_DELIVERY_REPOSITORY = exports.WEBHOOK_ENDPOINT_REPOSITORY = exports.WEBHOOK_EVENT_REPOSITORY = exports.WEBHOOK_MODULE_OPTIONS = exports.PlaintextSecretVault = exports.FetchHttpClient = exports.PrismaDeliveryRepository = exports.PrismaEndpointRepository = exports.PrismaEventRepository = exports.WebhookAdminService = exports.WebhookRetentionAdminService = exports.WebhookDeliveryAdminService = exports.WebhookEndpointAdminService = exports.WebhookEvent = exports.WebhookCircuitBreaker = exports.WebhookSigner = exports.WebhookRetryPolicy = exports.WebhookDispatcher = exports.WebhookDeliveryWorker = exports.WebhookService = exports.WebhookModule = void 0;
|
|
4
4
|
// Module
|
|
5
5
|
var webhook_module_1 = require("./webhook.module");
|
|
6
6
|
Object.defineProperty(exports, "WebhookModule", { enumerable: true, get: function () { return webhook_module_1.WebhookModule; } });
|
|
@@ -28,6 +28,8 @@ var webhook_endpoint_admin_service_1 = require("./webhook.endpoint-admin.service
|
|
|
28
28
|
Object.defineProperty(exports, "WebhookEndpointAdminService", { enumerable: true, get: function () { return webhook_endpoint_admin_service_1.WebhookEndpointAdminService; } });
|
|
29
29
|
var webhook_delivery_admin_service_1 = require("./webhook.delivery-admin.service");
|
|
30
30
|
Object.defineProperty(exports, "WebhookDeliveryAdminService", { enumerable: true, get: function () { return webhook_delivery_admin_service_1.WebhookDeliveryAdminService; } });
|
|
31
|
+
var webhook_retention_admin_service_1 = require("./webhook.retention-admin.service");
|
|
32
|
+
Object.defineProperty(exports, "WebhookRetentionAdminService", { enumerable: true, get: function () { return webhook_retention_admin_service_1.WebhookRetentionAdminService; } });
|
|
31
33
|
/** @deprecated since v0.2.0. Will be removed in v1.0.0. Use {@link WebhookEndpointAdminService} and {@link WebhookDeliveryAdminService}. */
|
|
32
34
|
var webhook_admin_service_1 = require("./webhook.admin.service");
|
|
33
35
|
Object.defineProperty(exports, "WebhookAdminService", { enumerable: true, get: function () { return webhook_admin_service_1.WebhookAdminService; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,SAAS;AACT,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAEtB,gBAAgB;AAChB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,6GAA6G;AAC7G,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAC9B,6GAA6G;AAC7G,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,6GAA6G;AAC7G,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAC3B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,SAAS;AACT,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAEtB,gBAAgB;AAChB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,6GAA6G;AAC7G,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAC9B,6GAA6G;AAC7G,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,6GAA6G;AAC7G,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAC3B,mDAI0B;AAHxB,+GAAA,aAAa,OAAA;AAIf,6GAA6G;AAC7G,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAC9B,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAErB,iBAAiB;AACjB,mFAA+E;AAAtE,6IAAA,2BAA2B,OAAA;AACpC,mFAA+E;AAAtE,6IAAA,2BAA2B,OAAA;AACpC,qFAAiF;AAAxE,+IAAA,4BAA4B,OAAA;AACrC,4IAA4I;AAC5I,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAsB5B,mBAAmB;AACnB,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAC9B,oFAAiF;AAAxE,sIAAA,wBAAwB,OAAA;AACjC,oFAAiF;AAAxE,sIAAA,wBAAwB,OAAA;AACjC,kEAA+D;AAAtD,oHAAA,eAAe,OAAA;AACxB,4EAAyE;AAAhE,8HAAA,oBAAoB,OAAA;AAkD7B,qBAAqB;AACrB,yDAgB6B;AAf3B,2HAAA,sBAAsB,OAAA;AACtB,6HAAA,wBAAwB,OAAA;AACxB,gIAAA,2BAA2B,OAAA;AAC3B,gIAAA,2BAA2B,OAAA;AAC3B,wHAAA,mBAAmB,OAAA;AACnB,yHAAA,oBAAoB,OAAA;AACpB,6HAAA,wBAAwB,OAAA;AACxB,6HAAA,wBAAwB,OAAA;AACxB,wHAAA,mBAAmB,OAAA;AACnB,6HAAA,wBAAwB,OAAA;AACxB,+HAAA,0BAA0B,OAAA;AAC1B,sIAAA,iCAAiC,OAAA;AACjC,6IAAA,wCAAwC,OAAA;AACxC,2JAAA,sDAAsD,OAAA;AACtD,kIAAA,6BAA6B,OAAA;AAI/B,iBAAiB;AACjB,iEAKiC;AAJ/B,2HAAA,kBAAkB,OAAA;AAClB,+HAAA,sBAAsB,OAAA;AACtB,kIAAA,yBAAyB,OAAA"}
|
|
@@ -53,4 +53,30 @@ export interface DeliveryLogFilters {
|
|
|
53
53
|
limit?: number;
|
|
54
54
|
offset?: number;
|
|
55
55
|
}
|
|
56
|
+
export interface RetryDeliveryOptions {
|
|
57
|
+
reason?: string;
|
|
58
|
+
}
|
|
59
|
+
export interface RetryFailedDeliveriesFilters extends DeliveryLogFilters {
|
|
60
|
+
endpointId?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface RetryFailedDeliveriesResult {
|
|
63
|
+
matched: number;
|
|
64
|
+
retried: number;
|
|
65
|
+
skipped: number;
|
|
66
|
+
}
|
|
67
|
+
export interface ReplayEventOptions {
|
|
68
|
+
endpointIds?: string[];
|
|
69
|
+
tenantId?: string;
|
|
70
|
+
reason?: string;
|
|
71
|
+
}
|
|
72
|
+
export interface ReplayEventResult {
|
|
73
|
+
eventId: string;
|
|
74
|
+
deliveriesCreated: number;
|
|
75
|
+
endpointIds: string[];
|
|
76
|
+
}
|
|
77
|
+
export interface WebhookRetentionPurgeResult {
|
|
78
|
+
eventsPurged: number;
|
|
79
|
+
deliveriesPurged: number;
|
|
80
|
+
attemptsPurged: number;
|
|
81
|
+
}
|
|
56
82
|
//# sourceMappingURL=webhook-delivery.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-delivery.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/webhook-delivery.interface.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AACvE,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAEvE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,cAAc,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"webhook-delivery.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/webhook-delivery.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,29 @@ export interface DeliveryOptions {
|
|
|
13
13
|
backoff?: 'exponential';
|
|
14
14
|
jitter?: boolean;
|
|
15
15
|
}
|
|
16
|
+
export interface WebhookPublishOptions {
|
|
17
|
+
/** Application-provided key used to deduplicate publish attempts. */
|
|
18
|
+
idempotencyKey?: string;
|
|
19
|
+
/** Optional caller correlation ID stored with the event for diagnostics. */
|
|
20
|
+
correlationId?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface WebhookRetentionOptions {
|
|
23
|
+
eventPayloadRetentionDays?: number;
|
|
24
|
+
deliveryResponseBodyRetentionDays?: number;
|
|
25
|
+
attemptResponseBodyRetentionDays?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface WebhookRedactionOptions {
|
|
28
|
+
sanitizePayload?: (payload: Record<string, unknown>, context: {
|
|
29
|
+
eventType: string;
|
|
30
|
+
tenantId: string | null;
|
|
31
|
+
}) => Record<string, unknown>;
|
|
32
|
+
sanitizeResponseBody?: (body: string, context: {
|
|
33
|
+
deliveryId: string;
|
|
34
|
+
endpointId: string | null;
|
|
35
|
+
eventId: string | null;
|
|
36
|
+
statusCode: number | null;
|
|
37
|
+
}) => string | null;
|
|
38
|
+
}
|
|
16
39
|
export interface CircuitBreakerOptions {
|
|
17
40
|
failureThreshold?: number;
|
|
18
41
|
degradedThreshold?: number;
|
|
@@ -158,6 +181,10 @@ export interface WebhookModuleOptions<TPrisma = unknown> {
|
|
|
158
181
|
httpClient?: WebhookHttpClient;
|
|
159
182
|
/** Custom secret vault for encrypting/decrypting endpoint signing secrets at rest. Default: PlaintextSecretVault (no-op). */
|
|
160
183
|
secretVault?: WebhookSecretVault;
|
|
184
|
+
/** Optional retention purge policy. Disabled when omitted. */
|
|
185
|
+
retention?: WebhookRetentionOptions;
|
|
186
|
+
/** Optional minimization hooks applied before webhook data is persisted. */
|
|
187
|
+
redaction?: WebhookRedactionOptions;
|
|
161
188
|
/** Called when a delivery exhausts retry attempts or receives a non-retryable response. Fire-and-forget — errors are logged, not propagated. */
|
|
162
189
|
onDeliveryFailed?: (context: DeliveryFailedContext) => void | Promise<void>;
|
|
163
190
|
/** Called after a retriable failed attempt is persisted with a next attempt time. Fire-and-forget — errors are logged, not propagated. */
|