@rytass/bpm-core-shared 0.17.9 โ 0.18.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 +52 -0
- package/package.json +1 -1
- package/src/lib/field-access-lint.d.ts +3 -8
- package/src/lib/field-access-lint.js +8 -32
- package/src/lib/field-access-lint.js.map +1 -1
- package/src/lib/form.d.ts +100 -1
- package/src/lib/form.js +177 -1
- package/src/lib/form.js.map +1 -1
- package/src/lib/workflow-command.d.ts +5 -1
- package/src/lib/workflow-command.js +6 -0
- package/src/lib/workflow-command.js.map +1 -1
- package/src/lib/workflow-graph.d.ts +53 -1
- package/src/lib/workflow-graph.js +174 -8
- package/src/lib/workflow-graph.js.map +1 -1
- package/src/lib/workflow-reachability.d.ts +22 -0
- package/src/lib/workflow-reachability.js +48 -0
- package/src/lib/workflow-reachability.js.map +1 -0
- package/src/lib/workflow-toolset.js +55 -10
- package/src/lib/workflow-toolset.js.map +1 -1
- package/src/lib/workflow.d.ts +38 -2
- package/src/lib/workflow.js +65 -0
- package/src/lib/workflow.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,55 @@
|
|
|
1
|
+
## 0.18.1 (2026-11-01)
|
|
2
|
+
|
|
3
|
+
### ๐ Features
|
|
4
|
+
|
|
5
|
+
- add form-field and prior-node approver sources ([#132](https://github.com/Rytass/BPMCore/pull/132))
|
|
6
|
+
|
|
7
|
+
### ๐ฉน Fixes
|
|
8
|
+
|
|
9
|
+
- **bpm-core-react:** fill timeline rows only from their own decision ([f336c1d](https://github.com/Rytass/BPMCore/commit/f336c1d))
|
|
10
|
+
|
|
11
|
+
### โค๏ธ Thank You
|
|
12
|
+
|
|
13
|
+
- Chia Yu Pai @fantasywind
|
|
14
|
+
- Kai-Chieh Yang @coollugi
|
|
15
|
+
|
|
16
|
+
## 0.18.0 (2026-10-28)
|
|
17
|
+
|
|
18
|
+
### ๐ Features
|
|
19
|
+
|
|
20
|
+
- **bpm-core-client:** check text field formats in a Web Worker ([a3c3d65](https://github.com/Rytass/BPMCore/commit/a3c3d65))
|
|
21
|
+
- **shared:** detect text formats that repeat a repeating group ([5a18fc7](https://github.com/Rytass/BPMCore/commit/5a18fc7))
|
|
22
|
+
- **bpm-core-react:** name text length and format errors on the case pages ([074d4b9](https://github.com/Rytass/BPMCore/commit/074d4b9))
|
|
23
|
+
- **shared:** check text length and format with one shared rule ([a38127d](https://github.com/Rytass/BPMCore/commit/a38127d))
|
|
24
|
+
- **shared:** add the setUserTaskReturnAllowedTargets command ([ded2690](https://github.com/Rytass/BPMCore/commit/ded2690))
|
|
25
|
+
- **shared:** list the nodes a return to a chosen node may go to ([306ac32](https://github.com/Rytass/BPMCore/commit/306ac32))
|
|
26
|
+
|
|
27
|
+
### ๐ฉน Fixes
|
|
28
|
+
|
|
29
|
+
- **bpm-core:** ask the directory only about delegation rules in scope ([022304e](https://github.com/Rytass/BPMCore/commit/022304e))
|
|
30
|
+
- **bpm-core:** hold service-task text writes to the field's rules ([fcde1df](https://github.com/Rytass/BPMCore/commit/fcde1df))
|
|
31
|
+
- **bpm-core-react:** check formats off the main thread on the case pages ([58a1a9d](https://github.com/Rytass/BPMCore/commit/58a1a9d))
|
|
32
|
+
- **bpm-core:** keep the directory's error out of the delegation refusal ([14ccd0e](https://github.com/Rytass/BPMCore/commit/14ccd0e))
|
|
33
|
+
- **bpm-core:** refuse to dispatch when the delegation directory lookup fails ([8ef8a88](https://github.com/Rytass/BPMCore/commit/8ef8a88))
|
|
34
|
+
- **shared:** refuse a text pattern whose parentheses close the anchoring early ([330ef06](https://github.com/Rytass/BPMCore/commit/330ef06))
|
|
35
|
+
- **bpm-core:** check the type of a text field whose visibleWhen is false ([b256040](https://github.com/Rytass/BPMCore/commit/b256040))
|
|
36
|
+
- **bpm-core:** share one pattern time budget per validation pass ([8f81919](https://github.com/Rytass/BPMCore/commit/8f81919))
|
|
37
|
+
- **shared:** refuse every repeated group in a text field pattern ([d0daa77](https://github.com/Rytass/BPMCore/commit/d0daa77))
|
|
38
|
+
- **shared:** refuse repeated alternations whose branches can start alike ([5e6e12e](https://github.com/Rytass/BPMCore/commit/5e6e12e))
|
|
39
|
+
- **shared:** report a non-text value on a text field that has rules ([41eac23](https://github.com/Rytass/BPMCore/commit/41eac23))
|
|
40
|
+
- **shared:** keep a later stage that loops back out of the return targets ([86c2fd0](https://github.com/Rytass/BPMCore/commit/86c2fd0))
|
|
41
|
+
|
|
42
|
+
### ๐ฅ Performance
|
|
43
|
+
|
|
44
|
+
- **shared:** walk return targets over adjacency maps ([a56de04](https://github.com/Rytass/BPMCore/commit/a56de04))
|
|
45
|
+
- **shared:** compile each text field pattern once and reuse it ([7410ba6](https://github.com/Rytass/BPMCore/commit/7410ba6))
|
|
46
|
+
- **bpm-core:** ask the host directory once per node when resolving delegation ([cb62b00](https://github.com/Rytass/BPMCore/commit/cb62b00))
|
|
47
|
+
|
|
48
|
+
### โค๏ธ Thank You
|
|
49
|
+
|
|
50
|
+
- Chia Yu Pai @fantasywind
|
|
51
|
+
- Kai-Chieh Yang
|
|
52
|
+
|
|
1
53
|
## 0.17.9 (2026-10-27)
|
|
2
54
|
|
|
3
55
|
This was a version bump only for shared to align it with other projects, there were no code changes.
|
package/package.json
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { FormDefinitionSchema, FormFieldDefinition } from './form';
|
|
2
|
-
import type { FieldAccessDisplay, FieldAccessEntry, FieldAccessFill, UserTaskNode, WorkflowDefinition
|
|
2
|
+
import type { FieldAccessDisplay, FieldAccessEntry, FieldAccessFill, UserTaskNode, WorkflowDefinition } from './workflow';
|
|
3
|
+
import { isOnOwnParallelBranch, readReachableWorkflowNodeIds, readWorkflowParallelBranchSets } from './workflow-reachability';
|
|
4
|
+
export { isOnOwnParallelBranch, readReachableWorkflowNodeIds, readWorkflowParallelBranchSets, };
|
|
3
5
|
/**
|
|
4
6
|
* The field access rules (ADR 20 ยง4) as structured issues. The publish lint
|
|
5
7
|
* turns each into its `message` line, and the designer's field access matrix
|
|
@@ -52,13 +54,6 @@ export declare function isFieldAccessEntryValid(entry: unknown): entry is FieldA
|
|
|
52
54
|
* the form is checked against the form (`readFormFieldAccessIssues`).
|
|
53
55
|
*/
|
|
54
56
|
export declare function readNodeFieldAccessIssues(node: UserTaskNode): readonly FieldAccessIssue[];
|
|
55
|
-
/**
|
|
56
|
-
* The nodes reachable from `startNodeIds` along `edges` without entering one
|
|
57
|
-
* of `blockedNodeIds`, the start nodes included unless blocked. Walks the
|
|
58
|
-
* graph one frontier at a time and drops every node it has already seen, so a
|
|
59
|
-
* cycle ends the walk instead of feeding it.
|
|
60
|
-
*/
|
|
61
|
-
export declare function readReachableWorkflowNodeIds(edges: readonly WorkflowEdge[], startNodeIds: readonly string[], blockedNodeIds?: ReadonlySet<string>): ReadonlySet<string>;
|
|
62
57
|
/**
|
|
63
58
|
* Whether two nodes can both run in one case: one reaches the other, or a
|
|
64
59
|
* parallel split sends each down a branch of its own (reachable from one
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FIELD_ACCESS_FILLS = exports.FIELD_ACCESS_DISPLAYS = void 0;
|
|
3
|
+
exports.FIELD_ACCESS_FILLS = exports.FIELD_ACCESS_DISPLAYS = exports.readWorkflowParallelBranchSets = exports.readReachableWorkflowNodeIds = exports.isOnOwnParallelBranch = void 0;
|
|
4
4
|
exports.readUserTaskFillConflicts = readUserTaskFillConflicts;
|
|
5
5
|
exports.isFieldAccessEntryValid = isFieldAccessEntryValid;
|
|
6
6
|
exports.readNodeFieldAccessIssues = readNodeFieldAccessIssues;
|
|
7
|
-
exports.readReachableWorkflowNodeIds = readReachableWorkflowNodeIds;
|
|
8
7
|
exports.createWorkflowCoRunReader = createWorkflowCoRunReader;
|
|
9
8
|
exports.readDefinitionFieldAccessIssues = readDefinitionFieldAccessIssues;
|
|
10
9
|
exports.readFormFieldFillIssues = readFormFieldFillIssues;
|
|
@@ -13,6 +12,10 @@ exports.readFormFieldAccessIssues = readFormFieldAccessIssues;
|
|
|
13
12
|
const form_1 = require("./form");
|
|
14
13
|
const field_access_1 = require("./field-access");
|
|
15
14
|
const workflow_graph_1 = require("./workflow-graph");
|
|
15
|
+
const workflow_reachability_1 = require("./workflow-reachability");
|
|
16
|
+
Object.defineProperty(exports, "isOnOwnParallelBranch", { enumerable: true, get: function () { return workflow_reachability_1.isOnOwnParallelBranch; } });
|
|
17
|
+
Object.defineProperty(exports, "readReachableWorkflowNodeIds", { enumerable: true, get: function () { return workflow_reachability_1.readReachableWorkflowNodeIds; } });
|
|
18
|
+
Object.defineProperty(exports, "readWorkflowParallelBranchSets", { enumerable: true, get: function () { return workflow_reachability_1.readWorkflowParallelBranchSets; } });
|
|
16
19
|
function readUserTaskFillConflicts(node) {
|
|
17
20
|
var _a, _b, _c, _d;
|
|
18
21
|
return [
|
|
@@ -143,23 +146,6 @@ function readNodeFieldAccessIssues(node) {
|
|
|
143
146
|
})),
|
|
144
147
|
];
|
|
145
148
|
}
|
|
146
|
-
/**
|
|
147
|
-
* The nodes reachable from `startNodeIds` along `edges` without entering one
|
|
148
|
-
* of `blockedNodeIds`, the start nodes included unless blocked. Walks the
|
|
149
|
-
* graph one frontier at a time and drops every node it has already seen, so a
|
|
150
|
-
* cycle ends the walk instead of feeding it.
|
|
151
|
-
*/
|
|
152
|
-
function readReachableWorkflowNodeIds(edges, startNodeIds, blockedNodeIds = new Set()) {
|
|
153
|
-
const walk = (frontier, visited) => {
|
|
154
|
-
const fresh = [...new Set(frontier)].filter((nodeId) => !visited.has(nodeId) && !blockedNodeIds.has(nodeId));
|
|
155
|
-
return fresh.length
|
|
156
|
-
? walk(edges
|
|
157
|
-
.filter((edge) => fresh.includes(edge.source))
|
|
158
|
-
.map((edge) => edge.target), new Set([...visited, ...fresh]))
|
|
159
|
-
: visited;
|
|
160
|
-
};
|
|
161
|
-
return walk(startNodeIds, new Set());
|
|
162
|
-
}
|
|
163
149
|
/**
|
|
164
150
|
* Whether two nodes can both run in one case: one reaches the other, or a
|
|
165
151
|
* parallel split sends each down a branch of its own (reachable from one
|
|
@@ -175,24 +161,14 @@ function createWorkflowCoRunReader(definition) {
|
|
|
175
161
|
if (cached !== undefined) {
|
|
176
162
|
return cached;
|
|
177
163
|
}
|
|
178
|
-
const reachable = readReachableWorkflowNodeIds(definition.edges, [nodeId]);
|
|
164
|
+
const reachable = (0, workflow_reachability_1.readReachableWorkflowNodeIds)(definition.edges, [nodeId]);
|
|
179
165
|
reachableCache.set(nodeId, reachable);
|
|
180
166
|
return reachable;
|
|
181
167
|
};
|
|
182
|
-
const parallelBranches = definition
|
|
183
|
-
.filter((node) => node.type === 'parallelGateway')
|
|
184
|
-
.map((node) => definition.edges
|
|
185
|
-
.filter((edge) => edge.source === node.id)
|
|
186
|
-
.map((edge) => readReachable(edge.target)))
|
|
187
|
-
.filter((branches) => branches.length >= 2);
|
|
188
|
-
const isOnOwnBranch = (branches, nodeId, otherNodeId) => branches.some((branch, index) => branch.has(nodeId) &&
|
|
189
|
-
!branch.has(otherNodeId) &&
|
|
190
|
-
branches.some((other, otherIndex) => otherIndex !== index &&
|
|
191
|
-
other.has(otherNodeId) &&
|
|
192
|
-
!other.has(nodeId)));
|
|
168
|
+
const parallelBranches = (0, workflow_reachability_1.readWorkflowParallelBranchSets)(definition, readReachable);
|
|
193
169
|
return (nodeId, otherNodeId) => readReachable(nodeId).has(otherNodeId) ||
|
|
194
170
|
readReachable(otherNodeId).has(nodeId) ||
|
|
195
|
-
parallelBranches.some((branches) =>
|
|
171
|
+
parallelBranches.some((branches) => (0, workflow_reachability_1.isOnOwnParallelBranch)(branches, nodeId, otherNodeId));
|
|
196
172
|
}
|
|
197
173
|
/**
|
|
198
174
|
* The issues read from the whole definition, in publish-lint order: a system
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-access-lint.js","sourceRoot":"","sources":["../../../../../libs/shared/src/lib/field-access-lint.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"field-access-lint.js","sourceRoot":"","sources":["../../../../../libs/shared/src/lib/field-access-lint.ts"],"names":[],"mappings":"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"}
|
package/src/lib/form.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export interface FormDefinitionSchema {
|
|
|
2
2
|
readonly fields: readonly FormFieldDefinition[];
|
|
3
3
|
readonly schemaVersion: 1;
|
|
4
4
|
}
|
|
5
|
-
export type FormFieldDefinition = TextFieldDefinition | NumberFieldDefinition | DateFieldDefinition | SelectFieldDefinition | AutoCompleteFieldDefinition | RadioFieldDefinition | CheckboxFieldDefinition | BooleanFieldDefinition | FileUploadFieldDefinition | MemberFieldDefinition | TableFieldDefinition;
|
|
5
|
+
export type FormFieldDefinition = TextFieldDefinition | NumberFieldDefinition | DateFieldDefinition | SelectFieldDefinition | AutoCompleteFieldDefinition | RadioFieldDefinition | CheckboxFieldDefinition | BooleanFieldDefinition | FileUploadFieldDefinition | MemberFieldDefinition | OrgUnitFieldDefinition | TableFieldDefinition;
|
|
6
6
|
interface BaseFormFieldDefinition<TType extends string> {
|
|
7
7
|
readonly defaultValue?: FormFieldValue;
|
|
8
8
|
readonly description?: string;
|
|
@@ -40,8 +40,17 @@ export type TextFieldDefinition = BaseFormFieldDefinition<'text' | 'textarea'> &
|
|
|
40
40
|
* `http(s)://` ็ถฒๅๆ่ฎๆ้ฃ็ต๏ผๅ
ถไปๅผ็
ง็ดๆๅญ้กฏ็คบใไธๆฏๆด table ๆฌใ
|
|
41
41
|
*/
|
|
42
42
|
readonly displayAs?: 'link';
|
|
43
|
+
/** ๅญๆธไธ้๏ผไปฅๅญๅ
๏ผcode point๏ผ่จใ้ๅบๆๅๅพ็ซฏ้ฝๆๆชขๆฅใ */
|
|
43
44
|
readonly maxLength?: number;
|
|
45
|
+
/** ๅญๆธไธ้๏ผไปฅๅญๅ
๏ผcode point๏ผ่จ๏ผ็ฉบๅผไบค็ตฆ `required` ๅคๆทใ */
|
|
44
46
|
readonly minLength?: number;
|
|
47
|
+
/**
|
|
48
|
+
* ๆ ผๅผ๏ผๆดๅๅผๅฟ
้ ็ฌฆๅ็ๆญฃ่ฆ่กจ็คบๅผ๏ผไธ็จ่ชๅทฑๅฏซ `^`๏ผ`$`๏ผๅ HTML `pattern`๏ผ๏ผ
|
|
49
|
+
* ไปฅ `u` ๆๆจๆฏๅฐใ้ๅบๆๅๅพ็ซฏ้ฝๆๆชขๆฅ๏ผ็ฉบๅผไธๆชขๆฅใ
|
|
50
|
+
*/
|
|
51
|
+
readonly pattern?: string;
|
|
52
|
+
/** ไธ็ฌฆๅ `pattern` ๆ็ตฆๅกซๅฏซ่
็็่จๆฏ๏ผๆฒๅกซๆ้กฏ็คบ้ ่จญ่จๆฏใ */
|
|
53
|
+
readonly patternErrorMessage?: string;
|
|
45
54
|
};
|
|
46
55
|
export type NumberFieldDefinition = BaseFormFieldDefinition<'number' | 'money'> & {
|
|
47
56
|
readonly maximum?: number;
|
|
@@ -118,6 +127,12 @@ export type FileUploadFieldDefinition = BaseFormFieldDefinition<'file_upload'> &
|
|
|
118
127
|
export type MemberFieldDefinition = BaseFormFieldDefinition<'member'> & {
|
|
119
128
|
readonly multiple?: boolean;
|
|
120
129
|
};
|
|
130
|
+
/**
|
|
131
|
+
* ็ต็น้ธๆ. The stored value is a single organization unit id (string) โ id
|
|
132
|
+
* only, so it feeds a `FORM_ORG_UNIT_MANAGER` approver resolver unchanged.
|
|
133
|
+
* `multiple` is not supported and it is not a table column type.
|
|
134
|
+
*/
|
|
135
|
+
export type OrgUnitFieldDefinition = BaseFormFieldDefinition<'org_unit'>;
|
|
121
136
|
/**
|
|
122
137
|
* Field types a table column may use. `textarea`, `radio`, `checkbox`,
|
|
123
138
|
* `file_upload` and nested `table` are intentionally excluded in V1
|
|
@@ -156,6 +171,9 @@ export interface FormLayoutItem {
|
|
|
156
171
|
}
|
|
157
172
|
export declare function isFormOptionFieldDefinition(field: FormFieldDefinition): field is FormOptionFieldDefinition;
|
|
158
173
|
export declare function isMemberFieldDefinition(field: FormFieldDefinition): field is MemberFieldDefinition;
|
|
174
|
+
export declare function isOrgUnitFieldDefinition(field: FormFieldDefinition): field is OrgUnitFieldDefinition;
|
|
175
|
+
/** Whether `value` is a well-formed stored org unit value: a non-blank string. */
|
|
176
|
+
export declare function isFormOrgUnitValue(value: unknown): boolean;
|
|
159
177
|
/**
|
|
160
178
|
* Whether `value` is a well-formed stored member value: a non-empty string
|
|
161
179
|
* (`multiple` false) or an array of non-empty strings (`multiple` true). `[]`
|
|
@@ -168,6 +186,87 @@ export declare function isFormMemberValue(value: unknown, multiple: boolean): bo
|
|
|
168
186
|
* that is not a string or an array of strings yields no ids.
|
|
169
187
|
*/
|
|
170
188
|
export declare function readFormMemberIds(value: FormFieldValue | undefined): readonly string[];
|
|
189
|
+
/**
|
|
190
|
+
* Runs a compiled text field pattern on a value and answers whether it
|
|
191
|
+
* matches. A test with a time budget throws when the budget runs out; the
|
|
192
|
+
* error goes to the caller of {@link readTextFieldValueIssue}.
|
|
193
|
+
*/
|
|
194
|
+
export type TextFieldPatternTest = (pattern: RegExp, value: string) => boolean;
|
|
195
|
+
export type TextFieldValueIssue = Readonly<{
|
|
196
|
+
kind: 'maxLength';
|
|
197
|
+
limit: number;
|
|
198
|
+
}> | Readonly<{
|
|
199
|
+
kind: 'minLength';
|
|
200
|
+
limit: number;
|
|
201
|
+
}> | Readonly<{
|
|
202
|
+
kind: 'pattern';
|
|
203
|
+
message: string | null;
|
|
204
|
+
}> | Readonly<{
|
|
205
|
+
kind: 'type';
|
|
206
|
+
}>;
|
|
207
|
+
/**
|
|
208
|
+
* Compiles a text field `pattern` the way the value check applies it: the whole
|
|
209
|
+
* value has to match, under the `u` flag. Returns `null` for a pattern that
|
|
210
|
+
* does not compile, which the schema lint rejects at publish time.
|
|
211
|
+
*
|
|
212
|
+
* The pattern is compiled on its own first: wrapped in `^(?:โฆ)$` straight
|
|
213
|
+
* away, an unbalanced one such as `a)|(?:b` would close the wrapper early and
|
|
214
|
+
* compile as `^(?:a)|(?:b)$`, which no longer anchors the whole value.
|
|
215
|
+
*
|
|
216
|
+
* Compiled once per pattern and reused, since a table checks the same pattern
|
|
217
|
+
* on every row. The flags carry no `g` or `y`, so a shared `RegExp` keeps no
|
|
218
|
+
* `lastIndex` between tests.
|
|
219
|
+
*/
|
|
220
|
+
export declare function compileTextFieldPattern(pattern: string): RegExp | null;
|
|
221
|
+
/**
|
|
222
|
+
* How long the text field patterns of one validation pass may spend matching,
|
|
223
|
+
* together. A normal format check spends about a microsecond in the regular
|
|
224
|
+
* expression, so even a full table of them uses a small part of it; a pass
|
|
225
|
+
* that still runs past this is backtracking. The engine enforces it on submit
|
|
226
|
+
* and fill, and the form renderer applies the same budget in a Web Worker
|
|
227
|
+
* (`validateFormRendererValuesInWorker`), so the two agree on what times out.
|
|
228
|
+
*/
|
|
229
|
+
export declare const TEXT_FIELD_PATTERN_TIME_BUDGET_MS = 50;
|
|
230
|
+
/** Longest `pattern` the schema lint accepts. */
|
|
231
|
+
export declare const TEXT_FIELD_PATTERN_MAX_LENGTH = 500;
|
|
232
|
+
/** Longest `patternErrorMessage` the schema lint accepts. */
|
|
233
|
+
export declare const TEXT_FIELD_PATTERN_ERROR_MESSAGE_MAX_LENGTH = 200;
|
|
234
|
+
/**
|
|
235
|
+
* Whether a text field `pattern` repeats a group: a `(...)` followed by `*`,
|
|
236
|
+
* `+`, `{n,}`, `{n,m}` with m > 1 or `{n}` with n > 1. The engine runs the
|
|
237
|
+
* pattern on whatever a filler sends, and a repeated group is the only way a
|
|
238
|
+
* pattern's backtracking can grow exponentially with the length of the value:
|
|
239
|
+
* `(a+)*`, `(\w|\d)+`, `(a?a?)+` and `(ab?|b)+` all take seconds on a few
|
|
240
|
+
* dozen characters that almost match. A repeated character, class or escape
|
|
241
|
+
* matches each character one way, so without repeated groups the cost grows
|
|
242
|
+
* at most polynomially with the value. The degree grows with the pattern,
|
|
243
|
+
* though: `\w*\w*\w*!` is slow on a few hundred characters, a dozen `\w*`
|
|
244
|
+
* on a few dozen, and a long run of overlapping alternatives such as
|
|
245
|
+
* `(?:a|a)(?:a|a)โฆ` is slow on any value. The engine bounds all of that with a
|
|
246
|
+
* time budget (see the `testPattern` option of {@link readTextFieldValueIssue})
|
|
247
|
+
* and refuses the value as not checked; the form renderer applies the same
|
|
248
|
+
* budget in a Web Worker (`validateFormRendererValuesInWorker`). This check
|
|
249
|
+
* does not warn the designer about it.
|
|
250
|
+
* Safe repeated groups are refused too, such as `(-[a-z]+)*` or `(ab){2}`;
|
|
251
|
+
* the designer writes the repetition out or drops the group.
|
|
252
|
+
*/
|
|
253
|
+
export declare function hasRepeatedTextFieldPatternGroup(pattern: string): boolean;
|
|
254
|
+
/**
|
|
255
|
+
* The first rule a filled-in text value breaks โ length first, then format โ
|
|
256
|
+
* or `null` when it passes. The one check the form renderer and the engine
|
|
257
|
+
* both run, so a value the filler is allowed to send is one the server takes.
|
|
258
|
+
* An empty value is left to the required check. Any other value that is not a
|
|
259
|
+
* string is a `type` issue when the field sets a length or a format, since
|
|
260
|
+
* none of those rules can be applied to it; a field without rules keeps
|
|
261
|
+
* accepting what it accepted before. A pattern that does not compile fails
|
|
262
|
+
* closed: the lint keeps one from being published, and silently accepting
|
|
263
|
+
* every value would be worse. `testPattern` runs the compiled pattern on the
|
|
264
|
+
* value; the engine passes one with a time limit, since a pattern the lint
|
|
265
|
+
* lets through can still backtrack long enough to stall a server.
|
|
266
|
+
*/
|
|
267
|
+
export declare function readTextFieldValueIssue(field: Pick<TextFieldDefinition, 'maxLength' | 'minLength' | 'pattern' | 'patternErrorMessage'>, value: unknown, { testPattern, }?: {
|
|
268
|
+
readonly testPattern?: TextFieldPatternTest;
|
|
269
|
+
}): TextFieldValueIssue | null;
|
|
171
270
|
export declare function isTableFieldDefinition(field: FormFieldDefinition): field is TableFieldDefinition;
|
|
172
271
|
export declare function isTableColumnFieldType(type: FormFieldDefinition['type']): type is TableColumnDefinition['type'];
|
|
173
272
|
export declare function isFormTableCellValue(value: unknown): value is FormTableCellValue;
|
package/src/lib/form.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FORM_TABLE_MAX_ROWS = exports.TABLE_COLUMN_FIELD_TYPES = 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 = void 0;
|
|
4
4
|
exports.isFormOptionFieldDefinition = isFormOptionFieldDefinition;
|
|
5
5
|
exports.isMemberFieldDefinition = isMemberFieldDefinition;
|
|
6
|
+
exports.isOrgUnitFieldDefinition = isOrgUnitFieldDefinition;
|
|
7
|
+
exports.isFormOrgUnitValue = isFormOrgUnitValue;
|
|
6
8
|
exports.isFormMemberValue = isFormMemberValue;
|
|
7
9
|
exports.readFormMemberIds = readFormMemberIds;
|
|
10
|
+
exports.compileTextFieldPattern = compileTextFieldPattern;
|
|
11
|
+
exports.hasRepeatedTextFieldPatternGroup = hasRepeatedTextFieldPatternGroup;
|
|
12
|
+
exports.readTextFieldValueIssue = readTextFieldValueIssue;
|
|
8
13
|
exports.isTableFieldDefinition = isTableFieldDefinition;
|
|
9
14
|
exports.isTableColumnFieldType = isTableColumnFieldType;
|
|
10
15
|
exports.isFormTableCellValue = isFormTableCellValue;
|
|
@@ -45,6 +50,13 @@ function isFormOptionFieldDefinition(field) {
|
|
|
45
50
|
function isMemberFieldDefinition(field) {
|
|
46
51
|
return field.type === 'member';
|
|
47
52
|
}
|
|
53
|
+
function isOrgUnitFieldDefinition(field) {
|
|
54
|
+
return field.type === 'org_unit';
|
|
55
|
+
}
|
|
56
|
+
/** Whether `value` is a well-formed stored org unit value: a non-blank string. */
|
|
57
|
+
function isFormOrgUnitValue(value) {
|
|
58
|
+
return typeof value === 'string' && value.trim().length > 0;
|
|
59
|
+
}
|
|
48
60
|
/**
|
|
49
61
|
* Whether `value` is a well-formed stored member value: a non-empty string
|
|
50
62
|
* (`multiple` false) or an array of non-empty strings (`multiple` true). `[]`
|
|
@@ -70,6 +82,170 @@ function readFormMemberIds(value) {
|
|
|
70
82
|
? value.filter((item) => typeof item === 'string' && item.trim().length > 0)
|
|
71
83
|
: [];
|
|
72
84
|
}
|
|
85
|
+
function readCompiledPatternMatch(pattern, value, testPattern) {
|
|
86
|
+
const compiled = compileTextFieldPattern(pattern);
|
|
87
|
+
return compiled !== null && testPattern(compiled, value);
|
|
88
|
+
}
|
|
89
|
+
/** How many compiled patterns {@link compileTextFieldPattern} keeps. */
|
|
90
|
+
const COMPILED_TEXT_FIELD_PATTERN_CACHE_SIZE = 256;
|
|
91
|
+
const compiledTextFieldPatterns = new Map();
|
|
92
|
+
/**
|
|
93
|
+
* Compiles a text field `pattern` the way the value check applies it: the whole
|
|
94
|
+
* value has to match, under the `u` flag. Returns `null` for a pattern that
|
|
95
|
+
* does not compile, which the schema lint rejects at publish time.
|
|
96
|
+
*
|
|
97
|
+
* The pattern is compiled on its own first: wrapped in `^(?:โฆ)$` straight
|
|
98
|
+
* away, an unbalanced one such as `a)|(?:b` would close the wrapper early and
|
|
99
|
+
* compile as `^(?:a)|(?:b)$`, which no longer anchors the whole value.
|
|
100
|
+
*
|
|
101
|
+
* Compiled once per pattern and reused, since a table checks the same pattern
|
|
102
|
+
* on every row. The flags carry no `g` or `y`, so a shared `RegExp` keeps no
|
|
103
|
+
* `lastIndex` between tests.
|
|
104
|
+
*/
|
|
105
|
+
function compileTextFieldPattern(pattern) {
|
|
106
|
+
const cached = compiledTextFieldPatterns.get(pattern);
|
|
107
|
+
if (cached !== undefined) {
|
|
108
|
+
return cached;
|
|
109
|
+
}
|
|
110
|
+
const compiled = compileAnchoredTextFieldPattern(pattern);
|
|
111
|
+
if (compiledTextFieldPatterns.size >= COMPILED_TEXT_FIELD_PATTERN_CACHE_SIZE) {
|
|
112
|
+
// Designers write the patterns, so the set is open-ended: drop the oldest.
|
|
113
|
+
compiledTextFieldPatterns.delete(compiledTextFieldPatterns.keys().next().value);
|
|
114
|
+
}
|
|
115
|
+
compiledTextFieldPatterns.set(pattern, compiled);
|
|
116
|
+
return compiled;
|
|
117
|
+
}
|
|
118
|
+
function compileAnchoredTextFieldPattern(pattern) {
|
|
119
|
+
try {
|
|
120
|
+
new RegExp(pattern, 'u');
|
|
121
|
+
return new RegExp(`^(?:${pattern})$`, 'u');
|
|
122
|
+
}
|
|
123
|
+
catch (_a) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* How long the text field patterns of one validation pass may spend matching,
|
|
129
|
+
* together. A normal format check spends about a microsecond in the regular
|
|
130
|
+
* expression, so even a full table of them uses a small part of it; a pass
|
|
131
|
+
* that still runs past this is backtracking. The engine enforces it on submit
|
|
132
|
+
* and fill, and the form renderer applies the same budget in a Web Worker
|
|
133
|
+
* (`validateFormRendererValuesInWorker`), so the two agree on what times out.
|
|
134
|
+
*/
|
|
135
|
+
exports.TEXT_FIELD_PATTERN_TIME_BUDGET_MS = 50;
|
|
136
|
+
/** Longest `pattern` the schema lint accepts. */
|
|
137
|
+
exports.TEXT_FIELD_PATTERN_MAX_LENGTH = 500;
|
|
138
|
+
/** Longest `patternErrorMessage` the schema lint accepts. */
|
|
139
|
+
exports.TEXT_FIELD_PATTERN_ERROR_MESSAGE_MAX_LENGTH = 200;
|
|
140
|
+
const REPEATING_QUANTIFIER = /^(?:([*+])|\{(\d+)(,(\d*))?\})\??/;
|
|
141
|
+
const BRACED_ESCAPE = /^\\[pPu]\{[^}]*\}/;
|
|
142
|
+
const FIXED_ESCAPE = /^\\(?:x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|k<[^>]*>)/;
|
|
143
|
+
/**
|
|
144
|
+
* Length of the quantifier at `index` when it lets the preceding atom repeat
|
|
145
|
+
* (`*`, `+`, `{n,}`, `{n,m}` with m > 1, `{n}` with n > 1, each optionally
|
|
146
|
+
* lazy), or 0. `?` and `{1}` do not repeat anything.
|
|
147
|
+
*/
|
|
148
|
+
function readRepeatingQuantifierLength(pattern, index) {
|
|
149
|
+
const match = REPEATING_QUANTIFIER.exec(pattern.slice(index));
|
|
150
|
+
if (!match) {
|
|
151
|
+
return 0;
|
|
152
|
+
}
|
|
153
|
+
const [quantifier, starOrPlus, minimum, range, maximum] = match;
|
|
154
|
+
const repeats = starOrPlus
|
|
155
|
+
? true
|
|
156
|
+
: range === undefined
|
|
157
|
+
? Number(minimum) > 1
|
|
158
|
+
: maximum === '' || Number(maximum) > 1;
|
|
159
|
+
return repeats ? quantifier.length : 0;
|
|
160
|
+
}
|
|
161
|
+
/** Length of the escape at `index`, so `\u{41}` or `\p{L}` is read as one atom. */
|
|
162
|
+
function readEscapeLength(pattern, index) {
|
|
163
|
+
var _a;
|
|
164
|
+
const rest = pattern.slice(index);
|
|
165
|
+
const match = (_a = BRACED_ESCAPE.exec(rest)) !== null && _a !== void 0 ? _a : FIXED_ESCAPE.exec(rest);
|
|
166
|
+
return match ? match[0].length : 2;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Whether a text field `pattern` repeats a group: a `(...)` followed by `*`,
|
|
170
|
+
* `+`, `{n,}`, `{n,m}` with m > 1 or `{n}` with n > 1. The engine runs the
|
|
171
|
+
* pattern on whatever a filler sends, and a repeated group is the only way a
|
|
172
|
+
* pattern's backtracking can grow exponentially with the length of the value:
|
|
173
|
+
* `(a+)*`, `(\w|\d)+`, `(a?a?)+` and `(ab?|b)+` all take seconds on a few
|
|
174
|
+
* dozen characters that almost match. A repeated character, class or escape
|
|
175
|
+
* matches each character one way, so without repeated groups the cost grows
|
|
176
|
+
* at most polynomially with the value. The degree grows with the pattern,
|
|
177
|
+
* though: `\w*\w*\w*!` is slow on a few hundred characters, a dozen `\w*`
|
|
178
|
+
* on a few dozen, and a long run of overlapping alternatives such as
|
|
179
|
+
* `(?:a|a)(?:a|a)โฆ` is slow on any value. The engine bounds all of that with a
|
|
180
|
+
* time budget (see the `testPattern` option of {@link readTextFieldValueIssue})
|
|
181
|
+
* and refuses the value as not checked; the form renderer applies the same
|
|
182
|
+
* budget in a Web Worker (`validateFormRendererValuesInWorker`). This check
|
|
183
|
+
* does not warn the designer about it.
|
|
184
|
+
* Safe repeated groups are refused too, such as `(-[a-z]+)*` or `(ab){2}`;
|
|
185
|
+
* the designer writes the repetition out or drops the group.
|
|
186
|
+
*/
|
|
187
|
+
function hasRepeatedTextFieldPatternGroup(pattern) {
|
|
188
|
+
const scan = (index, inClass) => {
|
|
189
|
+
if (index >= pattern.length) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
const char = pattern[index];
|
|
193
|
+
if (char === '\\') {
|
|
194
|
+
return scan(index + readEscapeLength(pattern, index), inClass);
|
|
195
|
+
}
|
|
196
|
+
if (inClass) {
|
|
197
|
+
return scan(index + 1, char !== ']');
|
|
198
|
+
}
|
|
199
|
+
if (char === '[') {
|
|
200
|
+
return scan(index + 1, true);
|
|
201
|
+
}
|
|
202
|
+
return ((char === ')' && readRepeatingQuantifierLength(pattern, index + 1) > 0) ||
|
|
203
|
+
scan(index + 1, false));
|
|
204
|
+
};
|
|
205
|
+
return scan(0, false);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* The first rule a filled-in text value breaks โ length first, then format โ
|
|
209
|
+
* or `null` when it passes. The one check the form renderer and the engine
|
|
210
|
+
* both run, so a value the filler is allowed to send is one the server takes.
|
|
211
|
+
* An empty value is left to the required check. Any other value that is not a
|
|
212
|
+
* string is a `type` issue when the field sets a length or a format, since
|
|
213
|
+
* none of those rules can be applied to it; a field without rules keeps
|
|
214
|
+
* accepting what it accepted before. A pattern that does not compile fails
|
|
215
|
+
* closed: the lint keeps one from being published, and silently accepting
|
|
216
|
+
* every value would be worse. `testPattern` runs the compiled pattern on the
|
|
217
|
+
* value; the engine passes one with a time limit, since a pattern the lint
|
|
218
|
+
* lets through can still backtrack long enough to stall a server.
|
|
219
|
+
*/
|
|
220
|
+
function readTextFieldValueIssue(field, value, { testPattern = (pattern, text) => pattern.test(text), } = {}) {
|
|
221
|
+
var _a;
|
|
222
|
+
if (value === undefined || value === null || value === '') {
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
if (typeof value !== 'string') {
|
|
226
|
+
return typeof field.minLength === 'number' ||
|
|
227
|
+
typeof field.maxLength === 'number' ||
|
|
228
|
+
Boolean(field.pattern)
|
|
229
|
+
? { kind: 'type' }
|
|
230
|
+
: null;
|
|
231
|
+
}
|
|
232
|
+
const length = Array.from(value).length;
|
|
233
|
+
if (typeof field.minLength === 'number' && length < field.minLength) {
|
|
234
|
+
return { kind: 'minLength', limit: field.minLength };
|
|
235
|
+
}
|
|
236
|
+
if (typeof field.maxLength === 'number' && length > field.maxLength) {
|
|
237
|
+
return { kind: 'maxLength', limit: field.maxLength };
|
|
238
|
+
}
|
|
239
|
+
if (typeof field.pattern === 'string' &&
|
|
240
|
+
field.pattern !== '' &&
|
|
241
|
+
!readCompiledPatternMatch(field.pattern, value, testPattern)) {
|
|
242
|
+
return {
|
|
243
|
+
kind: 'pattern',
|
|
244
|
+
message: ((_a = field.patternErrorMessage) === null || _a === void 0 ? void 0 : _a.trim()) || null,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
73
249
|
function isTableFieldDefinition(field) {
|
|
74
250
|
return field.type === 'table';
|
|
75
251
|
}
|
package/src/lib/form.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.js","sourceRoot":"","sources":["../../../../../libs/shared/src/lib/form.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"form.js","sourceRoot":"","sources":["../../../../../libs/shared/src/lib/form.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FormDefinitionSchema } from './form';
|
|
2
|
-
import { ApproverResolver, DecisionPolicy, ExcludeInitiatorConfig, FieldAccessEntry, ReturnResubmitStrategy, ServiceAction, SlaConfig, WorkflowDefinition, WorkflowEdgeConditionOperator, WorkflowNodeTriggerMode } from './workflow';
|
|
2
|
+
import { ApproverResolver, DecisionPolicy, ExcludeInitiatorConfig, FieldAccessEntry, ReturnBehavior, ReturnResubmitStrategy, ServiceAction, SlaConfig, WorkflowDefinition, WorkflowEdgeConditionOperator, WorkflowNodeTriggerMode } from './workflow';
|
|
3
3
|
import { NodePaletteType, WorkflowEdgeIdFactory } from './workflow-graph';
|
|
4
4
|
/**
|
|
5
5
|
* The serialisable command layer that the template designer โ and the LLM
|
|
@@ -46,6 +46,10 @@ export type WorkflowCommand = {
|
|
|
46
46
|
readonly type: 'setUserTaskApprover';
|
|
47
47
|
readonly nodeId: string;
|
|
48
48
|
readonly approverResolver: ApproverResolver;
|
|
49
|
+
} | {
|
|
50
|
+
readonly type: 'setUserTaskReturnAllowedTargets';
|
|
51
|
+
readonly nodeId: string;
|
|
52
|
+
readonly allowedTargets: ReturnBehavior['allowedTargets'];
|
|
49
53
|
} | {
|
|
50
54
|
readonly type: 'setUserTaskReturnResubmitStrategy';
|
|
51
55
|
readonly nodeId: string;
|
|
@@ -39,6 +39,8 @@ function applyWorkflowCommand(state, command, options = {}) {
|
|
|
39
39
|
return applySetNodeTriggerMode(state, command);
|
|
40
40
|
case 'setUserTaskApprover':
|
|
41
41
|
return applySetUserTaskApprover(state, command);
|
|
42
|
+
case 'setUserTaskReturnAllowedTargets':
|
|
43
|
+
return applySetUserTaskReturnAllowedTargets(state, command);
|
|
42
44
|
case 'setUserTaskReturnResubmitStrategy':
|
|
43
45
|
return applySetUserTaskReturnResubmitStrategy(state, command);
|
|
44
46
|
case 'setUserTaskReturnRequireComment':
|
|
@@ -217,6 +219,10 @@ function applySetUserTaskApprover(state, command) {
|
|
|
217
219
|
: ((_a = node.data.decisionPolicy) !== null && _a !== void 0 ? _a : { type: 'SINGLE' }) }) }) : node;
|
|
218
220
|
}, 'userTask');
|
|
219
221
|
}
|
|
222
|
+
function applySetUserTaskReturnAllowedTargets(state, command) {
|
|
223
|
+
return mapNode(state, command.nodeId, (node) => node.type === 'userTask'
|
|
224
|
+
? Object.assign(Object.assign({}, node), { data: Object.assign(Object.assign({}, node.data), { returnBehavior: Object.assign(Object.assign({}, node.data.returnBehavior), { allowedTargets: command.allowedTargets }) }) }) : node, 'userTask');
|
|
225
|
+
}
|
|
220
226
|
function applySetUserTaskReturnResubmitStrategy(state, command) {
|
|
221
227
|
return mapNode(state, command.nodeId, (node) => node.type === 'userTask'
|
|
222
228
|
? Object.assign(Object.assign({}, node), { data: Object.assign(Object.assign({}, node.data), { returnBehavior: Object.assign(Object.assign({}, node.data.returnBehavior), { resubmitStrategy: command.resubmitStrategy }) }) }) : node, 'userTask');
|