@rytass/bpm-core-nestjs-module 0.13.5 → 0.15.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 +118 -0
- package/README.md +10 -0
- package/package.json +2 -2
- package/src/lib/attachment/attachment.service.js +6 -1
- package/src/lib/attachment/attachment.service.js.map +1 -1
- package/src/lib/bpm/bpm-root-options.d.ts +2 -1
- package/src/lib/bpm/bpm-root-options.js +7 -1
- package/src/lib/bpm/bpm-root-options.js.map +1 -1
- package/src/lib/form/form-member-value.validator.d.ts +16 -0
- package/src/lib/form/form-member-value.validator.js +37 -0
- package/src/lib/form/form-member-value.validator.js.map +1 -0
- package/src/lib/form/form-schema.validator.js +90 -1
- package/src/lib/form/form-schema.validator.js.map +1 -1
- package/src/lib/migrations/0000000025000-task-candidate-sequence.d.ts +21 -0
- package/src/lib/migrations/0000000025000-task-candidate-sequence.js +50 -0
- package/src/lib/migrations/0000000025000-task-candidate-sequence.js.map +1 -0
- package/src/lib/migrations/0000000026000-approval-instance-business-key.d.ts +20 -0
- package/src/lib/migrations/0000000026000-approval-instance-business-key.js +44 -0
- package/src/lib/migrations/0000000026000-approval-instance-business-key.js.map +1 -0
- package/src/lib/migrations/0000000027000-approval-instance-submitted-by.d.ts +19 -0
- package/src/lib/migrations/0000000027000-approval-instance-submitted-by.js +42 -0
- package/src/lib/migrations/0000000027000-approval-instance-submitted-by.js.map +1 -0
- package/src/lib/migrations/index.d.ts +3 -0
- package/src/lib/migrations/index.js +9 -0
- package/src/lib/migrations/index.js.map +1 -1
- package/src/lib/notification/notification-template.js +1 -1
- package/src/lib/notification/notification-template.js.map +1 -1
- package/src/lib/notification/notification.service.d.ts +16 -0
- package/src/lib/notification/notification.service.js +56 -2
- package/src/lib/notification/notification.service.js.map +1 -1
- package/src/lib/organization/index.d.ts +1 -0
- package/src/lib/organization/index.js +1 -0
- package/src/lib/organization/index.js.map +1 -1
- package/src/lib/organization/organization-time-zone.d.ts +46 -0
- package/src/lib/organization/organization-time-zone.js +47 -0
- package/src/lib/organization/organization-time-zone.js.map +1 -0
- package/src/lib/organization/organization.service.d.ts +3 -1
- package/src/lib/organization/organization.service.js +8 -11
- package/src/lib/organization/organization.service.js.map +1 -1
- package/src/lib/template/template.service.js +64 -0
- package/src/lib/template/template.service.js.map +1 -1
- package/src/lib/template/workflow-definition.validator.js +26 -1
- package/src/lib/template/workflow-definition.validator.js.map +1 -1
- package/src/lib/workflow-engine/approval-instance.entity.d.ts +13 -0
- package/src/lib/workflow-engine/approval-instance.entity.js +20 -0
- package/src/lib/workflow-engine/approval-instance.entity.js.map +1 -1
- package/src/lib/workflow-engine/instance-submitter.d.ts +2 -0
- package/src/lib/workflow-engine/instance-submitter.js +14 -0
- package/src/lib/workflow-engine/instance-submitter.js.map +1 -0
- package/src/lib/workflow-engine/task-candidate.entity.d.ts +2 -0
- package/src/lib/workflow-engine/task-candidate.entity.js +5 -0
- package/src/lib/workflow-engine/task-candidate.entity.js.map +1 -1
- package/src/lib/workflow-engine/task.entity.d.ts +20 -0
- package/src/lib/workflow-engine/task.entity.js +28 -0
- package/src/lib/workflow-engine/task.entity.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.enums.d.ts +5 -1
- package/src/lib/workflow-engine/workflow-engine.enums.js +4 -0
- package/src/lib/workflow-engine/workflow-engine.enums.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.mutations.js +5 -0
- package/src/lib/workflow-engine/workflow-engine.mutations.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.service.d.ts +130 -4
- package/src/lib/workflow-engine/workflow-engine.service.js +1284 -179
- package/src/lib/workflow-engine/workflow-engine.service.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,121 @@
|
|
|
1
|
+
## 0.15.0 (2026-10-13)
|
|
2
|
+
|
|
3
|
+
### ⚠️ Breaking Changes
|
|
4
|
+
|
|
5
|
+
- **workflow-engine / organization:** the engine now reads "today" in the organization time zone (`organizationTimeZone`, default `Asia/Taipei`) instead of UTC. For a membership or manager rule whose `effectiveFrom` / `effectiveTo` is today, approver resolution applies or retires it from local midnight — up to eight hours earlier than before in UTC+8. A host whose organization dates are kept in UTC sets `organizationTimeZone: 'UTC'` before upgrading. Running instances keep their tasks. ([d6e43f3](https://github.com/Rytass/BPMCore/commit/d6e43f3); this note was missing from the generated changelog because the footer sits on a `docs:` commit)
|
|
6
|
+
- **template:** publishing now refuses a `DYNAMIC_FORM` resolver whose member field can be left empty — the field must be `required`, not `hidden`, and have no `visibleWhen`. Drafts still save; versions already published are not re-validated. ([b3a3950](https://github.com/Rytass/BPMCore/commit/b3a3950))
|
|
7
|
+
|
|
8
|
+
### 🗄️ Upgrade
|
|
9
|
+
|
|
10
|
+
- New migrations add nullable columns and indexes only; no data is dropped. Hosts run with `migrationsRun: false`, so **run the migrations before deploying 0.15.0**.
|
|
11
|
+
|
|
12
|
+
### 🚀 Features
|
|
13
|
+
|
|
14
|
+
- **organization:** read effective dates in a configurable organizationTimeZone ([905982c](https://github.com/Rytass/BPMCore/commit/905982c))
|
|
15
|
+
- **forms:** add store-only hidden fields and link display for text fields ([ae38a92](https://github.com/Rytass/BPMCore/commit/ae38a92))
|
|
16
|
+
- **workflow-engine:** expose the node name on tasks as nodeLabel ([25b0705](https://github.com/Rytass/BPMCore/commit/25b0705))
|
|
17
|
+
- **workflow-engine:** tell the applicant who submitted the document on their behalf ([3a20985](https://github.com/Rytass/BPMCore/commit/3a20985))
|
|
18
|
+
- **workflow-engine:** let the member who submitted for the applicant read the instance ([7416df8](https://github.com/Rytass/BPMCore/commit/7416df8))
|
|
19
|
+
- **workflow-engine:** keep the member who submitted on someone's behalf out of excluding nodes ([0e02334](https://github.com/Rytass/BPMCore/commit/0e02334))
|
|
20
|
+
- **workflow-engine:** add a nullable submitted-by column to approval instances ([06e7c97](https://github.com/Rytass/BPMCore/commit/06e7c97))
|
|
21
|
+
- **workflow-engine:** require delegates and transfer targets on manager chains to match the grade they replace ([2cc0432](https://github.com/Rytass/BPMCore/commit/2cc0432))
|
|
22
|
+
- **workflow-engine:** let hosts submit and look up instances by business key ([daa7d9d](https://github.com/Rytass/BPMCore/commit/daa7d9d))
|
|
23
|
+
- **workflow-engine:** add business_key column with per-template unique index ([cb1b9bf](https://github.com/Rytass/BPMCore/commit/cb1b9bf))
|
|
24
|
+
- **designer:** pick approvers from a member field and show readable dry-run assignees ([bc9592e](https://github.com/Rytass/BPMCore/commit/bc9592e))
|
|
25
|
+
- **forms:** add a member field type ([0fca8d4](https://github.com/Rytass/BPMCore/commit/0fca8d4))
|
|
26
|
+
|
|
27
|
+
### 🩹 Fixes
|
|
28
|
+
|
|
29
|
+
- **template-designer:** name a member-field dry-run assignee by its field label ([465fcc3](https://github.com/Rytass/BPMCore/commit/465fcc3))
|
|
30
|
+
- **workflow-engine:** read task node labels from the entity's own table path ([16d6e8e](https://github.com/Rytass/BPMCore/commit/16d6e8e))
|
|
31
|
+
- **template-designer:** sample a dry-run member field with a placeholder, not the initiator ([b567e41](https://github.com/Rytass/BPMCore/commit/b567e41))
|
|
32
|
+
- **template:** refuse a DYNAMIC_FORM resolver on a member field that can be left empty ([b3a3950](https://github.com/Rytass/BPMCore/commit/b3a3950))
|
|
33
|
+
- **workflow-engine:** end a dry-run skip reason with a full stop before the stop reason ([8a855f4](https://github.com/Rytass/BPMCore/commit/8a855f4))
|
|
34
|
+
- **organization:** default organizationTimeZone to Asia/Taipei ([cc6b908](https://github.com/Rytass/BPMCore/commit/cc6b908))
|
|
35
|
+
- **workflow-engine:** consume the token of a NOTIFY node skipped by its entry condition ([#78](https://github.com/Rytass/BPMCore/issues/78))
|
|
36
|
+
- **forms:** keep the new-tab cue out of copied link text ([4fcd8e8](https://github.com/Rytass/BPMCore/commit/4fcd8e8))
|
|
37
|
+
- **forms:** harden hidden fields and link display after review ([9ce1f82](https://github.com/Rytass/BPMCore/commit/9ce1f82))
|
|
38
|
+
- **workflow-engine:** normalise the ad-hoc task nodeLabel like the list paths ([ded39e9](https://github.com/Rytass/BPMCore/commit/ded39e9))
|
|
39
|
+
- **workflow-engine:** bound the submitter name lookup inside the approval transaction ([dbf1d3b](https://github.com/Rytass/BPMCore/commit/dbf1d3b))
|
|
40
|
+
- **workflow-engine:** index the submitter column that the sent list now matches ([557f458](https://github.com/Rytass/BPMCore/commit/557f458))
|
|
41
|
+
- **workflow-engine:** leave out the refusals of seats the initiator exclusion removes ([959912e](https://github.com/Rytass/BPMCore/commit/959912e))
|
|
42
|
+
- **workflow-engine:** keep every refused delegation on record when the dedupe or a kept stored member hides its row ([aad1c8c](https://github.com/Rytass/BPMCore/commit/aad1c8c))
|
|
43
|
+
- **workflow-engine:** skip the submitter before choosing the initiator-manager replacement tier ([355373e](https://github.com/Rytass/BPMCore/commit/355373e))
|
|
44
|
+
- **workflow-engine:** harden business key lookup and count its length in characters ([844ce82](https://github.com/Rytass/BPMCore/commit/844ce82))
|
|
45
|
+
- **forms:** keep member ids out of case titles and check member references on publish ([2b3c9c0](https://github.com/Rytass/BPMCore/commit/2b3c9c0))
|
|
46
|
+
- **workflow-engine:** name the fallback problem in the dry-run manager message ([7f571f0](https://github.com/Rytass/BPMCore/commit/7f571f0))
|
|
47
|
+
- **workflow-engine:** translate missing org units and finish the dry-run edge cases ([b528aaa](https://github.com/Rytass/BPMCore/commit/b528aaa))
|
|
48
|
+
- **workflow-engine:** reject malformed member values on submit ([f13113e](https://github.com/Rytass/BPMCore/commit/f13113e))
|
|
49
|
+
- **workflow-engine:** say 通知對象 for notify recipients ([226dbda](https://github.com/Rytass/BPMCore/commit/226dbda))
|
|
50
|
+
- **workflow-engine:** name the node and the org in approver-resolution errors and keep the dry run going ([f45bfaf](https://github.com/Rytass/BPMCore/commit/f45bfaf))
|
|
51
|
+
|
|
52
|
+
### 🔥 Performance
|
|
53
|
+
|
|
54
|
+
- **workflow-engine:** batch the grade lookups of a manager-chain node's delegations ([99ae382](https://github.com/Rytass/BPMCore/commit/99ae382))
|
|
55
|
+
- **workflow-engine:** read task node labels in Postgres instead of loading whole snapshots ([65bbbe1](https://github.com/Rytass/BPMCore/commit/65bbbe1))
|
|
56
|
+
- **notification:** name the submitter at submit instead of inside the approval transaction ([da64763](https://github.com/Rytass/BPMCore/commit/da64763))
|
|
57
|
+
|
|
58
|
+
### ❤️ Thank You
|
|
59
|
+
|
|
60
|
+
- Chia Yu Pai @fantasywind
|
|
61
|
+
- Claude Opus 5.5
|
|
62
|
+
- Kai-Chieh Yang
|
|
63
|
+
|
|
64
|
+
## 0.14.0 (2026-10-12)
|
|
65
|
+
|
|
66
|
+
### 🚀 Features
|
|
67
|
+
|
|
68
|
+
- **workflow-engine:** sign manager chains in order and keep the initiator out of re-delegation ([6eaf1e6](https://github.com/Rytass/BPMCore/commit/6eaf1e6))
|
|
69
|
+
- **designer:** offer SEQUENTIAL again and show signing order in task views ([ed38d04](https://github.com/Rytass/BPMCore/commit/ed38d04))
|
|
70
|
+
- ⚠️ **workflow-engine:** make SEQUENTIAL sign one candidate at a time ([70e9cde](https://github.com/Rytass/BPMCore/commit/70e9cde))
|
|
71
|
+
- **designer:** configure initiator exclusion on user task nodes ([b7b51cd](https://github.com/Rytass/BPMCore/commit/b7b51cd))
|
|
72
|
+
- **workflow-engine:** let a user task exclude the initiator from its approvers ([a4c6e51](https://github.com/Rytass/BPMCore/commit/a4c6e51))
|
|
73
|
+
- **workflow-engine:** add ORG_MANAGER_CHAIN resolver that walks up to a position level ([001af84](https://github.com/Rytass/BPMCore/commit/001af84))
|
|
74
|
+
|
|
75
|
+
### 🩹 Fixes
|
|
76
|
+
|
|
77
|
+
- **workflow-engine:** reopen for the requester across a sequential transfer and align the sequential-origin check ([d657320](https://github.com/Rytass/BPMCore/commit/d657320))
|
|
78
|
+
- **workflow-engine:** reopen a rejected pre-approval for its requester on sequential tasks ([2cf8004](https://github.com/Rytass/BPMCore/commit/2cf8004))
|
|
79
|
+
- **designer:** show the signing order and turn hand-offs in the instance timeline ([7ade44a](https://github.com/Rytass/BPMCore/commit/7ade44a))
|
|
80
|
+
- **workflow-engine:** re-delegate on activation, anchor the SLA warning and give consumers a turn signal ([f50c781](https://github.com/Rytass/BPMCore/commit/f50c781))
|
|
81
|
+
- **workflow-engine:** follow a transfer when a pre-approval points at a transferred task ([5132a80](https://github.com/Rytass/BPMCore/commit/5132a80))
|
|
82
|
+
- **workflow-engine:** pin the initiator-manager fallback and treat a null exclusion as off ([6402e54](https://github.com/Rytass/BPMCore/commit/6402e54))
|
|
83
|
+
- **workflow-engine:** filter the initiator before dedupe and keep exclusion nodes completable ([5a6570a](https://github.com/Rytass/BPMCore/commit/5a6570a))
|
|
84
|
+
- **workflow-engine:** let ORG_MANAGER_CHAIN climb past unit heads under org-unit rules ([5baa2e6](https://github.com/Rytass/BPMCore/commit/5baa2e6))
|
|
85
|
+
- **workflow-engine:** scope the transfer re-point to pre-approvals on the origin node ([70d99d7](https://github.com/Rytass/BPMCore/commit/70d99d7))
|
|
86
|
+
- **workflow-engine:** move open pre-approvals to the new holder on transfer ([685a387](https://github.com/Rytass/BPMCore/commit/685a387))
|
|
87
|
+
|
|
88
|
+
### ⚠️ Breaking Changes
|
|
89
|
+
|
|
90
|
+
- **workflow-engine:** make SEQUENTIAL sign one candidate at a time ([70e9cde](https://github.com/Rytass/BPMCore/commit/70e9cde))
|
|
91
|
+
the SEQUENTIAL decision policy used to behave exactly like
|
|
92
|
+
PARALLEL_ALL (every candidate got the task at once). It now means what its
|
|
93
|
+
name says: candidates sign one after another, in the order the approver
|
|
94
|
+
resolver returned them.
|
|
95
|
+
- task_candidates gains a nullable `sequence` column (migration
|
|
96
|
+
0000000025000-task-candidate-sequence) and a WAITING status for candidates
|
|
97
|
+
whose turn has not come. Only the first candidate is PENDING, assigned and
|
|
98
|
+
notified; an approval activates the next one (fresh SLA window, a
|
|
99
|
+
TASK_CANDIDATE_ACTIVATED activity log, a new assignment notification).
|
|
100
|
+
- A WAITING candidate who tries to decide gets a ConflictException.
|
|
101
|
+
- Reject, return and instance cancellation close the WAITING candidates too.
|
|
102
|
+
- Transferring (including SLA escalation) keeps the SEQUENTIAL policy and
|
|
103
|
+
carries the remaining WAITING candidates to the replacement task.
|
|
104
|
+
- TASK_CREATED lists only the active candidate in candidateMemberIds and adds
|
|
105
|
+
sequentialCandidateMemberIds with the full order.
|
|
106
|
+
- Candidates are read ordered by sequence, unordered ones last.
|
|
107
|
+
SEQUENTIAL tasks created before this change keep their old behaviour: their
|
|
108
|
+
candidates are all PENDING with a NULL sequence and nothing is backfilled.
|
|
109
|
+
PARALLEL_*, QUORUM, ad-hoc tasks and dry run are unchanged.
|
|
110
|
+
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
111
|
+
Claude-Session: https://claude.ai/code/session_01C3u1QC5Uo4tZvyTaJE6Gap
|
|
112
|
+
|
|
113
|
+
### ❤️ Thank You
|
|
114
|
+
|
|
115
|
+
- Chia Yu Pai @fantasywind
|
|
116
|
+
- Claude Opus 5.5
|
|
117
|
+
- Kai-Chieh Yang
|
|
118
|
+
|
|
1
119
|
## 0.13.5 (2026-10-12)
|
|
2
120
|
|
|
3
121
|
### 🩹 Fixes
|
package/README.md
CHANGED
|
@@ -703,6 +703,15 @@ export interface BPMMemberResolver {
|
|
|
703
703
|
|
|
704
704
|
## Organization Data Ownership
|
|
705
705
|
|
|
706
|
+
> **Upgrading past 0.14.0 — which day is "today".** The workflow engine now
|
|
707
|
+
> reads membership and manager-rule effective dates in the
|
|
708
|
+
> `organizationTimeZone` root option, default `Asia/Taipei`; it used to read
|
|
709
|
+
> the UTC date. Between local midnight and 08:00 a rule effective from today
|
|
710
|
+
> now applies, and one ending today no longer does, up to eight hours earlier
|
|
711
|
+
> than before. If your organization dates are kept in UTC, set
|
|
712
|
+
> `organizationTimeZone: 'UTC'` before upgrading. See
|
|
713
|
+
> [Configuration Reference](#configuration-reference).
|
|
714
|
+
|
|
706
715
|
> **Read this before integrating BPM into a host that already has its own
|
|
707
716
|
> organization model.** The org-integration shape is **asymmetric** with
|
|
708
717
|
> member integration above — knowing which side owns what saves a day of
|
|
@@ -942,6 +951,7 @@ BPMRootModule.forRootAsync({
|
|
|
942
951
|
| `attachmentSignedUrlTtlSeconds` | `300` | Signed attachment URL lifetime in seconds. |
|
|
943
952
|
| `identityMemberMetadataCacheTtlMs` | `300000` | Member metadata cache TTL. |
|
|
944
953
|
| `identityRegisterResolvers` | `true` | Set to `false` when the host already publishes `member` / `members` / `memberCount` / `searchMembers` GraphQL queries. `IdentityService` stays available either way. |
|
|
954
|
+
| `organizationTimeZone` | `Asia/Taipei` | IANA zone in which BPM reads "today" when it compares against the date-only `effectiveFrom` / `effectiveTo` of memberships and manager resolutions (manager chains, direct and org-unit managers, position levels, the initiator snapshot, SLA escalation, the "active only" organization views). Set `'UTC'` if your organization dates are kept in UTC. An unknown zone makes BPM fail at startup. Independent of `notificationSlaBusinessCalendarTimeZone`. Before this option the workflow engine read UTC while `OrganizationService` read `Asia/Taipei`; both now follow it. |
|
|
945
955
|
| `notificationInAppEnabled` | `true` | Enables in-app notification records. |
|
|
946
956
|
| `notificationEmailEnabled` | `auto` | Enables email when SMTP settings are complete. |
|
|
947
957
|
| `notificationEmailSmtpHost` | `null` | SMTP host. |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rytass/bpm-core-nestjs-module",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.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.
|
|
165
|
+
"@rytass/bpm-core-shared": "^0.15.0",
|
|
166
166
|
"@rytass/secret-adapter-vault-nestjs": ">=0.4.5",
|
|
167
167
|
"express": ">=4.0.0",
|
|
168
168
|
"graphql": ">=16.0.0",
|
|
@@ -7,6 +7,7 @@ const common_1 = require("@nestjs/common");
|
|
|
7
7
|
const typeorm_1 = require("typeorm");
|
|
8
8
|
const typeorm_2 = require("@nestjs/typeorm");
|
|
9
9
|
const approval_instance_entity_1 = require("../workflow-engine/approval-instance.entity");
|
|
10
|
+
const instance_submitter_1 = require("../workflow-engine/instance-submitter");
|
|
10
11
|
const task_candidate_entity_1 = require("../workflow-engine/task-candidate.entity");
|
|
11
12
|
const task_decision_entity_1 = require("../workflow-engine/task-decision.entity");
|
|
12
13
|
const task_entity_1 = require("../workflow-engine/task.entity");
|
|
@@ -148,7 +149,11 @@ let AttachmentService = class AttachmentService {
|
|
|
148
149
|
where: { id: attachment.instanceId },
|
|
149
150
|
})
|
|
150
151
|
: null;
|
|
151
|
-
|
|
152
|
+
// The member who filed the instance on the applicant's behalf opens the
|
|
153
|
+
// instance detail, so they must be able to open its files as well.
|
|
154
|
+
if (instance &&
|
|
155
|
+
(instance.initiatorMemberId === requestedByMemberId ||
|
|
156
|
+
(0, instance_submitter_1.readDistinctSubmitterMemberId)(instance) === requestedByMemberId)) {
|
|
152
157
|
return;
|
|
153
158
|
}
|
|
154
159
|
const task = attachment.taskId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment.service.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/attachment/attachment.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"attachment.service.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/attachment/attachment.service.ts"],"names":[],"mappings":";;;;AAAA,mCAA4D;AAC5D,2CAMwB;AACxB,qCAAwD;AACxD,6CAAmD;AACnD,0FAAqF;AACrF,8EAAsF;AACtF,oFAA+E;AAC/E,kFAA6E;AAC7E,gEAA4D;AAC5D,yEAGoC;AACpC,6DAI8B;AAC9B,2DAAuD;AAGvD,MAAM,YAAY,GAChB,4EAA4E,CAAC;AAWxE,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YAEmB,oBAAkD,EAElD,0BAA8D,EAE9D,cAAsC,EAEtC,uBAAwD,EAExD,sBAAsD,EAEtD,OAA0B,EAG1B,oBAAkD,mDAA8B;QAbhF,yBAAoB,GAApB,oBAAoB,CAA8B;QAElD,+BAA0B,GAA1B,0BAA0B,CAAoC;QAE9D,mBAAc,GAAd,cAAc,CAAwB;QAEtC,4BAAuB,GAAvB,uBAAuB,CAAiC;QAExD,2BAAsB,GAAtB,sBAAsB,CAAgC;QAEtD,YAAO,GAAP,OAAO,CAAmB;QAG1B,sBAAiB,GAAjB,iBAAiB,CAA+D;IAChG,CAAC;IAEJ,KAAK,CAAC,gBAAgB,CACpB,KAA4B;QAE5B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;QAExD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,4BAAmB,CAAC,2CAA2C,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,4BAAmB,CAAC,wCAAwC,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAE9C,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,KAAK,cAAc,EAAE,CAAC;YACpE,MAAM,IAAI,4BAAmB,CAAC,8BAA8B,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,EAAE,GAAG,IAAA,mBAAU,GAAE,CAAC;QACxB,MAAM,UAAU,GAAG,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE;YACtD,WAAW,EAAE,KAAK,CAAC,QAAQ;YAC3B,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACnC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;YAC/B,cAAc;YACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,aAAa,EAAE,qBAAqB,CAAC,KAAK,CAAC,aAAa,CAAC;YACzD,EAAE;YACF,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;YACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;YAClC,UAAU,EAAE,UAAU,CAAC,GAAG;YAC1B,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB;YACzD,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;YAC5B,gBAAgB;SACjB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EACpB,aAAa,GAAG,IAAI,EACpB,UAAU,EACV,mBAAmB,GAAG,IAAI,EAC1B,MAAM,GAAG,IAAI,GAMd;QACC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YACvD,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YAC3B,KAAK,EAAE;gBACL,UAAU;gBACV,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3C,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAoC,EAAE;YACrE,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,gCAAgC,CACzC,UAAU,EACV,mBAAmB,CACpB,CAAC;gBAEF,OAAO,UAAU,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,mBAAmB,CAAC,MAAM,CAC/B,CAAC,UAAU,EAAkC,EAAE,CAAC,UAAU,KAAK,IAAI,CACpE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iCAAiC,CACrC,OAAsB,EACtB,EACE,QAAQ,EACR,UAAU,GAIX;QAED,MAAM,cAAc,GAAG,8BAA8B,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE9D,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC;YAClD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,GAAG,CAAC,EAAE;SACvB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,WAAW;aAChC,MAAM,CACL,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,UAAU,KAAK,IAAI;YAC9B,UAAU,CAAC,UAAU,KAAK,UAAU,CACvC;aACA,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACpB,GAAG,UAAU;YACb,aAAa,EACX,UAAU,CAAC,aAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,IAAI;YACvE,UAAU;SACX,CAAC,CAAC,CAAC;QAEN,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EACpB,WAAW,EACX,EAAE,EACF,mBAAmB,GAKpB;QACC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAExD,MAAM,IAAI,CAAC,gCAAgC,CACzC,UAAU,EACV,mBAAmB,CACpB,CAAC;QAEF,IAAI,WAAW,KAAK,QAAQ,IAAI,UAAU,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC;YAC1E,MAAM,IAAI,4BAAmB,CAAC,uCAAuC,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,KAAK,GAAG,mBAAmB,CAC/B;YACE,WAAW;YACX,SAAS,EACP,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,iBAAiB,CAAC,mBAAmB;YAC5C,EAAE;SACH,EACD,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACvC,CAAC;QAEF,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,IAAI,EAAE,mBAAmB,kBAAkB,CAC5H,KAAK,CACN,gBAAgB,WAAW,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,EACzB,WAAW,EACX,EAAE,EACF,KAAK,GAKN;QAIC,MAAM,OAAO,GAAG,qBAAqB,CACnC,KAAK,EACL,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACvC,CAAC;QAEF,IACE,OAAO,CAAC,EAAE,KAAK,EAAE;YACjB,OAAO,CAAC,WAAW,KAAK,WAAW;YACnC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EACjD,CAAC;YACD,MAAM,IAAI,0BAAiB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;YAC5D,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QAEH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,EAAU;QAC5C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YACzD,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,0BAAiB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,gCAAgC,CAC5C,UAA4B,EAC5B,mBAA2B;QAE3B,IAAI,UAAU,CAAC,gBAAgB,KAAK,mBAAmB,EAAE,CAAC;YACxD,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU;YACpC,CAAC,CAAC,MAAM,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;gBAC5C,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,UAAU,EAAE;aACrC,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC;QAET,wEAAwE;QACxE,mEAAmE;QACnE,IACE,QAAQ;YACR,CAAC,QAAQ,CAAC,iBAAiB,KAAK,mBAAmB;gBACjD,IAAA,kDAA6B,EAAC,QAAQ,CAAC,KAAK,mBAAmB,CAAC,EAClE,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM;YAC5B,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACzE,CAAC,CAAC,IAAI,CAAC;QAET,IAAI,IAAI,IAAI,8BAA8B,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM;YACtC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,CAAC,CAAC,UAAU,CAAC,UAAU;gBACrB,CAAC,CAAC,CACE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;oBAC7B,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE;iBAC7C,CAAC,CACH,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC5C,CAAC,CAAC,EAAE,CAAC;QAET,IACE,cAAc,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,MAAM,IAAI,CAAC,+BAA+B,CACzC,cAAc,EACd,mBAAmB,CACpB,CAAC,EACF,CAAC;YACD,OAAO;QACT,CAAC;QAED,IACE,cAAc,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,MAAM,IAAI,CAAC,8BAA8B,CACxC,cAAc,EACd,mBAAmB,CACpB,CAAC,EACF,CAAC;YACD,OAAO;QACT,CAAC;QAED,IACE,cAAc,CAAC,MAAM,GAAG,CAAC;YACzB,CACE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBAC7B,KAAK,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,cAAc,CAAC,EAAE;aAClC,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CACvB,8BAA8B,CAAC,aAAa,EAAE,mBAAmB,CAAC,CACnE,EACD,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,0BAAiB,CAAC,cAAc,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAC3C,OAA0B,EAC1B,QAAgB;QAEhB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;YACzD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAA,YAAE,EAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE;SACpC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC,IAAI,CACpB,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,gBAAgB,KAAK,QAAQ,CAC7E,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAC1C,OAA0B,EAC1B,QAAgB;QAEhB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YACvD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAA,YAAE,EAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE;SACpC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC;IAC/E,CAAC;CACF,CAAA;AA1UY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAGR,mBAAA,IAAA,0BAAgB,EAAC,oCAAgB,CAAC,CAAA;IAElC,mBAAA,IAAA,0BAAgB,EAAC,iDAAsB,CAAC,CAAA;IAExC,mBAAA,IAAA,0BAAgB,EAAC,wBAAU,CAAC,CAAA;IAE5B,mBAAA,IAAA,0BAAgB,EAAC,2CAAmB,CAAC,CAAA;IAErC,mBAAA,IAAA,0BAAgB,EAAC,yCAAkB,CAAC,CAAA;IAEpC,mBAAA,IAAA,eAAM,EAAC,6CAAkB,CAAC,CAAA;IAE1B,mBAAA,IAAA,iBAAQ,GAAE,CAAA;IACV,mBAAA,IAAA,eAAM,EAAC,2CAAsB,CAAC,CAAA;6CAZQ,oBAAU;QAEJ,oBAAU;QAEtB,oBAAU;QAED,oBAAU;QAEX,oBAAU;GAX1C,iBAAiB,CA0U7B;AAED,SAAS,8BAA8B,CACrC,IAAgB,EAChB,QAAgB;IAEhB,OAAO,CACL,IAAI,CAAC,gBAAgB,KAAK,QAAQ;QAClC,IAAI,CAAC,wBAAwB,KAAK,QAAQ,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,eAAe,CAAC,EAAU,EAAE,QAAgB;IACnD,OAAO,GAAG,EAAE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAE5D,OAAO,SAAS,IAAI,gBAAgB,CAAC;AACvC,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAgC;IAEhC,MAAM,YAAY,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAEnC,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,SAAS,8BAA8B,CACrC,QAA2C;IAE3C,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAC5D,2BAA2B,CAAC,KAAK,EAAE,QAAQ,QAAQ,EAAE,CAAC,CACvD,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAc,EACd,IAAY;IAEZ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,2BAA2B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACpD,2BAA2B,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CACrD,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAA+B,EAC/B,eAAuB;IAEvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAChE,WAAW,CACZ,CAAC;IACF,MAAM,SAAS,GAAG,IAAA,mBAAU,EAAC,QAAQ,EAAE,eAAe,CAAC;SACpD,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvB,OAAO,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAa,EACb,eAAuB;IAEvB,wEAAwE;IACxE,8EAA8E;IAC9E,6EAA6E;IAC7E,0CAA0C;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,IAAI,0BAAiB,CAAC,6BAA6B,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,iBAAiB,GAAG,IAAA,mBAAU,EAAC,QAAQ,EAAE,eAAe,CAAC;SAC5D,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvB,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;QAC3D,MAAM,IAAI,0BAAiB,CAAC,6BAA6B,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CACxB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CACrC,CAAC;IAEb,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,0BAAiB,CAAC,6BAA6B,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAc;IAEd,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,CAAC,KAAK,CAAC,WAAW,KAAK,YAAY,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC"}
|
|
@@ -8,6 +8,7 @@ import { BPMFormDataSourceRegistry } from '../form-data-source/form-data-source.
|
|
|
8
8
|
import { BPMRootIdentityOptions } from '../identity/identity-options';
|
|
9
9
|
import { BPMMemberResolver } from '../identity/member-resolver.interface';
|
|
10
10
|
import { BPMRootNotificationOptions } from '../notification/notification-options';
|
|
11
|
+
import { BPMRootOrganizationOptions } from '../organization/organization-time-zone';
|
|
11
12
|
import { BPMRootSignatureOptions } from '../signature/signature-options';
|
|
12
13
|
import { BPMWorkflowServiceTaskDispatcher } from '../workflow-engine/workflow-service-task-dispatcher.token';
|
|
13
14
|
import { BPMRootWorkflowWebhookOptions } from '../workflow-webhook/workflow-webhook-options';
|
|
@@ -31,7 +32,7 @@ import { BPMWorkflowWebhookRegistry } from '../workflow-webhook/workflow-webhook
|
|
|
31
32
|
* run: `attachmentRoutePrefix` and `identityRegisterResolvers`. They are
|
|
32
33
|
* accepted at the top level of the `forRootAsync` options object instead.
|
|
33
34
|
*/
|
|
34
|
-
export interface BPMRootRuntimeOptions extends BPMRootAttachmentOptions, BPMRootIdentityOptions, BPMRootNotificationOptions, BPMRootSignatureOptions, BPMRootWorkflowWebhookOptions {
|
|
35
|
+
export interface BPMRootRuntimeOptions extends BPMRootAttachmentOptions, BPMRootIdentityOptions, BPMRootNotificationOptions, BPMRootOrganizationOptions, BPMRootSignatureOptions, BPMRootWorkflowWebhookOptions {
|
|
35
36
|
/**
|
|
36
37
|
* Storage adapter for BPM attachments, as a ready instance.
|
|
37
38
|
*
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.BPMRootOptionsModule = exports.BPM_ROOT_OPTIONS = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
const common_1 = require("@nestjs/common");
|
|
7
|
+
const organization_time_zone_1 = require("../organization/organization-time-zone");
|
|
7
8
|
/**
|
|
8
9
|
* Injection token carrying the **resolved** {@link BPMRootRuntimeOptions}.
|
|
9
10
|
*
|
|
@@ -26,6 +27,7 @@ exports.BPM_ROOT_OPTIONS = Symbol('BPM_ROOT_OPTIONS');
|
|
|
26
27
|
*/
|
|
27
28
|
let BPMRootOptionsModule = BPMRootOptionsModule_1 = class BPMRootOptionsModule {
|
|
28
29
|
static forRoot(options = {}) {
|
|
30
|
+
(0, organization_time_zone_1.resolveBPMOrganizationTimeZone)(options.organizationTimeZone);
|
|
29
31
|
return {
|
|
30
32
|
exports: [exports.BPM_ROOT_OPTIONS],
|
|
31
33
|
module: BPMRootOptionsModule_1,
|
|
@@ -47,7 +49,11 @@ let BPMRootOptionsModule = BPMRootOptionsModule_1 = class BPMRootOptionsModule {
|
|
|
47
49
|
{
|
|
48
50
|
inject: [...(options.inject ?? [])],
|
|
49
51
|
provide: exports.BPM_ROOT_OPTIONS,
|
|
50
|
-
useFactory: async (...args) =>
|
|
52
|
+
useFactory: async (...args) => {
|
|
53
|
+
const resolved = useFactory ? await useFactory(...args) : {};
|
|
54
|
+
(0, organization_time_zone_1.resolveBPMOrganizationTimeZone)(resolved.organizationTimeZone);
|
|
55
|
+
return resolved;
|
|
56
|
+
},
|
|
51
57
|
},
|
|
52
58
|
],
|
|
53
59
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bpm-root-options.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/bpm/bpm-root-options.ts"],"names":[],"mappings":";;;;;AAAA,2CAA+E;
|
|
1
|
+
{"version":3,"file":"bpm-root-options.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/bpm/bpm-root-options.ts"],"names":[],"mappings":";;;;;AAAA,2CAA+E;AAU/E,mFAGgD;AA0GhD;;;;;;;;;;;GAWG;AACU,QAAA,gBAAgB,GAA0C,MAAM,CAC3E,kBAAkB,CACnB,CAAC;AAoBF;;;;;;GAMG;AAGI,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAC/B,MAAM,CAAC,OAAO,CAAC,UAAiC,EAAE;QAChD,IAAA,uDAA8B,EAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAE7D,OAAO;YACL,OAAO,EAAE,CAAC,wBAAgB,CAAC;YAC3B,MAAM,EAAE,sBAAoB;YAC5B,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,wBAAgB;oBACzB,QAAQ,EAAE,OAAO;iBAClB;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CACjB,UAA4C,EAAE;QAE9C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAEtC,OAAO;YACL,OAAO,EAAE,CAAC,wBAAgB,CAAC;YAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YACpD,MAAM,EAAE,sBAAoB;YAC5B,SAAS,EAAE;gBACT;oBACE,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;oBACnC,OAAO,EAAE,wBAAgB;oBACzB,UAAU,EAAE,KAAK,EACf,GAAG,IAAwB,EACK,EAAE;wBAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAE7D,IAAA,uDAA8B,EAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;wBAE9D,OAAO,QAAQ,CAAC;oBAClB,CAAC;iBACF;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AA1CY,oDAAoB;+BAApB,oBAAoB;IAFhC,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,oBAAoB,CA0ChC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FormFieldDefinition } from '@rytass/bpm-core-shared/form';
|
|
2
|
+
/**
|
|
3
|
+
* Shape errors for the member fields among `fields` (the visible ones the
|
|
4
|
+
* caller is about to accept). A member value is a non-empty string, or — when
|
|
5
|
+
* the field is `multiple` — an array of non-empty strings; ids only, never
|
|
6
|
+
* `{ id, name }`, because a `DYNAMIC_FORM` approver resolver reads the value as
|
|
7
|
+
* member ids.
|
|
8
|
+
*
|
|
9
|
+
* Absent / `null` is "no value" and is left to the required check, which
|
|
10
|
+
* already treats a blank string and an empty array as missing. The member ids
|
|
11
|
+
* are deliberately not looked up in the directory here: the directory is the
|
|
12
|
+
* host's, and an id that stops resolving is a resolver-time concern.
|
|
13
|
+
*
|
|
14
|
+
* Internal helper, not exported from the package index.
|
|
15
|
+
*/
|
|
16
|
+
export declare function readSubmittedMemberValueErrors(fields: readonly FormFieldDefinition[], formData: Readonly<Record<string, unknown>>): readonly string[];
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readSubmittedMemberValueErrors = readSubmittedMemberValueErrors;
|
|
4
|
+
const form_1 = require("@rytass/bpm-core-shared/form");
|
|
5
|
+
/**
|
|
6
|
+
* Shape errors for the member fields among `fields` (the visible ones the
|
|
7
|
+
* caller is about to accept). A member value is a non-empty string, or — when
|
|
8
|
+
* the field is `multiple` — an array of non-empty strings; ids only, never
|
|
9
|
+
* `{ id, name }`, because a `DYNAMIC_FORM` approver resolver reads the value as
|
|
10
|
+
* member ids.
|
|
11
|
+
*
|
|
12
|
+
* Absent / `null` is "no value" and is left to the required check, which
|
|
13
|
+
* already treats a blank string and an empty array as missing. The member ids
|
|
14
|
+
* are deliberately not looked up in the directory here: the directory is the
|
|
15
|
+
* host's, and an id that stops resolving is a resolver-time concern.
|
|
16
|
+
*
|
|
17
|
+
* Internal helper, not exported from the package index.
|
|
18
|
+
*/
|
|
19
|
+
function readSubmittedMemberValueErrors(fields, formData) {
|
|
20
|
+
return fields.filter(form_1.isMemberFieldDefinition).flatMap((field) => {
|
|
21
|
+
const value = Object.prototype.hasOwnProperty.call(formData, field.fieldKey)
|
|
22
|
+
? formData[field.fieldKey]
|
|
23
|
+
: undefined;
|
|
24
|
+
if (typeof value === 'undefined' || value === null) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
const multiple = field.multiple === true;
|
|
28
|
+
return (0, form_1.isFormMemberValue)(value, multiple)
|
|
29
|
+
? []
|
|
30
|
+
: [
|
|
31
|
+
multiple
|
|
32
|
+
? `formData.${field.fieldKey} must be an array of member ids`
|
|
33
|
+
: `formData.${field.fieldKey} must be a member id`,
|
|
34
|
+
];
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=form-member-value.validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-member-value.validator.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/form/form-member-value.validator.ts"],"names":[],"mappings":";;AAoBA,wEAuBC;AA3CD,uDAIsC;AAEtC;;;;;;;;;;;;;GAaG;AACH,SAAgB,8BAA8B,CAC5C,MAAsC,EACtC,QAA2C;IAE3C,OAAO,MAAM,CAAC,MAAM,CAAC,8BAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;YAC1E,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC1B,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC;QAEzC,OAAO,IAAA,wBAAiB,EAAC,KAAK,EAAE,QAAQ,CAAC;YACvC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,QAAQ;oBACN,CAAC,CAAC,YAAY,KAAK,CAAC,QAAQ,iCAAiC;oBAC7D,CAAC,CAAC,YAAY,KAAK,CAAC,QAAQ,sBAAsB;aACrD,CAAC;IACR,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -11,6 +11,7 @@ const SUPPORTED_FIELD_TYPES = [
|
|
|
11
11
|
'date',
|
|
12
12
|
'datetime',
|
|
13
13
|
'file_upload',
|
|
14
|
+
'member',
|
|
14
15
|
'money',
|
|
15
16
|
'number',
|
|
16
17
|
'autocomplete',
|
|
@@ -137,11 +138,13 @@ function lintDefinitionSchema(schema) {
|
|
|
137
138
|
const fieldErrors = fields.flatMap((field, index) => lintFieldDefinition(field, index, scope));
|
|
138
139
|
const duplicateErrors = readDuplicateFieldKeyErrors(fields);
|
|
139
140
|
const dependencyErrors = lintFieldDependencyGraph(fields);
|
|
141
|
+
const hiddenSourceErrors = lintHiddenDataSourceDependencies(fields);
|
|
140
142
|
return [
|
|
141
143
|
...versionErrors,
|
|
142
144
|
...fieldErrors,
|
|
143
145
|
...duplicateErrors,
|
|
144
146
|
...dependencyErrors,
|
|
147
|
+
...hiddenSourceErrors,
|
|
145
148
|
];
|
|
146
149
|
}
|
|
147
150
|
function lintFieldDefinition(field, index, scope) {
|
|
@@ -156,13 +159,25 @@ function lintFieldDefinition(field, index, scope) {
|
|
|
156
159
|
...lintOptionalString(field.requiredWhen, `${path}.requiredWhen`),
|
|
157
160
|
...lintOptionalString(field.readonlyWhen, `${path}.readonlyWhen`),
|
|
158
161
|
...lintFieldRequiredFlag(field, path),
|
|
162
|
+
...lintFieldHiddenFlag(field, path),
|
|
159
163
|
...(isSupportedFieldType(type) ? [] : [`${path}.type is not supported`]),
|
|
160
164
|
...lintConditionTableReferences(field, path, scope.tableFieldKeys),
|
|
161
165
|
];
|
|
162
166
|
if (!isSupportedFieldType(type)) {
|
|
163
167
|
return basicErrors;
|
|
164
168
|
}
|
|
165
|
-
return [
|
|
169
|
+
return [
|
|
170
|
+
...basicErrors,
|
|
171
|
+
...lintDisplayAsTarget(field, type, path),
|
|
172
|
+
...lintFieldTypeSpecifics(field, type, path, scope),
|
|
173
|
+
];
|
|
174
|
+
}
|
|
175
|
+
/** `displayAs` is a text-field option; every other type must not carry it. */
|
|
176
|
+
function lintDisplayAsTarget(field, type, path) {
|
|
177
|
+
return Object.prototype.hasOwnProperty.call(field, 'displayAs') &&
|
|
178
|
+
!TEXT_FIELD_TYPES.has(type)
|
|
179
|
+
? [`${path}.displayAs 只能用在文字欄位`]
|
|
180
|
+
: [];
|
|
166
181
|
}
|
|
167
182
|
function lintFieldTypeSpecifics(field, type, path, scope) {
|
|
168
183
|
if (TEXT_FIELD_TYPES.has(type)) {
|
|
@@ -180,6 +195,9 @@ function lintFieldTypeSpecifics(field, type, path, scope) {
|
|
|
180
195
|
if (type === 'boolean') {
|
|
181
196
|
return lintBooleanField(field, path);
|
|
182
197
|
}
|
|
198
|
+
if (type === 'member') {
|
|
199
|
+
return lintMemberField(field, path);
|
|
200
|
+
}
|
|
183
201
|
if (type === 'table') {
|
|
184
202
|
return lintTableField(field, path, scope);
|
|
185
203
|
}
|
|
@@ -198,6 +216,22 @@ function lintFieldRequiredFlag(field, path) {
|
|
|
198
216
|
? []
|
|
199
217
|
: [`${path}.required must be a boolean`];
|
|
200
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* `hidden` is store-only: nobody sees the field, so nobody can fill a required
|
|
221
|
+
* value in. Combining it with `required: true` would make the form impossible
|
|
222
|
+
* to submit, hence the hard error. `visibleWhen` stays legal — `hidden` wins.
|
|
223
|
+
*/
|
|
224
|
+
function lintFieldHiddenFlag(field, path) {
|
|
225
|
+
if (!Object.prototype.hasOwnProperty.call(field, 'hidden')) {
|
|
226
|
+
return [];
|
|
227
|
+
}
|
|
228
|
+
if (typeof field.hidden !== 'boolean') {
|
|
229
|
+
return [`${path}.hidden 必須是布林值`];
|
|
230
|
+
}
|
|
231
|
+
return field.hidden && field.required === true
|
|
232
|
+
? [`${path}.hidden 為 true 時不可同時設為必填(required)`]
|
|
233
|
+
: [];
|
|
234
|
+
}
|
|
201
235
|
/**
|
|
202
236
|
* Form-level conditions cannot address a cell: neither the frontend nor the
|
|
203
237
|
* backend condition parser understands bracket paths, so referencing table
|
|
@@ -227,10 +261,15 @@ function lintTextField(field, path) {
|
|
|
227
261
|
field.minLength > field.maxLength
|
|
228
262
|
? [`${path}.minLength must be less than or equal to ${path}.maxLength`]
|
|
229
263
|
: [];
|
|
264
|
+
const displayAsErrors = Object.prototype.hasOwnProperty.call(field, 'displayAs') &&
|
|
265
|
+
field.displayAs !== 'link'
|
|
266
|
+
? [`${path}.displayAs 只支援 "link"`]
|
|
267
|
+
: [];
|
|
230
268
|
return [
|
|
231
269
|
...minLengthErrors,
|
|
232
270
|
...maxLengthErrors,
|
|
233
271
|
...lengthRangeErrors,
|
|
272
|
+
...displayAsErrors,
|
|
234
273
|
...lintOptionalDefaultValue(field.defaultValue, path, (value) => typeof value === 'string' || value === null),
|
|
235
274
|
];
|
|
236
275
|
}
|
|
@@ -398,6 +437,17 @@ function lintDynamicDefaultValue(field, path) {
|
|
|
398
437
|
function lintBooleanField(field, path) {
|
|
399
438
|
return lintOptionalDefaultValue(field.defaultValue, path, (value) => typeof value === 'boolean' || value === null);
|
|
400
439
|
}
|
|
440
|
+
function lintMemberField(field, path) {
|
|
441
|
+
const multipleErrors = typeof field.multiple === 'undefined' || typeof field.multiple === 'boolean'
|
|
442
|
+
? []
|
|
443
|
+
: [`${path}.multiple must be a boolean`];
|
|
444
|
+
return [
|
|
445
|
+
...multipleErrors,
|
|
446
|
+
// Submit rejects blank member ids, so a default of `''` / `['']` would make
|
|
447
|
+
// every untouched form unsubmittable.
|
|
448
|
+
...lintOptionalDefaultValue(field.defaultValue, path, (value) => value === null || (0, form_1.isFormMemberValue)(value, field.multiple === true)),
|
|
449
|
+
];
|
|
450
|
+
}
|
|
401
451
|
function lintTableField(field, path, scope) {
|
|
402
452
|
const structureErrors = [
|
|
403
453
|
...lintIdentifierKey(field.fieldKey, `${path}.fieldKey`),
|
|
@@ -466,6 +516,12 @@ function lintTableColumn(column, path, scope) {
|
|
|
466
516
|
...lintIdentifierKey(column.fieldKey, `${path}.fieldKey`),
|
|
467
517
|
...CONDITION_FIELD_KEYS.filter((conditionKey) => Object.prototype.hasOwnProperty.call(column, conditionKey)).map((conditionKey) => `${path}.${conditionKey} is not supported for table columns`),
|
|
468
518
|
...lintFieldRequiredFlag(column, path),
|
|
519
|
+
...(Object.prototype.hasOwnProperty.call(column, 'hidden')
|
|
520
|
+
? [`${path}.hidden 不支援表格欄位`]
|
|
521
|
+
: []),
|
|
522
|
+
...(Object.prototype.hasOwnProperty.call(column, 'displayAs')
|
|
523
|
+
? [`${path}.displayAs 不支援表格欄位`]
|
|
524
|
+
: []),
|
|
469
525
|
...lintTableColumnType(type, path),
|
|
470
526
|
];
|
|
471
527
|
if (!isSupportedFieldType(type) || !(0, form_1.isTableColumnFieldType)(type)) {
|
|
@@ -605,6 +661,39 @@ function lintFieldDependencyGraph(fields) {
|
|
|
605
661
|
const uniqueCycles = [...new Set(cycles)];
|
|
606
662
|
return uniqueCycles.map((cycle) => `schema.fields dependency cycle: ${cycle}`);
|
|
607
663
|
}
|
|
664
|
+
/**
|
|
665
|
+
* A hidden field is never rendered, so the client DataSource gate (which only
|
|
666
|
+
* sees rendered fields) cannot wait on or resolve it; the server still does,
|
|
667
|
+
* and a failure there would leave a resubmitter with no field to fix. A hidden
|
|
668
|
+
* field may therefore only depend on other hidden fields (or nothing).
|
|
669
|
+
*/
|
|
670
|
+
function lintHiddenDataSourceDependencies(fields) {
|
|
671
|
+
const records = fields.filter(isRecord);
|
|
672
|
+
const visibleKeys = new Set(records
|
|
673
|
+
.filter((field) => field.hidden !== true)
|
|
674
|
+
.map((field) => field.fieldKey)
|
|
675
|
+
.filter((fieldKey) => typeof fieldKey === 'string'));
|
|
676
|
+
const message = (path, dependencyKey) => `${path}.dataSource 所屬欄位為 hidden,只能綁定同為 hidden 的欄位,不可綁定顯示中的欄位:${dependencyKey}`;
|
|
677
|
+
const readVisibleDependencies = (owner) => readBindingSources(owner)
|
|
678
|
+
.filter((from) => from.kind === 'FIELD')
|
|
679
|
+
.map((from) => from.fieldKey)
|
|
680
|
+
.filter((dependencyKey) => typeof dependencyKey === 'string' && visibleKeys.has(dependencyKey));
|
|
681
|
+
return fields.flatMap((field, index) => {
|
|
682
|
+
if (!isRecord(field) || field.hidden !== true) {
|
|
683
|
+
return [];
|
|
684
|
+
}
|
|
685
|
+
const path = `schema.fields[${index}]`;
|
|
686
|
+
const columns = field.type === 'table' && Array.isArray(field.columns)
|
|
687
|
+
? field.columns
|
|
688
|
+
: [];
|
|
689
|
+
return [
|
|
690
|
+
...readVisibleDependencies(field).map((key) => message(path, key)),
|
|
691
|
+
...columns.flatMap((column, columnIndex) => isRecord(column)
|
|
692
|
+
? readVisibleDependencies(column).map((key) => message(`${path}.columns[${columnIndex}]`, key))
|
|
693
|
+
: []),
|
|
694
|
+
];
|
|
695
|
+
});
|
|
696
|
+
}
|
|
608
697
|
function readFieldDependencyEntries(field) {
|
|
609
698
|
if (typeof field.fieldKey !== 'string') {
|
|
610
699
|
return [];
|