@rytass/bpm-core-nestjs-module 0.18.1 → 0.20.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.
Files changed (149) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/package.json +3 -2
  3. package/src/index.d.ts +1 -0
  4. package/src/index.js +1 -0
  5. package/src/index.js.map +1 -1
  6. package/src/lib/attachment/attachment.service.d.ts +23 -1
  7. package/src/lib/attachment/attachment.service.js +111 -24
  8. package/src/lib/attachment/attachment.service.js.map +1 -1
  9. package/src/lib/bpm/bpm-root-options.d.ts +13 -0
  10. package/src/lib/bpm/bpm-root-options.js.map +1 -1
  11. package/src/lib/bpm/bpm-root.module.d.ts +12 -0
  12. package/src/lib/bpm/bpm-root.module.js +5 -0
  13. package/src/lib/bpm/bpm-root.module.js.map +1 -1
  14. package/src/lib/condition/adapters/cel-legacy.adapter.d.ts +62 -0
  15. package/src/lib/condition/adapters/cel-legacy.adapter.js +141 -0
  16. package/src/lib/condition/adapters/cel-legacy.adapter.js.map +1 -0
  17. package/src/lib/condition/adapters/cel-v2.adapter.d.ts +76 -0
  18. package/src/lib/condition/adapters/cel-v2.adapter.js +371 -0
  19. package/src/lib/condition/adapters/cel-v2.adapter.js.map +1 -0
  20. package/src/lib/condition/condition.service.d.ts +90 -5
  21. package/src/lib/condition/condition.service.js +287 -71
  22. package/src/lib/condition/condition.service.js.map +1 -1
  23. package/src/lib/condition/expression-ast.d.ts +176 -0
  24. package/src/lib/condition/expression-ast.js +1254 -0
  25. package/src/lib/condition/expression-ast.js.map +1 -0
  26. package/src/lib/condition/expression-budget.d.ts +44 -0
  27. package/src/lib/condition/expression-budget.js +61 -0
  28. package/src/lib/condition/expression-budget.js.map +1 -0
  29. package/src/lib/condition/expression-dialect.d.ts +29 -0
  30. package/src/lib/condition/expression-dialect.js +44 -0
  31. package/src/lib/condition/expression-dialect.js.map +1 -0
  32. package/src/lib/condition/expression-differential.corpus.d.ts +34 -0
  33. package/src/lib/condition/expression-differential.corpus.js +995 -0
  34. package/src/lib/condition/expression-differential.corpus.js.map +1 -0
  35. package/src/lib/condition/expression-differential.d.ts +33 -0
  36. package/src/lib/condition/expression-differential.js +48 -0
  37. package/src/lib/condition/expression-differential.js.map +1 -0
  38. package/src/lib/condition/expression-engine-failure.d.ts +15 -0
  39. package/src/lib/condition/expression-engine-failure.js +22 -0
  40. package/src/lib/condition/expression-engine-failure.js.map +1 -0
  41. package/src/lib/condition/expression-errors.d.ts +40 -0
  42. package/src/lib/condition/expression-errors.js +105 -0
  43. package/src/lib/condition/expression-errors.js.map +1 -0
  44. package/src/lib/condition/expression-function-invocation.d.ts +50 -0
  45. package/src/lib/condition/expression-function-invocation.js +290 -0
  46. package/src/lib/condition/expression-function-invocation.js.map +1 -0
  47. package/src/lib/condition/expression-result.walker.d.ts +18 -0
  48. package/src/lib/condition/expression-result.walker.js +152 -0
  49. package/src/lib/condition/expression-result.walker.js.map +1 -0
  50. package/src/lib/condition/expression-runtime.d.ts +70 -0
  51. package/src/lib/condition/expression-runtime.js +134 -0
  52. package/src/lib/condition/expression-runtime.js.map +1 -0
  53. package/src/lib/condition/index.d.ts +4 -0
  54. package/src/lib/condition/index.js +8 -0
  55. package/src/lib/condition/index.js.map +1 -1
  56. package/src/lib/delegation/delegation-rule.entity.d.ts +7 -0
  57. package/src/lib/delegation/delegation-rule.entity.js +10 -0
  58. package/src/lib/delegation/delegation-rule.entity.js.map +1 -1
  59. package/src/lib/delegation/delegation.service.d.ts +7 -1
  60. package/src/lib/delegation/delegation.service.js +22 -5
  61. package/src/lib/delegation/delegation.service.js.map +1 -1
  62. package/src/lib/delegation/dto/delegation-rule.input.d.ts +2 -0
  63. package/src/lib/delegation/dto/delegation-rule.input.js +10 -0
  64. package/src/lib/delegation/dto/delegation-rule.input.js.map +1 -1
  65. package/src/lib/expression-function/expression-function.built-ins.d.ts +9 -0
  66. package/src/lib/expression-function/expression-function.built-ins.js +117 -0
  67. package/src/lib/expression-function/expression-function.built-ins.js.map +1 -0
  68. package/src/lib/expression-function/expression-function.module.d.ts +19 -0
  69. package/src/lib/expression-function/expression-function.module.js +34 -0
  70. package/src/lib/expression-function/expression-function.module.js.map +1 -0
  71. package/src/lib/expression-function/expression-function.provider.d.ts +17 -0
  72. package/src/lib/expression-function/expression-function.provider.js +39 -0
  73. package/src/lib/expression-function/expression-function.provider.js.map +1 -0
  74. package/src/lib/expression-function/expression-function.registry.d.ts +36 -0
  75. package/src/lib/expression-function/expression-function.registry.js +231 -0
  76. package/src/lib/expression-function/expression-function.registry.js.map +1 -0
  77. package/src/lib/expression-function/expression-function.types.d.ts +30 -0
  78. package/src/lib/expression-function/expression-function.types.js +8 -0
  79. package/src/lib/expression-function/expression-function.types.js.map +1 -0
  80. package/src/lib/expression-function/index.d.ts +5 -0
  81. package/src/lib/expression-function/index.js +9 -0
  82. package/src/lib/expression-function/index.js.map +1 -0
  83. package/src/lib/form/form-schema.validator.js +53 -6
  84. package/src/lib/form/form-schema.validator.js.map +1 -1
  85. package/src/lib/form-data-source/form-data-source-value-resolver.service.d.ts +12 -1
  86. package/src/lib/form-data-source/form-data-source-value-resolver.service.js +45 -26
  87. package/src/lib/form-data-source/form-data-source-value-resolver.service.js.map +1 -1
  88. package/src/lib/form-data-source/form-data-source.expression.d.ts +95 -0
  89. package/src/lib/form-data-source/form-data-source.expression.js +267 -0
  90. package/src/lib/form-data-source/form-data-source.expression.js.map +1 -0
  91. package/src/lib/form-data-source/form-data-source.module.js +4 -0
  92. package/src/lib/form-data-source/form-data-source.module.js.map +1 -1
  93. package/src/lib/form-data-source/form-data-source.service.d.ts +22 -3
  94. package/src/lib/form-data-source/form-data-source.service.js +78 -18
  95. package/src/lib/form-data-source/form-data-source.service.js.map +1 -1
  96. package/src/lib/form-data-source/form-data-source.validation.d.ts +47 -4
  97. package/src/lib/form-data-source/form-data-source.validation.js +151 -23
  98. package/src/lib/form-data-source/form-data-source.validation.js.map +1 -1
  99. package/src/lib/migrations/0000000030000-delegation-scope-condition-dialect.d.ts +22 -0
  100. package/src/lib/migrations/0000000030000-delegation-scope-condition-dialect.js +76 -0
  101. package/src/lib/migrations/0000000030000-delegation-scope-condition-dialect.js.map +1 -0
  102. package/src/lib/migrations/index.d.ts +1 -0
  103. package/src/lib/migrations/index.js +3 -0
  104. package/src/lib/migrations/index.js.map +1 -1
  105. package/src/lib/notification/notification.service.d.ts +1 -1
  106. package/src/lib/notification/notification.service.js +7 -3
  107. package/src/lib/notification/notification.service.js.map +1 -1
  108. package/src/lib/template/dto/expression-designer.dto.d.ts +107 -0
  109. package/src/lib/template/dto/expression-designer.dto.js +415 -0
  110. package/src/lib/template/dto/expression-designer.dto.js.map +1 -0
  111. package/src/lib/template/expression-designer.queries.d.ts +16 -0
  112. package/src/lib/template/expression-designer.queries.js +66 -0
  113. package/src/lib/template/expression-designer.queries.js.map +1 -0
  114. package/src/lib/template/expression-designer.service.d.ts +72 -0
  115. package/src/lib/template/expression-designer.service.js +543 -0
  116. package/src/lib/template/expression-designer.service.js.map +1 -0
  117. package/src/lib/template/index.d.ts +2 -0
  118. package/src/lib/template/index.js +2 -0
  119. package/src/lib/template/index.js.map +1 -1
  120. package/src/lib/template/template.module.js +4 -0
  121. package/src/lib/template/template.module.js.map +1 -1
  122. package/src/lib/template/template.service.d.ts +37 -1
  123. package/src/lib/template/template.service.js +317 -29
  124. package/src/lib/template/template.service.js.map +1 -1
  125. package/src/lib/template/workflow-definition.validator.d.ts +7 -0
  126. package/src/lib/template/workflow-definition.validator.js +26 -2
  127. package/src/lib/template/workflow-definition.validator.js.map +1 -1
  128. package/src/lib/workflow-engine/time-budget.d.ts +13 -0
  129. package/src/lib/workflow-engine/time-budget.js +58 -0
  130. package/src/lib/workflow-engine/time-budget.js.map +1 -0
  131. package/src/lib/workflow-engine/workflow-engine.service.d.ts +24 -0
  132. package/src/lib/workflow-engine/workflow-engine.service.js +249 -65
  133. package/src/lib/workflow-engine/workflow-engine.service.js.map +1 -1
  134. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js +4 -0
  135. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js.map +1 -1
  136. package/src/lib/workflow-webhook/workflow-webhook-delivery.service.d.ts +3 -1
  137. package/src/lib/workflow-webhook/workflow-webhook-delivery.service.js +11 -2
  138. package/src/lib/workflow-webhook/workflow-webhook-delivery.service.js.map +1 -1
  139. package/src/lib/workflow-webhook/workflow-webhook-enqueue.d.ts +8 -1
  140. package/src/lib/workflow-webhook/workflow-webhook-enqueue.js +70 -27
  141. package/src/lib/workflow-webhook/workflow-webhook-enqueue.js.map +1 -1
  142. package/src/lib/workflow-webhook/workflow-webhook-expression.d.ts +57 -0
  143. package/src/lib/workflow-webhook/workflow-webhook-expression.js +123 -0
  144. package/src/lib/workflow-webhook/workflow-webhook-expression.js.map +1 -0
  145. package/src/lib/workflow-webhook/workflow-webhook.module.js +4 -0
  146. package/src/lib/workflow-webhook/workflow-webhook.module.js.map +1 -1
  147. package/src/lib/workflow-webhook/workflow-webhook.validator.d.ts +7 -0
  148. package/src/lib/workflow-webhook/workflow-webhook.validator.js +29 -6
  149. package/src/lib/workflow-webhook/workflow-webhook.validator.js.map +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,55 @@
