@nocobase/plugin-flow-engine 2.1.0-beta.15 → 2.1.0-beta.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 (229) hide show
  1. package/dist/ai/ai-employees/nathan/index.d.ts +10 -0
  2. package/dist/ai/ai-employees/nathan/index.js +41 -0
  3. package/dist/ai/ai-employees/nathan/prompt.md +132 -0
  4. package/dist/ai/ai-employees/nathan/skills/frontend-developer/SKILLS.md +69 -0
  5. package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/getContextApis.js +2 -2
  6. package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/getContextEnvs.js +2 -2
  7. package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/getContextVars.js +2 -2
  8. package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/lintAndTestJS.js +2 -2
  9. package/dist/ai/docs/runjs/context/block-model.md +35 -35
  10. package/dist/ai/docs/runjs/context/collection-field.md +53 -51
  11. package/dist/ai/docs/runjs/context/collection.md +39 -39
  12. package/dist/ai/docs/runjs/context/data-source-manager.md +40 -30
  13. package/dist/ai/docs/runjs/context/data-source.md +52 -44
  14. package/dist/ai/docs/runjs/context/element.md +44 -38
  15. package/dist/ai/docs/runjs/context/exit-all.md +37 -35
  16. package/dist/ai/docs/runjs/context/exit.md +38 -35
  17. package/dist/ai/docs/runjs/context/filter-manager.md +36 -30
  18. package/dist/ai/docs/runjs/context/form.md +57 -57
  19. package/dist/ai/docs/runjs/context/get-model.md +22 -21
  20. package/dist/ai/docs/runjs/context/get-value.md +20 -19
  21. package/dist/ai/docs/runjs/context/get-var.md +61 -55
  22. package/dist/ai/docs/runjs/context/i18n.md +17 -14
  23. package/dist/ai/docs/runjs/context/import-async.md +333 -45
  24. package/dist/ai/docs/runjs/context/init-resource.md +20 -20
  25. package/dist/ai/docs/runjs/context/libs.md +31 -31
  26. package/dist/ai/docs/runjs/context/location.md +34 -31
  27. package/dist/ai/docs/runjs/context/logger.md +41 -40
  28. package/dist/ai/docs/runjs/context/make-resource.md +27 -26
  29. package/dist/ai/docs/runjs/context/message.md +42 -41
  30. package/dist/ai/docs/runjs/context/modal.md +44 -44
  31. package/dist/ai/docs/runjs/context/model.md +36 -33
  32. package/dist/ai/docs/runjs/context/notification.md +41 -40
  33. package/dist/ai/docs/runjs/context/off.md +14 -14
  34. package/dist/ai/docs/runjs/context/on.md +30 -29
  35. package/dist/ai/docs/runjs/context/open-view.md +40 -40
  36. package/dist/ai/docs/runjs/context/render.md +37 -32
  37. package/dist/ai/docs/runjs/context/request.md +46 -45
  38. package/dist/ai/docs/runjs/context/require-async.md +28 -25
  39. package/dist/ai/docs/runjs/context/resource.md +34 -34
  40. package/dist/ai/docs/runjs/context/route.md +36 -34
  41. package/dist/ai/docs/runjs/context/router.md +43 -31
  42. package/dist/ai/docs/runjs/context/set-value.md +18 -17
  43. package/dist/ai/docs/runjs/context/t.md +20 -17
  44. package/dist/ai/docs/runjs/context/view.md +49 -46
  45. package/dist/ai/docs/runjs/document.md +1 -0
  46. package/dist/ai/docs/runjs/import-modules.md +32 -32
  47. package/dist/ai/docs/runjs/index.md +13 -13
  48. package/dist/ai/docs/runjs/jsx.md +19 -19
  49. package/dist/ai/docs/runjs/model/form-block-model.md +1 -3
  50. package/dist/ai/docs/runjs/render.md +15 -15
  51. package/dist/ai/docs/runjs/resource/api-resource.md +53 -53
  52. package/dist/ai/docs/runjs/resource/multi-record-resource.md +64 -64
  53. package/dist/ai/docs/runjs/resource/single-record-resource.md +55 -55
  54. package/dist/ai/docs/runjs/resource/sql-resource.md +57 -57
  55. package/dist/ai/docs/runjs/window.md +5 -5
  56. package/dist/client/index.js +1 -1
  57. package/dist/externalVersion.js +11 -10
  58. package/dist/node_modules/ses/dist/ses.cjs +1 -1
  59. package/dist/node_modules/ses/package.json +1 -1
  60. package/dist/node_modules/zod/index.cjs +1 -1
  61. package/dist/node_modules/zod/package.json +1 -1
  62. package/dist/server/flow-surfaces/action-scope.d.ts +38 -0
  63. package/dist/server/flow-surfaces/action-scope.js +152 -0
  64. package/dist/server/flow-surfaces/apply/compiler.d.ts +13 -0
  65. package/dist/server/flow-surfaces/apply/compiler.js +969 -0
  66. package/dist/server/flow-surfaces/apply/layout.d.ts +34 -0
  67. package/dist/server/flow-surfaces/apply/layout.js +175 -0
  68. package/dist/server/flow-surfaces/apply/matching.d.ts +16 -0
  69. package/dist/server/flow-surfaces/apply/matching.js +181 -0
  70. package/dist/server/flow-surfaces/approval/blueprint-service.d.ts +84 -0
  71. package/dist/server/flow-surfaces/approval/blueprint-service.js +589 -0
  72. package/dist/server/flow-surfaces/approval/blueprint.d.ts +21 -0
  73. package/dist/server/flow-surfaces/approval/blueprint.js +187 -0
  74. package/dist/server/flow-surfaces/approval/builder.d.ts +225 -0
  75. package/dist/server/flow-surfaces/approval/builder.js +384 -0
  76. package/dist/server/flow-surfaces/approval/catalog-specs.d.ts +33 -0
  77. package/dist/server/flow-surfaces/approval/catalog-specs.js +156 -0
  78. package/dist/server/flow-surfaces/approval/index.d.ts +14 -0
  79. package/dist/server/flow-surfaces/approval/index.js +40 -0
  80. package/dist/server/flow-surfaces/approval/runtime-config.d.ts +44 -0
  81. package/dist/server/flow-surfaces/approval/runtime-config.js +299 -0
  82. package/dist/server/flow-surfaces/approval/semantic-use.d.ts +23 -0
  83. package/dist/server/flow-surfaces/approval/semantic-use.js +155 -0
  84. package/dist/server/flow-surfaces/association-title-field.d.ts +20 -0
  85. package/dist/server/flow-surfaces/association-title-field.js +158 -0
  86. package/dist/server/flow-surfaces/blueprint/compile-blocks.d.ts +14 -0
  87. package/dist/server/flow-surfaces/blueprint/compile-blocks.js +1007 -0
  88. package/dist/server/flow-surfaces/blueprint/compile-plan.d.ts +13 -0
  89. package/dist/server/flow-surfaces/blueprint/compile-plan.js +308 -0
  90. package/dist/server/flow-surfaces/blueprint/compile-reaction.d.ts +11 -0
  91. package/dist/server/flow-surfaces/blueprint/compile-reaction.js +72 -0
  92. package/dist/server/flow-surfaces/blueprint/defaults.d.ts +26 -0
  93. package/dist/server/flow-surfaces/blueprint/defaults.js +133 -0
  94. package/dist/server/flow-surfaces/blueprint/index.d.ts +12 -0
  95. package/dist/server/flow-surfaces/blueprint/index.js +44 -0
  96. package/dist/server/flow-surfaces/blueprint/normalize-document.d.ts +10 -0
  97. package/dist/server/flow-surfaces/blueprint/normalize-document.js +416 -0
  98. package/dist/server/flow-surfaces/blueprint/private-utils.d.ts +26 -0
  99. package/dist/server/flow-surfaces/blueprint/private-utils.js +182 -0
  100. package/dist/server/flow-surfaces/blueprint/public-types.d.ts +193 -0
  101. package/dist/server/flow-surfaces/blueprint/public-types.js +24 -0
  102. package/dist/server/flow-surfaces/builder.d.ts +211 -0
  103. package/dist/server/flow-surfaces/builder.js +1029 -0
  104. package/dist/server/flow-surfaces/catalog-smart.d.ts +18 -0
  105. package/dist/server/flow-surfaces/catalog-smart.js +239 -0
  106. package/dist/server/flow-surfaces/catalog-smart.projector.d.ts +15 -0
  107. package/dist/server/flow-surfaces/catalog-smart.projector.js +157 -0
  108. package/dist/server/flow-surfaces/catalog-smart.types.d.ts +99 -0
  109. package/dist/server/flow-surfaces/catalog-smart.types.js +24 -0
  110. package/dist/server/flow-surfaces/catalog.d.ts +78 -0
  111. package/dist/server/flow-surfaces/catalog.js +3496 -0
  112. package/dist/server/flow-surfaces/chart-config.d.ts +121 -0
  113. package/dist/server/flow-surfaces/chart-config.js +1394 -0
  114. package/dist/server/flow-surfaces/compose-compiler.d.ts +108 -0
  115. package/dist/server/flow-surfaces/compose-compiler.js +167 -0
  116. package/dist/server/flow-surfaces/compose-runtime.d.ts +93 -0
  117. package/dist/server/flow-surfaces/compose-runtime.js +375 -0
  118. package/dist/server/flow-surfaces/configure-options.d.ts +23 -0
  119. package/dist/server/flow-surfaces/configure-options.js +827 -0
  120. package/dist/server/flow-surfaces/constants.d.ts +351 -0
  121. package/dist/server/flow-surfaces/constants.js +104 -0
  122. package/dist/server/flow-surfaces/context.d.ts +72 -0
  123. package/dist/server/flow-surfaces/context.js +556 -0
  124. package/dist/server/flow-surfaces/contract-guard.d.ts +19 -0
  125. package/dist/server/flow-surfaces/contract-guard.js +402 -0
  126. package/dist/server/flow-surfaces/default-action-popup.d.ts +63 -0
  127. package/dist/server/flow-surfaces/default-action-popup.js +322 -0
  128. package/dist/server/flow-surfaces/default-block-actions.d.ts +32 -0
  129. package/dist/server/flow-surfaces/default-block-actions.js +185 -0
  130. package/dist/server/flow-surfaces/errors.d.ts +47 -0
  131. package/dist/server/flow-surfaces/errors.js +145 -0
  132. package/dist/server/flow-surfaces/executor.d.ts +23 -0
  133. package/dist/server/flow-surfaces/executor.js +132 -0
  134. package/dist/server/flow-surfaces/field-binding-registry.d.ts +23 -0
  135. package/dist/server/flow-surfaces/field-binding-registry.js +391 -0
  136. package/dist/server/flow-surfaces/field-semantics.d.ts +15 -0
  137. package/dist/server/flow-surfaces/field-semantics.js +81 -0
  138. package/dist/server/flow-surfaces/filter-group.d.ts +15 -0
  139. package/dist/server/flow-surfaces/filter-group.js +94 -0
  140. package/dist/server/flow-surfaces/index.d.ts +11 -0
  141. package/dist/server/flow-surfaces/index.js +243 -0
  142. package/dist/server/flow-surfaces/locator.d.ts +28 -0
  143. package/dist/server/flow-surfaces/locator.js +240 -0
  144. package/dist/server/flow-surfaces/node-use-sets.d.ts +15 -0
  145. package/dist/server/flow-surfaces/node-use-sets.js +131 -0
  146. package/dist/server/flow-surfaces/payload-shape.d.ts +9 -0
  147. package/dist/server/flow-surfaces/payload-shape.js +61 -0
  148. package/dist/server/flow-surfaces/placement.d.ts +33 -0
  149. package/dist/server/flow-surfaces/placement.js +195 -0
  150. package/dist/server/flow-surfaces/planning/action-specs.d.ts +179 -0
  151. package/dist/server/flow-surfaces/planning/action-specs.js +190 -0
  152. package/dist/server/flow-surfaces/planning/compiler.d.ts +37 -0
  153. package/dist/server/flow-surfaces/planning/compiler.js +376 -0
  154. package/dist/server/flow-surfaces/planning/context.d.ts +30 -0
  155. package/dist/server/flow-surfaces/planning/context.js +139 -0
  156. package/dist/server/flow-surfaces/planning/created-keys.d.ts +34 -0
  157. package/dist/server/flow-surfaces/planning/created-keys.js +375 -0
  158. package/dist/server/flow-surfaces/planning/key-kind.d.ts +11 -0
  159. package/dist/server/flow-surfaces/planning/key-kind.js +88 -0
  160. package/dist/server/flow-surfaces/planning/key-persistence.d.ts +34 -0
  161. package/dist/server/flow-surfaces/planning/key-persistence.js +148 -0
  162. package/dist/server/flow-surfaces/planning/key-registry.d.ts +40 -0
  163. package/dist/server/flow-surfaces/planning/key-registry.js +206 -0
  164. package/dist/server/flow-surfaces/planning/runtime.d.ts +37 -0
  165. package/dist/server/flow-surfaces/planning/runtime.js +259 -0
  166. package/dist/server/flow-surfaces/planning/step-link.d.ts +14 -0
  167. package/dist/server/flow-surfaces/planning/step-link.js +104 -0
  168. package/dist/server/flow-surfaces/planning/types.d.ts +55 -0
  169. package/dist/server/flow-surfaces/planning/types.js +24 -0
  170. package/dist/server/flow-surfaces/public-data-surface-default-filter.d.ts +20 -0
  171. package/dist/server/flow-surfaces/public-data-surface-default-filter.js +111 -0
  172. package/dist/server/flow-surfaces/reaction/errors.d.ts +20 -0
  173. package/dist/server/flow-surfaces/reaction/errors.js +69 -0
  174. package/dist/server/flow-surfaces/reaction/field-value.d.ts +34 -0
  175. package/dist/server/flow-surfaces/reaction/field-value.js +181 -0
  176. package/dist/server/flow-surfaces/reaction/fingerprint.d.ts +16 -0
  177. package/dist/server/flow-surfaces/reaction/fingerprint.js +71 -0
  178. package/dist/server/flow-surfaces/reaction/linkage.d.ts +136 -0
  179. package/dist/server/flow-surfaces/reaction/linkage.js +882 -0
  180. package/dist/server/flow-surfaces/reaction/meta.d.ts +11 -0
  181. package/dist/server/flow-surfaces/reaction/meta.js +451 -0
  182. package/dist/server/flow-surfaces/reaction/registry.d.ts +156 -0
  183. package/dist/server/flow-surfaces/reaction/registry.js +206 -0
  184. package/dist/server/flow-surfaces/reaction/resolver.d.ts +22 -0
  185. package/dist/server/flow-surfaces/reaction/resolver.js +202 -0
  186. package/dist/server/flow-surfaces/reaction/types.d.ts +241 -0
  187. package/dist/server/flow-surfaces/reaction/types.js +24 -0
  188. package/dist/server/flow-surfaces/reaction/utils.d.ts +17 -0
  189. package/dist/server/flow-surfaces/reaction/utils.js +67 -0
  190. package/dist/server/flow-surfaces/reaction/value-expr.d.ts +15 -0
  191. package/dist/server/flow-surfaces/reaction/value-expr.js +209 -0
  192. package/dist/server/flow-surfaces/reference-guards.d.ts +19 -0
  193. package/dist/server/flow-surfaces/reference-guards.js +103 -0
  194. package/dist/server/flow-surfaces/route-sync.d.ts +47 -0
  195. package/dist/server/flow-surfaces/route-sync.js +392 -0
  196. package/dist/server/flow-surfaces/service-helpers.d.ts +42 -0
  197. package/dist/server/flow-surfaces/service-helpers.js +377 -0
  198. package/dist/server/flow-surfaces/service-utils.d.ts +108 -0
  199. package/dist/server/flow-surfaces/service-utils.js +811 -0
  200. package/dist/server/flow-surfaces/service.d.ts +773 -0
  201. package/dist/server/flow-surfaces/service.js +13008 -0
  202. package/dist/server/flow-surfaces/support-matrix.d.ts +31 -0
  203. package/dist/server/flow-surfaces/support-matrix.js +259 -0
  204. package/dist/server/flow-surfaces/surface-context.d.ts +52 -0
  205. package/dist/server/flow-surfaces/surface-context.js +437 -0
  206. package/dist/server/flow-surfaces/template-compatibility.d.ts +42 -0
  207. package/dist/server/flow-surfaces/template-compatibility.js +189 -0
  208. package/dist/server/flow-surfaces/template-display.d.ts +20 -0
  209. package/dist/server/flow-surfaces/template-display.js +289 -0
  210. package/dist/server/flow-surfaces/template-service-utils.d.ts +62 -0
  211. package/dist/server/flow-surfaces/template-service-utils.js +281 -0
  212. package/dist/server/flow-surfaces/types.d.ts +288 -0
  213. package/dist/server/flow-surfaces/types.js +24 -0
  214. package/dist/server/plugin.js +2 -0
  215. package/dist/swagger/flow-surfaces.d.ts +5964 -0
  216. package/dist/swagger/flow-surfaces.examples.d.ts +1533 -0
  217. package/dist/swagger/flow-surfaces.examples.js +1758 -0
  218. package/dist/swagger/flow-surfaces.js +5315 -0
  219. package/dist/swagger/flow-surfaces.template-action-docs.d.ts +62 -0
  220. package/dist/swagger/flow-surfaces.template-action-docs.js +121 -0
  221. package/dist/swagger/flow-surfaces.template-schemas.d.ts +239 -0
  222. package/dist/swagger/flow-surfaces.template-schemas.js +255 -0
  223. package/dist/swagger/index.d.ts +5969 -0
  224. package/dist/swagger/index.js +50 -0
  225. package/package.json +2 -2
  226. /package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/getContextApis.d.ts +0 -0
  227. /package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/getContextEnvs.d.ts +0 -0
  228. /package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/getContextVars.d.ts +0 -0
  229. /package/dist/ai/{tools → ai-employees/nathan/skills/frontend-developer/tools}/lintAndTestJS.d.ts +0 -0
