@nocobase/flow-engine 2.0.0-alpha.7 → 2.0.0-alpha.71

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 (589) hide show
  1. package/lib/BlockScopedFlowEngine.d.ts +23 -0
  2. package/lib/BlockScopedFlowEngine.js +91 -0
  3. package/lib/FlowContextProvider.d.ts +2 -2
  4. package/lib/FlowContextProvider.js +3 -3
  5. package/lib/FlowDefinition.d.ts +6 -4
  6. package/lib/JSRunner.d.ts +6 -0
  7. package/lib/JSRunner.js +27 -1
  8. package/lib/ViewScopedFlowEngine.d.ts +1 -1
  9. package/lib/ViewScopedFlowEngine.js +18 -1
  10. package/lib/acl/Acl.d.ts +12 -12
  11. package/lib/acl/Acl.js +88 -30
  12. package/lib/components/DynamicFlowsEditor.js +2 -4
  13. package/lib/components/FieldModelRenderer.js +17 -9
  14. package/lib/components/FieldSkeleton.d.ts +10 -0
  15. package/lib/components/FieldSkeleton.js +64 -0
  16. package/lib/components/FlowContextSelector.js +19 -3
  17. package/lib/components/FlowModelRenderer.d.ts +4 -6
  18. package/lib/components/FlowModelRenderer.js +35 -53
  19. package/lib/components/FormItem.js +5 -1
  20. package/lib/components/MobilePopup.d.ts +20 -0
  21. package/lib/components/MobilePopup.js +102 -0
  22. package/lib/components/MobilePopup.style.d.ts +17 -0
  23. package/lib/components/MobilePopup.style.js +186 -0
  24. package/lib/components/common/withFlowDesignMode.d.ts +1 -1
  25. package/lib/components/common/withFlowDesignMode.js +5 -5
  26. package/lib/components/dnd/gridDragPlanner.d.ts +1 -0
  27. package/lib/components/dnd/gridDragPlanner.js +53 -1
  28. package/lib/components/index.d.ts +1 -0
  29. package/lib/components/index.js +3 -1
  30. package/lib/components/settings/independents/dropdown/FlowsDropdownButton.js +71 -53
  31. package/lib/components/settings/wrappers/component/SelectWithTitle.d.ts +19 -0
  32. package/lib/components/settings/wrappers/component/SelectWithTitle.js +136 -0
  33. package/lib/components/settings/wrappers/component/SwitchWithTitle.d.ts +10 -0
  34. package/lib/components/settings/wrappers/component/SwitchWithTitle.js +111 -0
  35. package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +233 -97
  36. package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +71 -54
  37. package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.d.ts +2 -2
  38. package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.js +63 -23
  39. package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +13 -2
  40. package/lib/components/settings/wrappers/embedded/FlowSettings.js +42 -28
  41. package/lib/components/settings/wrappers/embedded/FlowsSettings.js +3 -3
  42. package/lib/components/settings/wrappers/embedded/FlowsSettingsContent.js +52 -32
  43. package/lib/components/subModel/AddSubModelButton.d.ts +7 -0
  44. package/lib/components/subModel/AddSubModelButton.js +78 -8
  45. package/lib/components/subModel/LazyDropdown.js +14 -15
  46. package/lib/components/subModel/utils.d.ts +1 -1
  47. package/lib/components/subModel/utils.js +21 -11
  48. package/lib/components/variables/VariableInput.js +26 -6
  49. package/lib/components/variables/VariableTag.js +43 -2
  50. package/lib/components/variables/types.d.ts +2 -0
  51. package/lib/components/variables/utils.js +4 -2
  52. package/lib/data-source/index.d.ts +23 -4
  53. package/lib/data-source/index.js +135 -14
  54. package/lib/data-source/jioToJoiSchema.js +1 -0
  55. package/lib/emitter.d.ts +6 -0
  56. package/lib/emitter.js +12 -0
  57. package/lib/executor/FlowExecutor.d.ts +6 -6
  58. package/lib/executor/FlowExecutor.js +302 -99
  59. package/lib/flow-registry/GlobalFlowRegistry.d.ts +1 -0
  60. package/lib/flow-registry/GlobalFlowRegistry.js +3 -0
  61. package/lib/flow-registry/InstanceFlowRegistry.d.ts +1 -0
  62. package/lib/flow-registry/InstanceFlowRegistry.js +3 -0
  63. package/lib/flowContext.d.ts +105 -6
  64. package/lib/flowContext.js +447 -139
  65. package/lib/flowEngine.d.ts +71 -1
  66. package/lib/flowEngine.js +319 -16
  67. package/lib/flowSettings.d.ts +4 -3
  68. package/lib/flowSettings.js +45 -21
  69. package/lib/hooks/useApplyAutoFlows.d.ts +1 -0
  70. package/lib/hooks/useApplyAutoFlows.js +3 -2
  71. package/lib/index.d.ts +14 -3
  72. package/lib/index.js +54 -7
  73. package/lib/locale/de-DE.json +62 -0
  74. package/lib/locale/en-US.json +57 -45
  75. package/lib/locale/es-ES.json +62 -0
  76. package/lib/locale/fr-FR.json +62 -0
  77. package/lib/locale/hu-HU.json +62 -0
  78. package/lib/locale/id-ID.json +62 -0
  79. package/lib/locale/index.d.ts +114 -90
  80. package/lib/locale/it-IT.json +62 -0
  81. package/lib/locale/ja-JP.json +62 -0
  82. package/lib/locale/ko-KR.json +62 -0
  83. package/lib/locale/nl-NL.json +62 -0
  84. package/lib/locale/pt-BR.json +62 -0
  85. package/lib/locale/ru-RU.json +62 -0
  86. package/lib/locale/tr-TR.json +62 -0
  87. package/lib/locale/uk-UA.json +62 -0
  88. package/lib/locale/vi-VN.json +62 -0
  89. package/lib/locale/zh-CN.json +58 -46
  90. package/lib/locale/zh-TW.json +62 -0
  91. package/lib/models/CollectionFieldModel.d.ts +7 -2
  92. package/lib/models/CollectionFieldModel.js +63 -16
  93. package/lib/models/flowModel.d.ts +76 -32
  94. package/lib/models/flowModel.js +300 -112
  95. package/lib/models/forkFlowModel.d.ts +8 -4
  96. package/lib/models/forkFlowModel.js +38 -8
  97. package/lib/provider.d.ts +3 -1
  98. package/lib/provider.js +14 -11
  99. package/lib/reactive/index.d.ts +10 -0
  100. package/lib/{runjs-context/snippets/global/api-request-post.snippet.js → reactive/index.js} +14 -15
  101. package/lib/reactive/observer.d.ts +19 -0
  102. package/lib/reactive/observer.js +109 -0
  103. package/lib/resources/baseRecordResource.d.ts +6 -0
  104. package/lib/resources/baseRecordResource.js +38 -3
  105. package/lib/resources/multiRecordResource.d.ts +5 -2
  106. package/lib/resources/multiRecordResource.js +26 -10
  107. package/lib/resources/singleRecordResource.js +8 -3
  108. package/lib/resources/sqlResource.d.ts +5 -3
  109. package/lib/resources/sqlResource.js +30 -28
  110. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +1 -6
  111. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +37 -20
  112. package/lib/runjs-context/contexts/JSBlockRunJSContext.d.ts +1 -6
  113. package/lib/runjs-context/contexts/JSBlockRunJSContext.js +46 -33
  114. package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.d.ts +1 -2
  115. package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.js +14 -15
  116. package/lib/runjs-context/contexts/{LinkageRunJSContext.d.ts → JSColumnRunJSContext.d.ts} +6 -3
  117. package/lib/runjs-context/contexts/JSColumnRunJSContext.js +78 -0
  118. package/lib/runjs-context/contexts/JSEditableFieldRunJSContext.d.ts +16 -0
  119. package/lib/runjs-context/contexts/JSEditableFieldRunJSContext.js +125 -0
  120. package/lib/runjs-context/contexts/JSFieldRunJSContext.d.ts +1 -6
  121. package/lib/runjs-context/contexts/JSFieldRunJSContext.js +28 -24
  122. package/lib/runjs-context/contexts/JSItemRunJSContext.d.ts +1 -6
  123. package/lib/runjs-context/contexts/JSItemRunJSContext.js +34 -20
  124. package/lib/runjs-context/contexts/JSRecordActionRunJSContext.d.ts +1 -2
  125. package/lib/runjs-context/contexts/JSRecordActionRunJSContext.js +16 -17
  126. package/lib/runjs-context/contexts/base.d.ts +9 -0
  127. package/lib/runjs-context/contexts/base.js +879 -0
  128. package/lib/runjs-context/contributions.d.ts +33 -0
  129. package/lib/runjs-context/contributions.js +88 -0
  130. package/lib/runjs-context/helpers.d.ts +5 -2
  131. package/lib/runjs-context/helpers.js +36 -27
  132. package/lib/runjs-context/registry.d.ts +7 -4
  133. package/lib/runjs-context/registry.js +10 -42
  134. package/lib/runjs-context/setup.d.ts +9 -0
  135. package/lib/runjs-context/setup.js +88 -0
  136. package/lib/runjs-context/snippets/global/{copy-record-json.snippet.js → api-request.snippet.js} +25 -10
  137. package/lib/runjs-context/snippets/global/clipboard-copy-text.snippet.js +61 -0
  138. package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.js → import-esm.snippet.js} +26 -12
  139. package/lib/runjs-context/snippets/global/message-error.snippet.js +6 -0
  140. package/lib/runjs-context/snippets/global/message-success.snippet.js +6 -0
  141. package/lib/runjs-context/snippets/global/notification-open.snippet.d.ts +3 -8
  142. package/lib/runjs-context/snippets/global/notification-open.snippet.js +8 -1
  143. package/lib/runjs-context/snippets/global/open-view-dialog.snippet.js +10 -3
  144. package/lib/runjs-context/snippets/global/open-view-drawer.snippet.js +10 -3
  145. package/lib/runjs-context/snippets/global/query-selector.snippet.js +53 -0
  146. package/lib/runjs-context/snippets/global/require-amd.snippet.d.ts +11 -0
  147. package/lib/runjs-context/snippets/global/{requireAsync.snippet.js → require-amd.snippet.js} +16 -13
  148. package/lib/runjs-context/snippets/global/window-open.snippet.d.ts +3 -8
  149. package/lib/runjs-context/snippets/global/window-open.snippet.js +8 -1
  150. package/lib/runjs-context/snippets/index.d.ts +24 -3
  151. package/lib/runjs-context/snippets/index.js +183 -40
  152. package/lib/runjs-context/snippets/scene/block/add-event-listener.snippet.d.ts +11 -0
  153. package/lib/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.js +11 -2
  154. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.d.ts +11 -0
  155. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.js +64 -0
  156. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.d.ts +11 -0
  157. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.js +99 -0
  158. package/lib/runjs-context/snippets/{libs → scene/block}/echarts-init.snippet.js +24 -7
  159. package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.d.ts +11 -0
  160. package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.js +65 -0
  161. package/lib/runjs-context/snippets/scene/block/render-button-handler.snippet.d.ts +11 -0
  162. package/lib/runjs-context/snippets/scene/{jsblock → block}/render-button-handler.snippet.js +17 -9
  163. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.d.ts +11 -0
  164. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.js +57 -0
  165. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.d.ts +11 -0
  166. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.js +71 -0
  167. package/lib/runjs-context/snippets/scene/block/render-react-jsx.snippet.d.ts +11 -0
  168. package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.js → block/render-react-jsx.snippet.js} +26 -13
  169. package/lib/runjs-context/snippets/scene/block/render-react.snippet.d.ts +11 -0
  170. package/lib/runjs-context/snippets/scene/{jsblock → block}/render-react.snippet.js +18 -17
  171. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.d.ts +11 -0
  172. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.js +95 -0
  173. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.d.ts +11 -0
  174. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.js +84 -0
  175. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.d.ts +11 -0
  176. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.js +60 -0
  177. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.d.ts +11 -0
  178. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.js +283 -0
  179. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.d.ts +11 -0
  180. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.js +124 -0
  181. package/lib/runjs-context/snippets/scene/detail/color-by-value.snippet.d.ts +11 -0
  182. package/lib/runjs-context/snippets/scene/{jsfield → detail}/color-by-value.snippet.js +13 -3
  183. package/lib/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.d.ts +11 -0
  184. package/lib/runjs-context/snippets/{global → scene/detail}/copy-to-clipboard.snippet.js +28 -6
  185. package/lib/runjs-context/snippets/scene/detail/format-number.snippet.d.ts +11 -0
  186. package/lib/runjs-context/snippets/scene/{jsfield → detail}/format-number.snippet.js +13 -3
  187. package/lib/runjs-context/snippets/scene/detail/innerHTML-value.snippet.d.ts +11 -0
  188. package/lib/runjs-context/snippets/scene/{jsfield → detail}/innerHTML-value.snippet.js +13 -3
  189. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.d.ts +11 -0
  190. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.js +82 -0
  191. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.d.ts +11 -0
  192. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.js +80 -0
  193. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.d.ts +11 -0
  194. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.js +74 -0
  195. package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.d.ts +11 -0
  196. package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.js +63 -0
  197. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.d.ts +11 -0
  198. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.js +81 -0
  199. package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.d.ts +11 -0
  200. package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.js +64 -0
  201. package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.d.ts +11 -0
  202. package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.js +74 -0
  203. package/lib/runjs-context/snippets/scene/form/render-basic.snippet.d.ts +11 -0
  204. package/lib/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.js +11 -2
  205. package/lib/runjs-context/snippets/scene/form/set-disabled.snippet.d.ts +11 -0
  206. package/lib/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.js +12 -3
  207. package/lib/runjs-context/snippets/scene/form/set-field-value.snippet.d.ts +11 -0
  208. package/lib/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.js +12 -3
  209. package/lib/runjs-context/snippets/scene/form/set-required.snippet.d.ts +11 -0
  210. package/lib/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.js +12 -3
  211. package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.d.ts +11 -0
  212. package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.js +67 -0
  213. package/lib/runjs-context/snippets/scene/form/toggle-visible.snippet.d.ts +11 -0
  214. package/lib/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.js +12 -3
  215. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.d.ts +11 -0
  216. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.js +64 -0
  217. package/lib/runjs-context/snippets/scene/table/collection-selected-count.snippet.d.ts +11 -0
  218. package/lib/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.js +11 -2
  219. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.d.ts +11 -0
  220. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.js +79 -0
  221. package/lib/runjs-context/snippets/scene/table/destroy-selected.snippet.d.ts +11 -0
  222. package/lib/runjs-context/snippets/{global/log-json-record.snippet.js → scene/table/destroy-selected.snippet.js} +24 -11
  223. package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.d.ts +11 -0
  224. package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.js +64 -0
  225. package/lib/runjs-context/snippets/scene/table/iterate-selected-rows.snippet.d.ts +11 -0
  226. package/lib/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.js +11 -2
  227. package/lib/runjs-context/snippets/types.d.ts +9 -1
  228. package/lib/runjsLibs.d.ts +28 -0
  229. package/lib/runjsLibs.js +532 -0
  230. package/lib/scheduler/ModelOperationScheduler.d.ts +53 -0
  231. package/lib/scheduler/ModelOperationScheduler.js +262 -0
  232. package/lib/types.d.ts +66 -7
  233. package/lib/types.js +4 -3
  234. package/lib/utils/associationObjectVariable.d.ts +32 -0
  235. package/lib/utils/associationObjectVariable.js +157 -0
  236. package/lib/utils/createCollectionContextMeta.d.ts +1 -1
  237. package/lib/utils/createCollectionContextMeta.js +9 -4
  238. package/lib/utils/createEphemeralContext.d.ts +13 -0
  239. package/lib/utils/createEphemeralContext.js +140 -0
  240. package/lib/utils/flows.d.ts +10 -0
  241. package/lib/{runjs-context/snippets/global/console-log-ctx.snippet.js → utils/flows.js} +21 -14
  242. package/lib/utils/index.d.ts +9 -3
  243. package/lib/utils/index.js +30 -2
  244. package/lib/utils/jsxTransform.d.ts +15 -0
  245. package/lib/utils/jsxTransform.js +68 -0
  246. package/lib/utils/params-resolvers.js +19 -12
  247. package/lib/utils/parsePathnameToViewParams.d.ts +1 -1
  248. package/lib/utils/parsePathnameToViewParams.js +41 -5
  249. package/lib/utils/pruneFilter.d.ts +21 -0
  250. package/lib/{runjs-context/snippets/global/try-catch-async.snippet.js → utils/pruneFilter.js} +24 -16
  251. package/lib/utils/resolveModuleUrl.d.ts +58 -0
  252. package/lib/utils/resolveModuleUrl.js +65 -0
  253. package/lib/utils/runjsModuleLoader.d.ts +58 -0
  254. package/lib/utils/runjsModuleLoader.js +422 -0
  255. package/lib/utils/runjsTemplateCompat.d.ts +35 -0
  256. package/lib/utils/runjsTemplateCompat.js +743 -0
  257. package/lib/utils/safeGlobals.d.ts +6 -8
  258. package/lib/utils/safeGlobals.js +169 -14
  259. package/lib/utils/schema-utils.d.ts +6 -0
  260. package/lib/utils/schema-utils.js +71 -6
  261. package/lib/utils/serverContextParams.d.ts +4 -0
  262. package/lib/utils/serverContextParams.js +2 -0
  263. package/lib/utils/translation.d.ts +4 -1
  264. package/lib/utils/translation.js +6 -2
  265. package/lib/utils/variablesParams.d.ts +22 -5
  266. package/lib/utils/variablesParams.js +141 -61
  267. package/lib/views/DialogComponent.js +1 -5
  268. package/lib/views/DrawerComponent.js +18 -9
  269. package/lib/views/PageComponent.js +5 -5
  270. package/lib/views/ViewNavigation.d.ts +11 -15
  271. package/lib/views/ViewNavigation.js +37 -19
  272. package/lib/views/createViewMeta.d.ts +27 -5
  273. package/lib/views/createViewMeta.js +338 -72
  274. package/lib/views/index.d.ts +1 -1
  275. package/lib/views/index.js +4 -0
  276. package/lib/views/useDialog.d.ts +10 -9
  277. package/lib/views/useDialog.js +46 -34
  278. package/lib/views/useDrawer.d.ts +10 -9
  279. package/lib/views/useDrawer.js +74 -48
  280. package/lib/views/usePage.d.ts +14 -9
  281. package/lib/views/usePage.js +82 -33
  282. package/lib/views/usePopover.js +4 -1
  283. package/lib/views/viewEvents.d.ts +17 -0
  284. package/lib/views/viewEvents.js +90 -0
  285. package/package.json +6 -3
  286. package/src/BlockScopedFlowEngine.ts +85 -0
  287. package/src/FlowContextProvider.tsx +4 -2
  288. package/src/JSRunner.ts +39 -1
  289. package/src/ViewScopedFlowEngine.ts +21 -1
  290. package/src/__tests__/JSRunner.test.ts +125 -52
  291. package/src/__tests__/blockScopedFlowEngine.test.ts +154 -0
  292. package/src/__tests__/createViewMeta.popup.test.ts +203 -0
  293. package/src/__tests__/flow-engine.test.ts +3 -0
  294. package/src/__tests__/flowContext.test.ts +160 -0
  295. package/src/__tests__/flowContextCreateJSRunner.test.ts +163 -0
  296. package/src/__tests__/flowEngine.dataSourceDirty.test.ts +63 -0
  297. package/src/__tests__/flowEngine.destroyModel.test.ts +74 -0
  298. package/src/__tests__/flowEngine.moveModel.test.ts +43 -0
  299. package/src/__tests__/flowEngine.removeModel.test.ts +72 -0
  300. package/src/__tests__/flowEngine.saveModel.test.ts +4 -0
  301. package/src/__tests__/flowModel.openView.navigation.test.ts +31 -2
  302. package/src/__tests__/flowRunJSContextDefine.test.ts +508 -0
  303. package/src/__tests__/flowSettings.open.test.tsx +71 -15
  304. package/src/__tests__/flowSettings.test.ts +2 -0
  305. package/src/__tests__/globalFlowRegistry.test.ts +1 -1
  306. package/src/__tests__/modelOperationScheduler.test.ts +346 -0
  307. package/src/__tests__/objectVariable.test.ts +464 -0
  308. package/src/__tests__/provider.test.tsx +0 -5
  309. package/src/__tests__/runjsContext.test.ts +219 -35
  310. package/src/__tests__/runjsContextImplementations.test.ts +217 -0
  311. package/src/__tests__/runjsContextRuntime.test.ts +269 -0
  312. package/src/__tests__/runjsEdgeCases.test.ts +281 -0
  313. package/src/__tests__/runjsExternalLibs.test.ts +242 -0
  314. package/src/__tests__/runjsLibsLazyLoading.test.ts +44 -0
  315. package/src/__tests__/runjsLocales.test.ts +39 -0
  316. package/src/__tests__/runjsPreprocessDefault.test.ts +49 -0
  317. package/src/__tests__/runjsRuntimeFeatures.test.ts +461 -0
  318. package/src/__tests__/runjsSnippets.test.ts +140 -0
  319. package/src/__tests__/viewScopedFlowEngine.test.ts +101 -3
  320. package/src/acl/Acl.tsx +85 -31
  321. package/src/acl/__tests__/Acl.test.tsx +43 -1
  322. package/src/components/DynamicFlowsEditor.tsx +0 -10
  323. package/src/components/FieldModelRenderer.tsx +22 -9
  324. package/src/components/FieldSkeleton.tsx +27 -0
  325. package/src/components/FlowContextSelector.tsx +20 -2
  326. package/src/components/FlowModelRenderer.tsx +52 -84
  327. package/src/components/FormItem.tsx +8 -1
  328. package/src/components/MobilePopup.style.ts +220 -0
  329. package/src/components/MobilePopup.tsx +86 -0
  330. package/src/components/__tests__/FlowModelRenderer.test.tsx +89 -0
  331. package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +6 -6
  332. package/src/components/__tests__/gridDragPlanner.test.ts +141 -1
  333. package/src/components/common/withFlowDesignMode.tsx +5 -5
  334. package/src/components/dnd/gridDragPlanner.ts +60 -0
  335. package/src/components/index.ts +1 -0
  336. package/src/components/settings/independents/dropdown/FlowsDropdownButton.tsx +34 -17
  337. package/src/components/settings/wrappers/component/SelectWithTitle.tsx +110 -0
  338. package/src/components/settings/wrappers/component/SwitchWithTitle.tsx +83 -0
  339. package/src/components/settings/wrappers/component/__tests__/InlineControls.test.tsx +74 -0
  340. package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +272 -125
  341. package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +34 -18
  342. package/src/components/settings/wrappers/contextual/FlowsFloatContextMenu.tsx +56 -18
  343. package/src/components/settings/wrappers/contextual/StepSettings.tsx +1 -2
  344. package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +13 -1
  345. package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +624 -0
  346. package/src/components/settings/wrappers/embedded/FlowSettings.tsx +47 -35
  347. package/src/components/settings/wrappers/embedded/FlowsSettings.tsx +1 -1
  348. package/src/components/settings/wrappers/embedded/FlowsSettingsContent.tsx +64 -42
  349. package/src/components/subModel/AddSubModelButton.tsx +104 -9
  350. package/src/components/subModel/LazyDropdown.tsx +14 -14
  351. package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +168 -7
  352. package/src/components/subModel/__tests__/utils.test.ts +12 -12
  353. package/src/components/subModel/utils.ts +25 -6
  354. package/src/components/variables/VariableInput.tsx +32 -6
  355. package/src/components/variables/VariableTag.tsx +54 -2
  356. package/src/components/variables/types.ts +2 -0
  357. package/src/components/variables/utils.ts +7 -3
  358. package/src/data-source/index.ts +143 -12
  359. package/src/data-source/jioToJoiSchema.ts +1 -0
  360. package/src/emitter.ts +14 -0
  361. package/src/executor/FlowExecutor.ts +383 -119
  362. package/src/executor/__tests__/ctx-defs-injection.test.ts +197 -0
  363. package/src/executor/__tests__/flowExecutor.test.ts +217 -5
  364. package/src/flow-registry/GlobalFlowRegistry.ts +1 -0
  365. package/src/flow-registry/InstanceFlowRegistry.ts +1 -0
  366. package/src/flow-registry/__tests__/globalFlowRegistry.test.ts +54 -0
  367. package/src/flowContext.ts +646 -158
  368. package/src/flowEngine.ts +385 -14
  369. package/src/flowSettings.ts +59 -30
  370. package/src/hooks/useApplyAutoFlows.ts +5 -3
  371. package/src/index.ts +26 -3
  372. package/src/locale/de-DE.json +62 -0
  373. package/src/locale/en-US.json +57 -45
  374. package/src/locale/es-ES.json +62 -0
  375. package/src/locale/fr-FR.json +62 -0
  376. package/src/locale/hu-HU.json +62 -0
  377. package/src/locale/id-ID.json +62 -0
  378. package/src/locale/it-IT.json +62 -0
  379. package/src/locale/ja-JP.json +62 -0
  380. package/src/locale/ko-KR.json +62 -0
  381. package/src/locale/nl-NL.json +62 -0
  382. package/src/locale/pt-BR.json +62 -0
  383. package/src/locale/ru-RU.json +62 -0
  384. package/src/locale/tr-TR.json +62 -0
  385. package/src/locale/uk-UA.json +62 -0
  386. package/src/locale/vi-VN.json +62 -0
  387. package/src/locale/zh-CN.json +58 -46
  388. package/src/locale/zh-TW.json +62 -0
  389. package/src/models/CollectionFieldModel.tsx +82 -18
  390. package/src/models/__tests__/dispatchEvent.behavior.test.ts +169 -0
  391. package/src/models/__tests__/dispatchEvent.when.test.ts +356 -0
  392. package/src/models/__tests__/flowEngine.resolveUse.test.ts +170 -0
  393. package/src/models/__tests__/flowModel.clone.test.ts +416 -0
  394. package/src/models/__tests__/flowModel.getFlows.sort.test.ts +33 -9
  395. package/src/models/__tests__/flowModel.scheduleModelOperation.test.tsx +129 -0
  396. package/src/models/__tests__/flowModel.test.ts +296 -119
  397. package/src/models/__tests__/forkFlowModel.test.ts +40 -7
  398. package/src/models/flowModel.tsx +426 -148
  399. package/src/models/forkFlowModel.ts +48 -8
  400. package/src/provider.tsx +18 -14
  401. package/src/reactive/__tests__/observer.test.tsx +211 -0
  402. package/src/reactive/index.ts +11 -0
  403. package/src/reactive/observer.tsx +101 -0
  404. package/src/resources/__tests__/multiRecordResource.test.ts +44 -0
  405. package/src/resources/__tests__/sqlResource.test.ts +60 -0
  406. package/src/resources/baseRecordResource.ts +46 -3
  407. package/src/resources/multiRecordResource.ts +28 -12
  408. package/src/resources/singleRecordResource.ts +9 -3
  409. package/src/resources/sqlResource.ts +33 -32
  410. package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +38 -21
  411. package/src/runjs-context/contexts/JSBlockRunJSContext.ts +50 -34
  412. package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +15 -16
  413. package/src/runjs-context/contexts/JSColumnRunJSContext.ts +58 -0
  414. package/src/runjs-context/contexts/JSEditableFieldRunJSContext.ts +106 -0
  415. package/src/runjs-context/contexts/JSFieldRunJSContext.ts +30 -25
  416. package/src/runjs-context/contexts/JSItemRunJSContext.ts +35 -21
  417. package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +17 -18
  418. package/src/runjs-context/contexts/base.ts +871 -0
  419. package/src/runjs-context/contributions.ts +88 -0
  420. package/src/runjs-context/helpers.ts +32 -30
  421. package/src/runjs-context/registry.ts +16 -47
  422. package/src/runjs-context/setup.ts +57 -0
  423. package/src/runjs-context/snippets/global/api-request.snippet.ts +38 -0
  424. package/src/runjs-context/snippets/global/clipboard-copy-text.snippet.ts +42 -0
  425. package/src/runjs-context/snippets/global/import-esm.snippet.ts +39 -0
  426. package/src/runjs-context/snippets/global/message-error.snippet.ts +6 -0
  427. package/src/runjs-context/snippets/global/message-success.snippet.ts +6 -0
  428. package/src/runjs-context/snippets/global/notification-open.snippet.ts +11 -1
  429. package/src/runjs-context/snippets/global/open-view-dialog.snippet.ts +10 -3
  430. package/src/runjs-context/snippets/global/open-view-drawer.snippet.ts +10 -3
  431. package/src/runjs-context/snippets/global/query-selector.snippet.ts +34 -0
  432. package/src/runjs-context/snippets/global/require-amd.snippet.ts +30 -0
  433. package/src/runjs-context/snippets/global/window-open.snippet.ts +11 -1
  434. package/src/runjs-context/snippets/index.ts +212 -39
  435. package/src/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.ts +14 -2
  436. package/src/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.ts +45 -0
  437. package/src/runjs-context/snippets/scene/block/chartjs-bar.snippet.ts +80 -0
  438. package/src/runjs-context/snippets/scene/block/echarts-init.snippet.ts +44 -0
  439. package/src/runjs-context/snippets/scene/block/render-antd-icons.snippet.ts +46 -0
  440. package/src/runjs-context/snippets/scene/block/render-button-handler.snippet.ts +35 -0
  441. package/src/runjs-context/snippets/scene/block/render-iframe.snippet.ts +38 -0
  442. package/src/runjs-context/snippets/scene/block/render-info-card.snippet.ts +52 -0
  443. package/src/runjs-context/snippets/scene/block/render-react-jsx.snippet.ts +39 -0
  444. package/src/runjs-context/snippets/scene/block/render-react.snippet.ts +38 -0
  445. package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +76 -0
  446. package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +65 -0
  447. package/src/runjs-context/snippets/scene/block/resource-example.snippet.ts +46 -0
  448. package/src/runjs-context/snippets/scene/block/three-users-orbit.snippet.ts +264 -0
  449. package/src/runjs-context/snippets/scene/block/vue-component.snippet.ts +105 -0
  450. package/src/runjs-context/snippets/scene/detail/color-by-value.snippet.ts +33 -0
  451. package/src/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.ts +45 -0
  452. package/src/runjs-context/snippets/scene/detail/format-number.snippet.ts +32 -0
  453. package/src/runjs-context/snippets/scene/detail/innerHTML-value.snippet.ts +31 -0
  454. package/src/runjs-context/snippets/scene/detail/percentage-bar.snippet.ts +63 -0
  455. package/src/runjs-context/snippets/scene/detail/relative-time.snippet.ts +61 -0
  456. package/src/runjs-context/snippets/scene/detail/status-tag.snippet.ts +55 -0
  457. package/src/runjs-context/snippets/scene/form/calculate-total.snippet.ts +44 -0
  458. package/src/runjs-context/snippets/scene/form/cascade-select.snippet.ts +62 -0
  459. package/src/runjs-context/snippets/scene/form/conditional-required.snippet.ts +45 -0
  460. package/src/runjs-context/snippets/scene/form/copy-field-values.snippet.ts +55 -0
  461. package/src/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.ts +14 -2
  462. package/src/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.ts +15 -3
  463. package/src/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.ts +15 -3
  464. package/src/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.ts +15 -3
  465. package/src/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.ts +48 -0
  466. package/src/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.ts +15 -3
  467. package/src/runjs-context/snippets/scene/table/cell-open-dialog.snippet.ts +45 -0
  468. package/src/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.ts +14 -2
  469. package/src/runjs-context/snippets/scene/table/concat-fields.snippet.ts +60 -0
  470. package/src/runjs-context/snippets/scene/table/destroy-selected.snippet.ts +36 -0
  471. package/src/runjs-context/snippets/scene/table/export-selected-json.snippet.ts +45 -0
  472. package/src/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.ts +14 -2
  473. package/src/runjs-context/snippets/types.ts +5 -1
  474. package/src/runjsLibs.ts +622 -0
  475. package/src/scheduler/ModelOperationScheduler.ts +306 -0
  476. package/src/types.ts +86 -5
  477. package/src/utils/__tests__/createCollectionContextMeta.test.ts +51 -0
  478. package/src/utils/__tests__/flows.test.ts +65 -0
  479. package/src/utils/__tests__/jsxTransform.test.ts +38 -0
  480. package/src/utils/__tests__/params-resolvers.test.ts +40 -0
  481. package/src/utils/__tests__/parsePathnameToViewParams.test.ts +25 -0
  482. package/src/utils/__tests__/pruneFilter.test.ts +38 -0
  483. package/src/utils/__tests__/runjsRequireAsyncAutoWhitelist.test.ts +38 -0
  484. package/src/utils/__tests__/runjsTemplateCompat.test.ts +159 -0
  485. package/src/utils/__tests__/safeGlobals.test.ts +79 -2
  486. package/src/utils/__tests__/utils.test.ts +114 -15
  487. package/src/utils/__tests__/variablesParams.test.ts +120 -0
  488. package/src/utils/associationObjectVariable.ts +180 -0
  489. package/src/utils/createCollectionContextMeta.ts +9 -3
  490. package/src/utils/createEphemeralContext.ts +142 -0
  491. package/src/utils/flows.ts +23 -0
  492. package/src/utils/index.ts +17 -3
  493. package/src/utils/jsxTransform.ts +39 -0
  494. package/src/utils/params-resolvers.ts +25 -11
  495. package/src/utils/parsePathnameToViewParams.ts +50 -6
  496. package/src/utils/pruneFilter.ts +41 -0
  497. package/src/utils/resolveModuleUrl.ts +91 -0
  498. package/src/utils/runjsModuleLoader.ts +553 -0
  499. package/src/utils/runjsTemplateCompat.ts +828 -0
  500. package/src/utils/safeGlobals.ts +181 -15
  501. package/src/utils/schema-utils.ts +81 -3
  502. package/src/utils/serverContextParams.ts +6 -0
  503. package/src/utils/translation.ts +7 -2
  504. package/src/utils/variablesParams.ts +164 -72
  505. package/src/views/DialogComponent.tsx +1 -4
  506. package/src/views/DrawerComponent.tsx +19 -7
  507. package/src/views/PageComponent.tsx +3 -5
  508. package/src/views/ViewNavigation.ts +49 -43
  509. package/src/views/__tests__/FlowView.usePage.test.tsx +186 -0
  510. package/src/views/__tests__/ViewNavigation.test.ts +54 -34
  511. package/src/views/__tests__/useDialog.closeDestroy.test.tsx +159 -0
  512. package/src/views/__tests__/viewEvents.resolveOpenerEngine.test.ts +28 -0
  513. package/src/views/createViewMeta.ts +402 -73
  514. package/src/views/index.tsx +1 -1
  515. package/src/views/useDialog.tsx +52 -31
  516. package/src/views/useDrawer.tsx +99 -55
  517. package/src/views/usePage.tsx +101 -33
  518. package/src/views/usePopover.tsx +4 -1
  519. package/src/views/viewEvents.ts +55 -0
  520. package/lib/runjs-context/contexts/FlowRunJSContext.d.ts +0 -38
  521. package/lib/runjs-context/contexts/FlowRunJSContext.js +0 -217
  522. package/lib/runjs-context/contexts/LinkageRunJSContext.js +0 -62
  523. package/lib/runjs-context/index.d.ts +0 -19
  524. package/lib/runjs-context/index.js +0 -57
  525. package/lib/runjs-context/snippets/global/api-request-get.snippet.d.ts +0 -16
  526. package/lib/runjs-context/snippets/global/api-request-get.snippet.js +0 -42
  527. package/lib/runjs-context/snippets/global/api-request-post.snippet.d.ts +0 -16
  528. package/lib/runjs-context/snippets/global/console-log-ctx.snippet.d.ts +0 -16
  529. package/lib/runjs-context/snippets/global/requireAsync.snippet.d.ts +0 -16
  530. package/lib/runjs-context/snippets/global/sleep.snippet.d.ts +0 -16
  531. package/lib/runjs-context/snippets/global/sleep.snippet.js +0 -43
  532. package/lib/runjs-context/snippets/global/try-catch-async.snippet.d.ts +0 -16
  533. package/lib/runjs-context/snippets/libs/echarts-init.snippet.d.ts +0 -15
  534. package/lib/runjs-context/snippets/scene/actions/collection-selected-count.snippet.d.ts +0 -15
  535. package/lib/runjs-context/snippets/scene/actions/iterate-selected-rows.snippet.d.ts +0 -15
  536. package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.d.ts +0 -15
  537. package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.js +0 -43
  538. package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.d.ts +0 -15
  539. package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.js +0 -40
  540. package/lib/runjs-context/snippets/scene/jsblock/add-event-listener.snippet.d.ts +0 -15
  541. package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.d.ts +0 -15
  542. package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.js +0 -42
  543. package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.d.ts +0 -15
  544. package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.js +0 -46
  545. package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.d.ts +0 -15
  546. package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.js +0 -41
  547. package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.d.ts +0 -15
  548. package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.js +0 -41
  549. package/lib/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.d.ts +0 -15
  550. package/lib/runjs-context/snippets/scene/jsblock/render-react.snippet.d.ts +0 -15
  551. package/lib/runjs-context/snippets/scene/jsfield/color-by-value.snippet.d.ts +0 -15
  552. package/lib/runjs-context/snippets/scene/jsfield/format-number.snippet.d.ts +0 -15
  553. package/lib/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.d.ts +0 -15
  554. package/lib/runjs-context/snippets/scene/jsitem/render-basic.snippet.d.ts +0 -15
  555. package/lib/runjs-context/snippets/scene/linkage/set-disabled.snippet.d.ts +0 -15
  556. package/lib/runjs-context/snippets/scene/linkage/set-field-value.snippet.d.ts +0 -15
  557. package/lib/runjs-context/snippets/scene/linkage/set-required.snippet.d.ts +0 -15
  558. package/lib/runjs-context/snippets/scene/linkage/toggle-visible.snippet.d.ts +0 -15
  559. package/src/runjs-context/contexts/FlowRunJSContext.ts +0 -190
  560. package/src/runjs-context/contexts/LinkageRunJSContext.ts +0 -35
  561. package/src/runjs-context/index.ts +0 -20
  562. package/src/runjs-context/snippets/global/api-request-get.snippet.ts +0 -20
  563. package/src/runjs-context/snippets/global/api-request-post.snippet.ts +0 -20
  564. package/src/runjs-context/snippets/global/console-log-ctx.snippet.ts +0 -19
  565. package/src/runjs-context/snippets/global/copy-record-json.snippet.ts +0 -21
  566. package/src/runjs-context/snippets/global/copy-to-clipboard.snippet.ts +0 -21
  567. package/src/runjs-context/snippets/global/log-json-record.snippet.ts +0 -21
  568. package/src/runjs-context/snippets/global/requireAsync.snippet.ts +0 -24
  569. package/src/runjs-context/snippets/global/sleep.snippet.ts +0 -21
  570. package/src/runjs-context/snippets/global/try-catch-async.snippet.ts +0 -22
  571. package/src/runjs-context/snippets/global/view-navigation-push.snippet.ts +0 -23
  572. package/src/runjs-context/snippets/libs/echarts-init.snippet.ts +0 -24
  573. package/src/runjs-context/snippets/scene/actions/record-id-message.snippet.ts +0 -21
  574. package/src/runjs-context/snippets/scene/actions/run-action-basic.snippet.ts +0 -18
  575. package/src/runjs-context/snippets/scene/jsblock/append-style.snippet.ts +0 -20
  576. package/src/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.ts +0 -24
  577. package/src/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.ts +0 -19
  578. package/src/runjs-context/snippets/scene/jsblock/render-basic.snippet.ts +0 -24
  579. package/src/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.ts +0 -24
  580. package/src/runjs-context/snippets/scene/jsblock/render-card.snippet.ts +0 -30
  581. package/src/runjs-context/snippets/scene/jsblock/render-react.snippet.ts +0 -34
  582. package/src/runjs-context/snippets/scene/jsfield/color-by-value.snippet.ts +0 -20
  583. package/src/runjs-context/snippets/scene/jsfield/format-number.snippet.ts +0 -19
  584. package/src/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.ts +0 -18
  585. /package/lib/runjs-context/snippets/global/{copy-record-json.snippet.d.ts → api-request.snippet.d.ts} +0 -0
  586. /package/lib/runjs-context/snippets/global/{copy-to-clipboard.snippet.d.ts → clipboard-copy-text.snippet.d.ts} +0 -0
  587. /package/lib/runjs-context/snippets/global/{log-json-record.snippet.d.ts → import-esm.snippet.d.ts} +0 -0
  588. /package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.d.ts → query-selector.snippet.d.ts} +0 -0
  589. /package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.d.ts → block/echarts-init.snippet.d.ts} +0 -0
