@rytass/bpm-core-nestjs-module 0.19.0 → 0.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/package.json +3 -2
  3. package/src/index.d.ts +1 -0
  4. package/src/index.js +1 -0
  5. package/src/index.js.map +1 -1
  6. package/src/lib/bpm/bpm-root-options.d.ts +13 -0
  7. package/src/lib/bpm/bpm-root-options.js.map +1 -1
  8. package/src/lib/bpm/bpm-root.module.d.ts +12 -0
  9. package/src/lib/bpm/bpm-root.module.js +5 -0
  10. package/src/lib/bpm/bpm-root.module.js.map +1 -1
  11. package/src/lib/condition/adapters/cel-legacy.adapter.d.ts +62 -0
  12. package/src/lib/condition/adapters/cel-legacy.adapter.js +141 -0
  13. package/src/lib/condition/adapters/cel-legacy.adapter.js.map +1 -0
  14. package/src/lib/condition/adapters/cel-v2.adapter.d.ts +76 -0
  15. package/src/lib/condition/adapters/cel-v2.adapter.js +371 -0
  16. package/src/lib/condition/adapters/cel-v2.adapter.js.map +1 -0
  17. package/src/lib/condition/condition.service.d.ts +90 -5
  18. package/src/lib/condition/condition.service.js +287 -71
  19. package/src/lib/condition/condition.service.js.map +1 -1
  20. package/src/lib/condition/expression-ast.d.ts +176 -0
  21. package/src/lib/condition/expression-ast.js +1254 -0
  22. package/src/lib/condition/expression-ast.js.map +1 -0
  23. package/src/lib/condition/expression-budget.d.ts +44 -0
  24. package/src/lib/condition/expression-budget.js +61 -0
  25. package/src/lib/condition/expression-budget.js.map +1 -0
  26. package/src/lib/condition/expression-dialect.d.ts +29 -0
  27. package/src/lib/condition/expression-dialect.js +44 -0
  28. package/src/lib/condition/expression-dialect.js.map +1 -0
  29. package/src/lib/condition/expression-differential.corpus.d.ts +34 -0
  30. package/src/lib/condition/expression-differential.corpus.js +995 -0
  31. package/src/lib/condition/expression-differential.corpus.js.map +1 -0
  32. package/src/lib/condition/expression-differential.d.ts +33 -0
  33. package/src/lib/condition/expression-differential.js +48 -0
  34. package/src/lib/condition/expression-differential.js.map +1 -0
  35. package/src/lib/condition/expression-engine-failure.d.ts +15 -0
  36. package/src/lib/condition/expression-engine-failure.js +22 -0
  37. package/src/lib/condition/expression-engine-failure.js.map +1 -0
  38. package/src/lib/condition/expression-errors.d.ts +40 -0
  39. package/src/lib/condition/expression-errors.js +121 -0
  40. package/src/lib/condition/expression-errors.js.map +1 -0
  41. package/src/lib/condition/expression-function-invocation.d.ts +50 -0
  42. package/src/lib/condition/expression-function-invocation.js +290 -0
  43. package/src/lib/condition/expression-function-invocation.js.map +1 -0
  44. package/src/lib/condition/expression-result.walker.d.ts +18 -0
  45. package/src/lib/condition/expression-result.walker.js +152 -0
  46. package/src/lib/condition/expression-result.walker.js.map +1 -0
  47. package/src/lib/condition/expression-runtime.d.ts +70 -0
  48. package/src/lib/condition/expression-runtime.js +134 -0
  49. package/src/lib/condition/expression-runtime.js.map +1 -0
  50. package/src/lib/condition/index.d.ts +4 -0
  51. package/src/lib/condition/index.js +8 -0
  52. package/src/lib/condition/index.js.map +1 -1
  53. package/src/lib/delegation/delegation-rule.entity.d.ts +7 -0
  54. package/src/lib/delegation/delegation-rule.entity.js +10 -0
  55. package/src/lib/delegation/delegation-rule.entity.js.map +1 -1
  56. package/src/lib/delegation/delegation.service.d.ts +7 -1
  57. package/src/lib/delegation/delegation.service.js +22 -5
  58. package/src/lib/delegation/delegation.service.js.map +1 -1
  59. package/src/lib/delegation/dto/delegation-rule.input.d.ts +2 -0
  60. package/src/lib/delegation/dto/delegation-rule.input.js +10 -0
  61. package/src/lib/delegation/dto/delegation-rule.input.js.map +1 -1
  62. package/src/lib/expression-function/expression-function.built-ins.d.ts +9 -0
  63. package/src/lib/expression-function/expression-function.built-ins.js +117 -0
  64. package/src/lib/expression-function/expression-function.built-ins.js.map +1 -0
  65. package/src/lib/expression-function/expression-function.module.d.ts +19 -0
  66. package/src/lib/expression-function/expression-function.module.js +34 -0
  67. package/src/lib/expression-function/expression-function.module.js.map +1 -0
  68. package/src/lib/expression-function/expression-function.provider.d.ts +17 -0
  69. package/src/lib/expression-function/expression-function.provider.js +39 -0
  70. package/src/lib/expression-function/expression-function.provider.js.map +1 -0
  71. package/src/lib/expression-function/expression-function.registry.d.ts +36 -0
  72. package/src/lib/expression-function/expression-function.registry.js +231 -0
  73. package/src/lib/expression-function/expression-function.registry.js.map +1 -0
  74. package/src/lib/expression-function/expression-function.types.d.ts +30 -0
  75. package/src/lib/expression-function/expression-function.types.js +8 -0
  76. package/src/lib/expression-function/expression-function.types.js.map +1 -0
  77. package/src/lib/expression-function/index.d.ts +5 -0
  78. package/src/lib/expression-function/index.js +9 -0
  79. package/src/lib/expression-function/index.js.map +1 -0
  80. package/src/lib/form/form-schema.validator.js +53 -6
  81. package/src/lib/form/form-schema.validator.js.map +1 -1
  82. package/src/lib/form-data-source/form-data-source-value-resolver.service.d.ts +12 -1
  83. package/src/lib/form-data-source/form-data-source-value-resolver.service.js +45 -26
  84. package/src/lib/form-data-source/form-data-source-value-resolver.service.js.map +1 -1
  85. package/src/lib/form-data-source/form-data-source.expression.d.ts +95 -0
  86. package/src/lib/form-data-source/form-data-source.expression.js +267 -0
  87. package/src/lib/form-data-source/form-data-source.expression.js.map +1 -0
  88. package/src/lib/form-data-source/form-data-source.module.js +4 -0
  89. package/src/lib/form-data-source/form-data-source.module.js.map +1 -1
  90. package/src/lib/form-data-source/form-data-source.service.d.ts +22 -3
  91. package/src/lib/form-data-source/form-data-source.service.js +78 -18
  92. package/src/lib/form-data-source/form-data-source.service.js.map +1 -1
  93. package/src/lib/form-data-source/form-data-source.validation.d.ts +47 -4
  94. package/src/lib/form-data-source/form-data-source.validation.js +151 -23
  95. package/src/lib/form-data-source/form-data-source.validation.js.map +1 -1
  96. package/src/lib/migrations/0000000030000-delegation-scope-condition-dialect.d.ts +22 -0
  97. package/src/lib/migrations/0000000030000-delegation-scope-condition-dialect.js +76 -0
  98. package/src/lib/migrations/0000000030000-delegation-scope-condition-dialect.js.map +1 -0
  99. package/src/lib/migrations/index.d.ts +1 -0
  100. package/src/lib/migrations/index.js +3 -0
  101. package/src/lib/migrations/index.js.map +1 -1
  102. package/src/lib/notification/notification.service.d.ts +1 -1
  103. package/src/lib/notification/notification.service.js +7 -3
  104. package/src/lib/notification/notification.service.js.map +1 -1
  105. package/src/lib/template/dto/expression-designer.dto.d.ts +107 -0
  106. package/src/lib/template/dto/expression-designer.dto.js +415 -0
  107. package/src/lib/template/dto/expression-designer.dto.js.map +1 -0
  108. package/src/lib/template/expression-designer.queries.d.ts +16 -0
  109. package/src/lib/template/expression-designer.queries.js +66 -0
  110. package/src/lib/template/expression-designer.queries.js.map +1 -0
  111. package/src/lib/template/expression-designer.service.d.ts +72 -0
  112. package/src/lib/template/expression-designer.service.js +543 -0
  113. package/src/lib/template/expression-designer.service.js.map +1 -0
  114. package/src/lib/template/index.d.ts +2 -0
  115. package/src/lib/template/index.js +2 -0
  116. package/src/lib/template/index.js.map +1 -1
  117. package/src/lib/template/template.module.js +4 -0
  118. package/src/lib/template/template.module.js.map +1 -1
  119. package/src/lib/template/template.service.d.ts +37 -1
  120. package/src/lib/template/template.service.js +317 -29
  121. package/src/lib/template/template.service.js.map +1 -1
  122. package/src/lib/template/workflow-definition.validator.d.ts +7 -0
  123. package/src/lib/template/workflow-definition.validator.js +26 -2
  124. package/src/lib/template/workflow-definition.validator.js.map +1 -1
  125. package/src/lib/workflow-engine/time-budget.d.ts +13 -0
  126. package/src/lib/workflow-engine/time-budget.js +58 -0
  127. package/src/lib/workflow-engine/time-budget.js.map +1 -0
  128. package/src/lib/workflow-engine/workflow-condition-evaluator.js +12 -12
  129. package/src/lib/workflow-engine/workflow-condition-evaluator.js.map +1 -1
  130. package/src/lib/workflow-engine/workflow-engine.service.d.ts +24 -0
  131. package/src/lib/workflow-engine/workflow-engine.service.js +311 -88
  132. package/src/lib/workflow-engine/workflow-engine.service.js.map +1 -1
  133. package/src/lib/workflow-engine/workflow-form-value.d.ts +11 -0
  134. package/src/lib/workflow-engine/workflow-form-value.js +33 -0
  135. package/src/lib/workflow-engine/workflow-form-value.js.map +1 -0
  136. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js +4 -0
  137. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js.map +1 -1
  138. package/src/lib/workflow-webhook/workflow-webhook-delivery.service.d.ts +3 -1
  139. package/src/lib/workflow-webhook/workflow-webhook-delivery.service.js +11 -2
  140. package/src/lib/workflow-webhook/workflow-webhook-delivery.service.js.map +1 -1
  141. package/src/lib/workflow-webhook/workflow-webhook-enqueue.d.ts +8 -1
  142. package/src/lib/workflow-webhook/workflow-webhook-enqueue.js +70 -27
  143. package/src/lib/workflow-webhook/workflow-webhook-enqueue.js.map +1 -1
  144. package/src/lib/workflow-webhook/workflow-webhook-expression.d.ts +57 -0
  145. package/src/lib/workflow-webhook/workflow-webhook-expression.js +123 -0
  146. package/src/lib/workflow-webhook/workflow-webhook-expression.js.map +1 -0
  147. package/src/lib/workflow-webhook/workflow-webhook.module.js +4 -0
  148. package/src/lib/workflow-webhook/workflow-webhook.module.js.map +1 -1
  149. package/src/lib/workflow-webhook/workflow-webhook.validator.d.ts +7 -0
  150. package/src/lib/workflow-webhook/workflow-webhook.validator.js +29 -6
  151. package/src/lib/workflow-webhook/workflow-webhook.validator.js.map +1 -1
