@rytass/bpm-core-nestjs-module 0.13.3 → 0.13.5
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 +56 -0
- package/package.json +14 -7
- 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/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 +150 -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
|
@@ -3,9 +3,13 @@ import { BPMBusinessCalendar } from './business-calendar.token';
|
|
|
3
3
|
/**
|
|
4
4
|
* Default {@link BPMBusinessCalendar} used when the host registers none.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* `
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* Prefers a calendar handed to `BPMRootModule` as a runtime value
|
|
7
|
+
* (`businessCalendar`, which a `forRootAsync` factory can build once its
|
|
8
|
+
* secrets are in hand) and otherwise treats Monday–Friday as working days in
|
|
9
|
+
* the time zone configured through `notificationSlaBusinessCalendarTimeZone`,
|
|
10
|
+
* knowing about no holidays.
|
|
11
|
+
*
|
|
12
|
+
* `BPM_ROOT_OPTIONS` is injected optionally so `CalendarModule` still resolves
|
|
13
|
+
* when it is used on its own, outside `BPMRootModule`.
|
|
10
14
|
*/
|
|
11
15
|
export declare const defaultBusinessCalendarProvider: Provider<BPMBusinessCalendar>;
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.defaultBusinessCalendarProvider = void 0;
|
|
4
|
+
const bpm_root_options_1 = require("../bpm/bpm-root-options");
|
|
4
5
|
const notification_options_1 = require("../notification/notification-options");
|
|
5
6
|
const business_calendar_token_1 = require("./business-calendar.token");
|
|
6
7
|
const weekday_business_calendar_1 = require("./weekday-business-calendar");
|
|
7
8
|
/**
|
|
8
9
|
* Default {@link BPMBusinessCalendar} used when the host registers none.
|
|
9
10
|
*
|
|
10
|
-
*
|
|
11
|
-
* `
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* Prefers a calendar handed to `BPMRootModule` as a runtime value
|
|
12
|
+
* (`businessCalendar`, which a `forRootAsync` factory can build once its
|
|
13
|
+
* secrets are in hand) and otherwise treats Monday–Friday as working days in
|
|
14
|
+
* the time zone configured through `notificationSlaBusinessCalendarTimeZone`,
|
|
15
|
+
* knowing about no holidays.
|
|
16
|
+
*
|
|
17
|
+
* `BPM_ROOT_OPTIONS` is injected optionally so `CalendarModule` still resolves
|
|
18
|
+
* when it is used on its own, outside `BPMRootModule`.
|
|
14
19
|
*/
|
|
15
20
|
exports.defaultBusinessCalendarProvider = {
|
|
16
|
-
inject: [
|
|
21
|
+
inject: [
|
|
22
|
+
{ optional: true, token: bpm_root_options_1.BPM_ROOT_OPTIONS },
|
|
23
|
+
notification_options_1.BPM_NOTIFICATION_OPTIONS,
|
|
24
|
+
],
|
|
17
25
|
provide: business_calendar_token_1.BPM_BUSINESS_CALENDAR,
|
|
18
|
-
useFactory: (options) =>
|
|
26
|
+
useFactory: (rootOptions, options) => rootOptions?.businessCalendar ??
|
|
27
|
+
new weekday_business_calendar_1.BPMWeekdayBusinessCalendar(options.slaBusinessCalendarTimeZone),
|
|
19
28
|
};
|
|
20
29
|
//# sourceMappingURL=business-calendar.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"business-calendar.provider.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/calendar/business-calendar.provider.ts"],"names":[],"mappings":";;;AACA,+EAG8C;AAC9C,uEAGmC;AACnC,2EAAyE;AAEzE
|
|
1
|
+
{"version":3,"file":"business-calendar.provider.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/calendar/business-calendar.provider.ts"],"names":[],"mappings":";;;AACA,8DAGiC;AACjC,+EAG8C;AAC9C,uEAGmC;AACnC,2EAAyE;AAEzE;;;;;;;;;;;GAWG;AACU,QAAA,+BAA+B,GAAkC;IAC5E,MAAM,EAAE;QACN,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,mCAAgB,EAAE;QAC3C,+CAAwB;KACzB;IACD,OAAO,EAAE,+CAAqB;IAC9B,UAAU,EAAE,CACV,WAA8C,EAC9C,OAAuC,EAClB,EAAE,CACvB,WAAW,EAAE,gBAAgB;QAC7B,IAAI,sDAA0B,CAAC,OAAO,CAAC,2BAA2B,CAAC;CACtE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers shared by the two outboxes BPM runs — notification delivery and
|
|
3
|
+
* NOTIFY webhook delivery — so a claim quirk fixed in one cannot linger in the
|
|
4
|
+
* other.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Reads the ids returned by the claiming `UPDATE ... RETURNING id`.
|
|
8
|
+
*
|
|
9
|
+
* TypeORM's Postgres driver returns `[rows, affectedCount]` for `UPDATE` and
|
|
10
|
+
* `DELETE`, and a bare row array for everything else. Reading the two-element
|
|
11
|
+
* form as a row array yields `[undefined, undefined]`, which matches no row —
|
|
12
|
+
* the claim commits, the delivery pass finds nothing, and the row is re-claimed
|
|
13
|
+
* on every stale window forever with `attempt_count` still at 0. Both shapes
|
|
14
|
+
* are accepted here so the claim does not depend on driver-specific packaging.
|
|
15
|
+
*/
|
|
16
|
+
export declare function readClaimedIds(rawResult: unknown): readonly string[];
|
|
17
|
+
/**
|
|
18
|
+
* Fails a dispatch that never settles.
|
|
19
|
+
*
|
|
20
|
+
* Delivery marks a row `DELIVERY_IN_PROGRESS` before dispatching, and only the
|
|
21
|
+
* resolve and reject paths write back. A host dispatcher, member resolver or
|
|
22
|
+
* SMTP call that hangs would therefore leave a permanently claimed row with an
|
|
23
|
+
* empty `delivery_error` — nothing for the host to diagnose. A timeout turns
|
|
24
|
+
* that into an ordinary recorded failure that retries.
|
|
25
|
+
*/
|
|
26
|
+
export declare function withDispatchTimeout<T>(operation: Promise<T>, timeoutMs: number): Promise<T>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Helpers shared by the two outboxes BPM runs — notification delivery and
|
|
4
|
+
* NOTIFY webhook delivery — so a claim quirk fixed in one cannot linger in the
|
|
5
|
+
* other.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.readClaimedIds = readClaimedIds;
|
|
9
|
+
exports.withDispatchTimeout = withDispatchTimeout;
|
|
10
|
+
/**
|
|
11
|
+
* Reads the ids returned by the claiming `UPDATE ... RETURNING id`.
|
|
12
|
+
*
|
|
13
|
+
* TypeORM's Postgres driver returns `[rows, affectedCount]` for `UPDATE` and
|
|
14
|
+
* `DELETE`, and a bare row array for everything else. Reading the two-element
|
|
15
|
+
* form as a row array yields `[undefined, undefined]`, which matches no row —
|
|
16
|
+
* the claim commits, the delivery pass finds nothing, and the row is re-claimed
|
|
17
|
+
* on every stale window forever with `attempt_count` still at 0. Both shapes
|
|
18
|
+
* are accepted here so the claim does not depend on driver-specific packaging.
|
|
19
|
+
*/
|
|
20
|
+
function readClaimedIds(rawResult) {
|
|
21
|
+
const rows = Array.isArray(rawResult) && Array.isArray(rawResult[0])
|
|
22
|
+
? rawResult[0]
|
|
23
|
+
: rawResult;
|
|
24
|
+
if (!Array.isArray(rows)) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
return rows
|
|
28
|
+
.map((row) => row && typeof row === 'object' && 'id' in row
|
|
29
|
+
? row.id
|
|
30
|
+
: undefined)
|
|
31
|
+
.filter((id) => typeof id === 'string' && id.length > 0);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Fails a dispatch that never settles.
|
|
35
|
+
*
|
|
36
|
+
* Delivery marks a row `DELIVERY_IN_PROGRESS` before dispatching, and only the
|
|
37
|
+
* resolve and reject paths write back. A host dispatcher, member resolver or
|
|
38
|
+
* SMTP call that hangs would therefore leave a permanently claimed row with an
|
|
39
|
+
* empty `delivery_error` — nothing for the host to diagnose. A timeout turns
|
|
40
|
+
* that into an ordinary recorded failure that retries.
|
|
41
|
+
*/
|
|
42
|
+
async function withDispatchTimeout(operation, timeoutMs) {
|
|
43
|
+
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
44
|
+
return operation;
|
|
45
|
+
}
|
|
46
|
+
let timer;
|
|
47
|
+
try {
|
|
48
|
+
return await Promise.race([
|
|
49
|
+
operation,
|
|
50
|
+
new Promise((_resolve, reject) => {
|
|
51
|
+
timer = setTimeout(() => {
|
|
52
|
+
reject(new Error(`DELIVERY_TIMEOUT_${timeoutMs}MS`));
|
|
53
|
+
}, timeoutMs);
|
|
54
|
+
timer.unref();
|
|
55
|
+
}),
|
|
56
|
+
]);
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
if (timer) {
|
|
60
|
+
clearTimeout(timer);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=outbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/common/outbox.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAYH,wCAiBC;AAWD,kDAyBC;AA/DD;;;;;;;;;GASG;AACH,SAAgB,cAAc,CAAC,SAAkB;IAC/C,MAAM,IAAI,GACR,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAY,EAAW,EAAE,CAC7B,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,IAAI,IAAI,GAAG;QAC3C,CAAC,CAAE,GAAgC,CAAC,EAAE;QACtC,CAAC,CAAC,SAAS,CACd;SACA,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,mBAAmB,CACvC,SAAqB,EACrB,SAAiB;IAEjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAiC,CAAC;IAEtC,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACxB,SAAS;YACT,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAQ,EAAE;gBAC5C,KAAK,GAAG,UAAU,CAAC,GAAS,EAAE;oBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,SAAS,IAAI,CAAC,CAAC,CAAC;gBACvD,CAAC,EAAE,SAAS,CAAC,CAAC;gBACd,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -55,10 +55,11 @@ let DelegationService = class DelegationService {
|
|
|
55
55
|
createdByMemberId: currentRule.createdByMemberId,
|
|
56
56
|
});
|
|
57
57
|
await this.assertNoActiveCycle(normalizedRule.principalMemberId, normalizedRule.agentMemberId, currentRule.id);
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
// Assigning onto a fresh entity keeps the prototype. `DelegationRuleEntity`
|
|
59
|
+
// has no getter-backed `@Field` today, but this row is the return value of
|
|
60
|
+
// the `updateDelegationRule` mutation, so adding one to a plain object
|
|
61
|
+
// would fail the mutation after the write had already been committed.
|
|
62
|
+
return this.delegationRuleRepository.save(Object.assign(new delegation_rule_entity_1.DelegationRuleEntity(), currentRule, normalizedRule));
|
|
62
63
|
}
|
|
63
64
|
async getDelegationRule(id) {
|
|
64
65
|
return this.readRuleOrThrow(id);
|
|
@@ -68,12 +69,11 @@ let DelegationService = class DelegationService {
|
|
|
68
69
|
if (rule.status === delegation_enums_1.DelegationRuleStatusEnum.REVOKED) {
|
|
69
70
|
return rule;
|
|
70
71
|
}
|
|
71
|
-
return this.delegationRuleRepository.save({
|
|
72
|
-
...rule,
|
|
72
|
+
return this.delegationRuleRepository.save(Object.assign(new delegation_rule_entity_1.DelegationRuleEntity(), rule, {
|
|
73
73
|
revokedAt: new Date(),
|
|
74
74
|
revokedByMemberId: revokedByMemberId?.trim() || null,
|
|
75
75
|
status: delegation_enums_1.DelegationRuleStatusEnum.REVOKED,
|
|
76
|
-
});
|
|
76
|
+
}));
|
|
77
77
|
}
|
|
78
78
|
async resolveAssignee(originalAssigneeMemberId, context, at = new Date()) {
|
|
79
79
|
return this.walkDelegationChain(originalAssigneeMemberId, context, at, new Set([originalAssigneeMemberId]), []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegation.service.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/delegation/delegation.service.ts"],"names":[],"mappings":";;;;AAAA,2CAKwB;AACxB,6CAAmD;AACnD,qCAAwE;AACxE,sEAAkE;AAKlE,qEAAgE;AAChE,yDAG4B;AAqCrB,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YAEmB,wBAA0D,EAC1D,gBAAkC;QADlC,6BAAwB,GAAxB,wBAAwB,CAAkC;QAC1D,qBAAgB,GAAhB,gBAAgB,CAAkB;IAClD,CAAC;IAEJ,KAAK,CAAC,mBAAmB,CACvB,UAAsC,EAAE;QAExC,MAAM,WAAW,GACf,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;QAC3E,MAAM,kBAAkB,GAAG,WAAW;YACpC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC3C,CAAC,CAAC,SAAS,CAAC;QAEd,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;YACxC,KAAK,EAAE;gBACL,SAAS,EAAE,MAAM;gBACjB,QAAQ,EAAE,KAAK;aAChB;YACD,GAAG,CAAC,kBAAkB;gBACpB,CAAC,CAAC;oBACE,IAAI,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,kBAAkB;oBACjE,IAAI,EAAE,kBAAkB;iBACzB;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,UAOI,EAAE;QAEN,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;YACzC,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,KAAgC;QAEhC,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,IAAI,CAAC,mBAAmB,CAC5B,cAAc,CAAC,iBAAiB,EAChC,cAAc,CAAC,aAAa,CAC7B,CAAC;QAEF,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CACvC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;YACnC,GAAG,cAAc;YACjB,SAAS,EAAE,IAAI;YACf,iBAAiB,EAAE,IAAI;YACvB,MAAM,EAAE,2CAAwB,CAAC,MAAM;SACxC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,KAAgC;QAEhC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAC7C,GAAG,KAAK;YACR,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;YAChD,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;SACjD,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,mBAAmB,CAC5B,cAAc,CAAC,iBAAiB,EAChC,cAAc,CAAC,aAAa,EAC5B,WAAW,CAAC,EAAE,CACf,CAAC;QAEF,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"delegation.service.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/delegation/delegation.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,16 +8,14 @@ const typeorm_1 = require("@nestjs/typeorm");
|
|
|
8
8
|
const workflow_engine_module_1 = require("../workflow-engine/workflow-engine.module");
|
|
9
9
|
const approval_template_version_entity_1 = require("../template/approval-template-version.entity");
|
|
10
10
|
const form_definition_version_entity_1 = require("../form/form-definition-version.entity");
|
|
11
|
+
const form_data_source_provider_1 = require("./form-data-source.provider");
|
|
11
12
|
const form_data_source_queries_1 = require("./form-data-source.queries");
|
|
12
13
|
const form_data_source_service_1 = require("./form-data-source.service");
|
|
13
14
|
const form_data_source_value_resolver_service_1 = require("./form-data-source-value-resolver.service");
|
|
14
15
|
const form_data_source_types_1 = require("./form-data-source.types");
|
|
15
16
|
let FormDataSourceModule = FormDataSourceModule_1 = class FormDataSourceModule {
|
|
16
17
|
static forRoot(options = {}) {
|
|
17
|
-
const registryProvider = options.registryProvider ??
|
|
18
|
-
provide: form_data_source_types_1.BPM_FORM_DATA_SOURCE_REGISTRY,
|
|
19
|
-
useClass: form_data_source_types_1.EmptyBPMFormDataSourceRegistry,
|
|
20
|
-
};
|
|
18
|
+
const registryProvider = options.registryProvider ?? form_data_source_provider_1.defaultFormDataSourceRegistryProvider;
|
|
21
19
|
return {
|
|
22
20
|
exports: [
|
|
23
21
|
form_data_source_types_1.BPM_FORM_DATA_SOURCE_REGISTRY,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-data-source.module.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/form-data-source/form-data-source.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAAyE;AAEzE,6CAAgD;AAChD,sFAAiF;AACjF,mGAA6F;AAC7F,2FAAqF;AACrF,yEAAmE;AACnE,yEAAmE;AACnE,uGAA+F;AAC/F,
|
|
1
|
+
{"version":3,"file":"form-data-source.module.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/form-data-source/form-data-source.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAAyE;AAEzE,6CAAgD;AAChD,sFAAiF;AACjF,mGAA6F;AAC7F,2FAAqF;AACrF,2EAAoF;AACpF,yEAAmE;AACnE,yEAAmE;AACnE,uGAA+F;AAC/F,qEAIkC;AAQ3B,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAC/B,MAAM,CAAC,OAAO,CAAC,UAAuC,EAAE;QACtD,MAAM,gBAAgB,GACpB,OAAO,CAAC,gBAAgB,IAAI,iEAAqC,CAAC;QAEpE,OAAO;YACL,OAAO,EAAE;gBACP,sDAA6B;gBAC7B,4DAAmC;gBACnC,gDAAqB;aACtB;YACD,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC1B,6CAAoB;gBACpB,uBAAa,CAAC,UAAU,CAAC;oBACvB,gEAA6B;oBAC7B,4DAA2B;iBAC5B,CAAC;aACH;YACD,MAAM,EAAE,sBAAoB;YAC5B,SAAS,EAAE;gBACT,gBAAgB;gBAChB,gDAAqB;gBACrB,gDAAqB;gBACrB,4EAAkC;gBAClC;oBACE,OAAO,EAAE,4DAAmC;oBAC5C,WAAW,EAAE,4EAAkC;iBAChD;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAjCY,oDAAoB;+BAApB,oBAAoB;IAFhC,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,oBAAoB,CAiChC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Provider } from '@nestjs/common';
|
|
2
|
+
import { BPMFormDataSourceRegistry } from './form-data-source.types';
|
|
3
|
+
/**
|
|
4
|
+
* Default form option DataSource catalog used when the host registers none.
|
|
5
|
+
*
|
|
6
|
+
* Prefers a registry handed to `BPMRootModule` as a runtime value
|
|
7
|
+
* (`formDataSourceRegistry`, which a `forRootAsync` factory can build once its
|
|
8
|
+
* upstream clients are configured) and otherwise exposes an empty catalog, so
|
|
9
|
+
* a published form reference simply resolves to no options.
|
|
10
|
+
*
|
|
11
|
+
* `BPM_ROOT_OPTIONS` is injected optionally so `FormDataSourceModule` still
|
|
12
|
+
* resolves when it is used on its own, outside `BPMRootModule`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const defaultFormDataSourceRegistryProvider: Provider<BPMFormDataSourceRegistry>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultFormDataSourceRegistryProvider = void 0;
|
|
4
|
+
const bpm_root_options_1 = require("../bpm/bpm-root-options");
|
|
5
|
+
const form_data_source_types_1 = require("./form-data-source.types");
|
|
6
|
+
/**
|
|
7
|
+
* Default form option DataSource catalog used when the host registers none.
|
|
8
|
+
*
|
|
9
|
+
* Prefers a registry handed to `BPMRootModule` as a runtime value
|
|
10
|
+
* (`formDataSourceRegistry`, which a `forRootAsync` factory can build once its
|
|
11
|
+
* upstream clients are configured) and otherwise exposes an empty catalog, so
|
|
12
|
+
* a published form reference simply resolves to no options.
|
|
13
|
+
*
|
|
14
|
+
* `BPM_ROOT_OPTIONS` is injected optionally so `FormDataSourceModule` still
|
|
15
|
+
* resolves when it is used on its own, outside `BPMRootModule`.
|
|
16
|
+
*/
|
|
17
|
+
exports.defaultFormDataSourceRegistryProvider = {
|
|
18
|
+
inject: [{ optional: true, token: bpm_root_options_1.BPM_ROOT_OPTIONS }],
|
|
19
|
+
provide: form_data_source_types_1.BPM_FORM_DATA_SOURCE_REGISTRY,
|
|
20
|
+
useFactory: (rootOptions) => rootOptions?.formDataSourceRegistry ??
|
|
21
|
+
new form_data_source_types_1.EmptyBPMFormDataSourceRegistry(),
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=form-data-source.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-data-source.provider.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/form-data-source/form-data-source.provider.ts"],"names":[],"mappings":";;;AACA,8DAGiC;AACjC,qEAIkC;AAElC;;;;;;;;;;GAUG;AACU,QAAA,qCAAqC,GAChD;IACE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,mCAAgB,EAAE,CAAC;IACrD,OAAO,EAAE,sDAA6B;IACtC,UAAU,EAAE,CACV,WAA8C,EACnB,EAAE,CAC7B,WAAW,EAAE,sBAAsB;QACnC,IAAI,uDAA8B,EAAE;CACvC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './form-data-source.errors';
|
|
2
2
|
export * from './form-data-source.module';
|
|
3
|
+
export * from './form-data-source.provider';
|
|
3
4
|
export * from './form-data-source.queries';
|
|
4
5
|
export * from './form-data-source.service';
|
|
5
6
|
export * from './form-data-source.types';
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./form-data-source.errors"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./form-data-source.module"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./form-data-source.provider"), exports);
|
|
6
7
|
tslib_1.__exportStar(require("./form-data-source.queries"), exports);
|
|
7
8
|
tslib_1.__exportStar(require("./form-data-source.service"), exports);
|
|
8
9
|
tslib_1.__exportStar(require("./form-data-source.types"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/form-data-source/index.ts"],"names":[],"mappings":";;;AAAA,oEAA0C;AAC1C,oEAA0C;AAC1C,qEAA2C;AAC3C,qEAA2C;AAC3C,mEAAyC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/form-data-source/index.ts"],"names":[],"mappings":";;;AAAA,oEAA0C;AAC1C,oEAA0C;AAC1C,sEAA4C;AAC5C,qEAA2C;AAC3C,qEAA2C;AAC3C,mEAAyC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Provider } from '@nestjs/common';
|
|
2
|
+
import { MemberMetadata } from '@rytass/bpm-core-shared';
|
|
3
|
+
import { BPMMemberResolver } from './member-resolver.interface';
|
|
4
|
+
/**
|
|
5
|
+
* Built-in {@link BPMMemberResolver} used when the host registers none.
|
|
6
|
+
*
|
|
7
|
+
* BPM only ever knows `memberId` strings, so a host that has not wired its own
|
|
8
|
+
* identity system still needs *something* to answer "what is this member
|
|
9
|
+
* called?". This resolver answers with the id itself: every BPM screen keeps
|
|
10
|
+
* working, member pickers fall back to id-only entry, and nothing throws.
|
|
11
|
+
*
|
|
12
|
+
* It is a placeholder, not an identity system — names are raw ids and emails
|
|
13
|
+
* are empty, so email notifications addressed through it go nowhere. Hosts
|
|
14
|
+
* replace it through `BPMRootModuleOptions.memberResolver` (an instance, also
|
|
15
|
+
* available from the `forRootAsync` factory) or `memberResolverProvider` (a
|
|
16
|
+
* Nest provider) as soon as they have a real member directory.
|
|
17
|
+
*
|
|
18
|
+
* Using it outside `development` / `test` logs one warning at construction —
|
|
19
|
+
* the same tier as the built-in attachment signing key — because a staging or
|
|
20
|
+
* production host showing raw UUIDs in every approval history is a wiring
|
|
21
|
+
* mistake, not a deliberate configuration.
|
|
22
|
+
*/
|
|
23
|
+
export declare class DefaultBPMMemberResolver implements BPMMemberResolver {
|
|
24
|
+
constructor();
|
|
25
|
+
resolve(memberId: string): Promise<MemberMetadata>;
|
|
26
|
+
resolveMany(memberIds: readonly string[]): Promise<ReadonlyMap<string, MemberMetadata>>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Default member resolver used when the host registers none.
|
|
30
|
+
*
|
|
31
|
+
* Prefers a resolver handed to `BPMRootModule` as a runtime value
|
|
32
|
+
* (`memberResolver`, which a `forRootAsync` factory can build once its
|
|
33
|
+
* directory client is configured) and otherwise falls back to
|
|
34
|
+
* {@link DefaultBPMMemberResolver}.
|
|
35
|
+
*
|
|
36
|
+
* `BPM_ROOT_OPTIONS` is injected optionally so `IdentityModule` still resolves
|
|
37
|
+
* when it is used on its own, outside `BPMRootModule`.
|
|
38
|
+
*/
|
|
39
|
+
export declare const defaultMemberResolverProvider: Provider<BPMMemberResolver>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultMemberResolverProvider = exports.DefaultBPMMemberResolver = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const bpm_root_options_1 = require("../bpm/bpm-root-options");
|
|
7
|
+
const member_resolver_interface_1 = require("./member-resolver.interface");
|
|
8
|
+
/**
|
|
9
|
+
* Built-in {@link BPMMemberResolver} used when the host registers none.
|
|
10
|
+
*
|
|
11
|
+
* BPM only ever knows `memberId` strings, so a host that has not wired its own
|
|
12
|
+
* identity system still needs *something* to answer "what is this member
|
|
13
|
+
* called?". This resolver answers with the id itself: every BPM screen keeps
|
|
14
|
+
* working, member pickers fall back to id-only entry, and nothing throws.
|
|
15
|
+
*
|
|
16
|
+
* It is a placeholder, not an identity system — names are raw ids and emails
|
|
17
|
+
* are empty, so email notifications addressed through it go nowhere. Hosts
|
|
18
|
+
* replace it through `BPMRootModuleOptions.memberResolver` (an instance, also
|
|
19
|
+
* available from the `forRootAsync` factory) or `memberResolverProvider` (a
|
|
20
|
+
* Nest provider) as soon as they have a real member directory.
|
|
21
|
+
*
|
|
22
|
+
* Using it outside `development` / `test` logs one warning at construction —
|
|
23
|
+
* the same tier as the built-in attachment signing key — because a staging or
|
|
24
|
+
* production host showing raw UUIDs in every approval history is a wiring
|
|
25
|
+
* mistake, not a deliberate configuration.
|
|
26
|
+
*/
|
|
27
|
+
let DefaultBPMMemberResolver = class DefaultBPMMemberResolver {
|
|
28
|
+
constructor() {
|
|
29
|
+
if (process.env.NODE_ENV !== 'development' &&
|
|
30
|
+
process.env.NODE_ENV !== 'test') {
|
|
31
|
+
console.warn('[@rytass/bpm-core-nestjs-module] no member resolver is registered, so BPM is resolving every member to its own id — display names show raw ids and member emails are empty. Set BPMRootModuleOptions.memberResolver (or memberResolverProvider) to the host identity source.');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async resolve(memberId) {
|
|
35
|
+
return createPlaceholderMemberMetadata(memberId);
|
|
36
|
+
}
|
|
37
|
+
async resolveMany(memberIds) {
|
|
38
|
+
return new Map(memberIds.map((memberId) => [
|
|
39
|
+
memberId,
|
|
40
|
+
createPlaceholderMemberMetadata(memberId),
|
|
41
|
+
]));
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
exports.DefaultBPMMemberResolver = DefaultBPMMemberResolver;
|
|
45
|
+
exports.DefaultBPMMemberResolver = DefaultBPMMemberResolver = tslib_1.__decorate([
|
|
46
|
+
(0, common_1.Injectable)(),
|
|
47
|
+
tslib_1.__metadata("design:paramtypes", [])
|
|
48
|
+
], DefaultBPMMemberResolver);
|
|
49
|
+
/**
|
|
50
|
+
* The placeholder profile BPM shows for a member it cannot name.
|
|
51
|
+
*
|
|
52
|
+
* `resolveMany` deliberately answers for **every** requested id rather than
|
|
53
|
+
* omitting unknown ones: this resolver has no directory to check against, so
|
|
54
|
+
* omitting would render every member as deleted/anonymized instead of showing
|
|
55
|
+
* the id the caller already has.
|
|
56
|
+
*/
|
|
57
|
+
function createPlaceholderMemberMetadata(memberId) {
|
|
58
|
+
return {
|
|
59
|
+
customFields: {},
|
|
60
|
+
email: '',
|
|
61
|
+
memberId,
|
|
62
|
+
name: memberId,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Default member resolver used when the host registers none.
|
|
67
|
+
*
|
|
68
|
+
* Prefers a resolver handed to `BPMRootModule` as a runtime value
|
|
69
|
+
* (`memberResolver`, which a `forRootAsync` factory can build once its
|
|
70
|
+
* directory client is configured) and otherwise falls back to
|
|
71
|
+
* {@link DefaultBPMMemberResolver}.
|
|
72
|
+
*
|
|
73
|
+
* `BPM_ROOT_OPTIONS` is injected optionally so `IdentityModule` still resolves
|
|
74
|
+
* when it is used on its own, outside `BPMRootModule`.
|
|
75
|
+
*/
|
|
76
|
+
exports.defaultMemberResolverProvider = {
|
|
77
|
+
inject: [{ optional: true, token: bpm_root_options_1.BPM_ROOT_OPTIONS }],
|
|
78
|
+
provide: member_resolver_interface_1.BPM_MEMBER_RESOLVER,
|
|
79
|
+
useFactory: (rootOptions) => rootOptions?.memberResolver ?? new DefaultBPMMemberResolver(),
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=default-member-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-member-resolver.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/identity/default-member-resolver.ts"],"names":[],"mappings":";;;;AAAA,2CAAsD;AAEtD,8DAGiC;AACjC,2EAGqC;AAErC;;;;;;;;;;;;;;;;;;GAkBG;AAEI,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnC;QACE,IACE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;YACtC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAC/B,CAAC;YACD,OAAO,CAAC,IAAI,CACV,8QAA8Q,CAC/Q,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,OAAO,+BAA+B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,WAAW,CACf,SAA4B;QAE5B,OAAO,IAAI,GAAG,CACZ,SAAS,CAAC,GAAG,CAAC,CAAC,QAAgB,EAAqC,EAAE,CAAC;YACrE,QAAQ;YACR,+BAA+B,CAAC,QAAQ,CAAC;SAC1C,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAA;AA1BY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;;GACA,wBAAwB,CA0BpC;AAED;;;;;;;GAOG;AACH,SAAS,+BAA+B,CAAC,QAAgB;IACvD,OAAO;QACL,YAAY,EAAE,EAAE;QAChB,KAAK,EAAE,EAAE;QACT,QAAQ;QACR,IAAI,EAAE,QAAQ;KACf,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACU,QAAA,6BAA6B,GAAgC;IACxE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,mCAAgB,EAAE,CAAC;IACrD,OAAO,EAAE,+CAAmB;IAC5B,UAAU,EAAE,CACV,WAA8C,EAC3B,EAAE,CACrB,WAAW,EAAE,cAAc,IAAI,IAAI,wBAAwB,EAAE;CAChE,CAAC"}
|
|
@@ -4,7 +4,13 @@ import { BPMMemberResolver } from './member-resolver.interface';
|
|
|
4
4
|
import { BPMRootIdentityOptions } from './identity-options';
|
|
5
5
|
export interface IdentityModuleOptions extends BPMRootIdentityOptions {
|
|
6
6
|
readonly imports?: ModuleMetadata['imports'];
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Host identity source. Optional — when omitted BPM registers
|
|
9
|
+
* {@link defaultMemberResolverProvider}, which prefers a `memberResolver`
|
|
10
|
+
* instance published under `BPM_ROOT_OPTIONS` and otherwise resolves every
|
|
11
|
+
* member to its own id.
|
|
12
|
+
*/
|
|
13
|
+
readonly memberResolverProvider?: Provider<BPMMemberResolver>;
|
|
8
14
|
}
|
|
9
15
|
export interface IdentityModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
10
16
|
/**
|
|
@@ -14,7 +20,11 @@ export interface IdentityModuleAsyncOptions extends Pick<ModuleMetadata, 'import
|
|
|
14
20
|
*/
|
|
15
21
|
readonly identityRegisterResolvers?: boolean;
|
|
16
22
|
readonly inject?: readonly InjectionToken[];
|
|
17
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Host identity source. Optional — see
|
|
25
|
+
* {@link IdentityModuleOptions.memberResolverProvider}.
|
|
26
|
+
*/
|
|
27
|
+
readonly memberResolverProvider?: Provider<BPMMemberResolver>;
|
|
18
28
|
readonly useFactory: (...args: readonly unknown[]) => BPMRootIdentityOptions | Promise<BPMRootIdentityOptions>;
|
|
19
29
|
}
|
|
20
30
|
export declare class IdentityModule {
|
|
@@ -8,6 +8,7 @@ const typeorm_1 = require("@nestjs/typeorm");
|
|
|
8
8
|
const identity_queries_1 = require("./identity.queries");
|
|
9
9
|
const identity_service_1 = require("./identity.service");
|
|
10
10
|
const member_metadata_cache_entity_1 = require("./member-metadata-cache.entity");
|
|
11
|
+
const default_member_resolver_1 = require("./default-member-resolver");
|
|
11
12
|
const identity_options_1 = require("./identity-options");
|
|
12
13
|
let IdentityModule = IdentityModule_1 = class IdentityModule {
|
|
13
14
|
static forRoot(options) {
|
|
@@ -61,7 +62,7 @@ function createIdentityGraphQLProviders(registerResolvers) {
|
|
|
61
62
|
return registerResolvers === false ? [] : [identity_queries_1.IdentityQueries];
|
|
62
63
|
}
|
|
63
64
|
function createMemberResolverProviders(options) {
|
|
64
|
-
return [options.memberResolverProvider];
|
|
65
|
+
return [options.memberResolverProvider ?? default_member_resolver_1.defaultMemberResolverProvider];
|
|
65
66
|
}
|
|
66
67
|
function createIdentityOptionsProvider(options = {}) {
|
|
67
68
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.module.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/identity/identity.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAKwB;AAExB,6CAAgD;AAChD,yDAAqD;AACrD,yDAAqD;AACrD,iFAA2E;
|
|
1
|
+
{"version":3,"file":"identity.module.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/identity/identity.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAKwB;AAExB,6CAAgD;AAChD,yDAAqD;AACrD,yDAAqD;AACrD,iFAA2E;AAC3E,uEAA0E;AAE1E,yDAI4B;AAmCrB,IAAM,cAAc,sBAApB,MAAM,cAAc;IACzB,MAAM,CAAC,OAAO,CAAC,OAA8B;QAC3C,MAAM,iBAAiB,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAEjE,OAAO;YACL,OAAO,EAAE,CAAC,kCAAe,CAAC;YAC1B,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC1B,uBAAa,CAAC,UAAU,CAAC,CAAC,wDAAyB,CAAC,CAAC;aACtD;YACD,MAAM,EAAE,gBAAc;YACtB,SAAS,EAAE;gBACT,GAAG,8BAA8B,CAAC,OAAO,CAAC,yBAAyB,CAAC;gBACpE,kCAAe;gBACf,GAAG,iBAAiB;gBACpB,6BAA6B,CAAC,OAAO,CAAC;aACvC;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAmC;QACrD,MAAM,iBAAiB,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAEjE,OAAO;YACL,OAAO,EAAE,CAAC,kCAAe,CAAC;YAC1B,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC1B,uBAAa,CAAC,UAAU,CAAC,CAAC,wDAAyB,CAAC,CAAC;aACtD;YACD,MAAM,EAAE,gBAAc;YACtB,SAAS,EAAE;gBACT,GAAG,8BAA8B,CAAC,OAAO,CAAC,yBAAyB,CAAC;gBACpE,kCAAe;gBACf,GAAG,iBAAiB;gBACpB;oBACE,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;oBACnC,OAAO,EAAE,uCAAoB;oBAC7B,UAAU,EAAE,KAAK,EACf,GAAG,IAAwB,EAC4B,EAAE,CACzD,IAAA,4CAAyB,EAAC,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;iBAC/D;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AA7CY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,cAAc,CA6C1B;AAED;;;GAGG;AACH,SAAS,8BAA8B,CACrC,iBAAsC;IAEtC,OAAO,iBAAiB,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,kCAAe,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,6BAA6B,CACpC,OAA8D;IAE9D,OAAO,CAAC,OAAO,CAAC,sBAAsB,IAAI,uDAA6B,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,6BAA6B,CACpC,UAAkC,EAAE;IAEpC,OAAO;QACL,OAAO,EAAE,uCAAoB;QAC7B,QAAQ,EAAE,IAAA,4CAAyB,EAAC,OAAO,CAAC;KAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./default-member-resolver"), exports);
|
|
4
5
|
tslib_1.__exportStar(require("./identity-options"), exports);
|
|
5
6
|
tslib_1.__exportStar(require("./member-base.adapter"), exports);
|
|
6
7
|
tslib_1.__exportStar(require("./member-not-found.exception"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/identity/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,gEAAsC;AACtC,uEAA6C;AAC7C,sEAA4C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/identity/index.ts"],"names":[],"mappings":";;;AAAA,oEAA0C;AAC1C,6DAAmC;AACnC,gEAAsC;AACtC,uEAA6C;AAC7C,sEAA4C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
/**
|
|
3
|
+
* Outbox for NOTIFY webhook deliveries (ADR 18 §3.5).
|
|
4
|
+
*
|
|
5
|
+
* A row is written inside the engine transaction that runs the NOTIFY node and
|
|
6
|
+
* delivered only after that transaction commits, so a rollback leaves nothing
|
|
7
|
+
* behind and nothing is ever sent for a step that did not happen.
|
|
8
|
+
*
|
|
9
|
+
* `(token_id, target_id)` is unique so the same token running the same node
|
|
10
|
+
* twice cannot queue a second delivery; a RESTART resubmit produces a new
|
|
11
|
+
* token and, correctly, a new delivery.
|
|
12
|
+
*/
|
|
13
|
+
export declare class WorkflowWebhookDeliveries0000000023000 implements MigrationInterface {
|
|
14
|
+
name: string;
|
|
15
|
+
up(queryRunner: QueryRunner): Promise<void>;
|
|
16
|
+
down(queryRunner: QueryRunner): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkflowWebhookDeliveries0000000023000 = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Outbox for NOTIFY webhook deliveries (ADR 18 §3.5).
|
|
6
|
+
*
|
|
7
|
+
* A row is written inside the engine transaction that runs the NOTIFY node and
|
|
8
|
+
* delivered only after that transaction commits, so a rollback leaves nothing
|
|
9
|
+
* behind and nothing is ever sent for a step that did not happen.
|
|
10
|
+
*
|
|
11
|
+
* `(token_id, target_id)` is unique so the same token running the same node
|
|
12
|
+
* twice cannot queue a second delivery; a RESTART resubmit produces a new
|
|
13
|
+
* token and, correctly, a new delivery.
|
|
14
|
+
*/
|
|
15
|
+
class WorkflowWebhookDeliveries0000000023000 {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.name = 'WorkflowWebhookDeliveries0000000023000';
|
|
18
|
+
}
|
|
19
|
+
async up(queryRunner) {
|
|
20
|
+
await queryRunner.query(`
|
|
21
|
+
CREATE TABLE IF NOT EXISTS "workflow_webhook_deliveries" (
|
|
22
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
23
|
+
"instance_id" uuid NOT NULL,
|
|
24
|
+
"node_id" text NOT NULL,
|
|
25
|
+
"token_id" uuid NOT NULL,
|
|
26
|
+
"target_id" text NOT NULL,
|
|
27
|
+
"endpoint_key" text NOT NULL,
|
|
28
|
+
"endpoint_version" integer NOT NULL,
|
|
29
|
+
"event" jsonb NOT NULL,
|
|
30
|
+
"status" text NOT NULL,
|
|
31
|
+
"attempt_count" integer NOT NULL DEFAULT 0,
|
|
32
|
+
"next_retry_at" timestamptz NULL,
|
|
33
|
+
"last_attempt_at" timestamptz NULL,
|
|
34
|
+
"last_response_status" integer NULL,
|
|
35
|
+
"last_error_code" text NULL,
|
|
36
|
+
"last_error_detail" text NULL,
|
|
37
|
+
"sent_at" timestamptz NULL,
|
|
38
|
+
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
39
|
+
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
40
|
+
CONSTRAINT "FK_workflow_webhook_deliveries_instance"
|
|
41
|
+
FOREIGN KEY ("instance_id") REFERENCES "approval_instances"("id")
|
|
42
|
+
ON DELETE CASCADE,
|
|
43
|
+
CONSTRAINT "UQ_workflow_webhook_deliveries_token_target"
|
|
44
|
+
UNIQUE ("token_id", "target_id")
|
|
45
|
+
)
|
|
46
|
+
`);
|
|
47
|
+
await queryRunner.query(`
|
|
48
|
+
CREATE INDEX IF NOT EXISTS "IDX_workflow_webhook_deliveries_pending"
|
|
49
|
+
ON "workflow_webhook_deliveries" ("status", "next_retry_at", "created_at")
|
|
50
|
+
`);
|
|
51
|
+
await queryRunner.query(`
|
|
52
|
+
CREATE INDEX IF NOT EXISTS "IDX_workflow_webhook_deliveries_instance"
|
|
53
|
+
ON "workflow_webhook_deliveries" ("instance_id", "created_at")
|
|
54
|
+
`);
|
|
55
|
+
}
|
|
56
|
+
async down(queryRunner) {
|
|
57
|
+
await queryRunner.query(`DROP TABLE IF EXISTS "workflow_webhook_deliveries"`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.WorkflowWebhookDeliveries0000000023000 = WorkflowWebhookDeliveries0000000023000;
|
|
61
|
+
//# sourceMappingURL=0000000023000-workflow-webhook-deliveries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0000000023000-workflow-webhook-deliveries.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/migrations/0000000023000-workflow-webhook-deliveries.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;GAUG;AACH,MAAa,sCAAsC;IAAnD;QACE,SAAI,GAAG,wCAAwC,CAAC;IA6ClD,CAAC;IA3CC,KAAK,CAAC,EAAE,CAAC,WAAwB;QAC/B,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;KA0BvB,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,KAAK,CAAC;;;KAGvB,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,KAAK,CAAC;;;KAGvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,WAAwB;QACjC,MAAM,WAAW,CAAC,KAAK,CACrB,oDAAoD,CACrD,CAAC;IACJ,CAAC;CACF;AA9CD,wFA8CC"}
|