1
+ ## 0.20.0 (2026-11-08)
2
+
3
+ ### 🚀 Features
4
+
5
+ - **workflow-chat:** require a BPM API session for /api/chat ([9906851](https://github.com/Rytass/BPMCore/commit/9906851))
6
+ - ⚠️ **form-data-source:** pass a binding's position explicitly and lint NOTIFY expressions ([9987b12](https://github.com/Rytass/BPMCore/commit/9987b12))
7
+ - **form-data-source:** bind DataSource and webhook parameters to expressions ([c2b18d3](https://github.com/Rytass/BPMCore/commit/c2b18d3))
8
+ - **designer:** write, preview and upgrade expressions in the designer ([ec36bb7](https://github.com/Rytass/BPMCore/commit/ec36bb7))
9
+ - **condition:** call registered functions from every evaluation and lint ([0c2a18f](https://github.com/Rytass/BPMCore/commit/0c2a18f))
10
+ - **template:** lint expressions against their AST at publish ([61d07f5](https://github.com/Rytass/BPMCore/commit/61d07f5))
11
+ - **expression-function:** register host and built-in functions ([f8763b4](https://github.com/Rytass/BPMCore/commit/f8763b4))
12
+ - **expression-function:** define the function registry contract ([31e7e16](https://github.com/Rytass/BPMCore/commit/31e7e16))
13
+ - **workflow-engine:** evaluate each definition in its expression dialect ([45b15c3](https://github.com/Rytass/BPMCore/commit/45b15c3))
14
+ - **delegation:** store the dialect of a rule's scope condition ([acea3d0](https://github.com/Rytass/BPMCore/commit/acea3d0))
15
+ - **condition:** evaluate expressions under a budget with sanitized errors ([38ef1f8](https://github.com/Rytass/BPMCore/commit/38ef1f8))
16
+
17
+ ### 🩹 Fixes
18
+
19
+ - **form-data-source:** take a new pick over an expired EXPRESSION value ([3499115](https://github.com/Rytass/BPMCore/commit/3499115))
20
+ - **condition:** check cel-v2 function argument types and log engine warm-up ([0834758](https://github.com/Rytass/BPMCore/commit/0834758))
21
+ - **workflow-engine:** send webhooks after the transaction commits ([d74aba6](https://github.com/Rytass/BPMCore/commit/d74aba6))
22
+ - **workflow-engine:** bound the work of one dry run ([7afacec](https://github.com/Rytass/BPMCore/commit/7afacec))
23
+ - **workflow-engine:** keep transaction reads on one connection ([9bd9ee7](https://github.com/Rytass/BPMCore/commit/9bd9ee7))
24
+
25
+ ### ⚠️ Breaking Changes
26
+
27
+ - **form-data-source:** pass a binding's position explicitly and lint NOTIFY expressions ([9987b12](https://github.com/Rytass/BPMCore/commit/9987b12))
28
+ FormDataSourceService.searchFormFieldOptions takes a
29
+ required position instead of optional rowValues, and the
30
+ NotifyWebhookBindingSource union gains an EXPRESSION member, so an
31
+ exhaustive switch over from.kind needs a new case.
32
+
33
+ ### ❤️ Thank You
34
+
35
+ - Chia Yu Pai @fantasywind
36
+
37
+ ## 0.19.0 (2026-11-04)
38
+
39
+ ### 🩹 Fixes
40
+
41
+ - **bpm-core:** record the field that holds a form attachment now ([f6920de](https://github.com/Rytass/BPMCore/commit/f6920de))
42
+ - **bpm-core:** read form attachments from file_upload fields only ([e9cd71a](https://github.com/Rytass/BPMCore/commit/e9cd71a))
43
+ - **bpm-core-react:** list file_upload files as the host holds them, in pick order ([20bf634](https://github.com/Rytass/BPMCore/commit/20bf634))
44
+ - **bpm-core:** refuse a form attachment the case may not take ([4710a23](https://github.com/Rytass/BPMCore/commit/4710a23))
45
+ - **bpm-core:** bind a free attachment only for the members who file the case ([ecd9d76](https://github.com/Rytass/BPMCore/commit/ecd9d76))
46
+ - **bpm-core-react:** list every attachment a file_upload value holds ([da7ee9b](https://github.com/Rytass/BPMCore/commit/da7ee9b))
47
+ - **bpm-core:** release form attachments a resubmit no longer refers to ([2580381](https://github.com/Rytass/BPMCore/commit/2580381))
48
+
49
+ ### ❤️ Thank You
50
+
51
+ - Chia Yu Pai @fantasywind
52
+
1
53
  ## 0.18.1 (2026-11-01)
2
54
 
3
55
  ### 🚀 Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rytass/bpm-core-nestjs-module",
3
- "version": "0.18.1",
3
+ "version": "0.20.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.18.1",
165
+ "@rytass/bpm-core-shared": "^0.20.0",
166
166
  "@rytass/secret-adapter-vault-nestjs": ">=0.4.5",
167
167
  "express": ">=4.0.0",
168
168
  "graphql": ">=16.0.0",
@@ -178,6 +178,7 @@
178
178
  }
179
179
  },
180
180
  "dependencies": {
181
+ "@marcbachmann/cel-js": "^8.0.0",
181
182
  "@rytass/storages": "^0.3.0",
182
183
  "@rytass/storages-adapter-local": "^0.3.0",
183
184
  "cel-js": "^0.8.2",
package/src/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * from './lib/common';
6
6
  export * from './lib/condition';
7
7
  export * from './lib/database';
8
8
  export * from './lib/delegation';
9
+ export * from './lib/expression-function';
9
10
  export * from './lib/form';
10
11
  export * from './lib/form-data-source';
11
12
  export * from './lib/identity';
package/src/index.js CHANGED
@@ -9,6 +9,7 @@ tslib_1.__exportStar(require("./lib/common"), exports);
9
9
  tslib_1.__exportStar(require("./lib/condition"), exports);
10
10
  tslib_1.__exportStar(require("./lib/database"), exports);
11
11
  tslib_1.__exportStar(require("./lib/delegation"), exports);
12
+ tslib_1.__exportStar(require("./lib/expression-function"), exports);
12
13
  tslib_1.__exportStar(require("./lib/form"), exports);
13
14
  tslib_1.__exportStar(require("./lib/form-data-source"), exports);
14
15
  tslib_1.__exportStar(require("./lib/identity"), exports);
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/bpm-core/src/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,oDAA0B;AAC1B,yDAA+B;AAC/B,yDAA+B;AAC/B,uDAA6B;AAC7B,0DAAgC;AAChC,yDAA+B;AAC/B,2DAAiC;AACjC,qDAA2B;AAC3B,iEAAuC;AACvC,yDAA+B;AAC/B,6DAAmC;AACnC,6DAAmC;AACnC,0DAAgC;AAChC,yDAA+B;AAC/B,gEAAsC;AACtC,iEAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/bpm-core/src/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,oDAA0B;AAC1B,yDAA+B;AAC/B,yDAA+B;AAC/B,uDAA6B;AAC7B,0DAAgC;AAChC,yDAA+B;AAC/B,2DAAiC;AACjC,oEAA0C;AAC1C,qDAA2B;AAC3B,iEAAuC;AACvC,yDAA+B;AAC/B,6DAAmC;AACnC,6DAAmC;AACnC,0DAAgC;AAChC,yDAA+B;AAC/B,gEAAsC;AACtC,iEAAuC"}
@@ -5,6 +5,7 @@ import { TaskDecisionEntity } from '../workflow-engine/task-decision.entity';
5
5
  import { TaskEntity } from '../workflow-engine/task.entity';
6
6
  import { AttachmentStorage } from './attachment-storage.token';
7
7
  import { BPMResolvedAttachmentOptions } from './attachment-options';
8
+ import { type FormDefinitionSchema } from '@rytass/bpm-core-shared/form';
8
9
  import { AttachmentEntity } from './attachment.entity';
9
10
  import { UploadAttachmentInput } from './dto/upload-attachment.input';
10
11
  type AttachmentDisposition = 'attachment' | 'inline';
@@ -24,10 +25,31 @@ export declare class AttachmentService {
24
25
  readonly requestedByMemberId?: string | null;
25
26
  readonly taskId?: string | null;
26
27
  }): Promise<readonly AttachmentEntity[]>;
27
- bindFormDataAttachmentsToInstance(manager: EntityManager, { formData, instanceId, }: {
28
+ bindFormDataAttachmentsToInstance(manager: EntityManager, { formData, instanceId, schema, }: {
28
29
  readonly formData: Readonly<Record<string, unknown>>;
29
30
  readonly instanceId: string;
31
+ readonly schema: FormDefinitionSchema;
30
32
  }): Promise<void>;
33
+ /**
34
+ * Releases the form attachments of an instance that its form data no
35
+ * longer refers to — a file the applicant removed from a `file_upload`
36
+ * field before resubmitting. Without it the instance's attachment list
37
+ * would keep showing a file the form no longer holds.
38
+ *
39
+ * Only attachments uploaded through a `file_upload` field
40
+ * (`formFieldPath` `form.<fieldKey>`) whose key the form data carries, and
41
+ * not tied to a task, are considered: a field the submission leaves out
42
+ * says nothing about its files, so they stay. A cleared field arrives as
43
+ * `[]` and does release them. A released attachment keeps its row and its
44
+ * uploader, and returns to `instanceId` null, the state it was in before
45
+ * the form first referred to it.
46
+ */
47
+ releaseUnreferencedFormAttachments(manager: EntityManager, { formData, instanceId, schema, }: {
48
+ readonly formData: Readonly<Record<string, unknown>>;
49
+ readonly instanceId: string;
50
+ readonly schema: FormDefinitionSchema;
51
+ }): Promise<void>;
52
+ private readInstanceFilerMemberIds;
31
53
  createSignedUrl({ disposition, id, requestOrigin, requestedByMemberId, }: {
32
54
  readonly disposition: AttachmentDisposition;
33
55
  readonly id: string;
@@ -13,6 +13,7 @@ const task_decision_entity_1 = require("../workflow-engine/task-decision.entity"
13
13
  const task_entity_1 = require("../workflow-engine/task.entity");
14
14
  const attachment_storage_token_1 = require("./attachment-storage.token");
15
15
  const attachment_options_1 = require("./attachment-options");
16
+ const form_1 = require("@rytass/bpm-core-shared/form");
16
17
  const attachment_entity_1 = require("./attachment.entity");
17
18
  const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
18
19
  let AttachmentService = class AttachmentService {
@@ -81,29 +82,112 @@ let AttachmentService = class AttachmentService {
81
82
  }));
82
83
  return readableAttachments.filter((attachment) => attachment !== null);
83
84
  }
84
- async bindFormDataAttachmentsToInstance(manager, { formData, instanceId, }) {
85
- const attachmentRefs = readAttachmentRefsFromFormData(formData);
85
+ async bindFormDataAttachmentsToInstance(manager, { formData, instanceId, schema, }) {
86
+ // Only `file_upload` values name attachments. Any other field may hold an
87
+ // id-shaped string — an org unit, a DataSource option — that is no file.
88
+ const attachmentRefs = readFileUploadAttachmentRefs(schema, formData);
86
89
  const ids = [...new Set(attachmentRefs.map((ref) => ref.id))];
87
90
  if (ids.length === 0) {
88
91
  return;
89
92
  }
90
93
  const attachmentRepository = manager.getRepository(attachment_entity_1.AttachmentEntity);
91
- const attachments = await attachmentRepository.find({
92
- where: { id: (0, typeorm_1.In)(ids) },
93
- });
94
- const refsById = new Map(attachmentRefs.map((ref) => [ref.id, ref]));
95
- const nextAttachments = attachments
96
- .filter((attachment) => attachment.instanceId === null ||
97
- attachment.instanceId === instanceId)
98
- .map((attachment) => ({
94
+ // A value that is not a UUID cannot name a row, and the column would
95
+ // reject it in the query.
96
+ const lookupIds = ids.filter((id) => UUID_PATTERN.test(id));
97
+ const attachments = lookupIds.length > 0
98
+ ? await attachmentRepository.find({ where: { id: (0, typeorm_1.In)(lookupIds) } })
99
+ : [];
100
+ const foundIds = new Set(attachments.map((attachment) => attachment.id));
101
+ const freeAttachments = attachments.filter((attachment) => attachment.instanceId === null);
102
+ // Only the people who file the instance may bring a free attachment into
103
+ // it. An id is no secret — everyone who reads a form sees the ids in it,
104
+ // and an attachment a resubmit released is free again — so without this
105
+ // anyone who had seen one could bind it to a case of their own and read it.
106
+ // Read only when there is a free attachment to judge.
107
+ const filerMemberIds = await this.readInstanceFilerMemberIds(manager, freeAttachments.length > 0 ? instanceId : null);
108
+ // Refused rather than skipped: a case that saves while leaving out a file
109
+ // its form lists is the silent loss this binding exists to prevent.
110
+ // An id with no row — a deleted file, a mistyped value — is refused the
111
+ // same way: the form would list a file the case does not hold.
112
+ const unbindableIds = [
113
+ ...ids.filter((id) => !foundIds.has(id)),
114
+ ...attachments
115
+ .filter((attachment) => attachment.instanceId === null
116
+ ? !filerMemberIds.has(attachment.uploaderMemberId)
117
+ : attachment.instanceId !== instanceId)
118
+ .map((attachment) => attachment.id),
119
+ ];
120
+ if (unbindableIds.length > 0) {
121
+ throw new common_1.BadRequestException(`${form_1.ATTACHMENT_NOT_BINDABLE_ERROR_CODE}: attachments ${unbindableIds.join(', ')} cannot be attached to this case: only files its applicant uploaded for it can be`);
122
+ }
123
+ const refsById = new Map(attachmentRefs.map((ref) => [
124
+ ref.id,
125
+ ref,
126
+ ]));
127
+ // The field that holds the file now, not the one it was first uploaded
128
+ // for: a release only looks at the fields a resubmit carries, so a stale
129
+ // path would keep a file the form no longer refers to.
130
+ const nextAttachments = attachments.map((attachment) => ({
99
131
  ...attachment,
100
- formFieldPath: attachment.formFieldPath ?? refsById.get(attachment.id)?.path ?? null,
132
+ formFieldPath: refsById.get(attachment.id)?.path ?? attachment.formFieldPath,
101
133
  instanceId,
102
134
  }));
103
135
  if (nextAttachments.length > 0) {
104
136
  await attachmentRepository.save(nextAttachments);
105
137
  }
106
138
  }
139
+ /**
140
+ * Releases the form attachments of an instance that its form data no
141
+ * longer refers to — a file the applicant removed from a `file_upload`
142
+ * field before resubmitting. Without it the instance's attachment list
143
+ * would keep showing a file the form no longer holds.
144
+ *
145
+ * Only attachments uploaded through a `file_upload` field
146
+ * (`formFieldPath` `form.<fieldKey>`) whose key the form data carries, and
147
+ * not tied to a task, are considered: a field the submission leaves out
148
+ * says nothing about its files, so they stay. A cleared field arrives as
149
+ * `[]` and does release them. A released attachment keeps its row and its
150
+ * uploader, and returns to `instanceId` null, the state it was in before
151
+ * the form first referred to it.
152
+ */
153
+ async releaseUnreferencedFormAttachments(manager, { formData, instanceId, schema, }) {
154
+ const submittedFieldPaths = new Set(readSubmittedFileUploadFieldKeys(schema, formData).map((fieldKey) => `form.${fieldKey}`));
155
+ if (submittedFieldPaths.size === 0) {
156
+ return;
157
+ }
158
+ const referencedIds = new Set(readFileUploadAttachmentRefs(schema, formData).map((ref) => ref.id));
159
+ const attachmentRepository = manager.getRepository(attachment_entity_1.AttachmentEntity);
160
+ const attachments = await attachmentRepository.find({
161
+ where: { instanceId, taskId: (0, typeorm_1.IsNull)() },
162
+ });
163
+ const released = attachments
164
+ // `instanceId` and `taskId` are settled by the query.
165
+ .filter((attachment) => attachment.formFieldPath !== null &&
166
+ submittedFieldPaths.has(attachment.formFieldPath) &&
167
+ !referencedIds.has(attachment.id))
168
+ .map((attachment) => ({
169
+ ...attachment,
170
+ instanceId: null,
171
+ }));
172
+ if (released.length > 0) {
173
+ await attachmentRepository.save(released);
174
+ }
175
+ }
176
+ async readInstanceFilerMemberIds(manager, instanceId) {
177
+ const instance = instanceId
178
+ ? await manager
179
+ .getRepository(approval_instance_entity_1.ApprovalInstanceEntity)
180
+ .findOne({ where: { id: instanceId } })
181
+ : null;
182
+ return new Set(instance
183
+ ? [
184
+ instance.initiatorMemberId,
185
+ ...(instance.submittedByMemberId
186
+ ? [instance.submittedByMemberId]
187
+ : []),
188
+ ]
189
+ : []);
190
+ }
107
191
  async createSignedUrl({ disposition, id, requestOrigin = null, requestedByMemberId, }) {
108
192
  const attachment = await this.readAttachmentOrThrow(id);
109
193
  await this.assertAttachmentReadableByMember(attachment, requestedByMemberId);
@@ -235,20 +319,23 @@ function normalizeOptionalText(value) {
235
319
  const trimmedValue = value?.trim();
236
320
  return trimmedValue ? trimmedValue : null;
237
321
  }
238
- function readAttachmentRefsFromFormData(formData) {
239
- return Object.entries(formData).flatMap(([fieldKey, value]) => readAttachmentRefsFromValue(value, `form.${fieldKey}`));
322
+ function readSubmittedFileUploadFieldKeys(schema, formData) {
323
+ return schema.fields
324
+ .filter((field) => field.type === 'file_upload' &&
325
+ Object.prototype.hasOwnProperty.call(formData, field.fieldKey))
326
+ .map((field) => field.fieldKey);
240
327
  }
241
- function readAttachmentRefsFromValue(value, path) {
242
- if (typeof value === 'string') {
243
- return UUID_PATTERN.test(value) ? [{ id: value, path }] : [];
244
- }
245
- if (Array.isArray(value)) {
246
- return value.flatMap((entry) => readAttachmentRefsFromValue(entry, path));
247
- }
248
- if (isRecord(value)) {
249
- return Object.entries(value).flatMap(([key, entry]) => readAttachmentRefsFromValue(entry, `${path}.${key}`));
250
- }
251
- return [];
328
+ function readFileUploadAttachmentRefs(schema, formData) {
329
+ return readSubmittedFileUploadFieldKeys(schema, formData).flatMap((fieldKey) => {
330
+ const value = formData[fieldKey];
331
+ const entries = Array.isArray(value)
332
+ ? value
333
+ : [value];
334
+ return (entries
335
+ // An empty value holds no file.
336
+ .filter((entry) => typeof entry === 'string' && entry !== '')
337
+ .map((id) => ({ id, path: `form.${fieldKey}` })));
338
+ });
252
339
  }
253
340
  function signAttachmentToken(payload, signedUrlSecret) {
254
341
  const body = Buffer.from(JSON.stringify(payload), 'utf8').toString('base64url');
@@ -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":"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"}
@@ -3,6 +3,7 @@ import { BPMRootAttachmentOptions } from '../attachment/attachment-options';
3
3
  import { AttachmentStorage } from '../attachment/attachment-storage.token';
4
4
  import { BPMAuthModuleOptions } from '../bpm-auth/bpm-auth.options';
5
5
  import { BPMBusinessCalendar } from '../calendar/business-calendar.token';
6
+ import type { BPMExpressionFunction } from '../expression-function/expression-function.types';
6
7
  import { BPMFormDataSourceRegistry } from '../form-data-source/form-data-source.types';
7
8
  import { BPMRootIdentityOptions } from '../identity/identity-options';
8
9
  import { BPMMemberResolver } from '../identity/member-resolver.interface';
@@ -65,6 +66,18 @@ export interface BPMRootRuntimeOptions extends BPMRootAttachmentOptions, BPMRoot
65
66
  * chain never runs through BPM's module context.
66
67
  */
67
68
  readonly businessCalendar?: BPMBusinessCalendar;
69
+ /**
70
+ * Host functions that expressions may call (ADR 22 §3.5), next to the nine
71
+ * built-ins that are always available. Each name ends in its version
72
+ * (`erp_costBand_v1`); handlers must be synchronous and pure, and only see
73
+ * deep-frozen copies of their arguments. Validated while BPM boots: a bad
74
+ * name, an async handler or an unsupported type fails the boot.
75
+ *
76
+ * Keep every function a published version still calls: once one is gone,
77
+ * cases on that version fail closed with `EXPRESSION_FUNCTION_FAILED`.
78
+ * When omitted, only the built-ins are available.
79
+ */
80
+ readonly expressionFunctions?: readonly BPMExpressionFunction[];
68
81
  /**
69
82
  * Versioned form option DataSource catalog, as a ready instance. When
70
83
  * omitted, BPM exposes an empty catalog.
@@ -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,2CAMwB;AASxB,mFAGgD;AA0GhD;;;;;;;;;;;GAWG;AACU,QAAA,gBAAgB,GAC3B,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAoB7B;;;;;;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"}
1
+ {"version":3,"file":"bpm-root-options.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/bpm/bpm-root-options.ts"],"names":[],"mappings":";;;;;AAAA,2CAMwB;AAUxB,mFAGgD;AAuHhD;;;;;;;;;;;GAWG;AACU,QAAA,gBAAgB,GAC3B,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAoB7B;;;;;;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"}
@@ -2,6 +2,7 @@ import { DynamicModule, InjectionToken, ModuleMetadata, Provider } from '@nestjs
2
2
  import { AttachmentStorage } from '../attachment/attachment-storage.token';
3
3
  import { BPMResolverMetadataFactory } from '../bpm-auth/bpm-resolver-metadata';
4
4
  import { BPMBusinessCalendar } from '../calendar/business-calendar.token';
5
+ import type { BPMExpressionFunction } from '../expression-function/expression-function.types';
5
6
  import { BPMFormDataSourceRegistry } from '../form-data-source';
6
7
  import { BPMMemberResolver } from '../identity/member-resolver.interface';
7
8
  import { BPMWorkflowWebhookRegistry } from '../workflow-webhook/workflow-webhook.types';
@@ -40,6 +41,17 @@ interface BPMRootModuleWiringOptions extends Pick<ModuleMetadata, 'imports'> {
40
41
  * `notificationSlaBusinessCalendarTimeZone`).
41
42
  */
42
43
  readonly businessCalendarProvider?: Provider<BPMBusinessCalendar>;
44
+ /**
45
+ * Host expression functions as a Nest provider for
46
+ * `BPM_EXPRESSION_FUNCTIONS` (a list), for functions that need injected
47
+ * dependencies to be built.
48
+ *
49
+ * Runtime twin: {@link BPMRootRuntimeOptions.expressionFunctions}. Unlike
50
+ * the other twins the two are **combined**, the runtime list first; a name
51
+ * in both fails the boot. When neither is given, only the nine built-ins are
52
+ * available.
53
+ */
54
+ readonly expressionFunctionsProvider?: Provider<readonly BPMExpressionFunction[]>;
43
55
  /**
44
56
  * Host-provided registry containing versioned form option DataSources, as a
45
57
  * Nest provider.
@@ -9,6 +9,7 @@ const bpm_auth_module_1 = require("../bpm-auth/bpm-auth.module");
9
9
  const bpm_resolver_metadata_1 = require("../bpm-auth/bpm-resolver-metadata");
10
10
  const calendar_module_1 = require("../calendar/calendar.module");
11
11
  const delegation_module_1 = require("../delegation/delegation.module");
12
+ const expression_function_module_1 = require("../expression-function/expression-function.module");
12
13
  const form_module_1 = require("../form/form.module");
13
14
  const form_data_source_1 = require("../form-data-source");
14
15
  const identity_module_1 = require("../identity/identity.module");
@@ -141,6 +142,10 @@ function createBPMFeatureModules(wiring) {
141
142
  storageProvider: wiring.attachmentStorageProvider,
142
143
  useFactory,
143
144
  }),
145
+ expression_function_module_1.ExpressionFunctionModule.forRoot({
146
+ functionsProvider: wiring.expressionFunctionsProvider,
147
+ imports: wiring.imports,
148
+ }),
144
149
  form_module_1.FormModule,
145
150
  form_data_source_1.FormDataSourceModule.forRoot({
146
151
  imports: wiring.imports,
@@ -1 +1 @@
1
- {"version":3,"file":"bpm-root.module.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/bpm/bpm-root.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bpm-root.module.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/bpm/bpm-root.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { ParseResult } from 'cel-js';
2
+ import type { BPMExpressionFunctionRegistry } from '../../expression-function/expression-function.types';
3
+ import type { ExpressionEngineAdapter, ExpressionHandle } from '../expression-runtime';
4
+ type CelLegacyFunction = (...args: readonly unknown[]) => unknown;
5
+ /**
6
+ * The slice of `cel-js` this adapter uses. The third `evaluate` argument is
7
+ * the function table: `cel-js` 0.8.2 merges it over its own `has` and `size`
8
+ * and calls an entry for every global call (`round(x)`), with the evaluated
9
+ * arguments. Methods (`x.round()`) never reach it.
10
+ */
11
+ interface CelEngine {
12
+ readonly evaluate: (cst: unknown, context: Readonly<Record<string, unknown>>, functions?: Readonly<Record<string, CelLegacyFunction>>) => unknown;
13
+ readonly parse: (expression: string) => ParseResult;
14
+ }
15
+ /**
16
+ * Loads `cel-js` on first use rather than when this module is imported.
17
+ *
18
+ * `cel-js` is ESM-only and its `chevrotain` dependency ships an exports map
19
+ * that `jest-resolve` cannot follow. While the import sat at the top of this
20
+ * file, the package root pulled it in through
21
+ * `index → bpm-root → delegation → condition`, so *any* consumer test that
22
+ * imported anything from `@rytass/bpm-core-nestjs-module` failed to load with
23
+ * `Cannot find module 'chevrotain'` — pointing deep into `node_modules`, far
24
+ * from the code under test. Hosts had to stub `cel-js` before they could write
25
+ * a single test.
26
+ *
27
+ * Deferring the load means a host that never evaluates a CEL expression never
28
+ * resolves the package at all. `require` (not `await import`) keeps every
29
+ * caller in this file synchronous.
30
+ *
31
+ * The engine is loaded before a budget starts, so an interrupt can never land
32
+ * halfway through loading a module.
33
+ */
34
+ export declare function loadCelEngine(): CelEngine;
35
+ /**
36
+ * Parses with `cel-js`. Returns `null` when the expression does not parse.
37
+ *
38
+ * `cel-js` can throw instead of reporting failure: a deeply nested expression
39
+ * (about 200 levels, still under the length limit) overflows the parser's stack
40
+ * with a bare `RangeError`. That is a syntax refusal, not a crash, so it maps to
41
+ * `null`. The engine is loaded outside the `try`: a failure to load it is a
42
+ * configuration error and must not be reported as a bad expression.
43
+ */
44
+ export declare function parseCelLegacy(expression: string): ExpressionHandle | null;
45
+ /**
46
+ * The function table handed to `cel-js` for a registry, built once: every
47
+ * function the registry lists, wrapped for cel-legacy. Verified on the real
48
+ * engine (2026-11-07): `cel-js` 0.8.2 accepts the table and calls it.
49
+ *
50
+ * Exported so `ConditionService.prepareEngine` can build it before a budget
51
+ * starts; otherwise the first evaluation builds it inside its budget.
52
+ */
53
+ export declare const readCelLegacyFunctions: (registry: BPMExpressionFunctionRegistry) => Readonly<Record<string, CelLegacyFunction>>;
54
+ /**
55
+ * The cel-legacy adapter for a registry. A host function the registry no
56
+ * longer has fails the evaluation with `EXPRESSION_FUNCTION_FAILED` before the
57
+ * engine runs; any other unknown name keeps `cel-js`'s own error.
58
+ */
59
+ export declare const createCelLegacyAdapter: (registry: BPMExpressionFunctionRegistry) => ExpressionEngineAdapter;
60
+ /** The built-ins-only adapter, used wherever no registry was handed in. */
61
+ export declare const celLegacyAdapter: ExpressionEngineAdapter;
62
+ export {};