@@ -0,0 +1,543 @@
1
+ "use strict";
2
+ var ExpressionDesignerService_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ExpressionDesignerService = exports.MAX_DESIGNER_EXPRESSIONS = exports.DIALECT_UPGRADE_CHECK_TIME_LIMIT_MS = exports.EXPRESSION_PREVIEW_LABEL = void 0;
5
+ exports.readLastDecisionIssues = readLastDecisionIssues;
6
+ const tslib_1 = require("tslib");
7
+ const common_1 = require("@nestjs/common");
8
+ const typeorm_1 = require("@nestjs/typeorm");
9
+ const bpm_core_shared_1 = require("@rytass/bpm-core-shared");
10
+ const workflow_graph_1 = require("@rytass/bpm-core-shared/workflow-graph");
11
+ const typeorm_2 = require("typeorm");
12
+ const condition_service_1 = require("../condition/condition.service");
13
+ const expression_dialect_1 = require("../condition/expression-dialect");
14
+ const expression_errors_1 = require("../condition/expression-errors");
15
+ const expression_budget_1 = require("../condition/expression-budget");
16
+ const expression_differential_1 = require("../condition/expression-differential");
17
+ const expression_ast_1 = require("../condition/expression-ast");
18
+ const expression_function_invocation_1 = require("../condition/expression-function-invocation");
19
+ const expression_function_registry_1 = require("../expression-function/expression-function.registry");
20
+ const expression_function_types_1 = require("../expression-function/expression-function.types");
21
+ const form_definition_version_entity_1 = require("../form/form-definition-version.entity");
22
+ const expression_designer_dto_1 = require("./dto/expression-designer.dto");
23
+ const template_service_1 = require("./template.service");
24
+ /** The label preview findings carry: the caller knows where the field sits. */
25
+ exports.EXPRESSION_PREVIEW_LABEL = 'expression';
26
+ /**
27
+ * Wall-clock ceiling for one dialect upgrade check, the same as a whole dry
28
+ * run (docs/24 §2.7). Each comparison is still bounded by the single
29
+ * evaluation budget; past the ceiling the rest are not compared and the
30
+ * result says so (`complete: false`).
31
+ */
32
+ exports.DIALECT_UPGRADE_CHECK_TIME_LIMIT_MS = 2_000;
33
+ /** More expressions than any real definition holds; refused, not truncated. */
34
+ exports.MAX_DESIGNER_EXPRESSIONS = 500;
35
+ const BUILT_IN_NAMES = new Set(bpm_core_shared_1.BPM_BUILT_IN_EXPRESSION_FUNCTION_NAMES);
36
+ const SAMPLE_NOW = '2026-01-01T00:00:00.000Z';
37
+ const SAMPLE_MEMBER = {
38
+ memberId: 'member-sample',
39
+ orgUnitIds: ['org-unit-sample'],
40
+ positionIds: ['position-sample'],
41
+ roles: ['member'],
42
+ };
43
+ /** A sample decision, for edges that leave an approval node. */
44
+ const SAMPLE_DECISION = {
45
+ action: 'APPROVE',
46
+ comment: null,
47
+ decidedAt: SAMPLE_NOW,
48
+ decidedByMemberId: 'member-sample',
49
+ returnToNodeId: null,
50
+ taskId: 'task-sample',
51
+ transferToMemberId: null,
52
+ };
53
+ /**
54
+ * The designer's expression tools (Phase 23 P4, ADR 22 §3.8). The browser
55
+ * never parses or evaluates an expression (ADR 22 §3.1): it asks this
56
+ * service, which lints with the same `ConditionService` (and so the same
57
+ * function registry) the publish lint and the engine use.
58
+ */
59
+ let ExpressionDesignerService = ExpressionDesignerService_1 = class ExpressionDesignerService {
60
+ constructor(formDefinitionVersionRepository, conditionService, functionRegistry) {
61
+ this.formDefinitionVersionRepository = formDefinitionVersionRepository;
62
+ this.conditionService = conditionService;
63
+ this.logger = new common_1.Logger(ExpressionDesignerService_1.name);
64
+ this.functionRegistry =
65
+ functionRegistry ?? expression_function_registry_1.BUILT_IN_EXPRESSION_FUNCTION_REGISTRY;
66
+ }
67
+ /**
68
+ * Lints one expression and, in EVALUATE mode, evaluates it against the
69
+ * sample the caller sent (never a real case). Findings and the runtime
70
+ * error are codes only.
71
+ */
72
+ async previewExpression(input) {
73
+ const dialect = readRequestDialect(input.dialect);
74
+ const usagePoint = input.usagePoint;
75
+ const formSchema = await this.readFormSchema(input.formDefinitionVersionId);
76
+ const targetField = typeof input.targetFieldKey === 'string'
77
+ ? (readSchemaField(formSchema, input.targetFieldKey) ?? null)
78
+ : null;
79
+ const issues = [
80
+ ...this.conditionService.lintExpressionIssues(input.expression, exports.EXPRESSION_PREVIEW_LABEL, {
81
+ dialect,
82
+ formSchema,
83
+ targetField,
84
+ usagePoint: usagePoint,
85
+ }),
86
+ ...readLastDecisionIssues(input.expression, exports.EXPRESSION_PREVIEW_LABEL, usagePoint, input.edgeSourceNodeType ?? null, dialect),
87
+ ];
88
+ const valid = issues.every((issue) => issue.severity !== 'ERROR');
89
+ return {
90
+ evaluation: input.mode === 'EVALUATE' && valid
91
+ ? this.evaluateSample(input, dialect)
92
+ : null,
93
+ issues: issues.map(toIssueObject),
94
+ valid,
95
+ };
96
+ }
97
+ /**
98
+ * What an expression at this use point may use: its roots, the bound
99
+ * form's fields and the functions. The registry is host code: a throw or a
100
+ * malformed answer lists no function and says so, never its message.
101
+ */
102
+ async expressionCatalog(input) {
103
+ const usagePoint = (0, bpm_core_shared_1.isExpressionUsagePoint)(input.usagePoint)
104
+ ? input.usagePoint
105
+ : null;
106
+ const roots = usagePoint
107
+ ? bpm_core_shared_1.EXPRESSION_ROOT_IDENTIFIERS_BY_USAGE_POINT[usagePoint]
108
+ : [];
109
+ const formSchema = roots.includes('form')
110
+ ? await this.readFormSchema(input.formDefinitionVersionId)
111
+ : null;
112
+ const functions = usagePoint ? this.readCatalogFunctions(usagePoint) : null;
113
+ return {
114
+ fields: readCatalogFields(formSchema),
115
+ functions: functions ?? [],
116
+ functionsAvailable: functions !== null,
117
+ roots: [...roots],
118
+ usagePoint: input.usagePoint,
119
+ };
120
+ }
121
+ /**
122
+ * Every expression of the designer's draft with the form fields it reads
123
+ * and its lint findings, warnings included: what the field matrix shows as
124
+ * dependencies, what blocks renaming or deleting a referenced field, and
125
+ * where the designer shows warnings the publish lint does not return.
126
+ */
127
+ async analyzeWorkflowExpressions(input) {
128
+ const definition = parseDefinition(input.workflowDefinitionJson);
129
+ const dialect = readDefinitionDialect(definition);
130
+ const formSchema = await this.readFormSchema(input.formDefinitionVersionId);
131
+ const expressions = readDesignerExpressions(definition, input.initiatorPolicyCel ?? null);
132
+ const sourceTypes = readEdgeSourceTypes(definition);
133
+ return {
134
+ dialect: dialect ?? 'unknown',
135
+ expressions: expressions.map((entry) => ({
136
+ fieldKeys: readReferencedFieldKeys(entry.expression, dialect ?? expression_dialect_1.DEFAULT_EXPRESSION_DIALECT, formSchema),
137
+ issues: dialect === null
138
+ ? []
139
+ : this.lintEntry(entry, dialect, formSchema, sourceTypes).map(toIssueObject),
140
+ label: entry.label,
141
+ usagePoint: entry.usagePoint,
142
+ })),
143
+ };
144
+ }
145
+ /**
146
+ * The check a draft goes through before it moves to cel-v2 (ADR 22 §3.3):
147
+ * every expression evaluated under both dialects
148
+ * (`runExpressionDifferential`, with the injected `ConditionService`, so
149
+ * host functions are callable) on two samples built from the bound form —
150
+ * every field filled, and every field missing — and every finding the
151
+ * cel-v2 lint would report. Nothing is saved; the designer upgrades the
152
+ * draft itself once the designer confirmed.
153
+ */
154
+ async previewWorkflowDialectUpgrade(input) {
155
+ const definition = parseDefinition(input.workflowDefinitionJson);
156
+ const currentDialect = readDefinitionDialect(definition);
157
+ const formSchema = await this.readFormSchema(input.formDefinitionVersionId);
158
+ const expressions = readDesignerExpressions(definition, input.initiatorPolicyCel ?? null);
159
+ const sourceTypes = readEdgeSourceTypes(definition);
160
+ const deadline = Date.now() + exports.DIALECT_UPGRADE_CHECK_TIME_LIMIT_MS;
161
+ // Load both engines and this registry's environments outside the time
162
+ // limit, so the first comparison does not pay for module loading.
163
+ this.conditionService.prepareEngine('cel-legacy');
164
+ this.conditionService.prepareEngine('cel-v2');
165
+ const compared = expressions.reduce((state, entry) => {
166
+ if (state.stopped || Date.now() > deadline) {
167
+ return { ...state, stopped: true };
168
+ }
169
+ return {
170
+ checkedCount: state.checkedCount + 1,
171
+ differences: [
172
+ ...state.differences,
173
+ ...this.compareDialects(entry, formSchema, sourceTypes),
174
+ ],
175
+ stopped: false,
176
+ };
177
+ }, { checkedCount: 0, differences: [], stopped: false });
178
+ return {
179
+ checkedCount: compared.checkedCount,
180
+ complete: !compared.stopped,
181
+ currentDialect: currentDialect ?? 'unknown',
182
+ differences: compared.differences,
183
+ expressionCount: expressions.length,
184
+ v2Issues: expressions.flatMap((entry) => this.lintEntry(entry, 'cel-v2', formSchema, sourceTypes).map(toIssueObject)),
185
+ };
186
+ }
187
+ lintEntry(entry, dialect, formSchema, sourceTypes) {
188
+ return [
189
+ ...this.conditionService.lintExpressionIssues(entry.expression, entry.label, {
190
+ dialect,
191
+ formSchema,
192
+ targetField: entry.targetFieldKey === null
193
+ ? null
194
+ : (readSchemaField(formSchema, entry.targetFieldKey) ?? null),
195
+ usagePoint: entry.usagePoint,
196
+ }),
197
+ ...readLastDecisionIssues(entry.expression, entry.label, entry.usagePoint, sourceTypes.get(entry.label) ?? null, dialect),
198
+ ];
199
+ }
200
+ compareDialects(entry, formSchema, sourceTypes) {
201
+ const expression = entry.expression?.trim();
202
+ if (!expression) {
203
+ return [];
204
+ }
205
+ const samples = ['FILLED', 'EMPTY'];
206
+ const firstDifference = samples
207
+ .map((sample) => [
208
+ sample,
209
+ (0, expression_differential_1.runExpressionDifferential)({
210
+ context: buildSampleContext(entry.usagePoint, formSchema, sample, sourceTypes.get(entry.label) ?? null),
211
+ expression,
212
+ }, this.conditionService),
213
+ ])
214
+ .find(([, result]) => !result.same);
215
+ return firstDifference
216
+ ? [
217
+ {
218
+ label: entry.label,
219
+ legacyOutcome: firstDifference[1].legacy,
220
+ sample: firstDifference[0],
221
+ usagePoint: entry.usagePoint,
222
+ v2Outcome: firstDifference[1].v2,
223
+ },
224
+ ]
225
+ : [];
226
+ }
227
+ evaluateSample(input, dialect) {
228
+ const sample = parseSampleContext(input.sampleContextJson ?? null);
229
+ const usagePoint = (0, bpm_core_shared_1.isExpressionUsagePoint)(input.usagePoint)
230
+ ? input.usagePoint
231
+ : null;
232
+ if (usagePoint === null) {
233
+ return evaluationError('EXPRESSION_SYNTAX_ERROR');
234
+ }
235
+ // Outside the budget: loading the engine is not the expression's time.
236
+ this.conditionService.prepareEngine(dialect);
237
+ try {
238
+ const value = this.conditionService.evaluateValue(input.expression, sample, exports.EXPRESSION_PREVIEW_LABEL, {
239
+ allowedRootIdentifiers: bpm_core_shared_1.EXPRESSION_ROOT_IDENTIFIERS_BY_USAGE_POINT[usagePoint],
240
+ budget: (0, expression_budget_1.createExpressionBudget)(),
241
+ dialect,
242
+ });
243
+ return {
244
+ errorCode: null,
245
+ outcome: 'OK',
246
+ resultJson: JSON.stringify(value),
247
+ resultType: readResultType(value),
248
+ };
249
+ }
250
+ catch (error) {
251
+ if (error instanceof expression_errors_1.ExpressionRuntimeError) {
252
+ return evaluationError(error.code);
253
+ }
254
+ // Not a runtime outcome: a bug. Its text may hold the sample, so it is
255
+ // neither returned nor logged.
256
+ this.logger.error('code=EXPRESSION_PREVIEW_FAILED');
257
+ throw new common_1.InternalServerErrorException('Expression preview failed');
258
+ }
259
+ }
260
+ readCatalogFunctions(usagePoint) {
261
+ try {
262
+ const allowsHost = (0, bpm_core_shared_1.allowsHostExpressionFunctions)(usagePoint);
263
+ return (0, expression_function_invocation_1.readExpressionFunctionTable)(this.functionRegistry)
264
+ .functions.filter((fn) => allowsHost || BUILT_IN_NAMES.has(fn.name))
265
+ .map((fn) => ({
266
+ builtIn: BUILT_IN_NAMES.has(fn.name),
267
+ description: fn.description,
268
+ label: fn.label,
269
+ name: fn.name,
270
+ parameters: fn.parameters.map((parameter) => ({
271
+ name: parameter.name,
272
+ type: parameter.type,
273
+ })),
274
+ returnType: fn.returnType,
275
+ }));
276
+ }
277
+ catch {
278
+ // `readExpressionFunctionTable` already logged a fixed reason; the
279
+ // host's message is not kept.
280
+ this.logger.warn('code=EXPRESSION_CATALOG_UNAVAILABLE reason=registry');
281
+ return null;
282
+ }
283
+ }
284
+ async readFormSchema(formDefinitionVersionId) {
285
+ if (!formDefinitionVersionId) {
286
+ return null;
287
+ }
288
+ const formVersion = await this.formDefinitionVersionRepository.findOne({
289
+ where: { id: formDefinitionVersionId },
290
+ });
291
+ if (!formVersion) {
292
+ throw new common_1.NotFoundException(`Form definition version ${formDefinitionVersionId} was not found`);
293
+ }
294
+ return formVersion.schema ?? null;
295
+ }
296
+ };
297
+ exports.ExpressionDesignerService = ExpressionDesignerService;
298
+ exports.ExpressionDesignerService = ExpressionDesignerService = ExpressionDesignerService_1 = tslib_1.__decorate([
299
+ (0, common_1.Injectable)(),
300
+ tslib_1.__param(0, (0, typeorm_1.InjectRepository)(form_definition_version_entity_1.FormDefinitionVersionEntity)),
301
+ tslib_1.__param(2, (0, common_1.Optional)()),
302
+ tslib_1.__param(2, (0, common_1.Inject)(expression_function_types_1.BPM_EXPRESSION_FUNCTION_REGISTRY)),
303
+ tslib_1.__metadata("design:paramtypes", [typeorm_2.Repository,
304
+ condition_service_1.ConditionService, Object])
305
+ ], ExpressionDesignerService);
306
+ function toIssueObject(issue) {
307
+ return {
308
+ code: issue.code,
309
+ label: issue.label,
310
+ severity: issue.severity,
311
+ subject: issue.subject ?? null,
312
+ };
313
+ }
314
+ function evaluationError(code) {
315
+ return { errorCode: code, outcome: 'ERROR', resultJson: null, resultType: null };
316
+ }
317
+ /** A dialect the caller names; absent is `cel-legacy`, unknown is refused. */
318
+ function readRequestDialect(value) {
319
+ if (value === undefined || value === null || value === '') {
320
+ return expression_dialect_1.DEFAULT_EXPRESSION_DIALECT;
321
+ }
322
+ if (!(0, expression_dialect_1.isExpressionDialect)(value)) {
323
+ throw new common_1.BadRequestException('dialect must be cel-legacy or cel-v2');
324
+ }
325
+ return value;
326
+ }
327
+ /** The definition's dialect, or `null` for one this version does not know. */
328
+ function readDefinitionDialect(definition) {
329
+ const value = definition.expressionDialect;
330
+ if (value === undefined || value === null) {
331
+ return expression_dialect_1.DEFAULT_EXPRESSION_DIALECT;
332
+ }
333
+ return (0, expression_dialect_1.isExpressionDialect)(value) ? value : null;
334
+ }
335
+ function parseDefinition(json) {
336
+ try {
337
+ const parsed = JSON.parse(json);
338
+ if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {
339
+ return parsed;
340
+ }
341
+ }
342
+ catch {
343
+ // Falls through to the fixed message: the parser's own text echoes input.
344
+ }
345
+ throw new common_1.BadRequestException('workflowDefinitionJson must be a JSON object');
346
+ }
347
+ /**
348
+ * The expressions the designer analyses: the publish reader's list, capped.
349
+ * Blank ones are kept (the lint reports them) but compare as nothing.
350
+ */
351
+ function readDesignerExpressions(definition, initiatorPolicyCel) {
352
+ const expressions = (0, template_service_1.readUsagePointExpressions)(definition, initiatorPolicyCel).filter((entry) => entry.expression !== null && entry.expression !== undefined);
353
+ if (expressions.length > exports.MAX_DESIGNER_EXPRESSIONS) {
354
+ throw new common_1.BadRequestException(`A workflow definition may hold at most ${exports.MAX_DESIGNER_EXPRESSIONS} expressions`);
355
+ }
356
+ return expressions;
357
+ }
358
+ /** Edge condition label → type of the node the edge leaves. */
359
+ function readEdgeSourceTypes(definition) {
360
+ const nodes = Array.isArray(definition.nodes)
361
+ ? definition.nodes
362
+ : [];
363
+ const edges = Array.isArray(definition.edges)
364
+ ? definition.edges
365
+ : [];
366
+ const nodeTypes = new Map(nodes
367
+ .filter((node) => typeof node?.id === 'string' && typeof node?.type === 'string')
368
+ .map((node) => [node.id, node.type]));
369
+ return new Map(edges
370
+ .filter((edge) => typeof edge?.id === 'string' &&
371
+ typeof edge?.source === 'string' &&
372
+ nodeTypes.has(edge.source))
373
+ .map((edge) => [
374
+ workflow_graph_1.WORKFLOW_EXPRESSION_LABELS.edgeCondition(edge.id),
375
+ nodeTypes.get(edge.source) ?? '',
376
+ ]));
377
+ }
378
+ /**
379
+ * `EXPR_LAST_DECISION_UNAVAILABLE`: an edge condition that reads
380
+ * `lastDecision` where the source node records no decision. Read from the
381
+ * AST; a cel-legacy expression the reader cannot walk falls back to a word
382
+ * match outside string literals, like the old dialect's other lint.
383
+ */
384
+ function readLastDecisionIssues(expression, label, usagePoint, edgeSourceNodeType, dialect) {
385
+ const trimmed = expression?.trim();
386
+ if (usagePoint !== 'FLOW_CONDITION' ||
387
+ edgeSourceNodeType === null ||
388
+ (0, workflow_graph_1.hasWorkflowLastDecision)(edgeSourceNodeType) ||
389
+ !trimmed) {
390
+ return [];
391
+ }
392
+ const result = (0, expression_ast_1.readExpressionReferences)(trimmed, dialect);
393
+ const readsLastDecision = result.status === 'OK'
394
+ ? result.references.roots.includes('lastDecision')
395
+ : result.status === 'UNAVAILABLE' &&
396
+ /(^|[^A-Za-z0-9_.])lastDecision\b/u.test(stripStringLiterals(trimmed));
397
+ return readsLastDecision
398
+ ? [
399
+ {
400
+ code: 'EXPR_LAST_DECISION_UNAVAILABLE',
401
+ label,
402
+ severity: (0, bpm_core_shared_1.readExpressionLintSeverity)('EXPR_LAST_DECISION_UNAVAILABLE'),
403
+ },
404
+ ]
405
+ : [];
406
+ }
407
+ /**
408
+ * The top-level form fields an expression reads. cel-v2 and a walkable
409
+ * cel-legacy expression answer from the AST; otherwise each declared field is
410
+ * matched as a word after `form.`/`formData.` outside string literals.
411
+ */
412
+ function readReferencedFieldKeys(expression, dialect, formSchema) {
413
+ const trimmed = expression?.trim();
414
+ if (!trimmed) {
415
+ return [];
416
+ }
417
+ const result = (0, expression_ast_1.readExpressionReferences)(trimmed, dialect);
418
+ if (result.status === 'OK') {
419
+ return result.references.formFieldKeys;
420
+ }
421
+ const stripped = stripStringLiterals(trimmed);
422
+ return (formSchema?.fields ?? [])
423
+ .map((field) => field.fieldKey)
424
+ .filter((fieldKey) => new RegExp(`(^|[^A-Za-z0-9_.])(form|formData)\\.${escapeRegExp(fieldKey)}(?![A-Za-z0-9_])`, 'u').test(stripped));
425
+ }
426
+ function stripStringLiterals(expression) {
427
+ return expression.replace(/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/gu, '""');
428
+ }
429
+ function escapeRegExp(value) {
430
+ return value.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
431
+ }
432
+ function readSchemaField(formSchema, fieldKey) {
433
+ return (formSchema?.fields ?? []).find((field) => field.fieldKey === fieldKey);
434
+ }
435
+ function readCatalogFields(formSchema) {
436
+ return (Array.isArray(formSchema?.fields) ? formSchema.fields : [])
437
+ .filter((field) => typeof field?.fieldKey === 'string' &&
438
+ /^[A-Za-z_][A-Za-z0-9_]*$/u.test(field.fieldKey))
439
+ .map((field) => ({
440
+ fieldKey: field.fieldKey,
441
+ fieldType: field.type,
442
+ label: typeof field.label === 'string' ? field.label : field.fieldKey,
443
+ path: `form.${field.fieldKey}`,
444
+ required: field.required === true,
445
+ }));
446
+ }
447
+ function parseSampleContext(json) {
448
+ if (json === null || json === '') {
449
+ return {};
450
+ }
451
+ if (json.length > expression_designer_dto_1.MAX_PREVIEW_SAMPLE_CONTEXT_JSON_LENGTH) {
452
+ throw new common_1.BadRequestException('sampleContextJson is too long');
453
+ }
454
+ try {
455
+ const parsed = JSON.parse(json);
456
+ if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {
457
+ return parsed;
458
+ }
459
+ }
460
+ catch {
461
+ // Falls through: the parser's message echoes the input.
462
+ }
463
+ throw new common_1.BadRequestException('sampleContextJson must be a JSON object');
464
+ }
465
+ function readResultType(value) {
466
+ if (value === null) {
467
+ return 'null';
468
+ }
469
+ if (Array.isArray(value)) {
470
+ return 'list';
471
+ }
472
+ switch (typeof value) {
473
+ case 'boolean':
474
+ return 'bool';
475
+ case 'number':
476
+ return 'number';
477
+ case 'string':
478
+ return 'string';
479
+ default:
480
+ return 'map';
481
+ }
482
+ }
483
+ /** A typed sample value for one field, so number and text compare as such. */
484
+ function readSampleFieldValue(field) {
485
+ switch (field.type) {
486
+ case 'number':
487
+ case 'money':
488
+ return 7;
489
+ case 'boolean':
490
+ return true;
491
+ case 'date':
492
+ return '2026-01-01';
493
+ case 'datetime':
494
+ return SAMPLE_NOW;
495
+ case 'checkbox':
496
+ return ['sample'];
497
+ case 'member':
498
+ return field.multiple === true ? ['member-sample'] : 'member-sample';
499
+ case 'table':
500
+ case 'file_upload':
501
+ return [];
502
+ default:
503
+ return 'sample';
504
+ }
505
+ }
506
+ /**
507
+ * The context one comparison runs on. FILLED gives every declared field a
508
+ * typed value and an edge leaving an approval node a decision; EMPTY leaves
509
+ * the form empty and `lastDecision` null, which is where `has()` and `||`
510
+ * differ (docs/24 §1).
511
+ */
512
+ function buildSampleContext(usagePoint, formSchema, sample, edgeSourceNodeType) {
513
+ const form = sample === 'FILLED'
514
+ ? Object.fromEntries((formSchema?.fields ?? []).map((field) => [
515
+ field.fieldKey,
516
+ readSampleFieldValue(field),
517
+ ]))
518
+ : {};
519
+ const env = { now: SAMPLE_NOW };
520
+ if (usagePoint === 'INITIATOR_POLICY') {
521
+ return { env, initiator: SAMPLE_MEMBER, subject: SAMPLE_MEMBER };
522
+ }
523
+ return {
524
+ env,
525
+ form,
526
+ formData: form,
527
+ initiator: SAMPLE_MEMBER,
528
+ instance: {
529
+ id: 'instance-sample',
530
+ state: 'IN_PROGRESS',
531
+ templateId: 'template-sample',
532
+ templateVersionId: 'template-version-sample',
533
+ title: 'sample',
534
+ },
535
+ lastDecision: sample === 'FILLED' &&
536
+ edgeSourceNodeType !== null &&
537
+ (0, workflow_graph_1.hasWorkflowLastDecision)(edgeSourceNodeType)
538
+ ? SAMPLE_DECISION
539
+ : null,
540
+ principal: SAMPLE_MEMBER,
541
+ };
542
+ }
543
+ //# sourceMappingURL=expression-designer.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-designer.service.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/template/expression-designer.service.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ export * from './approval-template.entity';
4
4
  export * from './compose-approval-template.object';
