@nestarc/webhook 0.12.0 → 0.13.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 (63) hide show
  1. package/README.md +97 -0
  2. package/dist/adapters/fetch-http-client.d.ts +2 -2
  3. package/dist/adapters/fetch-http-client.d.ts.map +1 -1
  4. package/dist/adapters/fetch-http-client.js +165 -29
  5. package/dist/adapters/fetch-http-client.js.map +1 -1
  6. package/dist/adapters/prisma-delivery.repository.d.ts +9 -3
  7. package/dist/adapters/prisma-delivery.repository.d.ts.map +1 -1
  8. package/dist/adapters/prisma-delivery.repository.js +228 -19
  9. package/dist/adapters/prisma-delivery.repository.js.map +1 -1
  10. package/dist/adapters/prisma-endpoint.repository.d.ts.map +1 -1
  11. package/dist/adapters/prisma-endpoint.repository.js +6 -2
  12. package/dist/adapters/prisma-endpoint.repository.js.map +1 -1
  13. package/dist/adapters/prisma-event.repository.d.ts +3 -1
  14. package/dist/adapters/prisma-event.repository.d.ts.map +1 -1
  15. package/dist/adapters/prisma-event.repository.js +36 -2
  16. package/dist/adapters/prisma-event.repository.js.map +1 -1
  17. package/dist/index.d.ts +5 -4
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +3 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/interfaces/webhook-delivery.interface.d.ts +26 -0
  22. package/dist/interfaces/webhook-delivery.interface.d.ts.map +1 -1
  23. package/dist/interfaces/webhook-options.interface.d.ts +27 -0
  24. package/dist/interfaces/webhook-options.interface.d.ts.map +1 -1
  25. package/dist/ports/webhook-delivery.repository.d.ts +6 -2
  26. package/dist/ports/webhook-delivery.repository.d.ts.map +1 -1
  27. package/dist/ports/webhook-event.repository.d.ts +6 -0
  28. package/dist/ports/webhook-event.repository.d.ts.map +1 -1
  29. package/dist/ports/webhook-http-client.d.ts +8 -1
  30. package/dist/ports/webhook-http-client.d.ts.map +1 -1
  31. package/dist/webhook.admin.service.d.ts +4 -2
  32. package/dist/webhook.admin.service.d.ts.map +1 -1
  33. package/dist/webhook.admin.service.js +8 -2
  34. package/dist/webhook.admin.service.js.map +1 -1
  35. package/dist/webhook.delivery-admin.service.d.ts +4 -2
  36. package/dist/webhook.delivery-admin.service.d.ts.map +1 -1
  37. package/dist/webhook.delivery-admin.service.js +14 -2
  38. package/dist/webhook.delivery-admin.service.js.map +1 -1
  39. package/dist/webhook.dispatcher.d.ts.map +1 -1
  40. package/dist/webhook.dispatcher.js +5 -2
  41. package/dist/webhook.dispatcher.js.map +1 -1
  42. package/dist/webhook.module.d.ts.map +1 -1
  43. package/dist/webhook.module.js +6 -2
  44. package/dist/webhook.module.js.map +1 -1
  45. package/dist/webhook.retention-admin.service.d.ts +10 -0
  46. package/dist/webhook.retention-admin.service.d.ts.map +1 -0
  47. package/dist/webhook.retention-admin.service.js +50 -0
  48. package/dist/webhook.retention-admin.service.js.map +1 -0
  49. package/dist/webhook.service.d.ts +7 -4
  50. package/dist/webhook.service.d.ts.map +1 -1
  51. package/dist/webhook.service.js +40 -10
  52. package/dist/webhook.service.js.map +1 -1
  53. package/dist/webhook.signer.d.ts +5 -0
  54. package/dist/webhook.signer.d.ts.map +1 -1
  55. package/dist/webhook.signer.js +14 -0
  56. package/dist/webhook.signer.js.map +1 -1
  57. package/dist/webhook.url-validator.d.ts +1 -1
  58. package/dist/webhook.url-validator.d.ts.map +1 -1
  59. package/dist/webhook.url-validator.js +145 -51
  60. package/dist/webhook.url-validator.js.map +1 -1
  61. package/package.json +9 -3
  62. package/src/sql/create-webhook-tables.sql +11 -5
  63. package/src/sql/migrations/v0.13.0.sql +11 -0
@@ -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. */
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-options.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/webhook-options.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook-options.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/webhook-options.interface.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { DeliveryAttemptRecord, DeliveryLogFilters, DeliveryRecord, DeliveryResult } from '../interfaces/webhook-delivery.interface';
1
+ import { DeliveryAttemptRecord, DeliveryLogFilters, DeliveryRecord, DeliveryResult, ReplayEventOptions, ReplayEventResult, RetryDeliveryOptions, RetryFailedDeliveriesFilters, RetryFailedDeliveriesResult, WebhookRetentionPurgeResult } from '../interfaces/webhook-delivery.interface';
2
+ import { WebhookRetentionOptions } from '../interfaces/webhook-options.interface';
2
3
  declare const webhookTransactionBrand: unique symbol;
3
4
  /** Opaque transaction token created by repository adapters. */
