@rytass/bpm-core-nestjs-module 0.19.0 → 0.20.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/CHANGELOG.md +36 -0
- package/package.json +3 -2
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/bpm/bpm-root-options.d.ts +13 -0
- package/src/lib/bpm/bpm-root-options.js.map +1 -1
- package/src/lib/bpm/bpm-root.module.d.ts +12 -0
- package/src/lib/bpm/bpm-root.module.js +5 -0
- package/src/lib/bpm/bpm-root.module.js.map +1 -1
- package/src/lib/condition/adapters/cel-legacy.adapter.d.ts +62 -0
- package/src/lib/condition/adapters/cel-legacy.adapter.js +141 -0
- package/src/lib/condition/adapters/cel-legacy.adapter.js.map +1 -0
- package/src/lib/condition/adapters/cel-v2.adapter.d.ts +76 -0
- package/src/lib/condition/adapters/cel-v2.adapter.js +371 -0
- package/src/lib/condition/adapters/cel-v2.adapter.js.map +1 -0
- package/src/lib/condition/condition.service.d.ts +90 -5
- package/src/lib/condition/condition.service.js +287 -71
- package/src/lib/condition/condition.service.js.map +1 -1
- package/src/lib/condition/expression-ast.d.ts +176 -0
- package/src/lib/condition/expression-ast.js +1254 -0
- package/src/lib/condition/expression-ast.js.map +1 -0
- package/src/lib/condition/expression-budget.d.ts +44 -0
- package/src/lib/condition/expression-budget.js +61 -0
- package/src/lib/condition/expression-budget.js.map +1 -0
- package/src/lib/condition/expression-dialect.d.ts +29 -0
- package/src/lib/condition/expression-dialect.js +44 -0
- package/src/lib/condition/expression-dialect.js.map +1 -0
- package/src/lib/condition/expression-differential.corpus.d.ts +34 -0
- package/src/lib/condition/expression-differential.corpus.js +995 -0
- package/src/lib/condition/expression-differential.corpus.js.map +1 -0
- package/src/lib/condition/expression-differential.d.ts +33 -0
- package/src/lib/condition/expression-differential.js +48 -0
- package/src/lib/condition/expression-differential.js.map +1 -0
- package/src/lib/condition/expression-engine-failure.d.ts +15 -0
- package/src/lib/condition/expression-engine-failure.js +22 -0
- package/src/lib/condition/expression-engine-failure.js.map +1 -0
- package/src/lib/condition/expression-errors.d.ts +40 -0
- package/src/lib/condition/expression-errors.js +105 -0
- package/src/lib/condition/expression-errors.js.map +1 -0
- package/src/lib/condition/expression-function-invocation.d.ts +50 -0
- package/src/lib/condition/expression-function-invocation.js +290 -0
- package/src/lib/condition/expression-function-invocation.js.map +1 -0
- package/src/lib/condition/expression-result.walker.d.ts +18 -0
- package/src/lib/condition/expression-result.walker.js +152 -0
- package/src/lib/condition/expression-result.walker.js.map +1 -0
- package/src/lib/condition/expression-runtime.d.ts +70 -0
- package/src/lib/condition/expression-runtime.js +134 -0
- package/src/lib/condition/expression-runtime.js.map +1 -0
- package/src/lib/condition/index.d.ts +4 -0
- package/src/lib/condition/index.js +8 -0
- package/src/lib/condition/index.js.map +1 -1
- package/src/lib/delegation/delegation-rule.entity.d.ts +7 -0
- package/src/lib/delegation/delegation-rule.entity.js +10 -0
- package/src/lib/delegation/delegation-rule.entity.js.map +1 -1
- package/src/lib/delegation/delegation.service.d.ts +7 -1
- package/src/lib/delegation/delegation.service.js +22 -5
- package/src/lib/delegation/delegation.service.js.map +1 -1
- package/src/lib/delegation/dto/delegation-rule.input.d.ts +2 -0
- package/src/lib/delegation/dto/delegation-rule.input.js +10 -0
- package/src/lib/delegation/dto/delegation-rule.input.js.map +1 -1
- package/src/lib/expression-function/expression-function.built-ins.d.ts +9 -0
- package/src/lib/expression-function/expression-function.built-ins.js +117 -0
- package/src/lib/expression-function/expression-function.built-ins.js.map +1 -0
- package/src/lib/expression-function/expression-function.module.d.ts +19 -0
- package/src/lib/expression-function/expression-function.module.js +34 -0
- package/src/lib/expression-function/expression-function.module.js.map +1 -0
- package/src/lib/expression-function/expression-function.provider.d.ts +17 -0
- package/src/lib/expression-function/expression-function.provider.js +39 -0
- package/src/lib/expression-function/expression-function.provider.js.map +1 -0
- package/src/lib/expression-function/expression-function.registry.d.ts +36 -0
- package/src/lib/expression-function/expression-function.registry.js +231 -0
- package/src/lib/expression-function/expression-function.registry.js.map +1 -0
- package/src/lib/expression-function/expression-function.types.d.ts +30 -0
- package/src/lib/expression-function/expression-function.types.js +8 -0
- package/src/lib/expression-function/expression-function.types.js.map +1 -0
- package/src/lib/expression-function/index.d.ts +5 -0
- package/src/lib/expression-function/index.js +9 -0
- package/src/lib/expression-function/index.js.map +1 -0
- package/src/lib/form/form-schema.validator.js +53 -6
- package/src/lib/form/form-schema.validator.js.map +1 -1
- package/src/lib/form-data-source/form-data-source-value-resolver.service.d.ts +12 -1
- package/src/lib/form-data-source/form-data-source-value-resolver.service.js +45 -26
- package/src/lib/form-data-source/form-data-source-value-resolver.service.js.map +1 -1
- package/src/lib/form-data-source/form-data-source.expression.d.ts +95 -0
- package/src/lib/form-data-source/form-data-source.expression.js +267 -0
- package/src/lib/form-data-source/form-data-source.expression.js.map +1 -0
- package/src/lib/form-data-source/form-data-source.module.js +4 -0
- package/src/lib/form-data-source/form-data-source.module.js.map +1 -1
- package/src/lib/form-data-source/form-data-source.service.d.ts +22 -3
- package/src/lib/form-data-source/form-data-source.service.js +78 -18
- package/src/lib/form-data-source/form-data-source.service.js.map +1 -1
- package/src/lib/form-data-source/form-data-source.validation.d.ts +47 -4
- package/src/lib/form-data-source/form-data-source.validation.js +151 -23
- package/src/lib/form-data-source/form-data-source.validation.js.map +1 -1
- package/src/lib/migrations/0000000030000-delegation-scope-condition-dialect.d.ts +22 -0
- package/src/lib/migrations/0000000030000-delegation-scope-condition-dialect.js +76 -0
- package/src/lib/migrations/0000000030000-delegation-scope-condition-dialect.js.map +1 -0
- package/src/lib/migrations/index.d.ts +1 -0
- package/src/lib/migrations/index.js +3 -0
- package/src/lib/migrations/index.js.map +1 -1
- package/src/lib/notification/notification.service.d.ts +1 -1
- package/src/lib/notification/notification.service.js +7 -3
- package/src/lib/notification/notification.service.js.map +1 -1
- package/src/lib/template/dto/expression-designer.dto.d.ts +107 -0
- package/src/lib/template/dto/expression-designer.dto.js +415 -0
- package/src/lib/template/dto/expression-designer.dto.js.map +1 -0
- package/src/lib/template/expression-designer.queries.d.ts +16 -0
- package/src/lib/template/expression-designer.queries.js +66 -0
- package/src/lib/template/expression-designer.queries.js.map +1 -0
- package/src/lib/template/expression-designer.service.d.ts +72 -0
- package/src/lib/template/expression-designer.service.js +543 -0
- package/src/lib/template/expression-designer.service.js.map +1 -0
- package/src/lib/template/index.d.ts +2 -0
- package/src/lib/template/index.js +2 -0
- package/src/lib/template/index.js.map +1 -1
- package/src/lib/template/template.module.js +4 -0
- package/src/lib/template/template.module.js.map +1 -1
- package/src/lib/template/template.service.d.ts +37 -1
- package/src/lib/template/template.service.js +317 -29
- package/src/lib/template/template.service.js.map +1 -1
- package/src/lib/template/workflow-definition.validator.d.ts +7 -0
- package/src/lib/template/workflow-definition.validator.js +26 -2
- package/src/lib/template/workflow-definition.validator.js.map +1 -1
- package/src/lib/workflow-engine/time-budget.d.ts +13 -0
- package/src/lib/workflow-engine/time-budget.js +58 -0
- package/src/lib/workflow-engine/time-budget.js.map +1 -0
- package/src/lib/workflow-engine/workflow-engine.service.d.ts +24 -0
- package/src/lib/workflow-engine/workflow-engine.service.js +240 -65
- package/src/lib/workflow-engine/workflow-engine.service.js.map +1 -1
- package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js +4 -0
- package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js.map +1 -1
- package/src/lib/workflow-webhook/workflow-webhook-delivery.service.d.ts +3 -1
- package/src/lib/workflow-webhook/workflow-webhook-delivery.service.js +11 -2
- package/src/lib/workflow-webhook/workflow-webhook-delivery.service.js.map +1 -1
- package/src/lib/workflow-webhook/workflow-webhook-enqueue.d.ts +8 -1
- package/src/lib/workflow-webhook/workflow-webhook-enqueue.js +70 -27
- package/src/lib/workflow-webhook/workflow-webhook-enqueue.js.map +1 -1
- package/src/lib/workflow-webhook/workflow-webhook-expression.d.ts +57 -0
- package/src/lib/workflow-webhook/workflow-webhook-expression.js +123 -0
- package/src/lib/workflow-webhook/workflow-webhook-expression.js.map +1 -0
- package/src/lib/workflow-webhook/workflow-webhook.module.js +4 -0
- package/src/lib/workflow-webhook/workflow-webhook.module.js.map +1 -1
- package/src/lib/workflow-webhook/workflow-webhook.validator.d.ts +7 -0
- package/src/lib/workflow-webhook/workflow-webhook.validator.js +29 -6
- package/src/lib/workflow-webhook/workflow-webhook.validator.js.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-differential.corpus.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/condition/expression-differential.corpus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ConditionService } from './condition.service';
|
|
2
|
+
import type { ExpressionDialect } from './expression-dialect';
|
|
3
|
+
/**
|
|
4
|
+
* Differential testing of the two dialects (Phase 23 P1, ADR 22 §3.3): the
|
|
5
|
+
* same expression and the same context, evaluated once per dialect, compared
|
|
6
|
+
* by result and by error code. Used by the real-engine suite to pin every
|
|
7
|
+
* known difference, and meant for the dialect upgrade check (P4), which must
|
|
8
|
+
* list the expressions whose behaviour would change.
|
|
9
|
+
*/
|
|
10
|
+
export interface ExpressionDifferentialCase {
|
|
11
|
+
readonly expression: string;
|
|
12
|
+
/** Every root the expression may read; the same object goes to both dialects. */
|
|
13
|
+
readonly context: Readonly<Record<string, unknown>>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* One evaluation, reduced to what a caller can observe: `ok:` and the JSON of
|
|
17
|
+
* the normalized result, or `err:` and the error code. Never engine text, so
|
|
18
|
+
* the outcome is safe to log or show.
|
|
19
|
+
*/
|
|
20
|
+
export type ExpressionOutcome = `ok:${string}` | `err:${string}`;
|
|
21
|
+
export interface ExpressionDifferentialResult {
|
|
22
|
+
readonly legacy: ExpressionOutcome;
|
|
23
|
+
readonly v2: ExpressionOutcome;
|
|
24
|
+
readonly same: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Evaluates one expression with one dialect (`undefined` passes none, which
|
|
28
|
+
* is how a definition saved before dialects existed is read), under a fresh
|
|
29
|
+
* budget of its own so one slow case cannot fail the cases after it. Only an `ExpressionRuntimeError`
|
|
30
|
+
* becomes an outcome; anything else is a bug in the runtime and is rethrown.
|
|
31
|
+
*/
|
|
32
|
+
export declare const readExpressionOutcome: (service: ConditionService, testCase: ExpressionDifferentialCase, dialect: ExpressionDialect | undefined) => ExpressionOutcome;
|
|
33
|
+
export declare const runExpressionDifferential: (testCase: ExpressionDifferentialCase, service?: ConditionService) => ExpressionDifferentialResult;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runExpressionDifferential = exports.readExpressionOutcome = void 0;
|
|
4
|
+
const condition_service_1 = require("./condition.service");
|
|
5
|
+
const expression_budget_1 = require("./expression-budget");
|
|
6
|
+
const expression_errors_1 = require("./expression-errors");
|
|
7
|
+
/** JSON with object keys sorted, so two engines' maps compare by content. */
|
|
8
|
+
const stableStringify = (value) => {
|
|
9
|
+
if (Array.isArray(value)) {
|
|
10
|
+
return `[${value.map(stableStringify).join(',')}]`;
|
|
11
|
+
}
|
|
12
|
+
if (value !== null && typeof value === 'object') {
|
|
13
|
+
const record = value;
|
|
14
|
+
return `{${Object.keys(record)
|
|
15
|
+
.sort()
|
|
16
|
+
.map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`)
|
|
17
|
+
.join(',')}}`;
|
|
18
|
+
}
|
|
19
|
+
return JSON.stringify(value);
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Evaluates one expression with one dialect (`undefined` passes none, which
|
|
23
|
+
* is how a definition saved before dialects existed is read), under a fresh
|
|
24
|
+
* budget of its own so one slow case cannot fail the cases after it. Only an `ExpressionRuntimeError`
|
|
25
|
+
* becomes an outcome; anything else is a bug in the runtime and is rethrown.
|
|
26
|
+
*/
|
|
27
|
+
const readExpressionOutcome = (service, testCase, dialect) => {
|
|
28
|
+
try {
|
|
29
|
+
return `ok:${stableStringify(service.evaluateValue(testCase.expression, testCase.context, 'differential', {
|
|
30
|
+
budget: (0, expression_budget_1.createExpressionBudget)(),
|
|
31
|
+
...(dialect === undefined ? {} : { dialect }),
|
|
32
|
+
}))}`;
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (error instanceof expression_errors_1.ExpressionRuntimeError) {
|
|
36
|
+
return `err:${error.code}`;
|
|
37
|
+
}
|
|
38
|
+
throw error;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
exports.readExpressionOutcome = readExpressionOutcome;
|
|
42
|
+
const runExpressionDifferential = (testCase, service = new condition_service_1.ConditionService()) => {
|
|
43
|
+
const legacy = (0, exports.readExpressionOutcome)(service, testCase, 'cel-legacy');
|
|
44
|
+
const v2 = (0, exports.readExpressionOutcome)(service, testCase, 'cel-v2');
|
|
45
|
+
return { legacy, same: legacy === v2, v2 };
|
|
46
|
+
};
|
|
47
|
+
exports.runExpressionDifferential = runExpressionDifferential;
|
|
48
|
+
//# sourceMappingURL=expression-differential.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-differential.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/condition/expression-differential.ts"],"names":[],"mappings":";;;AAAA,2DAAuD;AACvD,2DAA6D;AAE7D,2DAA6D;AA8B7D,6EAA6E;AAC7E,MAAM,eAAe,GAAG,CAAC,KAAgB,EAAU,EAAE;IACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACrD,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,KAA8C,CAAC;QAE9D,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aAC3B,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;aACtE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF;;;;;GAKG;AACI,MAAM,qBAAqB,GAAG,CACnC,OAAyB,EACzB,QAAoC,EACpC,OAAsC,EACnB,EAAE;IACrB,IAAI,CAAC;QACH,OAAO,MAAM,eAAe,CAC1B,OAAO,CAAC,aAAa,CACnB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,OAAO,EAChB,cAAc,EACd;YACE,MAAM,EAAE,IAAA,0CAAsB,GAAE;YAChC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;SAC9C,CACF,CACF,EAAE,CAAC;IACN,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,0CAAsB,EAAE,CAAC;YAC5C,OAAO,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAxBW,QAAA,qBAAqB,yBAwBhC;AAEK,MAAM,yBAAyB,GAAG,CACvC,QAAoC,EACpC,UAA4B,IAAI,oCAAgB,EAAE,EACpB,EAAE;IAChC,MAAM,MAAM,GAAG,IAAA,6BAAqB,EAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtE,MAAM,EAAE,GAAG,IAAA,6BAAqB,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE9D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;AAC7C,CAAC,CAAC;AARW,QAAA,yBAAyB,6BAQpC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ExpressionErrorCode } from './expression-errors';
|
|
2
|
+
/**
|
|
3
|
+
* A failure an engine adapter has already classified. Adapters for engines
|
|
4
|
+
* that report a machine-readable code (cel-v2) throw this instead of the
|
|
5
|
+
* engine's own error, so `toExpressionRuntimeError` never reads engine text.
|
|
6
|
+
*
|
|
7
|
+
* `keyNameCandidate` is only a candidate: it is shown nowhere until
|
|
8
|
+
* `toExpressionRuntimeError` has checked that the author wrote it.
|
|
9
|
+
* The message is fixed so nothing reaches a log by accident.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ExpressionEngineFailure extends Error {
|
|
12
|
+
readonly code: ExpressionErrorCode;
|
|
13
|
+
readonly keyNameCandidate: string | null;
|
|
14
|
+
constructor(code: ExpressionErrorCode, keyNameCandidate?: string | null);
|
|
15
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExpressionEngineFailure = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A failure an engine adapter has already classified. Adapters for engines
|
|
6
|
+
* that report a machine-readable code (cel-v2) throw this instead of the
|
|
7
|
+
* engine's own error, so `toExpressionRuntimeError` never reads engine text.
|
|
8
|
+
*
|
|
9
|
+
* `keyNameCandidate` is only a candidate: it is shown nowhere until
|
|
10
|
+
* `toExpressionRuntimeError` has checked that the author wrote it.
|
|
11
|
+
* The message is fixed so nothing reaches a log by accident.
|
|
12
|
+
*/
|
|
13
|
+
class ExpressionEngineFailure extends Error {
|
|
14
|
+
constructor(code, keyNameCandidate = null) {
|
|
15
|
+
super(code);
|
|
16
|
+
this.name = 'ExpressionEngineFailure';
|
|
17
|
+
this.code = code;
|
|
18
|
+
this.keyNameCandidate = keyNameCandidate;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.ExpressionEngineFailure = ExpressionEngineFailure;
|
|
22
|
+
//# sourceMappingURL=expression-engine-failure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-engine-failure.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/condition/expression-engine-failure.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;GAQG;AACH,MAAa,uBAAwB,SAAQ,KAAK;IAIhD,YACE,IAAyB,EACzB,mBAAkC,IAAI;QAEtC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF;AAdD,0DAcC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BadRequestException } from '@nestjs/common';
|
|
2
|
+
/**
|
|
3
|
+
* The only runtime error codes an expression may surface (ADR 22 §3.2). They
|
|
4
|
+
* are part of the public contract: do not add to or rename them without an ADR
|
|
5
|
+
* update.
|
|
6
|
+
*/
|
|
7
|
+
export declare const EXPRESSION_ERROR_CODES: readonly ["EXPRESSION_SYNTAX_ERROR", "EXPRESSION_MISSING_KEY", "EXPRESSION_TYPE_ERROR", "EXPRESSION_BUDGET_EXCEEDED", "EXPRESSION_INVALID_RESULT", "EXPRESSION_FUNCTION_FAILED"];
|
|
8
|
+
export type ExpressionErrorCode = (typeof EXPRESSION_ERROR_CODES)[number];
|
|
9
|
+
interface ExpressionRuntimeErrorOptions {
|
|
10
|
+
/** Short fixed phrase inserted between the label and the code. Never engine text. */
|
|
11
|
+
readonly detail?: string;
|
|
12
|
+
/**
|
|
13
|
+
* The missing root-level key, if the engine said so in a known shape. Only the
|
|
14
|
+
* dry run shows it; the case runtime never reads it.
|
|
15
|
+
*/
|
|
16
|
+
readonly keyName?: string | null;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The one error an expression can raise to a caller. The message is only the
|
|
20
|
+
* label and the code, so neither the engine text nor a context value can reach
|
|
21
|
+
* an HTTP response, an activity log or a notification. It extends
|
|
22
|
+
* `BadRequestException` so the HTTP status stays 400, as before.
|
|
23
|
+
*/
|
|
24
|
+
export declare class ExpressionRuntimeError extends BadRequestException {
|
|
25
|
+
readonly code: ExpressionErrorCode;
|
|
26
|
+
readonly label: string;
|
|
27
|
+
readonly keyName: string | null;
|
|
28
|
+
constructor(code: ExpressionErrorCode, label: string, options?: ExpressionRuntimeErrorOptions);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Converts anything an evaluation threw into an {@link ExpressionRuntimeError}.
|
|
32
|
+
* Unknown failures become `EXPRESSION_TYPE_ERROR`: the message is dropped rather
|
|
33
|
+
* than guessed at, so a new engine message can never leak.
|
|
34
|
+
*
|
|
35
|
+
* `keyName` is kept only when `expression` is given and writes that name as an
|
|
36
|
+
* identifier outside string literals; otherwise it is `null`. Without the
|
|
37
|
+
* expression there is no way to tell a key name from a context value.
|
|
38
|
+
*/
|
|
39
|
+
export declare function toExpressionRuntimeError(error: unknown, label: string, expression?: string): ExpressionRuntimeError;
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExpressionRuntimeError = exports.EXPRESSION_ERROR_CODES = void 0;
|
|
4
|
+
exports.toExpressionRuntimeError = toExpressionRuntimeError;
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const time_budget_1 = require("../workflow-engine/time-budget");
|
|
7
|
+
const expression_engine_failure_1 = require("./expression-engine-failure");
|
|
8
|
+
/**
|
|
9
|
+
* The only runtime error codes an expression may surface (ADR 22 §3.2). They
|
|
10
|
+
* are part of the public contract: do not add to or rename them without an ADR
|
|
11
|
+
* update.
|
|
12
|
+
*/
|
|
13
|
+
exports.EXPRESSION_ERROR_CODES = [
|
|
14
|
+
'EXPRESSION_SYNTAX_ERROR',
|
|
15
|
+
'EXPRESSION_MISSING_KEY',
|
|
16
|
+
'EXPRESSION_TYPE_ERROR',
|
|
17
|
+
'EXPRESSION_BUDGET_EXCEEDED',
|
|
18
|
+
'EXPRESSION_INVALID_RESULT',
|
|
19
|
+
'EXPRESSION_FUNCTION_FAILED',
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* The one error an expression can raise to a caller. The message is only the
|
|
23
|
+
* label and the code, so neither the engine text nor a context value can reach
|
|
24
|
+
* an HTTP response, an activity log or a notification. It extends
|
|
25
|
+
* `BadRequestException` so the HTTP status stays 400, as before.
|
|
26
|
+
*/
|
|
27
|
+
class ExpressionRuntimeError extends common_1.BadRequestException {
|
|
28
|
+
constructor(code, label, options = {}) {
|
|
29
|
+
super(`${label}${options.detail ? ` ${options.detail}` : ''}: ${code}`);
|
|
30
|
+
this.code = code;
|
|
31
|
+
this.label = label;
|
|
32
|
+
this.keyName = options.keyName ?? null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.ExpressionRuntimeError = ExpressionRuntimeError;
|
|
36
|
+
const IDENTIFIER_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/u;
|
|
37
|
+
/*
|
|
38
|
+
* Allowlist of engine message shapes that identify a missing key. Matching is
|
|
39
|
+
* anchored at the start and only the captured name is kept. Anything that does
|
|
40
|
+
* not match is classified by the fallback below and no fragment of it is kept.
|
|
41
|
+
*/
|
|
42
|
+
const MISSING_KEY_PATTERNS = [
|
|
43
|
+
/^Identifier "([^"]*)" not found in context: /u,
|
|
44
|
+
/^Cannot obtain "([^"]*)" from non-object context/u,
|
|
45
|
+
];
|
|
46
|
+
/*
|
|
47
|
+
* CEL string and bytes literals, prefix included (`r`, `b`, `rb` ...) when it
|
|
48
|
+
* starts a token, so the tail of an identifier is never removed with it. Triple
|
|
49
|
+
* quotes come first so `"""a"""` is one literal, not three. Escapes are skipped
|
|
50
|
+
* even in raw strings: a raw literal ending in a backslash then swallows more of
|
|
51
|
+
* the source than it should, which only removes candidate names, never adds one.
|
|
52
|
+
*/
|
|
53
|
+
const STRING_LITERAL_PATTERN = /(?:(?<![A-Za-z0-9_])[rRbB]{1,2})?(?:"""[\s\S]*?"""|'''[\s\S]*?'''|"(?:\\.|[^"\\\n])*"|'(?:\\.|[^'\\\n])*')/gu;
|
|
54
|
+
/**
|
|
55
|
+
* Whether `name` is written in the expression as an identifier, outside every
|
|
56
|
+
* string literal. The engine reports the key it failed to find, and with a
|
|
57
|
+
* computed index (`form.a[form.b]`) that key is a value read from the context,
|
|
58
|
+
* not something the author wrote. Only a name the author wrote may be shown.
|
|
59
|
+
* `name` has already passed {@link IDENTIFIER_PATTERN}, so it is safe in a regex.
|
|
60
|
+
*/
|
|
61
|
+
const isWrittenIdentifier = (expression, name) => new RegExp(`(?<![A-Za-z0-9_])${name}(?![A-Za-z0-9_])`, 'u').test(expression.replace(STRING_LITERAL_PATTERN, ' '));
|
|
62
|
+
/**
|
|
63
|
+
* Converts anything an evaluation threw into an {@link ExpressionRuntimeError}.
|
|
64
|
+
* Unknown failures become `EXPRESSION_TYPE_ERROR`: the message is dropped rather
|
|
65
|
+
* than guessed at, so a new engine message can never leak.
|
|
66
|
+
*
|
|
67
|
+
* `keyName` is kept only when `expression` is given and writes that name as an
|
|
68
|
+
* identifier outside string literals; otherwise it is `null`. Without the
|
|
69
|
+
* expression there is no way to tell a key name from a context value.
|
|
70
|
+
*/
|
|
71
|
+
function toExpressionRuntimeError(error, label, expression) {
|
|
72
|
+
if (error instanceof ExpressionRuntimeError) {
|
|
73
|
+
return error;
|
|
74
|
+
}
|
|
75
|
+
if (error instanceof time_budget_1.TimeBudgetExceededError) {
|
|
76
|
+
return new ExpressionRuntimeError('EXPRESSION_BUDGET_EXCEEDED', label);
|
|
77
|
+
}
|
|
78
|
+
if (error instanceof expression_engine_failure_1.ExpressionEngineFailure) {
|
|
79
|
+
const name = error.keyNameCandidate ?? '';
|
|
80
|
+
return new ExpressionRuntimeError(error.code, label, {
|
|
81
|
+
keyName: error.code === 'EXPRESSION_MISSING_KEY' &&
|
|
82
|
+
expression !== undefined &&
|
|
83
|
+
IDENTIFIER_PATTERN.test(name) &&
|
|
84
|
+
isWrittenIdentifier(expression, name)
|
|
85
|
+
? name
|
|
86
|
+
: null,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
const message = error instanceof Error ? error.message : '';
|
|
90
|
+
for (const pattern of MISSING_KEY_PATTERNS) {
|
|
91
|
+
const match = pattern.exec(message);
|
|
92
|
+
if (match) {
|
|
93
|
+
const name = match[1] ?? '';
|
|
94
|
+
return new ExpressionRuntimeError('EXPRESSION_MISSING_KEY', label, {
|
|
95
|
+
keyName: expression !== undefined &&
|
|
96
|
+
IDENTIFIER_PATTERN.test(name) &&
|
|
97
|
+
isWrittenIdentifier(expression, name)
|
|
98
|
+
? name
|
|
99
|
+
: null,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return new ExpressionRuntimeError('EXPRESSION_TYPE_ERROR', label);
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=expression-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-errors.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/condition/expression-errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { BPMExpressionFunction, BPMExpressionFunctionRegistry } from '../expression-function/expression-function.types';
|
|
2
|
+
import type { ExpressionDialect } from './expression-dialect';
|
|
3
|
+
/**
|
|
4
|
+
* Runs one engine evaluation and fails it with `EXPRESSION_FUNCTION_FAILED`
|
|
5
|
+
* when any function it called failed, even if the engine absorbed that error.
|
|
6
|
+
*/
|
|
7
|
+
export declare const runWithExpressionFunctionFrame: <TResult>(work: () => TResult) => TResult;
|
|
8
|
+
/**
|
|
9
|
+
* Wraps a registered function for one dialect's engine. The wrapper is what
|
|
10
|
+
* the engine calls; the handler only ever sees checked, frozen arguments.
|
|
11
|
+
*/
|
|
12
|
+
export declare const createExpressionFunctionInvoker: (fn: BPMExpressionFunction, dialect: ExpressionDialect) => (...rawArgs: readonly unknown[]) => unknown;
|
|
13
|
+
/** The functions of one registry, read once. */
|
|
14
|
+
export interface ExpressionFunctionTable {
|
|
15
|
+
readonly functions: readonly BPMExpressionFunction[];
|
|
16
|
+
readonly names: ReadonlySet<string>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Reads every function a registry lists, through `get`, once per registry.
|
|
20
|
+
*
|
|
21
|
+
* The registry is host code (a host may provide its own under
|
|
22
|
+
* `BPM_EXPRESSION_FUNCTION_REGISTRY`). If `list` or `get` throws, or answers
|
|
23
|
+
* out of shape — not a list, a name that is not a function name or is listed
|
|
24
|
+
* twice, `null` for a listed name, an object without a handler or with an
|
|
25
|
+
* unknown type — the evaluation fails with `EXPRESSION_FUNCTION_FAILED`. The
|
|
26
|
+
* host's message is never kept: only a fixed reason is logged. A failure is
|
|
27
|
+
* not cached, so the next evaluation asks the registry again.
|
|
28
|
+
*/
|
|
29
|
+
export declare const readExpressionFunctionTable: (registry: BPMExpressionFunctionRegistry) => ExpressionFunctionTable;
|
|
30
|
+
/**
|
|
31
|
+
* Whether a called name is one a registry decides: shaped like a host function
|
|
32
|
+
* (`…_vN`) or one of the nine built-ins. The engine's own functions (`size`,
|
|
33
|
+
* `int`, `matches`, …) never are, and neither is any other unknown name, which
|
|
34
|
+
* keeps the engine's own error (`EXPRESSION_TYPE_ERROR`) at evaluation and is
|
|
35
|
+
* refused outright by the publish lint (docs/24 §2.1, 2026-11-07).
|
|
36
|
+
*
|
|
37
|
+
* The publish lint, the rollback check and {@link callsUnavailableFunction}
|
|
38
|
+
* all read this one rule.
|
|
39
|
+
*/
|
|
40
|
+
export declare const isRegistryFunctionName: (name: string) => boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Whether an expression calls a function the registry does not have — a host
|
|
43
|
+
* function withdrawn after the version was published, or a built-in a custom
|
|
44
|
+
* registry left out. Only names {@link isRegistryFunctionName} accepts count:
|
|
45
|
+
* any other unknown name keeps the engine's own error, as before functions
|
|
46
|
+
* existed. The caller fails the evaluation with `EXPRESSION_FUNCTION_FAILED`
|
|
47
|
+
* before the engine runs, so the outcome does not depend on which branch the
|
|
48
|
+
* engine would have reached.
|
|
49
|
+
*/
|
|
50
|
+
export declare const callsUnavailableFunction: (calledNames: readonly string[], table: ExpressionFunctionTable) => boolean;
|