@nocobase/plugin-flow-engine 2.1.0-alpha.3 → 2.1.0-alpha.30

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 (262) hide show
  1. package/LICENSE +201 -661
  2. package/README.md +79 -9
  3. package/dist/ai/ai-employees/nathan/index.d.ts +10 -0
  4. package/dist/ai/ai-employees/nathan/index.js +42 -0
  5. package/dist/ai/ai-employees/nathan/prompt.md +168 -0
  6. package/dist/ai/ai-employees/nathan/skills/frontend-developer/SKILLS.md +86 -0
  7. package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/getContextApis.js +2 -2
  8. package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/getContextEnvs.js +2 -2
  9. package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/getContextVars.js +2 -2
  10. package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/lintAndTestJS.js +6 -4
  11. package/dist/ai/ai-employees/nathan/skills/frontend-developer/tools/patchJSCode.d.ts +10 -0
  12. package/dist/ai/ai-employees/nathan/skills/frontend-developer/tools/patchJSCode.js +65 -0
  13. package/dist/ai/ai-employees/nathan/skills/frontend-developer/tools/readJSCode.d.ts +10 -0
  14. package/dist/ai/ai-employees/nathan/skills/frontend-developer/tools/readJSCode.js +61 -0
  15. package/dist/ai/ai-employees/nathan/skills/frontend-developer/tools/writeJSCode.d.ts +10 -0
  16. package/dist/ai/ai-employees/nathan/skills/frontend-developer/tools/writeJSCode.js +65 -0
  17. package/dist/ai/docs/runjs/context/block-model.md +35 -35
  18. package/dist/ai/docs/runjs/context/collection-field.md +53 -51
  19. package/dist/ai/docs/runjs/context/collection.md +39 -39
  20. package/dist/ai/docs/runjs/context/data-source-manager.md +40 -30
  21. package/dist/ai/docs/runjs/context/data-source.md +52 -44
  22. package/dist/ai/docs/runjs/context/element.md +44 -38
  23. package/dist/ai/docs/runjs/context/exit-all.md +37 -35
  24. package/dist/ai/docs/runjs/context/exit.md +38 -35
  25. package/dist/ai/docs/runjs/context/filter-manager.md +36 -30
  26. package/dist/ai/docs/runjs/context/form.md +57 -57
  27. package/dist/ai/docs/runjs/context/get-model.md +22 -21
  28. package/dist/ai/docs/runjs/context/get-value.md +20 -19
  29. package/dist/ai/docs/runjs/context/get-var.md +61 -55
  30. package/dist/ai/docs/runjs/context/i18n.md +17 -14
  31. package/dist/ai/docs/runjs/context/import-async.md +333 -45
  32. package/dist/ai/docs/runjs/context/init-resource.md +20 -20
  33. package/dist/ai/docs/runjs/context/libs.md +31 -31
  34. package/dist/ai/docs/runjs/context/location.md +34 -31
  35. package/dist/ai/docs/runjs/context/logger.md +41 -40
  36. package/dist/ai/docs/runjs/context/make-resource.md +27 -26
  37. package/dist/ai/docs/runjs/context/message.md +42 -41
  38. package/dist/ai/docs/runjs/context/modal.md +44 -44
  39. package/dist/ai/docs/runjs/context/model.md +36 -33
  40. package/dist/ai/docs/runjs/context/notification.md +41 -40
  41. package/dist/ai/docs/runjs/context/off.md +14 -14
  42. package/dist/ai/docs/runjs/context/on.md +30 -29
  43. package/dist/ai/docs/runjs/context/open-view.md +40 -40
  44. package/dist/ai/docs/runjs/context/render.md +37 -32
  45. package/dist/ai/docs/runjs/context/request.md +46 -45
  46. package/dist/ai/docs/runjs/context/require-async.md +28 -25
  47. package/dist/ai/docs/runjs/context/resource.md +34 -34
  48. package/dist/ai/docs/runjs/context/route.md +36 -34
  49. package/dist/ai/docs/runjs/context/router.md +43 -31
  50. package/dist/ai/docs/runjs/context/set-value.md +18 -17
  51. package/dist/ai/docs/runjs/context/sql.md +7 -15
  52. package/dist/ai/docs/runjs/context/t.md +20 -17
  53. package/dist/ai/docs/runjs/context/view.md +49 -46
  54. package/dist/ai/docs/runjs/document.md +1 -0
  55. package/dist/ai/docs/runjs/import-modules.md +32 -32
  56. package/dist/ai/docs/runjs/index.md +13 -13
  57. package/dist/ai/docs/runjs/jsx.md +19 -19
  58. package/dist/ai/docs/runjs/model/form-block-model.md +1 -3
  59. package/dist/ai/docs/runjs/render.md +15 -15
  60. package/dist/ai/docs/runjs/resource/api-resource.md +53 -53
  61. package/dist/ai/docs/runjs/resource/multi-record-resource.md +64 -64
  62. package/dist/ai/docs/runjs/resource/single-record-resource.md +55 -55
  63. package/dist/ai/docs/runjs/resource/sql-resource.md +57 -57
  64. package/dist/ai/docs/runjs/window.md +5 -5
  65. package/dist/client/index.js +1 -1
  66. package/dist/externalVersion.js +12 -11
  67. package/dist/locale/en-US.json +1 -0
  68. package/dist/locale/index.d.ts +2 -0
  69. package/dist/locale/zh-CN.json +1 -0
  70. package/dist/node_modules/ses/dist/ses.cjs +1 -1
  71. package/dist/node_modules/ses/package.json +1 -1
  72. package/dist/node_modules/zod/index.cjs +1 -1
  73. package/dist/node_modules/zod/package.json +1 -1
  74. package/dist/server/collections/flowsql.js +1 -0
  75. package/dist/server/flow-surfaces/action-scope.d.ts +39 -0
  76. package/dist/server/flow-surfaces/action-scope.js +156 -0
  77. package/dist/server/flow-surfaces/apply/compiler.d.ts +13 -0
  78. package/dist/server/flow-surfaces/apply/compiler.js +971 -0
  79. package/dist/server/flow-surfaces/apply/layout.d.ts +34 -0
  80. package/dist/server/flow-surfaces/apply/layout.js +175 -0
  81. package/dist/server/flow-surfaces/apply/matching.d.ts +16 -0
  82. package/dist/server/flow-surfaces/apply/matching.js +181 -0
  83. package/dist/server/flow-surfaces/approval/blueprint-service.d.ts +84 -0
  84. package/dist/server/flow-surfaces/approval/blueprint-service.js +589 -0
  85. package/dist/server/flow-surfaces/approval/blueprint.d.ts +21 -0
  86. package/dist/server/flow-surfaces/approval/blueprint.js +187 -0
  87. package/dist/server/flow-surfaces/approval/builder.d.ts +225 -0
  88. package/dist/server/flow-surfaces/approval/builder.js +384 -0
  89. package/dist/server/flow-surfaces/approval/catalog-specs.d.ts +33 -0
  90. package/dist/server/flow-surfaces/approval/catalog-specs.js +156 -0
  91. package/dist/server/flow-surfaces/approval/index.d.ts +14 -0
  92. package/dist/server/flow-surfaces/approval/index.js +40 -0
  93. package/dist/server/flow-surfaces/approval/runtime-config.d.ts +44 -0
  94. package/dist/server/flow-surfaces/approval/runtime-config.js +299 -0
  95. package/dist/server/flow-surfaces/approval/semantic-use.d.ts +23 -0
  96. package/dist/server/flow-surfaces/approval/semantic-use.js +155 -0
  97. package/dist/server/flow-surfaces/association-interfaces.d.ts +10 -0
  98. package/dist/server/flow-surfaces/association-interfaces.js +39 -0
  99. package/dist/server/flow-surfaces/association-title-field.d.ts +20 -0
  100. package/dist/server/flow-surfaces/association-title-field.js +192 -0
  101. package/dist/server/flow-surfaces/blueprint/compile-blocks.d.ts +15 -0
  102. package/dist/server/flow-surfaces/blueprint/compile-blocks.js +1251 -0
  103. package/dist/server/flow-surfaces/blueprint/compile-plan.d.ts +14 -0
  104. package/dist/server/flow-surfaces/blueprint/compile-plan.js +308 -0
  105. package/dist/server/flow-surfaces/blueprint/compile-reaction.d.ts +11 -0
  106. package/dist/server/flow-surfaces/blueprint/compile-reaction.js +72 -0
  107. package/dist/server/flow-surfaces/blueprint/defaults.d.ts +26 -0
  108. package/dist/server/flow-surfaces/blueprint/defaults.js +133 -0
  109. package/dist/server/flow-surfaces/blueprint/index.d.ts +12 -0
  110. package/dist/server/flow-surfaces/blueprint/index.js +44 -0
  111. package/dist/server/flow-surfaces/blueprint/normalize-document.d.ts +10 -0
  112. package/dist/server/flow-surfaces/blueprint/normalize-document.js +407 -0
  113. package/dist/server/flow-surfaces/blueprint/private-utils.d.ts +25 -0
  114. package/dist/server/flow-surfaces/blueprint/private-utils.js +179 -0
  115. package/dist/server/flow-surfaces/blueprint/public-types.d.ts +201 -0
  116. package/dist/server/flow-surfaces/blueprint/public-types.js +24 -0
  117. package/dist/server/flow-surfaces/builder.d.ts +238 -0
  118. package/dist/server/flow-surfaces/builder.js +1261 -0
  119. package/dist/server/flow-surfaces/catalog-smart.d.ts +18 -0
  120. package/dist/server/flow-surfaces/catalog-smart.js +239 -0
  121. package/dist/server/flow-surfaces/catalog-smart.projector.d.ts +15 -0
  122. package/dist/server/flow-surfaces/catalog-smart.projector.js +157 -0
  123. package/dist/server/flow-surfaces/catalog-smart.types.d.ts +99 -0
  124. package/dist/server/flow-surfaces/catalog-smart.types.js +24 -0
  125. package/dist/server/flow-surfaces/catalog.d.ts +79 -0
  126. package/dist/server/flow-surfaces/catalog.js +3743 -0
  127. package/dist/server/flow-surfaces/chart-config.d.ts +121 -0
  128. package/dist/server/flow-surfaces/chart-config.js +1394 -0
  129. package/dist/server/flow-surfaces/compose-compiler.d.ts +115 -0
  130. package/dist/server/flow-surfaces/compose-compiler.js +174 -0
  131. package/dist/server/flow-surfaces/compose-runtime.d.ts +94 -0
  132. package/dist/server/flow-surfaces/compose-runtime.js +376 -0
  133. package/dist/server/flow-surfaces/configure-options.d.ts +23 -0
  134. package/dist/server/flow-surfaces/configure-options.js +904 -0
  135. package/dist/server/flow-surfaces/constants.d.ts +351 -0
  136. package/dist/server/flow-surfaces/constants.js +104 -0
  137. package/dist/server/flow-surfaces/context.d.ts +72 -0
  138. package/dist/server/flow-surfaces/context.js +556 -0
  139. package/dist/server/flow-surfaces/contract-guard.d.ts +19 -0
  140. package/dist/server/flow-surfaces/contract-guard.js +410 -0
  141. package/dist/server/flow-surfaces/core-field-default-bindings.d.ts +12 -0
  142. package/dist/server/flow-surfaces/core-field-default-bindings.js +157 -0
  143. package/dist/server/flow-surfaces/default-action-popup.d.ts +63 -0
  144. package/dist/server/flow-surfaces/default-action-popup.js +322 -0
  145. package/dist/server/flow-surfaces/default-block-actions.d.ts +32 -0
  146. package/dist/server/flow-surfaces/default-block-actions.js +210 -0
  147. package/dist/server/flow-surfaces/errors.d.ts +47 -0
  148. package/dist/server/flow-surfaces/errors.js +145 -0
  149. package/dist/server/flow-surfaces/executor.d.ts +23 -0
  150. package/dist/server/flow-surfaces/executor.js +132 -0
  151. package/dist/server/flow-surfaces/field-binding-registry.d.ts +24 -0
  152. package/dist/server/flow-surfaces/field-binding-registry.js +396 -0
  153. package/dist/server/flow-surfaces/field-semantics.d.ts +15 -0
  154. package/dist/server/flow-surfaces/field-semantics.js +84 -0
  155. package/dist/server/flow-surfaces/field-type-resolver.d.ts +45 -0
  156. package/dist/server/flow-surfaces/field-type-resolver.js +312 -0
  157. package/dist/server/flow-surfaces/filter-group.d.ts +15 -0
  158. package/dist/server/flow-surfaces/filter-group.js +94 -0
  159. package/dist/server/flow-surfaces/hidden-popup-calendar.d.ts +86 -0
  160. package/dist/server/flow-surfaces/hidden-popup-calendar.js +554 -0
  161. package/dist/server/flow-surfaces/hidden-popup-contract.d.ts +116 -0
  162. package/dist/server/flow-surfaces/hidden-popup-contract.js +611 -0
  163. package/dist/server/flow-surfaces/hidden-popup-kanban.d.ts +62 -0
  164. package/dist/server/flow-surfaces/hidden-popup-kanban.js +651 -0
  165. package/dist/server/flow-surfaces/index.d.ts +11 -0
  166. package/dist/server/flow-surfaces/index.js +302 -0
  167. package/dist/server/flow-surfaces/locator.d.ts +28 -0
  168. package/dist/server/flow-surfaces/locator.js +240 -0
  169. package/dist/server/flow-surfaces/node-use-sets.d.ts +15 -0
  170. package/dist/server/flow-surfaces/node-use-sets.js +135 -0
  171. package/dist/server/flow-surfaces/payload-shape.d.ts +9 -0
  172. package/dist/server/flow-surfaces/payload-shape.js +61 -0
  173. package/dist/server/flow-surfaces/placement.d.ts +33 -0
  174. package/dist/server/flow-surfaces/placement.js +199 -0
  175. package/dist/server/flow-surfaces/planning/action-specs.d.ts +179 -0
  176. package/dist/server/flow-surfaces/planning/action-specs.js +190 -0
  177. package/dist/server/flow-surfaces/planning/compiler.d.ts +37 -0
  178. package/dist/server/flow-surfaces/planning/compiler.js +376 -0
  179. package/dist/server/flow-surfaces/planning/context.d.ts +30 -0
  180. package/dist/server/flow-surfaces/planning/context.js +139 -0
  181. package/dist/server/flow-surfaces/planning/created-keys.d.ts +34 -0
  182. package/dist/server/flow-surfaces/planning/created-keys.js +375 -0
  183. package/dist/server/flow-surfaces/planning/key-kind.d.ts +11 -0
  184. package/dist/server/flow-surfaces/planning/key-kind.js +88 -0
  185. package/dist/server/flow-surfaces/planning/key-persistence.d.ts +34 -0
  186. package/dist/server/flow-surfaces/planning/key-persistence.js +148 -0
  187. package/dist/server/flow-surfaces/planning/key-registry.d.ts +40 -0
  188. package/dist/server/flow-surfaces/planning/key-registry.js +206 -0
  189. package/dist/server/flow-surfaces/planning/runtime.d.ts +37 -0
  190. package/dist/server/flow-surfaces/planning/runtime.js +259 -0
  191. package/dist/server/flow-surfaces/planning/step-link.d.ts +14 -0
  192. package/dist/server/flow-surfaces/planning/step-link.js +104 -0
  193. package/dist/server/flow-surfaces/planning/types.d.ts +55 -0
  194. package/dist/server/flow-surfaces/planning/types.js +24 -0
  195. package/dist/server/flow-surfaces/public-compatibility.d.ts +28 -0
  196. package/dist/server/flow-surfaces/public-compatibility.js +161 -0
  197. package/dist/server/flow-surfaces/public-data-surface-default-filter.d.ts +24 -0
  198. package/dist/server/flow-surfaces/public-data-surface-default-filter.js +152 -0
  199. package/dist/server/flow-surfaces/reaction/errors.d.ts +20 -0
  200. package/dist/server/flow-surfaces/reaction/errors.js +69 -0
  201. package/dist/server/flow-surfaces/reaction/field-value.d.ts +34 -0
  202. package/dist/server/flow-surfaces/reaction/field-value.js +181 -0
  203. package/dist/server/flow-surfaces/reaction/fingerprint.d.ts +16 -0
  204. package/dist/server/flow-surfaces/reaction/fingerprint.js +71 -0
  205. package/dist/server/flow-surfaces/reaction/linkage.d.ts +136 -0
  206. package/dist/server/flow-surfaces/reaction/linkage.js +882 -0
  207. package/dist/server/flow-surfaces/reaction/meta.d.ts +11 -0
  208. package/dist/server/flow-surfaces/reaction/meta.js +451 -0
  209. package/dist/server/flow-surfaces/reaction/registry.d.ts +156 -0
  210. package/dist/server/flow-surfaces/reaction/registry.js +206 -0
  211. package/dist/server/flow-surfaces/reaction/resolver.d.ts +22 -0
  212. package/dist/server/flow-surfaces/reaction/resolver.js +202 -0
  213. package/dist/server/flow-surfaces/reaction/types.d.ts +241 -0
  214. package/dist/server/flow-surfaces/reaction/types.js +24 -0
  215. package/dist/server/flow-surfaces/reaction/utils.d.ts +17 -0
  216. package/dist/server/flow-surfaces/reaction/utils.js +67 -0
  217. package/dist/server/flow-surfaces/reaction/value-expr.d.ts +15 -0
  218. package/dist/server/flow-surfaces/reaction/value-expr.js +209 -0
  219. package/dist/server/flow-surfaces/reference-guards.d.ts +19 -0
  220. package/dist/server/flow-surfaces/reference-guards.js +103 -0
  221. package/dist/server/flow-surfaces/route-sync.d.ts +47 -0
  222. package/dist/server/flow-surfaces/route-sync.js +392 -0
  223. package/dist/server/flow-surfaces/service-helpers.d.ts +42 -0
  224. package/dist/server/flow-surfaces/service-helpers.js +310 -0
  225. package/dist/server/flow-surfaces/service-utils.d.ts +120 -0
  226. package/dist/server/flow-surfaces/service-utils.js +878 -0
  227. package/dist/server/flow-surfaces/service.d.ts +894 -0
  228. package/dist/server/flow-surfaces/service.js +16200 -0
  229. package/dist/server/flow-surfaces/support-matrix.d.ts +31 -0
  230. package/dist/server/flow-surfaces/support-matrix.js +282 -0
  231. package/dist/server/flow-surfaces/surface-context.d.ts +52 -0
  232. package/dist/server/flow-surfaces/surface-context.js +440 -0
  233. package/dist/server/flow-surfaces/template-compatibility.d.ts +42 -0
  234. package/dist/server/flow-surfaces/template-compatibility.js +189 -0
  235. package/dist/server/flow-surfaces/template-display.d.ts +20 -0
  236. package/dist/server/flow-surfaces/template-display.js +289 -0
  237. package/dist/server/flow-surfaces/template-service-utils.d.ts +62 -0
  238. package/dist/server/flow-surfaces/template-service-utils.js +281 -0
  239. package/dist/server/flow-surfaces/types.d.ts +288 -0
  240. package/dist/server/flow-surfaces/types.js +24 -0
  241. package/dist/server/index.d.ts +1 -0
  242. package/dist/server/index.js +7 -2
  243. package/dist/server/plugin.d.ts +0 -1
  244. package/dist/server/plugin.js +9 -34
  245. package/dist/server/repository.js +0 -5
  246. package/dist/server/variables/resolve.d.ts +21 -0
  247. package/dist/server/variables/resolve.js +79 -0
  248. package/dist/swagger/flow-surfaces.d.ts +6106 -0
  249. package/dist/swagger/flow-surfaces.examples.d.ts +1577 -0
  250. package/dist/swagger/flow-surfaces.examples.js +1816 -0
  251. package/dist/swagger/flow-surfaces.js +5375 -0
  252. package/dist/swagger/flow-surfaces.template-action-docs.d.ts +62 -0
  253. package/dist/swagger/flow-surfaces.template-action-docs.js +121 -0
  254. package/dist/swagger/flow-surfaces.template-schemas.d.ts +239 -0
  255. package/dist/swagger/flow-surfaces.template-schemas.js +255 -0
  256. package/dist/swagger/index.d.ts +6111 -0
  257. package/dist/swagger/index.js +50 -0
  258. package/package.json +3 -3
  259. /package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/getContextApis.d.ts +0 -0
  260. /package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/getContextEnvs.d.ts +0 -0
  261. /package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/getContextVars.d.ts +0 -0
  262. /package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/lintAndTestJS.d.ts +0 -0
