@rytass/bpm-core-nestjs-module 0.17.9 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,56 @@
1
+ ## 0.18.0 (2026-10-28)
2
+
3
+ ### 🚀 Features
4
+
5
+ - **bpm-core-client:** check text field formats in a Web Worker ([a3c3d65](https://github.com/Rytass/BPMCore/commit/a3c3d65))
6
+ - **bpm-core-react:** name text length and format errors on the case pages ([074d4b9](https://github.com/Rytass/BPMCore/commit/074d4b9))
7
+ - ⚠️ **bpm-core:** enforce text length and format on submit and fill ([c8ec5b3](https://github.com/Rytass/BPMCore/commit/c8ec5b3))
8
+ - **bpm-core:** refuse text formats that cannot be checked ([88635de](https://github.com/Rytass/BPMCore/commit/88635de))
9
+ - ⚠️ **bpm-core:** refuse ANY returns outside the applicant and earlier user tasks ([e6d5af0](https://github.com/Rytass/BPMCore/commit/e6d5af0))
10
+
11
+ ### 🩹 Fixes
12
+
13
+ - **bpm-core:** ask the directory only about delegation rules in scope ([022304e](https://github.com/Rytass/BPMCore/commit/022304e))
14
+ - **bpm-core:** hold service-task text writes to the field's rules ([fcde1df](https://github.com/Rytass/BPMCore/commit/fcde1df))
15
+ - **bpm-core-react:** check formats off the main thread on the case pages ([58a1a9d](https://github.com/Rytass/BPMCore/commit/58a1a9d))
16
+ - **bpm-core:** keep the directory's error out of the delegation refusal ([14ccd0e](https://github.com/Rytass/BPMCore/commit/14ccd0e))
17
+ - **bpm-core:** refuse to dispatch when the delegation directory lookup fails ([8ef8a88](https://github.com/Rytass/BPMCore/commit/8ef8a88))
18
+ - **bpm-core:** stop waiting for a delegation directory lookup after 5 seconds ([c1473c6](https://github.com/Rytass/BPMCore/commit/c1473c6))
19
+ - **shared:** refuse a text pattern whose parentheses close the anchoring early ([330ef06](https://github.com/Rytass/BPMCore/commit/330ef06))
20
+ - **bpm-core:** check the type of a text field whose visibleWhen is false ([b256040](https://github.com/Rytass/BPMCore/commit/b256040))
21
+ - **bpm-core:** keep the task with the principal when the directory lookup fails ([aacccbe](https://github.com/Rytass/BPMCore/commit/aacccbe))
22
+ - **bpm-core:** refuse a table over its row limit before checking its rows ([d22afa7](https://github.com/Rytass/BPMCore/commit/d22afa7))
23
+ - **bpm-core:** charge only matching time to the pattern budget ([eddfb07](https://github.com/Rytass/BPMCore/commit/eddfb07))
24
+ - **bpm-core:** share one pattern time budget per validation pass ([8f81919](https://github.com/Rytass/BPMCore/commit/8f81919))
25
+ - **shared:** refuse every repeated group in a text field pattern ([d0daa77](https://github.com/Rytass/BPMCore/commit/d0daa77))
26
+ - **bpm-core:** run text field patterns under a time limit ([327d0a6](https://github.com/Rytass/BPMCore/commit/327d0a6))
27
+ - **bpm-core:** check the type of a hidden text field with rules ([1282eea](https://github.com/Rytass/BPMCore/commit/1282eea))
28
+ - **bpm-core:** refuse a format on a table column that is not text ([8308db8](https://github.com/Rytass/BPMCore/commit/8308db8))
29
+ - **shared:** refuse repeated alternations whose branches can start alike ([5e6e12e](https://github.com/Rytass/BPMCore/commit/5e6e12e))
30
+ - **bpm-core:** refuse nested text formats and formats on non-text fields ([471222c](https://github.com/Rytass/BPMCore/commit/471222c))
31
+ - **bpm-core:** refuse non-text values and leave approver-filled text to its fill step ([bad4656](https://github.com/Rytass/BPMCore/commit/bad4656))
32
+ - **shared:** keep a later stage that loops back out of the return targets ([86c2fd0](https://github.com/Rytass/BPMCore/commit/86c2fd0))
33
+ - **bpm-core:** skip delegation rules whose agent has been deactivated ([3434b25](https://github.com/Rytass/BPMCore/commit/3434b25))
34
+
35
+ ### 🔥 Performance
36
+
37
+ - **bpm-core:** create the pattern test's vm context on its first run ([cbc8633](https://github.com/Rytass/BPMCore/commit/cbc8633))
38
+ - **bpm-core:** ask the host directory once per node when resolving delegation ([cb62b00](https://github.com/Rytass/BPMCore/commit/cb62b00))
39
+
40
+ ### ⚠️ Breaking Changes
41
+
42
+ - **bpm-core:** enforce text length and format on submit and fill ([c8ec5b3](https://github.com/Rytass/BPMCore/commit/c8ec5b3))
43
+ a text value outside minLength / maxLength, or one that does
44
+ not match pattern, is refused with 400.
45
+ - **bpm-core:** refuse ANY returns outside the applicant and earlier user tasks ([e6d5af0](https://github.com/Rytass/BPMCore/commit/e6d5af0))
46
+ decideTask RETURN with allowedTargets ANY refuses a target
47
+ that is not the start event or a user task upstream of the returning node.
48
+
49
+ ### ❤️ Thank You
50
+
51
+ - Chia Yu Pai @fantasywind
52
+ - Kai-Chieh Yang
53
+
1
54
  ## 0.17.9 (2026-10-27)
2
55
 
3
56
  ### 🚀 Features
package/README.md CHANGED
@@ -701,8 +701,9 @@ export interface BPMMemberResolver {
701
701
  resolveMany(memberIds: readonly string[]): Promise<ReadonlyMap<string, MemberMetadata>>;
702
702
  search?(searchText: string): Promise<readonly MemberMetadata[]>;
703
703
  // Of memberIds, the members the host has deactivated. Backs
704
- // inactiveMembersWithOpenTasks; on a member-base directory, implement
705
- // resolveInactiveMembers instead.
704
+ // inactiveMembersWithOpenTasks and lets delegation skip a deactivated
705
+ // agent; on a member-base directory, implement resolveInactiveMembers
706
+ // instead. Once implemented, dispatch depends on it: see Delegation Rules.
706
707
  resolveInactive?(memberIds: readonly string[]): Promise<readonly MemberMetadata[]>;
707
708
  }
708
709
  ```
@@ -1689,6 +1690,32 @@ A rule's condition may read only these roots: `env`, `form`, `formData`,
1689
1690
  Saving a rule with any other root is refused. Rules saved before that check was
1690
1691
  added are not changed. They still fail when evaluated.
1691
1692
 
1693
+ > Unreleased (PR #127): deactivated agents.
1694
+
1695
+ A rule whose agent the host reports as deactivated is skipped: the next rule of
1696
+ the principal applies, and when none is left the principal keeps the task. In a
1697
+ chain A → B → C where C is deactivated, the task stops at B. BPM asks the
1698
+ optional `resolveInactive` on the member resolver (`resolveInactiveMembers` on a
1699
+ member-base directory) about the agents of the rules whose scope applies to the
1700
+ case — once per node for the first hop of every candidate's chain, and once per
1701
+ further hop that has such a rule. A rule out of scope is never looked up, so a
1702
+ principal none of whose rules apply is never held up by the directory. Every
1703
+ scope is evaluated first; a scope condition that fails to evaluate fails the
1704
+ dispatch only when its rule is the one that would apply. Tasks already assigned
1705
+ to a deactivated agent are not taken back. Without `resolveInactive`, or without
1706
+ the identity module, delegation behaves as before.
1707
+
1708
+ Once a host implements it, dispatch depends on it. When `resolveInactive`
1709
+ throws, or has not answered within 5 seconds, the launch, advance or
1710
+ next-candidate step that needed it fails with a `ServiceUnavailableException`
1711
+ (503) naming the member directory lookup, and its transaction rolls back. The
1712
+ agent ids and the host's own error go to the server log only, never to the
1713
+ caller, since a host error can carry internal details such as the directory's
1714
+ address. A task is never handed to an agent who could not be
1715
+ confirmed active, nor silently left with the principal. Keep the lookup
1716
+ available: during a directory outage, no case can be dispatched to a node where
1717
+ someone has a delegation rule that applies to it.
1718
+
1692
1719
  ## GraphQL Surface
1693
1720
 
1694
1721
  Importing `BPMRootModule` registers GraphQL resolvers for:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rytass/bpm-core-nestjs-module",
3
- "version": "0.17.9",
3
+ "version": "0.18.0",
4
4
  "description": "Embeddable NestJS BPM approval workflow module: workflow engine, approval templates, forms, organization/member contracts, attachments, signatures, notifications, delegation, and TypeORM migrations.",
5
5
  "keywords": [
6
6
  "bpm",
@@ -162,7 +162,7 @@
162
162
  "@nestjs/core": ">=10.0.0",
163
163
  "@nestjs/graphql": ">=12.0.0",
164
164
  "@nestjs/typeorm": ">=10.0.0",
165
- "@rytass/bpm-core-shared": "^0.17.9",
165
+ "@rytass/bpm-core-shared": "^0.18.0",
166
166
  "@rytass/secret-adapter-vault-nestjs": ">=0.4.5",
167
167
  "express": ">=4.0.0",
168
168
  "graphql": ">=16.0.0",
@@ -1,3 +1,4 @@
1
+ import { ModuleRef } from '@nestjs/core';
1
2
  import { Repository } from 'typeorm';
2
3
  import { ConditionService } from '../condition/condition.service';
3
4
  import { CreateDelegationRuleInput, UpdateDelegationRuleInput } from './dto/delegation-rule.input';
@@ -40,7 +41,9 @@ interface ListDelegationRulesOptions {
40
41
  export declare class DelegationService {
41
42
  private readonly delegationRuleRepository;
42
43
  private readonly conditionService;
43
- constructor(delegationRuleRepository: Repository<DelegationRuleEntity>, conditionService: ConditionService);
44
+ private readonly moduleRef?;
45
+ private readonly logger;
46
+ constructor(delegationRuleRepository: Repository<DelegationRuleEntity>, conditionService: ConditionService, moduleRef?: ModuleRef | undefined);
44
47
  listDelegationRules(options?: ListDelegationRulesOptions): Promise<readonly DelegationRuleEntity[]>;
45
48
  countDelegationRules(options?: Pick<ListDelegationRulesOptions, 'agentMemberId' | 'includeInactive' | 'principalMemberId' | 'scopeType' | 'status'>): Promise<number>;
46
49
  createDelegationRule(input: CreateDelegationRuleInput): Promise<DelegationRuleEntity>;
@@ -51,7 +54,44 @@ export declare class DelegationService {
51
54
  readonly revokedByMemberId?: string | null;
52
55
  }): Promise<DelegationRuleEntity>;
53
56
  resolveAssignee(originalAssigneeMemberId: string, context: DelegationResolutionContext, at?: Date): Promise<DelegationResolution>;
57
+ /**
58
+ * {@link resolveAssignee} for every member of `originalAssigneeMemberIds`,
59
+ * in the same order. The first hop of every chain shares one
60
+ * `resolveInactive` call, so a node with many candidates asks the host
61
+ * directory once rather than once per candidate; only a hop beyond the
62
+ * first asks again.
63
+ */
64
+ resolveAssignees(originalAssigneeMemberIds: readonly string[], context: DelegationResolutionContext, at?: Date): Promise<readonly DelegationResolution[]>;
54
65
  private walkDelegationChain;
66
+ /**
67
+ * The principal's rules in force at `at` that can apply in `context`, the
68
+ * applicable one first. Every scope is evaluated up front so the directory is
69
+ * asked only about agents that matter: a principal whose rules are all out
70
+ * of scope never waits on, or is refused by, the host directory.
71
+ */
72
+ private readScopedRules;
73
+ /** The principal's rules in force at `at`, the applicable one first. */
74
+ private readCurrentRules;
75
+ /**
76
+ * Agents of `rules` the host reports as deactivated. Empty when there is no
77
+ * rule to check, or no identity module (or no `resolveInactive` on the host
78
+ * resolver): delegation then behaves as it did before this check existed.
79
+ *
80
+ * When the host directory fails to answer, or has not answered within
81
+ * {@link DIRECTORY_LOOKUP_TIMEOUT_MS}, the dispatch is refused with a
82
+ * `ServiceUnavailableException` that names the directory lookup (the agent
83
+ * ids and the host's error go to the server log only): a task is
84
+ * never handed to an agent who could not be confirmed active, nor quietly
85
+ * left with a principal whose rule says it should move. The launch or
86
+ * advance that needed it rolls back and can be retried.
87
+ */
88
+ private readInactiveAgentIds;
89
+ /**
90
+ * Looked up at call time rather than injected: `IdentityModule` is a dynamic
91
+ * module the root configures with the host's options, so this module cannot
92
+ * import it (same as `WorkflowEngineQueries.readIdentityService`).
93
+ */
94
+ private readIdentityService;
55
95
  private matchesRuleScope;
56
96
  private assertNoActiveCycle;
57
97
  private readRuleOrThrow;
@@ -1,17 +1,39 @@
1
1
  "use strict";
2
+ var DelegationService_1;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.DelegationService = void 0;
4
5
  const tslib_1 = require("tslib");
5
6
  const common_1 = require("@nestjs/common");
7
+ const core_1 = require("@nestjs/core");
8
+ const unknown_element_exception_js_1 = require("@nestjs/core/errors/exceptions/unknown-element.exception.js");
6
9
  const typeorm_1 = require("@nestjs/typeorm");
7
10
  const typeorm_2 = require("typeorm");
8
11
  const condition_service_1 = require("../condition/condition.service");
12
+ const identity_service_1 = require("../identity/identity.service");
9
13
  const delegation_rule_entity_1 = require("./delegation-rule.entity");
10
14
  const delegation_enums_1 = require("./delegation.enums");
11
- let DelegationService = class DelegationService {
12
- constructor(delegationRuleRepository, conditionService) {
15
+ /**
16
+ * How long a delegation waits for the host's `resolveInactive`. Resolution runs
17
+ * inside a launch or advance transaction, so a directory that hangs must not
18
+ * hold its connection and locks: past this it counts as a failed lookup.
19
+ */
20
+ const DIRECTORY_LOOKUP_TIMEOUT_MS = 5_000;
21
+ /** `pending`, or a rejection once `timeoutMs` has passed without an answer. */
22
+ function readWithinTime(pending, timeoutMs) {
23
+ let timeoutId;
24
+ return Promise.race([
25
+ pending,
26
+ new Promise((_resolve, reject) => {
27
+ timeoutId = setTimeout(() => reject(new Error(`no answer within ${timeoutMs} ms`)), timeoutMs);
28
+ }),
29
+ ]).finally(() => clearTimeout(timeoutId));
30
+ }
31
+ let DelegationService = DelegationService_1 = class DelegationService {
32
+ constructor(delegationRuleRepository, conditionService, moduleRef) {
13
33
  this.delegationRuleRepository = delegationRuleRepository;
14
34
  this.conditionService = conditionService;
35
+ this.moduleRef = moduleRef;
36
+ this.logger = new common_1.Logger(DelegationService_1.name);
15
37
  }
16
38
  async listDelegationRules(options = {}) {
17
39
  const isPaginated = typeof options.page === 'number' || typeof options.pageSize === 'number';
@@ -77,26 +99,35 @@ let DelegationService = class DelegationService {
77
99
  }));
78
100
  }
79
101
  async resolveAssignee(originalAssigneeMemberId, context, at = new Date()) {
80
- return this.walkDelegationChain(originalAssigneeMemberId, context, at, new Set([originalAssigneeMemberId]), []);
102
+ const [resolution] = await this.resolveAssignees([originalAssigneeMemberId], context, at);
103
+ return resolution;
81
104
  }
82
- async walkDelegationChain(principalMemberId, context, at, visitedMemberIds, chain) {
83
- const applicableRule = (await this.delegationRuleRepository.find({
84
- // Higher priority wins, as with manager rules; among equal priorities
85
- // the rule created first wins. TypeORM sorts by key order, so
86
- // `priority` has to be the first key — it used to come second and
87
- // only broke ties between rules created in the same instant.
88
- order: {
89
- priority: 'DESC',
90
- createdAt: 'ASC',
91
- },
92
- where: {
93
- principalMemberId,
94
- startAt: (0, typeorm_2.LessThanOrEqual)(at),
95
- status: delegation_enums_1.DelegationRuleStatusEnum.ACTIVE,
96
- },
97
- }))
98
- .filter((rule) => !rule.endAt || rule.endAt.getTime() > at.getTime())
99
- .find((rule) => this.matchesRuleScope(rule, context));
105
+ /**
106
+ * {@link resolveAssignee} for every member of `originalAssigneeMemberIds`,
107
+ * in the same order. The first hop of every chain shares one
108
+ * `resolveInactive` call, so a node with many candidates asks the host
109
+ * directory once rather than once per candidate; only a hop beyond the
110
+ * first asks again.
111
+ */
112
+ async resolveAssignees(originalAssigneeMemberIds, context, at = new Date()) {
113
+ const rulesByPrincipal = await Promise.all(originalAssigneeMemberIds.map((memberId) => this.readScopedRules(memberId, context, at)));
114
+ const inactiveAgentIds = await this.readInactiveAgentIds(rulesByPrincipal.flat().map(({ rule }) => rule));
115
+ return Promise.all(originalAssigneeMemberIds.map((memberId, index) => this.walkDelegationChain(memberId, context, at, new Set([memberId]), [], { inactiveAgentIds, rules: rulesByPrincipal[index] })));
116
+ }
117
+ async walkDelegationChain(principalMemberId, context, at, visitedMemberIds, chain, preloadedHop) {
118
+ const currentRules = preloadedHop?.rules ??
119
+ (await this.readScopedRules(principalMemberId, context, at));
120
+ const inactiveAgentIds = preloadedHop?.inactiveAgentIds ??
121
+ (await this.readInactiveAgentIds(currentRules.map(({ rule }) => rule)));
122
+ // A rule whose agent the host has deactivated no longer applies: handing
123
+ // the task to them would leave it with someone who can no longer sign in.
124
+ const applicable = currentRules.find(({ rule }) => !inactiveAgentIds.has(rule.agentMemberId));
125
+ // A scope condition that failed to evaluate fails the walk only when its
126
+ // rule is the one that would apply, as when scopes were evaluated in turn.
127
+ if (applicable?.scopeError) {
128
+ throw applicable.scopeError.error;
129
+ }
130
+ const applicableRule = applicable?.rule;
100
131
  if (!applicableRule) {
101
132
  return {
102
133
  delegationChain: chain,
@@ -117,6 +148,97 @@ let DelegationService = class DelegationService {
117
148
  ];
118
149
  return this.walkDelegationChain(applicableRule.agentMemberId, context, at, new Set(visitedMemberIds).add(applicableRule.agentMemberId), nextChain);
119
150
  }
151
+ /**
152
+ * The principal's rules in force at `at` that can apply in `context`, the
153
+ * applicable one first. Every scope is evaluated up front so the directory is
154
+ * asked only about agents that matter: a principal whose rules are all out
155
+ * of scope never waits on, or is refused by, the host directory.
156
+ */
157
+ async readScopedRules(principalMemberId, context, at) {
158
+ const rules = await this.readCurrentRules(principalMemberId, at);
159
+ return rules.flatMap((rule) => {
160
+ try {
161
+ return this.matchesRuleScope(rule, context)
162
+ ? [{ rule, scopeError: null }]
163
+ : [];
164
+ }
165
+ catch (error) {
166
+ return [{ rule, scopeError: { error } }];
167
+ }
168
+ });
169
+ }
170
+ /** The principal's rules in force at `at`, the applicable one first. */
171
+ async readCurrentRules(principalMemberId, at) {
172
+ return (await this.delegationRuleRepository.find({
173
+ // Higher priority wins, as with manager rules; among equal priorities
174
+ // the rule created first wins. TypeORM sorts by key order, so
175
+ // `priority` has to be the first key — it used to come second and
176
+ // only broke ties between rules created in the same instant.
177
+ order: {
178
+ priority: 'DESC',
179
+ createdAt: 'ASC',
180
+ },
181
+ where: {
182
+ principalMemberId,
183
+ startAt: (0, typeorm_2.LessThanOrEqual)(at),
184
+ status: delegation_enums_1.DelegationRuleStatusEnum.ACTIVE,
185
+ },
186
+ })).filter((rule) => !rule.endAt || rule.endAt.getTime() > at.getTime());
187
+ }
188
+ /**
189
+ * Agents of `rules` the host reports as deactivated. Empty when there is no
190
+ * rule to check, or no identity module (or no `resolveInactive` on the host
191
+ * resolver): delegation then behaves as it did before this check existed.
192
+ *
193
+ * When the host directory fails to answer, or has not answered within
194
+ * {@link DIRECTORY_LOOKUP_TIMEOUT_MS}, the dispatch is refused with a
195
+ * `ServiceUnavailableException` that names the directory lookup (the agent
196
+ * ids and the host's error go to the server log only): a task is
197
+ * never handed to an agent who could not be confirmed active, nor quietly
198
+ * left with a principal whose rule says it should move. The launch or
199
+ * advance that needed it rolls back and can be retried.
200
+ */
201
+ async readInactiveAgentIds(rules) {
202
+ const identityService = rules.length ? this.readIdentityService() : null;
203
+ if (!identityService) {
204
+ return new Set();
205
+ }
206
+ const agentMemberIds = [
207
+ ...new Set(rules.map((rule) => rule.agentMemberId)),
208
+ ];
209
+ return readWithinTime(identityService.resolveInactiveMembers(agentMemberIds), DIRECTORY_LOOKUP_TIMEOUT_MS).then((inactiveMembers) => new Set(inactiveMembers.map((member) => member.memberId)), (error) => {
210
+ // The host's error and the agent ids stay in the server log: the
211
+ // caller is whoever submitted or approved, and the host's message can
212
+ // carry internal details such as the directory's address.
213
+ this.logger.error(`Member directory lookup (resolveInactive) failed for delegation ` +
214
+ `agents ${agentMemberIds.join(', ')}; nothing was dispatched: ` +
215
+ `${error instanceof Error ? error.message : String(error)}`);
216
+ throw new common_1.ServiceUnavailableException('The member directory lookup (resolveInactive) failed, so it is ' +
217
+ 'not known whether the delegation agents are still active; ' +
218
+ 'nothing was dispatched. Retry once the directory is reachable.', { cause: error });
219
+ });
220
+ }
221
+ /**
222
+ * Looked up at call time rather than injected: `IdentityModule` is a dynamic
223
+ * module the root configures with the host's options, so this module cannot
224
+ * import it (same as `WorkflowEngineQueries.readIdentityService`).
225
+ */
226
+ readIdentityService() {
227
+ if (!this.moduleRef) {
228
+ return null;
229
+ }
230
+ try {
231
+ return this.moduleRef.get(identity_service_1.IdentityService, { strict: false });
232
+ }
233
+ catch (error) {
234
+ // Only "not registered" means no identity module; anything else is a
235
+ // real failure and must not pass for "no deactivated agent".
236
+ if (error instanceof unknown_element_exception_js_1.UnknownElementException) {
237
+ return null;
238
+ }
239
+ throw error;
240
+ }
241
+ }
120
242
  matchesRuleScope(rule, context) {
121
243
  if (rule.scopeType === delegation_enums_1.DelegationScopeTypeEnum.ALL) {
122
244
  return true;
@@ -206,11 +328,13 @@ let DelegationService = class DelegationService {
206
328
  }
207
329
  };
208
330
  exports.DelegationService = DelegationService;
209
- exports.DelegationService = DelegationService = tslib_1.__decorate([
331
+ exports.DelegationService = DelegationService = DelegationService_1 = tslib_1.__decorate([
210
332
  (0, common_1.Injectable)(),
211
333
  tslib_1.__param(0, (0, typeorm_1.InjectRepository)(delegation_rule_entity_1.DelegationRuleEntity)),
334
+ tslib_1.__param(2, (0, common_1.Optional)()),
212
335
  tslib_1.__metadata("design:paramtypes", [typeorm_2.Repository,
213
- condition_service_1.ConditionService])
336
+ condition_service_1.ConditionService,
337
+ core_1.ModuleRef])
214
338
  ], DelegationService);
215
339
  // The only roots a delegation condition can read. Saving a rule checks its CEL
216
340
  // against this list, and the context below is typed by it, so the two cannot
@@ -1 +1 @@
1
- {"version":3,"file":"delegation.service.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/delegation/delegation.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delegation.service.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/delegation/delegation.service.ts"],"names":[],"mappings":"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"}
@@ -172,12 +172,24 @@ function lintFieldDefinition(field, index, scope) {
172
172
  ...lintFieldTypeSpecifics(field, type, path, scope),
173
173
  ];
174
174
  }
175
- /** `displayAs` is a text-field option; every other type must not carry it. */
175
+ /**
176
+ * `displayAs`, `pattern` and `patternErrorMessage` are text-field options;
177
+ * every other type must not carry them, or a format the designer set would be
178
+ * silently ignored.
179
+ */
176
180
  function lintDisplayAsTarget(field, type, path) {
177
- return Object.prototype.hasOwnProperty.call(field, 'displayAs') &&
178
- !TEXT_FIELD_TYPES.has(type)
179
- ? [`${path}.displayAs 只能用在文字欄位`]
180
- : [];
181
+ return lintTextOnlyKeys(field, type, path, [
182
+ 'displayAs',
183
+ 'pattern',
184
+ 'patternErrorMessage',
185
+ ]);
186
+ }
187
+ function lintTextOnlyKeys(field, type, path, keys) {
188
+ return TEXT_FIELD_TYPES.has(type)
189
+ ? []
190
+ : keys
191
+ .filter((key) => Object.prototype.hasOwnProperty.call(field, key))
192
+ .map((key) => `${path}.${key} 只能用在文字欄位`);
181
193
  }
182
194
  function lintFieldTypeSpecifics(field, type, path, scope) {
183
195
  if (TEXT_FIELD_TYPES.has(type)) {
@@ -270,9 +282,53 @@ function lintTextField(field, path) {
270
282
  ...maxLengthErrors,
271
283
  ...lengthRangeErrors,
272
284
  ...displayAsErrors,
285
+ ...lintTextFieldPattern(field, path),
273
286
  ...lintOptionalDefaultValue(field.defaultValue, path, (value) => typeof value === 'string' || value === null),
274
287
  ];
275
288
  }
289
+ /**
290
+ * The pattern is compiled on every submit, server side included, so it has to
291
+ * compile now — a broken one would fail every value — and stay short enough to
292
+ * read. The engine runs it on whatever a filler sends, so a pattern that
293
+ * repeats a group is refused too: that is the shape whose backtracking can
294
+ * grow exponentially with the value and stall the server (see
295
+ * `hasRepeatedTextFieldPatternGroup`). What is left grows at most
296
+ * polynomially with the value, with a degree that grows with the pattern, and
297
+ * the engine bounds it with one time budget shared by every pattern of a
298
+ * submit, resubmit or fill.
299
+ */
300
+ function lintTextFieldPattern(field, path) {
301
+ const hasPattern = Object.prototype.hasOwnProperty.call(field, 'pattern');
302
+ const hasMessage = Object.prototype.hasOwnProperty.call(field, 'patternErrorMessage');
303
+ const patternErrors = !hasPattern
304
+ ? []
305
+ : typeof field.pattern !== 'string' || field.pattern.trim() === ''
306
+ ? [`${path}.pattern must be a non-empty string`]
307
+ : field.pattern.length > form_1.TEXT_FIELD_PATTERN_MAX_LENGTH
308
+ ? [
309
+ `${path}.pattern must be at most ${form_1.TEXT_FIELD_PATTERN_MAX_LENGTH} characters`,
310
+ ]
311
+ : (0, form_1.compileTextFieldPattern)(field.pattern) === null
312
+ ? [`${path}.pattern is not a valid regular expression`]
313
+ : (0, form_1.hasRepeatedTextFieldPatternGroup)(field.pattern)
314
+ ? [
315
+ `${path}.pattern must not repeat a group, which can stall the server`,
316
+ ]
317
+ : [];
318
+ const messageErrors = !hasMessage
319
+ ? []
320
+ : !hasPattern
321
+ ? [`${path}.patternErrorMessage requires ${path}.pattern`]
322
+ : typeof field.patternErrorMessage !== 'string'
323
+ ? [`${path}.patternErrorMessage must be a string`]
324
+ : field.patternErrorMessage.length >
325
+ form_1.TEXT_FIELD_PATTERN_ERROR_MESSAGE_MAX_LENGTH
326
+ ? [
327
+ `${path}.patternErrorMessage must be at most ${form_1.TEXT_FIELD_PATTERN_ERROR_MESSAGE_MAX_LENGTH} characters`,
328
+ ]
329
+ : [];
330
+ return [...patternErrors, ...messageErrors];
331
+ }
276
332
  function lintNumberField(field, path) {
277
333
  const minimumErrors = lintOptionalNumber(field.minimum, `${path}.minimum`);
278
334
  const maximumErrors = lintOptionalNumber(field.maximum, `${path}.maximum`);
@@ -527,7 +583,11 @@ function lintTableColumn(column, path, scope) {
527
583
  if (!isSupportedFieldType(type) || !(0, form_1.isTableColumnFieldType)(type)) {
528
584
  return basicErrors;
529
585
  }
530
- return [...basicErrors, ...lintFieldTypeSpecifics(column, type, path, scope)];
586
+ return [
587
+ ...basicErrors,
588
+ ...lintTextOnlyKeys(column, type, path, ['pattern', 'patternErrorMessage']),
589
+ ...lintFieldTypeSpecifics(column, type, path, scope),
590
+ ];
531
591
  }
532
592
  function lintTableColumnType(type, path) {
533
593
  if (type === 'table') {