@nestarc/webhook 0.9.0 → 0.10.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.
- package/README.md +76 -25
- package/dist/adapters/fetch-http-client.d.ts.map +1 -1
- package/dist/adapters/fetch-http-client.js +1 -1
- package/dist/adapters/fetch-http-client.js.map +1 -1
- package/dist/adapters/plaintext-secret-vault.d.ts.map +1 -1
- package/dist/adapters/plaintext-secret-vault.js +12 -2
- package/dist/adapters/plaintext-secret-vault.js.map +1 -1
- package/dist/adapters/prisma-delivery.repository.d.ts +8 -4
- package/dist/adapters/prisma-delivery.repository.d.ts.map +1 -1
- package/dist/adapters/prisma-delivery.repository.js +134 -77
- package/dist/adapters/prisma-delivery.repository.js.map +1 -1
- package/dist/adapters/prisma-endpoint.repository.d.ts +4 -3
- package/dist/adapters/prisma-endpoint.repository.d.ts.map +1 -1
- package/dist/adapters/prisma-endpoint.repository.js +39 -6
- package/dist/adapters/prisma-endpoint.repository.js.map +1 -1
- package/dist/index.d.ts +11 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/interfaces/webhook-delivery.interface.d.ts +6 -2
- package/dist/interfaces/webhook-delivery.interface.d.ts.map +1 -1
- package/dist/interfaces/webhook-endpoint.interface.d.ts +11 -2
- package/dist/interfaces/webhook-endpoint.interface.d.ts.map +1 -1
- package/dist/interfaces/webhook-options.interface.d.ts +8 -6
- package/dist/interfaces/webhook-options.interface.d.ts.map +1 -1
- package/dist/ports/webhook-delivery.repository.d.ts +28 -10
- package/dist/ports/webhook-delivery.repository.d.ts.map +1 -1
- package/dist/ports/webhook-endpoint.repository.d.ts +24 -4
- package/dist/ports/webhook-endpoint.repository.d.ts.map +1 -1
- package/dist/ports/webhook-event.repository.d.ts +3 -1
- package/dist/ports/webhook-event.repository.d.ts.map +1 -1
- package/dist/ports/webhook-http-client.d.ts +4 -0
- package/dist/ports/webhook-http-client.d.ts.map +1 -1
- package/dist/ports/webhook-secret-vault.d.ts +1 -0
- package/dist/ports/webhook-secret-vault.d.ts.map +1 -1
- package/dist/webhook.admin.service.d.ts +4 -3
- package/dist/webhook.admin.service.d.ts.map +1 -1
- package/dist/webhook.admin.service.js +5 -2
- package/dist/webhook.admin.service.js.map +1 -1
- package/dist/webhook.circuit-breaker.d.ts +6 -4
- package/dist/webhook.circuit-breaker.d.ts.map +1 -1
- package/dist/webhook.circuit-breaker.js +10 -8
- package/dist/webhook.circuit-breaker.js.map +1 -1
- package/dist/webhook.constants.d.ts +9 -2
- package/dist/webhook.constants.d.ts.map +1 -1
- package/dist/webhook.constants.js +11 -4
- package/dist/webhook.constants.js.map +1 -1
- package/dist/webhook.delivery-worker.d.ts +4 -0
- package/dist/webhook.delivery-worker.d.ts.map +1 -1
- package/dist/webhook.delivery-worker.js +49 -22
- package/dist/webhook.delivery-worker.js.map +1 -1
- package/dist/webhook.dispatcher.d.ts +1 -0
- package/dist/webhook.dispatcher.d.ts.map +1 -1
- package/dist/webhook.dispatcher.js +13 -6
- package/dist/webhook.dispatcher.js.map +1 -1
- package/dist/webhook.endpoint-admin.service.d.ts +4 -1
- package/dist/webhook.endpoint-admin.service.d.ts.map +1 -1
- package/dist/webhook.endpoint-admin.service.js +36 -9
- package/dist/webhook.endpoint-admin.service.js.map +1 -1
- package/dist/webhook.module.d.ts.map +1 -1
- package/dist/webhook.module.js +22 -13
- package/dist/webhook.module.js.map +1 -1
- package/package.json +4 -4
- package/src/sql/create-webhook-tables.sql +1 -1
- package/src/sql/migrations/v0.9.0.sql +32 -0
|
@@ -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;
|
|
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"}
|
package/dist/webhook.module.js
CHANGED
|
@@ -32,21 +32,26 @@ const prisma_delivery_repository_1 = require("./adapters/prisma-delivery.reposit
|
|
|
32
32
|
const fetch_http_client_1 = require("./adapters/fetch-http-client");
|
|
33
33
|
const plaintext_secret_vault_1 = require("./adapters/plaintext-secret-vault");
|
|
34
34
|
function createPortProviders(options) {
|
|
35
|
-
const vault = options.secretVault ?? new plaintext_secret_vault_1.PlaintextSecretVault();
|
|
36
35
|
return [
|
|
36
|
+
{
|
|
37
|
+
provide: webhook_constants_1.WEBHOOK_SECRET_VAULT,
|
|
38
|
+
useFactory: () => options.secretVault ?? new plaintext_secret_vault_1.PlaintextSecretVault(),
|
|
39
|
+
},
|
|
37
40
|
{
|
|
38
41
|
provide: webhook_constants_1.WEBHOOK_EVENT_REPOSITORY,
|
|
39
42
|
useFactory: () => options.eventRepository ?? new prisma_event_repository_1.PrismaEventRepository(options.prisma),
|
|
40
43
|
},
|
|
41
44
|
{
|
|
42
45
|
provide: webhook_constants_1.WEBHOOK_ENDPOINT_REPOSITORY,
|
|
43
|
-
useFactory: () => options.endpointRepository ??
|
|
46
|
+
useFactory: (vault) => options.endpointRepository ??
|
|
44
47
|
new prisma_endpoint_repository_1.PrismaEndpointRepository(options.prisma, vault),
|
|
48
|
+
inject: [webhook_constants_1.WEBHOOK_SECRET_VAULT],
|
|
45
49
|
},
|
|
46
50
|
{
|
|
47
51
|
provide: webhook_constants_1.WEBHOOK_DELIVERY_REPOSITORY,
|
|
48
|
-
useFactory: () => options.deliveryRepository ??
|
|
52
|
+
useFactory: (vault) => options.deliveryRepository ??
|
|
49
53
|
new prisma_delivery_repository_1.PrismaDeliveryRepository(options.prisma, vault),
|
|
54
|
+
inject: [webhook_constants_1.WEBHOOK_SECRET_VAULT],
|
|
50
55
|
},
|
|
51
56
|
{
|
|
52
57
|
provide: webhook_constants_1.WEBHOOK_HTTP_CLIENT,
|
|
@@ -56,6 +61,11 @@ function createPortProviders(options) {
|
|
|
56
61
|
}
|
|
57
62
|
function createAsyncPortProviders() {
|
|
58
63
|
return [
|
|
64
|
+
{
|
|
65
|
+
provide: webhook_constants_1.WEBHOOK_SECRET_VAULT,
|
|
66
|
+
useFactory: (opts) => opts.secretVault ?? new plaintext_secret_vault_1.PlaintextSecretVault(),
|
|
67
|
+
inject: [webhook_constants_1.WEBHOOK_MODULE_OPTIONS],
|
|
68
|
+
},
|
|
59
69
|
{
|
|
60
70
|
provide: webhook_constants_1.WEBHOOK_EVENT_REPOSITORY,
|
|
61
71
|
useFactory: (opts) => opts.eventRepository ?? new prisma_event_repository_1.PrismaEventRepository(opts.prisma),
|
|
@@ -63,19 +73,13 @@ function createAsyncPortProviders() {
|
|
|
63
73
|
},
|
|
64
74
|
{
|
|
65
75
|
provide: webhook_constants_1.WEBHOOK_ENDPOINT_REPOSITORY,
|
|
66
|
-
useFactory: (opts) =>
|
|
67
|
-
|
|
68
|
-
return opts.endpointRepository ?? new prisma_endpoint_repository_1.PrismaEndpointRepository(opts.prisma, vault);
|
|
69
|
-
},
|
|
70
|
-
inject: [webhook_constants_1.WEBHOOK_MODULE_OPTIONS],
|
|
76
|
+
useFactory: (opts, vault) => opts.endpointRepository ?? new prisma_endpoint_repository_1.PrismaEndpointRepository(opts.prisma, vault),
|
|
77
|
+
inject: [webhook_constants_1.WEBHOOK_MODULE_OPTIONS, webhook_constants_1.WEBHOOK_SECRET_VAULT],
|
|
71
78
|
},
|
|
72
79
|
{
|
|
73
80
|
provide: webhook_constants_1.WEBHOOK_DELIVERY_REPOSITORY,
|
|
74
|
-
useFactory: (opts) =>
|
|
75
|
-
|
|
76
|
-
return opts.deliveryRepository ?? new prisma_delivery_repository_1.PrismaDeliveryRepository(opts.prisma, vault);
|
|
77
|
-
},
|
|
78
|
-
inject: [webhook_constants_1.WEBHOOK_MODULE_OPTIONS],
|
|
81
|
+
useFactory: (opts, vault) => opts.deliveryRepository ?? new prisma_delivery_repository_1.PrismaDeliveryRepository(opts.prisma, vault),
|
|
82
|
+
inject: [webhook_constants_1.WEBHOOK_MODULE_OPTIONS, webhook_constants_1.WEBHOOK_SECRET_VAULT],
|
|
79
83
|
},
|
|
80
84
|
{
|
|
81
85
|
provide: webhook_constants_1.WEBHOOK_HTTP_CLIENT,
|
|
@@ -101,6 +105,11 @@ const EXPORTS = [
|
|
|
101
105
|
webhook_delivery_admin_service_1.WebhookDeliveryAdminService,
|
|
102
106
|
webhook_admin_service_1.WebhookAdminService,
|
|
103
107
|
webhook_signer_1.WebhookSigner,
|
|
108
|
+
webhook_constants_1.WEBHOOK_EVENT_REPOSITORY,
|
|
109
|
+
webhook_constants_1.WEBHOOK_ENDPOINT_REPOSITORY,
|
|
110
|
+
webhook_constants_1.WEBHOOK_DELIVERY_REPOSITORY,
|
|
111
|
+
webhook_constants_1.WEBHOOK_HTTP_CLIENT,
|
|
112
|
+
webhook_constants_1.WEBHOOK_SECRET_VAULT,
|
|
104
113
|
];
|
|
105
114
|
let WebhookModule = WebhookModule_1 = class WebhookModule {
|
|
106
115
|
schedulerRegistry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.module.js","sourceRoot":"","sources":["../src/webhook.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,+CAAqE;AACrE,uDAAmD;AACnD,uEAAkE;AAClE,qDAAiD;AACjD,uEAAkE;AAClE,6DAAyD;AACzD,iEAA4D;AAC5D,qFAA+E;AAC/E,qFAA+E;AAC/E,mEAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"webhook.module.js","sourceRoot":"","sources":["../src/webhook.module.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestarc/webhook",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Outbound webhook delivery for NestJS — HMAC signing, exponential retry, circuit breaker, delivery logs, fan-out, Standard Webhooks compatible",
|
|
5
5
|
"author": "nestarc",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"@nestjs/schedule": "^5.0.0",
|
|
34
34
|
"@nestjs/testing": "^11.0.0",
|
|
35
35
|
"@prisma/client": "^6.0.0",
|
|
36
|
-
"@types/jest": "^
|
|
37
|
-
"@types/node": "^
|
|
38
|
-
"jest": "^
|
|
36
|
+
"@types/jest": "^30.0.0",
|
|
37
|
+
"@types/node": "^25.6.0",
|
|
38
|
+
"jest": "^30.3.0",
|
|
39
39
|
"prisma": "^6.19.3",
|
|
40
40
|
"reflect-metadata": "^0.2.0",
|
|
41
41
|
"rxjs": "^7.8.0",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
-- @nestarc/webhook — PostgreSQL migration
|
|
2
|
-
-- Creates the
|
|
2
|
+
-- Creates the four core tables for outbound webhook delivery.
|
|
3
3
|
-- Run this migration against your PostgreSQL database before using the module.
|
|
4
4
|
|
|
5
5
|
-- Required for gen_random_uuid() on PostgreSQL < 13
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
-- @nestarc/webhook v0.9.0 — additive migration
|
|
2
|
+
-- Adds per-attempt audit logs, endpoint snapshots, and secret rotation overlap.
|
|
3
|
+
|
|
4
|
+
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
|
5
|
+
|
|
6
|
+
ALTER TABLE webhook_endpoints
|
|
7
|
+
ADD COLUMN IF NOT EXISTS previous_secret TEXT,
|
|
8
|
+
ADD COLUMN IF NOT EXISTS previous_secret_expires_at TIMESTAMPTZ;
|
|
9
|
+
|
|
10
|
+
ALTER TABLE webhook_deliveries
|
|
11
|
+
ADD COLUMN IF NOT EXISTS endpoint_url_snapshot TEXT,
|
|
12
|
+
ADD COLUMN IF NOT EXISTS signing_secret_snapshot TEXT,
|
|
13
|
+
ADD COLUMN IF NOT EXISTS secondary_signing_secret_snapshot TEXT;
|
|
14
|
+
|
|
15
|
+
CREATE TABLE IF NOT EXISTS webhook_delivery_attempts (
|
|
16
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
17
|
+
delivery_id UUID NOT NULL REFERENCES webhook_deliveries(id) ON DELETE CASCADE,
|
|
18
|
+
attempt_number INT NOT NULL,
|
|
19
|
+
status VARCHAR(20) NOT NULL
|
|
20
|
+
CHECK (status IN ('PENDING', 'SENDING', 'SENT', 'FAILED')),
|
|
21
|
+
response_status INT,
|
|
22
|
+
response_body TEXT,
|
|
23
|
+
response_body_truncated BOOLEAN NOT NULL DEFAULT FALSE,
|
|
24
|
+
latency_ms INT,
|
|
25
|
+
last_error TEXT,
|
|
26
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
27
|
+
CONSTRAINT webhook_delivery_attempts_delivery_id_attempt_number_key
|
|
28
|
+
UNIQUE (delivery_id, attempt_number)
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
CREATE INDEX IF NOT EXISTS idx_delivery_attempts_delivery_created
|
|
32
|
+
ON webhook_delivery_attempts (delivery_id, created_at);
|