@@ -0,0 +1,37 @@
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 _ from 'lodash';
10
+ import type { FlowSurfacePlanSelector, FlowSurfacePlanRequestValues, FlowSurfacePlanStep, FlowSurfaceReadLocator, FlowSurfaceResolvedTarget } from '../types';
11
+ import type { FlowSurfaceCompiledPlanStep, FlowSurfacePlanSurfaceContext } from './types';
12
+ type NormalizePlanSelectorDeps = {
13
+ normalizeGetTarget: (value: any) => FlowSurfaceReadLocator;
14
+ };
15
+ type NormalizePlanSelectorOptions = {
16
+ allowKey?: boolean;
17
+ };
18
+ type NormalizePlanStepsDeps = NormalizePlanSelectorDeps & {
19
+ validatePayloadShape: (actionName: string, value: any, path: string) => void;
20
+ };
21
+ type CompilePlanStepDeps = NormalizePlanSelectorDeps & {
22
+ resolveLocator: (target: FlowSurfaceReadLocator, options?: {
23
+ transaction?: any;
24
+ }) => Promise<FlowSurfaceResolvedTarget>;
25
+ buildPlanKeyKind: (node: any, resolvedKind?: string) => string;
26
+ };
27
+ export declare function normalizePlanSelector(actionName: string, selector: any, deps: NormalizePlanSelectorDeps, fieldName?: string, options?: NormalizePlanSelectorOptions): FlowSurfacePlanSelector;
28
+ export declare function normalizePlanSteps(actionName: string, values: FlowSurfacePlanRequestValues, deps: NormalizePlanStepsDeps): {
29
+ id: string;
30
+ action: "createMenu" | "setFieldValueRules" | "setBlockLinkageRules" | "setFieldLinkageRules" | "setActionLinkageRules" | "convertTemplateToCopy" | "compose" | "configure" | "createPage" | "destroyPage" | "addTab" | "updateTab" | "moveTab" | "removeTab" | "addPopupTab" | "updatePopupTab" | "movePopupTab" | "removePopupTab" | "addBlock" | "addField" | "addAction" | "addRecordAction" | "updateSettings" | "setEventFlows" | "setLayout" | "moveNode" | "removeNode";
31
+ selectors: _.Dictionary<any>;
32
+ values: Record<string, any>;
33
+ }[];
34
+ export declare function compilePlanStep(actionName: string, step: FlowSurfacePlanStep, index: number, context: FlowSurfacePlanSurfaceContext, deps: CompilePlanStepDeps, priorStepIds: Set<string>, priorCreatedKeys: Set<string>, options?: {
35
+ transaction?: any;
36
+ }): Promise<FlowSurfaceCompiledPlanStep>;
37
+ export {};
@@ -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 __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 compiler_exports = {};
38
+ __export(compiler_exports, {
39
+ compilePlanStep: () => compilePlanStep,
40
+ normalizePlanSelector: () => normalizePlanSelector,
41
+ normalizePlanSteps: () => normalizePlanSteps
42
+ });
43
+ module.exports = __toCommonJS(compiler_exports);
44
+ var import_lodash = __toESM(require("lodash"));
45
+ var import_errors = require("../errors");
46
+ var import_service_utils = require("../service-utils");
47
+ var import_action_specs = require("./action-specs");
48
+ var import_step_link = require("./step-link");
49
+ var import_created_keys = require("./created-keys");
50
+ function isFlowSurfaceResolvedStepLink(selector) {
51
+ return "step" in selector && selector.summary.source === "step";
52
+ }
53
+ function normalizePlanSelector(actionName, selector, deps, fieldName = "selector", options = {}) {
54
+ const allowKey = options.allowKey !== false;
55
+ if (!import_lodash.default.isPlainObject(selector)) {
56
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} ${fieldName} must be an object`);
57
+ }
58
+ if (allowKey && Object.keys(selector).length === 1 && typeof selector.key === "string" && selector.key.trim()) {
59
+ return {
60
+ key: selector.key.trim()
61
+ };
62
+ }
63
+ if (Object.keys(selector).length === 1 && import_lodash.default.isPlainObject(selector.locator)) {
64
+ return {
65
+ locator: deps.normalizeGetTarget(selector.locator)
66
+ };
67
+ }
68
+ if (Object.keys(selector).every((key) => ["step", "path"].includes(key)) && typeof selector.step === "string") {
69
+ return (0, import_step_link.normalizeFlowSurfacePlanStepLink)(actionName, selector, fieldName);
70
+ }
71
+ (0, import_errors.throwBadRequest)(
72
+ `flowSurfaces ${actionName} ${fieldName} must be ${allowKey ? "either { key }, { locator } or { step }" : "either { locator } or { step }"}`
73
+ );
74
+ }
75
+ function normalizePlanSteps(actionName, values, deps) {
76
+ if (!import_lodash.default.isPlainObject(values == null ? void 0 : values.plan) || !Array.isArray(values.plan.steps)) {
77
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} requires plan.steps[]`);
78
+ }
79
+ const seenIds = /* @__PURE__ */ new Set();
80
+ return values.plan.steps.map((rawStep, index) => {
81
+ if (!import_lodash.default.isPlainObject(rawStep)) {
82
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}] must be an object`);
83
+ }
84
+ if (Object.prototype.hasOwnProperty.call(rawStep, "target") || Object.prototype.hasOwnProperty.call(rawStep, "source")) {
85
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}] must use selectors.target / selectors.source`);
86
+ }
87
+ const action = String(rawStep.action || "").trim();
88
+ if (!action || !(0, import_action_specs.getFlowSurfacePlanActionSpec)(action)) {
89
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}].action is not supported`);
90
+ }
91
+ const selectorsInput = import_lodash.default.isUndefined(rawStep.selectors) ? {} : rawStep.selectors;
92
+ if (!import_lodash.default.isPlainObject(selectorsInput)) {
93
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}].selectors must be an object`);
94
+ }
95
+ const selectorKeys = Object.keys(selectorsInput || {});
96
+ if (selectorKeys.some((key) => !["target", "source"].includes(key))) {
97
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}].selectors only supports target/source`);
98
+ }
99
+ const stepValues = import_lodash.default.isUndefined(rawStep.values) ? {} : rawStep.values;
100
+ if (!import_lodash.default.isPlainObject(stepValues)) {
101
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}].values must be an object`);
102
+ }
103
+ const forbiddenKeys = ["target", "uid", "sourceUid", "targetUid"].filter(
104
+ (key) => Object.prototype.hasOwnProperty.call(stepValues, key)
105
+ );
106
+ if (forbiddenKeys.length) {
107
+ (0, import_errors.throwBadRequest)(
108
+ `flowSurfaces ${actionName} plan.steps[${index}].values must not include ${forbiddenKeys.join(
109
+ ", "
110
+ )}; use selectors`
111
+ );
112
+ }
113
+ deps.validatePayloadShape(actionName, stepValues, `plan.steps[${index}].values`);
114
+ const id = typeof rawStep.id === "string" && rawStep.id.trim() ? rawStep.id.trim() : void 0;
115
+ if (id) {
116
+ if (seenIds.has(id)) {
117
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}].id '${id}' is duplicated`);
118
+ }
119
+ seenIds.add(id);
120
+ }
121
+ return {
122
+ id,
123
+ action,
124
+ selectors: (0, import_service_utils.buildDefinedPayload)({
125
+ target: import_lodash.default.isUndefined(selectorsInput.target) ? void 0 : normalizePlanSelector(actionName, selectorsInput.target, deps, `plan.steps[${index}].selectors.target`),
126
+ source: import_lodash.default.isUndefined(selectorsInput.source) ? void 0 : normalizePlanSelector(actionName, selectorsInput.source, deps, `plan.steps[${index}].selectors.source`)
127
+ }),
128
+ values: import_lodash.default.cloneDeep(stepValues)
129
+ };
130
+ });
131
+ }
132
+ function buildPlanStepSelectorSummary(stepLink) {
133
+ return {
134
+ source: "step",
135
+ step: stepLink.step,
136
+ ...stepLink.path ? { path: stepLink.path } : {}
137
+ };
138
+ }
139
+ async function resolvePlanSelectorInContext(actionName, selector, context, deps, fieldName, priorStepIds, priorCreatedKeys, options = {}) {
140
+ const normalizedSelector = normalizePlanSelector(actionName, selector, deps, fieldName);
141
+ if ("step" in normalizedSelector) {
142
+ if (!priorStepIds.has(normalizedSelector.step)) {
143
+ (0, import_errors.throwBadRequest)(
144
+ `flowSurfaces ${actionName} ${fieldName}.step '${normalizedSelector.step}' is not a previous step id`
145
+ );
146
+ }
147
+ return {
148
+ ...normalizedSelector,
149
+ summary: buildPlanStepSelectorSummary(normalizedSelector)
150
+ };
151
+ }
152
+ if ("key" in normalizedSelector) {
153
+ const keyInfo = context.keyMap.get(normalizedSelector.key);
154
+ if (keyInfo) {
155
+ return keyInfo;
156
+ }
157
+ if (priorCreatedKeys.has(normalizedSelector.key)) {
158
+ return {
159
+ key: normalizedSelector.key,
160
+ summary: {
161
+ source: "created",
162
+ key: normalizedSelector.key
163
+ }
164
+ };
165
+ }
166
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} ${fieldName}.key '${normalizedSelector.key}' is not defined`);
167
+ }
168
+ const resolved = await deps.resolveLocator(normalizedSelector.locator, options);
169
+ if (!context.surfaceResolved) {
170
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} ${fieldName} locator requires surface`);
171
+ }
172
+ if (!context.uidSet.has(resolved.uid)) {
173
+ (0, import_errors.throwBadRequest)(
174
+ `flowSurfaces ${actionName} ${fieldName} locator must resolve inside the current surface '${context.surfaceResolved.uid}'`
175
+ );
176
+ }
177
+ const node = context.publicNodeMap[resolved.uid] || (resolved.uid === context.surfaceResolved.uid ? context.publicTree : void 0);
178
+ return {
179
+ key: "",
180
+ uid: resolved.uid,
181
+ source: "system",
182
+ kind: deps.buildPlanKeyKind(node, resolved.kind),
183
+ locator: (0, import_service_utils.buildDefinedPayload)({
184
+ uid: normalizedSelector.locator.uid,
185
+ pageSchemaUid: normalizedSelector.locator.pageSchemaUid,
186
+ tabSchemaUid: normalizedSelector.locator.tabSchemaUid,
187
+ routeId: normalizedSelector.locator.routeId
188
+ })
189
+ };
190
+ }
191
+ function buildMutateOp(type, payload, opId) {
192
+ if (import_lodash.default.isPlainObject(payload.target)) {
193
+ return {
194
+ ...opId ? { opId } : {},
195
+ type,
196
+ target: payload.target,
197
+ values: import_lodash.default.omit(payload, ["target"])
198
+ };
199
+ }
200
+ return {
201
+ ...opId ? { opId } : {},
202
+ type,
203
+ values: payload
204
+ };
205
+ }
206
+ function buildSelectorRuntimeValue(selector) {
207
+ if ("summary" in selector) {
208
+ if ("step" in selector) {
209
+ return {
210
+ step: selector.step,
211
+ ...selector.path ? { path: selector.path } : {}
212
+ };
213
+ }
214
+ return {
215
+ key: selector.key
216
+ };
217
+ }
218
+ return selector.uid;
219
+ }
220
+ async function compilePlanStep(actionName, step, index, context, deps, priorStepIds, priorCreatedKeys, options = {}) {
221
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
222
+ const runtimeValues = step.action === "compose" ? (0, import_created_keys.normalizeComposeInlineKeysForPlan)(step.values || {}, `plan.steps[${index}].values`) : import_lodash.default.cloneDeep(step.values || {});
223
+ const payload = (0, import_step_link.replaceFlowSurfacePlanStepLinks)(
224
+ actionName,
225
+ runtimeValues,
226
+ `plan.steps[${index}].values`,
227
+ priorStepIds,
228
+ /* @__PURE__ */ new Set([...context.keyMap.keys(), ...priorCreatedKeys])
229
+ );
230
+ const targetSelectorKey = (0, import_created_keys.isFlowSurfacePureKeyObject)((_a = step.selectors) == null ? void 0 : _a.target) ? String(step.selectors.target.key || "").trim() : void 0;
231
+ const createdKeys = (0, import_created_keys.collectFlowSurfaceCreatedKeys)(step.action, step.values || {}, {
232
+ targetSelectorKey
233
+ });
234
+ (0, import_created_keys.assertNoDuplicateFlowSurfaceCreatedKeys)(createdKeys, `flowSurfaces ${actionName} plan.steps[${index}]`, {
235
+ existingKeys: [...context.keyMap.keys(), ...priorCreatedKeys],
236
+ reservedNames: [...priorStepIds, ...step.id ? [step.id] : []]
237
+ });
238
+ const compiled = {
239
+ index,
240
+ ...step.id ? { id: step.id } : {},
241
+ action: step.action,
242
+ payload,
243
+ resolvedSelectors: {},
244
+ usedKeys: [],
245
+ usedStepLinks: [],
246
+ createdKeys
247
+ };
248
+ const addUsedKey = (selector) => {
249
+ if ("summary" in selector) {
250
+ if (isFlowSurfaceResolvedStepLink(selector)) {
251
+ compiled.usedStepLinks.push(selector);
252
+ }
253
+ return selector.summary;
254
+ }
255
+ if (selector.source === "request" || selector.source === "declared") {
256
+ compiled.usedKeys.push(selector);
257
+ }
258
+ return {
259
+ uid: selector.uid,
260
+ kind: selector.kind,
261
+ ...selector.key ? { key: selector.key } : {},
262
+ source: selector.source
263
+ };
264
+ };
265
+ const spec = (0, import_action_specs.getFlowSurfacePlanActionSpec)(step.action);
266
+ if (!spec) {
267
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}].action '${step.action}' is not supported`);
268
+ }
269
+ const selectorRequirements = (0, import_action_specs.getFlowSurfacePlanSelectorRequirements)(spec.selectorMode);
270
+ if (selectorRequirements.requiresTarget && !((_b = step.selectors) == null ? void 0 : _b.target)) {
271
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}] requires selectors.target`);
272
+ }
273
+ if (!selectorRequirements.requiresTarget && ((_c = step.selectors) == null ? void 0 : _c.target)) {
274
+ (0, import_errors.throwBadRequest)(
275
+ `flowSurfaces ${actionName} plan.steps[${index}] action '${step.action}' does not support selectors.target`
276
+ );
277
+ }
278
+ if (selectorRequirements.requiresSource && !((_d = step.selectors) == null ? void 0 : _d.source)) {
279
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}] requires selectors.source`);
280
+ }
281
+ if (!selectorRequirements.requiresSource && ((_e = step.selectors) == null ? void 0 : _e.source)) {
282
+ (0, import_errors.throwBadRequest)(
283
+ `flowSurfaces ${actionName} plan.steps[${index}] action '${step.action}' does not support selectors.source`
284
+ );
285
+ }
286
+ if (spec.selectorMode === "none") {
287
+ compiled.payload = payload;
288
+ } else if (spec.selectorMode === "target") {
289
+ const targetSelector = (_f = step.selectors) == null ? void 0 : _f.target;
290
+ if (!targetSelector) {
291
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}] requires selectors.target`);
292
+ }
293
+ const target = await resolvePlanSelectorInContext(
294
+ actionName,
295
+ targetSelector,
296
+ context,
297
+ deps,
298
+ `plan.steps[${index}].selectors.target`,
299
+ priorStepIds,
300
+ priorCreatedKeys,
301
+ options
302
+ );
303
+ compiled.payload = {
304
+ ...payload,
305
+ target: {
306
+ uid: buildSelectorRuntimeValue(target)
307
+ }
308
+ };
309
+ compiled.resolvedSelectors.target = addUsedKey(target);
310
+ } else if (spec.selectorMode === "rootUidTarget") {
311
+ const targetSelector = (_g = step.selectors) == null ? void 0 : _g.target;
312
+ if (!targetSelector) {
313
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}] requires selectors.target`);
314
+ }
315
+ const target = await resolvePlanSelectorInContext(
316
+ actionName,
317
+ targetSelector,
318
+ context,
319
+ deps,
320
+ `plan.steps[${index}].selectors.target`,
321
+ priorStepIds,
322
+ priorCreatedKeys,
323
+ options
324
+ );
325
+ compiled.payload = {
326
+ ...payload,
327
+ uid: buildSelectorRuntimeValue(target)
328
+ };
329
+ compiled.resolvedSelectors.target = addUsedKey(target);
330
+ } else if (spec.selectorMode === "sourceTarget") {
331
+ const sourceSelector = (_h = step.selectors) == null ? void 0 : _h.source;
332
+ const targetSelector = (_i = step.selectors) == null ? void 0 : _i.target;
333
+ if (!sourceSelector || !targetSelector) {
334
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}] requires selectors.source and selectors.target`);
335
+ }
336
+ const source = await resolvePlanSelectorInContext(
337
+ actionName,
338
+ sourceSelector,
339
+ context,
340
+ deps,
341
+ `plan.steps[${index}].selectors.source`,
342
+ priorStepIds,
343
+ priorCreatedKeys,
344
+ options
345
+ );
346
+ const target = await resolvePlanSelectorInContext(
347
+ actionName,
348
+ targetSelector,
349
+ context,
350
+ deps,
351
+ `plan.steps[${index}].selectors.target`,
352
+ priorStepIds,
353
+ priorCreatedKeys,
354
+ options
355
+ );
356
+ compiled.payload = {
357
+ ...payload,
358
+ sourceUid: buildSelectorRuntimeValue(source),
359
+ targetUid: buildSelectorRuntimeValue(target)
360
+ };
361
+ compiled.resolvedSelectors.source = addUsedKey(source);
362
+ compiled.resolvedSelectors.target = addUsedKey(target);
363
+ } else {
364
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} plan.steps[${index}].action '${step.action}' is not supported`);
365
+ }
366
+ if (spec.executionKind === "mutate") {
367
+ compiled.mutateOp = buildMutateOp(step.action, compiled.payload, step.id);
368
+ }
369
+ return compiled;
370
+ }
371
+ // Annotate the CommonJS export names for ESM import in node:
372
+ 0 && (module.exports = {
373
+ compilePlanStep,
374
+ normalizePlanSelector,
375
+ normalizePlanSteps
376
+ });
@@ -0,0 +1,30 @@
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 { FlowSurfaceBindKey, FlowSurfaceReadLocator, FlowSurfaceReadTarget, FlowSurfaceResolvedTarget, FlowSurfaceSurfaceSelector } from '../types';
10
+ import type { FlowSurfacePlanSurfaceContext, FlowSurfaceResolvedKey } from './types';
11
+ type BuildPlanSurfaceContextDeps = {
12
+ resolveLocator: (target: FlowSurfaceReadLocator, options?: {
13
+ transaction?: any;
14
+ }) => Promise<FlowSurfaceResolvedTarget>;
15
+ loadResolvedSurfaceTree: (resolved: FlowSurfaceResolvedTarget, transaction?: any) => Promise<any>;
16
+ stripInternalSurfaceMetaFromNodeTree: <T = any>(node: T) => T;
17
+ buildReadTargetSummary: (target: FlowSurfaceReadLocator, resolved: FlowSurfaceResolvedTarget) => FlowSurfaceReadTarget;
18
+ buildSurfaceContextFingerprint: (context: Pick<FlowSurfacePlanSurfaceContext, 'surfaceResolved' | 'publicTree' | 'keyMap'>) => string;
19
+ buildPlanKeyKind: (node: any, resolvedKind?: string) => string;
20
+ assertBindKeyKind: (actionName: string, bindKey: FlowSurfaceBindKey, node: any, resolvedKind?: string) => void;
21
+ collectDeclaredKeysFromTree: (node: any) => Map<string, FlowSurfaceResolvedKey>;
22
+ };
23
+ export declare function buildPlanSurfaceContext(input: {
24
+ actionName: string;
25
+ surfaceSelector?: FlowSurfaceSurfaceSelector;
26
+ bindKeys: FlowSurfaceBindKey[];
27
+ }, deps: BuildPlanSurfaceContextDeps, options?: {
28
+ transaction?: any;
29
+ }): Promise<FlowSurfacePlanSurfaceContext>;
30
+ export {};
@@ -0,0 +1,139 @@
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 context_exports = {};
38
+ __export(context_exports, {
39
+ buildPlanSurfaceContext: () => buildPlanSurfaceContext
40
+ });
41
+ module.exports = __toCommonJS(context_exports);
42
+ var import_lodash = __toESM(require("lodash"));
43
+ var import_errors = require("../errors");
44
+ var import_service_utils = require("../service-utils");
45
+ var import_key_registry = require("./key-registry");
46
+ async function buildPlanSurfaceContext(input, deps, options = {}) {
47
+ const { actionName, surfaceSelector, bindKeys } = input;
48
+ if (!surfaceSelector) {
49
+ if (bindKeys.length) {
50
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} bindKeys require surface`);
51
+ }
52
+ return {
53
+ publicNodeMap: {},
54
+ targetSummary: null,
55
+ fingerprint: null,
56
+ uidSet: /* @__PURE__ */ new Set(),
57
+ keyMap: /* @__PURE__ */ new Map(),
58
+ requestKeyMap: /* @__PURE__ */ new Map()
59
+ };
60
+ }
61
+ let surfaceTarget;
62
+ if ("key" in surfaceSelector) {
63
+ const matchedBindKey = bindKeys.find((item) => item.key === surfaceSelector.key);
64
+ if (!matchedBindKey) {
65
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${actionName} surface.key '${surfaceSelector.key}' must also appear in bindKeys`);
66
+ }
67
+ surfaceTarget = matchedBindKey.locator;
68
+ } else {
69
+ surfaceTarget = surfaceSelector.locator;
70
+ }
71
+ const surfaceResolved = await deps.resolveLocator(surfaceTarget, options);
72
+ const rawTree = await deps.loadResolvedSurfaceTree(surfaceResolved, options.transaction);
73
+ const publicTree = deps.stripInternalSurfaceMetaFromNodeTree(import_lodash.default.cloneDeep(rawTree));
74
+ const publicNodeMap = (0, import_service_utils.flattenModel)(publicTree);
75
+ const uidSet = /* @__PURE__ */ new Set([surfaceResolved.uid, ...Object.keys(publicNodeMap)]);
76
+ const keyMap = deps.collectDeclaredKeysFromTree(rawTree);
77
+ const requestKeyMap = /* @__PURE__ */ new Map();
78
+ for (const bindKey of bindKeys) {
79
+ const resolved = await deps.resolveLocator(bindKey.locator, options);
80
+ if (!uidSet.has(resolved.uid)) {
81
+ (0, import_errors.throwBadRequest)(
82
+ `flowSurfaces ${actionName} bindKeys key '${bindKey.key}' must resolve inside the current surface '${surfaceResolved.uid}'`
83
+ );
84
+ }
85
+ const node = publicNodeMap[resolved.uid] || (resolved.uid === surfaceResolved.uid ? publicTree : void 0);
86
+ deps.assertBindKeyKind(actionName, bindKey, node, resolved.kind);
87
+ const existing = requestKeyMap.get(bindKey.key) || keyMap.get(bindKey.key);
88
+ if (existing && existing.uid !== resolved.uid && !bindKey.rebind) {
89
+ (0, import_errors.throwConflict)(
90
+ `flowSurfaces ${actionName} key '${bindKey.key}' is already bound to '${existing.uid}', set rebind=true to move it`,
91
+ "FLOW_SURFACE_DECLARED_KEY_CONFLICT"
92
+ );
93
+ }
94
+ requestKeyMap.set(bindKey.key, {
95
+ key: bindKey.key,
96
+ uid: resolved.uid,
97
+ source: "request",
98
+ kind: deps.buildPlanKeyKind(node, resolved.kind),
99
+ locator: {
100
+ uid: resolved.uid
101
+ },
102
+ rebind: bindKey.rebind === true,
103
+ reboundFromUid: existing && existing.uid !== resolved.uid ? existing.uid : void 0
104
+ });
105
+ }
106
+ requestKeyMap.forEach((value, key) => keyMap.set(key, value));
107
+ keyMap.set(import_key_registry.FLOW_SURFACE_SYSTEM_KEY, {
108
+ key: import_key_registry.FLOW_SURFACE_SYSTEM_KEY,
109
+ uid: surfaceResolved.uid,
110
+ source: "system",
111
+ kind: deps.buildPlanKeyKind(publicTree, surfaceResolved.kind),
112
+ locator: {
113
+ uid: surfaceResolved.uid
114
+ }
115
+ });
116
+ const targetSummary = deps.buildReadTargetSummary(surfaceTarget, surfaceResolved);
117
+ const fingerprint = deps.buildSurfaceContextFingerprint({
118
+ surfaceResolved,
119
+ publicTree,
120
+ keyMap
121
+ });
122
+ return {
123
+ surfaceSelector,
124
+ surfaceTarget,
125
+ surfaceResolved,
126
+ rawTree,
127
+ publicTree,
128
+ publicNodeMap,
129
+ targetSummary,
130
+ fingerprint,
131
+ uidSet,
132
+ keyMap,
133
+ requestKeyMap
134
+ };
135
+ }
136
+ // Annotate the CommonJS export names for ESM import in node:
137
+ 0 && (module.exports = {
138
+ buildPlanSurfaceContext
139
+ });
@@ -0,0 +1,34 @@
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 type FlowSurfaceCreatedKeySpec = {
10
+ key: string;
11
+ resultPath: string;
12
+ };
13
+ type CollectFlowSurfaceCreatedKeysOptions = {
14
+ targetSelectorKey?: string;
15
+ };
16
+ export declare function normalizeFlowSurfaceCreatedKey(key: any, context: string): string;
17
+ export declare function collectFlowSurfaceCreatedKeys(action: string, values: any, options?: CollectFlowSurfaceCreatedKeysOptions): FlowSurfaceCreatedKeySpec[];
18
+ export declare function assertNoDuplicateFlowSurfaceCreatedKeys(specs: FlowSurfaceCreatedKeySpec[], context: string, options?: {
19
+ existingKeys?: Iterable<string>;
20
+ reservedNames?: Iterable<string>;
21
+ }): void;
22
+ export declare function registerFlowSurfaceCreatedKeys(result: any, specs: FlowSurfaceCreatedKeySpec[], keys: Map<string, any>): {
23
+ key: string;
24
+ uid: string;
25
+ }[];
26
+ export declare function collectPersistableFlowSurfaceCreatedKeys(result: any, specs: FlowSurfaceCreatedKeySpec[]): {
27
+ key: string;
28
+ uid: string;
29
+ }[];
30
+ export declare function isFlowSurfacePureKeyObject(input: any): input is {
31
+ key: string;
32
+ };
33
+ export declare function normalizeComposeInlineKeysForPlan(values: any, contextPath: string): any;
34
+ export {};