@nocobase/plugin-flow-engine 2.1.0-alpha.15 → 2.1.0-alpha.17

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 (116) hide show
  1. package/dist/externalVersion.js +10 -10
  2. package/dist/node_modules/ses/package.json +1 -1
  3. package/dist/node_modules/zod/package.json +1 -1
  4. package/dist/server/flow-surfaces/{compiler.d.ts → apply/compiler.d.ts} +1 -10
  5. package/dist/server/flow-surfaces/{compiler.js → apply/compiler.js} +41 -280
  6. package/dist/server/flow-surfaces/apply/layout.d.ts +34 -0
  7. package/dist/server/flow-surfaces/apply/layout.js +175 -0
  8. package/dist/server/flow-surfaces/apply/matching.d.ts +16 -0
  9. package/dist/server/flow-surfaces/apply/matching.js +181 -0
  10. package/dist/server/flow-surfaces/association-title-field.d.ts +20 -0
  11. package/dist/server/flow-surfaces/association-title-field.js +158 -0
  12. package/dist/server/flow-surfaces/blueprint/compile-blocks.d.ts +14 -0
  13. package/dist/server/flow-surfaces/blueprint/compile-blocks.js +717 -0
  14. package/dist/server/flow-surfaces/blueprint/compile-plan.d.ts +13 -0
  15. package/dist/server/flow-surfaces/blueprint/compile-plan.js +308 -0
  16. package/dist/server/flow-surfaces/blueprint/compile-reaction.d.ts +11 -0
  17. package/dist/server/flow-surfaces/blueprint/compile-reaction.js +72 -0
  18. package/dist/server/flow-surfaces/blueprint/index.d.ts +12 -0
  19. package/dist/server/flow-surfaces/blueprint/index.js +44 -0
  20. package/dist/server/flow-surfaces/blueprint/normalize-document.d.ts +10 -0
  21. package/dist/server/flow-surfaces/blueprint/normalize-document.js +296 -0
  22. package/dist/server/flow-surfaces/blueprint/private-utils.d.ts +26 -0
  23. package/dist/server/flow-surfaces/blueprint/private-utils.js +182 -0
  24. package/dist/server/flow-surfaces/blueprint/public-types.d.ts +153 -0
  25. package/dist/server/flow-surfaces/blueprint/public-types.js +24 -0
  26. package/dist/server/flow-surfaces/catalog-smart.d.ts +18 -0
  27. package/dist/server/flow-surfaces/catalog-smart.js +239 -0
  28. package/dist/server/flow-surfaces/catalog-smart.projector.d.ts +15 -0
  29. package/dist/server/flow-surfaces/catalog-smart.projector.js +157 -0
  30. package/dist/server/flow-surfaces/catalog-smart.types.d.ts +99 -0
  31. package/dist/server/flow-surfaces/catalog-smart.types.js +24 -0
  32. package/dist/server/flow-surfaces/catalog.d.ts +3 -0
  33. package/dist/server/flow-surfaces/catalog.js +163 -34
  34. package/dist/server/flow-surfaces/compose-compiler.d.ts +104 -0
  35. package/dist/server/flow-surfaces/compose-compiler.js +162 -0
  36. package/dist/server/flow-surfaces/compose-runtime.d.ts +89 -0
  37. package/dist/server/flow-surfaces/compose-runtime.js +338 -0
  38. package/dist/server/flow-surfaces/configure-options.js +12 -3
  39. package/dist/server/flow-surfaces/constants.d.ts +3 -2
  40. package/dist/server/flow-surfaces/constants.js +36 -3
  41. package/dist/server/flow-surfaces/default-action-popup.d.ts +52 -0
  42. package/dist/server/flow-surfaces/default-action-popup.js +258 -0
  43. package/dist/server/flow-surfaces/executor.d.ts +10 -0
  44. package/dist/server/flow-surfaces/executor.js +59 -24
  45. package/dist/server/flow-surfaces/field-binding-registry.d.ts +23 -0
  46. package/dist/server/flow-surfaces/field-binding-registry.js +391 -0
  47. package/dist/server/flow-surfaces/field-semantics.d.ts +1 -1
  48. package/dist/server/flow-surfaces/index.js +75 -0
  49. package/dist/server/flow-surfaces/node-use-sets.d.ts +15 -0
  50. package/dist/server/flow-surfaces/node-use-sets.js +114 -0
  51. package/dist/server/flow-surfaces/payload-shape.d.ts +9 -0
  52. package/dist/server/flow-surfaces/payload-shape.js +61 -0
  53. package/dist/server/flow-surfaces/placement.js +2 -6
  54. package/dist/server/flow-surfaces/planning/action-specs.d.ts +179 -0
  55. package/dist/server/flow-surfaces/planning/action-specs.js +190 -0
  56. package/dist/server/flow-surfaces/planning/compiler.d.ts +37 -0
  57. package/dist/server/flow-surfaces/planning/compiler.js +376 -0
  58. package/dist/server/flow-surfaces/planning/context.d.ts +30 -0
  59. package/dist/server/flow-surfaces/planning/context.js +139 -0
  60. package/dist/server/flow-surfaces/planning/created-keys.d.ts +34 -0
  61. package/dist/server/flow-surfaces/planning/created-keys.js +375 -0
  62. package/dist/server/flow-surfaces/planning/key-kind.d.ts +11 -0
  63. package/dist/server/flow-surfaces/planning/key-kind.js +86 -0
  64. package/dist/server/flow-surfaces/planning/key-persistence.d.ts +34 -0
  65. package/dist/server/flow-surfaces/planning/key-persistence.js +148 -0
  66. package/dist/server/flow-surfaces/planning/key-registry.d.ts +40 -0
  67. package/dist/server/flow-surfaces/planning/key-registry.js +206 -0
  68. package/dist/server/flow-surfaces/planning/runtime.d.ts +37 -0
  69. package/dist/server/flow-surfaces/planning/runtime.js +259 -0
  70. package/dist/server/flow-surfaces/planning/step-link.d.ts +14 -0
  71. package/dist/server/flow-surfaces/planning/step-link.js +104 -0
  72. package/dist/server/flow-surfaces/planning/types.d.ts +55 -0
  73. package/dist/server/flow-surfaces/planning/types.js +24 -0
  74. package/dist/server/flow-surfaces/reaction/errors.d.ts +20 -0
  75. package/dist/server/flow-surfaces/reaction/errors.js +69 -0
  76. package/dist/server/flow-surfaces/reaction/field-value.d.ts +34 -0
  77. package/dist/server/flow-surfaces/reaction/field-value.js +181 -0
  78. package/dist/server/flow-surfaces/reaction/fingerprint.d.ts +16 -0
  79. package/dist/server/flow-surfaces/reaction/fingerprint.js +71 -0
  80. package/dist/server/flow-surfaces/reaction/linkage.d.ts +136 -0
  81. package/dist/server/flow-surfaces/reaction/linkage.js +882 -0
  82. package/dist/server/flow-surfaces/reaction/meta.d.ts +11 -0
  83. package/dist/server/flow-surfaces/reaction/meta.js +451 -0
  84. package/dist/server/flow-surfaces/reaction/registry.d.ts +136 -0
  85. package/dist/server/flow-surfaces/reaction/registry.js +186 -0
  86. package/dist/server/flow-surfaces/reaction/resolver.d.ts +22 -0
  87. package/dist/server/flow-surfaces/reaction/resolver.js +202 -0
  88. package/dist/server/flow-surfaces/reaction/types.d.ts +241 -0
  89. package/dist/server/flow-surfaces/reaction/types.js +24 -0
  90. package/dist/server/flow-surfaces/reaction/utils.d.ts +17 -0
  91. package/dist/server/flow-surfaces/reaction/utils.js +67 -0
  92. package/dist/server/flow-surfaces/reaction/value-expr.d.ts +15 -0
  93. package/dist/server/flow-surfaces/reaction/value-expr.js +209 -0
  94. package/dist/server/flow-surfaces/reference-guards.d.ts +19 -0
  95. package/dist/server/flow-surfaces/reference-guards.js +103 -0
  96. package/dist/server/flow-surfaces/service-helpers.d.ts +42 -0
  97. package/dist/server/flow-surfaces/service-helpers.js +377 -0
  98. package/dist/server/flow-surfaces/service-utils.d.ts +105 -0
  99. package/dist/server/flow-surfaces/service-utils.js +760 -0
  100. package/dist/server/flow-surfaces/service.d.ts +199 -104
  101. package/dist/server/flow-surfaces/service.js +4158 -1890
  102. package/dist/server/flow-surfaces/template-compatibility.d.ts +42 -0
  103. package/dist/server/flow-surfaces/template-compatibility.js +189 -0
  104. package/dist/server/flow-surfaces/template-service-utils.d.ts +62 -0
  105. package/dist/server/flow-surfaces/template-service-utils.js +281 -0
  106. package/dist/server/flow-surfaces/types.d.ts +129 -37
  107. package/dist/swagger/flow-surfaces.d.ts +3777 -1581
  108. package/dist/swagger/flow-surfaces.examples.d.ts +1246 -0
  109. package/dist/swagger/flow-surfaces.examples.js +1396 -0
  110. package/dist/swagger/flow-surfaces.js +2020 -1469
  111. package/dist/swagger/flow-surfaces.template-action-docs.d.ts +62 -0
  112. package/dist/swagger/flow-surfaces.template-action-docs.js +121 -0
  113. package/dist/swagger/flow-surfaces.template-schemas.d.ts +239 -0
  114. package/dist/swagger/flow-surfaces.template-schemas.js +255 -0
  115. package/dist/swagger/index.d.ts +3777 -1581
  116. package/package.json +2 -2
