@rytass/bpm-core-shared 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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,46 @@
1
+ ## 0.20.1 (2026-11-10)
2
+
3
+ ### 🩹 Fixes
4
+
5
+ - **workflow-graph:** read a multiple-selection "" as unfilled ([298753a](https://github.com/Rytass/BPMCore/commit/298753a))
6
+ - **workflow-graph:** guard designer conditions against absent form keys ([a3d2cb6](https://github.com/Rytass/BPMCore/commit/a3d2cb6))
7
+
8
+ ### ❤️ Thank You
9
+
10
+ - Chia Yu Pai @fantasywind
11
+ - Kai-Chieh Yang
12
+
13
+ ## 0.20.0 (2026-11-08)
14
+
15
+ ### 🚀 Features
16
+
17
+ - **workflow-chat:** require a BPM API session for /api/chat ([9906851](https://github.com/Rytass/BPMCore/commit/9906851))
18
+ - ⚠️ **form-data-source:** pass a binding's position explicitly and lint NOTIFY expressions ([9987b12](https://github.com/Rytass/BPMCore/commit/9987b12))
19
+ - **form-data-source:** bind DataSource and webhook parameters to expressions ([c2b18d3](https://github.com/Rytass/BPMCore/commit/c2b18d3))
20
+ - **designer:** write, preview and upgrade expressions in the designer ([ec36bb7](https://github.com/Rytass/BPMCore/commit/ec36bb7))
21
+ - **template:** lint expressions against their AST at publish ([61d07f5](https://github.com/Rytass/BPMCore/commit/61d07f5))
22
+ - **expression-function:** register host and built-in functions ([f8763b4](https://github.com/Rytass/BPMCore/commit/f8763b4))
23
+ - **expression-function:** define the function registry contract ([31e7e16](https://github.com/Rytass/BPMCore/commit/31e7e16))
24
+ - **condition:** evaluate expressions under a budget with sanitized errors ([38ef1f8](https://github.com/Rytass/BPMCore/commit/38ef1f8))
25
+
26
+ ### 🩹 Fixes
27
+
28
+ - **form-data-source:** take a new pick over an expired EXPRESSION value ([3499115](https://github.com/Rytass/BPMCore/commit/3499115))
29
+ - **condition:** check cel-v2 function argument types and log engine warm-up ([0834758](https://github.com/Rytass/BPMCore/commit/0834758))
30
+ - **workflow-engine:** send webhooks after the transaction commits ([d74aba6](https://github.com/Rytass/BPMCore/commit/d74aba6))
31
+
32
+ ### ⚠️ Breaking Changes
33
+
34
+ - **form-data-source:** pass a binding's position explicitly and lint NOTIFY expressions ([9987b12](https://github.com/Rytass/BPMCore/commit/9987b12))
35
+ FormDataSourceService.searchFormFieldOptions takes a
36
+ required position instead of optional rowValues, and the
37
+ NotifyWebhookBindingSource union gains an EXPRESSION member, so an
38
+ exhaustive switch over from.kind needs a new case.
39
+
40
+ ### ❤️ Thank You
41
+
42
+ - Chia Yu Pai @fantasywind
43
+
1
44
  ## 0.19.0 (2026-11-04)
2
45
 
3
46
  ### 🩹 Fixes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rytass/bpm-core-shared",
3
- "version": "0.19.0",
3
+ "version": "0.20.1",
4
4
  "description": "Shared TypeScript contracts for the Rytass BPM approval workflow stack (workflow, form, condition, identity, organization, status types).",
5
5
  "keywords": [
6
6
  "bpm",
package/src/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from './lib/condition';
2
+ export * from './lib/expression-function';
3
+ export * from './lib/expression-usage-point';
2
4
  export * from './lib/field-access';
3
5
  export * from './lib/field-access-lint';
4
6
  export * from './lib/field-access-matrix';
package/src/index.js CHANGED
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./lib/condition"), exports);
5
+ tslib_1.__exportStar(require("./lib/expression-function"), exports);
6
+ tslib_1.__exportStar(require("./lib/expression-usage-point"), exports);
5
7
  tslib_1.__exportStar(require("./lib/field-access"), exports);
6
8
  tslib_1.__exportStar(require("./lib/field-access-lint"), exports);
7
9
  tslib_1.__exportStar(require("./lib/field-access-matrix"), exports);
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/shared/src/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,6DAAmC;AACnC,kEAAwC;AACxC,oEAA0C;AAC1C,qDAA2B;AAC3B,yDAA+B;AAC/B,6DAAmC;AACnC,uDAA6B;AAC7B,yDAA+B;AAC/B,+DAAqC;AACrC,iEAAuC;AACvC,iEAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/shared/src/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,oEAA0C;AAC1C,uEAA6C;AAC7C,6DAAmC;AACnC,kEAAwC;AACxC,oEAA0C;AAC1C,qDAA2B;AAC3B,yDAA+B;AAC/B,6DAAmC;AACnC,uDAA6B;AAC7B,yDAA+B;AAC/B,+DAAqC;AACrC,iEAAuC;AACvC,iEAAuC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * The value types an expression function declares for its parameters and its
3
+ * result (ADR 22 §3.5). They name CEL types; `dyn` accepts any JSON value.
4
+ */
5
+ export type BPMExpressionValueType = 'bool' | 'double' | 'dyn' | 'int' | 'list' | 'map' | 'null' | 'string';
6
+ /** A JSON value as an expression function receives and returns it. */
7
+ export type BPMExpressionValue = boolean | number | string | null | readonly BPMExpressionValue[] | {
8
+ readonly [key: string]: BPMExpressionValue;
9
+ };
10
+ export interface BPMExpressionFunctionParameter {
11
+ readonly description?: string;
12
+ readonly name: string;
13
+ readonly type: BPMExpressionValueType;
14
+ }
15
+ /**
16
+ * What the designer, the catalog and the publish lint may know about a
17
+ * function: everything except its handler. The browser only ever sees this.
18
+ */
19
+ export interface BPMExpressionFunctionDescriptor {
20
+ /** `true` for the nine core functions (`round` … `upper`). */
21
+ readonly builtIn: boolean;
22
+ readonly description: string;
23
+ readonly label: string;
24
+ /** Host functions carry their version: `erp_costBand_v1`. Built-ins do not. */
25
+ readonly name: string;
26
+ readonly parameters: readonly BPMExpressionFunctionParameter[];
27
+ readonly returnType: BPMExpressionValueType;
28
+ }
29
+ /** The names the core reserves for its built-in functions (ADR 22 §3.5). */
30
+ export declare const BPM_BUILT_IN_EXPRESSION_FUNCTION_NAMES: readonly ["abs", "ceil", "floor", "lower", "max", "min", "round", "trim", "upper"];
31
+ export type BPMBuiltInExpressionFunctionName = (typeof BPM_BUILT_IN_EXPRESSION_FUNCTION_NAMES)[number];
32
+ /** Host function names: lower camel segments joined by `_`, ending in `_vN`. */
33
+ export declare const BPM_EXPRESSION_FUNCTION_NAME_PATTERN: RegExp;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BPM_EXPRESSION_FUNCTION_NAME_PATTERN = exports.BPM_BUILT_IN_EXPRESSION_FUNCTION_NAMES = void 0;
4
+ /** The names the core reserves for its built-in functions (ADR 22 §3.5). */
5
+ exports.BPM_BUILT_IN_EXPRESSION_FUNCTION_NAMES = [
6
+ 'abs',
7
+ 'ceil',
8
+ 'floor',
9
+ 'lower',
10
+ 'max',
11
+ 'min',
12
+ 'round',
13
+ 'trim',
14
+ 'upper',
15
+ ];
16
+ /** Host function names: lower camel segments joined by `_`, ending in `_vN`. */
17
+ exports.BPM_EXPRESSION_FUNCTION_NAME_PATTERN = /^[a-z][A-Za-z0-9]*(_[A-Za-z0-9]+)*_v[0-9]+$/u;
18
+ //# sourceMappingURL=expression-function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-function.js","sourceRoot":"","sources":["../../../../../libs/shared/src/lib/expression-function.ts"],"names":[],"mappings":";;;AAqCA,4EAA4E;AAC/D,QAAA,sCAAsC,GAAG;IACpD,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,KAAK;IACL,KAAK;IACL,OAAO;IACP,MAAM;IACN,OAAO;CACC,CAAC;AAKX,gFAAgF;AACnE,QAAA,oCAAoC,GAC/C,8CAA8C,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Where an expression is evaluated, and so what it may read (docs/24 §2.3).
3
+ * Each use point has its own root list; they are deliberately not merged.
4
+ */
5
+ export declare const EXPRESSION_USAGE_POINTS: readonly ["INITIATOR_POLICY", "ENTRY_CONDITION", "FLOW_CONDITION", "APPROVER_RESOLVER", "SERVICE_FORM_FIELD_VALUE", "WEBHOOK_PAYLOAD", "DELEGATION_CONDITION", "DATA_SOURCE_BINDING", "NOTIFY_WEBHOOK_BINDING"];
6
+ export type ExpressionUsagePoint = (typeof EXPRESSION_USAGE_POINTS)[number];
7
+ /**
8
+ * The root identifiers each use point evaluates with. Mirrors what the engine
9
+ * hands over at each point (workflow-engine `buildInitiatorPolicyContext`,
10
+ * `buildWorkflowExpressionContext`, the edge `lastDecision`, the delegation
11
+ * `principal`), so the lint refuses exactly what could only fail at run time.
12
+ */
13
+ export declare const EXPRESSION_ROOT_IDENTIFIERS_BY_USAGE_POINT: Readonly<Record<ExpressionUsagePoint, readonly string[]>>;
14
+ /**
15
+ * Use points that may only call the built-in functions (docs/24 §1: bindings
16
+ * get host functions later, if ever; widening is additive, narrowing is not).
17
+ */
18
+ export declare const EXPRESSION_USAGE_POINTS_WITHOUT_HOST_FUNCTIONS: readonly ExpressionUsagePoint[];
19
+ export declare const isExpressionUsagePoint: (value: unknown) => value is ExpressionUsagePoint;
20
+ export declare const allowsHostExpressionFunctions: (usagePoint: ExpressionUsagePoint) => boolean;
21
+ /**
22
+ * Lint findings that refuse a publish (docs/24 §2.2). Publish, the preview's
23
+ * LINT mode and the NOTIFY catalog share this one list.
24
+ */
25
+ export declare const EXPRESSION_LINT_ERROR_CODES: readonly ["EXPR_PARSE_FAILED", "EXPR_ROOT_NOT_ALLOWED", "EXPR_WHOLE_FORM_REFERENCE", "EXPR_COMPUTED_KEY", "EXPR_RESERVED_PATH_SEGMENT", "EXPR_COMPLEXITY_EXCEEDED", "EXPR_COMPREHENSION_NESTING", "EXPR_FIELD_UNKNOWN", "EXPR_FIELD_TYPE_MISMATCH", "EXPR_RESULT_TYPE_MISMATCH", "EXPR_FUNCTION_NOT_REGISTERED", "EXPR_FUNCTION_NOT_ALLOWED"];
26
+ /**
27
+ * Lint findings that only warn. `EXPR_DIVISOR_IS_FIELD` is the warning
28
+ * docs/24 §2.1 asks for (a `double` divided by a zero field is `Infinity` in
29
+ * cel-v2, which a comparison quietly turns into a routing decision; P1 P35).
30
+ * `EXPR_LAST_DECISION_UNAVAILABLE` is an edge condition that reads
31
+ * `lastDecision` on an edge leaving a node without tasks (a gateway, a
32
+ * service task, the start): no decision is made there, so it is always
33
+ * `null` at run time (Phase 23 P2 live finding, P4).
34
+ */
35
+ export declare const EXPRESSION_LINT_WARNING_CODES: readonly ["EXPR_OPTIONAL_FIELD_WITHOUT_HAS", "EXPR_OR_ABSORBS_ERROR", "EXPR_HAS_NESTED_PARENT", "EXPR_APPROVER_READS_FORM", "EXPR_HIDDEN_FIELD_COPIED", "EXPR_DIVISOR_IS_FIELD", "EXPR_LAST_DECISION_UNAVAILABLE"];
36
+ export type ExpressionLintErrorCode = (typeof EXPRESSION_LINT_ERROR_CODES)[number];
37
+ export type ExpressionLintWarningCode = (typeof EXPRESSION_LINT_WARNING_CODES)[number];
38
+ export type ExpressionLintCode = ExpressionLintErrorCode | ExpressionLintWarningCode;
39
+ export type ExpressionLintSeverity = 'ERROR' | 'WARNING';
40
+ /**
41
+ * One finding. `subject` names what the finding is about (a field key, a
42
+ * root, a function) and is only ever an identifier: anything else is dropped
43
+ * when the line is written, so a user-chosen key can never carry the `'; '`
44
+ * the publish lint joins lines with.
45
+ */
46
+ export interface ExpressionLintIssue {
47
+ readonly code: ExpressionLintCode;
48
+ readonly label: string;
49
+ readonly severity: ExpressionLintSeverity;
50
+ readonly subject?: string;
51
+ }
52
+ export declare const EXPRESSION_LINT_SUBJECT_PATTERN: RegExp;
53
+ export declare const isExpressionLintCode: (value: unknown) => value is ExpressionLintCode;
54
+ export declare const readExpressionLintSeverity: (code: ExpressionLintCode) => ExpressionLintSeverity;
55
+ /**
56
+ * The publish-lint line for a finding: `<label>: <code>` or
57
+ * `<label>: <code> <subject>`. The designer parses it back with
58
+ * {@link parseExpressionLintLine} to show its own copy.
59
+ */
60
+ export declare const formatExpressionLintIssue: (issue: ExpressionLintIssue) => string;
61
+ export interface ParsedExpressionLintLine {
62
+ readonly code: ExpressionLintCode;
63
+ readonly label: string;
64
+ readonly subject: string | null;
65
+ }
66
+ /** The parts of a line {@link formatExpressionLintIssue} wrote, or `null`. */
67
+ export declare const parseExpressionLintLine: (line: string) => ParsedExpressionLintLine | null;
68
+ /**
69
+ * The publish-lint line for a definition whose `expressionDialect` this
70
+ * version does not know (Phase 23 P2). Shared so the designer can match it.
71
+ */
72
+ export declare const UNKNOWN_EXPRESSION_DIALECT_LINT_MESSAGE = "workflow.expressionDialect must be cel-legacy or cel-v2";
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UNKNOWN_EXPRESSION_DIALECT_LINT_MESSAGE = exports.parseExpressionLintLine = exports.formatExpressionLintIssue = exports.readExpressionLintSeverity = exports.isExpressionLintCode = exports.EXPRESSION_LINT_SUBJECT_PATTERN = exports.EXPRESSION_LINT_WARNING_CODES = exports.EXPRESSION_LINT_ERROR_CODES = exports.allowsHostExpressionFunctions = exports.isExpressionUsagePoint = exports.EXPRESSION_USAGE_POINTS_WITHOUT_HOST_FUNCTIONS = exports.EXPRESSION_ROOT_IDENTIFIERS_BY_USAGE_POINT = exports.EXPRESSION_USAGE_POINTS = void 0;
4
+ /**
5
+ * Where an expression is evaluated, and so what it may read (docs/24 §2.3).
6
+ * Each use point has its own root list; they are deliberately not merged.
7
+ */
8
+ exports.EXPRESSION_USAGE_POINTS = [
9
+ 'INITIATOR_POLICY',
10
+ 'ENTRY_CONDITION',
11
+ 'FLOW_CONDITION',
12
+ 'APPROVER_RESOLVER',
13
+ 'SERVICE_FORM_FIELD_VALUE',
14
+ 'WEBHOOK_PAYLOAD',
15
+ 'DELEGATION_CONDITION',
16
+ 'DATA_SOURCE_BINDING',
17
+ 'NOTIFY_WEBHOOK_BINDING',
18
+ ];
19
+ const INSTANCE_ROOTS = [
20
+ 'env',
21
+ 'form',
22
+ 'formData',
23
+ 'initiator',
24
+ 'instance',
25
+ ];
26
+ /**
27
+ * The root identifiers each use point evaluates with. Mirrors what the engine
28
+ * hands over at each point (workflow-engine `buildInitiatorPolicyContext`,
29
+ * `buildWorkflowExpressionContext`, the edge `lastDecision`, the delegation
30
+ * `principal`), so the lint refuses exactly what could only fail at run time.
31
+ */
32
+ exports.EXPRESSION_ROOT_IDENTIFIERS_BY_USAGE_POINT = {
33
+ APPROVER_RESOLVER: INSTANCE_ROOTS,
34
+ DATA_SOURCE_BINDING: ['form', 'row'],
35
+ DELEGATION_CONDITION: [...INSTANCE_ROOTS, 'principal'],
36
+ ENTRY_CONDITION: INSTANCE_ROOTS,
37
+ FLOW_CONDITION: [...INSTANCE_ROOTS, 'lastDecision'],
38
+ INITIATOR_POLICY: ['env', 'initiator', 'subject'],
39
+ NOTIFY_WEBHOOK_BINDING: ['form'],
40
+ SERVICE_FORM_FIELD_VALUE: INSTANCE_ROOTS,
41
+ WEBHOOK_PAYLOAD: INSTANCE_ROOTS,
42
+ };
43
+ /**
44
+ * Use points that may only call the built-in functions (docs/24 §1: bindings
45
+ * get host functions later, if ever; widening is additive, narrowing is not).
46
+ */
47
+ exports.EXPRESSION_USAGE_POINTS_WITHOUT_HOST_FUNCTIONS = ['DATA_SOURCE_BINDING', 'NOTIFY_WEBHOOK_BINDING'];
48
+ const isExpressionUsagePoint = (value) => typeof value === 'string' &&
49
+ exports.EXPRESSION_USAGE_POINTS.includes(value);
50
+ exports.isExpressionUsagePoint = isExpressionUsagePoint;
51
+ const allowsHostExpressionFunctions = (usagePoint) => !exports.EXPRESSION_USAGE_POINTS_WITHOUT_HOST_FUNCTIONS.includes(usagePoint);
52
+ exports.allowsHostExpressionFunctions = allowsHostExpressionFunctions;
53
+ /**
54
+ * Lint findings that refuse a publish (docs/24 §2.2). Publish, the preview's
55
+ * LINT mode and the NOTIFY catalog share this one list.
56
+ */
57
+ exports.EXPRESSION_LINT_ERROR_CODES = [
58
+ 'EXPR_PARSE_FAILED',
59
+ 'EXPR_ROOT_NOT_ALLOWED',
60
+ 'EXPR_WHOLE_FORM_REFERENCE',
61
+ 'EXPR_COMPUTED_KEY',
62
+ 'EXPR_RESERVED_PATH_SEGMENT',
63
+ 'EXPR_COMPLEXITY_EXCEEDED',
64
+ 'EXPR_COMPREHENSION_NESTING',
65
+ 'EXPR_FIELD_UNKNOWN',
66
+ 'EXPR_FIELD_TYPE_MISMATCH',
67
+ 'EXPR_RESULT_TYPE_MISMATCH',
68
+ 'EXPR_FUNCTION_NOT_REGISTERED',
69
+ 'EXPR_FUNCTION_NOT_ALLOWED',
70
+ ];
71
+ /**
72
+ * Lint findings that only warn. `EXPR_DIVISOR_IS_FIELD` is the warning
73
+ * docs/24 §2.1 asks for (a `double` divided by a zero field is `Infinity` in
74
+ * cel-v2, which a comparison quietly turns into a routing decision; P1 P35).
75
+ * `EXPR_LAST_DECISION_UNAVAILABLE` is an edge condition that reads
76
+ * `lastDecision` on an edge leaving a node without tasks (a gateway, a
77
+ * service task, the start): no decision is made there, so it is always
78
+ * `null` at run time (Phase 23 P2 live finding, P4).
79
+ */
80
+ exports.EXPRESSION_LINT_WARNING_CODES = [
81
+ 'EXPR_OPTIONAL_FIELD_WITHOUT_HAS',
82
+ 'EXPR_OR_ABSORBS_ERROR',
83
+ 'EXPR_HAS_NESTED_PARENT',
84
+ 'EXPR_APPROVER_READS_FORM',
85
+ 'EXPR_HIDDEN_FIELD_COPIED',
86
+ 'EXPR_DIVISOR_IS_FIELD',
87
+ 'EXPR_LAST_DECISION_UNAVAILABLE',
88
+ ];
89
+ exports.EXPRESSION_LINT_SUBJECT_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/u;
90
+ const EXPRESSION_LINT_CODES = [
91
+ ...exports.EXPRESSION_LINT_ERROR_CODES,
92
+ ...exports.EXPRESSION_LINT_WARNING_CODES,
93
+ ];
94
+ const isExpressionLintCode = (value) => typeof value === 'string' && EXPRESSION_LINT_CODES.includes(value);
95
+ exports.isExpressionLintCode = isExpressionLintCode;
96
+ const readExpressionLintSeverity = (code) => exports.EXPRESSION_LINT_WARNING_CODES.includes(code)
97
+ ? 'WARNING'
98
+ : 'ERROR';
99
+ exports.readExpressionLintSeverity = readExpressionLintSeverity;
100
+ /**
101
+ * The publish-lint line for a finding: `<label>: <code>` or
102
+ * `<label>: <code> <subject>`. The designer parses it back with
103
+ * {@link parseExpressionLintLine} to show its own copy.
104
+ */
105
+ const formatExpressionLintIssue = (issue) => issue.subject !== undefined &&
106
+ exports.EXPRESSION_LINT_SUBJECT_PATTERN.test(issue.subject)
107
+ ? `${issue.label}: ${issue.code} ${issue.subject}`
108
+ : `${issue.label}: ${issue.code}`;
109
+ exports.formatExpressionLintIssue = formatExpressionLintIssue;
110
+ const EXPRESSION_LINT_LINE_PATTERN = /^(.+): (EXPR_[A-Z_]+)(?: ([A-Za-z_][A-Za-z0-9_]*))?$/u;
111
+ /** The parts of a line {@link formatExpressionLintIssue} wrote, or `null`. */
112
+ const parseExpressionLintLine = (line) => {
113
+ var _a;
114
+ const match = EXPRESSION_LINT_LINE_PATTERN.exec(line);
115
+ if (!match || !(0, exports.isExpressionLintCode)(match[2])) {
116
+ return null;
117
+ }
118
+ return {
119
+ code: match[2],
120
+ label: match[1],
121
+ subject: (_a = match[3]) !== null && _a !== void 0 ? _a : null,
122
+ };
123
+ };
124
+ exports.parseExpressionLintLine = parseExpressionLintLine;
125
+ /**
126
+ * The publish-lint line for a definition whose `expressionDialect` this
127
+ * version does not know (Phase 23 P2). Shared so the designer can match it.
128
+ */
129
+ exports.UNKNOWN_EXPRESSION_DIALECT_LINT_MESSAGE = 'workflow.expressionDialect must be cel-legacy or cel-v2';
130
+ //# sourceMappingURL=expression-usage-point.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-usage-point.js","sourceRoot":"","sources":["../../../../../libs/shared/src/lib/expression-usage-point.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,uBAAuB,GAAG;IACrC,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,0BAA0B;IAC1B,iBAAiB;IACjB,sBAAsB;IACtB,qBAAqB;IACrB,wBAAwB;CAChB,CAAC;AAIX,MAAM,cAAc,GAAG;IACrB,KAAK;IACL,MAAM;IACN,UAAU;IACV,WAAW;IACX,UAAU;CACF,CAAC;AAEX;;;;;GAKG;AACU,QAAA,0CAA0C,GAEnD;IACF,iBAAiB,EAAE,cAAc;IACjC,mBAAmB,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;IACpC,oBAAoB,EAAE,CAAC,GAAG,cAAc,EAAE,WAAW,CAAC;IACtD,eAAe,EAAE,cAAc;IAC/B,cAAc,EAAE,CAAC,GAAG,cAAc,EAAE,cAAc,CAAC;IACnD,gBAAgB,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC;IACjD,sBAAsB,EAAE,CAAC,MAAM,CAAC;IAChC,wBAAwB,EAAE,cAAc;IACxC,eAAe,EAAE,cAAc;CAChC,CAAC;AAEF;;;GAGG;AACU,QAAA,8CAA8C,GACzD,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,CAAC;AAE7C,MAAM,sBAAsB,GAAG,CACpC,KAAc,EACiB,EAAE,CACjC,OAAO,KAAK,KAAK,QAAQ;IACxB,+BAA6C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAJpD,QAAA,sBAAsB,0BAI8B;AAE1D,MAAM,6BAA6B,GAAG,CAC3C,UAAgC,EACvB,EAAE,CACX,CAAC,sDAA8C,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAH1D,QAAA,6BAA6B,iCAG6B;AAEvE;;;GAGG;AACU,QAAA,2BAA2B,GAAG;IACzC,mBAAmB;IACnB,uBAAuB;IACvB,2BAA2B;IAC3B,mBAAmB;IACnB,4BAA4B;IAC5B,0BAA0B;IAC1B,4BAA4B;IAC5B,oBAAoB;IACpB,0BAA0B;IAC1B,2BAA2B;IAC3B,8BAA8B;IAC9B,2BAA2B;CACnB,CAAC;AAEX;;;;;;;;GAQG;AACU,QAAA,6BAA6B,GAAG;IAC3C,iCAAiC;IACjC,uBAAuB;IACvB,wBAAwB;IACxB,0BAA0B;IAC1B,0BAA0B;IAC1B,uBAAuB;IACvB,gCAAgC;CACxB,CAAC;AA0BE,QAAA,+BAA+B,GAAG,2BAA2B,CAAC;AAE3E,MAAM,qBAAqB,GAAsB;IAC/C,GAAG,mCAA2B;IAC9B,GAAG,qCAA6B;CACjC,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAClC,KAAc,EACe,EAAE,CAC/B,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAHxD,QAAA,oBAAoB,wBAGoC;AAE9D,MAAM,0BAA0B,GAAG,CACxC,IAAwB,EACA,EAAE,CACzB,qCAAmD,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjE,CAAC,CAAC,SAAS;IACX,CAAC,CAAC,OAAO,CAAC;AALD,QAAA,0BAA0B,8BAKzB;AAEd;;;;GAIG;AACI,MAAM,yBAAyB,GAAG,CACvC,KAA0B,EAClB,EAAE,CACV,KAAK,CAAC,OAAO,KAAK,SAAS;IAC3B,uCAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IACjD,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;IAClD,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;AANzB,QAAA,yBAAyB,6BAMA;AAQtC,MAAM,4BAA4B,GAChC,uDAAuD,CAAC;AAE1D,8EAA8E;AACvE,MAAM,uBAAuB,GAAG,CACrC,IAAY,EACqB,EAAE;;IACnC,MAAM,KAAK,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEtD,IAAI,CAAC,KAAK,IAAI,CAAC,IAAA,4BAAoB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACf,OAAO,EAAE,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,IAAI;KAC1B,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,uBAAuB,2BAclC;AAEF;;;GAGG;AACU,QAAA,uCAAuC,GAClD,yDAAyD,CAAC"}
package/src/lib/form.d.ts CHANGED
@@ -72,7 +72,24 @@ export type FormDataSourceBindingSource = {
72
72
  } | {
73
73
  readonly columnKey: string;
74
74
  readonly kind: 'ROW_FIELD';
75
+ } | {
76
+ /**
77
+ * A cel-v2 expression over `form` (and `row` inside a table column)
78
+ * whose result fills the parameter (ADR 22 §3.7). Always cel-v2, built-in
79
+ * functions only; evaluated only by the backend, from the stored schema.
80
+ */
81
+ readonly expression: string;
82
+ readonly kind: 'EXPRESSION';
75
83
  };
84
+ /** Every `FormDataSourceBindingSource` kind this version understands. */
85
+ export declare const FORM_DATA_SOURCE_BINDING_KINDS: readonly ["CONSTANT", "EXPRESSION", "FIELD", "ROW_FIELD"];
86
+ export type FormDataSourceBindingKind = (typeof FORM_DATA_SOURCE_BINDING_KINDS)[number];
87
+ /**
88
+ * Whether `kind` is a binding source this version understands. A schema
89
+ * written by a newer version may carry one it does not; readers must treat
90
+ * that binding as unusable instead of guessing (docs/24 §2.8).
91
+ */
92
+ export declare const isFormDataSourceBindingKind: (kind: unknown) => kind is FormDataSourceBindingKind;
76
93
  export interface FormDataSourceBinding {
77
94
  readonly from: FormDataSourceBindingSource;
78
95
  readonly parameter: string;
package/src/lib/form.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TEXT_FIELD_PATTERN_ERROR_MESSAGE_MAX_LENGTH = exports.TEXT_FIELD_PATTERN_MAX_LENGTH = exports.TEXT_FIELD_PATTERN_TIME_BUDGET_MS = exports.FORM_TABLE_MAX_ROWS = exports.TABLE_COLUMN_FIELD_TYPES = exports.ATTACHMENT_NOT_BINDABLE_ERROR_CODE = void 0;
3
+ exports.TEXT_FIELD_PATTERN_ERROR_MESSAGE_MAX_LENGTH = exports.TEXT_FIELD_PATTERN_MAX_LENGTH = exports.TEXT_FIELD_PATTERN_TIME_BUDGET_MS = exports.FORM_TABLE_MAX_ROWS = exports.TABLE_COLUMN_FIELD_TYPES = exports.ATTACHMENT_NOT_BINDABLE_ERROR_CODE = exports.isFormDataSourceBindingKind = exports.FORM_DATA_SOURCE_BINDING_KINDS = void 0;
4
4
  exports.isFormOptionFieldDefinition = isFormOptionFieldDefinition;
5
5
  exports.isMemberFieldDefinition = isMemberFieldDefinition;
6
6
  exports.isOrgUnitFieldDefinition = isOrgUnitFieldDefinition;
@@ -21,6 +21,21 @@ exports.isFormDataSourceFieldDefinition = isFormDataSourceFieldDefinition;
21
21
  exports.isFormStaticOptionFieldDefinition = isFormStaticOptionFieldDefinition;
22
22
  exports.readFormFieldSelectionMode = readFormFieldSelectionMode;
23
23
  exports.normalizeFormDefinitionSchema = normalizeFormDefinitionSchema;
24
+ /** Every `FormDataSourceBindingSource` kind this version understands. */
25
+ exports.FORM_DATA_SOURCE_BINDING_KINDS = [
26
+ 'CONSTANT',
27
+ 'EXPRESSION',
28
+ 'FIELD',
29
+ 'ROW_FIELD',
30
+ ];
31
+ /**
32
+ * Whether `kind` is a binding source this version understands. A schema
33
+ * written by a newer version may carry one it does not; readers must treat
34
+ * that binding as unusable instead of guessing (docs/24 §2.8).
35
+ */
36
+ const isFormDataSourceBindingKind = (kind) => typeof kind === 'string' &&
37
+ exports.FORM_DATA_SOURCE_BINDING_KINDS.includes(kind);
38
+ exports.isFormDataSourceBindingKind = isFormDataSourceBindingKind;
24
39
  /**
25
40
  * Leads the message of a submission the server refuses because a
26
41
  * `file_upload` value names an attachment the case may not take: one uploaded
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","sourceRoot":"","sources":["../../../../../libs/shared/src/lib/form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../../../../libs/shared/src/lib/form.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,16 @@ export declare const WORKFLOW_EXPRESSION_LABELS: Readonly<{
49
49
  nodeApproverResolverExpression: (nodeId: string) => string;
50
50
  nodeEntryCondition: (nodeId: string) => string;
51
51
  }>;
52
+ /**
53
+ * Node types whose completion records a decision, which is what `lastDecision`
54
+ * reads on the edges leaving them. Every other node (a gateway, a service
55
+ * task, the start) has no task, so on its outgoing edges `lastDecision` is
56
+ * always `null` at run time; the expression lint warns about reading it there
57
+ * (`EXPR_LAST_DECISION_UNAVAILABLE`).
58
+ */
59
+ export declare const WORKFLOW_DECISION_NODE_TYPES: readonly WorkflowNode['type'][];
60
+ /** Whether an edge leaving a node of this type has a `lastDecision` to read. */
61
+ export declare function hasWorkflowLastDecision(nodeType: string): boolean;
52
62
  /**
53
63
  * The structural lines of the backend publish lint (`lintWorkflowDefinition`
54
64
  * in `@rytass/bpm-core-nestjs-module`). The backend writes them from here and
@@ -311,7 +321,7 @@ export declare const NOTIFY_WEBHOOK_TARGET_LIMIT = 10;
311
321
  export declare const NOTIFY_WEBHOOK_ENDPOINT_VERSION_MAX = 2147483647;
312
322
  export declare const NOTIFY_WEBHOOK_CONTEXT_PATHS: readonly NotifyWebhookContextPath[];
313
323
  export type NotifyWebhookTargetIdFactory = () => string;
314
- export type NotifyWebhookStructureIssueCode = 'BINDING_CONSTANT_INVALID' | 'BINDING_CONTEXT_PATH_INVALID' | 'BINDING_FIELD_KEY_REQUIRED' | 'BINDING_INVALID' | 'BINDING_PARAMETER_DUPLICATE' | 'BINDING_PARAMETER_REQUIRED' | 'BINDING_SOURCE_INVALID' | 'BINDINGS_NOT_ARRAY' | 'ENDPOINT_KEY_REQUIRED' | 'ENDPOINT_VERSION_INVALID' | 'TARGET_ID_DUPLICATE' | 'TARGET_ID_REQUIRED' | 'TARGET_INVALID' | 'TARGET_LIMIT_EXCEEDED' | 'UNKNOWN_PROPERTY' | 'WEBHOOKS_NOT_ARRAY';
324
+ export type NotifyWebhookStructureIssueCode = 'BINDING_CONSTANT_INVALID' | 'BINDING_CONTEXT_PATH_INVALID' | 'BINDING_EXPRESSION_REQUIRED' | 'BINDING_FIELD_KEY_REQUIRED' | 'BINDING_INVALID' | 'BINDING_PARAMETER_DUPLICATE' | 'BINDING_PARAMETER_REQUIRED' | 'BINDING_SOURCE_INVALID' | 'BINDINGS_NOT_ARRAY' | 'ENDPOINT_KEY_REQUIRED' | 'ENDPOINT_VERSION_INVALID' | 'TARGET_ID_DUPLICATE' | 'TARGET_ID_REQUIRED' | 'TARGET_INVALID' | 'TARGET_LIMIT_EXCEEDED' | 'UNKNOWN_PROPERTY' | 'WEBHOOKS_NOT_ARRAY';
315
325
  /**
316
326
  * A registry-independent shape problem in a NOTIFY node's `webhooks`.
317
327
  *
@@ -436,6 +446,28 @@ export declare function readConditionOperatorOptionsForField(field: FormFieldDef
436
446
  export declare function isMultipleSelectionConditionField(field: FormFieldDefinition): boolean;
437
447
  export declare function readConditionValueLabel(field: FormFieldDefinition, value: string): string;
438
448
  export declare function readFormFieldOption(options: readonly FormFieldOption[], value: string): FormFieldOption | null;
449
+ /**
450
+ * Compiles one designer condition to CEL.
451
+ *
452
+ * The runtime `form` is the submitted form data as-is, and a client submits it
453
+ * with `JSON.stringify`, so a field the user never touched has no key at all.
454
+ * cel-js throws `Identifier "x" not found in context` when it reads an absent
455
+ * key — `!= null` only guards a `null` value, not a missing key — and that
456
+ * would fail the whole submission. So for a plain-identifier key (`form.x`)
457
+ * every expression is gated on `has(form.x) && form.x != null` before the
458
+ * field is read, and "unfilled" (absent or `null`) gives the operator's empty
459
+ * answer: IS_FILLED / EQUALS / ordering are false, IS_EMPTY / NOT_EQUALS true.
460
+ *
461
+ * Two cel-js facts shape the strings (probed against cel-js 0.8.2):
462
+ * - `||` does not short-circuit, so `!has(form.x) || form.x == ""` still
463
+ * throws on `{}`. A "no" answer is therefore the negation of a guarded `&&`.
464
+ * - Only the first operand of a flat `a && b && c` chain short-circuits
465
+ * (`true && false && <throws>` throws), so the guards are right-nested:
466
+ * `a && (b && c)`.
467
+ *
468
+ * `has()` accepts only a field selection, so a non-identifier key
469
+ * (`form["a-b"]`) cannot be gated and keeps its original, unguarded output.
470
+ */
439
471
  export declare function readConditionExpression(field: FormFieldDefinition | null, operator: WorkflowEdgeConditionOperator | undefined, value: string | undefined): string | undefined;
440
472
  export declare function readFormFieldReference(fieldKey: string): string;
441
473
  export declare function readConditionExpressionOperator(operator: WorkflowEdgeConditionOperator): string;