4
5
  export type WebhookTransaction = {
@@ -48,7 +49,10 @@ export interface WebhookDeliveryRepository {
48
49
  getDeliveryLogs(endpointId: string, filters?: DeliveryLogFilters): Promise<DeliveryRecord[]>;
49
50
  /** @returns attempts sorted by attemptNumber ASC. */
50
51
  getDeliveryAttempts(deliveryId: string): Promise<DeliveryAttemptRecord[]>;
51
- retryDelivery(deliveryId: string): Promise<boolean>;
52
+ retryDelivery(deliveryId: string, options?: RetryDeliveryOptions): Promise<boolean>;
53
+ retryFailedDeliveries?(filters: RetryFailedDeliveriesFilters, options?: RetryDeliveryOptions): Promise<RetryFailedDeliveriesResult>;
54
+ replayEvent?(eventId: string, options?: ReplayEventOptions): Promise<ReplayEventResult>;
55
+ purgeExpiredData?(options: WebhookRetentionOptions, now?: Date): Promise<WebhookRetentionPurgeResult>;
52
56
  createTestDelivery(eventId: string, endpointId: string): Promise<void>;
53
57
  }
54
58
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-delivery.repository.d.ts","sourceRoot":"","sources":["../../src/ports/webhook-delivery.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook-delivery.repository.d.ts","sourceRoot":"","sources":["../../src/ports/webhook-delivery.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,MAAM,CAAC;AAErD,+DAA+D;AAC/D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,CAAC,uBAAuB,CAAC,EAAE,oBAAoB,CAAC;CAC1D,CAAC;AAEF,0FAA0F;AAC1F,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,4GAA4G;AAC5G,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,6BAA6B,CAC3B,EAAE,EAAE,kBAAkB,EACtB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EAAE,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,8GAA8G;IAC9G,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE5E,sGAAsG;IACtG,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACtE,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAEpE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErG,uEAAuE;IACvE,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,iBAAiB,CAAC,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACtD,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7F,qDAAqD;IACrD,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC1E,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpF,qBAAqB,CAAC,CACpB,OAAO,EAAE,4BAA4B,EACrC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACxC,WAAW,CAAC,CACV,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,gBAAgB,CAAC,CACf,OAAO,EAAE,uBAAuB,EAChC,GAAG,CAAC,EAAE,IAAI,GACT,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACxC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE"}
@@ -1,7 +1,13 @@
1
1
  import { WebhookTransaction } from './webhook-delivery.repository';
2
+ import { WebhookPublishOptions } from '../interfaces/webhook-options.interface';
3
+ export interface SavedWebhookEvent {
4
+ id: string;
5
+ created: boolean;
6
+ }
2
7
  export interface WebhookEventRepository {
3
8
  saveEvent(eventType: string, payload: Record<string, unknown>, tenantId: string | null): Promise<string>;
4
9
  /** Use only with a transaction object received from WebhookDeliveryRepository.runInTransaction(). */
5
10
  saveEventInTransaction(tx: WebhookTransaction, eventType: string, payload: Record<string, unknown>, tenantId: string | null): Promise<string>;
11
+ saveEventOnceInTransaction?(tx: WebhookTransaction, eventType: string, payload: Record<string, unknown>, tenantId: string | null, options: Required<Pick<WebhookPublishOptions, 'idempotencyKey'>> & Pick<WebhookPublishOptions, 'correlationId'>): Promise<SavedWebhookEvent>;
6
12
  }
7
13
  //# sourceMappingURL=webhook-event.repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-event.repository.d.ts","sourceRoot":"","sources":["../../src/ports/webhook-event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,WAAW,sBAAsB;IACrC,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,qGAAqG;IACrG,sBAAsB,CACpB,EAAE,EAAE,kBAAkB,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB"}
1
+ {"version":3,"file":"webhook-event.repository.d.ts","sourceRoot":"","sources":["../../src/ports/webhook-event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,qGAAqG;IACrG,sBAAsB,CACpB,EAAE,EAAE,kBAAkB,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,0BAA0B,CAAC,CACzB,EAAE,EAAE,kBAAkB,EACtB,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,CAAC;CAC/B"}
@@ -1,9 +1,16 @@
1
1
  import { DeliveryResult } from '../interfaces/webhook-delivery.interface';
2
+ export interface WebhookHttpClientRequestOptions {
3
+ /**
4
+ * IP addresses already validated by the dispatcher. Built-in clients should
5
+ * connect only to these addresses while preserving the original URL host.
6
+ */
7
+ resolvedIpAddresses?: string[];
8
+ }
2
9
  export interface WebhookHttpClient {
3
10
  /**
4
11
  * @param timeout milliseconds before the request is aborted.
5
12
  * @returns DeliveryResult with success false on timeout/network failure; implementations should not throw for HTTP failures.
6
13
  */
7
- post(url: string, headers: Record<string, string>, body: string, timeout: number): Promise<DeliveryResult>;
14
+ post(url: string, headers: Record<string, string>, body: string, timeout: number, options?: WebhookHttpClientRequestOptions): Promise<DeliveryResult>;
8
15
  }
9
16
  //# sourceMappingURL=webhook-http-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-http-client.d.ts","sourceRoot":"","sources":["../../src/ports/webhook-http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,IAAI,CACF,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B"}
1
+ {"version":3,"file":"webhook-http-client.d.ts","sourceRoot":"","sources":["../../src/ports/webhook-http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,MAAM,WAAW,+BAA+B;IAC9C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,IAAI,CACF,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,+BAA+B,GACxC,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B"}
@@ -1,7 +1,7 @@
1
1
  import { WebhookEndpointAdminService } from './webhook.endpoint-admin.service';
2
2
  import { WebhookDeliveryAdminService } from './webhook.delivery-admin.service';
3
3
  import { CreateEndpointDto, EndpointRecord, EndpointRecordWithSecret, RotateEndpointSecretDto, UpdateEndpointDto } from './interfaces/webhook-endpoint.interface';
4
- import { DeliveryAttemptRecord, DeliveryLogFilters, DeliveryRecord } from './interfaces/webhook-delivery.interface';
4
+ import { DeliveryAttemptRecord, DeliveryLogFilters, DeliveryRecord, ReplayEventOptions, ReplayEventResult, RetryDeliveryOptions, RetryFailedDeliveriesFilters, RetryFailedDeliveriesResult } from './interfaces/webhook-delivery.interface';
5
5
  /**
6
6
  * @deprecated since v0.2.0. Will be removed in v1.0.0.
7
7
  * Use WebhookEndpointAdminService and WebhookDeliveryAdminService directly.
@@ -18,7 +18,9 @@ export declare class WebhookAdminService {
18
18
  deleteEndpoint(endpointId: string): Promise<boolean>;
19
19
  getDeliveryLogs(endpointId: string, filters?: DeliveryLogFilters): Promise<DeliveryRecord[]>;
20
20
  getDeliveryAttempts(deliveryId: string): Promise<DeliveryAttemptRecord[]>;
21
- retryDelivery(deliveryId: string): Promise<boolean>;
21
+ retryDelivery(deliveryId: string, options?: RetryDeliveryOptions): Promise<boolean>;
22
+ retryFailedDeliveries(filters: RetryFailedDeliveriesFilters, options?: RetryDeliveryOptions): Promise<RetryFailedDeliveriesResult>;
23
+ replayEvent(eventId: string, options?: ReplayEventOptions): Promise<ReplayEventResult>;
22
24
  sendTestEvent(endpointId: string): Promise<string | null>;
23
25
  }
24
26
  //# sourceMappingURL=webhook.admin.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.admin.service.d.ts","sourceRoot":"","sources":["../src/webhook.admin.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACf,MAAM,yCAAyC,CAAC;AAEjD;;;GAGG;AACH,qBACa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,SAAS,EAAE,2BAA2B,EACtC,UAAU,EAAE,2BAA2B;IAGpD,cAAc,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAIzE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAI3D,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAI/D,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAI3B,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAIrC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,cAAc,EAAE,CAAC;IAItB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAIzE,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAInD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAGhE"}
1
+ {"version":3,"file":"webhook.admin.service.d.ts","sourceRoot":"","sources":["../src/webhook.admin.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,yCAAyC,CAAC;AAEjD;;;GAGG;AACH,qBACa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,SAAS,EAAE,2BAA2B,EACtC,UAAU,EAAE,2BAA2B;IAGpD,cAAc,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAIzE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAI3D,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAI/D,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAI3B,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAIrC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,cAAc,EAAE,CAAC;IAItB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAIzE,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,OAAO,CAAC;IAIb,qBAAqB,CACzB,OAAO,EAAE,4BAA4B,EACrC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,2BAA2B,CAAC;IAIjC,WAAW,CACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,iBAAiB,CAAC;IAIvB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAGhE"}
@@ -48,8 +48,14 @@ let WebhookAdminService = class WebhookAdminService {
48
48
  async getDeliveryAttempts(deliveryId) {
49
49
  return this.deliveries.getDeliveryAttempts(deliveryId);
50
50
  }
51
- async retryDelivery(deliveryId) {
52
- return this.deliveries.retryDelivery(deliveryId);
51
+ async retryDelivery(deliveryId, options) {
52
+ return this.deliveries.retryDelivery(deliveryId, options);
53
+ }
54
+ async retryFailedDeliveries(filters, options) {
55
+ return this.deliveries.retryFailedDeliveries(filters, options);
56
+ }
57
+ async replayEvent(eventId, options) {
58
+ return this.deliveries.replayEvent(eventId, options);
53
59
  }
54
60
  async sendTestEvent(endpointId) {
55
61
  return this.endpoints.sendTestEvent(endpointId);
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.admin.service.js","sourceRoot":"","sources":["../src/webhook.admin.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,qFAA+E;AAC/E,qFAA+E;AAc/E;;;GAGG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAEX;IACA;IAFnB,YACmB,SAAsC,EACtC,UAAuC;QADvC,cAAS,GAAT,SAAS,CAA6B;QACtC,eAAU,GAAV,UAAU,CAA6B;IACvD,CAAC;IAEJ,KAAK,CAAC,cAAc,CAAC,GAAsB;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAiB;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,UAAkB,EAClB,GAAsB;QAEtB,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,UAAkB,EAClB,GAA4B;QAE5B,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAkB;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,UAAkB,EAClB,OAA4B;QAE5B,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAAkB;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAAkB;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAAkB;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AAtDY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;qCAGmB,4DAA2B;QAC1B,4DAA2B;GAH/C,mBAAmB,CAsD/B"}
1
+ {"version":3,"file":"webhook.admin.service.js","sourceRoot":"","sources":["../src/webhook.admin.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,qFAA+E;AAC/E,qFAA+E;AAmB/E;;;GAGG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAEX;IACA;IAFnB,YACmB,SAAsC,EACtC,UAAuC;QADvC,cAAS,GAAT,SAAS,CAA6B;QACtC,eAAU,GAAV,UAAU,CAA6B;IACvD,CAAC;IAEJ,KAAK,CAAC,cAAc,CAAC,GAAsB;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAiB;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,UAAkB,EAClB,GAAsB;QAEtB,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,UAAkB,EAClB,GAA4B;QAE5B,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAkB;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,UAAkB,EAClB,OAA4B;QAE5B,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAAkB;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,UAAkB,EAClB,OAA8B;QAE9B,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,OAAqC,EACrC,OAA8B;QAE9B,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAAe,EACf,OAA4B;QAE5B,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAAkB;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AAvEY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;qCAGmB,4DAA2B;QAC1B,4DAA2B;GAH/C,mBAAmB,CAuE/B"}
@@ -1,10 +1,12 @@
1
1
  import { WebhookDeliveryRepository } from './ports/webhook-delivery.repository';
2
- import { DeliveryAttemptRecord, DeliveryLogFilters, DeliveryRecord } from './interfaces/webhook-delivery.interface';
2
+ import { DeliveryAttemptRecord, DeliveryLogFilters, DeliveryRecord, ReplayEventOptions, ReplayEventResult, RetryDeliveryOptions, RetryFailedDeliveriesFilters, RetryFailedDeliveriesResult } from './interfaces/webhook-delivery.interface';
3
3
  export declare class WebhookDeliveryAdminService {
4
4
  private readonly deliveryRepo;
5
5
  constructor(deliveryRepo: WebhookDeliveryRepository);
6
6
  getDeliveryLogs(endpointId: string, filters?: DeliveryLogFilters): Promise<DeliveryRecord[]>;
7
7
  getDeliveryAttempts(deliveryId: string): Promise<DeliveryAttemptRecord[]>;
8
- retryDelivery(deliveryId: string): Promise<boolean>;
8
+ retryDelivery(deliveryId: string, options?: RetryDeliveryOptions): Promise<boolean>;
9
+ retryFailedDeliveries(filters: RetryFailedDeliveriesFilters, options?: RetryDeliveryOptions): Promise<RetryFailedDeliveriesResult>;
10
+ replayEvent(eventId: string, options?: ReplayEventOptions): Promise<ReplayEventResult>;
9
11
  }
10
12
  //# sourceMappingURL=webhook.delivery-admin.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.delivery-admin.service.d.ts","sourceRoot":"","sources":["../src/webhook.delivery-admin.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACf,MAAM,yCAAyC,CAAC;AAEjD,qBACa,2BAA2B;IAGpC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,yBAAyB;IAGpD,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,cAAc,EAAE,CAAC;IAItB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAIzE,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAG1D"}
1
+ {"version":3,"file":"webhook.delivery-admin.service.d.ts","sourceRoot":"","sources":["../src/webhook.delivery-admin.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,yCAAyC,CAAC;AAEjD,qBACa,2BAA2B;IAGpC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,yBAAyB;IAGpD,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,cAAc,EAAE,CAAC;IAItB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAIzE,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,OAAO,CAAC;IAIb,qBAAqB,CACzB,OAAO,EAAE,4BAA4B,EACrC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,2BAA2B,CAAC;IAUjC,WAAW,CACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,iBAAiB,CAAC;CAO9B"}
@@ -26,8 +26,20 @@ let WebhookDeliveryAdminService = class WebhookDeliveryAdminService {
26
26
  async getDeliveryAttempts(deliveryId) {
27
27
  return this.deliveryRepo.getDeliveryAttempts(deliveryId);
28
28
  }
29
- async retryDelivery(deliveryId) {
30
- return this.deliveryRepo.retryDelivery(deliveryId);
29
+ async retryDelivery(deliveryId, options) {
30
+ return this.deliveryRepo.retryDelivery(deliveryId, options);
31
+ }
32
+ async retryFailedDeliveries(filters, options) {
33
+ if (!this.deliveryRepo.retryFailedDeliveries) {
34
+ throw new Error('WebhookDeliveryRepository does not support bulk failed delivery retry');
35
+ }
36
+ return this.deliveryRepo.retryFailedDeliveries(filters, options);
37
+ }
38
+ async replayEvent(eventId, options) {
39
+ if (!this.deliveryRepo.replayEvent) {
40
+ throw new Error('WebhookDeliveryRepository does not support event replay');
41
+ }
42
+ return this.deliveryRepo.replayEvent(eventId, options);
31
43
  }
32
44
  };
33
45
  exports.WebhookDeliveryAdminService = WebhookDeliveryAdminService;
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.delivery-admin.service.js","sourceRoot":"","sources":["../src/webhook.delivery-admin.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,2DAAkE;AAS3D,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAGnB;IAFnB,YAEmB,YAAuC;QAAvC,iBAAY,GAAZ,YAAY,CAA2B;IACvD,CAAC;IAEJ,KAAK,CAAC,eAAe,CACnB,UAAkB,EAClB,OAA4B;QAE5B,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAAkB;QAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAAkB;QACpC,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;CACF,CAAA;AApBY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,+CAA2B,CAAC,CAAA;;GAF3B,2BAA2B,CAoBvC"}
1
+ {"version":3,"file":"webhook.delivery-admin.service.js","sourceRoot":"","sources":["../src/webhook.delivery-admin.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,2DAAkE;AAc3D,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAGnB;IAFnB,YAEmB,YAAuC;QAAvC,iBAAY,GAAZ,YAAY,CAA2B;IACvD,CAAC;IAEJ,KAAK,CAAC,eAAe,CACnB,UAAkB,EAClB,OAA4B;QAE5B,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAAkB;QAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,UAAkB,EAClB,OAA8B;QAE9B,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,OAAqC,EACrC,OAA8B;QAE9B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAAe,EACf,OAA4B;QAE5B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;CACF,CAAA;AA/CY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,+CAA2B,CAAC,CAAA;;GAF3B,2BAA2B,CA+CvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.dispatcher.d.ts","sourceRoot":"","sources":["../src/webhook.dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAMtE,qBACa,iBAAiB;IAK1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAN7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;gBAGxB,MAAM,EAAE,aAAa,EAErB,UAAU,EAAE,iBAAiB,EAE9C,OAAO,EAAE,oBAAoB;IAMzB,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAwBlE,OAAO,CAAC,gBAAgB;CAWzB"}
1
+ {"version":3,"file":"webhook.dispatcher.d.ts","sourceRoot":"","sources":["../src/webhook.dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAMtE,qBACa,iBAAiB;IAK1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAN7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;gBAGxB,MAAM,EAAE,aAAa,EAErB,UAAU,EAAE,iBAAiB,EAE9C,OAAO,EAAE,oBAAoB;IAMzB,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IA8BlE,OAAO,CAAC,gBAAgB;CAWzB"}
@@ -30,9 +30,10 @@ let WebhookDispatcher = class WebhookDispatcher {
30
30
  }
31
31
  async dispatch(delivery) {
32
32
  const parsedUrl = this.parseDeliveryUrl(delivery.url);
33
+ let resolvedIpAddresses;
33
34
  // DNS rebinding defense — validate resolved IPs before every dispatch
34
35
  if (!this.allowPrivateUrls) {
35
- await (0, webhook_url_validator_1.resolveAndValidateHost)(parsedUrl.hostname, delivery.url);
36
+ resolvedIpAddresses = await (0, webhook_url_validator_1.resolveAndValidateHost)(parsedUrl.hostname, delivery.url);
36
37
  }
37
38
  const body = JSON.stringify({
38
39
  type: delivery.eventType,
@@ -40,7 +41,9 @@ let WebhookDispatcher = class WebhookDispatcher {
40
41
  });
41
42
  const timestamp = Math.floor(Date.now() / 1000);
42
43
  const headers = this.signer.signAll(delivery.eventId, timestamp, body, [delivery.secret, ...delivery.additionalSecrets]);
43
- return this.httpClient.post(delivery.url, headers, body, this.timeout);
44
+ return this.httpClient.post(delivery.url, headers, body, this.timeout, {
45
+ resolvedIpAddresses,
46
+ });
44
47
  }
45
48
  parseDeliveryUrl(url) {
46
49
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.dispatcher.js","sourceRoot":"","sources":["../src/webhook.dispatcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,qDAAiD;AACjD,2DAI6B;AAK7B,mEAGiC;AAG1B,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAKT;IAEA;IANF,OAAO,CAAS;IAChB,gBAAgB,CAAU;IAE3C,YACmB,MAAqB,EAErB,UAA6B,EAE9C,OAA6B;QAJZ,WAAM,GAAN,MAAM,CAAe;QAErB,eAAU,GAAV,UAAU,CAAmB;QAI9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,IAAI,4CAAwB,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAyB;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEtD,sEAAsE;QACtE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,IAAA,8CAAsB,EAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,IAAI,EAAE,QAAQ,CAAC,SAAS;YACxB,IAAI,EAAE,QAAQ,CAAC,OAAO;SACvB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACjC,QAAQ,CAAC,OAAO,EAChB,SAAS,EACT,IAAI,EACJ,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CACjD,CAAC;QAEF,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC;IAEO,gBAAgB,CAAC,GAAW;QAClC,IAAI,CAAC;YACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,iDAAyB,CACjC,yCAAyC,GAAG,GAAG,EAC/C,OAAO,EACP,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAlDY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAOR,WAAA,IAAA,eAAM,EAAC,uCAAmB,CAAC,CAAA;IAE3B,WAAA,IAAA,eAAM,EAAC,0CAAsB,CAAC,CAAA;qCAHN,8BAAa;GAL7B,iBAAiB,CAkD7B"}
1
+ {"version":3,"file":"webhook.dispatcher.js","sourceRoot":"","sources":["../src/webhook.dispatcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,qDAAiD;AACjD,2DAI6B;AAK7B,mEAGiC;AAG1B,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAKT;IAEA;IANF,OAAO,CAAS;IAChB,gBAAgB,CAAU;IAE3C,YACmB,MAAqB,EAErB,UAA6B,EAE9C,OAA6B;QAJZ,WAAM,GAAN,MAAM,CAAe;QAErB,eAAU,GAAV,UAAU,CAAmB;QAI9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,IAAI,4CAAwB,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAyB;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,mBAAyC,CAAC;QAE9C,sEAAsE;QACtE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,mBAAmB,GAAG,MAAM,IAAA,8CAAsB,EAChD,SAAS,CAAC,QAAQ,EAClB,QAAQ,CAAC,GAAG,CACb,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,IAAI,EAAE,QAAQ,CAAC,SAAS;YACxB,IAAI,EAAE,QAAQ,CAAC,OAAO;SACvB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACjC,QAAQ,CAAC,OAAO,EAChB,SAAS,EACT,IAAI,EACJ,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CACjD,CAAC;QAEF,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;YACrE,mBAAmB;SACpB,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,GAAW;QAClC,IAAI,CAAC;YACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,iDAAyB,CACjC,yCAAyC,GAAG,GAAG,EAC/C,OAAO,EACP,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAxDY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAOR,WAAA,IAAA,eAAM,EAAC,uCAAmB,CAAC,CAAA;IAE3B,WAAA,IAAA,eAAM,EAAC,0CAAsB,CAAC,CAAA;qCAHN,8BAAa;GAL7B,iBAAiB,CAwD7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.module.d.ts","sourceRoot":"","sources":["../src/webhook.module.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAIb,eAAe,EACf,YAAY,EAEb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAkB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAiBlE,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAE1B,MAAM,wCAAwC,CAAC;AAoGhD,qBAEa,aAAc,YAAW,YAAY,EAAE,eAAe;IAE/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHP,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,qBAAqB,EAErC,OAAO,EAAE,oBAAoB;IAGhD,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa;IAa5D,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,yBAAyB,GAAG,aAAa;IAwC3E,YAAY,IAAI,IAAI;IASpB,eAAe,IAAI,IAAI;CAOxB"}
1
+ {"version":3,"file":"webhook.module.d.ts","sourceRoot":"","sources":["../src/webhook.module.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAIb,eAAe,EACf,YAAY,EAEb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAkB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAkBlE,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAE1B,MAAM,wCAAwC,CAAC;AAuGhD,qBAEa,aAAc,YAAW,YAAY,EAAE,eAAe;IAE/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHP,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,qBAAqB,EAErC,OAAO,EAAE,oBAAoB;IAGhD,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa;IAa5D,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,yBAAyB,GAAG,aAAa;IAwC3E,YAAY,IAAI,IAAI;IASpB,eAAe,IAAI,IAAI;CAOxB"}
@@ -24,6 +24,7 @@ const webhook_dispatcher_1 = require("./webhook.dispatcher");
24
24
  const webhook_retry_policy_1 = require("./webhook.retry-policy");
25
25
  const webhook_endpoint_admin_service_1 = require("./webhook.endpoint-admin.service");
26
26
  const webhook_delivery_admin_service_1 = require("./webhook.delivery-admin.service");
27
+ const webhook_retention_admin_service_1 = require("./webhook.retention-admin.service");
27
28
  const webhook_admin_service_1 = require("./webhook.admin.service");
28
29
  const webhook_constants_1 = require("./webhook.constants");
29
30
  const prisma_event_repository_1 = require("./adapters/prisma-event.repository");
@@ -50,7 +51,7 @@ function createPortProviders(options) {
50
51
  {
51
52
  provide: webhook_constants_1.WEBHOOK_DELIVERY_REPOSITORY,
52
53
  useFactory: (vault) => options.deliveryRepository ??
53
- new prisma_delivery_repository_1.PrismaDeliveryRepository(options.prisma, vault),
54
+ new prisma_delivery_repository_1.PrismaDeliveryRepository(options.prisma, vault, options.redaction),
54
55
  inject: [webhook_constants_1.WEBHOOK_SECRET_VAULT],
55
56
  },
56
57
  {
@@ -78,7 +79,8 @@ function createAsyncPortProviders() {
78
79
  },
79
80
  {
80
81
  provide: webhook_constants_1.WEBHOOK_DELIVERY_REPOSITORY,
81
- useFactory: (opts, vault) => opts.deliveryRepository ?? new prisma_delivery_repository_1.PrismaDeliveryRepository(opts.prisma, vault),
82
+ useFactory: (opts, vault) => opts.deliveryRepository ??
83
+ new prisma_delivery_repository_1.PrismaDeliveryRepository(opts.prisma, vault, opts.redaction),
82
84
  inject: [webhook_constants_1.WEBHOOK_MODULE_OPTIONS, webhook_constants_1.WEBHOOK_SECRET_VAULT],
83
85
  },
84
86
  {
@@ -97,12 +99,14 @@ const CORE_PROVIDERS = [
97
99
  webhook_delivery_worker_1.WebhookDeliveryWorker,
98
100
  webhook_endpoint_admin_service_1.WebhookEndpointAdminService,
99
101
  webhook_delivery_admin_service_1.WebhookDeliveryAdminService,
102
+ webhook_retention_admin_service_1.WebhookRetentionAdminService,
100
103
  webhook_admin_service_1.WebhookAdminService,
101
104
  ];
102
105
  const EXPORTS = [
103
106
  webhook_service_1.WebhookService,
104
107
  webhook_endpoint_admin_service_1.WebhookEndpointAdminService,
105
108
  webhook_delivery_admin_service_1.WebhookDeliveryAdminService,
109
+ webhook_retention_admin_service_1.WebhookRetentionAdminService,
106
110
  webhook_admin_service_1.WebhookAdminService,
107
111
  webhook_signer_1.WebhookSigner,
108
112
  webhook_constants_1.WEBHOOK_EVENT_REPOSITORY,
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.module.js","sourceRoot":"","sources":["../src/webhook.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook.module.js","sourceRoot":"","sources":["../src/webhook.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { WebhookDeliveryRepository } from './ports/webhook-delivery.repository';
2
+ import { WebhookModuleOptions } from './interfaces/webhook-options.interface';
3
+ import { WebhookRetentionPurgeResult } from './interfaces/webhook-delivery.interface';
4
+ export declare class WebhookRetentionAdminService {
5
+ private readonly deliveryRepo;
6
+ private readonly options;
7
+ constructor(deliveryRepo: WebhookDeliveryRepository, options: WebhookModuleOptions);
8
+ purgeExpiredData(now?: Date): Promise<WebhookRetentionPurgeResult>;
9
+ }
10
+ //# sourceMappingURL=webhook.retention-admin.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.retention-admin.service.d.ts","sourceRoot":"","sources":["../src/webhook.retention-admin.service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAQtF,qBACa,4BAA4B;IAGrC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,YAAY,EAAE,yBAAyB,EAEvC,OAAO,EAAE,oBAAoB;IAG1C,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAmBzE"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.WebhookRetentionAdminService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const webhook_constants_1 = require("./webhook.constants");
18
+ const ZERO_PURGE_RESULT = {
19
+ eventsPurged: 0,
20
+ deliveriesPurged: 0,
21
+ attemptsPurged: 0,
22
+ };
23
+ let WebhookRetentionAdminService = class WebhookRetentionAdminService {
24
+ deliveryRepo;
25
+ options;
26
+ constructor(deliveryRepo, options) {
27
+ this.deliveryRepo = deliveryRepo;
28
+ this.options = options;
29
+ }
30
+ async purgeExpiredData(now) {
31
+ const retention = this.options.retention;
32
+ if (retention?.eventPayloadRetentionDays == null &&
33
+ retention?.deliveryResponseBodyRetentionDays == null &&
34
+ retention?.attemptResponseBodyRetentionDays == null) {
35
+ return ZERO_PURGE_RESULT;
36
+ }
37
+ if (!this.deliveryRepo.purgeExpiredData) {
38
+ throw new Error('WebhookDeliveryRepository does not support retention purge');
39
+ }
40
+ return this.deliveryRepo.purgeExpiredData(retention, now);
41
+ }
42
+ };
43
+ exports.WebhookRetentionAdminService = WebhookRetentionAdminService;
44
+ exports.WebhookRetentionAdminService = WebhookRetentionAdminService = __decorate([
45
+ (0, common_1.Injectable)(),
46
+ __param(0, (0, common_1.Inject)(webhook_constants_1.WEBHOOK_DELIVERY_REPOSITORY)),
47
+ __param(1, (0, common_1.Inject)(webhook_constants_1.WEBHOOK_MODULE_OPTIONS)),
48
+ __metadata("design:paramtypes", [Object, Object])
49
+ ], WebhookRetentionAdminService);
50
+ //# sourceMappingURL=webhook.retention-admin.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.retention-admin.service.js","sourceRoot":"","sources":["../src/webhook.retention-admin.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,2DAG6B;AAK7B,MAAM,iBAAiB,GAAgC;IACrD,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;IACnB,cAAc,EAAE,CAAC;CAClB,CAAC;AAGK,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAGpB;IAEA;IAJnB,YAEmB,YAAuC,EAEvC,OAA6B;QAF7B,iBAAY,GAAZ,YAAY,CAA2B;QAEvC,YAAO,GAAP,OAAO,CAAsB;IAC7C,CAAC;IAEJ,KAAK,CAAC,gBAAgB,CAAC,GAAU;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAEzC,IACE,SAAS,EAAE,yBAAyB,IAAI,IAAI;YAC5C,SAAS,EAAE,iCAAiC,IAAI,IAAI;YACpD,SAAS,EAAE,gCAAgC,IAAI,IAAI,EACnD,CAAC;YACD,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC;CACF,CAAA;AA3BY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,+CAA2B,CAAC,CAAA;IAEnC,WAAA,IAAA,eAAM,EAAC,0CAAsB,CAAC,CAAA;;GAJtB,4BAA4B,CA2BxC"}
@@ -1,5 +1,5 @@
1
1
  import { WebhookEvent } from './webhook.event';
2
- import { WebhookModuleOptions } from './interfaces/webhook-options.interface';
2
+ import { WebhookModuleOptions, WebhookPublishOptions } from './interfaces/webhook-options.interface';
3
3
  import { WebhookEventRepository } from './ports/webhook-event.repository';
4
4
  import { WebhookEndpointRepository } from './ports/webhook-endpoint.repository';
5
5
  import { WebhookDeliveryRepository } from './ports/webhook-delivery.repository';
@@ -9,10 +9,13 @@ export declare class WebhookService {
9
9
  private readonly deliveryRepo;
10
10
  private readonly logger;
11
11
  private readonly maxAttempts;
12
+ private readonly redaction?;
12
13
  constructor(eventRepo: WebhookEventRepository, endpointRepo: WebhookEndpointRepository, deliveryRepo: WebhookDeliveryRepository, options: WebhookModuleOptions);
13
- send(event: WebhookEvent): Promise<string>;
14
- sendToTenant(tenantId: string, event: WebhookEvent): Promise<string>;
15
- sendToEndpoints(endpointIds: string[], event: WebhookEvent, tenantId?: string): Promise<string>;
14
+ send(event: WebhookEvent, options?: WebhookPublishOptions): Promise<string>;
15
+ sendToTenant(tenantId: string, event: WebhookEvent, options?: WebhookPublishOptions): Promise<string>;
16
+ sendToEndpoints(endpointIds: string[], event: WebhookEvent, tenantIdOrOptions?: string | WebhookPublishOptions, options?: WebhookPublishOptions): Promise<string>;
16
17
  private sendInternal;
18
+ private saveEventInTransaction;
19
+ private sanitizePayload;
17
20
  }
18
21
  //# sourceMappingURL=webhook.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.service.d.ts","sourceRoot":"","sources":["../src/webhook.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAO/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEhF,qBACa,cAAc;IAMvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAT/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAIlB,SAAS,EAAE,sBAAsB,EAEjC,YAAY,EAAE,yBAAyB,EAEvC,YAAY,EAAE,yBAAyB,EAExD,OAAO,EAAE,oBAAoB;IAKzB,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE,eAAe,CACnB,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;YAkCJ,YAAY;CA4C3B"}
1
+ {"version":3,"file":"webhook.service.d.ts","sourceRoot":"","sources":["../src/webhook.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAO/C,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EACL,yBAAyB,EAE1B,MAAM,qCAAqC,CAAC;AAE7C,qBACa,cAAc;IAOvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA0B;gBAIlC,SAAS,EAAE,sBAAsB,EAEjC,YAAY,EAAE,yBAAyB,EAEvC,YAAY,EAAE,yBAAyB,EAExD,OAAO,EAAE,oBAAoB;IAMzB,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3E,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,MAAM,CAAC;IAIZ,eAAe,CACnB,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,YAAY,EACnB,iBAAiB,CAAC,EAAE,MAAM,GAAG,qBAAqB,EAClD,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,MAAM,CAAC;YAmDJ,YAAY;YA2DZ,sBAAsB;IA6BpC,OAAO,CAAC,eAAe;CAOxB"}
@@ -22,23 +22,32 @@ let WebhookService = WebhookService_1 = class WebhookService {
22
22
  deliveryRepo;
23
23
  logger = new common_1.Logger(WebhookService_1.name);
24
24
  maxAttempts;
25
+ redaction;
25
26
  constructor(eventRepo, endpointRepo, deliveryRepo, options) {
26
27
  this.eventRepo = eventRepo;
27
28
  this.endpointRepo = endpointRepo;
28
29
  this.deliveryRepo = deliveryRepo;
29
30
  this.maxAttempts = options.delivery?.maxRetries ?? 5;
31
+ this.redaction = options.redaction;
30
32
  }
31
- async send(event) {
32
- return this.sendInternal(event, undefined);
33
+ async send(event, options) {
34
+ return this.sendInternal(event, undefined, options);
33
35
  }
34
- async sendToTenant(tenantId, event) {
35
- return this.sendInternal(event, tenantId);
36
+ async sendToTenant(tenantId, event, options) {
37
+ return this.sendInternal(event, tenantId, options);
36
38
  }
37
- async sendToEndpoints(endpointIds, event, tenantId) {
38
- const payload = event.toPayload();
39
+ async sendToEndpoints(endpointIds, event, tenantIdOrOptions, options) {
40
+ const tenantId = typeof tenantIdOrOptions === 'string' ? tenantIdOrOptions : undefined;
41
+ const publishOptions = typeof tenantIdOrOptions === 'object' ? tenantIdOrOptions : options;
39
42
  const eventType = event.eventType;
43
+ const payload = this.sanitizePayload(event.toPayload(), eventType, tenantId ?? null);
40
44
  return this.deliveryRepo.runInTransaction(async (tx) => {
41
- const eventId = await this.eventRepo.saveEventInTransaction(tx, eventType, payload, tenantId ?? null);
45
+ const savedEvent = await this.saveEventInTransaction(tx, eventType, payload, tenantId ?? null, publishOptions);
46
+ const eventId = savedEvent.id;
47
+ if (!savedEvent.created) {
48
+ this.logger.debug(`Idempotent event ${eventType} (${eventId}) already exists; skipping targeted delivery creation`);
49
+ return eventId;
50
+ }
42
51
  if (endpointIds.length === 0) {
43
52
  this.logger.debug(`No endpoint IDs provided for event ${eventType} (eventId=${eventId})`);
44
53
  return eventId;
@@ -48,11 +57,16 @@ let WebhookService = WebhookService_1 = class WebhookService {
48
57
  return eventId;
49
58
  });
50
59
  }
51
- async sendInternal(event, tenantId) {
52
- const payload = event.toPayload();
60
+ async sendInternal(event, tenantId, options) {
53
61
  const eventType = event.eventType;
62
+ const payload = this.sanitizePayload(event.toPayload(), eventType, tenantId ?? null);
54
63
  return this.deliveryRepo.runInTransaction(async (tx) => {
55
- const eventId = await this.eventRepo.saveEventInTransaction(tx, eventType, payload, tenantId ?? null);
64
+ const savedEvent = await this.saveEventInTransaction(tx, eventType, payload, tenantId ?? null, options);
65
+ const eventId = savedEvent.id;
66
+ if (!savedEvent.created) {
67
+ this.logger.debug(`Idempotent event ${eventType} (${eventId}) already exists; skipping delivery creation`);
68
+ return eventId;
69
+ }
56
70
  const endpoints = await this.endpointRepo.findMatchingEndpointsInTransaction(tx, eventType, tenantId);
57
71
  if (endpoints.length === 0) {
58
72
  this.logger.debug(`No matching endpoints for event ${eventType} (eventId=${eventId})`);
@@ -64,6 +78,22 @@ let WebhookService = WebhookService_1 = class WebhookService {
64
78
  return eventId;
65
79
  });
66
80
  }
81
+ async saveEventInTransaction(tx, eventType, payload, tenantId, options) {
82
+ if (!options?.idempotencyKey) {
83
+ const id = await this.eventRepo.saveEventInTransaction(tx, eventType, payload, tenantId);
84
+ return { id, created: true };
85
+ }
86
+ if (!this.eventRepo.saveEventOnceInTransaction) {
87
+ throw new Error('WebhookEventRepository does not support idempotent event persistence');
88
+ }
89
+ return this.eventRepo.saveEventOnceInTransaction(tx, eventType, payload, tenantId, {
90
+ idempotencyKey: options.idempotencyKey,
91
+ correlationId: options.correlationId,
92
+ });
93
+ }
94
+ sanitizePayload(payload, eventType, tenantId) {
95
+ return this.redaction?.sanitizePayload?.(payload, { eventType, tenantId }) ?? payload;
96
+ }
67
97
  };
68
98
  exports.WebhookService = WebhookService;
69
99
  exports.WebhookService = WebhookService = WebhookService_1 = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.service.js","sourceRoot":"","sources":["../src/webhook.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA4D;AAE5D,2DAK6B;AAOtB,IAAM,cAAc,sBAApB,MAAM,cAAc;IAMN;IAEA;IAEA;IATF,MAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IACzC,WAAW,CAAS;IAErC,YAEmB,SAAiC,EAEjC,YAAuC,EAEvC,YAAuC,EAExD,OAA6B;QANZ,cAAS,GAAT,SAAS,CAAwB;QAEjC,iBAAY,GAAZ,YAAY,CAA2B;QAEvC,iBAAY,GAAZ,YAAY,CAA2B;QAIxD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAmB;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,KAAmB;QACtD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,WAAqB,EACrB,KAAmB,EACnB,QAAiB;QAEjB,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,sBAAsB,CACzD,EAAE,EACF,SAAS,EACT,OAAO,EACP,QAAQ,IAAI,IAAI,CACjB,CAAC;YAEF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,sCAAsC,SAAS,aAAa,OAAO,GAAG,CACvE,CAAC;gBACF,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,MAAM,IAAI,CAAC,YAAY,CAAC,6BAA6B,CACnD,EAAE,EACF,OAAO,EACP,WAAW,EACX,IAAI,CAAC,WAAW,CACjB,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,SAAS,SAAS,KAAK,OAAO,OAAO,WAAW,CAAC,MAAM,uBAAuB,CAC/E,CAAC;YAEF,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,KAAmB,EACnB,QAA4B;QAE5B,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,sBAAsB,CACzD,EAAE,EACF,SAAS,EACT,OAAO,EACP,QAAQ,IAAI,IAAI,CACjB,CAAC;YAEF,MAAM,SAAS,GACb,MAAM,IAAI,CAAC,YAAY,CAAC,kCAAkC,CACxD,EAAE,EACF,SAAS,EACT,QAAQ,CACT,CAAC;YAEJ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,mCAAmC,SAAS,aAAa,OAAO,GAAG,CACpE,CAAC;gBACF,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,YAAY,CAAC,6BAA6B,CACnD,EAAE,EACF,OAAO,EACP,WAAW,EACX,IAAI,CAAC,WAAW,CACjB,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,SAAS,SAAS,KAAK,OAAO,OAAO,SAAS,CAAC,MAAM,cAAc,CACpE,CAAC;YAEF,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA3GY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,4CAAwB,CAAC,CAAA;IAEhC,WAAA,IAAA,eAAM,EAAC,+CAA2B,CAAC,CAAA;IAEnC,WAAA,IAAA,eAAM,EAAC,+CAA2B,CAAC,CAAA;IAEnC,WAAA,IAAA,eAAM,EAAC,0CAAsB,CAAC,CAAA;;GAXtB,cAAc,CA2G1B"}
1
+ {"version":3,"file":"webhook.service.js","sourceRoot":"","sources":["../src/webhook.service.ts"],"names":[],"mappings":"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"}