5
5
  export * from './dto/approval-template.input';
6
6
  export * from './dto/compose-approval-template.input';
7
+ export * from './dto/expression-designer.dto';
8
+ export * from './expression-designer.service';
7
9
  export * from './template-observer.token';
8
10
  export * from './template.enums';
9
11
  export * from './template.module';
@@ -7,6 +7,8 @@ tslib_1.__exportStar(require("./approval-template.entity"), exports);
7
7
  tslib_1.__exportStar(require("./compose-approval-template.object"), exports);
8
8
  tslib_1.__exportStar(require("./dto/approval-template.input"), exports);
9
9
  tslib_1.__exportStar(require("./dto/compose-approval-template.input"), exports);
10
+ tslib_1.__exportStar(require("./dto/expression-designer.dto"), exports);
11
+ tslib_1.__exportStar(require("./expression-designer.service"), exports);
10
12
  tslib_1.__exportStar(require("./template-observer.token"), exports);
11
13
  tslib_1.__exportStar(require("./template.enums"), exports);
12
14
  tslib_1.__exportStar(require("./template.module"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/template/index.ts"],"names":[],"mappings":";;;AAAA,8EAAoD;AACpD,6EAAmD;AACnD,qEAA2C;AAC3C,6EAAmD;AACnD,wEAA8C;AAC9C,gFAAsD;AACtD,oEAA0C;AAC1C,2DAAiC;AACjC,4DAAkC;AAClC,6DAAmC;AACnC,0EAAgD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/template/index.ts"],"names":[],"mappings":";;;AAAA,8EAAoD;AACpD,6EAAmD;AACnD,qEAA2C;AAC3C,6EAAmD;AACnD,wEAA8C;AAC9C,gFAAsD;AACtD,wEAA8C;AAC9C,wEAA8C;AAC9C,oEAA0C;AAC1C,2DAAiC;AACjC,4DAAkC;AAClC,6DAAmC;AACnC,0EAAgD"}
@@ -11,6 +11,8 @@ const approval_template_category_entity_1 = require("./approval-template-categor
11
11
  const approval_template_entity_1 = require("./approval-template.entity");
12
12
  const approval_template_version_entity_1 = require("./approval-template-version.entity");
13
13
  const compose_template_mutations_1 = require("./compose-template.mutations");
14
+ const expression_designer_queries_1 = require("./expression-designer.queries");
15
+ const expression_designer_service_1 = require("./expression-designer.service");
14
16
  const template_mutations_1 = require("./template.mutations");
15
17
  const template_queries_1 = require("./template.queries");
16
18
  const template_service_1 = require("./template.service");
@@ -31,6 +33,8 @@ exports.TemplateModule = TemplateModule = tslib_1.__decorate([
31
33
  ],
32
34
  providers: [
33
35
  compose_template_mutations_1.ComposeTemplateMutations,
36
+ expression_designer_queries_1.ExpressionDesignerQueries,
37
+ expression_designer_service_1.ExpressionDesignerService,
34
38
  template_mutations_1.TemplateMutations,
35
39
  template_queries_1.TemplateQueries,
36
40
  template_service_1.TemplateService,
@@ -1 +1 @@
1
- {"version":3,"file":"template.module.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/template/template.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,6CAAgD;AAChD,oEAAgE;AAChE,2FAAqF;AACrF,qDAAiD;AACjD,2FAAqF;AACrF,yEAAoE;AACpE,yFAAmF;AACnF,6EAAwE;AACxE,6DAAyD;AACzD,yDAAqD;AACrD,yDAAqD;AAqB9C,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAnB1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,kCAAe;YACf,wBAAU;YACV,uBAAa,CAAC,UAAU,CAAC;gBACvB,kEAA8B;gBAC9B,iDAAsB;gBACtB,gEAA6B;gBAC7B,4DAA2B;aAC5B,CAAC;SACH;QACD,SAAS,EAAE;YACT,qDAAwB;YACxB,sCAAiB;YACjB,kCAAe;YACf,kCAAe;SAChB;QACD,OAAO,EAAE,CAAC,kCAAe,CAAC;KAC3B,CAAC;GACW,cAAc,CAAG"}
1
+ {"version":3,"file":"template.module.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/template/template.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,6CAAgD;AAChD,oEAAgE;AAChE,2FAAqF;AACrF,qDAAiD;AACjD,2FAAqF;AACrF,yEAAoE;AACpE,yFAAmF;AACnF,6EAAwE;AACxE,+EAA0E;AAC1E,+EAA0E;AAC1E,6DAAyD;AACzD,yDAAqD;AACrD,yDAAqD;AAuB9C,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IArB1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,kCAAe;YACf,wBAAU;YACV,uBAAa,CAAC,UAAU,CAAC;gBACvB,kEAA8B;gBAC9B,iDAAsB;gBACtB,gEAA6B;gBAC7B,4DAA2B;aAC5B,CAAC;SACH;QACD,SAAS,EAAE;YACT,qDAAwB;YACxB,uDAAyB;YACzB,uDAAyB;YACzB,sCAAiB;YACjB,kCAAe;YACf,kCAAe;SAChB;QACD,OAAO,EAAE,CAAC,kCAAe,CAAC;KAC3B,CAAC;GACW,cAAc,CAAG"}