@@ -0,0 +1,376 @@
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 compose_runtime_exports = {};
28
+ __export(compose_runtime_exports, {
29
+ createComposeRuntimeState: () => createComposeRuntimeState,
30
+ executeComposeRuntime: () => executeComposeRuntime
31
+ });
32
+ module.exports = __toCommonJS(compose_runtime_exports);
33
+ var import_errors = require("./errors");
34
+ var import_default_action_popup = require("./default-action-popup");
35
+ var import_compose_compiler = require("./compose-compiler");
36
+ async function executeComposeRuntime(plan, deps) {
37
+ assertComposeRuntimeDeps(plan, deps);
38
+ const state = createComposeRuntimeState();
39
+ await removeExistingItemsForReplace(plan, deps);
40
+ await createBlocks(plan, deps, state);
41
+ await applyBlockSettings(deps, state);
42
+ await createFields(plan, deps, state);
43
+ await applyBlockFieldLayouts(deps, state);
44
+ await createActions(plan, deps, state);
45
+ await createRecordActions(plan, deps, state);
46
+ const layoutResult = await applyComposeLayout(plan, deps, state);
47
+ return {
48
+ target: {
49
+ uid: plan.gridUid
50
+ },
51
+ mode: plan.mode,
52
+ blocks: state.blocks.map((block) => ({
53
+ key: block.spec.key,
54
+ type: block.spec.type,
55
+ uid: block.result.uid,
56
+ gridUid: block.result.gridUid,
57
+ itemUid: block.result.itemUid,
58
+ itemGridUid: block.result.itemGridUid,
59
+ actionsColumnUid: block.result.actionsColumnUid,
60
+ fields: block.fieldResults,
61
+ actions: block.actionResults,
62
+ recordActions: block.recordActionResults
63
+ })),
64
+ ...typeof layoutResult === "undefined" ? {} : { layout: layoutResult }
65
+ };
66
+ }
67
+ function createComposeRuntimeState() {
68
+ return {
69
+ keyMap: {},
70
+ blocks: []
71
+ };
72
+ }
73
+ function shouldApplyActionPopupAfterEffect(spec) {
74
+ return hasPopupAfterEffect(spec.popup) || (0, import_default_action_popup.isFlowSurfaceDefaultActionPopupType)(spec.type);
75
+ }
76
+ function assertComposeRuntimeDeps(plan, deps) {
77
+ if (plan.mode === "replace" && plan.existingItemUids.length) {
78
+ requireComposeRuntimeDep("removeExistingItem", deps.removeExistingItem, "replace");
79
+ }
80
+ if (plan.blocks.some((block) => hasInlineSettings(block.spec.settings))) {
81
+ requireComposeRuntimeDep("applyNodeSettings", deps.applyNodeSettings, "block settings");
82
+ }
83
+ if (plan.fields.some((field) => hasInlineSettings(field.spec.settings))) {
84
+ requireComposeRuntimeDep("applyFieldSettings", deps.applyFieldSettings, "field settings");
85
+ }
86
+ if ([...plan.actions, ...plan.recordActions].some(
87
+ (action) => hasInlineSettings(action.spec.settings) || shouldApplyActionPopupAfterEffect(action.spec)
88
+ )) {
89
+ if ([...plan.actions, ...plan.recordActions].some((action) => hasInlineSettings(action.spec.settings))) {
90
+ requireComposeRuntimeDep("applyNodeSettings", deps.applyNodeSettings, "action settings");
91
+ }
92
+ if ([...plan.actions, ...plan.recordActions].some((action) => shouldApplyActionPopupAfterEffect(action.spec))) {
93
+ requireComposeRuntimeDep("applyActionPopup", deps.applyActionPopup, "action popup");
94
+ }
95
+ }
96
+ }
97
+ function requireComposeRuntimeDep(name, dep, stage) {
98
+ if (dep) {
99
+ return;
100
+ }
101
+ (0, import_errors.throwConflict)(
102
+ `flowSurfaces compose ${stage} runtime deps missing '${name}'`,
103
+ "FLOW_SURFACE_COMPOSE_RUNTIME_DEPS_MISSING"
104
+ );
105
+ }
106
+ async function removeExistingItemsForReplace(plan, deps) {
107
+ if (plan.mode !== "replace" || !plan.existingItemUids.length) {
108
+ return;
109
+ }
110
+ const removeExistingItem = deps.removeExistingItem;
111
+ requireComposeRuntimeDep("removeExistingItem", removeExistingItem, "replace");
112
+ for (const uid of plan.existingItemUids) {
113
+ await removeExistingItem(uid);
114
+ }
115
+ }
116
+ async function createBlocks(plan, deps, state) {
117
+ for (const blockTask of plan.blocks) {
118
+ const result = await deps.createBlock(blockTask.payload, blockTask.spec);
119
+ state.blocks.push({
120
+ spec: blockTask.spec,
121
+ result,
122
+ createdFields: [],
123
+ fieldResults: [],
124
+ actionResults: [],
125
+ recordActionResults: []
126
+ });
127
+ state.keyMap[blockTask.key] = {
128
+ uid: result.uid,
129
+ gridUid: result.gridUid,
130
+ itemUid: result.itemUid,
131
+ itemGridUid: result.itemGridUid,
132
+ actionsColumnUid: result.actionsColumnUid
133
+ };
134
+ }
135
+ }
136
+ async function applyBlockSettings(deps, state) {
137
+ const applyNodeSettings = deps.applyNodeSettings;
138
+ if (!applyNodeSettings) {
139
+ return;
140
+ }
141
+ for (const block of state.blocks) {
142
+ if (!hasInlineSettings(block.spec.settings)) {
143
+ continue;
144
+ }
145
+ const settings = deps.resolveBlockSettings ? await deps.resolveBlockSettings(block.spec.settings || {}, state, block) : block.spec.settings;
146
+ await applyNodeSettings("compose block", block.result.uid, settings);
147
+ }
148
+ }
149
+ async function createFields(plan, deps, state) {
150
+ for (const fieldTask of plan.fields) {
151
+ const block = requireBlockState(fieldTask.blockKey, state);
152
+ const targetUid = fieldTask.containerSource === "item" ? block.result.itemUid || block.result.uid : block.result.uid;
153
+ let createdField;
154
+ try {
155
+ createdField = await deps.createField(
156
+ {
157
+ target: {
158
+ uid: targetUid
159
+ },
160
+ ...fieldTask.payload,
161
+ ...readComposeFieldTargetKey(fieldTask.spec.target) ? {
162
+ defaultTargetUid: (0, import_compose_compiler.resolveComposeTargetKey)(
163
+ readComposeFieldTargetKey(fieldTask.spec.target),
164
+ state.keyMap,
165
+ "field"
166
+ )
167
+ } : {}
168
+ },
169
+ fieldTask.spec,
170
+ block.result
171
+ );
172
+ } catch (error) {
173
+ const decision = deps.onFieldError ? await deps.onFieldError({
174
+ error,
175
+ spec: fieldTask.spec,
176
+ blockSpec: block.spec,
177
+ blockResult: block.result
178
+ }) : void 0;
179
+ if (decision === "continue") {
180
+ continue;
181
+ }
182
+ throw error;
183
+ }
184
+ if (!createdField) {
185
+ continue;
186
+ }
187
+ block.createdFields.push({
188
+ spec: fieldTask.spec,
189
+ result: createdField
190
+ });
191
+ if (deps.applyFieldSettings && hasInlineSettings(fieldTask.spec.settings)) {
192
+ await deps.applyFieldSettings("compose field", createdField, fieldTask.spec.settings);
193
+ }
194
+ block.fieldResults.push(buildFieldResultSummary(fieldTask.spec, createdField));
195
+ }
196
+ }
197
+ async function applyBlockFieldLayouts(deps, state) {
198
+ const buildExplicitLayoutPayload = deps.buildExplicitLayoutPayload;
199
+ const setLayout = deps.setLayout;
200
+ for (const block of state.blocks) {
201
+ if (!hasInlineSettings(block.spec.fieldsLayout)) {
202
+ continue;
203
+ }
204
+ requireComposeRuntimeDep("buildExplicitLayoutPayload", buildExplicitLayoutPayload, "field layout");
205
+ requireComposeRuntimeDep("setLayout", setLayout, "field layout");
206
+ const createdByKey = Object.fromEntries(
207
+ block.createdFields.flatMap(({ spec, result }) => {
208
+ const uid = resolveComposeFieldLayoutUid(result);
209
+ return uid ? [[spec.key, { uid }]] : [];
210
+ })
211
+ );
212
+ const layoutPayload = await buildExplicitLayoutPayload({
213
+ layout: block.spec.fieldsLayout,
214
+ createdByKey,
215
+ targetUid: block.result.uid
216
+ });
217
+ await setLayout({
218
+ target: {
219
+ uid: block.result.uid
220
+ },
221
+ ...layoutPayload
222
+ });
223
+ }
224
+ }
225
+ async function createActions(plan, deps, state) {
226
+ for (const actionTask of plan.actions) {
227
+ const block = requireBlockState(actionTask.blockKey, state);
228
+ const createdAction = await deps.createAction(
229
+ {
230
+ target: {
231
+ uid: block.result.uid
232
+ },
233
+ ...actionTask.payload
234
+ },
235
+ actionTask.spec,
236
+ block.result
237
+ );
238
+ if (deps.applyNodeSettings && hasInlineSettings(actionTask.spec.settings)) {
239
+ await deps.applyNodeSettings("compose action", createdAction.uid, actionTask.spec.settings);
240
+ }
241
+ if (deps.applyActionPopup && shouldApplyActionPopupAfterEffect(actionTask.spec)) {
242
+ await deps.applyActionPopup("compose action", createdAction.uid, actionTask.spec.popup);
243
+ }
244
+ const actionKeys = deps.collectActionKeys ? await deps.collectActionKeys(createdAction.uid) : {};
245
+ block.actionResults.push(buildActionResultSummary(actionTask.spec, createdAction, actionKeys));
246
+ }
247
+ }
248
+ async function createRecordActions(plan, deps, state) {
249
+ for (const recordActionTask of plan.recordActions) {
250
+ const block = requireBlockState(recordActionTask.blockKey, state);
251
+ const createdAction = await deps.createRecordAction(
252
+ {
253
+ target: {
254
+ uid: block.result.uid
255
+ },
256
+ ...recordActionTask.payload
257
+ },
258
+ recordActionTask.spec,
259
+ block.result
260
+ );
261
+ if (!block.result.actionsColumnUid && block.spec.type === "table" && createdAction.parentUid) {
262
+ block.result.actionsColumnUid = createdAction.parentUid;
263
+ state.keyMap[recordActionTask.blockKey] = {
264
+ ...state.keyMap[recordActionTask.blockKey],
265
+ actionsColumnUid: createdAction.parentUid
266
+ };
267
+ }
268
+ if (deps.applyNodeSettings && hasInlineSettings(recordActionTask.spec.settings)) {
269
+ await deps.applyNodeSettings("compose recordAction", createdAction.uid, recordActionTask.spec.settings);
270
+ }
271
+ if (deps.applyActionPopup && shouldApplyActionPopupAfterEffect(recordActionTask.spec)) {
272
+ await deps.applyActionPopup("compose recordAction", createdAction.uid, recordActionTask.spec.popup);
273
+ }
274
+ const actionKeys = deps.collectActionKeys ? await deps.collectActionKeys(createdAction.uid) : {};
275
+ block.recordActionResults.push(buildActionResultSummary(recordActionTask.spec, createdAction, actionKeys));
276
+ }
277
+ }
278
+ async function applyComposeLayout(plan, deps, state) {
279
+ if (plan.layoutPlan.kind === "none") {
280
+ return void 0;
281
+ }
282
+ if (plan.layoutPlan.kind === "explicit") {
283
+ const buildExplicitLayoutPayload = deps.buildExplicitLayoutPayload;
284
+ const setLayout2 = deps.setLayout;
285
+ requireComposeRuntimeDep("buildExplicitLayoutPayload", buildExplicitLayoutPayload, "explicit layout");
286
+ requireComposeRuntimeDep("setLayout", setLayout2, "explicit layout");
287
+ const layoutPayload2 = await buildExplicitLayoutPayload({
288
+ layout: plan.layoutPlan.layout,
289
+ createdByKey: state.keyMap,
290
+ targetUid: plan.gridUid
291
+ });
292
+ return setLayout2({
293
+ target: {
294
+ uid: plan.gridUid
295
+ },
296
+ ...layoutPayload2
297
+ });
298
+ }
299
+ const buildAppendLayoutPayload = deps.buildAppendLayoutPayload;
300
+ const setLayout = deps.setLayout;
301
+ requireComposeRuntimeDep("buildAppendLayoutPayload", buildAppendLayoutPayload, "append layout");
302
+ requireComposeRuntimeDep("setLayout", setLayout, "append layout");
303
+ const layoutPayload = await buildAppendLayoutPayload({
304
+ gridUid: plan.gridUid,
305
+ appendedItemUids: state.blocks.map((block) => block.result.uid)
306
+ });
307
+ return setLayout({
308
+ target: {
309
+ uid: plan.gridUid
310
+ },
311
+ ...layoutPayload
312
+ });
313
+ }
314
+ function requireBlockState(blockKey, state) {
315
+ const matched = state.blocks.find((block) => block.spec.key === blockKey);
316
+ if (!matched) {
317
+ (0, import_errors.throwConflict)(
318
+ `flowSurfaces compose block '${blockKey}' is missing from runtime state`,
319
+ "FLOW_SURFACE_COMPOSE_BLOCK_MISSING"
320
+ );
321
+ }
322
+ return matched;
323
+ }
324
+ function buildFieldResultSummary(spec, createdField) {
325
+ return {
326
+ key: spec.key,
327
+ uid: createdField.uid,
328
+ ...spec.type ? { type: spec.type } : {},
329
+ ...spec.renderer ? { renderer: spec.renderer } : {},
330
+ fieldPath: spec.fieldPath,
331
+ associationPathName: spec.associationPathName,
332
+ wrapperUid: createdField.wrapperUid,
333
+ fieldUid: createdField.fieldUid,
334
+ innerFieldUid: createdField.innerFieldUid,
335
+ popupPageUid: createdField.popupPageUid,
336
+ popupTabUid: createdField.popupTabUid,
337
+ popupGridUid: createdField.popupGridUid,
338
+ ...spec.target ? { target: spec.target } : {}
339
+ };
340
+ }
341
+ function buildActionResultSummary(spec, createdAction, actionKeys) {
342
+ return {
343
+ key: spec.key,
344
+ type: spec.type,
345
+ scope: createdAction.scope,
346
+ uid: createdAction.uid,
347
+ parentUid: createdAction.parentUid,
348
+ ...actionKeys
349
+ };
350
+ }
351
+ function hasInlineSettings(value) {
352
+ return !!value && Object.keys(value).length > 0;
353
+ }
354
+ function resolveComposeFieldLayoutUid(result) {
355
+ return result.wrapperUid || result.uid;
356
+ }
357
+ function hasPopupAfterEffect(value) {
358
+ return typeof value !== "undefined";
359
+ }
360
+ function readComposeFieldTargetKey(target) {
361
+ if (typeof target === "string") {
362
+ const normalized2 = target.trim();
363
+ return normalized2 || void 0;
364
+ }
365
+ if (!target || typeof target !== "object") {
366
+ return void 0;
367
+ }
368
+ const key = typeof target.composeKey === "string" ? target.composeKey : target.key;
369
+ const normalized = typeof key === "string" ? key.trim() : "";
370
+ return normalized || void 0;
371
+ }
372
+ // Annotate the CommonJS export names for ESM import in node:
373
+ 0 && (module.exports = {
374
+ createComposeRuntimeState,
375
+ executeComposeRuntime
376
+ });
@@ -0,0 +1,23 @@
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
+ import type { FlowSurfaceCatalogItem, FlowSurfaceConfigureOptions, FlowSurfaceContainerKind } from './types';
10
+ export declare function getConfigureOptionsForUse(use?: string): FlowSurfaceConfigureOptions;
11
+ export declare function getConfigureOptionsForResolvedNode(input: {
12
+ kind?: FlowSurfaceContainerKind;
13
+ use?: string;
14
+ }): FlowSurfaceConfigureOptions;
15
+ export declare function getConfigureOptionsForCatalogItem(item?: Pick<FlowSurfaceCatalogItem, 'kind' | 'use'> | {
16
+ kind?: FlowSurfaceCatalogItem['kind'];
17
+ use?: string;
18
+ } | null): FlowSurfaceConfigureOptions;
19
+ export declare function getConfigureOptionKeysForUse(use?: string): string[];
20
+ export declare function getConfigureOptionKeysForResolvedNode(input: {
21
+ kind?: FlowSurfaceContainerKind;
22
+ use?: string;
23
+ }): string[];