@nocobase/flow-engine 2.0.0-alpha.2
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/LICENSE +661 -0
- package/README.md +30 -0
- package/lib/ContextPathProxy.d.ts +17 -0
- package/lib/ContextPathProxy.js +65 -0
- package/lib/ElementProxy.d.ts +17 -0
- package/lib/ElementProxy.js +93 -0
- package/lib/FlowContextProvider.d.ts +24 -0
- package/lib/FlowContextProvider.js +82 -0
- package/lib/FlowDefinition.d.ts +423 -0
- package/lib/FlowDefinition.js +257 -0
- package/lib/JSRunner.d.ts +32 -0
- package/lib/JSRunner.js +95 -0
- package/lib/ReactView.d.ts +20 -0
- package/lib/ReactView.js +120 -0
- package/lib/ViewScopedFlowEngine.d.ts +23 -0
- package/lib/ViewScopedFlowEngine.js +81 -0
- package/lib/acl/Acl.d.ts +31 -0
- package/lib/acl/Acl.js +115 -0
- package/lib/action-registry/BaseActionRegistry.d.ts +23 -0
- package/lib/action-registry/BaseActionRegistry.js +57 -0
- package/lib/action-registry/EngineActionRegistry.d.ts +20 -0
- package/lib/action-registry/EngineActionRegistry.js +47 -0
- package/lib/action-registry/ModelActionRegistry.d.ts +34 -0
- package/lib/action-registry/ModelActionRegistry.js +79 -0
- package/lib/components/DynamicFlowsEditor.d.ts +17 -0
- package/lib/components/DynamicFlowsEditor.js +49 -0
- package/lib/components/FieldModelRenderer.d.ts +10 -0
- package/lib/components/FieldModelRenderer.js +94 -0
- package/lib/components/FlowContextSelector.d.ts +11 -0
- package/lib/components/FlowContextSelector.js +221 -0
- package/lib/components/FlowErrorFallback.d.ts +25 -0
- package/lib/components/FlowErrorFallback.js +264 -0
- package/lib/components/FlowModelRenderer.d.ts +64 -0
- package/lib/components/FlowModelRenderer.js +254 -0
- package/lib/components/FormItem.d.ts +18 -0
- package/lib/components/FormItem.js +147 -0
- package/lib/components/common/FlowSettingsButton.d.ts +11 -0
- package/lib/components/common/FlowSettingsButton.js +66 -0
- package/lib/components/common/index.d.ts +9 -0
- package/lib/components/common/index.js +30 -0
- package/lib/components/common/withFlowDesignMode.d.ts +26 -0
- package/lib/components/common/withFlowDesignMode.js +61 -0
- package/lib/components/dnd/getMousePositionOnElement.d.ts +50 -0
- package/lib/components/dnd/getMousePositionOnElement.js +95 -0
- package/lib/components/dnd/index.d.ts +24 -0
- package/lib/components/dnd/index.js +164 -0
- package/lib/components/dnd/moveBlock.d.ts +33 -0
- package/lib/components/dnd/moveBlock.js +302 -0
- package/lib/components/index.d.ts +18 -0
- package/lib/components/index.js +48 -0
- package/lib/components/settings/independents/dropdown/FlowsDropdownButton.d.ts +46 -0
- package/lib/components/settings/independents/dropdown/FlowsDropdownButton.js +225 -0
- package/lib/components/settings/independents/dropdown/index.d.ts +9 -0
- package/lib/components/settings/independents/dropdown/index.js +30 -0
- package/lib/components/settings/independents/index.d.ts +1 -0
- package/lib/components/settings/independents/index.js +30 -0
- package/lib/components/settings/index.d.ts +10 -0
- package/lib/components/settings/index.js +32 -0
- package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.d.ts +24 -0
- package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +501 -0
- package/lib/components/settings/wrappers/contextual/FlowsContextMenu.d.ts +45 -0
- package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +231 -0
- package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.d.ts +111 -0
- package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.js +484 -0
- package/lib/components/settings/wrappers/contextual/StepRequiredSettingsDialog.d.ts +26 -0
- package/lib/components/settings/wrappers/contextual/StepRequiredSettingsDialog.js +342 -0
- package/lib/components/settings/wrappers/contextual/StepSettings.d.ts +23 -0
- package/lib/components/settings/wrappers/contextual/StepSettings.js +110 -0
- package/lib/components/settings/wrappers/contextual/StepSettingsDialog.d.ts +20 -0
- package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +206 -0
- package/lib/components/settings/wrappers/contextual/StepSettingsDrawer.d.ts +20 -0
- package/lib/components/settings/wrappers/contextual/StepSettingsDrawer.js +47 -0
- package/lib/components/settings/wrappers/contextual/index.d.ts +14 -0
- package/lib/components/settings/wrappers/contextual/index.js +40 -0
- package/lib/components/settings/wrappers/embedded/FlowSettings.d.ts +33 -0
- package/lib/components/settings/wrappers/embedded/FlowSettings.js +207 -0
- package/lib/components/settings/wrappers/embedded/FlowsSettings.d.ts +41 -0
- package/lib/components/settings/wrappers/embedded/FlowsSettings.js +84 -0
- package/lib/components/settings/wrappers/embedded/FlowsSettingsContent.d.ts +16 -0
- package/lib/components/settings/wrappers/embedded/FlowsSettingsContent.js +88 -0
- package/lib/components/settings/wrappers/embedded/index.d.ts +10 -0
- package/lib/components/settings/wrappers/embedded/index.js +32 -0
- package/lib/components/settings/wrappers/index.d.ts +2 -0
- package/lib/components/settings/wrappers/index.js +32 -0
- package/lib/components/subModel/AddSubModelButton.d.ts +62 -0
- package/lib/components/subModel/AddSubModelButton.js +415 -0
- package/lib/components/subModel/LazyDropdown.d.ts +55 -0
- package/lib/components/subModel/LazyDropdown.js +524 -0
- package/lib/components/subModel/index.d.ts +10 -0
- package/lib/components/subModel/index.js +32 -0
- package/lib/components/subModel/utils.d.ts +34 -0
- package/lib/components/subModel/utils.js +287 -0
- package/lib/components/variables/InlineVariableTag.d.ts +21 -0
- package/lib/components/variables/InlineVariableTag.js +123 -0
- package/lib/components/variables/SlateVariableEditor.d.ts +46 -0
- package/lib/components/variables/SlateVariableEditor.js +302 -0
- package/lib/components/variables/VariableInput.d.ts +11 -0
- package/lib/components/variables/VariableInput.js +322 -0
- package/lib/components/variables/VariableTag.d.ts +11 -0
- package/lib/components/variables/VariableTag.js +148 -0
- package/lib/components/variables/VariableTrigger.d.ts +20 -0
- package/lib/components/variables/VariableTrigger.js +136 -0
- package/lib/components/variables/index.d.ts +15 -0
- package/lib/components/variables/index.js +53 -0
- package/lib/components/variables/types.d.ts +93 -0
- package/lib/components/variables/types.js +24 -0
- package/lib/components/variables/useResolvedMetaTree.d.ts +19 -0
- package/lib/components/variables/useResolvedMetaTree.js +91 -0
- package/lib/components/variables/utils.d.ts +22 -0
- package/lib/components/variables/utils.js +177 -0
- package/lib/data-source/index.d.ts +180 -0
- package/lib/data-source/index.js +733 -0
- package/lib/data-source/jioToJoiSchema.d.ts +19 -0
- package/lib/data-source/jioToJoiSchema.js +114 -0
- package/lib/decorators/index.d.ts +9 -0
- package/lib/decorators/index.js +36 -0
- package/lib/decorators/largeField.d.ts +9 -0
- package/lib/decorators/largeField.js +42 -0
- package/lib/emitter.d.ts +16 -0
- package/lib/emitter.js +58 -0
- package/lib/event-registry/BaseEventRegistry.d.ts +22 -0
- package/lib/event-registry/BaseEventRegistry.js +57 -0
- package/lib/event-registry/EngineEventRegistry.d.ts +19 -0
- package/lib/event-registry/EngineEventRegistry.js +47 -0
- package/lib/event-registry/ModelEventRegistry.d.ts +33 -0
- package/lib/event-registry/ModelEventRegistry.js +79 -0
- package/lib/executor/FlowExecutor.d.ts +26 -0
- package/lib/executor/FlowExecutor.js +262 -0
- package/lib/flow-registry/BaseFlowRegistry.d.ts +46 -0
- package/lib/flow-registry/BaseFlowRegistry.js +86 -0
- package/lib/flow-registry/GlobalFlowRegistry.d.ts +22 -0
- package/lib/flow-registry/GlobalFlowRegistry.js +95 -0
- package/lib/flow-registry/InstanceFlowRegistry.d.ts +21 -0
- package/lib/flow-registry/InstanceFlowRegistry.js +59 -0
- package/lib/flow-registry/index.d.ts +11 -0
- package/lib/flow-registry/index.js +34 -0
- package/lib/flowContext.d.ts +215 -0
- package/lib/flowContext.js +1266 -0
- package/lib/flowEngine.d.ts +340 -0
- package/lib/flowEngine.js +781 -0
- package/lib/flowI18n.d.ts +46 -0
- package/lib/flowI18n.js +117 -0
- package/lib/flowSettings.d.ts +266 -0
- package/lib/flowSettings.js +850 -0
- package/lib/hooks/index.d.ts +14 -0
- package/lib/hooks/index.js +40 -0
- package/lib/hooks/useApplyAutoFlows.d.ts +21 -0
- package/lib/hooks/useApplyAutoFlows.js +62 -0
- package/lib/hooks/useFlowModel.d.ts +29 -0
- package/lib/hooks/useFlowModel.js +72 -0
- package/lib/hooks/useFlowModelById.d.ts +11 -0
- package/lib/hooks/useFlowModelById.js +61 -0
- package/lib/hooks/useFlowSettingsContext.d.ts +20 -0
- package/lib/hooks/useFlowSettingsContext.js +61 -0
- package/lib/hooks/useFlowStep.d.ts +17 -0
- package/lib/hooks/useFlowStep.js +56 -0
- package/lib/hooks/useNiceDropdownMaxHeight.d.ts +13 -0
- package/lib/hooks/useNiceDropdownMaxHeight.js +52 -0
- package/lib/index.d.ts +27 -0
- package/lib/index.js +73 -0
- package/lib/locale/en-US.json +61 -0
- package/lib/locale/index.d.ts +141 -0
- package/lib/locale/index.js +70 -0
- package/lib/locale/zh-CN.json +61 -0
- package/lib/models/CollectionFieldModel.d.ts +50 -0
- package/lib/models/CollectionFieldModel.js +242 -0
- package/lib/models/DisplayItemModel.d.ts +12 -0
- package/lib/models/DisplayItemModel.js +41 -0
- package/lib/models/EditableItemModel.d.ts +12 -0
- package/lib/models/EditableItemModel.js +41 -0
- package/lib/models/FilterableItemModel.d.ts +12 -0
- package/lib/models/FilterableItemModel.js +41 -0
- package/lib/models/flowModel.d.ts +344 -0
- package/lib/models/flowModel.js +1133 -0
- package/lib/models/forkFlowModel.d.ts +83 -0
- package/lib/models/forkFlowModel.js +257 -0
- package/lib/models/index.d.ts +14 -0
- package/lib/models/index.js +40 -0
- package/lib/provider.d.ts +22 -0
- package/lib/provider.js +114 -0
- package/lib/resources/apiResource.d.ts +34 -0
- package/lib/resources/apiResource.js +153 -0
- package/lib/resources/baseRecordResource.d.ts +61 -0
- package/lib/resources/baseRecordResource.js +264 -0
- package/lib/resources/filterItem.d.ts +33 -0
- package/lib/resources/filterItem.js +93 -0
- package/lib/resources/flowResource.d.ts +45 -0
- package/lib/resources/flowResource.js +146 -0
- package/lib/resources/index.d.ts +15 -0
- package/lib/resources/index.js +42 -0
- package/lib/resources/multiRecordResource.d.ts +53 -0
- package/lib/resources/multiRecordResource.js +230 -0
- package/lib/resources/singleRecordResource.d.ts +23 -0
- package/lib/resources/singleRecordResource.js +111 -0
- package/lib/resources/sqlResource.d.ts +73 -0
- package/lib/resources/sqlResource.js +294 -0
- package/lib/runjs-context/contexts/FlowRunJSContext.d.ts +38 -0
- package/lib/runjs-context/contexts/FlowRunJSContext.js +217 -0
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +16 -0
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +66 -0
- package/lib/runjs-context/contexts/JSBlockRunJSContext.d.ts +16 -0
- package/lib/runjs-context/contexts/JSBlockRunJSContext.js +78 -0
- package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.d.ts +12 -0
- package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.js +59 -0
- package/lib/runjs-context/contexts/JSFieldRunJSContext.d.ts +16 -0
- package/lib/runjs-context/contexts/JSFieldRunJSContext.js +70 -0
- package/lib/runjs-context/contexts/JSItemRunJSContext.d.ts +16 -0
- package/lib/runjs-context/contexts/JSItemRunJSContext.js +66 -0
- package/lib/runjs-context/contexts/JSRecordActionRunJSContext.d.ts +12 -0
- package/lib/runjs-context/contexts/JSRecordActionRunJSContext.js +61 -0
- package/lib/runjs-context/contexts/LinkageRunJSContext.d.ts +12 -0
- package/lib/runjs-context/contexts/LinkageRunJSContext.js +62 -0
- package/lib/runjs-context/helpers.d.ts +17 -0
- package/lib/runjs-context/helpers.js +79 -0
- package/lib/runjs-context/index.d.ts +19 -0
- package/lib/runjs-context/index.js +57 -0
- package/lib/runjs-context/registry.d.ts +17 -0
- package/lib/runjs-context/registry.js +93 -0
- package/lib/runjs-context/snippets/global/api-request-get.snippet.d.ts +16 -0
- package/lib/runjs-context/snippets/global/api-request-get.snippet.js +42 -0
- package/lib/runjs-context/snippets/global/api-request-post.snippet.d.ts +16 -0
- package/lib/runjs-context/snippets/global/api-request-post.snippet.js +42 -0
- package/lib/runjs-context/snippets/global/console-log-ctx.snippet.d.ts +16 -0
- package/lib/runjs-context/snippets/global/console-log-ctx.snippet.js +41 -0
- package/lib/runjs-context/snippets/global/copy-record-json.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/global/copy-record-json.snippet.js +42 -0
- package/lib/runjs-context/snippets/global/copy-to-clipboard.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/global/copy-to-clipboard.snippet.js +42 -0
- package/lib/runjs-context/snippets/global/log-json-record.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/global/log-json-record.snippet.js +42 -0
- package/lib/runjs-context/snippets/global/message-error.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/global/message-error.snippet.js +41 -0
- package/lib/runjs-context/snippets/global/message-success.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/global/message-success.snippet.js +41 -0
- package/lib/runjs-context/snippets/global/notification-open.snippet.d.ts +16 -0
- package/lib/runjs-context/snippets/global/notification-open.snippet.js +43 -0
- package/lib/runjs-context/snippets/global/open-view-dialog.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/global/open-view-dialog.snippet.js +47 -0
- package/lib/runjs-context/snippets/global/open-view-drawer.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/global/open-view-drawer.snippet.js +47 -0
- package/lib/runjs-context/snippets/global/requireAsync.snippet.d.ts +16 -0
- package/lib/runjs-context/snippets/global/requireAsync.snippet.js +46 -0
- package/lib/runjs-context/snippets/global/sleep.snippet.d.ts +16 -0
- package/lib/runjs-context/snippets/global/sleep.snippet.js +43 -0
- package/lib/runjs-context/snippets/global/try-catch-async.snippet.d.ts +16 -0
- package/lib/runjs-context/snippets/global/try-catch-async.snippet.js +44 -0
- package/lib/runjs-context/snippets/global/view-navigation-push.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/global/view-navigation-push.snippet.js +44 -0
- package/lib/runjs-context/snippets/global/window-open.snippet.d.ts +16 -0
- package/lib/runjs-context/snippets/global/window-open.snippet.js +41 -0
- package/lib/runjs-context/snippets/index.d.ts +11 -0
- package/lib/runjs-context/snippets/index.js +94 -0
- package/lib/runjs-context/snippets/libs/echarts-init.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/libs/echarts-init.snippet.js +46 -0
- package/lib/runjs-context/snippets/scene/actions/collection-selected-count.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/actions/collection-selected-count.snippet.js +44 -0
- package/lib/runjs-context/snippets/scene/actions/iterate-selected-rows.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/actions/iterate-selected-rows.snippet.js +43 -0
- package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.js +43 -0
- package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.js +40 -0
- package/lib/runjs-context/snippets/scene/jsblock/add-event-listener.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/jsblock/add-event-listener.snippet.js +46 -0
- package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.js +42 -0
- package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.js +46 -0
- package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.js +41 -0
- package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.js +41 -0
- package/lib/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.js +46 -0
- package/lib/runjs-context/snippets/scene/jsblock/render-card.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/jsblock/render-card.snippet.js +45 -0
- package/lib/runjs-context/snippets/scene/jsblock/render-react.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/jsblock/render-react.snippet.js +56 -0
- package/lib/runjs-context/snippets/scene/jsfield/color-by-value.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/jsfield/color-by-value.snippet.js +42 -0
- package/lib/runjs-context/snippets/scene/jsfield/format-number.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/jsfield/format-number.snippet.js +41 -0
- package/lib/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.js +40 -0
- package/lib/runjs-context/snippets/scene/jsitem/render-basic.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/jsitem/render-basic.snippet.js +44 -0
- package/lib/runjs-context/snippets/scene/linkage/set-disabled.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/linkage/set-disabled.snippet.js +60 -0
- package/lib/runjs-context/snippets/scene/linkage/set-field-value.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/linkage/set-field-value.snippet.js +59 -0
- package/lib/runjs-context/snippets/scene/linkage/set-required.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/linkage/set-required.snippet.js +60 -0
- package/lib/runjs-context/snippets/scene/linkage/toggle-visible.snippet.d.ts +15 -0
- package/lib/runjs-context/snippets/scene/linkage/toggle-visible.snippet.js +60 -0
- package/lib/runjs-context/snippets/types.d.ts +16 -0
- package/lib/runjs-context/snippets/types.js +24 -0
- package/lib/types.d.ts +398 -0
- package/lib/types.js +43 -0
- package/lib/utils/autoFlowError.d.ts +16 -0
- package/lib/utils/autoFlowError.js +53 -0
- package/lib/utils/constants.d.ts +29 -0
- package/lib/utils/constants.js +77 -0
- package/lib/utils/context.d.ts +40 -0
- package/lib/utils/context.js +63 -0
- package/lib/utils/createCollectionContextMeta.d.ts +11 -0
- package/lib/utils/createCollectionContextMeta.js +117 -0
- package/lib/utils/exceptions.d.ts +22 -0
- package/lib/utils/exceptions.js +62 -0
- package/lib/utils/flow-definitions.d.ts +11 -0
- package/lib/utils/flow-definitions.js +40 -0
- package/lib/utils/index.d.ts +22 -0
- package/lib/utils/index.js +117 -0
- package/lib/utils/inheritance.d.ts +16 -0
- package/lib/utils/inheritance.js +53 -0
- package/lib/utils/params-resolvers.d.ts +51 -0
- package/lib/utils/params-resolvers.js +309 -0
- package/lib/utils/parsePathnameToViewParams.d.ts +34 -0
- package/lib/utils/parsePathnameToViewParams.js +84 -0
- package/lib/utils/safeGlobals.d.ts +16 -0
- package/lib/utils/safeGlobals.js +179 -0
- package/lib/utils/schema-utils.d.ts +40 -0
- package/lib/utils/schema-utils.js +161 -0
- package/lib/utils/serverContextParams.d.ts +28 -0
- package/lib/utils/serverContextParams.js +106 -0
- package/lib/utils/setupRuntimeContextSteps.d.ts +19 -0
- package/lib/utils/setupRuntimeContextSteps.js +88 -0
- package/lib/utils/translation.d.ts +18 -0
- package/lib/utils/translation.js +58 -0
- package/lib/utils/variablesParams.d.ts +51 -0
- package/lib/utils/variablesParams.js +150 -0
- package/lib/views/DialogComponent.d.ts +22 -0
- package/lib/views/DialogComponent.js +98 -0
- package/lib/views/DrawerComponent.d.ts +11 -0
- package/lib/views/DrawerComponent.js +101 -0
- package/lib/views/FlowView.d.ts +76 -0
- package/lib/views/FlowView.js +81 -0
- package/lib/views/PageComponent.d.ts +10 -0
- package/lib/views/PageComponent.js +167 -0
- package/lib/views/ViewNavigation.d.ts +45 -0
- package/lib/views/ViewNavigation.js +97 -0
- package/lib/views/createViewMeta.d.ts +16 -0
- package/lib/views/createViewMeta.js +171 -0
- package/lib/views/index.d.ts +13 -0
- package/lib/views/index.js +48 -0
- package/lib/views/useDialog.d.ts +32 -0
- package/lib/views/useDialog.js +199 -0
- package/lib/views/useDrawer.d.ts +33 -0
- package/lib/views/useDrawer.js +206 -0
- package/lib/views/usePage.d.ts +32 -0
- package/lib/views/usePage.js +193 -0
- package/lib/views/usePatchElement.d.ts +10 -0
- package/lib/views/usePatchElement.js +54 -0
- package/lib/views/usePopover.d.ts +17 -0
- package/lib/views/usePopover.js +159 -0
- package/package.json +37 -0
- package/src/ContextPathProxy.ts +45 -0
- package/src/ElementProxy.ts +69 -0
- package/src/FlowContextProvider.tsx +40 -0
- package/src/FlowDefinition.ts +275 -0
- package/src/JSRunner.ts +84 -0
- package/src/ReactView.tsx +104 -0
- package/src/ViewScopedFlowEngine.ts +75 -0
- package/src/__tests__/ElementProxy.test.ts +51 -0
- package/src/__tests__/JSRunner.test.ts +92 -0
- package/src/__tests__/ReactView.test.tsx +63 -0
- package/src/__tests__/context-path-proxy.test.ts +35 -0
- package/src/__tests__/flow-engine.test.ts +189 -0
- package/src/__tests__/flowContext.test.ts +2012 -0
- package/src/__tests__/flowEngine.saveModel.test.ts +171 -0
- package/src/__tests__/flowI18n.test.ts +28 -0
- package/src/__tests__/flowModel.getFlows.test.ts +61 -0
- package/src/__tests__/flowModel.openView.navigation.test.ts +78 -0
- package/src/__tests__/flowRuntimeContext.test.ts +187 -0
- package/src/__tests__/flowSettings.open.test.tsx +1920 -0
- package/src/__tests__/flowSettings.test.ts +566 -0
- package/src/__tests__/globalFlowRegistry.test.ts +77 -0
- package/src/__tests__/isFieldInterfaceMatch.test.ts +51 -0
- package/src/__tests__/metaTreeNodeCache.test.ts +234 -0
- package/src/__tests__/path-aggregation.test.ts +85 -0
- package/src/__tests__/provider.test.tsx +28 -0
- package/src/__tests__/renderHiddenInConfig.test.tsx +91 -0
- package/src/__tests__/runjsContext.test.ts +60 -0
- package/src/__tests__/viewScopedFlowEngine.test.ts +212 -0
- package/src/acl/Acl.tsx +109 -0
- package/src/acl/__tests__/Acl.test.tsx +72 -0
- package/src/action-registry/BaseActionRegistry.ts +46 -0
- package/src/action-registry/EngineActionRegistry.ts +32 -0
- package/src/action-registry/ModelActionRegistry.ts +75 -0
- package/src/action-registry/__tests__/engineActionRegistry.test.ts +43 -0
- package/src/action-registry/__tests__/modelActionRegistry.test.ts +107 -0
- package/src/components/DynamicFlowsEditor.tsx +318 -0
- package/src/components/FieldModelRenderer.tsx +62 -0
- package/src/components/FlowContextSelector.tsx +255 -0
- package/src/components/FlowErrorFallback.tsx +316 -0
- package/src/components/FlowModelRenderer.tsx +428 -0
- package/src/components/FormItem.tsx +130 -0
- package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +226 -0
- package/src/components/common/FlowSettingsButton.tsx +30 -0
- package/src/components/common/index.ts +10 -0
- package/src/components/common/withFlowDesignMode.tsx +49 -0
- package/src/components/dnd/getMousePositionOnElement.ts +115 -0
- package/src/components/dnd/index.tsx +128 -0
- package/src/components/dnd/moveBlock.ts +379 -0
- package/src/components/index.ts +20 -0
- package/src/components/settings/independents/dropdown/FlowsDropdownButton.tsx +279 -0
- package/src/components/settings/independents/dropdown/index.ts +10 -0
- package/src/components/settings/independents/index.ts +2 -0
- package/src/components/settings/index.ts +11 -0
- package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +617 -0
- package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +292 -0
- package/src/components/settings/wrappers/contextual/FlowsFloatContextMenu.tsx +655 -0
- package/src/components/settings/wrappers/contextual/StepRequiredSettingsDialog.tsx +446 -0
- package/src/components/settings/wrappers/contextual/StepSettings.tsx +109 -0
- package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +217 -0
- package/src/components/settings/wrappers/contextual/StepSettingsDrawer.tsx +32 -0
- package/src/components/settings/wrappers/contextual/index.ts +15 -0
- package/src/components/settings/wrappers/embedded/FlowSettings.tsx +258 -0
- package/src/components/settings/wrappers/embedded/FlowsSettings.tsx +111 -0
- package/src/components/settings/wrappers/embedded/FlowsSettingsContent.tsx +96 -0
- package/src/components/settings/wrappers/embedded/index.ts +11 -0
- package/src/components/settings/wrappers/index.ts +5 -0
- package/src/components/subModel/AddSubModelButton.tsx +575 -0
- package/src/components/subModel/LazyDropdown.tsx +714 -0
- package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +1185 -0
- package/src/components/subModel/__tests__/buildWrapperFieldChildren.test.ts +192 -0
- package/src/components/subModel/__tests__/utils.test.ts +425 -0
- package/src/components/subModel/index.ts +12 -0
- package/src/components/subModel/utils.ts +278 -0
- package/src/components/variables/InlineVariableTag.tsx +97 -0
- package/src/components/variables/SlateVariableEditor.tsx +384 -0
- package/src/components/variables/VariableInput.tsx +342 -0
- package/src/components/variables/VariableTag.tsx +123 -0
- package/src/components/variables/VariableTrigger.tsx +116 -0
- package/src/components/variables/__tests__/FlowContextSelector.test.tsx +553 -0
- package/src/components/variables/__tests__/VariableInput.test.tsx +550 -0
- package/src/components/variables/__tests__/VariableTag.test.tsx +347 -0
- package/src/components/variables/__tests__/test-utils.tsx +62 -0
- package/src/components/variables/__tests__/utils.test.ts +310 -0
- package/src/components/variables/index.ts +16 -0
- package/src/components/variables/types.ts +100 -0
- package/src/components/variables/useResolvedMetaTree.ts +76 -0
- package/src/components/variables/utils.ts +192 -0
- package/src/data-source/__tests__/collection.test.ts +58 -0
- package/src/data-source/__tests__/index.test.ts +82 -0
- package/src/data-source/__tests__/jioToJoiSchema.test.ts +56 -0
- package/src/data-source/index.ts +812 -0
- package/src/data-source/jioToJoiSchema.ts +103 -0
- package/src/decorators/index.ts +10 -0
- package/src/decorators/largeField.ts +14 -0
- package/src/emitter.ts +33 -0
- package/src/event-registry/BaseEventRegistry.ts +40 -0
- package/src/event-registry/EngineEventRegistry.ts +26 -0
- package/src/event-registry/ModelEventRegistry.ts +69 -0
- package/src/event-registry/__tests__/engineEventRegistry.test.ts +48 -0
- package/src/executor/FlowExecutor.ts +256 -0
- package/src/executor/__tests__/eventStep.test.ts +157 -0
- package/src/executor/__tests__/flowExecutor.test.ts +163 -0
- package/src/flow-registry/BaseFlowRegistry.ts +91 -0
- package/src/flow-registry/GlobalFlowRegistry.ts +82 -0
- package/src/flow-registry/InstanceFlowRegistry.ts +39 -0
- package/src/flow-registry/__tests__/globalFlowRegistry.test.ts +141 -0
- package/src/flow-registry/__tests__/instance-and-global-registry.test.ts +67 -0
- package/src/flow-registry/__tests__/instanceFlowRegistry.test.ts +83 -0
- package/src/flow-registry/index.ts +12 -0
- package/src/flowContext.ts +1639 -0
- package/src/flowEngine.ts +905 -0
- package/src/flowI18n.ts +96 -0
- package/src/flowSettings.ts +1045 -0
- package/src/hooks/index.ts +15 -0
- package/src/hooks/useApplyAutoFlows.ts +51 -0
- package/src/hooks/useFlowModel.tsx +59 -0
- package/src/hooks/useFlowModelById.ts +37 -0
- package/src/hooks/useFlowSettingsContext.tsx +37 -0
- package/src/hooks/useFlowStep.tsx +19 -0
- package/src/hooks/useNiceDropdownMaxHeight.ts +34 -0
- package/src/index.ts +38 -0
- package/src/locale/en-US.json +61 -0
- package/src/locale/index.ts +38 -0
- package/src/locale/zh-CN.json +61 -0
- package/src/models/CollectionFieldModel.tsx +269 -0
- package/src/models/DisplayItemModel.tsx +13 -0
- package/src/models/EditableItemModel.tsx +13 -0
- package/src/models/FilterableItemModel.tsx +13 -0
- package/src/models/__tests__/CollectionFieldModel.test.ts +122 -0
- package/src/models/__tests__/defaultParams-on-create.test.ts +83 -0
- package/src/models/__tests__/flow-model-oninit.test.ts +44 -0
- package/src/models/__tests__/flowModel.actions.integration.test.ts +100 -0
- package/src/models/__tests__/flowModel.getFlows.sort.test.ts +100 -0
- package/src/models/__tests__/flowModel.test.ts +2746 -0
- package/src/models/__tests__/flowRegistry.test.ts +512 -0
- package/src/models/__tests__/forkFlowModel.test.ts +1047 -0
- package/src/models/__tests__/model-actions.test.ts +70 -0
- package/src/models/__tests__/model-events.test.ts +69 -0
- package/src/models/flowModel.tsx +1398 -0
- package/src/models/forkFlowModel.ts +287 -0
- package/src/models/index.ts +17 -0
- package/src/provider.tsx +101 -0
- package/src/resources/__tests__/apiResource.test.ts +201 -0
- package/src/resources/__tests__/baseRecordResource.test.ts +262 -0
- package/src/resources/__tests__/filterItem.test.ts +260 -0
- package/src/resources/__tests__/flowResource.test.ts +127 -0
- package/src/resources/apiResource.ts +148 -0
- package/src/resources/baseRecordResource.ts +279 -0
- package/src/resources/filterItem.ts +74 -0
- package/src/resources/flowResource.ts +143 -0
- package/src/resources/index.ts +17 -0
- package/src/resources/multiRecordResource.ts +219 -0
- package/src/resources/singleRecordResource.ts +83 -0
- package/src/resources/sqlResource.ts +299 -0
- package/src/runjs-context/contexts/FlowRunJSContext.ts +190 -0
- package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +39 -0
- package/src/runjs-context/contexts/JSBlockRunJSContext.ts +52 -0
- package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +32 -0
- package/src/runjs-context/contexts/JSFieldRunJSContext.ts +43 -0
- package/src/runjs-context/contexts/JSItemRunJSContext.ts +39 -0
- package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +34 -0
- package/src/runjs-context/contexts/LinkageRunJSContext.ts +35 -0
- package/src/runjs-context/helpers.ts +56 -0
- package/src/runjs-context/index.ts +20 -0
- package/src/runjs-context/registry.ts +65 -0
- package/src/runjs-context/snippets/global/api-request-get.snippet.ts +20 -0
- package/src/runjs-context/snippets/global/api-request-post.snippet.ts +20 -0
- package/src/runjs-context/snippets/global/console-log-ctx.snippet.ts +19 -0
- package/src/runjs-context/snippets/global/copy-record-json.snippet.ts +21 -0
- package/src/runjs-context/snippets/global/copy-to-clipboard.snippet.ts +21 -0
- package/src/runjs-context/snippets/global/log-json-record.snippet.ts +21 -0
- package/src/runjs-context/snippets/global/message-error.snippet.ts +20 -0
- package/src/runjs-context/snippets/global/message-success.snippet.ts +20 -0
- package/src/runjs-context/snippets/global/notification-open.snippet.ts +21 -0
- package/src/runjs-context/snippets/global/open-view-dialog.snippet.ts +26 -0
- package/src/runjs-context/snippets/global/open-view-drawer.snippet.ts +26 -0
- package/src/runjs-context/snippets/global/requireAsync.snippet.ts +24 -0
- package/src/runjs-context/snippets/global/sleep.snippet.ts +21 -0
- package/src/runjs-context/snippets/global/try-catch-async.snippet.ts +22 -0
- package/src/runjs-context/snippets/global/view-navigation-push.snippet.ts +23 -0
- package/src/runjs-context/snippets/global/window-open.snippet.ts +19 -0
- package/src/runjs-context/snippets/index.ts +59 -0
- package/src/runjs-context/snippets/libs/echarts-init.snippet.ts +24 -0
- package/src/runjs-context/snippets/scene/actions/collection-selected-count.snippet.ts +22 -0
- package/src/runjs-context/snippets/scene/actions/iterate-selected-rows.snippet.ts +21 -0
- package/src/runjs-context/snippets/scene/actions/record-id-message.snippet.ts +21 -0
- package/src/runjs-context/snippets/scene/actions/run-action-basic.snippet.ts +18 -0
- package/src/runjs-context/snippets/scene/jsblock/add-event-listener.snippet.ts +29 -0
- package/src/runjs-context/snippets/scene/jsblock/append-style.snippet.ts +20 -0
- package/src/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.ts +24 -0
- package/src/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.ts +19 -0
- package/src/runjs-context/snippets/scene/jsblock/render-basic.snippet.ts +24 -0
- package/src/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.ts +24 -0
- package/src/runjs-context/snippets/scene/jsblock/render-card.snippet.ts +30 -0
- package/src/runjs-context/snippets/scene/jsblock/render-react.snippet.ts +34 -0
- package/src/runjs-context/snippets/scene/jsfield/color-by-value.snippet.ts +20 -0
- package/src/runjs-context/snippets/scene/jsfield/format-number.snippet.ts +19 -0
- package/src/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.ts +18 -0
- package/src/runjs-context/snippets/scene/jsitem/render-basic.snippet.ts +27 -0
- package/src/runjs-context/snippets/scene/linkage/set-disabled.snippet.ts +38 -0
- package/src/runjs-context/snippets/scene/linkage/set-field-value.snippet.ts +37 -0
- package/src/runjs-context/snippets/scene/linkage/set-required.snippet.ts +38 -0
- package/src/runjs-context/snippets/scene/linkage/toggle-visible.snippet.ts +38 -0
- package/src/runjs-context/snippets/types.ts +17 -0
- package/src/types.ts +474 -0
- package/src/utils/__tests__/context.test.ts +93 -0
- package/src/utils/__tests__/params-resolvers.test.ts +652 -0
- package/src/utils/__tests__/parsePathnameToViewParams.test.ts +104 -0
- package/src/utils/__tests__/safeGlobals.test.ts +29 -0
- package/src/utils/__tests__/utils.test.ts +1021 -0
- package/src/utils/__tests__/variablesParams.test.ts +52 -0
- package/src/utils/autoFlowError.ts +29 -0
- package/src/utils/constants.ts +60 -0
- package/src/utils/context.ts +70 -0
- package/src/utils/createCollectionContextMeta.ts +122 -0
- package/src/utils/exceptions.ts +36 -0
- package/src/utils/flow-definitions.ts +16 -0
- package/src/utils/index.ts +63 -0
- package/src/utils/inheritance.ts +39 -0
- package/src/utils/params-resolvers.ts +482 -0
- package/src/utils/parsePathnameToViewParams.ts +103 -0
- package/src/utils/safeGlobals.ts +188 -0
- package/src/utils/schema-utils.ts +201 -0
- package/src/utils/serverContextParams.ts +111 -0
- package/src/utils/setupRuntimeContextSteps.ts +89 -0
- package/src/utils/translation.ts +37 -0
- package/src/utils/variablesParams.ts +175 -0
- package/src/views/DialogComponent.tsx +79 -0
- package/src/views/DrawerComponent.tsx +72 -0
- package/src/views/FlowView.tsx +103 -0
- package/src/views/PageComponent.tsx +150 -0
- package/src/views/ViewNavigation.ts +122 -0
- package/src/views/__tests__/FlowView.test.ts +31 -0
- package/src/views/__tests__/ViewNavigation.test.ts +191 -0
- package/src/views/__tests__/usePatchElement.test.tsx +28 -0
- package/src/views/createViewMeta.ts +157 -0
- package/src/views/index.tsx +14 -0
- package/src/views/useDialog.tsx +192 -0
- package/src/views/useDrawer.tsx +205 -0
- package/src/views/usePage.tsx +182 -0
- package/src/views/usePatchElement.tsx +27 -0
- package/src/views/usePopover.tsx +131 -0
|
@@ -0,0 +1,190 @@
|
|
|
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
|
+
import type { FlowContext } from '../../flowContext';
|
|
11
|
+
import * as antd from 'antd';
|
|
12
|
+
import React from 'react';
|
|
13
|
+
import * as ReactDOMClient from 'react-dom/client';
|
|
14
|
+
|
|
15
|
+
export type RunJSVersion = 'v1' | (string & {});
|
|
16
|
+
export type RunJSContextCtor = new (delegate: FlowContext) => FlowRunJSContext;
|
|
17
|
+
|
|
18
|
+
export type RunJSDocMeta = {
|
|
19
|
+
label?: string;
|
|
20
|
+
properties?: Record<string, any>;
|
|
21
|
+
methods?: Record<string, any>;
|
|
22
|
+
snipastes?: Record<string, any>;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const classMeta = new WeakMap<Function, RunJSDocMeta>();
|
|
26
|
+
const classDocCache = new WeakMap<Function, RunJSDocMeta>();
|
|
27
|
+
|
|
28
|
+
function deepMerge(base: any, patch: any) {
|
|
29
|
+
if (patch === null) return undefined;
|
|
30
|
+
if (Array.isArray(base) || Array.isArray(patch) || typeof base !== 'object' || typeof patch !== 'object') {
|
|
31
|
+
return patch ?? base;
|
|
32
|
+
}
|
|
33
|
+
const out: any = { ...base };
|
|
34
|
+
for (const k of Object.keys(patch)) {
|
|
35
|
+
const v = deepMerge(base?.[k], patch[k]);
|
|
36
|
+
if (typeof v === 'undefined') delete out[k];
|
|
37
|
+
else out[k] = v;
|
|
38
|
+
}
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export class FlowRunJSContext {
|
|
43
|
+
protected _delegate: FlowContext;
|
|
44
|
+
[key: string]: any;
|
|
45
|
+
static allow?: { keys?: ReadonlyArray<string>; facades?: Record<string, ReadonlyArray<string>> };
|
|
46
|
+
|
|
47
|
+
constructor(delegate: FlowContext) {
|
|
48
|
+
this._delegate = delegate;
|
|
49
|
+
const self = this as any;
|
|
50
|
+
// 常用前端依赖直接注入
|
|
51
|
+
self.React = React;
|
|
52
|
+
self.react = React;
|
|
53
|
+
self.antd = antd;
|
|
54
|
+
self.ReactDOM = ReactDOMClient;
|
|
55
|
+
// 公共方法:分发模型事件
|
|
56
|
+
self.dispatchModelEvent = async (modelOrUid: any, eventName: string, inputArgs?: Record<string, any>) => {
|
|
57
|
+
let model: any = null;
|
|
58
|
+
const engine = (this._delegate as any).engine;
|
|
59
|
+
if (typeof modelOrUid === 'string') {
|
|
60
|
+
model = await engine?.loadModel?.({ uid: modelOrUid });
|
|
61
|
+
} else if (modelOrUid && typeof modelOrUid === 'object' && typeof modelOrUid.dispatchEvent === 'function') {
|
|
62
|
+
model = modelOrUid;
|
|
63
|
+
}
|
|
64
|
+
if (model) {
|
|
65
|
+
model.context?.addDelegate?.(self);
|
|
66
|
+
model.dispatchEvent(eventName, {
|
|
67
|
+
navigation: false,
|
|
68
|
+
...(self.model?.['getInputArgs']?.() || {}),
|
|
69
|
+
...(inputArgs || {}),
|
|
70
|
+
});
|
|
71
|
+
} else {
|
|
72
|
+
self.message?.error?.(
|
|
73
|
+
self.t?.('Model with ID {{uid}} not found', { uid: String(modelOrUid) }) || 'Model not found',
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// 显式暴露:基础属性(只读 getter 映射到委托)
|
|
79
|
+
this.#exposeProps([
|
|
80
|
+
'message',
|
|
81
|
+
'notification',
|
|
82
|
+
'logger',
|
|
83
|
+
'resource',
|
|
84
|
+
'urlSearchParams',
|
|
85
|
+
'token',
|
|
86
|
+
'role',
|
|
87
|
+
'auth',
|
|
88
|
+
'api',
|
|
89
|
+
'ref',
|
|
90
|
+
'model',
|
|
91
|
+
]);
|
|
92
|
+
// 显式暴露:基础方法(绑定到委托)
|
|
93
|
+
this.#exposeMethods(['t', 'requireAsync', 'copyToClipboard', 'resolveJsonTemplate', 'runAction', 'onRefReady']);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// 供子类/外部一致使用的定义 API(与 FlowContext 的接口保持一致风格)
|
|
97
|
+
defineProperty(key: string, options: { get?: (ctx: any) => any; value?: any }) {
|
|
98
|
+
if (options && typeof options.get === 'function') {
|
|
99
|
+
Object.defineProperty(this, key, {
|
|
100
|
+
configurable: true,
|
|
101
|
+
enumerable: true,
|
|
102
|
+
get: () => options.get?.(this),
|
|
103
|
+
});
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
Object.defineProperty(this, key, {
|
|
107
|
+
configurable: true,
|
|
108
|
+
enumerable: true,
|
|
109
|
+
writable: false,
|
|
110
|
+
value: options?.value,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
defineMethod(name: string, fn: (...args: any[]) => any) {
|
|
114
|
+
Object.defineProperty(this, name, {
|
|
115
|
+
configurable: true,
|
|
116
|
+
enumerable: false,
|
|
117
|
+
writable: false,
|
|
118
|
+
value: fn.bind(this),
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// 工具:将委托上的属性以 getter 暴露
|
|
123
|
+
#exposeProps(names: string[]) {
|
|
124
|
+
for (const k of names) {
|
|
125
|
+
if (Object.prototype.hasOwnProperty.call(this, k)) continue;
|
|
126
|
+
this.defineProperty(k, { get: () => (this._delegate as any)[k] });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// 工具:将委托上的同名方法绑定暴露
|
|
130
|
+
#exposeMethods(names: string[]) {
|
|
131
|
+
for (const k of names) {
|
|
132
|
+
if (Object.prototype.hasOwnProperty.call(this, k)) continue;
|
|
133
|
+
const src = (this._delegate as any)[k];
|
|
134
|
+
if (typeof src === 'function') {
|
|
135
|
+
this.defineMethod(k, src.bind(this._delegate));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
static injectDefaultGlobals?(): { window?: any; document?: any } | void;
|
|
141
|
+
|
|
142
|
+
static define(meta: RunJSDocMeta) {
|
|
143
|
+
const prev = classMeta.get(this) || {};
|
|
144
|
+
classMeta.set(this, deepMerge(prev, meta));
|
|
145
|
+
classDocCache.delete(this);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
static getDoc(): RunJSDocMeta {
|
|
149
|
+
const self = this as any;
|
|
150
|
+
if (classDocCache.has(self)) return classDocCache.get(self)!;
|
|
151
|
+
const chain: Function[] = [];
|
|
152
|
+
let cur: any = self;
|
|
153
|
+
while (cur && cur.prototype) {
|
|
154
|
+
chain.unshift(cur);
|
|
155
|
+
cur = Object.getPrototypeOf(cur);
|
|
156
|
+
}
|
|
157
|
+
let merged: RunJSDocMeta = {};
|
|
158
|
+
for (const cls of chain) merged = deepMerge(merged, classMeta.get(cls) || {});
|
|
159
|
+
classDocCache.set(self, merged);
|
|
160
|
+
return merged;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Define base doc on FlowRunJSContext itself
|
|
165
|
+
FlowRunJSContext.define({
|
|
166
|
+
label: 'RunJS base',
|
|
167
|
+
properties: {
|
|
168
|
+
t: "国际化函数。示例:`ctx.t('Hello {name}', { name: 'World' })`",
|
|
169
|
+
logger: "Pino logger 子实例。`ctx.logger.info({ foo: 1 }, 'msg')`",
|
|
170
|
+
message: "AntD 全局消息。`ctx.message.success('done')`",
|
|
171
|
+
notification: "AntD 通知。`ctx.notification.open({ message: 'Hi' })`",
|
|
172
|
+
requireAsync: '异步加载外部库。`const x = await ctx.requireAsync(url)`',
|
|
173
|
+
copyToClipboard: '复制文本到剪贴板。`await ctx.copyToClipboard(text)`',
|
|
174
|
+
resolveJsonTemplate: '解析含 {{ }} 的模板/表达式',
|
|
175
|
+
runAction: '运行当前模型动作。`await ctx.runAction(name, params)`',
|
|
176
|
+
resource: '数据资源(按委托可见)',
|
|
177
|
+
urlSearchParams: 'URL 查询参数对象',
|
|
178
|
+
token: 'API Token',
|
|
179
|
+
role: '当前角色',
|
|
180
|
+
auth: '认证信息(locale/role/user/token)',
|
|
181
|
+
api: 'APIClient 实例',
|
|
182
|
+
React: 'React 命名空间(RunJS 环境可用)',
|
|
183
|
+
react: 'React 别名(小写)',
|
|
184
|
+
ReactDOM: 'ReactDOM 客户端(含 createRoot)',
|
|
185
|
+
antd: 'AntD 组件库(RunJS 环境可用)',
|
|
186
|
+
},
|
|
187
|
+
methods: {
|
|
188
|
+
dispatchModelEvent: "触发模型事件:`await ctx.dispatchModelEvent(modelUid, 'click', { ... })`",
|
|
189
|
+
},
|
|
190
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
import { FlowRunJSContext } from './FlowRunJSContext';
|
|
11
|
+
import { createSafeDocument, createSafeWindow } from '../../utils';
|
|
12
|
+
|
|
13
|
+
export class FormJSFieldItemRunJSContext extends FlowRunJSContext {
|
|
14
|
+
static injectDefaultGlobals() {
|
|
15
|
+
return { window: createSafeWindow(), document: createSafeDocument() };
|
|
16
|
+
}
|
|
17
|
+
constructor(delegate: any) {
|
|
18
|
+
super(delegate);
|
|
19
|
+
this.defineProperty('element', { get: () => (this as any)._delegate['element'] });
|
|
20
|
+
this.defineProperty('record', { get: () => (this as any)._delegate['record'] });
|
|
21
|
+
this.defineProperty('value', { get: () => (this as any)._delegate['value'] });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
FormJSFieldItemRunJSContext.define({
|
|
26
|
+
label: 'FormJSFieldItem RunJS context',
|
|
27
|
+
properties: {
|
|
28
|
+
element: 'ElementProxy,表单字段容器',
|
|
29
|
+
value: '字段值(读/受控场景需通过 setProps 修改)',
|
|
30
|
+
record: '当前记录(只读)',
|
|
31
|
+
},
|
|
32
|
+
methods: {
|
|
33
|
+
onRefReady: '容器就绪回调',
|
|
34
|
+
setProps: '设置表单项属性:`setProps(fieldModel, { value })`(由联动/表单上下文提供)',
|
|
35
|
+
},
|
|
36
|
+
snipastes: {
|
|
37
|
+
显示字段值: { $ref: 'scene/jsfield/innerHTML-value', prefix: 'sn-form-value' },
|
|
38
|
+
},
|
|
39
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
import { FlowRunJSContext } from './FlowRunJSContext';
|
|
11
|
+
import { createSafeDocument, createSafeWindow } from '../../utils';
|
|
12
|
+
|
|
13
|
+
export class JSBlockRunJSContext extends FlowRunJSContext {
|
|
14
|
+
static injectDefaultGlobals() {
|
|
15
|
+
return { window: createSafeWindow(), document: createSafeDocument() };
|
|
16
|
+
}
|
|
17
|
+
constructor(delegate: any) {
|
|
18
|
+
super(delegate);
|
|
19
|
+
// 显式暴露本场景所需属性
|
|
20
|
+
this.defineProperty('element', { get: () => (this as any)._delegate['element'] });
|
|
21
|
+
this.defineProperty('record', { get: () => (this as any)._delegate['record'] });
|
|
22
|
+
this.defineProperty('value', { get: () => (this as any)._delegate['value'] });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
JSBlockRunJSContext.define({
|
|
27
|
+
label: 'JSBlock RunJS context',
|
|
28
|
+
properties: {
|
|
29
|
+
element: 'ElementProxy,安全 DOM 容器。支持 innerHTML/append 等',
|
|
30
|
+
record: '当前记录(只读,存在于数据块/详情等场景)',
|
|
31
|
+
value: '当前值(若存在)',
|
|
32
|
+
React: 'React(已注入)',
|
|
33
|
+
antd: 'AntD(已注入)',
|
|
34
|
+
},
|
|
35
|
+
methods: {
|
|
36
|
+
onRefReady: 'Container ref ready callback:\n```js\nctx.onRefReady(ctx.ref, el => { /* ... */ })\n```',
|
|
37
|
+
requireAsync: 'Load external library: `const lib = await ctx.requireAsync(url)`',
|
|
38
|
+
},
|
|
39
|
+
snipastes: {
|
|
40
|
+
'Render HTML': { $ref: 'scene/jsblock/render-basic', prefix: 'sn-jsb-html' },
|
|
41
|
+
'Render React': { $ref: 'scene/jsblock/render-react', prefix: 'sn-jsb-react' },
|
|
42
|
+
'Init ECharts': { $ref: 'libs/echarts-init', prefix: 'sn-echarts' },
|
|
43
|
+
'Render card': { $ref: 'scene/jsblock/render-card', prefix: 'sn-jsb-card' },
|
|
44
|
+
'Button handler': { $ref: 'scene/jsblock/render-button-handler', prefix: 'sn-jsb-button' },
|
|
45
|
+
'JSX mount': { $ref: 'scene/jsblock/jsx-mount', prefix: 'sn-jsx-mount' },
|
|
46
|
+
'JSX unmount': { $ref: 'scene/jsblock/jsx-unmount', prefix: 'sn-jsx-unmount' },
|
|
47
|
+
Notification: { $ref: 'global/notification-open', prefix: 'sn-notify' },
|
|
48
|
+
'Window open': { $ref: 'global/window-open', prefix: 'sn-window-open' },
|
|
49
|
+
'Add click listener': { $ref: 'scene/jsblock/add-event-listener', prefix: 'sn-jsb-click' },
|
|
50
|
+
'Append style': { $ref: 'scene/jsblock/append-style', prefix: 'sn-jsb-style' },
|
|
51
|
+
},
|
|
52
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
import { FlowRunJSContext } from './FlowRunJSContext';
|
|
11
|
+
|
|
12
|
+
export class JSCollectionActionRunJSContext extends FlowRunJSContext {
|
|
13
|
+
constructor(delegate: any) {
|
|
14
|
+
super(delegate);
|
|
15
|
+
this.defineProperty('resource', { get: () => (this as any)._delegate['resource'] });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
JSCollectionActionRunJSContext.define({
|
|
20
|
+
label: 'JSCollectionAction RunJS context',
|
|
21
|
+
properties: {
|
|
22
|
+
resource: '列表资源(选中行/分页等)',
|
|
23
|
+
},
|
|
24
|
+
methods: {
|
|
25
|
+
runAction: 'Run action',
|
|
26
|
+
message: 'Message API',
|
|
27
|
+
},
|
|
28
|
+
snipastes: {
|
|
29
|
+
'Selected count': { $ref: 'scene/actions/collection-selected-count', prefix: 'sn-act-selected-count' },
|
|
30
|
+
'Iterate selected rows': { $ref: 'scene/actions/iterate-selected-rows', prefix: 'sn-act-iterate' },
|
|
31
|
+
},
|
|
32
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
import { FlowRunJSContext } from './FlowRunJSContext';
|
|
11
|
+
import { createSafeDocument, createSafeWindow } from '../../utils';
|
|
12
|
+
|
|
13
|
+
export class JSFieldRunJSContext extends FlowRunJSContext {
|
|
14
|
+
static injectDefaultGlobals() {
|
|
15
|
+
return { window: createSafeWindow(), document: createSafeDocument() };
|
|
16
|
+
}
|
|
17
|
+
constructor(delegate: any) {
|
|
18
|
+
super(delegate);
|
|
19
|
+
this.defineProperty('element', { get: () => (this as any)._delegate['element'] });
|
|
20
|
+
this.defineProperty('value', { get: () => (this as any)._delegate['value'] });
|
|
21
|
+
this.defineProperty('record', { get: () => (this as any)._delegate['record'] });
|
|
22
|
+
this.defineProperty('collection', { get: () => (this as any)._delegate['collection'] });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
JSFieldRunJSContext.define({
|
|
27
|
+
label: 'JSField RunJS context',
|
|
28
|
+
properties: {
|
|
29
|
+
element: 'ElementProxy,字段渲染容器',
|
|
30
|
+
value: '字段当前值(只读)',
|
|
31
|
+
record: '当前记录(只读)',
|
|
32
|
+
collection: '集合定义(只读)',
|
|
33
|
+
},
|
|
34
|
+
methods: {
|
|
35
|
+
onRefReady: 'Container ready callback',
|
|
36
|
+
},
|
|
37
|
+
snipastes: {
|
|
38
|
+
'Render value': { $ref: 'scene/jsfield/innerHTML-value', prefix: 'sn-jsf-value' },
|
|
39
|
+
'Message success': { $ref: 'global/message-success', prefix: 'sn-msg-ok' },
|
|
40
|
+
'Format number': { $ref: 'scene/jsfield/format-number', prefix: 'sn-jsf-num' },
|
|
41
|
+
'Color by value': { $ref: 'scene/jsfield/color-by-value', prefix: 'sn-jsf-color' },
|
|
42
|
+
},
|
|
43
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
import { FlowRunJSContext } from './FlowRunJSContext';
|
|
11
|
+
import { createSafeDocument, createSafeWindow } from '../../utils';
|
|
12
|
+
|
|
13
|
+
export class JSItemRunJSContext extends FlowRunJSContext {
|
|
14
|
+
static injectDefaultGlobals() {
|
|
15
|
+
return { window: createSafeWindow(), document: createSafeDocument() };
|
|
16
|
+
}
|
|
17
|
+
constructor(delegate: any) {
|
|
18
|
+
super(delegate);
|
|
19
|
+
this.defineProperty('element', { get: () => (this as any)._delegate['element'] });
|
|
20
|
+
this.defineProperty('record', { get: () => (this as any)._delegate['record'] });
|
|
21
|
+
this.defineProperty('resource', { get: () => (this as any)._delegate['resource'] });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
JSItemRunJSContext.define({
|
|
26
|
+
label: 'JSItem RunJS context',
|
|
27
|
+
properties: {
|
|
28
|
+
element: 'ElementProxy,表单项渲染容器',
|
|
29
|
+
resource: '当前资源(只读)',
|
|
30
|
+
record: '当前记录(只读)',
|
|
31
|
+
},
|
|
32
|
+
methods: {
|
|
33
|
+
onRefReady: 'Container ready callback',
|
|
34
|
+
requireAsync: 'Load external library',
|
|
35
|
+
},
|
|
36
|
+
snipastes: {
|
|
37
|
+
'Render form item': { $ref: 'scene/jsitem/render-basic', prefix: 'sn-jsitem-basic' },
|
|
38
|
+
},
|
|
39
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { FlowRunJSContext } from './FlowRunJSContext';
|
|
11
|
+
|
|
12
|
+
export class JSRecordActionRunJSContext extends FlowRunJSContext {
|
|
13
|
+
constructor(delegate: any) {
|
|
14
|
+
super(delegate);
|
|
15
|
+
this.defineProperty('record', { get: () => (this as any)._delegate['record'] });
|
|
16
|
+
this.defineProperty('filterByTk', { get: () => (this as any)._delegate['filterByTk'] });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
JSRecordActionRunJSContext.define({
|
|
21
|
+
label: 'JSRecordAction RunJS context',
|
|
22
|
+
properties: {
|
|
23
|
+
record: '当前记录(只读)',
|
|
24
|
+
filterByTk: '主键/过滤键(只读)',
|
|
25
|
+
},
|
|
26
|
+
methods: {
|
|
27
|
+
runAction: 'Run action: `await ctx.runAction(name, params)`',
|
|
28
|
+
message: 'Message API',
|
|
29
|
+
},
|
|
30
|
+
snipastes: {
|
|
31
|
+
'Show record id': { $ref: 'scene/actions/record-id-message', prefix: 'sn-act-record-id' },
|
|
32
|
+
'Run action': { $ref: 'scene/actions/run-action-basic', prefix: 'sn-act-run' },
|
|
33
|
+
},
|
|
34
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
import { FlowRunJSContext } from './FlowRunJSContext';
|
|
11
|
+
|
|
12
|
+
export class LinkageRunJSContext extends FlowRunJSContext {
|
|
13
|
+
constructor(delegate: any) {
|
|
14
|
+
super(delegate);
|
|
15
|
+
this.defineProperty('model', { get: () => (this as any)._delegate['model'] });
|
|
16
|
+
this.defineProperty('fields', { get: () => (this as any)._delegate['fields'] });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
LinkageRunJSContext.define({
|
|
21
|
+
label: 'Linkage RunJS context',
|
|
22
|
+
properties: {
|
|
23
|
+
model: '当前块/字段模型(只读访问)',
|
|
24
|
+
fields: '可访问的字段集合(只读)',
|
|
25
|
+
},
|
|
26
|
+
methods: {
|
|
27
|
+
message: 'Message API',
|
|
28
|
+
},
|
|
29
|
+
snipastes: {
|
|
30
|
+
'Set field value': { $ref: 'scene/linkage/set-field-value', prefix: 'sn-link-set' },
|
|
31
|
+
'Toggle visible': { $ref: 'scene/linkage/toggle-visible', prefix: 'sn-link-visibility' },
|
|
32
|
+
'Set disabled': { $ref: 'scene/linkage/set-disabled', prefix: 'sn-link-disable' },
|
|
33
|
+
'Set required': { $ref: 'scene/linkage/set-required', prefix: 'sn-link-required' },
|
|
34
|
+
},
|
|
35
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
import type { FlowContext } from '../flowContext';
|
|
11
|
+
import { JSRunner } from '../JSRunner';
|
|
12
|
+
import type { JSRunnerOptions } from '../JSRunner';
|
|
13
|
+
import { FlowRunJSContext, RunJSVersion } from './contexts/FlowRunJSContext';
|
|
14
|
+
import { RunJSContextRegistry, getModelClassName } from './registry';
|
|
15
|
+
import { JSBlockRunJSContext } from './contexts/JSBlockRunJSContext';
|
|
16
|
+
import { JSFieldRunJSContext } from './contexts/JSFieldRunJSContext';
|
|
17
|
+
import { JSItemRunJSContext } from './contexts/JSItemRunJSContext';
|
|
18
|
+
import { FormJSFieldItemRunJSContext } from './contexts/FormJSFieldItemRunJSContext';
|
|
19
|
+
import { JSRecordActionRunJSContext } from './contexts/JSRecordActionRunJSContext';
|
|
20
|
+
import { JSCollectionActionRunJSContext } from './contexts/JSCollectionActionRunJSContext';
|
|
21
|
+
import { LinkageRunJSContext } from './contexts/LinkageRunJSContext';
|
|
22
|
+
|
|
23
|
+
export function getRunJSDocFor(ctx: FlowContext, { version = 'v1' as RunJSVersion } = {}) {
|
|
24
|
+
const modelClass = getModelClassName(ctx);
|
|
25
|
+
const ctor =
|
|
26
|
+
RunJSContextRegistry.resolve(version, modelClass) ||
|
|
27
|
+
RunJSContextRegistry.resolve('latest' as RunJSVersion, modelClass) ||
|
|
28
|
+
FlowRunJSContext;
|
|
29
|
+
return (ctor as any).getDoc?.() || {};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function createJSRunnerWithVersion(this: FlowContext, options?: JSRunnerOptions) {
|
|
33
|
+
const version = (options?.version as RunJSVersion) || ('v1' as RunJSVersion);
|
|
34
|
+
const modelClass = getModelClassName(this);
|
|
35
|
+
const Ctor =
|
|
36
|
+
RunJSContextRegistry.resolve(version, modelClass) ||
|
|
37
|
+
RunJSContextRegistry.resolve('latest' as RunJSVersion, modelClass) ||
|
|
38
|
+
FlowRunJSContext;
|
|
39
|
+
const runCtx = new Ctor((this as any).createProxy ? (this as any).createProxy() : (this as any));
|
|
40
|
+
const def = (Ctor as any).injectDefaultGlobals?.() || {};
|
|
41
|
+
const globals = { ctx: runCtx, ...def, ...(options?.globals || {}) };
|
|
42
|
+
// 透传 JSRunnerOptions 其余配置(如 timeoutMs)
|
|
43
|
+
const { timeoutMs } = options || {};
|
|
44
|
+
return new JSRunner({ globals, timeoutMs });
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function registerDefaultMappings() {
|
|
48
|
+
const v: RunJSVersion = 'v1';
|
|
49
|
+
RunJSContextRegistry.register(v, 'JSBlockModel', JSBlockRunJSContext);
|
|
50
|
+
RunJSContextRegistry.register(v, 'JSFieldModel', JSFieldRunJSContext);
|
|
51
|
+
RunJSContextRegistry.register(v, 'JSItemModel', JSItemRunJSContext);
|
|
52
|
+
RunJSContextRegistry.register(v, 'FormJSFieldItemModel', FormJSFieldItemRunJSContext);
|
|
53
|
+
RunJSContextRegistry.register(v, 'JSRecordActionModel', JSRecordActionRunJSContext);
|
|
54
|
+
RunJSContextRegistry.register(v, 'JSCollectionActionModel', JSCollectionActionRunJSContext);
|
|
55
|
+
RunJSContextRegistry.register(v, '*', FlowRunJSContext);
|
|
56
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
export * from './registry';
|
|
11
|
+
export * from './helpers';
|
|
12
|
+
export * from './contexts/FlowRunJSContext';
|
|
13
|
+
export * from './contexts/JSBlockRunJSContext';
|
|
14
|
+
export * from './contexts/JSFieldRunJSContext';
|
|
15
|
+
export * from './contexts/JSItemRunJSContext';
|
|
16
|
+
export * from './contexts/FormJSFieldItemRunJSContext';
|
|
17
|
+
export * from './contexts/JSRecordActionRunJSContext';
|
|
18
|
+
export * from './contexts/JSCollectionActionRunJSContext';
|
|
19
|
+
export * from './contexts/LinkageRunJSContext';
|
|
20
|
+
export { engineSnippets } from './snippets';
|
|
@@ -0,0 +1,65 @@
|
|
|
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
|
+
import type { RunJSVersion, RunJSContextCtor } from './contexts/FlowRunJSContext';
|
|
11
|
+
import { FlowRunJSContext } from './contexts/FlowRunJSContext';
|
|
12
|
+
import { JSBlockRunJSContext } from './contexts/JSBlockRunJSContext';
|
|
13
|
+
import { JSFieldRunJSContext } from './contexts/JSFieldRunJSContext';
|
|
14
|
+
import { JSItemRunJSContext } from './contexts/JSItemRunJSContext';
|
|
15
|
+
import { FormJSFieldItemRunJSContext } from './contexts/FormJSFieldItemRunJSContext';
|
|
16
|
+
import { JSRecordActionRunJSContext } from './contexts/JSRecordActionRunJSContext';
|
|
17
|
+
import { JSCollectionActionRunJSContext } from './contexts/JSCollectionActionRunJSContext';
|
|
18
|
+
|
|
19
|
+
export class RunJSContextRegistry {
|
|
20
|
+
private static map = new Map<string, RunJSContextCtor>();
|
|
21
|
+
private static defaultsRegistered = false;
|
|
22
|
+
private static ensureDefaults() {
|
|
23
|
+
if (this.defaultsRegistered) return;
|
|
24
|
+
// v1 默认映射(延迟注册:首次访问时再注册)
|
|
25
|
+
const v = 'v1' as RunJSVersion;
|
|
26
|
+
try {
|
|
27
|
+
const ensure = (model: string, ctor: RunJSContextCtor) => {
|
|
28
|
+
const key = `${v}:${model}`;
|
|
29
|
+
if (!this.map.has(key)) this.map.set(key, ctor);
|
|
30
|
+
};
|
|
31
|
+
ensure('JSBlockModel', JSBlockRunJSContext as any);
|
|
32
|
+
ensure('JSFieldModel', JSFieldRunJSContext as any);
|
|
33
|
+
ensure('JSItemModel', JSItemRunJSContext as any);
|
|
34
|
+
ensure('FormJSFieldItemModel', FormJSFieldItemRunJSContext as any);
|
|
35
|
+
ensure('JSRecordActionModel', JSRecordActionRunJSContext as any);
|
|
36
|
+
ensure('JSCollectionActionModel', JSCollectionActionRunJSContext as any);
|
|
37
|
+
ensure('*', FlowRunJSContext as any);
|
|
38
|
+
} finally {
|
|
39
|
+
this.defaultsRegistered = true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
static register(version: RunJSVersion, modelClass: string, ctor: RunJSContextCtor) {
|
|
43
|
+
this.map.set(`${version}:${modelClass}`, ctor);
|
|
44
|
+
}
|
|
45
|
+
static resolve(version: RunJSVersion, modelClass: string) {
|
|
46
|
+
this.ensureDefaults();
|
|
47
|
+
return this.map.get(`${version}:${modelClass}`) || this.map.get(`${version}:*`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function getModelClassName(ctx: any): string {
|
|
52
|
+
const model = ctx?.model;
|
|
53
|
+
if (!model) return '*';
|
|
54
|
+
// 1) 优先使用类 meta 中声明的 createModelOptions.use(构建后稳定,不受构造函数名压缩影响)
|
|
55
|
+
try {
|
|
56
|
+
const Ctor = model.constructor as any;
|
|
57
|
+
const use = Ctor?.meta?.createModelOptions?.use;
|
|
58
|
+
if (typeof use === 'string' && use) return use;
|
|
59
|
+
} catch (_) {
|
|
60
|
+
// ignore
|
|
61
|
+
}
|
|
62
|
+
// 2) 回退到构造函数名(开发模式可靠,生产模式可能被压缩)
|
|
63
|
+
const byName = model?.constructor?.name;
|
|
64
|
+
return byName || '*';
|
|
65
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
export default {
|
|
11
|
+
contexts: ['*'],
|
|
12
|
+
prefix: 'sn-api-get',
|
|
13
|
+
label: 'GET request template',
|
|
14
|
+
description: 'Basic template to send a GET request via ctx.api',
|
|
15
|
+
content: `
|
|
16
|
+
const res = await ctx.api.request({ url: '/your/api', method: 'get', params: { page: 1 } });
|
|
17
|
+
ctx.message.success(ctx.t('GET request completed'));
|
|
18
|
+
console.log(ctx.t('GET result:'), res);
|
|
19
|
+
`,
|
|
20
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
export default {
|
|
11
|
+
contexts: ['*'],
|
|
12
|
+
prefix: 'sn-api-post',
|
|
13
|
+
label: 'POST request template',
|
|
14
|
+
description: 'Basic template to send a POST request via ctx.api',
|
|
15
|
+
content: `
|
|
16
|
+
const res = await ctx.api.request({ url: '/your/api', method: 'post', data: { name: 'NocoBase' } });
|
|
17
|
+
ctx.message.success(ctx.t('POST request completed'));
|
|
18
|
+
console.log(ctx.t('POST result:'), res);
|
|
19
|
+
`,
|
|
20
|
+
};
|