@@ -0,0 +1,391 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __export = (target, all) => {
15
+ for (var name in all)
16
+ __defProp(target, name, { get: all[name], enumerable: true });
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") {
20
+ for (let key of __getOwnPropNames(from))
21
+ if (!__hasOwnProp.call(to, key) && key !== except)
22
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
+ }
24
+ return to;
25
+ };
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var field_binding_registry_exports = {};
28
+ __export(field_binding_registry_exports, {
29
+ getRegisteredFieldUses: () => getRegisteredFieldUses,
30
+ resolveRegisteredFieldBinding: () => resolveRegisteredFieldBinding
31
+ });
32
+ module.exports = __toCommonJS(field_binding_registry_exports);
33
+ var import_field_semantics = require("./field-semantics");
34
+ var import_service_helpers = require("./service-helpers");
35
+ const FILE_MANAGER_PLUGIN = "@nocobase/plugin-file-manager";
36
+ const ATTACHMENT_URL_PLUGIN = "@nocobase/plugin-field-attachment-url";
37
+ const CODE_PLUGIN = "@nocobase/plugin-field-code";
38
+ const FORMULA_PLUGIN = "@nocobase/plugin-field-formula";
39
+ const CHINA_REGION_PLUGIN = "@nocobase/plugin-field-china-region";
40
+ const MAP_PLUGIN = "@nocobase/plugin-map";
41
+ const MARKDOWN_VDITOR_PLUGIN = "@nocobase/plugin-field-markdown-vditor";
42
+ const SORT_PLUGIN = "@nocobase/plugin-field-sort";
43
+ function getCollectionTemplate(collection) {
44
+ var _a;
45
+ return (collection == null ? void 0 : collection.template) || ((_a = collection == null ? void 0 : collection.options) == null ? void 0 : _a.template);
46
+ }
47
+ function isAttachmentInterface(field) {
48
+ return String((0, import_service_helpers.getFieldInterface)(field) || "").trim() === "attachment";
49
+ }
50
+ function getFieldDataType(field) {
51
+ var _a;
52
+ return (field == null ? void 0 : field.dataType) || ((_a = field == null ? void 0 : field.options) == null ? void 0 : _a.dataType);
53
+ }
54
+ function isNumericFormulaDataType(dataType) {
55
+ return ["integer", "bigInt", "double", "decimal", "number"].includes(String(dataType || "").trim());
56
+ }
57
+ function resolveTargetCollection(input) {
58
+ var _a;
59
+ if ((_a = input.field) == null ? void 0 : _a.targetCollection) {
60
+ return input.field.targetCollection;
61
+ }
62
+ if (!input.getCollection || !input.dataSourceKey) {
63
+ return null;
64
+ }
65
+ return (0, import_service_helpers.resolveFieldTargetCollection)(input.field, input.dataSourceKey, input.getCollection);
66
+ }
67
+ function normalizeBindingContainerUse(containerUse) {
68
+ const normalized = String(containerUse || "").trim();
69
+ if (normalized === "FormAssociationItemModel") {
70
+ return "DetailsItemModel";
71
+ }
72
+ return normalized;
73
+ }
74
+ function resolveBindingScope(containerUse) {
75
+ switch ((0, import_field_semantics.normalizeFieldContainerKind)(normalizeBindingContainerUse(containerUse))) {
76
+ case "table":
77
+ case "details":
78
+ return "display";
79
+ case "form":
80
+ return "editable";
81
+ case "filter-form":
82
+ return "filter";
83
+ default:
84
+ return null;
85
+ }
86
+ }
87
+ function isRuleAvailable(rule, enabledPackages) {
88
+ if (!rule.ownerPlugin || !enabledPackages) {
89
+ return true;
90
+ }
91
+ return enabledPackages.has(rule.ownerPlugin);
92
+ }
93
+ function selectPreferredDefaultRule(rules) {
94
+ if (!rules.length) {
95
+ return null;
96
+ }
97
+ return rules.find((rule) => typeof rule.when === "function") || rules[0];
98
+ }
99
+ const FIELD_BINDING_RULE_DEFINITIONS = [
100
+ {
101
+ scope: "display",
102
+ modelClassName: "DisplayPreviewFieldModel",
103
+ interfaces: ["url", "attachment", "attachmentURL", "m2m", "m2o", "o2o", "o2m", "oho", "obo", "mbm"],
104
+ ownerPlugin: FILE_MANAGER_PLUGIN,
105
+ isDefault: true,
106
+ when: ({ field, targetCollection }) => isAttachmentInterface(field) || !targetCollection || getCollectionTemplate(targetCollection) === "file"
107
+ },
108
+ {
109
+ scope: "editable",
110
+ modelClassName: "UploadFieldModel",
111
+ interfaces: ["attachment", "m2m", "m2o", "o2o", "o2m", "oho", "obo", "updatedBy", "createdBy", "mbm"],
112
+ ownerPlugin: FILE_MANAGER_PLUGIN,
113
+ isDefault: true,
114
+ order: 30,
115
+ when: ({ field, targetCollection }) => isAttachmentInterface(field) || !targetCollection || getCollectionTemplate(targetCollection) === "file"
116
+ },
117
+ {
118
+ scope: "editable",
119
+ modelClassName: "AttachmentURLFieldModel",
120
+ interfaces: ["attachmentURL"],
121
+ ownerPlugin: ATTACHMENT_URL_PLUGIN,
122
+ isDefault: true
123
+ },
124
+ {
125
+ scope: "display",
126
+ modelClassName: "DisplayTextFieldModel",
127
+ interfaces: ["attachmentURL"],
128
+ ownerPlugin: ATTACHMENT_URL_PLUGIN,
129
+ isDefault: true
130
+ },
131
+ {
132
+ scope: "editable",
133
+ modelClassName: "CodeFieldModel",
134
+ interfaces: ["code"],
135
+ ownerPlugin: CODE_PLUGIN,
136
+ isDefault: true
137
+ },
138
+ {
139
+ scope: "display",
140
+ modelClassName: "DisplayCodeFieldModel",
141
+ interfaces: ["code"],
142
+ ownerPlugin: CODE_PLUGIN,
143
+ isDefault: true
144
+ },
145
+ {
146
+ scope: "filter",
147
+ modelClassName: "InputFieldModel",
148
+ interfaces: ["code"],
149
+ ownerPlugin: CODE_PLUGIN,
150
+ isDefault: true
151
+ },
152
+ {
153
+ scope: "editable",
154
+ modelClassName: "VditorFieldModel",
155
+ interfaces: ["vditor", "markdown"],
156
+ ownerPlugin: MARKDOWN_VDITOR_PLUGIN,
157
+ isDefault: true
158
+ },
159
+ {
160
+ scope: "display",
161
+ modelClassName: "DisplayVditorFieldModel",
162
+ interfaces: ["vditor", "markdown"],
163
+ ownerPlugin: MARKDOWN_VDITOR_PLUGIN,
164
+ isDefault: true
165
+ },
166
+ {
167
+ scope: "editable",
168
+ modelClassName: "ChinaRegionFieldModel",
169
+ interfaces: ["chinaRegion"],
170
+ ownerPlugin: CHINA_REGION_PLUGIN,
171
+ isDefault: true
172
+ },
173
+ {
174
+ scope: "display",
175
+ modelClassName: "DisplayChinaRegionFieldModel",
176
+ interfaces: ["chinaRegion"],
177
+ ownerPlugin: CHINA_REGION_PLUGIN,
178
+ isDefault: true
179
+ },
180
+ {
181
+ scope: "editable",
182
+ modelClassName: "SortFieldModel",
183
+ interfaces: ["sort"],
184
+ ownerPlugin: SORT_PLUGIN,
185
+ isDefault: true
186
+ },
187
+ {
188
+ scope: "display",
189
+ modelClassName: "DisplayNumberFieldModel",
190
+ interfaces: ["sort"],
191
+ ownerPlugin: SORT_PLUGIN,
192
+ isDefault: true
193
+ },
194
+ {
195
+ scope: "editable",
196
+ modelClassName: "PointFieldModel",
197
+ interfaces: ["point"],
198
+ ownerPlugin: MAP_PLUGIN,
199
+ isDefault: true
200
+ },
201
+ {
202
+ scope: "editable",
203
+ modelClassName: "CircleFieldModel",
204
+ interfaces: ["circle"],
205
+ ownerPlugin: MAP_PLUGIN,
206
+ isDefault: true
207
+ },
208
+ {
209
+ scope: "editable",
210
+ modelClassName: "PolygonFieldModel",
211
+ interfaces: ["polygon"],
212
+ ownerPlugin: MAP_PLUGIN,
213
+ isDefault: true
214
+ },
215
+ {
216
+ scope: "editable",
217
+ modelClassName: "LineStringFieldModel",
218
+ interfaces: ["lineString"],
219
+ ownerPlugin: MAP_PLUGIN,
220
+ isDefault: true
221
+ },
222
+ {
223
+ scope: "display",
224
+ modelClassName: "DisplayPointFieldModel",
225
+ interfaces: ["point"],
226
+ ownerPlugin: MAP_PLUGIN,
227
+ isDefault: true
228
+ },
229
+ {
230
+ scope: "display",
231
+ modelClassName: "DisplayCircleFieldModel",
232
+ interfaces: ["circle"],
233
+ ownerPlugin: MAP_PLUGIN,
234
+ isDefault: true
235
+ },
236
+ {
237
+ scope: "display",
238
+ modelClassName: "DisplayPolygonFieldModel",
239
+ interfaces: ["polygon"],
240
+ ownerPlugin: MAP_PLUGIN,
241
+ isDefault: true
242
+ },
243
+ {
244
+ scope: "display",
245
+ modelClassName: "DisplayLineStringFieldModel",
246
+ interfaces: ["lineString"],
247
+ ownerPlugin: MAP_PLUGIN,
248
+ isDefault: true
249
+ },
250
+ {
251
+ scope: "editable",
252
+ modelClassName: "FormulaFieldModel",
253
+ interfaces: ["formula"],
254
+ ownerPlugin: FORMULA_PLUGIN,
255
+ isDefault: true
256
+ },
257
+ {
258
+ scope: "display",
259
+ modelClassName: "DisplayCheckboxFieldModel",
260
+ interfaces: ["formula"],
261
+ ownerPlugin: FORMULA_PLUGIN,
262
+ isDefault: true,
263
+ when: ({ field }) => getFieldDataType(field) === "boolean"
264
+ },
265
+ {
266
+ scope: "display",
267
+ modelClassName: "DisplayDateTimeFieldModel",
268
+ interfaces: ["formula"],
269
+ ownerPlugin: FORMULA_PLUGIN,
270
+ isDefault: true,
271
+ when: ({ field }) => getFieldDataType(field) === "date"
272
+ },
273
+ {
274
+ scope: "display",
275
+ modelClassName: "DisplayTextFieldModel",
276
+ interfaces: ["formula"],
277
+ ownerPlugin: FORMULA_PLUGIN,
278
+ isDefault: true,
279
+ when: ({ field }) => getFieldDataType(field) === "string"
280
+ },
281
+ {
282
+ scope: "display",
283
+ modelClassName: "DisplayNumberFieldModel",
284
+ interfaces: ["formula"],
285
+ ownerPlugin: FORMULA_PLUGIN,
286
+ isDefault: true,
287
+ when: ({ field }) => ["double", "bigInt", "integer"].includes(String(getFieldDataType(field) || "").trim())
288
+ },
289
+ {
290
+ scope: "filter",
291
+ modelClassName: "InputFieldModel",
292
+ interfaces: ["formula"],
293
+ ownerPlugin: FORMULA_PLUGIN,
294
+ when: ({ field }) => {
295
+ const dataType = String(getFieldDataType(field) || "").trim();
296
+ return !["date", "boolean", "integer", "bigInt", "double", "decimal", "number"].includes(dataType);
297
+ }
298
+ },
299
+ {
300
+ scope: "filter",
301
+ modelClassName: "DateTimeFilterFieldModel",
302
+ interfaces: ["formula"],
303
+ ownerPlugin: FORMULA_PLUGIN,
304
+ when: ({ field }) => getFieldDataType(field) === "date"
305
+ },
306
+ {
307
+ scope: "filter",
308
+ modelClassName: "CheckboxFieldModel",
309
+ interfaces: ["formula"],
310
+ ownerPlugin: FORMULA_PLUGIN,
311
+ when: ({ field }) => getFieldDataType(field) === "boolean"
312
+ },
313
+ {
314
+ scope: "filter",
315
+ modelClassName: "NumberFieldModel",
316
+ interfaces: ["formula"],
317
+ ownerPlugin: FORMULA_PLUGIN,
318
+ when: ({ field }) => isNumericFormulaDataType(getFieldDataType(field))
319
+ }
320
+ ];
321
+ const FIELD_BINDING_RULES = FIELD_BINDING_RULE_DEFINITIONS.map((rule, index) => ({
322
+ ...rule,
323
+ index
324
+ }));
325
+ function getRegisteredFieldUses(scope, enabledPackages) {
326
+ const uses = /* @__PURE__ */ new Set();
327
+ FIELD_BINDING_RULES.forEach((rule) => {
328
+ if (scope && rule.scope !== scope) {
329
+ return;
330
+ }
331
+ if (!isRuleAvailable(rule, enabledPackages)) {
332
+ return;
333
+ }
334
+ uses.add(rule.modelClassName);
335
+ });
336
+ return uses;
337
+ }
338
+ function resolveRegisteredFieldBinding(input) {
339
+ const scope = resolveBindingScope(input.containerUse);
340
+ const fieldInterface = String((0, import_service_helpers.getFieldInterface)(input.field) || "").trim();
341
+ if (!scope || !fieldInterface) {
342
+ return null;
343
+ }
344
+ const targetCollection = resolveTargetCollection(input);
345
+ const candidates = FIELD_BINDING_RULES.filter((rule) => {
346
+ if (rule.scope !== scope) {
347
+ return false;
348
+ }
349
+ if (!rule.interfaces.includes(fieldInterface)) {
350
+ return false;
351
+ }
352
+ if (!isRuleAvailable(rule, input.enabledPackages)) {
353
+ return false;
354
+ }
355
+ if (!rule.when) {
356
+ return true;
357
+ }
358
+ return rule.when({
359
+ ...input,
360
+ targetCollection
361
+ });
362
+ }).sort((a, b) => {
363
+ const orderDelta = Number(a.order || 0) - Number(b.order || 0);
364
+ return orderDelta || a.index - b.index;
365
+ });
366
+ const defaultRule = selectPreferredDefaultRule(candidates.filter((rule) => rule.isDefault));
367
+ if (defaultRule) {
368
+ return {
369
+ modelClassName: defaultRule.modelClassName,
370
+ ownerPlugin: defaultRule.ownerPlugin,
371
+ isDefault: true
372
+ };
373
+ }
374
+ if (input.useStrictOnly) {
375
+ return null;
376
+ }
377
+ const fallbackRule = candidates[0];
378
+ if (!fallbackRule) {
379
+ return null;
380
+ }
381
+ return {
382
+ modelClassName: fallbackRule.modelClassName,
383
+ ownerPlugin: fallbackRule.ownerPlugin,
384
+ isDefault: !!fallbackRule.isDefault
385
+ };
386
+ }
387
+ // Annotate the CommonJS export names for ESM import in node:
388
+ 0 && (module.exports = {
389
+ getRegisteredFieldUses,
390
+ resolveRegisteredFieldBinding
391
+ });
@@ -7,7 +7,7 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
  export declare const MULTI_VALUE_ASSOCIATION_INTERFACES: Set<string>;
