@nocobase/flow-engine 2.0.0-alpha.2 → 2.0.0-alpha.20
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.
- package/lib/BlockScopedFlowEngine.d.ts +23 -0
- package/lib/BlockScopedFlowEngine.js +90 -0
- package/lib/FlowContextProvider.d.ts +2 -2
- package/lib/FlowContextProvider.js +3 -3
- package/lib/FlowDefinition.d.ts +2 -2
- package/lib/JSRunner.js +3 -0
- package/lib/ViewScopedFlowEngine.d.ts +1 -1
- package/lib/components/FieldModelRenderer.js +10 -4
- package/lib/components/FieldSkeleton.d.ts +10 -0
- package/lib/components/FieldSkeleton.js +64 -0
- package/lib/components/FlowContextSelector.js +7 -2
- package/lib/components/FlowModelRenderer.d.ts +2 -5
- package/lib/components/FlowModelRenderer.js +16 -47
- package/lib/components/FormItem.js +5 -1
- package/lib/{runjs-context/snippets/global/requireAsync.snippet.d.ts → components/dnd/findModelUidPosition.d.ts} +4 -7
- package/lib/{runjs-context/snippets/scene/jsblock/jsx-mount.snippet.js → components/dnd/findModelUidPosition.js} +23 -19
- package/lib/components/dnd/gridDragPlanner.d.ts +130 -0
- package/lib/components/dnd/gridDragPlanner.js +497 -0
- package/lib/components/dnd/index.d.ts +2 -2
- package/lib/components/dnd/index.js +5 -5
- package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +7 -1
- package/lib/components/variables/VariableInput.js +16 -2
- package/lib/components/variables/VariableTag.js +43 -2
- package/lib/components/variables/types.d.ts +2 -0
- package/lib/data-source/index.d.ts +12 -4
- package/lib/data-source/index.js +18 -12
- package/lib/data-source/sortCollectionsByInherits.d.ts +10 -0
- package/lib/data-source/sortCollectionsByInherits.js +71 -0
- package/lib/executor/FlowExecutor.d.ts +4 -5
- package/lib/executor/FlowExecutor.js +122 -94
- package/lib/flowContext.d.ts +33 -5
- package/lib/flowContext.js +145 -74
- package/lib/flowEngine.d.ts +8 -1
- package/lib/flowEngine.js +12 -2
- package/lib/flowSettings.d.ts +2 -1
- package/lib/flowSettings.js +7 -3
- package/lib/hooks/useApplyAutoFlows.js +2 -1
- package/lib/index.d.ts +6 -1
- package/lib/index.js +29 -3
- package/lib/models/CollectionFieldModel.d.ts +2 -0
- package/lib/models/CollectionFieldModel.js +43 -3
- package/lib/models/flowModel.d.ts +28 -29
- package/lib/models/flowModel.js +110 -88
- package/lib/models/forkFlowModel.d.ts +2 -2
- package/lib/models/forkFlowModel.js +29 -6
- package/lib/provider.d.ts +3 -1
- package/lib/provider.js +7 -5
- package/lib/resources/multiRecordResource.js +2 -0
- package/lib/resources/singleRecordResource.js +1 -0
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +27 -20
- package/lib/runjs-context/contexts/JSBlockRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/JSBlockRunJSContext.js +46 -33
- package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.d.ts +1 -2
- package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.js +14 -15
- package/lib/runjs-context/contexts/{LinkageRunJSContext.d.ts → JSColumnRunJSContext.d.ts} +6 -3
- package/lib/runjs-context/contexts/JSColumnRunJSContext.js +78 -0
- package/lib/runjs-context/contexts/JSFieldRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/JSFieldRunJSContext.js +28 -24
- package/lib/runjs-context/contexts/JSItemRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/JSItemRunJSContext.js +24 -20
- package/lib/runjs-context/contexts/JSRecordActionRunJSContext.d.ts +1 -2
- package/lib/runjs-context/contexts/JSRecordActionRunJSContext.js +16 -17
- package/lib/runjs-context/contexts/base.d.ts +9 -0
- package/lib/runjs-context/contexts/base.js +169 -0
- package/lib/runjs-context/helpers.d.ts +5 -2
- package/lib/runjs-context/helpers.js +36 -27
- package/lib/runjs-context/registry.d.ts +7 -4
- package/lib/runjs-context/registry.js +10 -42
- package/lib/runjs-context/setup.d.ts +9 -0
- package/lib/runjs-context/setup.js +82 -0
- package/lib/runjs-context/snippets/global/{copy-record-json.snippet.js → api-request.snippet.js} +25 -10
- package/lib/runjs-context/snippets/global/clipboard-copy-text.snippet.js +61 -0
- package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.js → import-esm.snippet.js} +26 -12
- package/lib/runjs-context/snippets/global/message-error.snippet.js +6 -0
- package/lib/runjs-context/snippets/global/message-success.snippet.js +6 -0
- package/lib/runjs-context/snippets/global/notification-open.snippet.d.ts +3 -8
- package/lib/runjs-context/snippets/global/notification-open.snippet.js +8 -1
- package/lib/runjs-context/snippets/global/open-view-dialog.snippet.js +10 -3
- package/lib/runjs-context/snippets/global/open-view-drawer.snippet.js +10 -3
- package/lib/runjs-context/snippets/global/query-selector.snippet.js +53 -0
- package/lib/runjs-context/snippets/global/require-amd.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/global/{requireAsync.snippet.js → require-amd.snippet.js} +16 -13
- package/lib/runjs-context/snippets/global/window-open.snippet.d.ts +3 -8
- package/lib/runjs-context/snippets/global/window-open.snippet.js +8 -1
- package/lib/runjs-context/snippets/index.d.ts +14 -3
- package/lib/runjs-context/snippets/index.js +160 -40
- package/lib/runjs-context/snippets/scene/block/add-event-listener.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.js +11 -2
- package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.js +99 -0
- package/lib/runjs-context/snippets/{libs → scene/block}/echarts-init.snippet.js +24 -7
- package/lib/runjs-context/snippets/scene/block/render-button-handler.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock → block}/render-button-handler.snippet.js +12 -6
- package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.js +57 -0
- package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.js +72 -0
- package/lib/runjs-context/snippets/scene/block/render-react.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock → block}/render-react.snippet.js +12 -11
- package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.js +100 -0
- package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.js +85 -0
- package/lib/runjs-context/snippets/scene/block/resource-example.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/resource-example.snippet.js +60 -0
- package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.js +283 -0
- package/lib/runjs-context/snippets/scene/block/vue-component.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/vue-component.snippet.js +124 -0
- package/lib/runjs-context/snippets/scene/detail/color-by-value.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsfield → detail}/color-by-value.snippet.js +13 -3
- package/lib/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/{global → scene/detail}/copy-to-clipboard.snippet.js +28 -6
- package/lib/runjs-context/snippets/scene/detail/format-number.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsfield → detail}/format-number.snippet.js +13 -3
- package/lib/runjs-context/snippets/scene/detail/innerHTML-value.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsfield → detail}/innerHTML-value.snippet.js +13 -3
- package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.js +82 -0
- package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.js +80 -0
- package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.js +74 -0
- package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.js +63 -0
- package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.js +81 -0
- package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.js +74 -0
- package/lib/runjs-context/snippets/scene/form/render-basic.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.js +11 -2
- package/lib/runjs-context/snippets/scene/form/set-disabled.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/form/set-field-value.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/form/set-required.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.js +67 -0
- package/lib/runjs-context/snippets/scene/form/toggle-visible.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/table/collection-selected-count.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.js +11 -2
- package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.js +79 -0
- package/lib/runjs-context/snippets/scene/table/destroy-selected.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/{global/log-json-record.snippet.js → scene/table/destroy-selected.snippet.js} +24 -11
- package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/table/iterate-selected-rows.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.js +11 -2
- package/lib/runjs-context/snippets/types.d.ts +9 -1
- package/lib/types.d.ts +15 -3
- package/lib/types.js +4 -3
- package/lib/utils/buildSettingsViewInputArgs.d.ts +19 -0
- package/lib/utils/buildSettingsViewInputArgs.js +75 -0
- package/lib/utils/index.d.ts +3 -2
- package/lib/utils/index.js +5 -2
- package/lib/utils/params-resolvers.js +2 -2
- package/lib/utils/safeGlobals.d.ts +5 -3
- package/lib/utils/safeGlobals.js +40 -0
- package/lib/utils/serverContextParams.d.ts +1 -0
- package/lib/utils/variablesParams.d.ts +9 -5
- package/lib/utils/variablesParams.js +47 -36
- package/lib/views/PageComponent.js +2 -1
- package/lib/views/createViewMeta.d.ts +29 -1
- package/lib/views/createViewMeta.js +321 -72
- package/lib/views/index.d.ts +1 -0
- package/lib/views/index.js +3 -0
- package/lib/views/useDialog.d.ts +8 -8
- package/lib/views/useDialog.js +8 -7
- package/lib/views/useDrawer.d.ts +8 -8
- package/lib/views/useDrawer.js +40 -26
- package/lib/views/usePage.d.ts +8 -8
- package/lib/views/usePage.js +8 -7
- package/package.json +4 -3
- package/src/BlockScopedFlowEngine.ts +86 -0
- package/src/FlowContextProvider.tsx +4 -2
- package/src/JSRunner.ts +3 -0
- package/src/ViewScopedFlowEngine.ts +1 -1
- package/src/__tests__/JSRunner.test.ts +62 -53
- package/src/__tests__/blockScopedFlowEngine.test.ts +154 -0
- package/src/__tests__/flow-engine.test.ts +3 -0
- package/src/__tests__/flowContextCreateJSRunner.test.ts +163 -0
- package/src/__tests__/flowEngine.saveModel.test.ts +4 -0
- package/src/__tests__/flowRunJSContextDefine.test.ts +508 -0
- package/src/__tests__/globalFlowRegistry.test.ts +1 -1
- package/src/__tests__/runjsContext.test.ts +216 -35
- package/src/__tests__/runjsContextImplementations.test.ts +217 -0
- package/src/__tests__/runjsContextRuntime.test.ts +269 -0
- package/src/__tests__/runjsEdgeCases.test.ts +281 -0
- package/src/__tests__/runjsLocales.test.ts +36 -0
- package/src/__tests__/runjsRuntimeFeatures.test.ts +449 -0
- package/src/__tests__/runjsSnippets.test.ts +140 -0
- package/src/__tests__/viewScopedFlowEngine.test.ts +3 -3
- package/src/components/DynamicFlowsEditor.tsx +3 -4
- package/src/components/FieldModelRenderer.tsx +16 -5
- package/src/components/FieldSkeleton.tsx +27 -0
- package/src/components/FlowContextSelector.tsx +6 -2
- package/src/components/FlowModelRenderer.tsx +30 -78
- package/src/components/FormItem.tsx +8 -1
- package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +5 -5
- package/src/components/__tests__/gridDragPlanner.test.ts +494 -0
- package/src/components/dnd/README.md +149 -0
- package/src/components/dnd/findModelUidPosition.ts +26 -0
- package/src/components/dnd/gridDragPlanner.ts +659 -0
- package/src/components/dnd/index.tsx +3 -3
- package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +14 -1
- package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +1 -0
- package/src/components/variables/VariableInput.tsx +22 -2
- package/src/components/variables/VariableTag.tsx +54 -2
- package/src/components/variables/types.ts +2 -0
- package/src/data-source/__tests__/sortCollectionsByInherits.test.ts +125 -0
- package/src/data-source/index.ts +16 -10
- package/src/data-source/sortCollectionsByInherits.ts +61 -0
- package/src/executor/FlowExecutor.ts +160 -114
- package/src/executor/__tests__/flowExecutor.test.ts +151 -5
- package/src/flowContext.ts +196 -93
- package/src/flowEngine.ts +13 -2
- package/src/flowSettings.ts +8 -3
- package/src/hooks/useApplyAutoFlows.ts +3 -1
- package/src/index.ts +11 -1
- package/src/models/CollectionFieldModel.tsx +43 -4
- package/src/models/__tests__/flowModel.getFlows.sort.test.ts +4 -4
- package/src/models/__tests__/flowModel.test.ts +218 -95
- package/src/models/flowModel.tsx +146 -122
- package/src/models/forkFlowModel.ts +37 -5
- package/src/provider.tsx +10 -7
- package/src/resources/multiRecordResource.ts +2 -0
- package/src/resources/singleRecordResource.ts +1 -0
- package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +28 -21
- package/src/runjs-context/contexts/JSBlockRunJSContext.ts +46 -34
- package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +15 -16
- package/src/runjs-context/contexts/JSColumnRunJSContext.ts +58 -0
- package/src/runjs-context/contexts/JSFieldRunJSContext.ts +30 -25
- package/src/runjs-context/contexts/JSItemRunJSContext.ts +25 -21
- package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +17 -18
- package/src/runjs-context/contexts/base.ts +155 -0
- package/src/runjs-context/helpers.ts +32 -30
- package/src/runjs-context/registry.ts +16 -47
- package/src/runjs-context/setup.ts +51 -0
- package/src/runjs-context/snippets/global/api-request.snippet.ts +38 -0
- package/src/runjs-context/snippets/global/clipboard-copy-text.snippet.ts +42 -0
- package/src/runjs-context/snippets/global/import-esm.snippet.ts +39 -0
- package/src/runjs-context/snippets/global/message-error.snippet.ts +6 -0
- package/src/runjs-context/snippets/global/message-success.snippet.ts +6 -0
- package/src/runjs-context/snippets/global/notification-open.snippet.ts +11 -1
- package/src/runjs-context/snippets/global/open-view-dialog.snippet.ts +10 -3
- package/src/runjs-context/snippets/global/open-view-drawer.snippet.ts +10 -3
- package/src/runjs-context/snippets/global/query-selector.snippet.ts +34 -0
- package/src/runjs-context/snippets/global/require-amd.snippet.ts +30 -0
- package/src/runjs-context/snippets/global/window-open.snippet.ts +11 -1
- package/src/runjs-context/snippets/index.ts +176 -39
- package/src/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.ts +14 -2
- package/src/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/block/chartjs-bar.snippet.ts +80 -0
- package/src/runjs-context/snippets/scene/block/echarts-init.snippet.ts +44 -0
- package/src/runjs-context/snippets/scene/{jsblock → block}/render-button-handler.snippet.ts +15 -6
- package/src/runjs-context/snippets/scene/block/render-iframe.snippet.ts +38 -0
- package/src/runjs-context/snippets/scene/block/render-info-card.snippet.ts +53 -0
- package/src/runjs-context/snippets/scene/{jsblock → block}/render-react.snippet.ts +15 -11
- package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +81 -0
- package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +66 -0
- package/src/runjs-context/snippets/scene/block/resource-example.snippet.ts +46 -0
- package/src/runjs-context/snippets/scene/block/three-users-orbit.snippet.ts +264 -0
- package/src/runjs-context/snippets/scene/block/vue-component.snippet.ts +105 -0
- package/src/runjs-context/snippets/scene/detail/color-by-value.snippet.ts +33 -0
- package/src/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/detail/format-number.snippet.ts +32 -0
- package/src/runjs-context/snippets/scene/detail/innerHTML-value.snippet.ts +31 -0
- package/src/runjs-context/snippets/scene/detail/percentage-bar.snippet.ts +63 -0
- package/src/runjs-context/snippets/scene/detail/relative-time.snippet.ts +61 -0
- package/src/runjs-context/snippets/scene/detail/status-tag.snippet.ts +55 -0
- package/src/runjs-context/snippets/scene/form/calculate-total.snippet.ts +44 -0
- package/src/runjs-context/snippets/scene/form/cascade-select.snippet.ts +62 -0
- package/src/runjs-context/snippets/scene/form/conditional-required.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/form/copy-field-values.snippet.ts +55 -0
- package/src/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.ts +14 -2
- package/src/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.ts +48 -0
- package/src/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/table/cell-open-dialog.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.ts +14 -2
- package/src/runjs-context/snippets/scene/table/concat-fields.snippet.ts +60 -0
- package/src/runjs-context/snippets/scene/table/destroy-selected.snippet.ts +36 -0
- package/src/runjs-context/snippets/scene/table/export-selected-json.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.ts +14 -2
- package/src/runjs-context/snippets/types.ts +5 -1
- package/src/types.ts +13 -0
- package/src/utils/__tests__/safeGlobals.test.ts +22 -1
- package/src/utils/buildSettingsViewInputArgs.ts +72 -0
- package/src/utils/index.ts +2 -2
- package/src/utils/params-resolvers.ts +1 -1
- package/src/utils/safeGlobals.ts +49 -3
- package/src/utils/serverContextParams.ts +1 -0
- package/src/utils/variablesParams.ts +50 -38
- package/src/views/PageComponent.tsx +1 -1
- package/src/views/createViewMeta.ts +372 -70
- package/src/views/index.tsx +1 -0
- package/src/views/useDialog.tsx +12 -10
- package/src/views/useDrawer.tsx +60 -36
- package/src/views/usePage.tsx +13 -10
- package/lib/components/dnd/getMousePositionOnElement.d.ts +0 -50
- package/lib/components/dnd/getMousePositionOnElement.js +0 -95
- package/lib/components/dnd/moveBlock.d.ts +0 -33
- package/lib/components/dnd/moveBlock.js +0 -302
- package/lib/runjs-context/contexts/FlowRunJSContext.d.ts +0 -38
- package/lib/runjs-context/contexts/FlowRunJSContext.js +0 -217
- package/lib/runjs-context/contexts/LinkageRunJSContext.js +0 -62
- package/lib/runjs-context/index.d.ts +0 -19
- package/lib/runjs-context/index.js +0 -57
- package/lib/runjs-context/snippets/global/api-request-get.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/api-request-get.snippet.js +0 -42
- package/lib/runjs-context/snippets/global/api-request-post.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/api-request-post.snippet.js +0 -42
- package/lib/runjs-context/snippets/global/console-log-ctx.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/console-log-ctx.snippet.js +0 -41
- package/lib/runjs-context/snippets/global/sleep.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/sleep.snippet.js +0 -43
- package/lib/runjs-context/snippets/global/try-catch-async.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/try-catch-async.snippet.js +0 -44
- package/lib/runjs-context/snippets/libs/echarts-init.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/collection-selected-count.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/iterate-selected-rows.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.js +0 -43
- package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.js +0 -40
- package/lib/runjs-context/snippets/scene/jsblock/add-event-listener.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.js +0 -42
- package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.js +0 -41
- package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.js +0 -41
- package/lib/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/render-card.snippet.js +0 -45
- package/lib/runjs-context/snippets/scene/jsblock/render-react.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsfield/color-by-value.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsfield/format-number.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsitem/render-basic.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/set-disabled.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/set-field-value.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/set-required.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/toggle-visible.snippet.d.ts +0 -15
- package/src/components/dnd/getMousePositionOnElement.ts +0 -115
- package/src/components/dnd/moveBlock.ts +0 -379
- package/src/runjs-context/contexts/FlowRunJSContext.ts +0 -190
- package/src/runjs-context/contexts/LinkageRunJSContext.ts +0 -35
- package/src/runjs-context/index.ts +0 -20
- package/src/runjs-context/snippets/global/api-request-get.snippet.ts +0 -20
- package/src/runjs-context/snippets/global/api-request-post.snippet.ts +0 -20
- package/src/runjs-context/snippets/global/console-log-ctx.snippet.ts +0 -19
- package/src/runjs-context/snippets/global/copy-record-json.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/copy-to-clipboard.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/log-json-record.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/requireAsync.snippet.ts +0 -24
- package/src/runjs-context/snippets/global/sleep.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/try-catch-async.snippet.ts +0 -22
- package/src/runjs-context/snippets/global/view-navigation-push.snippet.ts +0 -23
- package/src/runjs-context/snippets/libs/echarts-init.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/actions/record-id-message.snippet.ts +0 -21
- package/src/runjs-context/snippets/scene/actions/run-action-basic.snippet.ts +0 -18
- package/src/runjs-context/snippets/scene/jsblock/append-style.snippet.ts +0 -20
- package/src/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.ts +0 -19
- package/src/runjs-context/snippets/scene/jsblock/render-basic.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/jsblock/render-card.snippet.ts +0 -30
- package/src/runjs-context/snippets/scene/jsfield/color-by-value.snippet.ts +0 -20
- package/src/runjs-context/snippets/scene/jsfield/format-number.snippet.ts +0 -19
- package/src/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.ts +0 -18
- /package/lib/runjs-context/snippets/global/{copy-record-json.snippet.d.ts → api-request.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/global/{copy-to-clipboard.snippet.d.ts → clipboard-copy-text.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/global/{log-json-record.snippet.d.ts → import-esm.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.d.ts → query-selector.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.d.ts → block/echarts-init.snippet.d.ts} +0 -0
|
@@ -94,6 +94,7 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
|
|
|
94
94
|
showValueComponent = true,
|
|
95
95
|
onlyLeafSelectable = false,
|
|
96
96
|
clearValue,
|
|
97
|
+
ignoreFieldNames,
|
|
97
98
|
...restProps
|
|
98
99
|
}) => {
|
|
99
100
|
const [currentMetaTreeNode, setCurrentMetaTreeNode] = (0, import_react.useState)(null);
|
|
@@ -241,11 +242,23 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
|
|
|
241
242
|
if (disabled) {
|
|
242
243
|
return;
|
|
243
244
|
}
|
|
244
|
-
setCurrentMetaTreeNode(null);
|
|
245
245
|
const cleared = clearValue !== void 0 ? clearValue : null;
|
|
246
246
|
setInnerValue(cleared);
|
|
247
|
+
try {
|
|
248
|
+
const path = resolvePathFromValue == null ? void 0 : resolvePathFromValue(cleared);
|
|
249
|
+
if (Array.isArray(resolvedMetaTree) && path && path.length > 0) {
|
|
250
|
+
const node = findMetaTreeNodeByPath(resolvedMetaTree, path);
|
|
251
|
+
if (node) {
|
|
252
|
+
setCurrentMetaTreeNode(node);
|
|
253
|
+
emitChange(cleared, node);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
} catch (_) {
|
|
258
|
+
}
|
|
259
|
+
setCurrentMetaTreeNode(null);
|
|
247
260
|
emitChange(cleared);
|
|
248
|
-
}, [emitChange, disabled, clearValue]);
|
|
261
|
+
}, [emitChange, disabled, clearValue, resolvedMetaTree, resolvePathFromValue]);
|
|
249
262
|
const stableProps = (0, import_react.useMemo)(() => {
|
|
250
263
|
const { style, onFocus, onBlur, disabled: disabled2, ...otherProps } = restProps;
|
|
251
264
|
return { style, onFocus, onBlur, otherProps };
|
|
@@ -311,6 +324,7 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
|
|
|
311
324
|
parseValueToPath: resolvePathFromValue,
|
|
312
325
|
formatPathToValue: resolveValueFromPath,
|
|
313
326
|
onlyLeafSelectable,
|
|
327
|
+
ignoreFieldNames,
|
|
314
328
|
...!showValueComponent && { children: null, placeholder: restProps == null ? void 0 : restProps.placeholder }
|
|
315
329
|
}
|
|
316
330
|
));
|
|
@@ -63,8 +63,49 @@ const VariableTagComponent = /* @__PURE__ */ __name(({
|
|
|
63
63
|
return metaTreeNode.parentTitles ? [...metaTreeNode.parentTitles, metaTreeNode.title].map(ctx.t).join("/") : ctx.t(metaTreeNode.title) || "";
|
|
64
64
|
}
|
|
65
65
|
if (!value) return String(value);
|
|
66
|
-
const
|
|
67
|
-
|
|
66
|
+
const rawPath = (0, import_utils.parseValueToPath)(value);
|
|
67
|
+
if (!rawPath || !Array.isArray(resolvedMetaTree)) {
|
|
68
|
+
return Array.isArray(rawPath) ? rawPath.join("/") : String(value);
|
|
69
|
+
}
|
|
70
|
+
const topNames = new Set((resolvedMetaTree || []).map((n) => String(n == null ? void 0 : n.name)));
|
|
71
|
+
const path = !topNames.has(String(rawPath[0])) ? rawPath.slice(1) : rawPath;
|
|
72
|
+
if (!path.length) return "";
|
|
73
|
+
let nodes = resolvedMetaTree;
|
|
74
|
+
let deepest = null;
|
|
75
|
+
let matchedCount = 0;
|
|
76
|
+
for (let i = 0; i < path.length; i++) {
|
|
77
|
+
if (!nodes) break;
|
|
78
|
+
const seg = String(path[i]);
|
|
79
|
+
const node = nodes.find((n) => String(n == null ? void 0 : n.name) === seg);
|
|
80
|
+
if (!node) break;
|
|
81
|
+
deepest = node;
|
|
82
|
+
matchedCount = i + 1;
|
|
83
|
+
if (i < path.length - 1) {
|
|
84
|
+
if (Array.isArray(node.children)) {
|
|
85
|
+
nodes = node.children;
|
|
86
|
+
} else if (typeof node.children === "function") {
|
|
87
|
+
try {
|
|
88
|
+
const childNodes = await node.children();
|
|
89
|
+
node.children = childNodes;
|
|
90
|
+
nodes = childNodes;
|
|
91
|
+
} catch {
|
|
92
|
+
nodes = void 0;
|
|
93
|
+
}
|
|
94
|
+
} else {
|
|
95
|
+
nodes = void 0;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (deepest) {
|
|
100
|
+
const titles = deepest.parentTitles ? [...deepest.parentTitles, deepest.title] : [deepest.title];
|
|
101
|
+
let label = titles.map(ctx.t).join("/");
|
|
102
|
+
if (matchedCount < path.length) {
|
|
103
|
+
const tail = path.slice(matchedCount).join("/");
|
|
104
|
+
label = tail ? `${label}/${tail}` : label;
|
|
105
|
+
}
|
|
106
|
+
return label;
|
|
107
|
+
}
|
|
108
|
+
return path.join("/");
|
|
68
109
|
},
|
|
69
110
|
{ refreshDeps: [resolvedMetaTree, value, metaTreeNode] }
|
|
70
111
|
);
|
|
@@ -18,6 +18,7 @@ export interface FlowContextSelectorProps extends Omit<CascaderProps<ContextSele
|
|
|
18
18
|
formatPathToValue?: (item: MetaTreeNode) => string;
|
|
19
19
|
open?: boolean;
|
|
20
20
|
onlyLeafSelectable?: boolean;
|
|
21
|
+
ignoreFieldNames?: string[];
|
|
21
22
|
}
|
|
22
23
|
export interface ContextSelectorItem {
|
|
23
24
|
label: React.ReactNode;
|
|
@@ -62,6 +63,7 @@ export interface VariableInputProps {
|
|
|
62
63
|
* 默认行为为 null;可设置为 '' 等,以便清空后默认切换为“常量-空字符串”。
|
|
63
64
|
*/
|
|
64
65
|
clearValue?: any;
|
|
66
|
+
ignoreFieldNames?: string[];
|
|
65
67
|
[key: string]: any;
|
|
66
68
|
}
|
|
67
69
|
export interface VariableTagProps {
|
|
@@ -49,7 +49,9 @@ export declare class DataSource {
|
|
|
49
49
|
addCollection(collection: Collection | CollectionOptions): void;
|
|
50
50
|
updateCollection(newOptions: CollectionOptions): void;
|
|
51
51
|
upsertCollection(options: CollectionOptions): Collection;
|
|
52
|
-
upsertCollections(collections: CollectionOptions[]
|
|
52
|
+
upsertCollections(collections: CollectionOptions[], options?: {
|
|
53
|
+
clearFields?: boolean;
|
|
54
|
+
}): void;
|
|
53
55
|
removeCollection(name: string): void;
|
|
54
56
|
clearCollections(): void;
|
|
55
57
|
setOptions(newOptions?: any): void;
|
|
@@ -68,9 +70,13 @@ export declare class CollectionManager {
|
|
|
68
70
|
get flowEngine(): FlowEngine;
|
|
69
71
|
addCollection(collection: Collection | CollectionOptions): void;
|
|
70
72
|
removeCollection(name: string): void;
|
|
71
|
-
updateCollection(newOptions: CollectionOptions
|
|
73
|
+
updateCollection(newOptions: CollectionOptions, options?: {
|
|
74
|
+
clearFields?: boolean;
|
|
75
|
+
}): void;
|
|
72
76
|
upsertCollection(options: CollectionOptions): Collection;
|
|
73
|
-
upsertCollections(collections: CollectionOptions[]
|
|
77
|
+
upsertCollections(collections: CollectionOptions[], options?: {
|
|
78
|
+
clearFields?: boolean;
|
|
79
|
+
}): void;
|
|
74
80
|
sortCollectionsByInherits(collections: CollectionOptions[]): CollectionOptions[];
|
|
75
81
|
getCollection(name: string): Collection | undefined;
|
|
76
82
|
getCollections(): Collection[];
|
|
@@ -97,7 +103,9 @@ export declare class Collection {
|
|
|
97
103
|
get titleCollectionField(): CollectionField;
|
|
98
104
|
initInherits(): void;
|
|
99
105
|
setDataSource(dataSource: DataSource): void;
|
|
100
|
-
setOptions(newOptions?: any
|
|
106
|
+
setOptions(newOptions?: any, options?: {
|
|
107
|
+
clearFields?: boolean;
|
|
108
|
+
}): void;
|
|
101
109
|
getFields(): CollectionField[];
|
|
102
110
|
getToOneAssociationFields(): CollectionField[];
|
|
103
111
|
getAssociationFields(types?: any[]): CollectionField[];
|
package/lib/data-source/index.js
CHANGED
|
@@ -49,6 +49,7 @@ module.exports = __toCommonJS(data_source_exports);
|
|
|
49
49
|
var import_reactive = require("@formily/reactive");
|
|
50
50
|
var import_lodash = __toESM(require("lodash"));
|
|
51
51
|
var import_jioToJoiSchema = require("./jioToJoiSchema");
|
|
52
|
+
var import_sortCollectionsByInherits = require("./sortCollectionsByInherits");
|
|
52
53
|
const _DataSourceManager = class _DataSourceManager {
|
|
53
54
|
dataSources;
|
|
54
55
|
flowEngine;
|
|
@@ -152,8 +153,8 @@ const _DataSource = class _DataSource {
|
|
|
152
153
|
upsertCollection(options) {
|
|
153
154
|
return this.collectionManager.upsertCollection(options);
|
|
154
155
|
}
|
|
155
|
-
upsertCollections(collections) {
|
|
156
|
-
return this.collectionManager.upsertCollections(collections);
|
|
156
|
+
upsertCollections(collections, options = {}) {
|
|
157
|
+
return this.collectionManager.upsertCollections(collections, options);
|
|
157
158
|
}
|
|
158
159
|
removeCollection(name) {
|
|
159
160
|
return this.collectionManager.removeCollection(name);
|
|
@@ -204,12 +205,12 @@ const _CollectionManager = class _CollectionManager {
|
|
|
204
205
|
removeCollection(name) {
|
|
205
206
|
this.collections.delete(name);
|
|
206
207
|
}
|
|
207
|
-
updateCollection(newOptions) {
|
|
208
|
+
updateCollection(newOptions, options = {}) {
|
|
208
209
|
const collection = this.getCollection(newOptions.name);
|
|
209
210
|
if (!collection) {
|
|
210
211
|
throw new Error(`Collection ${newOptions.name} not found`);
|
|
211
212
|
}
|
|
212
|
-
collection.setOptions(newOptions);
|
|
213
|
+
collection.setOptions(newOptions, options);
|
|
213
214
|
}
|
|
214
215
|
upsertCollection(options) {
|
|
215
216
|
if (this.collections.has(options.name)) {
|
|
@@ -219,10 +220,10 @@ const _CollectionManager = class _CollectionManager {
|
|
|
219
220
|
}
|
|
220
221
|
return this.getCollection(options.name);
|
|
221
222
|
}
|
|
222
|
-
upsertCollections(collections) {
|
|
223
|
-
for (const collection of
|
|
223
|
+
upsertCollections(collections, options = {}) {
|
|
224
|
+
for (const collection of (0, import_sortCollectionsByInherits.sortCollectionsByInherits)(collections)) {
|
|
224
225
|
if (this.collections.has(collection.name)) {
|
|
225
|
-
this.updateCollection(collection);
|
|
226
|
+
this.updateCollection(collection, options);
|
|
226
227
|
} else {
|
|
227
228
|
this.addCollection(collection);
|
|
228
229
|
}
|
|
@@ -368,7 +369,8 @@ const _Collection = class _Collection {
|
|
|
368
369
|
for (const inherit of this.options.inherits || []) {
|
|
369
370
|
const collection = this.collectionManager.getCollection(inherit);
|
|
370
371
|
if (!collection) {
|
|
371
|
-
|
|
372
|
+
console.warn(`Warning: Collection ${inherit} not found for collection ${this.name}`);
|
|
373
|
+
continue;
|
|
372
374
|
}
|
|
373
375
|
this.inherits.set(inherit, collection);
|
|
374
376
|
}
|
|
@@ -376,10 +378,13 @@ const _Collection = class _Collection {
|
|
|
376
378
|
setDataSource(dataSource) {
|
|
377
379
|
this.dataSource = dataSource;
|
|
378
380
|
}
|
|
379
|
-
setOptions(newOptions = {}) {
|
|
381
|
+
setOptions(newOptions = {}, options = {}) {
|
|
380
382
|
Object.keys(this.options).forEach((key) => delete this.options[key]);
|
|
381
383
|
Object.assign(this.options, newOptions);
|
|
382
384
|
this.initInherits();
|
|
385
|
+
if (options.clearFields) {
|
|
386
|
+
this.clearFields();
|
|
387
|
+
}
|
|
383
388
|
this.upsertFields(this.options.fields || []);
|
|
384
389
|
}
|
|
385
390
|
getFields() {
|
|
@@ -584,7 +589,7 @@ const _CollectionField = class _CollectionField {
|
|
|
584
589
|
}
|
|
585
590
|
get title() {
|
|
586
591
|
var _a, _b, _c;
|
|
587
|
-
const titleValue = ((_a = this.options) == null ? void 0 : _a.
|
|
592
|
+
const titleValue = ((_b = (_a = this.options) == null ? void 0 : _a.uiSchema) == null ? void 0 : _b.title) || ((_c = this.options) == null ? void 0 : _c.title) || this.options.name;
|
|
588
593
|
return this.flowEngine.translate(titleValue);
|
|
589
594
|
}
|
|
590
595
|
set title(value) {
|
|
@@ -618,7 +623,7 @@ const _CollectionField = class _CollectionField {
|
|
|
618
623
|
return this.options.validation;
|
|
619
624
|
}
|
|
620
625
|
getComponentProps() {
|
|
621
|
-
var _a;
|
|
626
|
+
var _a, _b;
|
|
622
627
|
const { type, target } = this.options;
|
|
623
628
|
const componentProps = import_lodash.default.omitBy(
|
|
624
629
|
{
|
|
@@ -627,7 +632,8 @@ const _CollectionField = class _CollectionField {
|
|
|
627
632
|
mode: this.type === "array" ? "multiple" : void 0,
|
|
628
633
|
multiple: target ? ["belongsToMany", "hasMany", "belongsToArray"].includes(type) : void 0,
|
|
629
634
|
maxCount: target && !["belongsToMany", "hasMany", "belongsToArray"].includes(type) ? 1 : void 0,
|
|
630
|
-
target
|
|
635
|
+
target,
|
|
636
|
+
template: (_b = this.targetCollection) == null ? void 0 : _b.template
|
|
631
637
|
},
|
|
632
638
|
import_lodash.default.isUndefined
|
|
633
639
|
);
|
|
@@ -0,0 +1,10 @@
|
|
|
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 { CollectionOptions } from '.';
|
|
10
|
+
export declare function sortCollectionsByInherits(collections: CollectionOptions[]): CollectionOptions[];
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
var __defProp = Object.defineProperty;
|
|
11
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
12
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
15
|
+
var __export = (target, all) => {
|
|
16
|
+
for (var name in all)
|
|
17
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
18
|
+
};
|
|
19
|
+
var __copyProps = (to, from, except, desc) => {
|
|
20
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
21
|
+
for (let key of __getOwnPropNames(from))
|
|
22
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
23
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
24
|
+
}
|
|
25
|
+
return to;
|
|
26
|
+
};
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var sortCollectionsByInherits_exports = {};
|
|
29
|
+
__export(sortCollectionsByInherits_exports, {
|
|
30
|
+
sortCollectionsByInherits: () => sortCollectionsByInherits
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(sortCollectionsByInherits_exports);
|
|
33
|
+
function sortCollectionsByInherits(collections) {
|
|
34
|
+
const sorted = [];
|
|
35
|
+
const visited = /* @__PURE__ */ new Set();
|
|
36
|
+
const visiting = /* @__PURE__ */ new Set();
|
|
37
|
+
const map = /* @__PURE__ */ new Map();
|
|
38
|
+
collections.forEach((col) => {
|
|
39
|
+
map.set(col.name, col);
|
|
40
|
+
});
|
|
41
|
+
const addToSorted = /* @__PURE__ */ __name((col) => {
|
|
42
|
+
if (visiting.has(col.name)) {
|
|
43
|
+
throw new Error(`Circular dependency detected: ${col.name} inherits from itself through a chain`);
|
|
44
|
+
}
|
|
45
|
+
if (visited.has(col.name)) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
visiting.add(col.name);
|
|
49
|
+
const inherits = col.inherits || [];
|
|
50
|
+
for (const inheritName of inherits) {
|
|
51
|
+
const inheritCol = map.get(inheritName);
|
|
52
|
+
if (!inheritCol) {
|
|
53
|
+
console.warn(`Warning: Collection ${inheritName}, inherited by ${col.name}, not found.`);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
addToSorted(inheritCol);
|
|
57
|
+
}
|
|
58
|
+
visiting.delete(col.name);
|
|
59
|
+
visited.add(col.name);
|
|
60
|
+
sorted.push(col);
|
|
61
|
+
}, "addToSorted");
|
|
62
|
+
for (const col of collections) {
|
|
63
|
+
addToSorted(col);
|
|
64
|
+
}
|
|
65
|
+
return sorted;
|
|
66
|
+
}
|
|
67
|
+
__name(sortCollectionsByInherits, "sortCollectionsByInherits");
|
|
68
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
69
|
+
0 && (module.exports = {
|
|
70
|
+
sortCollectionsByInherits
|
|
71
|
+
});
|
|
@@ -8,19 +8,18 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { FlowEngine } from '../flowEngine';
|
|
10
10
|
import type { FlowModel } from '../models';
|
|
11
|
+
import type { DispatchEventOptions } from '../types';
|
|
11
12
|
export declare class FlowExecutor {
|
|
12
13
|
private readonly engine;
|
|
13
14
|
constructor(engine: FlowEngine);
|
|
15
|
+
/** Cache wrapper for applyFlow cache lifecycle */
|
|
16
|
+
private withApplyFlowCache;
|
|
14
17
|
/**
|
|
15
18
|
* Execute a single flow on model.
|
|
16
19
|
*/
|
|
17
20
|
runFlow(model: FlowModel, flowKey: string, inputArgs?: Record<string, any>, runId?: string): Promise<any>;
|
|
18
|
-
/**
|
|
19
|
-
* Execute all auto-apply flows for model.
|
|
20
|
-
*/
|
|
21
|
-
runAutoFlows(model: FlowModel, inputArgs?: Record<string, any>, useCache?: boolean): Promise<any[]>;
|
|
22
21
|
/**
|
|
23
22
|
* Dispatch an event to flows bound via flow.on and execute them.
|
|
24
23
|
*/
|
|
25
|
-
dispatchEvent(model: FlowModel, eventName: string, inputArgs?: Record<string, any
|
|
24
|
+
dispatchEvent(model: FlowModel, eventName: string, inputArgs?: Record<string, any>, options?: DispatchEventOptions): Promise<any>;
|
|
26
25
|
}
|
|
@@ -50,6 +50,33 @@ const _FlowExecutor = class _FlowExecutor {
|
|
|
50
50
|
constructor(engine) {
|
|
51
51
|
this.engine = engine;
|
|
52
52
|
}
|
|
53
|
+
/** Cache wrapper for applyFlow cache lifecycle */
|
|
54
|
+
async withApplyFlowCache(cacheKey, executor) {
|
|
55
|
+
if (!cacheKey || !this.engine) return await executor();
|
|
56
|
+
const cachedEntry = this.engine.applyFlowCache.get(cacheKey);
|
|
57
|
+
if (cachedEntry) {
|
|
58
|
+
if (cachedEntry.status === "resolved") return cachedEntry.data;
|
|
59
|
+
if (cachedEntry.status === "rejected") throw cachedEntry.error;
|
|
60
|
+
if (cachedEntry.status === "pending") return await cachedEntry.promise;
|
|
61
|
+
}
|
|
62
|
+
const promise = executor().then((result) => {
|
|
63
|
+
this.engine.applyFlowCache.set(cacheKey, {
|
|
64
|
+
status: "resolved",
|
|
65
|
+
data: result,
|
|
66
|
+
promise: Promise.resolve(result)
|
|
67
|
+
});
|
|
68
|
+
return result;
|
|
69
|
+
}).catch((err) => {
|
|
70
|
+
this.engine.applyFlowCache.set(cacheKey, {
|
|
71
|
+
status: "rejected",
|
|
72
|
+
error: err,
|
|
73
|
+
promise: Promise.reject(err)
|
|
74
|
+
});
|
|
75
|
+
throw err;
|
|
76
|
+
});
|
|
77
|
+
this.engine.applyFlowCache.set(cacheKey, { status: "pending", promise });
|
|
78
|
+
return await promise;
|
|
79
|
+
}
|
|
53
80
|
/**
|
|
54
81
|
* Execute a single flow on model.
|
|
55
82
|
*/
|
|
@@ -77,20 +104,20 @@ const _FlowExecutor = class _FlowExecutor {
|
|
|
77
104
|
let eventStep = model.getEvent(typeof flow.on === "string" ? flow.on : (_a = flow.on) == null ? void 0 : _a.eventName);
|
|
78
105
|
if (eventStep) {
|
|
79
106
|
eventStep = { ...eventStep };
|
|
80
|
-
eventStep.defaultParams = {
|
|
107
|
+
eventStep.defaultParams = {
|
|
108
|
+
...import_lodash.default.get(flow, "on.defaultParams", {}),
|
|
109
|
+
...eventStep.defaultParams
|
|
110
|
+
};
|
|
81
111
|
}
|
|
82
112
|
const stepDefs = eventStep ? { eventStep, ...flow.steps } : flow.steps;
|
|
83
113
|
(0, import_setupRuntimeContextSteps.setupRuntimeContextSteps)(flowContext, stepDefs, model, flowKey);
|
|
84
114
|
const stepsRuntime = flowContext.steps;
|
|
85
|
-
for (const stepKey
|
|
86
|
-
if (!Object.prototype.hasOwnProperty.call(stepDefs, stepKey)) continue;
|
|
87
|
-
const step = stepDefs[stepKey];
|
|
115
|
+
for (const [stepKey, step] of Object.entries(stepDefs)) {
|
|
88
116
|
let handler;
|
|
89
117
|
let combinedParams = {};
|
|
90
|
-
let actionDefinition;
|
|
91
118
|
let useRawParams = step.useRawParams;
|
|
92
119
|
if (step.use) {
|
|
93
|
-
actionDefinition = model.getAction(step.use);
|
|
120
|
+
const actionDefinition = model.getAction(step.use);
|
|
94
121
|
if (!actionDefinition) {
|
|
95
122
|
flowContext.logger.error(
|
|
96
123
|
`BaseModel.applyFlow: Action '${step.use}' not found for step '${stepKey}' in flow '${flowKey}'. Skipping.`
|
|
@@ -152,106 +179,107 @@ const _FlowExecutor = class _FlowExecutor {
|
|
|
152
179
|
}
|
|
153
180
|
return Promise.resolve(stepResults);
|
|
154
181
|
}
|
|
182
|
+
// runAutoFlows 已移除:统一通过 dispatchEvent('beforeRender') + useCache 控制
|
|
155
183
|
/**
|
|
156
|
-
*
|
|
184
|
+
* Dispatch an event to flows bound via flow.on and execute them.
|
|
157
185
|
*/
|
|
158
|
-
async
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (cachedEntry.status === "rejected") throw cachedEntry.error;
|
|
173
|
-
if (cachedEntry.status === "pending") return await cachedEntry.promise;
|
|
186
|
+
async dispatchEvent(model, eventName, inputArgs, options) {
|
|
187
|
+
var _a, _b, _c, _d;
|
|
188
|
+
const isBeforeRender = eventName === "beforeRender";
|
|
189
|
+
const sequential = !!(options == null ? void 0 : options.sequential);
|
|
190
|
+
const useCache = !!(options == null ? void 0 : options.useCache);
|
|
191
|
+
const throwOnError = isBeforeRender;
|
|
192
|
+
const runId = `${model.uid}-${eventName}-${Date.now()}`;
|
|
193
|
+
const logger = model.context.logger;
|
|
194
|
+
try {
|
|
195
|
+
await ((_a = model.onDispatchEventStart) == null ? void 0 : _a.call(model, eventName, options, inputArgs));
|
|
196
|
+
} catch (err) {
|
|
197
|
+
if (isBeforeRender && err instanceof import_utils.FlowExitException) {
|
|
198
|
+
logger.debug(`[FlowModel.dispatchEvent] ${err.message}`);
|
|
199
|
+
return [];
|
|
174
200
|
}
|
|
175
|
-
}
|
|
176
|
-
const executeAutoFlows = /* @__PURE__ */ __name(async () => {
|
|
177
|
-
const results = [];
|
|
178
|
-
const runId = `${model.uid}-autoFlow-${Date.now()}-${Math.floor(Math.random() * 1e3)}`;
|
|
179
|
-
const logger = model.context.logger.child({ module: "flow-engine", component: "FlowExecutor", runId });
|
|
180
|
-
logger.debug(
|
|
181
|
-
`[FlowExecutor] runAutoFlows: uid=${model.uid}, isFork=${(model == null ? void 0 : model.isFork) === true}, useCache=${useCache}, runId=${runId}, flows=${autoApplyFlows.map((f) => f.key).join(",")}`
|
|
182
|
-
);
|
|
183
201
|
try {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
for (const flow of autoApplyFlows) {
|
|
188
|
-
try {
|
|
189
|
-
logger.debug(`[FlowExecutor] runFlow: uid=${model.uid}, flowKey=${flow.key}`);
|
|
190
|
-
const result = await this.runFlow(model, flow.key, inputArgs, runId);
|
|
191
|
-
if (result instanceof import_exceptions.FlowExitAllException) {
|
|
192
|
-
logger.debug(`[FlowEngine.applyAutoFlows] ${result.message}`);
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
195
|
-
results.push(result);
|
|
196
|
-
} catch (error) {
|
|
197
|
-
logger.error({ err: error }, `FlowModel.applyAutoFlows: Error executing auto-apply flow '${flow.key}':`);
|
|
198
|
-
throw error;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
return results;
|
|
203
|
-
} catch (error) {
|
|
204
|
-
if (error instanceof import_utils.FlowExitException) {
|
|
205
|
-
logger.debug(`[FlowEngine.applyAutoFlows] ${error.message}`);
|
|
206
|
-
return results;
|
|
207
|
-
}
|
|
208
|
-
throw error;
|
|
202
|
+
await ((_b = model.onDispatchEventError) == null ? void 0 : _b.call(model, eventName, options, inputArgs, err));
|
|
203
|
+
} finally {
|
|
204
|
+
logger.error({ err }, `BaseModel.dispatchEvent: Start hook error for event '${eventName}'`);
|
|
209
205
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
return await executeAutoFlows();
|
|
206
|
+
if (throwOnError) throw err;
|
|
207
|
+
return;
|
|
213
208
|
}
|
|
214
|
-
const
|
|
215
|
-
this.engine.applyFlowCache.set(cacheKey, {
|
|
216
|
-
status: "resolved",
|
|
217
|
-
data: result,
|
|
218
|
-
promise: Promise.resolve(result)
|
|
219
|
-
});
|
|
220
|
-
return result;
|
|
221
|
-
}).catch((err) => {
|
|
222
|
-
this.engine.applyFlowCache.set(cacheKey, {
|
|
223
|
-
status: "rejected",
|
|
224
|
-
error: err,
|
|
225
|
-
promise: Promise.reject(err)
|
|
226
|
-
});
|
|
227
|
-
throw err;
|
|
228
|
-
});
|
|
229
|
-
this.engine.applyFlowCache.set(cacheKey, { status: "pending", promise });
|
|
230
|
-
return await promise;
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Dispatch an event to flows bound via flow.on and execute them.
|
|
234
|
-
*/
|
|
235
|
-
async dispatchEvent(model, eventName, inputArgs) {
|
|
236
|
-
const flows = Array.from(model.getFlows().values()).filter((flow) => {
|
|
209
|
+
const flows = isBeforeRender ? model.getEventFlows("beforeRender") : Array.from(model.getFlows().values()).filter((flow) => {
|
|
237
210
|
const on = flow.on;
|
|
238
211
|
if (!on) return false;
|
|
239
212
|
if (typeof on === "string") return on === eventName;
|
|
240
213
|
if (typeof on === "object") return on.eventName === eventName;
|
|
241
214
|
return false;
|
|
242
215
|
});
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
216
|
+
const execute = /* @__PURE__ */ __name(async () => {
|
|
217
|
+
if (sequential) {
|
|
218
|
+
const ordered = flows.slice().sort((a, b) => (a.sort ?? 0) - (b.sort ?? 0));
|
|
219
|
+
const results2 = [];
|
|
220
|
+
for (const flow of ordered) {
|
|
221
|
+
try {
|
|
222
|
+
logger.debug(
|
|
223
|
+
`BaseModel '${model.uid}' dispatching event '${eventName}' to flow '${flow.key}' (sequential).`
|
|
224
|
+
);
|
|
225
|
+
const result = await this.runFlow(model, flow.key, inputArgs, runId);
|
|
226
|
+
if (result instanceof import_exceptions.FlowExitAllException) {
|
|
227
|
+
logger.debug(`[FlowEngine.dispatchEvent] ${result.message}`);
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
results2.push(result);
|
|
231
|
+
} catch (error) {
|
|
232
|
+
logger.error(
|
|
233
|
+
{ err: error },
|
|
234
|
+
`BaseModel.dispatchEvent: Error executing event-triggered flow '${flow.key}' for event '${eventName}' (sequential):`
|
|
235
|
+
);
|
|
236
|
+
throw error;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return results2;
|
|
240
|
+
}
|
|
241
|
+
const results = await Promise.all(
|
|
242
|
+
flows.map(async (flow) => {
|
|
243
|
+
logger.debug(`BaseModel '${model.uid}' dispatching event '${eventName}' to flow '${flow.key}'.`);
|
|
244
|
+
try {
|
|
245
|
+
return await this.runFlow(model, flow.key, inputArgs, runId);
|
|
246
|
+
} catch (error) {
|
|
247
|
+
logger.error(
|
|
248
|
+
{ err: error },
|
|
249
|
+
`BaseModel.dispatchEvent: Error executing event-triggered flow '${flow.key}' for event '${eventName}':`
|
|
250
|
+
);
|
|
251
|
+
if (throwOnError) throw error;
|
|
252
|
+
return void 0;
|
|
253
|
+
}
|
|
254
|
+
})
|
|
255
|
+
);
|
|
256
|
+
return results.filter((x) => x !== void 0);
|
|
257
|
+
}, "execute");
|
|
258
|
+
const argsKey = useCache ? JSON.stringify(inputArgs ?? {}) : "";
|
|
259
|
+
const cacheKey = useCache ? import_flowEngine.FlowEngine.generateApplyFlowCacheKey(
|
|
260
|
+
`event:${model.getFlowCacheScope(eventName)}:${argsKey}`,
|
|
261
|
+
eventName,
|
|
262
|
+
model.uid
|
|
263
|
+
) : null;
|
|
264
|
+
try {
|
|
265
|
+
const result = await this.withApplyFlowCache(cacheKey, execute);
|
|
266
|
+
try {
|
|
267
|
+
await ((_c = model.onDispatchEventEnd) == null ? void 0 : _c.call(model, eventName, options, inputArgs, result));
|
|
268
|
+
} catch (hookErr) {
|
|
269
|
+
logger.error({ err: hookErr }, `BaseModel.dispatchEvent: End hook error for event '${eventName}'`);
|
|
270
|
+
}
|
|
271
|
+
return result;
|
|
272
|
+
} catch (error) {
|
|
273
|
+
try {
|
|
274
|
+
await ((_d = model.onDispatchEventError) == null ? void 0 : _d.call(model, eventName, options, inputArgs, error));
|
|
275
|
+
} catch (_2) {
|
|
276
|
+
}
|
|
277
|
+
model.context.logger.error(
|
|
278
|
+
{ err: error },
|
|
279
|
+
`BaseModel.dispatchEvent: Error executing event '${eventName}' for model '${model.uid}':`
|
|
280
|
+
);
|
|
281
|
+
if (throwOnError) throw error;
|
|
282
|
+
}
|
|
255
283
|
}
|
|
256
284
|
};
|
|
257
285
|
__name(_FlowExecutor, "FlowExecutor");
|