@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.
- package/lib/BlockScopedFlowEngine.d.ts +23 -0
- package/lib/BlockScopedFlowEngine.js +91 -0
- package/lib/FlowContextProvider.d.ts +2 -2
- package/lib/FlowContextProvider.js +3 -3
- package/lib/FlowDefinition.d.ts +6 -4
- package/lib/JSRunner.d.ts +6 -0
- package/lib/JSRunner.js +27 -1
- package/lib/ViewScopedFlowEngine.d.ts +1 -1
- package/lib/ViewScopedFlowEngine.js +18 -1
- package/lib/acl/Acl.d.ts +12 -12
- package/lib/acl/Acl.js +88 -30
- package/lib/components/DynamicFlowsEditor.js +2 -4
- package/lib/components/FieldModelRenderer.js +17 -9
- package/lib/components/FieldSkeleton.d.ts +10 -0
- package/lib/components/FieldSkeleton.js +64 -0
- package/lib/components/FlowContextSelector.js +19 -3
- package/lib/components/FlowModelRenderer.d.ts +4 -6
- package/lib/components/FlowModelRenderer.js +35 -53
- package/lib/components/FormItem.js +5 -1
- package/lib/components/MobilePopup.d.ts +20 -0
- package/lib/components/MobilePopup.js +102 -0
- package/lib/components/MobilePopup.style.d.ts +17 -0
- package/lib/components/MobilePopup.style.js +186 -0
- package/lib/components/common/withFlowDesignMode.d.ts +1 -1
- package/lib/components/common/withFlowDesignMode.js +5 -5
- package/lib/components/dnd/gridDragPlanner.d.ts +1 -0
- package/lib/components/dnd/gridDragPlanner.js +53 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.js +3 -1
- package/lib/components/settings/independents/dropdown/FlowsDropdownButton.js +71 -53
- package/lib/components/settings/wrappers/component/SelectWithTitle.d.ts +19 -0
- package/lib/components/settings/wrappers/component/SelectWithTitle.js +136 -0
- package/lib/components/settings/wrappers/component/SwitchWithTitle.d.ts +10 -0
- package/lib/components/settings/wrappers/component/SwitchWithTitle.js +111 -0
- package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +233 -97
- package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +71 -54
- package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.d.ts +2 -2
- package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.js +63 -23
- package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +13 -2
- package/lib/components/settings/wrappers/embedded/FlowSettings.js +42 -28
- package/lib/components/settings/wrappers/embedded/FlowsSettings.js +3 -3
- package/lib/components/settings/wrappers/embedded/FlowsSettingsContent.js +52 -32
- package/lib/components/subModel/AddSubModelButton.d.ts +7 -0
- package/lib/components/subModel/AddSubModelButton.js +78 -8
- package/lib/components/subModel/LazyDropdown.js +14 -15
- package/lib/components/subModel/utils.d.ts +1 -1
- package/lib/components/subModel/utils.js +21 -11
- package/lib/components/variables/VariableInput.js +26 -6
- package/lib/components/variables/VariableTag.js +43 -2
- package/lib/components/variables/types.d.ts +2 -0
- package/lib/components/variables/utils.js +4 -2
- package/lib/data-source/index.d.ts +23 -4
- package/lib/data-source/index.js +135 -14
- package/lib/data-source/jioToJoiSchema.js +1 -0
- package/lib/emitter.d.ts +6 -0
- package/lib/emitter.js +12 -0
- package/lib/executor/FlowExecutor.d.ts +6 -6
- package/lib/executor/FlowExecutor.js +302 -99
- package/lib/flow-registry/GlobalFlowRegistry.d.ts +1 -0
- package/lib/flow-registry/GlobalFlowRegistry.js +3 -0
- package/lib/flow-registry/InstanceFlowRegistry.d.ts +1 -0
- package/lib/flow-registry/InstanceFlowRegistry.js +3 -0
- package/lib/flowContext.d.ts +105 -6
- package/lib/flowContext.js +447 -139
- package/lib/flowEngine.d.ts +71 -1
- package/lib/flowEngine.js +319 -16
- package/lib/flowSettings.d.ts +4 -3
- package/lib/flowSettings.js +45 -21
- package/lib/hooks/useApplyAutoFlows.d.ts +1 -0
- package/lib/hooks/useApplyAutoFlows.js +3 -2
- package/lib/index.d.ts +14 -3
- package/lib/index.js +54 -7
- package/lib/locale/de-DE.json +62 -0
- package/lib/locale/en-US.json +57 -45
- package/lib/locale/es-ES.json +62 -0
- package/lib/locale/fr-FR.json +62 -0
- package/lib/locale/hu-HU.json +62 -0
- package/lib/locale/id-ID.json +62 -0
- package/lib/locale/index.d.ts +114 -90
- package/lib/locale/it-IT.json +62 -0
- package/lib/locale/ja-JP.json +62 -0
- package/lib/locale/ko-KR.json +62 -0
- package/lib/locale/nl-NL.json +62 -0
- package/lib/locale/pt-BR.json +62 -0
- package/lib/locale/ru-RU.json +62 -0
- package/lib/locale/tr-TR.json +62 -0
- package/lib/locale/uk-UA.json +62 -0
- package/lib/locale/vi-VN.json +62 -0
- package/lib/locale/zh-CN.json +58 -46
- package/lib/locale/zh-TW.json +62 -0
- package/lib/models/CollectionFieldModel.d.ts +7 -2
- package/lib/models/CollectionFieldModel.js +63 -16
- package/lib/models/flowModel.d.ts +76 -32
- package/lib/models/flowModel.js +300 -112
- package/lib/models/forkFlowModel.d.ts +8 -4
- package/lib/models/forkFlowModel.js +38 -8
- package/lib/provider.d.ts +3 -1
- package/lib/provider.js +14 -11
- package/lib/reactive/index.d.ts +10 -0
- package/lib/{runjs-context/snippets/global/api-request-post.snippet.js → reactive/index.js} +14 -15
- package/lib/reactive/observer.d.ts +19 -0
- package/lib/reactive/observer.js +109 -0
- package/lib/resources/baseRecordResource.d.ts +6 -0
- package/lib/resources/baseRecordResource.js +38 -3
- package/lib/resources/multiRecordResource.d.ts +5 -2
- package/lib/resources/multiRecordResource.js +26 -10
- package/lib/resources/singleRecordResource.js +8 -3
- package/lib/resources/sqlResource.d.ts +5 -3
- package/lib/resources/sqlResource.js +30 -28
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +37 -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/JSEditableFieldRunJSContext.d.ts +16 -0
- package/lib/runjs-context/contexts/JSEditableFieldRunJSContext.js +125 -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 +34 -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 +879 -0
- package/lib/runjs-context/contributions.d.ts +33 -0
- package/lib/runjs-context/contributions.js +88 -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 +88 -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 +24 -3
- package/lib/runjs-context/snippets/index.js +183 -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-antd-icons.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.js +65 -0
- 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 +17 -9
- 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 +71 -0
- package/lib/runjs-context/snippets/scene/block/render-react-jsx.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.js → block/render-react-jsx.snippet.js} +26 -13
- 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 +18 -17
- 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 +95 -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 +84 -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/runjsLibs.d.ts +28 -0
- package/lib/runjsLibs.js +532 -0
- package/lib/scheduler/ModelOperationScheduler.d.ts +53 -0
- package/lib/scheduler/ModelOperationScheduler.js +262 -0
- package/lib/types.d.ts +66 -7
- package/lib/types.js +4 -3
- package/lib/utils/associationObjectVariable.d.ts +32 -0
- package/lib/utils/associationObjectVariable.js +157 -0
- package/lib/utils/createCollectionContextMeta.d.ts +1 -1
- package/lib/utils/createCollectionContextMeta.js +9 -4
- package/lib/utils/createEphemeralContext.d.ts +13 -0
- package/lib/utils/createEphemeralContext.js +140 -0
- package/lib/utils/flows.d.ts +10 -0
- package/lib/{runjs-context/snippets/global/console-log-ctx.snippet.js → utils/flows.js} +21 -14
- package/lib/utils/index.d.ts +9 -3
- package/lib/utils/index.js +30 -2
- package/lib/utils/jsxTransform.d.ts +15 -0
- package/lib/utils/jsxTransform.js +68 -0
- package/lib/utils/params-resolvers.js +19 -12
- package/lib/utils/parsePathnameToViewParams.d.ts +1 -1
- package/lib/utils/parsePathnameToViewParams.js +41 -5
- package/lib/utils/pruneFilter.d.ts +21 -0
- package/lib/{runjs-context/snippets/global/try-catch-async.snippet.js → utils/pruneFilter.js} +24 -16
- package/lib/utils/resolveModuleUrl.d.ts +58 -0
- package/lib/utils/resolveModuleUrl.js +65 -0
- package/lib/utils/runjsModuleLoader.d.ts +58 -0
- package/lib/utils/runjsModuleLoader.js +422 -0
- package/lib/utils/runjsTemplateCompat.d.ts +35 -0
- package/lib/utils/runjsTemplateCompat.js +743 -0
- package/lib/utils/safeGlobals.d.ts +6 -8
- package/lib/utils/safeGlobals.js +169 -14
- package/lib/utils/schema-utils.d.ts +6 -0
- package/lib/utils/schema-utils.js +71 -6
- package/lib/utils/serverContextParams.d.ts +4 -0
- package/lib/utils/serverContextParams.js +2 -0
- package/lib/utils/translation.d.ts +4 -1
- package/lib/utils/translation.js +6 -2
- package/lib/utils/variablesParams.d.ts +22 -5
- package/lib/utils/variablesParams.js +141 -61
- package/lib/views/DialogComponent.js +1 -5
- package/lib/views/DrawerComponent.js +18 -9
- package/lib/views/PageComponent.js +5 -5
- package/lib/views/ViewNavigation.d.ts +11 -15
- package/lib/views/ViewNavigation.js +37 -19
- package/lib/views/createViewMeta.d.ts +27 -5
- package/lib/views/createViewMeta.js +338 -72
- package/lib/views/index.d.ts +1 -1
- package/lib/views/index.js +4 -0
- package/lib/views/useDialog.d.ts +10 -9
- package/lib/views/useDialog.js +46 -34
- package/lib/views/useDrawer.d.ts +10 -9
- package/lib/views/useDrawer.js +74 -48
- package/lib/views/usePage.d.ts +14 -9
- package/lib/views/usePage.js +82 -33
- package/lib/views/usePopover.js +4 -1
- package/lib/views/viewEvents.d.ts +17 -0
- package/lib/views/viewEvents.js +90 -0
- package/package.json +6 -3
- package/src/BlockScopedFlowEngine.ts +85 -0
- package/src/FlowContextProvider.tsx +4 -2
- package/src/JSRunner.ts +39 -1
- package/src/ViewScopedFlowEngine.ts +21 -1
- package/src/__tests__/JSRunner.test.ts +125 -52
- package/src/__tests__/blockScopedFlowEngine.test.ts +154 -0
- package/src/__tests__/createViewMeta.popup.test.ts +203 -0
- package/src/__tests__/flow-engine.test.ts +3 -0
- package/src/__tests__/flowContext.test.ts +160 -0
- package/src/__tests__/flowContextCreateJSRunner.test.ts +163 -0
- package/src/__tests__/flowEngine.dataSourceDirty.test.ts +63 -0
- package/src/__tests__/flowEngine.destroyModel.test.ts +74 -0
- package/src/__tests__/flowEngine.moveModel.test.ts +43 -0
- package/src/__tests__/flowEngine.removeModel.test.ts +72 -0
- package/src/__tests__/flowEngine.saveModel.test.ts +4 -0
- package/src/__tests__/flowModel.openView.navigation.test.ts +31 -2
- package/src/__tests__/flowRunJSContextDefine.test.ts +508 -0
- package/src/__tests__/flowSettings.open.test.tsx +71 -15
- package/src/__tests__/flowSettings.test.ts +2 -0
- package/src/__tests__/globalFlowRegistry.test.ts +1 -1
- package/src/__tests__/modelOperationScheduler.test.ts +346 -0
- package/src/__tests__/objectVariable.test.ts +464 -0
- package/src/__tests__/provider.test.tsx +0 -5
- package/src/__tests__/runjsContext.test.ts +219 -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__/runjsExternalLibs.test.ts +242 -0
- package/src/__tests__/runjsLibsLazyLoading.test.ts +44 -0
- package/src/__tests__/runjsLocales.test.ts +39 -0
- package/src/__tests__/runjsPreprocessDefault.test.ts +49 -0
- package/src/__tests__/runjsRuntimeFeatures.test.ts +461 -0
- package/src/__tests__/runjsSnippets.test.ts +140 -0
- package/src/__tests__/viewScopedFlowEngine.test.ts +101 -3
- package/src/acl/Acl.tsx +85 -31
- package/src/acl/__tests__/Acl.test.tsx +43 -1
- package/src/components/DynamicFlowsEditor.tsx +0 -10
- package/src/components/FieldModelRenderer.tsx +22 -9
- package/src/components/FieldSkeleton.tsx +27 -0
- package/src/components/FlowContextSelector.tsx +20 -2
- package/src/components/FlowModelRenderer.tsx +52 -84
- package/src/components/FormItem.tsx +8 -1
- package/src/components/MobilePopup.style.ts +220 -0
- package/src/components/MobilePopup.tsx +86 -0
- package/src/components/__tests__/FlowModelRenderer.test.tsx +89 -0
- package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +6 -6
- package/src/components/__tests__/gridDragPlanner.test.ts +141 -1
- package/src/components/common/withFlowDesignMode.tsx +5 -5
- package/src/components/dnd/gridDragPlanner.ts +60 -0
- package/src/components/index.ts +1 -0
- package/src/components/settings/independents/dropdown/FlowsDropdownButton.tsx +34 -17
- package/src/components/settings/wrappers/component/SelectWithTitle.tsx +110 -0
- package/src/components/settings/wrappers/component/SwitchWithTitle.tsx +83 -0
- package/src/components/settings/wrappers/component/__tests__/InlineControls.test.tsx +74 -0
- package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +272 -125
- package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +34 -18
- package/src/components/settings/wrappers/contextual/FlowsFloatContextMenu.tsx +56 -18
- package/src/components/settings/wrappers/contextual/StepSettings.tsx +1 -2
- package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +13 -1
- package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +624 -0
- package/src/components/settings/wrappers/embedded/FlowSettings.tsx +47 -35
- package/src/components/settings/wrappers/embedded/FlowsSettings.tsx +1 -1
- package/src/components/settings/wrappers/embedded/FlowsSettingsContent.tsx +64 -42
- package/src/components/subModel/AddSubModelButton.tsx +104 -9
- package/src/components/subModel/LazyDropdown.tsx +14 -14
- package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +168 -7
- package/src/components/subModel/__tests__/utils.test.ts +12 -12
- package/src/components/subModel/utils.ts +25 -6
- package/src/components/variables/VariableInput.tsx +32 -6
- package/src/components/variables/VariableTag.tsx +54 -2
- package/src/components/variables/types.ts +2 -0
- package/src/components/variables/utils.ts +7 -3
- package/src/data-source/index.ts +143 -12
- package/src/data-source/jioToJoiSchema.ts +1 -0
- package/src/emitter.ts +14 -0
- package/src/executor/FlowExecutor.ts +383 -119
- package/src/executor/__tests__/ctx-defs-injection.test.ts +197 -0
- package/src/executor/__tests__/flowExecutor.test.ts +217 -5
- package/src/flow-registry/GlobalFlowRegistry.ts +1 -0
- package/src/flow-registry/InstanceFlowRegistry.ts +1 -0
- package/src/flow-registry/__tests__/globalFlowRegistry.test.ts +54 -0
- package/src/flowContext.ts +646 -158
- package/src/flowEngine.ts +385 -14
- package/src/flowSettings.ts +59 -30
- package/src/hooks/useApplyAutoFlows.ts +5 -3
- package/src/index.ts +26 -3
- package/src/locale/de-DE.json +62 -0
- package/src/locale/en-US.json +57 -45
- package/src/locale/es-ES.json +62 -0
- package/src/locale/fr-FR.json +62 -0
- package/src/locale/hu-HU.json +62 -0
- package/src/locale/id-ID.json +62 -0
- package/src/locale/it-IT.json +62 -0
- package/src/locale/ja-JP.json +62 -0
- package/src/locale/ko-KR.json +62 -0
- package/src/locale/nl-NL.json +62 -0
- package/src/locale/pt-BR.json +62 -0
- package/src/locale/ru-RU.json +62 -0
- package/src/locale/tr-TR.json +62 -0
- package/src/locale/uk-UA.json +62 -0
- package/src/locale/vi-VN.json +62 -0
- package/src/locale/zh-CN.json +58 -46
- package/src/locale/zh-TW.json +62 -0
- package/src/models/CollectionFieldModel.tsx +82 -18
- package/src/models/__tests__/dispatchEvent.behavior.test.ts +169 -0
- package/src/models/__tests__/dispatchEvent.when.test.ts +356 -0
- package/src/models/__tests__/flowEngine.resolveUse.test.ts +170 -0
- package/src/models/__tests__/flowModel.clone.test.ts +416 -0
- package/src/models/__tests__/flowModel.getFlows.sort.test.ts +33 -9
- package/src/models/__tests__/flowModel.scheduleModelOperation.test.tsx +129 -0
- package/src/models/__tests__/flowModel.test.ts +296 -119
- package/src/models/__tests__/forkFlowModel.test.ts +40 -7
- package/src/models/flowModel.tsx +426 -148
- package/src/models/forkFlowModel.ts +48 -8
- package/src/provider.tsx +18 -14
- package/src/reactive/__tests__/observer.test.tsx +211 -0
- package/src/reactive/index.ts +11 -0
- package/src/reactive/observer.tsx +101 -0
- package/src/resources/__tests__/multiRecordResource.test.ts +44 -0
- package/src/resources/__tests__/sqlResource.test.ts +60 -0
- package/src/resources/baseRecordResource.ts +46 -3
- package/src/resources/multiRecordResource.ts +28 -12
- package/src/resources/singleRecordResource.ts +9 -3
- package/src/resources/sqlResource.ts +33 -32
- package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +38 -21
- package/src/runjs-context/contexts/JSBlockRunJSContext.ts +50 -34
- package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +15 -16
- package/src/runjs-context/contexts/JSColumnRunJSContext.ts +58 -0
- package/src/runjs-context/contexts/JSEditableFieldRunJSContext.ts +106 -0
- package/src/runjs-context/contexts/JSFieldRunJSContext.ts +30 -25
- package/src/runjs-context/contexts/JSItemRunJSContext.ts +35 -21
- package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +17 -18
- package/src/runjs-context/contexts/base.ts +871 -0
- package/src/runjs-context/contributions.ts +88 -0
- package/src/runjs-context/helpers.ts +32 -30
- package/src/runjs-context/registry.ts +16 -47
- package/src/runjs-context/setup.ts +57 -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 +212 -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/block/render-antd-icons.snippet.ts +46 -0
- package/src/runjs-context/snippets/scene/block/render-button-handler.snippet.ts +35 -0
- 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 +52 -0
- package/src/runjs-context/snippets/scene/block/render-react-jsx.snippet.ts +39 -0
- package/src/runjs-context/snippets/scene/block/render-react.snippet.ts +38 -0
- package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +76 -0
- package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +65 -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/runjsLibs.ts +622 -0
- package/src/scheduler/ModelOperationScheduler.ts +306 -0
- package/src/types.ts +86 -5
- package/src/utils/__tests__/createCollectionContextMeta.test.ts +51 -0
- package/src/utils/__tests__/flows.test.ts +65 -0
- package/src/utils/__tests__/jsxTransform.test.ts +38 -0
- package/src/utils/__tests__/params-resolvers.test.ts +40 -0
- package/src/utils/__tests__/parsePathnameToViewParams.test.ts +25 -0
- package/src/utils/__tests__/pruneFilter.test.ts +38 -0
- package/src/utils/__tests__/runjsRequireAsyncAutoWhitelist.test.ts +38 -0
- package/src/utils/__tests__/runjsTemplateCompat.test.ts +159 -0
- package/src/utils/__tests__/safeGlobals.test.ts +79 -2
- package/src/utils/__tests__/utils.test.ts +114 -15
- package/src/utils/__tests__/variablesParams.test.ts +120 -0
- package/src/utils/associationObjectVariable.ts +180 -0
- package/src/utils/createCollectionContextMeta.ts +9 -3
- package/src/utils/createEphemeralContext.ts +142 -0
- package/src/utils/flows.ts +23 -0
- package/src/utils/index.ts +17 -3
- package/src/utils/jsxTransform.ts +39 -0
- package/src/utils/params-resolvers.ts +25 -11
- package/src/utils/parsePathnameToViewParams.ts +50 -6
- package/src/utils/pruneFilter.ts +41 -0
- package/src/utils/resolveModuleUrl.ts +91 -0
- package/src/utils/runjsModuleLoader.ts +553 -0
- package/src/utils/runjsTemplateCompat.ts +828 -0
- package/src/utils/safeGlobals.ts +181 -15
- package/src/utils/schema-utils.ts +81 -3
- package/src/utils/serverContextParams.ts +6 -0
- package/src/utils/translation.ts +7 -2
- package/src/utils/variablesParams.ts +164 -72
- package/src/views/DialogComponent.tsx +1 -4
- package/src/views/DrawerComponent.tsx +19 -7
- package/src/views/PageComponent.tsx +3 -5
- package/src/views/ViewNavigation.ts +49 -43
- package/src/views/__tests__/FlowView.usePage.test.tsx +186 -0
- package/src/views/__tests__/ViewNavigation.test.ts +54 -34
- package/src/views/__tests__/useDialog.closeDestroy.test.tsx +159 -0
- package/src/views/__tests__/viewEvents.resolveOpenerEngine.test.ts +28 -0
- package/src/views/createViewMeta.ts +402 -73
- package/src/views/index.tsx +1 -1
- package/src/views/useDialog.tsx +52 -31
- package/src/views/useDrawer.tsx +99 -55
- package/src/views/usePage.tsx +101 -33
- package/src/views/usePopover.tsx +4 -1
- package/src/views/viewEvents.ts +55 -0
- 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/console-log-ctx.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/requireAsync.snippet.d.ts +0 -16
- 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/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-mount.snippet.js +0 -46
- 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-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/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-button-handler.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/jsblock/render-card.snippet.ts +0 -30
- package/src/runjs-context/snippets/scene/jsblock/render-react.snippet.ts +0 -34
- 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
|
@@ -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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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>): {};
|
package/lib/utils/safeGlobals.js
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
147
|
-
|
|
148
|
-
{
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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(
|
|
318
|
+
get(_t, prop) {
|
|
168
319
|
if (prop in allowed) return allowed[prop];
|
|
169
|
-
throw new Error(`Access to
|
|
320
|
+
throw new Error(`Access to navigator property "${String(prop)}" is not allowed.`);
|
|
170
321
|
}
|
|
171
322
|
}
|
|
172
323
|
);
|
|
173
324
|
}
|
|
174
|
-
__name(
|
|
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
|
-
|
|
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
|
|
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 = (
|
|
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
|
};
|
|
@@ -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 };
|
package/lib/utils/translation.js
CHANGED
|
@@ -29,7 +29,7 @@ var translation_exports = {};
|
|
|
29
29
|
__export(translation_exports, {
|
|
30
30
|
escapeT: () => escapeT,
|
|
31
31
|
getT: () => getT,
|
|
32
|
-
tExpr: () =>
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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:
|
|
62
|
+
export declare const extractUsedVariablePaths: typeof _extractUsedVariablePaths;
|
|
46
63
|
/**
|
|
47
64
|
* 根据模板中用到的 ctx 变量,收集并构建服务端解析所需的 contextParams。
|
|
48
65
|
* - 通过 FlowContext 的 PropertyMeta.buildVariablesParams 收集 RecordRef
|