@rytass/bpm-core-nestjs-module 0.13.2 → 0.13.4
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/CHANGELOG.md +53 -0
- package/package.json +13 -6
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/attachment/attachment-storage.provider.d.ts +11 -0
- package/src/lib/attachment/attachment-storage.provider.js +15 -1
- package/src/lib/attachment/attachment-storage.provider.js.map +1 -1
- package/src/lib/attachment/attachment.module.js +16 -1
- package/src/lib/attachment/attachment.module.js.map +1 -1
- package/src/lib/bpm/bpm-root-options.d.ts +134 -0
- package/src/lib/bpm/bpm-root-options.js +61 -0
- package/src/lib/bpm/bpm-root-options.js.map +1 -0
- package/src/lib/bpm/bpm-root.module.d.ts +101 -137
- package/src/lib/bpm/bpm-root.module.js +83 -118
- package/src/lib/bpm/bpm-root.module.js.map +1 -1
- package/src/lib/bpm/index.d.ts +1 -0
- package/src/lib/bpm/index.js +1 -0
- package/src/lib/bpm/index.js.map +1 -1
- package/src/lib/calendar/business-calendar.provider.d.ts +8 -4
- package/src/lib/calendar/business-calendar.provider.js +15 -6
- package/src/lib/calendar/business-calendar.provider.js.map +1 -1
- package/src/lib/common/outbox.d.ts +26 -0
- package/src/lib/common/outbox.js +64 -0
- package/src/lib/common/outbox.js.map +1 -0
- package/src/lib/delegation/delegation.service.js +7 -7
- package/src/lib/delegation/delegation.service.js.map +1 -1
- package/src/lib/form-data-source/form-data-source.module.js +2 -4
- package/src/lib/form-data-source/form-data-source.module.js.map +1 -1
- package/src/lib/form-data-source/form-data-source.provider.d.ts +14 -0
- package/src/lib/form-data-source/form-data-source.provider.js +23 -0
- package/src/lib/form-data-source/form-data-source.provider.js.map +1 -0
- package/src/lib/form-data-source/index.d.ts +1 -0
- package/src/lib/form-data-source/index.js +1 -0
- package/src/lib/form-data-source/index.js.map +1 -1
- package/src/lib/identity/default-member-resolver.d.ts +39 -0
- package/src/lib/identity/default-member-resolver.js +81 -0
- package/src/lib/identity/default-member-resolver.js.map +1 -0
- package/src/lib/identity/identity.module.d.ts +12 -2
- package/src/lib/identity/identity.module.js +2 -1
- package/src/lib/identity/identity.module.js.map +1 -1
- package/src/lib/identity/index.d.ts +1 -0
- package/src/lib/identity/index.js +1 -0
- package/src/lib/identity/index.js.map +1 -1
- package/src/lib/migrations/0000000023000-workflow-webhook-deliveries.d.ts +17 -0
- package/src/lib/migrations/0000000023000-workflow-webhook-deliveries.js +61 -0
- package/src/lib/migrations/0000000023000-workflow-webhook-deliveries.js.map +1 -0
- package/src/lib/migrations/0000000024000-workflow-webhook-endpoints.d.ts +16 -0
- package/src/lib/migrations/0000000024000-workflow-webhook-endpoints.js +71 -0
- package/src/lib/migrations/0000000024000-workflow-webhook-endpoints.js.map +1 -0
- package/src/lib/migrations/index.d.ts +2 -0
- package/src/lib/migrations/index.js +6 -0
- package/src/lib/migrations/index.js.map +1 -1
- package/src/lib/notification/notification-delivery.service.js +4 -57
- package/src/lib/notification/notification-delivery.service.js.map +1 -1
- package/src/lib/notification/notification.service.js +4 -3
- package/src/lib/notification/notification.service.js.map +1 -1
- package/src/lib/template/template.service.d.ts +9 -0
- package/src/lib/template/template.service.js +31 -0
- package/src/lib/template/template.service.js.map +1 -1
- package/src/lib/template/workflow-definition.validator.js +54 -1
- package/src/lib/template/workflow-definition.validator.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.enums.d.ts +3 -1
- package/src/lib/workflow-engine/workflow-engine.enums.js +2 -0
- package/src/lib/workflow-engine/workflow-engine.enums.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.module.js +3 -0
- package/src/lib/workflow-engine/workflow-engine.module.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.service.d.ts +5 -2
- package/src/lib/workflow-engine/workflow-engine.service.js +142 -26
- package/src/lib/workflow-engine/workflow-engine.service.js.map +1 -1
- package/src/lib/workflow-webhook/index.d.ts +24 -0
- package/src/lib/workflow-webhook/index.js +28 -0
- package/src/lib/workflow-webhook/index.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-allowlist.d.ts +38 -0
- package/src/lib/workflow-webhook/workflow-webhook-allowlist.js +296 -0
- package/src/lib/workflow-webhook/workflow-webhook-allowlist.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-database-source.d.ts +33 -0
- package/src/lib/workflow-webhook/workflow-webhook-database-source.js +129 -0
- package/src/lib/workflow-webhook/workflow-webhook-database-source.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery-scheduler.service.d.ts +25 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery-scheduler.service.js +92 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery-scheduler.service.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.entity.d.ts +53 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.entity.js +97 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.entity.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.enums.d.ts +28 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.enums.js +36 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.enums.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.object.d.ts +28 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.object.js +88 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.object.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.resolver.d.ts +9 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.resolver.js +66 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.resolver.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.service.d.ts +116 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.service.js +705 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.service.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.subscriber.d.ts +23 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.subscriber.js +85 -0
- package/src/lib/workflow-webhook/workflow-webhook-delivery.subscriber.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-endpoint-admin.dto.d.ts +85 -0
- package/src/lib/workflow-webhook/workflow-webhook-endpoint-admin.dto.js +345 -0
- package/src/lib/workflow-webhook/workflow-webhook-endpoint-admin.dto.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-endpoint-admin.resolver.d.ts +23 -0
- package/src/lib/workflow-webhook/workflow-webhook-endpoint-admin.resolver.js +159 -0
- package/src/lib/workflow-webhook/workflow-webhook-endpoint-admin.resolver.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-endpoint-admin.service.d.ts +93 -0
- package/src/lib/workflow-webhook/workflow-webhook-endpoint-admin.service.js +464 -0
- package/src/lib/workflow-webhook/workflow-webhook-endpoint-admin.service.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-endpoint.entity.d.ts +52 -0
- package/src/lib/workflow-webhook/workflow-webhook-endpoint.entity.js +135 -0
- package/src/lib/workflow-webhook/workflow-webhook-endpoint.entity.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-enqueue.d.ts +46 -0
- package/src/lib/workflow-webhook/workflow-webhook-enqueue.js +134 -0
- package/src/lib/workflow-webhook/workflow-webhook-enqueue.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-options.d.ts +86 -0
- package/src/lib/workflow-webhook/workflow-webhook-options.js +88 -0
- package/src/lib/workflow-webhook/workflow-webhook-options.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-options.module.d.ts +18 -0
- package/src/lib/workflow-webhook/workflow-webhook-options.module.js +57 -0
- package/src/lib/workflow-webhook/workflow-webhook-options.module.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook-secret-cipher.d.ts +20 -0
- package/src/lib/workflow-webhook/workflow-webhook-secret-cipher.js +66 -0
- package/src/lib/workflow-webhook/workflow-webhook-secret-cipher.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook.errors.d.ts +35 -0
- package/src/lib/workflow-webhook/workflow-webhook.errors.js +41 -0
- package/src/lib/workflow-webhook/workflow-webhook.errors.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook.module.d.ts +9 -0
- package/src/lib/workflow-webhook/workflow-webhook.module.js +62 -0
- package/src/lib/workflow-webhook/workflow-webhook.module.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook.provider.d.ts +12 -0
- package/src/lib/workflow-webhook/workflow-webhook.provider.js +21 -0
- package/src/lib/workflow-webhook/workflow-webhook.provider.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook.queries.d.ts +38 -0
- package/src/lib/workflow-webhook/workflow-webhook.queries.js +142 -0
- package/src/lib/workflow-webhook/workflow-webhook.queries.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook.service.d.ts +50 -0
- package/src/lib/workflow-webhook/workflow-webhook.service.js +221 -0
- package/src/lib/workflow-webhook/workflow-webhook.service.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook.types.d.ts +127 -0
- package/src/lib/workflow-webhook/workflow-webhook.types.js +33 -0
- package/src/lib/workflow-webhook/workflow-webhook.types.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook.validator.d.ts +20 -0
- package/src/lib/workflow-webhook/workflow-webhook.validator.js +97 -0
- package/src/lib/workflow-webhook/workflow-webhook.validator.js.map +1 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkflowWebhookEndpointAdminResolver = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const graphql_1 = require("@nestjs/graphql");
|
|
6
|
+
const bpm_auth_1 = require("../bpm-auth");
|
|
7
|
+
const workflow_webhook_endpoint_admin_dto_1 = require("./workflow-webhook-endpoint-admin.dto");
|
|
8
|
+
const workflow_webhook_endpoint_admin_service_1 = require("./workflow-webhook-endpoint-admin.service");
|
|
9
|
+
const workflow_webhook_queries_1 = require("./workflow-webhook.queries");
|
|
10
|
+
const workflow_webhook_service_1 = require("./workflow-webhook.service");
|
|
11
|
+
/**
|
|
12
|
+
* Database webhook endpoint management (ADR 18 §3.13), administrators only.
|
|
13
|
+
* Every object is mapped field by field, so an encrypted column cannot ride
|
|
14
|
+
* along into a response.
|
|
15
|
+
*/
|
|
16
|
+
let WorkflowWebhookEndpointAdminResolver = class WorkflowWebhookEndpointAdminResolver {
|
|
17
|
+
constructor(adminService, webhookService) {
|
|
18
|
+
this.adminService = adminService;
|
|
19
|
+
this.webhookService = webhookService;
|
|
20
|
+
}
|
|
21
|
+
workflowWebhookEndpointManagement() {
|
|
22
|
+
return Object.assign(new workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookEndpointManagementObject(), {
|
|
23
|
+
allowedUrlPatterns: this.webhookService
|
|
24
|
+
.readOptions()
|
|
25
|
+
.allowedUrlPatterns.map((pattern) => pattern.source),
|
|
26
|
+
enabled: this.adminService.isEnabled(),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
async workflowWebhookManagedEndpoints() {
|
|
30
|
+
return (await this.adminService.list()).map((row) => this.toObject(row));
|
|
31
|
+
}
|
|
32
|
+
async workflowWebhookEndpointAudits(endpointId) {
|
|
33
|
+
return (await this.adminService.listAudits(endpointId)).map((row) => toAuditObject(row));
|
|
34
|
+
}
|
|
35
|
+
async createWorkflowWebhookEndpoint(input, currentMemberId) {
|
|
36
|
+
return this.toObject(await this.adminService.create(input, currentMemberId ?? null));
|
|
37
|
+
}
|
|
38
|
+
async updateWorkflowWebhookEndpoint(input, currentMemberId) {
|
|
39
|
+
const { id, ...data } = input;
|
|
40
|
+
return this.toObject(await this.adminService.update(id, data, currentMemberId ?? null));
|
|
41
|
+
}
|
|
42
|
+
async setWorkflowWebhookEndpointActive(id, active, currentMemberId) {
|
|
43
|
+
return this.toObject(await this.adminService.setActive(id, active, currentMemberId ?? null));
|
|
44
|
+
}
|
|
45
|
+
/** `signingSecret: null` stops signing. The new value is never returned. */
|
|
46
|
+
async rotateWorkflowWebhookEndpointSecret(id, signingSecret, currentMemberId) {
|
|
47
|
+
return this.toObject(await this.adminService.rotateSecret(id, signingSecret, currentMemberId ?? null));
|
|
48
|
+
}
|
|
49
|
+
async testWorkflowWebhookEndpoint(id, currentMemberId) {
|
|
50
|
+
return Object.assign(new workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookEndpointTestResultObject(), await this.adminService.testSend(id, currentMemberId ?? null));
|
|
51
|
+
}
|
|
52
|
+
toObject(row) {
|
|
53
|
+
return Object.assign(new workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookManagedEndpointObject(), {
|
|
54
|
+
active: row.isActive,
|
|
55
|
+
createdAt: row.createdAt,
|
|
56
|
+
createdByMemberId: row.createdByMemberId,
|
|
57
|
+
deprecated: row.deprecated,
|
|
58
|
+
description: row.description,
|
|
59
|
+
hasSigningSecret: Boolean(row.encryptedSigningSecret),
|
|
60
|
+
headerNames: (0, workflow_webhook_endpoint_admin_service_1.readWorkflowWebhookHeaderNames)(row, this.webhookService.readOptions().secretEncryptionKey),
|
|
61
|
+
id: row.id,
|
|
62
|
+
key: row.key,
|
|
63
|
+
label: row.label,
|
|
64
|
+
method: row.method,
|
|
65
|
+
parameters: row.parameters.map((parameter) => Object.assign(new workflow_webhook_queries_1.WorkflowWebhookParameterObject(), {
|
|
66
|
+
description: parameter.description ?? null,
|
|
67
|
+
key: parameter.key,
|
|
68
|
+
label: parameter.label,
|
|
69
|
+
required: parameter.required,
|
|
70
|
+
type: parameter.type,
|
|
71
|
+
})),
|
|
72
|
+
secretRotatedAt: row.secretRotatedAt,
|
|
73
|
+
timeoutMs: row.timeoutMs,
|
|
74
|
+
updatedAt: row.updatedAt,
|
|
75
|
+
updatedByMemberId: row.updatedByMemberId,
|
|
76
|
+
url: row.url,
|
|
77
|
+
version: row.version,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
exports.WorkflowWebhookEndpointAdminResolver = WorkflowWebhookEndpointAdminResolver;
|
|
82
|
+
tslib_1.__decorate([
|
|
83
|
+
(0, graphql_1.Query)(() => workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookEndpointManagementObject),
|
|
84
|
+
tslib_1.__metadata("design:type", Function),
|
|
85
|
+
tslib_1.__metadata("design:paramtypes", []),
|
|
86
|
+
tslib_1.__metadata("design:returntype", workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookEndpointManagementObject)
|
|
87
|
+
], WorkflowWebhookEndpointAdminResolver.prototype, "workflowWebhookEndpointManagement", null);
|
|
88
|
+
tslib_1.__decorate([
|
|
89
|
+
(0, graphql_1.Query)(() => [workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookManagedEndpointObject]),
|
|
90
|
+
tslib_1.__metadata("design:type", Function),
|
|
91
|
+
tslib_1.__metadata("design:paramtypes", []),
|
|
92
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
93
|
+
], WorkflowWebhookEndpointAdminResolver.prototype, "workflowWebhookManagedEndpoints", null);
|
|
94
|
+
tslib_1.__decorate([
|
|
95
|
+
(0, graphql_1.Query)(() => [workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookEndpointAuditObject]),
|
|
96
|
+
tslib_1.__param(0, (0, graphql_1.Args)('endpointId', { type: () => graphql_1.ID })),
|
|
97
|
+
tslib_1.__metadata("design:type", Function),
|
|
98
|
+
tslib_1.__metadata("design:paramtypes", [String]),
|
|
99
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
100
|
+
], WorkflowWebhookEndpointAdminResolver.prototype, "workflowWebhookEndpointAudits", null);
|
|
101
|
+
tslib_1.__decorate([
|
|
102
|
+
(0, graphql_1.Mutation)(() => workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookManagedEndpointObject),
|
|
103
|
+
tslib_1.__param(0, (0, graphql_1.Args)('input')),
|
|
104
|
+
tslib_1.__param(1, (0, bpm_auth_1.BPMCurrentMemberId)()),
|
|
105
|
+
tslib_1.__metadata("design:type", Function),
|
|
106
|
+
tslib_1.__metadata("design:paramtypes", [workflow_webhook_endpoint_admin_dto_1.CreateWorkflowWebhookEndpointInput, Object]),
|
|
107
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
108
|
+
], WorkflowWebhookEndpointAdminResolver.prototype, "createWorkflowWebhookEndpoint", null);
|
|
109
|
+
tslib_1.__decorate([
|
|
110
|
+
(0, graphql_1.Mutation)(() => workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookManagedEndpointObject),
|
|
111
|
+
tslib_1.__param(0, (0, graphql_1.Args)('input')),
|
|
112
|
+
tslib_1.__param(1, (0, bpm_auth_1.BPMCurrentMemberId)()),
|
|
113
|
+
tslib_1.__metadata("design:type", Function),
|
|
114
|
+
tslib_1.__metadata("design:paramtypes", [workflow_webhook_endpoint_admin_dto_1.UpdateWorkflowWebhookEndpointInput, Object]),
|
|
115
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
116
|
+
], WorkflowWebhookEndpointAdminResolver.prototype, "updateWorkflowWebhookEndpoint", null);
|
|
117
|
+
tslib_1.__decorate([
|
|
118
|
+
(0, graphql_1.Mutation)(() => workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookManagedEndpointObject),
|
|
119
|
+
tslib_1.__param(0, (0, graphql_1.Args)('id', { type: () => graphql_1.ID })),
|
|
120
|
+
tslib_1.__param(1, (0, graphql_1.Args)('active')),
|
|
121
|
+
tslib_1.__param(2, (0, bpm_auth_1.BPMCurrentMemberId)()),
|
|
122
|
+
tslib_1.__metadata("design:type", Function),
|
|
123
|
+
tslib_1.__metadata("design:paramtypes", [String, Boolean, Object]),
|
|
124
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
125
|
+
], WorkflowWebhookEndpointAdminResolver.prototype, "setWorkflowWebhookEndpointActive", null);
|
|
126
|
+
tslib_1.__decorate([
|
|
127
|
+
(0, graphql_1.Mutation)(() => workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookManagedEndpointObject),
|
|
128
|
+
tslib_1.__param(0, (0, graphql_1.Args)('id', { type: () => graphql_1.ID })),
|
|
129
|
+
tslib_1.__param(1, (0, graphql_1.Args)('signingSecret', { nullable: true, type: () => String })),
|
|
130
|
+
tslib_1.__param(2, (0, bpm_auth_1.BPMCurrentMemberId)()),
|
|
131
|
+
tslib_1.__metadata("design:type", Function),
|
|
132
|
+
tslib_1.__metadata("design:paramtypes", [String, Object, Object]),
|
|
133
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
134
|
+
], WorkflowWebhookEndpointAdminResolver.prototype, "rotateWorkflowWebhookEndpointSecret", null);
|
|
135
|
+
tslib_1.__decorate([
|
|
136
|
+
(0, graphql_1.Mutation)(() => workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookEndpointTestResultObject),
|
|
137
|
+
tslib_1.__param(0, (0, graphql_1.Args)('id', { type: () => graphql_1.ID })),
|
|
138
|
+
tslib_1.__param(1, (0, bpm_auth_1.BPMCurrentMemberId)()),
|
|
139
|
+
tslib_1.__metadata("design:type", Function),
|
|
140
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
141
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
142
|
+
], WorkflowWebhookEndpointAdminResolver.prototype, "testWorkflowWebhookEndpoint", null);
|
|
143
|
+
exports.WorkflowWebhookEndpointAdminResolver = WorkflowWebhookEndpointAdminResolver = tslib_1.__decorate([
|
|
144
|
+
(0, graphql_1.Resolver)(),
|
|
145
|
+
(0, bpm_auth_1.BPMAdminOnly)(),
|
|
146
|
+
tslib_1.__metadata("design:paramtypes", [workflow_webhook_endpoint_admin_service_1.WorkflowWebhookEndpointAdminService,
|
|
147
|
+
workflow_webhook_service_1.WorkflowWebhookService])
|
|
148
|
+
], WorkflowWebhookEndpointAdminResolver);
|
|
149
|
+
function toAuditObject(row) {
|
|
150
|
+
return Object.assign(new workflow_webhook_endpoint_admin_dto_1.WorkflowWebhookEndpointAuditObject(), {
|
|
151
|
+
action: row.action,
|
|
152
|
+
actorMemberId: row.actorMemberId,
|
|
153
|
+
changedFields: row.changedFields,
|
|
154
|
+
createdAt: row.createdAt,
|
|
155
|
+
endpointId: row.endpointId,
|
|
156
|
+
id: row.id,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=workflow-webhook-endpoint-admin.resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-webhook-endpoint-admin.resolver.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/workflow-webhook/workflow-webhook-endpoint-admin.resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { NotifyWebhookParameterType } from '@rytass/bpm-core-shared/workflow';
|
|
2
|
+
import { Repository } from 'typeorm';
|
|
3
|
+
import { DatabaseWorkflowWebhookEndpointSource } from './workflow-webhook-database-source';
|
|
4
|
+
import { WorkflowWebhookDeliveryService, WorkflowWebhookTestOutcome } from './workflow-webhook-delivery.service';
|
|
5
|
+
import { WorkflowWebhookEndpointAuditEntity, WorkflowWebhookEndpointEntity } from './workflow-webhook-endpoint.entity';
|
|
6
|
+
import { BPMResolvedWorkflowWebhookOptions } from './workflow-webhook-options';
|
|
7
|
+
import { WorkflowWebhookService } from './workflow-webhook.service';
|
|
8
|
+
export interface WorkflowWebhookEndpointHeaderData {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly value: string;
|
|
11
|
+
}
|
|
12
|
+
export interface WorkflowWebhookEndpointParameterData {
|
|
13
|
+
readonly description?: string | null;
|
|
14
|
+
readonly key: string;
|
|
15
|
+
readonly label: string;
|
|
16
|
+
readonly required: boolean;
|
|
17
|
+
readonly type: NotifyWebhookParameterType;
|
|
18
|
+
}
|
|
19
|
+
export interface CreateWorkflowWebhookEndpointData {
|
|
20
|
+
readonly deprecated?: boolean | null;
|
|
21
|
+
readonly description?: string | null;
|
|
22
|
+
readonly headers?: readonly WorkflowWebhookEndpointHeaderData[] | null;
|
|
23
|
+
readonly key: string;
|
|
24
|
+
readonly label: string;
|
|
25
|
+
readonly method?: string | null;
|
|
26
|
+
readonly parameters: readonly WorkflowWebhookEndpointParameterData[];
|
|
27
|
+
readonly signingSecret?: string | null;
|
|
28
|
+
readonly timeoutMs?: number | null;
|
|
29
|
+
readonly url: string;
|
|
30
|
+
readonly version: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Omitted fields stay as they are. `headers` replaces the whole set when
|
|
34
|
+
* given — values are write-only, so there is nothing to merge into — and
|
|
35
|
+
* `parameters` must match the stored contract (a change needs a new version).
|
|
36
|
+
*/
|
|
37
|
+
export interface UpdateWorkflowWebhookEndpointData {
|
|
38
|
+
readonly deprecated?: boolean | null;
|
|
39
|
+
readonly description?: string | null;
|
|
40
|
+
readonly headers?: readonly WorkflowWebhookEndpointHeaderData[] | null;
|
|
41
|
+
readonly label?: string | null;
|
|
42
|
+
readonly method?: string | null;
|
|
43
|
+
readonly parameters?: readonly WorkflowWebhookEndpointParameterData[] | null;
|
|
44
|
+
readonly timeoutMs?: number | null;
|
|
45
|
+
readonly url?: string | null;
|
|
46
|
+
}
|
|
47
|
+
/** One test send per endpoint every 10 s, at most 5 per 10 minutes. */
|
|
48
|
+
export declare const WORKFLOW_WEBHOOK_TEST_MIN_INTERVAL_MS = 10000;
|
|
49
|
+
export declare const WORKFLOW_WEBHOOK_TEST_WINDOW_MS = 600000;
|
|
50
|
+
export declare const WORKFLOW_WEBHOOK_TEST_MAX_PER_WINDOW = 5;
|
|
51
|
+
/**
|
|
52
|
+
* Administrator management of database webhook endpoints (ADR 18 §3.13).
|
|
53
|
+
*
|
|
54
|
+
* Header values and the signing secret go in encrypted and never come back
|
|
55
|
+
* out: not in a response, an error message or a log. Every change writes an
|
|
56
|
+
* audit row naming the fields that changed, never their values.
|
|
57
|
+
*/
|
|
58
|
+
export declare class WorkflowWebhookEndpointAdminService {
|
|
59
|
+
private readonly endpointRepository;
|
|
60
|
+
private readonly auditRepository;
|
|
61
|
+
private readonly webhookService;
|
|
62
|
+
private readonly deliveryService;
|
|
63
|
+
private readonly databaseSource;
|
|
64
|
+
private readonly options;
|
|
65
|
+
private readonly testSends;
|
|
66
|
+
constructor(endpointRepository: Repository<WorkflowWebhookEndpointEntity>, auditRepository: Repository<WorkflowWebhookEndpointAuditEntity>, webhookService: WorkflowWebhookService, deliveryService: WorkflowWebhookDeliveryService, databaseSource: DatabaseWorkflowWebhookEndpointSource, options?: BPMResolvedWorkflowWebhookOptions);
|
|
67
|
+
isEnabled(): boolean;
|
|
68
|
+
list(): Promise<readonly WorkflowWebhookEndpointEntity[]>;
|
|
69
|
+
listAudits(endpointId: string): Promise<readonly WorkflowWebhookEndpointAuditEntity[]>;
|
|
70
|
+
create(data: CreateWorkflowWebhookEndpointData, actorMemberId: string | null): Promise<WorkflowWebhookEndpointEntity>;
|
|
71
|
+
update(id: string, data: UpdateWorkflowWebhookEndpointData, actorMemberId: string | null): Promise<WorkflowWebhookEndpointEntity>;
|
|
72
|
+
setActive(id: string, active: boolean, actorMemberId: string | null): Promise<WorkflowWebhookEndpointEntity>;
|
|
73
|
+
/** `null` removes the secret, so BPM stops signing requests. */
|
|
74
|
+
rotateSecret(id: string, signingSecret: string | null, actorMemberId: string | null): Promise<WorkflowWebhookEndpointEntity>;
|
|
75
|
+
/**
|
|
76
|
+
* Sends a sample event — placeholder ids and a sample value for every
|
|
77
|
+
* declared parameter, never a real case — through the normal delivery
|
|
78
|
+
* path, and reports what the receiver answered.
|
|
79
|
+
*/
|
|
80
|
+
testSend(id: string, actorMemberId: string | null, now?: number): Promise<WorkflowWebhookTestOutcome>;
|
|
81
|
+
private acquireTestSend;
|
|
82
|
+
private readCipher;
|
|
83
|
+
private readRow;
|
|
84
|
+
private readUrl;
|
|
85
|
+
private encryptHeaders;
|
|
86
|
+
private encryptSecret;
|
|
87
|
+
private audit;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* The header names of a stored endpoint, for the admin view. Decrypting the
|
|
91
|
+
* envelope is the only way to know them; the values are dropped at once.
|
|
92
|
+
*/
|
|
93
|
+
export declare function readWorkflowWebhookHeaderNames(row: WorkflowWebhookEndpointEntity, secretEncryptionKey: string | null): readonly string[];
|