@@ -6,11 +6,9 @@
6
6
  * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
- /**
10
- * 统一的安全全局对象代理:window/document
11
- * - 默认仅允许常用的定时器、console、Math、Date、addEventListener(绑定原 window)
12
- * - document 仅允许 createElement/querySelector/querySelectorAll
13
- * - 不允许随意访问未声明的属性,最小权限原则
14
- */
15
- export declare function createSafeWindow(extra?: Record<string, any>): {};
16
- export declare function createSafeDocument(extra?: Record<string, any>): {};
9
+ export declare function registerRunJSSafeWindowGlobals(keys: Iterable<string> | null | undefined): void;
10
+ export declare function registerRunJSSafeDocumentGlobals(keys: Iterable<string> | null | undefined): void;
11
+ export declare function __resetRunJSSafeGlobalsRegistryForTests(): void;
12
+ export declare function createSafeWindow(extra?: Record<string, any>): Record<string, any>;
13
+ export declare function createSafeDocument(extra?: Record<string, any>): Record<string, any>;
14
+ export declare function createSafeNavigator(extra?: Record<string, any>): {};
@@ -27,13 +27,73 @@ var __copyProps = (to, from, except, desc) => {
27
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
28
  var safeGlobals_exports = {};
29
29
  __export(safeGlobals_exports, {
30
+ __resetRunJSSafeGlobalsRegistryForTests: () => __resetRunJSSafeGlobalsRegistryForTests,
30
31
  createSafeDocument: () => createSafeDocument,
31
- createSafeWindow: () => createSafeWindow
32
+ createSafeNavigator: () => createSafeNavigator,
33
+ createSafeWindow: () => createSafeWindow,
34
+ registerRunJSSafeDocumentGlobals: () => registerRunJSSafeDocumentGlobals,
35
+ registerRunJSSafeWindowGlobals: () => registerRunJSSafeWindowGlobals
32
36
  });
33
37
  module.exports = __toCommonJS(safeGlobals_exports);
38
+ function getRunJSSafeGlobalsRegistry() {
39
+ var _a, _b;
40
+ const g = globalThis;
41
+ if (((_a = g.__nocobaseRunJSSafeGlobalsRegistry) == null ? void 0 : _a.windowAllow) && ((_b = g.__nocobaseRunJSSafeGlobalsRegistry) == null ? void 0 : _b.documentAllow)) {
42
+ return g.__nocobaseRunJSSafeGlobalsRegistry;
43
+ }
44
+ const reg = {
45
+ windowAllow: /* @__PURE__ */ new Set(),
46
+ documentAllow: /* @__PURE__ */ new Set()
47
+ };
48
+ g.__nocobaseRunJSSafeGlobalsRegistry = reg;
49
+ return reg;
50
+ }
51
+ __name(getRunJSSafeGlobalsRegistry, "getRunJSSafeGlobalsRegistry");
52
+ function registerRunJSSafeWindowGlobals(keys) {
53
+ if (!keys) return;
54
+ const reg = getRunJSSafeGlobalsRegistry();
55
+ for (const k of keys) {
56
+ if (typeof k !== "string") continue;
57
+ const key = k.trim();
58
+ if (!key) continue;
59
+ reg.windowAllow.add(key);
60
+ }
61
+ }
62
+ __name(registerRunJSSafeWindowGlobals, "registerRunJSSafeWindowGlobals");
63
+ function registerRunJSSafeDocumentGlobals(keys) {
64
+ if (!keys) return;
65
+ const reg = getRunJSSafeGlobalsRegistry();
66
+ for (const k of keys) {
67
+ if (typeof k !== "string") continue;
68
+ const key = k.trim();
69
+ if (!key) continue;
70
+ reg.documentAllow.add(key);
71
+ }
72
+ }
73
+ __name(registerRunJSSafeDocumentGlobals, "registerRunJSSafeDocumentGlobals");
74
+ function __resetRunJSSafeGlobalsRegistryForTests() {
75
+ var _a, _b, _c, _d;
76
+ const g = globalThis;
77
+ if (g.__nocobaseRunJSSafeGlobalsRegistry) {
78
+ try {
79
+ (_b = (_a = g.__nocobaseRunJSSafeGlobalsRegistry.windowAllow) == null ? void 0 : _a.clear) == null ? void 0 : _b.call(_a);
80
+ (_d = (_c = g.__nocobaseRunJSSafeGlobalsRegistry.documentAllow) == null ? void 0 : _c.clear) == null ? void 0 : _d.call(_c);
81
+ } catch {
82
+ }
83
+ }
84
+ }
85
+ __name(__resetRunJSSafeGlobalsRegistryForTests, "__resetRunJSSafeGlobalsRegistryForTests");
86
+ function isAllowedDynamicWindowKey(key) {
87
+ return getRunJSSafeGlobalsRegistry().windowAllow.has(key);
88
+ }
89
+ __name(isAllowedDynamicWindowKey, "isAllowedDynamicWindowKey");
90
+ function isAllowedDynamicDocumentKey(key) {
91
+ return getRunJSSafeGlobalsRegistry().documentAllow.has(key);
92
+ }
93
+ __name(isAllowedDynamicDocumentKey, "isAllowedDynamicDocumentKey");
34
94
  function createSafeWindow(extra) {
35
95
  const getSafeBaseHref = /* @__PURE__ */ __name(() => `${window.location.origin}${window.location.pathname}`, "getSafeBaseHref");
36
- const safeOpen = /* @__PURE__ */ __name((url, target, features) => {
96
+ const safeOpen = /* @__PURE__ */ __name((url, target2, features) => {
37
97
  const isSafeUrl = /* @__PURE__ */ __name((u) => {
38
98
  try {
39
99
  const parsed = new URL(u, getSafeBaseHref());
@@ -110,7 +170,7 @@ function createSafeWindow(extra) {
110
170
  case "replace":
111
171
  return (u) => guardedNavigate(u, { replace: true });
112
172
  case "reload":
113
- throw new Error("Access to location.reload is not allowed.");
173
+ return window.location.reload.bind(window.location);
114
174
  case "href":
115
175
  throw new Error("Reading location.href is not allowed.");
116
176
  default:
@@ -135,6 +195,9 @@ function createSafeWindow(extra) {
135
195
  console,
136
196
  Math,
137
197
  Date,
198
+ FormData,
199
+ ...typeof Blob !== "undefined" ? { Blob } : {},
200
+ ...typeof URL !== "undefined" ? { URL } : {},
138
201
  // 事件侦听仅绑定到真实 window,便于少量需要的全局监听
139
202
  addEventListener: addEventListener.bind(window),
140
203
  // 安全的 window.open 代理
@@ -143,15 +206,40 @@ function createSafeWindow(extra) {
143
206
  location: safeLocation,
144
207
  ...extra || {}
145
208
  };
146
- return new Proxy(
147
- {},
148
- {
149
- get(_target, prop) {
150
- if (prop in allowedGlobals) return allowedGlobals[prop];
151
- throw new Error(`Access to global property "${prop}" is not allowed.`);
209
+ const target = /* @__PURE__ */ Object.create(null);
210
+ return new Proxy(target, {
211
+ get(t, prop) {
212
+ if (typeof prop !== "string") {
213
+ return Reflect.get(t, prop);
214
+ }
215
+ if (prop in allowedGlobals) return allowedGlobals[prop];
216
+ if (Object.prototype.hasOwnProperty.call(t, prop)) return t[prop];
217
+ if (isAllowedDynamicWindowKey(prop)) {
218
+ const v = window[prop];
219
+ if (typeof v === "function") return v.bind(window);
220
+ return v;
152
221
  }
222
+ throw new Error(`Access to global property "${prop}" is not allowed.`);
223
+ },
224
+ set(t, prop, value) {
225
+ if (typeof prop !== "string") {
226
+ Reflect.set(t, prop, value);
227
+ return true;
228
+ }
229
+ if (prop in allowedGlobals) {
230
+ throw new Error(`Mutation of global property "${prop}" is not allowed.`);
231
+ }
232
+ t[prop] = value;
233
+ return true;
234
+ },
235
+ has(t, prop) {
236
+ if (typeof prop !== "string") return Reflect.has(t, prop);
237
+ if (prop in allowedGlobals) return true;
238
+ if (Object.prototype.hasOwnProperty.call(t, prop)) return true;
239
+ if (isAllowedDynamicWindowKey(prop)) return true;
240
+ return false;
153
241
  }
154
- );
242
+ });
155
243
  }
156
244
  __name(createSafeWindow, "createSafeWindow");
157
245
  function createSafeDocument(extra) {
@@ -161,19 +249,86 @@ function createSafeDocument(extra) {
161
249
  querySelectorAll: document.querySelectorAll.bind(document),
162
250
  ...extra || {}
163
251
  };
252
+ const target = /* @__PURE__ */ Object.create(null);
253
+ return new Proxy(target, {
254
+ get(t, prop) {
255
+ if (typeof prop !== "string") {
256
+ return Reflect.get(t, prop);
257
+ }
258
+ if (prop in allowed) return allowed[prop];
259
+ if (Object.prototype.hasOwnProperty.call(t, prop)) return t[prop];
260
+ if (isAllowedDynamicDocumentKey(prop)) {
261
+ const v = document[prop];
262
+ if (typeof v === "function") return v.bind(document);
263
+ return v;
264
+ }
265
+ throw new Error(`Access to document property "${prop}" is not allowed.`);
266
+ },
267
+ set(t, prop, value) {
268
+ if (typeof prop !== "string") {
269
+ Reflect.set(t, prop, value);
270
+ return true;
271
+ }
272
+ if (prop in allowed) {
273
+ throw new Error(`Mutation of document property "${prop}" is not allowed.`);
274
+ }
275
+ t[prop] = value;
276
+ return true;
277
+ },
278
+ has(t, prop) {
279
+ if (typeof prop !== "string") return Reflect.has(t, prop);
280
+ if (prop in allowed) return true;
281
+ if (Object.prototype.hasOwnProperty.call(t, prop)) return true;
282
+ if (isAllowedDynamicDocumentKey(prop)) return true;
283
+ return false;
284
+ }
285
+ });
286
+ }
287
+ __name(createSafeDocument, "createSafeDocument");
288
+ function createSafeNavigator(extra) {
289
+ var _a;
290
+ const nav = typeof window !== "undefined" && window.navigator || void 0;
291
+ const clipboard = {};
292
+ const writeText = (_a = nav == null ? void 0 : nav.clipboard) == null ? void 0 : _a.writeText;
293
+ if (typeof writeText === "function") {
294
+ clipboard.writeText = writeText.bind(nav.clipboard);
295
+ }
296
+ const allowed = {
297
+ clipboard
298
+ };
299
+ Object.defineProperty(allowed, "onLine", {
300
+ get: /* @__PURE__ */ __name(() => !!(nav == null ? void 0 : nav.onLine), "get"),
301
+ enumerable: true,
302
+ configurable: false
303
+ });
304
+ Object.defineProperty(allowed, "language", {
305
+ get: /* @__PURE__ */ __name(() => nav == null ? void 0 : nav.language, "get"),
306
+ enumerable: true,
307
+ configurable: false
308
+ });
309
+ Object.defineProperty(allowed, "languages", {
310
+ get: /* @__PURE__ */ __name(() => (nav == null ? void 0 : nav.languages) ? [...nav.languages] : void 0, "get"),
311
+ enumerable: true,
312
+ configurable: false
313
+ });
314
+ Object.assign(allowed, extra || {});
164
315
  return new Proxy(
165
316
  {},
166
317
  {
167
- get(_target, prop) {
318
+ get(_t, prop) {
168
319
  if (prop in allowed) return allowed[prop];
169
- throw new Error(`Access to document property "${prop}" is not allowed.`);
320
+ throw new Error(`Access to navigator property "${String(prop)}" is not allowed.`);
170
321
  }
171
322
  }
172
323
  );
173
324
  }
174
- __name(createSafeDocument, "createSafeDocument");
325
+ __name(createSafeNavigator, "createSafeNavigator");
175
326
  // Annotate the CommonJS export names for ESM import in node:
176
327
  0 && (module.exports = {
328
+ __resetRunJSSafeGlobalsRegistryForTests,
177
329
  createSafeDocument,
178
- createSafeWindow
330
+ createSafeNavigator,
331
+ createSafeWindow,
332
+ registerRunJSSafeDocumentGlobals,
333
+ registerRunJSSafeWindowGlobals
179
334
  });
@@ -38,3 +38,9 @@ export declare function compileUiSchema(scope: Record<string, any>, uiSchema: an
38
38
  * @returns 合并后的uiSchema对象,如果为空则返回null
39
39
  */
40
40
  export declare function resolveStepUiSchema<TModel extends FlowModel = FlowModel>(model: TModel, flow: any, step: StepDefinition): Promise<Record<string, ISchema> | null>;
41
+ /**
42
+ * 判断步骤在设置菜单中是否应被隐藏。
43
+ * - 支持 StepDefinition.hideInSettings 与 ActionDefinition.hideInSettings(step 优先)。
44
+ * - hideInSettings 可为布尔值或函数(接收 FlowRuntimeContext)。
45
+ */
46
+ export declare function shouldHideStepInSettings<TModel extends FlowModel = FlowModel>(model: TModel, flow: any, step: StepDefinition): Promise<boolean>;
@@ -29,7 +29,8 @@ var schema_utils_exports = {};
29
29
  __export(schema_utils_exports, {
30
30
  compileUiSchema: () => compileUiSchema,
31
31
  resolveStepUiSchema: () => resolveStepUiSchema,
32
- resolveUiMode: () => resolveUiMode
32
+ resolveUiMode: () => resolveUiMode,
33
+ shouldHideStepInSettings: () => shouldHideStepInSettings
33
34
  });
34
35
  module.exports = __toCommonJS(schema_utils_exports);
35
36
  var import_json_schema = require("@formily/json-schema");
@@ -68,6 +69,28 @@ async function resolveUiMode(uiMode, ctx) {
68
69
  }
69
70
  __name(resolveUiMode, "resolveUiMode");
70
71
  const compileCache = {};
72
+ const hasFunctionValue = /* @__PURE__ */ __name((source) => {
73
+ if (typeof source === "function") return true;
74
+ if (!source || typeof source !== "object") return false;
75
+ const seen = /* @__PURE__ */ new WeakSet();
76
+ const walk = /* @__PURE__ */ __name((val) => {
77
+ if (typeof val === "function") return true;
78
+ if (!val || typeof val !== "object") return false;
79
+ if (seen.has(val)) return false;
80
+ seen.add(val);
81
+ if (Array.isArray(val)) {
82
+ for (const it of val) {
83
+ if (walk(it)) return true;
84
+ }
85
+ return false;
86
+ }
87
+ for (const k of Object.keys(val)) {
88
+ if (walk(val[k])) return true;
89
+ }
90
+ return false;
91
+ }, "walk");
92
+ return walk(source);
93
+ }, "hasFunctionValue");
71
94
  function compileUiSchema(scope, uiSchema, options = {}) {
72
95
  const { noCache = false } = options;
73
96
  const hasVariable = /* @__PURE__ */ __name((source) => {
@@ -88,8 +111,17 @@ function compileUiSchema(scope, uiSchema, options = {}) {
88
111
  console.warn("Failed to stringify:", e);
89
112
  return source;
90
113
  }
91
- if (compileCache[cacheKey]) return compileCache[cacheKey];
92
114
  shouldCompile = hasVariable(cacheKey);
115
+ const hasFn = shouldCompile && !noCache ? hasFunctionValue(source) : false;
116
+ if (compileCache[cacheKey] && !noCache && !hasFn) return compileCache[cacheKey];
117
+ if (hasFn) {
118
+ try {
119
+ return import_json_schema.Schema.compile(source, scope);
120
+ } catch (error) {
121
+ console.warn("Failed to compile with Formily Schema.compile:", error);
122
+ return source;
123
+ }
124
+ }
93
125
  }
94
126
  if (Array.isArray(source)) {
95
127
  try {
@@ -98,8 +130,17 @@ function compileUiSchema(scope, uiSchema, options = {}) {
98
130
  console.warn("Failed to stringify:", e);
99
131
  return source;
100
132
  }
101
- if (compileCache[cacheKey]) return compileCache[cacheKey];
102
133
  shouldCompile = hasVariable(cacheKey);
134
+ const hasFn = shouldCompile && !noCache ? hasFunctionValue(source) : false;
135
+ if (compileCache[cacheKey] && !noCache && !hasFn) return compileCache[cacheKey];
136
+ if (hasFn) {
137
+ try {
138
+ return import_json_schema.Schema.compile(source, scope);
139
+ } catch (error) {
140
+ console.warn("Failed to compile with Formily Schema.compile:", error);
141
+ return source;
142
+ }
143
+ }
103
144
  }
104
145
  if (shouldCompile) {
105
146
  if (!cacheKey) {
@@ -131,14 +172,14 @@ function compileUiSchema(scope, uiSchema, options = {}) {
131
172
  }
132
173
  __name(compileUiSchema, "compileUiSchema");
133
174
  async function resolveStepUiSchema(model, flow, step) {
134
- var _a, _b;
175
+ var _a;
135
176
  const flowRuntimeContext = new import_flowContext.FlowRuntimeContext(model, flow.key, "settings");
136
177
  (0, import_setupRuntimeContextSteps.setupRuntimeContextSteps)(flowRuntimeContext, flow.steps, model, flow.key);
137
178
  flowRuntimeContext.defineProperty("currentStep", { value: step });
138
179
  let stepUiSchema = step.uiSchema;
139
180
  if (step.use) {
140
181
  try {
141
- const action = (_b = (_a = model.flowEngine) == null ? void 0 : _a.getAction) == null ? void 0 : _b.call(_a, step.use);
182
+ const action = (_a = model.getAction) == null ? void 0 : _a.call(model, step.use);
142
183
  if (action && action.uiSchema) {
143
184
  stepUiSchema = stepUiSchema || action.uiSchema;
144
185
  }
@@ -153,9 +194,33 @@ async function resolveStepUiSchema(model, flow, step) {
153
194
  return resolvedStepUiSchema;
154
195
  }
155
196
  __name(resolveStepUiSchema, "resolveStepUiSchema");
197
+ async function shouldHideStepInSettings(model, flow, step) {
198
+ var _a;
199
+ if (!step) return true;
200
+ let hideInSettings = step.hideInSettings;
201
+ if (typeof hideInSettings === "undefined" && step.use) {
202
+ const action = (_a = model.getAction) == null ? void 0 : _a.call(model, step.use);
203
+ hideInSettings = action == null ? void 0 : action.hideInSettings;
204
+ }
205
+ if (typeof hideInSettings === "function") {
206
+ try {
207
+ const ctx = new import_flowContext.FlowRuntimeContext(model, flow.key, "settings");
208
+ (0, import_setupRuntimeContextSteps.setupRuntimeContextSteps)(ctx, flow.steps, model, flow.key);
209
+ ctx.defineProperty("currentStep", { value: step });
210
+ const result = await hideInSettings(ctx);
211
+ return !!result;
212
+ } catch (error) {
213
+ console.warn(`Error evaluating hideInSettings for step '${step.key || ""}' in flow '${flow.key}':`, error);
214
+ return false;
215
+ }
216
+ }
217
+ return !!hideInSettings;
218
+ }
219
+ __name(shouldHideStepInSettings, "shouldHideStepInSettings");
156
220
  // Annotate the CommonJS export names for ESM import in node:
157
221
  0 && (module.exports = {
158
222
  compileUiSchema,
159
223
  resolveStepUiSchema,
160
- resolveUiMode
224
+ resolveUiMode,
225
+ shouldHideStepInSettings
161
226
  });
@@ -12,6 +12,8 @@ export type RecordRef = {
12
12
  id?: any;
13
13
  filterByTk?: any;
14
14
  dataSourceKey?: string;
15
+ associationName?: string;
16
+ sourceId?: any;
15
17
  fields?: string[];
16
18
  appends?: string[];
17
19
  record?: any;
@@ -22,6 +24,8 @@ export type NormalizedRecordParams = {
22
24
  collection: string;
23
25
  filterByTk: any;
24
26
  dataSourceKey?: string;
27
+ associationName?: string;
28
+ sourceId?: any;
25
29
  fields?: string[];
26
30
  appends?: string[];
27
31
  };
@@ -63,6 +63,8 @@ function normalizeOne(ctx, ref) {
63
63
  collection,
64
64
  filterByTk,
65
65
  dataSourceKey,
66
+ associationName: ref.associationName,
67
+ sourceId: ref.sourceId,
66
68
  fields: ref.fields,
67
69
  appends: ref.appends
68
70
  });
@@ -14,5 +14,8 @@ import type { FlowModel } from '../models';
14
14
  * @returns 翻译函数,自动使用 flow-engine 命名空间
15
15
  */
16
16
  export declare function getT(model: FlowModel): (key: string, options?: any) => string;
17
+ export declare function tExpr(text: TFuncKey | TFuncKey[], options?: TOptions): string;
18
+ /**
19
+ * @deprecated use tExpr from `@nocobase/flow-engine` instead
20
+ */
17
21
  export declare function escapeT(text: TFuncKey | TFuncKey[], options?: TOptions): string;
18
- export { escapeT as tExpr };
@@ -29,7 +29,7 @@ var translation_exports = {};
29
29
  __export(translation_exports, {
30
30
  escapeT: () => escapeT,
31
31
  getT: () => getT,
32
- tExpr: () => escapeT
32
+ tExpr: () => tExpr
33
33
  });
34
34
  module.exports = __toCommonJS(translation_exports);
35
35
  var import_constants = require("./constants");
@@ -43,12 +43,16 @@ function getT(model) {
43
43
  return (key) => key;
44
44
  }
45
45
  __name(getT, "getT");
46
- function escapeT(text, options) {
46
+ function tExpr(text, options) {
47
47
  if (options) {
48
48
  return `{{t(${JSON.stringify(text)}, ${JSON.stringify(options)})}}`;
49
49
  }
50
50
  return `{{t(${JSON.stringify(text)})}}`;
51
51
  }
52
+ __name(tExpr, "tExpr");
53
+ function escapeT(text, options) {
54
+ return tExpr(text, options);
55
+ }
52
56
  __name(escapeT, "escapeT");
53
57
  // Annotate the CommonJS export names for ESM import in node:
54
58
  0 && (module.exports = {
@@ -6,11 +6,26 @@
6
6
  * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
- import type { FlowContext, PropertyMeta, PropertyMetaFactory } from '../flowContext';
10
- import type { JSONValue } from './params-resolvers';
9
+ import { extractUsedVariableNames as _extractUsedVariableNames, extractUsedVariablePaths as _extractUsedVariablePaths } from '@nocobase/shared';
11
10
  import type { Collection } from '../data-source';
11
+ import type { FlowContext, PropertyMeta, PropertyMetaFactory } from '../flowContext';
12
12
  import { type RecordRef, type ServerContextParams } from '../utils/serverContextParams';
13
+ import type { JSONValue } from './params-resolvers';
13
14
  export declare function inferRecordRef(ctx: FlowContext): RecordRef | undefined;
15
+ export declare function inferViewRecordRef(ctx: FlowContext): RecordRef | undefined;
16
+ export declare function getViewRecordFromParent(flowContext: FlowContext, viewContext: FlowContext): unknown;
17
+ export declare function createViewRecordResolveOnServer(ctx: FlowContext, getLocalRecord: () => unknown): (subPath: string) => boolean;
18
+ /**
19
+ * 创建一个用于 “ctx.record” 变量的 resolveOnServer 判定函数:
20
+ * - 若本地 record 不存在:统一走服务端;
21
+ * - 若本地 record 存在:
22
+ * - 访问空子路径("{{ ctx.record }}")时使用本地值,不走服务端;
23
+ * - 访问非关联字段(如 id/title):使用本地值;
24
+ * - 访问关联字段:
25
+ * - 若本地该字段无值(undefined/null),则交给服务端解析(无论是 "author" 还是 "author.name");
26
+ * - 若本地已有值,则仅在访问子属性且本地缺少该子属性值时交给服务端。
27
+ */
28
+ export declare function createRecordResolveOnServerWithLocal(collectionAccessor: () => Collection | null, valueAccessor: () => unknown): (subPath: string) => boolean;
14
29
  export declare function inferParentRecordRef(ctx: FlowContext): RecordRef | undefined;
15
30
  export type RecordParamsBuilder = (ctx: FlowContext) => RecordRef | Promise<RecordRef> | undefined;
16
31
  /**
@@ -27,12 +42,14 @@ export declare function createRecordMetaFactory(collectionAccessor: () => Collec
27
42
  * - Title: t('Current record')
28
43
  * - Params: inferRecordRef(ctx)
29
44
  */
30
- export declare function createCurrentRecordMetaFactory(ctx: FlowContext, collectionAccessor: () => Collection | null): PropertyMetaFactory;
45
+ export declare function createCurrentRecordMetaFactory(ctx: FlowContext, collectionAccessor: () => Collection | null, options?: {
46
+ title?: string;
47
+ }): PropertyMetaFactory;
31
48
  /**
32
49
  * Extract top-level ctx variable names used inside a JSON template.
33
50
  * Supports dot and bracket notations, e.g. {{ ctx.record.id }}, {{ ctx['parentRecord'].name }}.
34
51
  */
35
- export declare const extractUsedVariableNames: any;
52
+ export declare const extractUsedVariableNames: typeof _extractUsedVariableNames;
36
53
  /**
37
54
  * Extract used top-level ctx variables with their subpaths.
38
55
  * Returns a map: varName -> string[] subPaths
@@ -42,7 +59,7 @@ export declare const extractUsedVariableNames: any;
42
59
  * - {{ ctx.view.record.id }} => { view: ['record.id'] }
43
60
  * - {{ ctx.twice(21) }} => { twice: [''] } // method call -> empty subPath
44
61
  */
45
- export declare const extractUsedVariablePaths: any;
62
+ export declare const extractUsedVariablePaths: typeof _extractUsedVariablePaths;
46
63
  /**
47
64
  * 根据模板中用到的 ctx 变量,收集并构建服务端解析所需的 contextParams。
48
65
  * - 通过 FlowContext 的 PropertyMeta.buildVariablesParams 收集 RecordRef