10
- export declare function normalizeFieldContainerKind(containerUse?: string): "form" | "details" | "filter-form" | "table";
10
+ export declare function normalizeFieldContainerKind(containerUse?: string): "form" | "details" | "table" | "filter-form";
11
11
  export declare function shouldUseAssociationTitleTextDisplay(input: {
12
12
  containerUse?: string;
13
13
  associationPathName?: string;
@@ -142,6 +142,81 @@ function registerFlowSurfacesResource(plugin) {
142
142
  get: async (ctx, next) => {
143
143
  await runFlowSurfaceAction(ctx, next, () => service.get(getReadValues(ctx)));
144
144
  },
145
+ describeSurface: async (ctx, next) => {
146
+ await runFlowSurfaceAction(ctx, next, () => service.describeSurface(getValues(ctx)));
147
+ },
148
+ getReactionMeta: async (ctx, next) => {
149
+ await runFlowSurfaceAction(ctx, next, () => service.getReactionMeta(getValues(ctx)));
150
+ },
151
+ setFieldValueRules: async (ctx, next) => {
152
+ await runFlowSurfaceAction(
153
+ ctx,
154
+ next,
155
+ () => service.transaction((transaction) => service.setFieldValueRules(getValues(ctx), { transaction }))
156
+ );
157
+ },
158
+ setBlockLinkageRules: async (ctx, next) => {
159
+ await runFlowSurfaceAction(
160
+ ctx,
161
+ next,
162
+ () => service.transaction((transaction) => service.setBlockLinkageRules(getValues(ctx), { transaction }))
163
+ );
164
+ },
165
+ setFieldLinkageRules: async (ctx, next) => {
166
+ await runFlowSurfaceAction(
167
+ ctx,
168
+ next,
169
+ () => service.transaction((transaction) => service.setFieldLinkageRules(getValues(ctx), { transaction }))
170
+ );
171
+ },
172
+ setActionLinkageRules: async (ctx, next) => {
173
+ await runFlowSurfaceAction(
174
+ ctx,
175
+ next,
176
+ () => service.transaction((transaction) => service.setActionLinkageRules(getValues(ctx), { transaction }))
177
+ );
178
+ },
179
+ applyBlueprint: async (ctx, next) => {
180
+ await runFlowSurfaceAction(
181
+ ctx,
182
+ next,
183
+ () => service.transaction((transaction) => service.applyBlueprint(getValues(ctx), { transaction }))
184
+ );
185
+ },
186
+ listTemplates: async (ctx, next) => {
187
+ await runFlowSurfaceAction(ctx, next, () => service.listTemplates(getValues(ctx)));
188
+ },
189
+ getTemplate: async (ctx, next) => {
190
+ await runFlowSurfaceAction(ctx, next, () => service.getTemplate(getValues(ctx)));
191
+ },
192
+ saveTemplate: async (ctx, next) => {
193
+ await runFlowSurfaceAction(
194
+ ctx,
195
+ next,
196
+ () => service.transaction((transaction) => service.saveTemplate(getValues(ctx), { transaction }))
197
+ );
198
+ },
199
+ updateTemplate: async (ctx, next) => {
200
+ await runFlowSurfaceAction(
201
+ ctx,
202
+ next,
203
+ () => service.transaction((transaction) => service.updateTemplate(getValues(ctx), { transaction }))
204
+ );
205
+ },
206
+ destroyTemplate: async (ctx, next) => {
207
+ await runFlowSurfaceAction(
208
+ ctx,
209
+ next,
210
+ () => service.transaction((transaction) => service.destroyTemplate(getValues(ctx), { transaction }))
211
+ );
212
+ },
213
+ convertTemplateToCopy: async (ctx, next) => {
214
+ await runFlowSurfaceAction(
215
+ ctx,
216
+ next,
217
+ () => service.transaction((transaction) => service.convertTemplateToCopy(getValues(ctx), { transaction }))
218
+ );
219
+ },
145
220
  compose: async (ctx, next) => {
146
221
  await runFlowSurfaceAction(
147
222
  ctx,
@@ -0,0 +1,15 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ export declare const COLLECTION_BLOCK_USES: Set<string>;
10
+ export declare const STATIC_CONTENT_BLOCK_USES: Set<string>;
11
+ export declare const FIELD_WRAPPER_USES: Set<string>;
12
+ export declare const CREATABLE_STANDALONE_FIELD_USES: Set<string>;
13
+ export declare const STANDALONE_FIELD_NODE_USES: Set<string>;
14
+ export declare const ACTION_BUTTON_USES: Set<string>;
15
+ export declare const JS_BLOCK_USES: Set<string>;
@@ -0,0 +1,114 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __export = (target, all) => {
15
+ for (var name in all)
16
+ __defProp(target, name, { get: all[name], enumerable: true });
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") {
20
+ for (let key of __getOwnPropNames(from))
21
+ if (!__hasOwnProp.call(to, key) && key !== except)
22
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
+ }
24
+ return to;
25
+ };
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var node_use_sets_exports = {};
28
+ __export(node_use_sets_exports, {
29
+ ACTION_BUTTON_USES: () => ACTION_BUTTON_USES,
30
+ COLLECTION_BLOCK_USES: () => COLLECTION_BLOCK_USES,
31
+ CREATABLE_STANDALONE_FIELD_USES: () => CREATABLE_STANDALONE_FIELD_USES,
32
+ FIELD_WRAPPER_USES: () => FIELD_WRAPPER_USES,
33
+ JS_BLOCK_USES: () => JS_BLOCK_USES,
34
+ STANDALONE_FIELD_NODE_USES: () => STANDALONE_FIELD_NODE_USES,
35
+ STATIC_CONTENT_BLOCK_USES: () => STATIC_CONTENT_BLOCK_USES
36
+ });
37
+ module.exports = __toCommonJS(node_use_sets_exports);
38
+ const COLLECTION_BLOCK_USES = /* @__PURE__ */ new Set([
39
+ "TableBlockModel",
40
+ "CreateFormModel",
41
+ "EditFormModel",
42
+ "FormBlockModel",
43
+ "DetailsBlockModel",
44
+ "FilterFormBlockModel",
45
+ "ListBlockModel",
46
+ "GridCardBlockModel",
47
+ "MapBlockModel",
48
+ "CommentsBlockModel"
49
+ ]);
50
+ const STATIC_CONTENT_BLOCK_USES = /* @__PURE__ */ new Set([
51
+ "MarkdownBlockModel",
52
+ "IframeBlockModel",
53
+ "ChartBlockModel",
54
+ "ActionPanelBlockModel",
55
+ "JSBlockModel"
56
+ ]);
57
+ const FIELD_WRAPPER_USES = /* @__PURE__ */ new Set([
58
+ "FormItemModel",
59
+ "FormAssociationItemModel",
60
+ "DetailsItemModel",
61
+ "FilterFormItemModel",
62
+ "TableColumnModel"
63
+ ]);
64
+ const CREATABLE_STANDALONE_FIELD_USES = /* @__PURE__ */ new Set(["JSColumnModel", "JSItemModel"]);
65
+ const STANDALONE_FIELD_NODE_USES = /* @__PURE__ */ new Set([...CREATABLE_STANDALONE_FIELD_USES, "FormJSFieldItemModel"]);
66
+ const ACTION_BUTTON_USES = /* @__PURE__ */ new Set([
67
+ "AddNewActionModel",
68
+ "ViewActionModel",
69
+ "EditActionModel",
70
+ "PopupCollectionActionModel",
71
+ "DeleteActionModel",
72
+ "BulkDeleteActionModel",
73
+ "BulkEditActionModel",
74
+ "UpdateRecordActionModel",
75
+ "BulkUpdateActionModel",
76
+ "DuplicateActionModel",
77
+ "AddChildActionModel",
78
+ "FilterActionModel",
79
+ "ExpandCollapseActionModel",
80
+ "FormSubmitActionModel",
81
+ "FilterFormSubmitActionModel",
82
+ "FilterFormResetActionModel",
83
+ "FilterFormCollapseActionModel",
84
+ "RefreshActionModel",
85
+ "LinkActionModel",
86
+ "ExportActionModel",
87
+ "ExportAttachmentActionModel",
88
+ "ImportActionModel",
89
+ "UploadActionModel",
90
+ "TemplatePrintCollectionActionModel",
91
+ "TemplatePrintRecordActionModel",
92
+ "CollectionTriggerWorkflowActionModel",
93
+ "RecordTriggerWorkflowActionModel",
94
+ "FormTriggerWorkflowActionModel",
95
+ "WorkbenchTriggerWorkflowActionModel",
96
+ "MailSendActionModel",
97
+ "JSCollectionActionModel",
98
+ "JSRecordActionModel",
99
+ "JSFormActionModel",
100
+ "JSItemActionModel",
101
+ "FilterFormJSActionModel",
102
+ "JSActionModel"
103
+ ]);
104
+ const JS_BLOCK_USES = /* @__PURE__ */ new Set(["JSBlockModel"]);
105
+ // Annotate the CommonJS export names for ESM import in node:
106
+ 0 && (module.exports = {
107
+ ACTION_BUTTON_USES,
108
+ COLLECTION_BLOCK_USES,
109
+ CREATABLE_STANDALONE_FIELD_USES,
110
+ FIELD_WRAPPER_USES,
111
+ JS_BLOCK_USES,
112
+ STANDALONE_FIELD_NODE_USES,
113
+ STATIC_CONTENT_BLOCK_USES
114
+ });
@@ -0,0 +1,9 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ export declare function validateFlowSurfacePayloadShape(actionName: string, value: any, path: string): void;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __create = Object.create;
11
+ var __defProp = Object.defineProperty;
12
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
+ var __getOwnPropNames = Object.getOwnPropertyNames;
14
+ var __getProtoOf = Object.getPrototypeOf;
15
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
16
+ var __export = (target, all) => {
17
+ for (var name in all)
18
+ __defProp(target, name, { get: all[name], enumerable: true });
19
+ };
20
+ var __copyProps = (to, from, except, desc) => {
21
+ if (from && typeof from === "object" || typeof from === "function") {
22
+ for (let key of __getOwnPropNames(from))
23
+ if (!__hasOwnProp.call(to, key) && key !== except)
24
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
25
+ }
26
+ return to;
27
+ };
28
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
29
+ // If the importer is in node compatibility mode or this is not an ESM
30
+ // file that has been converted to a CommonJS file using a Babel-
31
+ // compatible transform (i.e. "__esModule" has not been set), then set
32
+ // "default" to the CommonJS "module.exports" for node compatibility.
33
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34
+ mod
35
+ ));
36
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
+ var payload_shape_exports = {};
38
+ __export(payload_shape_exports, {
39
+ validateFlowSurfacePayloadShape: () => validateFlowSurfacePayloadShape
40
+ });
41
+ module.exports = __toCommonJS(payload_shape_exports);
42
+ var import_lodash = __toESM(require("lodash"));
43
+ var import_errors = require("./errors");
44
+ var import_key_registry = require("./planning/key-registry");
45
+ function validateFlowSurfacePayloadShape(actionName, value, path) {
46
+ if (Array.isArray(value)) {
47
+ value.forEach((item, index) => validateFlowSurfacePayloadShape(actionName, item, `${path}[${index}]`));
48
+ return;
49
+ }
50
+ if (!import_lodash.default.isPlainObject(value)) {
51
+ return;
52
+ }
53
+ if (import_lodash.default.isPlainObject(value.stepParams) && Object.prototype.hasOwnProperty.call(value.stepParams, import_key_registry.FLOW_SURFACE_INTERNAL_META_KEY)) {
54
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} ${path}.stepParams.${import_key_registry.FLOW_SURFACE_INTERNAL_META_KEY} is reserved`);
55
+ }
56
+ Object.entries(value).forEach(([key, child]) => validateFlowSurfacePayloadShape(actionName, child, `${path}.${key}`));
57
+ }
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ validateFlowSurfacePayloadShape
61
+ });