@tachybase/module-workflow 0.23.8
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/.turbo/turbo-build.log +12 -0
- package/README.md +9 -0
- package/README.zh-CN.md +9 -0
- package/client.d.ts +2 -0
- package/client.js +1 -0
- package/dist/client/Branch.d.ts +9 -0
- package/dist/client/CanvasContent.d.ts +4 -0
- package/dist/client/CanvasContentWrapper.d.ts +4 -0
- package/dist/client/ExecutionCanvas.d.ts +2 -0
- package/dist/client/ExecutionContextProvider.d.ts +7 -0
- package/dist/client/ExecutionLink.d.ts +2 -0
- package/dist/client/ExecutionPage.d.ts +2 -0
- package/dist/client/ExecutionResourceProvider.d.ts +6 -0
- package/dist/client/FlowContext.d.ts +3 -0
- package/dist/client/Plugin.d.ts +39 -0
- package/dist/client/WorkflowCanvas.d.ts +2 -0
- package/dist/client/WorkflowLink.d.ts +2 -0
- package/dist/client/WorkflowPage.d.ts +2 -0
- package/dist/client/WorkflowPane.d.ts +2 -0
- package/dist/client/components/AddNotifiedPerson.d.ts +3 -0
- package/dist/client/components/AutoResizeInput.d.ts +4 -0
- package/dist/client/components/CheckboxGroupWithTooltip.d.ts +7 -0
- package/dist/client/components/CollectionBlockInitializer.d.ts +2 -0
- package/dist/client/components/CollectionFieldset.d.ts +3 -0
- package/dist/client/components/ColumnShowCollection.d.ts +2 -0
- package/dist/client/components/ColumnShowTitle.d.ts +2 -0
- package/dist/client/components/ConfigButtonMessage.d.ts +2 -0
- package/dist/client/components/DetailsBlockProvider.d.ts +6 -0
- package/dist/client/components/DrawerDescription.d.ts +5 -0
- package/dist/client/components/DrawerForm.d.ts +5 -0
- package/dist/client/components/ExecutionStatus.d.ts +5 -0
- package/dist/client/components/ExecutionTime.d.ts +3 -0
- package/dist/client/components/FieldsSelect.d.ts +2 -0
- package/dist/client/components/FilterDynamicComponent.d.ts +6 -0
- package/dist/client/components/GoBackButton.d.ts +2 -0
- package/dist/client/components/OpenDrawer.d.ts +7 -0
- package/dist/client/components/RadioWithTooltip.d.ts +7 -0
- package/dist/client/components/SelectNotifiedPerson.d.ts +2 -0
- package/dist/client/components/ShowNodeTypesInWorkflow.d.ts +2 -0
- package/dist/client/components/SimpleDesigner.d.ts +2 -0
- package/dist/client/components/StatusButton.d.ts +2 -0
- package/dist/client/components/ValueBlock.d.ts +5 -0
- package/dist/client/components/WorkflowLink.d.ts +2 -0
- package/dist/client/components/index.d.ts +15 -0
- package/dist/client/components/renderEngineReference.d.ts +2 -0
- package/dist/client/constants.d.ts +37 -0
- package/dist/client/features/aggregate/AggregateInstruction.d.ts +217 -0
- package/dist/client/features/aggregate/index.d.ts +4 -0
- package/dist/client/features/common/constants.d.ts +3 -0
- package/dist/client/features/delay/DelayInstruction.d.ts +48 -0
- package/dist/client/features/delay/index.d.ts +4 -0
- package/dist/client/features/dynamic-calculation/DynamicCalculation.d.ts +76 -0
- package/dist/client/features/dynamic-calculation/DynamicExpression.d.ts +6 -0
- package/dist/client/features/dynamic-calculation/expression.d.ts +35 -0
- package/dist/client/features/dynamic-calculation/index.d.ts +4 -0
- package/dist/client/features/interceptor/WorkflowTriggerInterceptor.d.ts +100 -0
- package/dist/client/features/interceptor/index.d.ts +4 -0
- package/dist/client/features/js-parse/JSParse.instruction.d.ts +123 -0
- package/dist/client/features/js-parse/index.d.ts +5 -0
- package/dist/client/features/json-parse/JSONParse.instruction.d.ts +119 -0
- package/dist/client/features/json-parse/index.d.ts +5 -0
- package/dist/client/features/loop/LoopInstruction.d.ts +33 -0
- package/dist/client/features/loop/index.d.ts +4 -0
- package/dist/client/features/manual/WorkflowTodo.d.ts +5 -0
- package/dist/client/features/manual/WorkflowTodoBlockInitializer.d.ts +2 -0
- package/dist/client/features/manual/index.d.ts +5 -0
- package/dist/client/features/manual/instruction/AssigneesSelect.d.ts +6 -0
- package/dist/client/features/manual/instruction/FormBlockInitializer.d.ts +2 -0
- package/dist/client/features/manual/instruction/FormBlockProvider.d.ts +2 -0
- package/dist/client/features/manual/instruction/ModeConfig.d.ts +5 -0
- package/dist/client/features/manual/instruction/SchemaConfig.d.ts +50 -0
- package/dist/client/features/manual/instruction/createManualFormBlockUISchema.d.ts +57 -0
- package/dist/client/features/manual/instruction/forms/create.d.ts +3 -0
- package/dist/client/features/manual/instruction/forms/custom.d.ts +5 -0
- package/dist/client/features/manual/instruction/forms/update.d.ts +3 -0
- package/dist/client/features/manual/instruction/index.d.ts +91 -0
- package/dist/client/features/manual/instruction/utils.d.ts +1 -0
- package/dist/client/features/notice/common/flowNodes.collection.d.ts +38 -0
- package/dist/client/features/notice/common/notice.collection.d.ts +127 -0
- package/dist/client/features/notice/common/workflow.collection.d.ts +30 -0
- package/dist/client/features/notice/configuration/Notice.instruction.d.ts +76 -0
- package/dist/client/features/notice/configuration/config-items/AddNotifiedPerson.view.d.ts +2 -0
- package/dist/client/features/notice/configuration/config-items/ConfigButtonNotice.view.d.ts +2 -0
- package/dist/client/features/notice/configuration/config-items/SelectNotifiedPerson.view.d.ts +2 -0
- package/dist/client/features/notice/configuration/kit.d.ts +5 -0
- package/dist/client/features/notice/configuration/show-interface/NoticeDetail.block.d.ts +2 -0
- package/dist/client/features/notice/configuration/show-interface/NoticeDetail.initializer.d.ts +2 -0
- package/dist/client/features/notice/configuration/show-interface/NoticeDetail.schema.d.ts +6 -0
- package/dist/client/features/notice/configuration/show-interface/NoticeDetailContainer.schema.d.ts +2 -0
- package/dist/client/features/notice/configuration/show-interface/style.d.ts +3 -0
- package/dist/client/features/notice/configuration/style.d.ts +5 -0
- package/dist/client/features/notice/index.d.ts +5 -0
- package/dist/client/features/notice/locale.d.ts +7 -0
- package/dist/client/features/notice/usage/NoticeBlock.initializer.d.ts +6 -0
- package/dist/client/features/notice/usage/NoticeBlock.provider.d.ts +5 -0
- package/dist/client/features/notice/usage/NoticeCenter.schema.d.ts +2 -0
- package/dist/client/features/notice/usage/column/column.action.d.ts +2 -0
- package/dist/client/features/notice/usage/column/column.node.d.ts +1 -0
- package/dist/client/features/notice/usage/column/column.status.d.ts +8 -0
- package/dist/client/features/notice/usage/column/column.user.d.ts +1 -0
- package/dist/client/features/notice/usage/column/column.workflow.d.ts +2 -0
- package/dist/client/features/notice/usage/kit.d.ts +5 -0
- package/dist/client/features/notice/usage/show-detail/NoticeDetail.provider.d.ts +5 -0
- package/dist/client/features/notice/usage/show-detail/NoticeDetail.schema.d.ts +2 -0
- package/dist/client/features/notice/usage/show-detail/contexts/MyComponent.context.d.ts +9 -0
- package/dist/client/features/notice/usage/show-detail/contexts/WorkflowNotice.context.d.ts +4 -0
- package/dist/client/features/notice/usage/show-detail/hooks/usePropsNoticeDetail.d.ts +3 -0
- package/dist/client/features/omni-trigger/OmniActionTrigger.d.ts +84 -0
- package/dist/client/features/omni-trigger/index.d.ts +5 -0
- package/dist/client/features/omni-trigger/usage/APIRegular.schema.d.ts +2 -0
- package/dist/client/features/omni-trigger/usage/APIRegular.setting.d.ts +2 -0
- package/dist/client/features/omni-trigger/usage/hooks.d.ts +3 -0
- package/dist/client/features/omni-trigger/usage/kit.d.ts +4 -0
- package/dist/client/features/omni-trigger/useFormWorkflowCustomActionProps.d.ts +3 -0
- package/dist/client/features/omni-trigger/useRecordWorkflowCustomTriggerActionProps.d.ts +3 -0
- package/dist/client/features/parallel/ParallelInstruction.d.ts +34 -0
- package/dist/client/features/parallel/index.d.ts +4 -0
- package/dist/client/features/request/RequestInstruction.d.ts +220 -0
- package/dist/client/features/request/index.d.ts +4 -0
- package/dist/client/features/response/index.d.ts +4 -0
- package/dist/client/features/script/Script.instruction.d.ts +198 -0
- package/dist/client/features/script/index.d.ts +5 -0
- package/dist/client/features/sql/SQLInstruction.d.ts +54 -0
- package/dist/client/features/sql/index.d.ts +4 -0
- package/dist/client/features/trigger-instruction/TriggerInstruction.d.ts +93 -0
- package/dist/client/features/trigger-instruction/index.d.ts +0 -0
- package/dist/client/features/trigger-instruction/plugin.d.ts +4 -0
- package/dist/client/features/variables/VariableTargetSelect.d.ts +5 -0
- package/dist/client/features/variables/VariablesInstruction.d.ts +54 -0
- package/dist/client/features/variables/index.d.ts +4 -0
- package/dist/client/features/variables/useStyles.d.ts +3 -0
- package/dist/client/hooks/index.d.ts +3 -0
- package/dist/client/hooks/useGetAriaLabelOfAddButton.d.ts +6 -0
- package/dist/client/hooks/useTriggerWorkflowActionProps.d.ts +6 -0
- package/dist/client/hooks/useWorkflowExecuted.d.ts +2 -0
- package/dist/client/index.d.ts +19 -0
- package/dist/client/index.js +876 -0
- package/dist/client/locale/index.d.ts +4 -0
- package/dist/client/nodes/calculation.d.ts +88 -0
- package/dist/client/nodes/condition.d.ts +108 -0
- package/dist/client/nodes/create.d.ts +68 -0
- package/dist/client/nodes/default-node/Node.context.d.ts +3 -0
- package/dist/client/nodes/default-node/Node.d.ts +4 -0
- package/dist/client/nodes/default-node/Node.style.d.ts +4 -0
- package/dist/client/nodes/default-node/buttons/ArrowDownButton.d.ts +2 -0
- package/dist/client/nodes/default-node/buttons/ArrowUpButton.d.ts +2 -0
- package/dist/client/nodes/default-node/buttons/DragButton.d.ts +2 -0
- package/dist/client/nodes/default-node/buttons/JobButton.d.ts +2 -0
- package/dist/client/nodes/default-node/buttons/JobButton.style.d.ts +5 -0
- package/dist/client/nodes/default-node/buttons/RemoveButton.d.ts +2 -0
- package/dist/client/nodes/default-node/components/AddButton.d.ts +11 -0
- package/dist/client/nodes/default-node/components/AddButton.props.d.ts +11 -0
- package/dist/client/nodes/default-node/components/AddButton.style.d.ts +6 -0
- package/dist/client/nodes/default-node/components/NodeConfig.d.ts +2 -0
- package/dist/client/nodes/default-node/components/NodeConfig.provider.d.ts +2 -0
- package/dist/client/nodes/default-node/components/NodeConfig.schema.d.ts +15 -0
- package/dist/client/nodes/default-node/components/NodeConfig.view.d.ts +2 -0
- package/dist/client/nodes/default-node/components/NodeConfigTitle.d.ts +2 -0
- package/dist/client/nodes/default-node/components/NodeDefaultView.d.ts +2 -0
- package/dist/client/nodes/default-node/components/NodeDefaultView.style.d.ts +5 -0
- package/dist/client/nodes/default-node/components/NodePoint.d.ts +2 -0
- package/dist/client/nodes/default-node/components/NodePoint.style.d.ts +4 -0
- package/dist/client/nodes/default-node/hooks/useAvailableUpstreams.d.ts +1 -0
- package/dist/client/nodes/default-node/hooks/useFormProviderProps.d.ts +3 -0
- package/dist/client/nodes/default-node/hooks/useUpdateAction.d.ts +3 -0
- package/dist/client/nodes/default-node/hooks/useUpstreamScopes.d.ts +1 -0
- package/dist/client/nodes/default-node/index.d.ts +4 -0
- package/dist/client/nodes/default-node/interface.d.ts +49 -0
- package/dist/client/nodes/destroy.d.ts +46 -0
- package/dist/client/nodes/end.d.ts +25 -0
- package/dist/client/nodes/query.d.ts +221 -0
- package/dist/client/nodes/update.d.ts +82 -0
- package/dist/client/schemas/collection.d.ts +162 -0
- package/dist/client/schemas/executions.d.ts +380 -0
- package/dist/client/schemas/workflows.d.ts +47 -0
- package/dist/client/settings/customizeSubmitToWorkflowActionSettings.d.ts +2 -0
- package/dist/client/style.d.ts +19 -0
- package/dist/client/triggers/collection.d.ts +133 -0
- package/dist/client/triggers/index.d.ts +25 -0
- package/dist/client/triggers/schedule/EndsByField.d.ts +5 -0
- package/dist/client/triggers/schedule/OnField.d.ts +5 -0
- package/dist/client/triggers/schedule/RepeatField.d.ts +5 -0
- package/dist/client/triggers/schedule/ScheduleConfig.d.ts +2 -0
- package/dist/client/triggers/schedule/constants.d.ts +4 -0
- package/dist/client/triggers/schedule/index.d.ts +22 -0
- package/dist/client/triggers/schedule/locale/Cron.zh-CN.d.ts +34 -0
- package/dist/client/utils.d.ts +5 -0
- package/dist/client/variable.d.ts +97 -0
- package/dist/common/constants.d.ts +5 -0
- package/dist/common/constants.js +39 -0
- package/dist/externalVersion.js +25 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +39 -0
- package/dist/locale/en-US.json +319 -0
- package/dist/locale/es-ES.json +129 -0
- package/dist/locale/fr-FR.json +129 -0
- package/dist/locale/ja-JP.json +87 -0
- package/dist/locale/ko_KR.json +246 -0
- package/dist/locale/pt-BR.json +129 -0
- package/dist/locale/ru-RU.json +87 -0
- package/dist/locale/tr-TR.json +87 -0
- package/dist/locale/zh-CN.json +399 -0
- package/dist/node_modules/@babel/core/LICENSE +22 -0
- package/dist/node_modules/@babel/core/cjs-proxy.cjs +68 -0
- package/dist/node_modules/@babel/core/lib/config/cache-contexts.js +3 -0
- package/dist/node_modules/@babel/core/lib/config/caching.js +261 -0
- package/dist/node_modules/@babel/core/lib/config/config-chain.js +469 -0
- package/dist/node_modules/@babel/core/lib/config/config-descriptors.js +190 -0
- package/dist/node_modules/@babel/core/lib/config/files/configuration.js +287 -0
- package/dist/node_modules/@babel/core/lib/config/files/import.cjs +6 -0
- package/dist/node_modules/@babel/core/lib/config/files/index-browser.js +58 -0
- package/dist/node_modules/@babel/core/lib/config/files/index.js +78 -0
- package/dist/node_modules/@babel/core/lib/config/files/module-types.js +195 -0
- package/dist/node_modules/@babel/core/lib/config/files/package.js +61 -0
- package/dist/node_modules/@babel/core/lib/config/files/plugins.js +229 -0
- package/dist/node_modules/@babel/core/lib/config/files/types.js +3 -0
- package/dist/node_modules/@babel/core/lib/config/files/utils.js +36 -0
- package/dist/node_modules/@babel/core/lib/config/full.js +312 -0
- package/dist/node_modules/@babel/core/lib/config/helpers/config-api.js +84 -0
- package/dist/node_modules/@babel/core/lib/config/helpers/deep-array.js +23 -0
- package/dist/node_modules/@babel/core/lib/config/helpers/environment.js +12 -0
- package/dist/node_modules/@babel/core/lib/config/index.js +93 -0
- package/dist/node_modules/@babel/core/lib/config/item.js +67 -0
- package/dist/node_modules/@babel/core/lib/config/partial.js +158 -0
- package/dist/node_modules/@babel/core/lib/config/pattern-to-regex.js +38 -0
- package/dist/node_modules/@babel/core/lib/config/plugin.js +33 -0
- package/dist/node_modules/@babel/core/lib/config/printer.js +113 -0
- package/dist/node_modules/@babel/core/lib/config/resolve-targets-browser.js +41 -0
- package/dist/node_modules/@babel/core/lib/config/resolve-targets.js +61 -0
- package/dist/node_modules/@babel/core/lib/config/util.js +31 -0
- package/dist/node_modules/@babel/core/lib/config/validation/option-assertions.js +277 -0
- package/dist/node_modules/@babel/core/lib/config/validation/options.js +189 -0
- package/dist/node_modules/@babel/core/lib/config/validation/plugins.js +67 -0
- package/dist/node_modules/@babel/core/lib/config/validation/removed.js +68 -0
- package/dist/node_modules/@babel/core/lib/errors/config-error.js +18 -0
- package/dist/node_modules/@babel/core/lib/errors/rewrite-stack-trace.js +98 -0
- package/dist/node_modules/@babel/core/lib/gensync-utils/async.js +90 -0
- package/dist/node_modules/@babel/core/lib/gensync-utils/fs.js +31 -0
- package/dist/node_modules/@babel/core/lib/gensync-utils/functional.js +58 -0
- package/dist/node_modules/@babel/core/lib/index.js +227 -0
- package/dist/node_modules/@babel/core/lib/parse.js +47 -0
- package/dist/node_modules/@babel/core/lib/parser/index.js +79 -0
- package/dist/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js +339 -0
- package/dist/node_modules/@babel/core/lib/tools/build-external-helpers.js +144 -0
- package/dist/node_modules/@babel/core/lib/transform-ast.js +50 -0
- package/dist/node_modules/@babel/core/lib/transform-file-browser.js +23 -0
- package/dist/node_modules/@babel/core/lib/transform-file.js +40 -0
- package/dist/node_modules/@babel/core/lib/transform.js +49 -0
- package/dist/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js +84 -0
- package/dist/node_modules/@babel/core/lib/transformation/file/babel-7-helpers.cjs +4 -0
- package/dist/node_modules/@babel/core/lib/transformation/file/file.js +214 -0
- package/dist/node_modules/@babel/core/lib/transformation/file/generate.js +84 -0
- package/dist/node_modules/@babel/core/lib/transformation/file/merge-map.js +37 -0
- package/dist/node_modules/@babel/core/lib/transformation/index.js +92 -0
- package/dist/node_modules/@babel/core/lib/transformation/normalize-file.js +129 -0
- package/dist/node_modules/@babel/core/lib/transformation/normalize-opts.js +59 -0
- package/dist/node_modules/@babel/core/lib/transformation/plugin-pass.js +50 -0
- package/dist/node_modules/@babel/core/lib/transformation/util/clone-deep.js +36 -0
- package/dist/node_modules/@babel/core/lib/vendor/import-meta-resolve.js +1043 -0
- package/dist/node_modules/@babel/core/node_modules/.bin/json5 +17 -0
- package/dist/node_modules/@babel/core/node_modules/.bin/parser +17 -0
- package/dist/node_modules/@babel/core/node_modules/.bin/semver +17 -0
- package/dist/node_modules/@babel/core/package.json +1 -0
- package/dist/node_modules/@babel/core/src/config/files/index-browser.ts +113 -0
- package/dist/node_modules/@babel/core/src/config/files/index.ts +29 -0
- package/dist/node_modules/@babel/core/src/config/resolve-targets-browser.ts +40 -0
- package/dist/node_modules/@babel/core/src/config/resolve-targets.ts +56 -0
- package/dist/node_modules/@babel/core/src/transform-file-browser.ts +31 -0
- package/dist/node_modules/@babel/core/src/transform-file.ts +55 -0
- package/dist/node_modules/cron-parser/LICENSE +21 -0
- package/dist/node_modules/cron-parser/lib/date.js +252 -0
- package/dist/node_modules/cron-parser/lib/expression.js +1002 -0
- package/dist/node_modules/cron-parser/lib/field_compactor.js +70 -0
- package/dist/node_modules/cron-parser/lib/field_stringify.js +58 -0
- package/dist/node_modules/cron-parser/lib/parser.js +1 -0
- package/dist/node_modules/cron-parser/package.json +1 -0
- package/dist/node_modules/cron-parser/types/common.d.ts +131 -0
- package/dist/node_modules/cron-parser/types/index.d.ts +45 -0
- package/dist/node_modules/cron-parser/types/ts3/index.d.ts +28 -0
- package/dist/node_modules/form-data/License +19 -0
- package/dist/node_modules/form-data/index.d.ts +62 -0
- package/dist/node_modules/form-data/lib/browser.js +2 -0
- package/dist/node_modules/form-data/lib/form_data.js +14 -0
- package/dist/node_modules/form-data/lib/populate.js +10 -0
- package/dist/node_modules/form-data/package.json +1 -0
- package/dist/node_modules/jsonata/LICENSE +19 -0
- package/dist/node_modules/jsonata/jsonata-es5.js +9875 -0
- package/dist/node_modules/jsonata/jsonata-es5.min.js +1 -0
- package/dist/node_modules/jsonata/jsonata.d.ts +72 -0
- package/dist/node_modules/jsonata/jsonata.js +1 -0
- package/dist/node_modules/jsonata/jsonata.min.js +1 -0
- package/dist/node_modules/jsonata/package.json +1 -0
- package/dist/node_modules/lru-cache/index-cjs.d.ts +7 -0
- package/dist/node_modules/lru-cache/index-cjs.js +1 -0
- package/dist/node_modules/lru-cache/index.d.ts +807 -0
- package/dist/node_modules/lru-cache/index.js +1334 -0
- package/dist/node_modules/lru-cache/index.min.js +2 -0
- package/dist/node_modules/lru-cache/package.json +1 -0
- package/dist/node_modules/mime-types/LICENSE +23 -0
- package/dist/node_modules/mime-types/index.js +14 -0
- package/dist/node_modules/mime-types/package.json +1 -0
- package/dist/node_modules/qrcode/bin/qrcode +159 -0
- package/dist/node_modules/qrcode/helper/to-sjis-browser.js +2 -0
- package/dist/node_modules/qrcode/helper/to-sjis.js +105 -0
- package/dist/node_modules/qrcode/lib/browser.js +76 -0
- package/dist/node_modules/qrcode/lib/can-promise.js +7 -0
- package/dist/node_modules/qrcode/lib/core/alignment-pattern.js +83 -0
- package/dist/node_modules/qrcode/lib/core/alphanumeric-data.js +59 -0
- package/dist/node_modules/qrcode/lib/core/bit-buffer.js +37 -0
- package/dist/node_modules/qrcode/lib/core/bit-matrix.js +65 -0
- package/dist/node_modules/qrcode/lib/core/byte-data.js +30 -0
- package/dist/node_modules/qrcode/lib/core/error-correction-code.js +135 -0
- package/dist/node_modules/qrcode/lib/core/error-correction-level.js +50 -0
- package/dist/node_modules/qrcode/lib/core/finder-pattern.js +22 -0
- package/dist/node_modules/qrcode/lib/core/format-info.js +29 -0
- package/dist/node_modules/qrcode/lib/core/galois-field.js +69 -0
- package/dist/node_modules/qrcode/lib/core/kanji-data.js +54 -0
- package/dist/node_modules/qrcode/lib/core/mask-pattern.js +234 -0
- package/dist/node_modules/qrcode/lib/core/mode.js +167 -0
- package/dist/node_modules/qrcode/lib/core/numeric-data.js +43 -0
- package/dist/node_modules/qrcode/lib/core/polynomial.js +62 -0
- package/dist/node_modules/qrcode/lib/core/qrcode.js +495 -0
- package/dist/node_modules/qrcode/lib/core/reed-solomon-encoder.js +56 -0
- package/dist/node_modules/qrcode/lib/core/regex.js +31 -0
- package/dist/node_modules/qrcode/lib/core/segments.js +330 -0
- package/dist/node_modules/qrcode/lib/core/utils.js +63 -0
- package/dist/node_modules/qrcode/lib/core/version-check.js +9 -0
- package/dist/node_modules/qrcode/lib/core/version.js +163 -0
- package/dist/node_modules/qrcode/lib/index.js +1 -0
- package/dist/node_modules/qrcode/lib/renderer/canvas.js +63 -0
- package/dist/node_modules/qrcode/lib/renderer/png.js +78 -0
- package/dist/node_modules/qrcode/lib/renderer/svg-tag.js +81 -0
- package/dist/node_modules/qrcode/lib/renderer/svg.js +19 -0
- package/dist/node_modules/qrcode/lib/renderer/terminal/terminal-small.js +85 -0
- package/dist/node_modules/qrcode/lib/renderer/terminal/terminal.js +49 -0
- package/dist/node_modules/qrcode/lib/renderer/terminal.js +9 -0
- package/dist/node_modules/qrcode/lib/renderer/utf8.js +71 -0
- package/dist/node_modules/qrcode/lib/renderer/utils.js +99 -0
- package/dist/node_modules/qrcode/lib/server.js +138 -0
- package/dist/node_modules/qrcode/license +10 -0
- package/dist/node_modules/qrcode/package.json +1 -0
- package/dist/server/Plugin.d.ts +50 -0
- package/dist/server/Plugin.js +498 -0
- package/dist/server/Processor.d.ts +59 -0
- package/dist/server/Processor.js +306 -0
- package/dist/server/actions/executions.d.ts +3 -0
- package/dist/server/actions/executions.js +87 -0
- package/dist/server/actions/index.d.ts +3 -0
- package/dist/server/actions/index.js +59 -0
- package/dist/server/actions/nodes.d.ts +6 -0
- package/dist/server/actions/nodes.js +322 -0
- package/dist/server/actions/workflows.d.ts +10 -0
- package/dist/server/actions/workflows.js +347 -0
- package/dist/server/collections/1-users_jobs.d.ts +2 -0
- package/dist/server/collections/1-users_jobs.js +73 -0
- package/dist/server/collections/2-jobs.d.ts +2 -0
- package/dist/server/collections/2-jobs.js +40 -0
- package/dist/server/collections/3-users.d.ts +2 -0
- package/dist/server/collections/3-users.js +38 -0
- package/dist/server/collections/executions.d.ts +3 -0
- package/dist/server/collections/executions.js +64 -0
- package/dist/server/collections/flow_nodes.d.ts +3 -0
- package/dist/server/collections/flow_nodes.js +78 -0
- package/dist/server/collections/jobs.d.ts +3 -0
- package/dist/server/collections/jobs.js +61 -0
- package/dist/server/collections/workflows.d.ts +2 -0
- package/dist/server/collections/workflows.js +130 -0
- package/dist/server/constants.d.ts +22 -0
- package/dist/server/constants.js +52 -0
- package/dist/server/features/_deprecated-js-parse/JSParse.instruction.d.ts +10 -0
- package/dist/server/features/_deprecated-js-parse/JSParse.instruction.js +100 -0
- package/dist/server/features/_deprecated-js-parse/index.d.ts +1 -0
- package/dist/server/features/_deprecated-js-parse/index.js +33 -0
- package/dist/server/features/_deprecated-js-parse/plugin.d.ts +5 -0
- package/dist/server/features/_deprecated-js-parse/plugin.js +48 -0
- package/dist/server/features/_deprecated-json-parse/JSONParse.instruction.d.ts +11 -0
- package/dist/server/features/_deprecated-json-parse/JSONParse.instruction.js +81 -0
- package/dist/server/features/_deprecated-json-parse/index.d.ts +1 -0
- package/dist/server/features/_deprecated-json-parse/index.js +33 -0
- package/dist/server/features/_deprecated-json-parse/plugin.d.ts +5 -0
- package/dist/server/features/_deprecated-json-parse/plugin.js +48 -0
- package/dist/server/features/aggregate/AggregateInstruction.d.ts +7 -0
- package/dist/server/features/aggregate/AggregateInstruction.js +56 -0
- package/dist/server/features/aggregate/Plugin.d.ts +4 -0
- package/dist/server/features/aggregate/Plugin.js +45 -0
- package/dist/server/features/common/constants.d.ts +4 -0
- package/dist/server/features/common/constants.js +36 -0
- package/dist/server/features/delay/DelayInstruction.d.ts +12 -0
- package/dist/server/features/delay/DelayInstruction.js +106 -0
- package/dist/server/features/delay/Plugin.d.ts +4 -0
- package/dist/server/features/delay/Plugin.js +45 -0
- package/dist/server/features/dynamic-calculation/DynamicCalculation.d.ts +10 -0
- package/dist/server/features/dynamic-calculation/DynamicCalculation.js +62 -0
- package/dist/server/features/dynamic-calculation/Plugin.d.ts +4 -0
- package/dist/server/features/dynamic-calculation/Plugin.js +49 -0
- package/dist/server/features/dynamic-calculation/expression-field.d.ts +7 -0
- package/dist/server/features/dynamic-calculation/expression-field.js +32 -0
- package/dist/server/features/interception/RequestInterceptionTrigger.d.ts +11 -0
- package/dist/server/features/interception/RequestInterceptionTrigger.js +146 -0
- package/dist/server/features/interception/index.d.ts +4 -0
- package/dist/server/features/interception/index.js +35 -0
- package/dist/server/features/loop/LoopInstruction.d.ts +13 -0
- package/dist/server/features/loop/LoopInstruction.js +100 -0
- package/dist/server/features/loop/Plugin.d.ts +4 -0
- package/dist/server/features/loop/Plugin.js +45 -0
- package/dist/server/features/manual/ManualInstruction.d.ts +28 -0
- package/dist/server/features/manual/ManualInstruction.js +152 -0
- package/dist/server/features/manual/Plugin.d.ts +4 -0
- package/dist/server/features/manual/Plugin.js +70 -0
- package/dist/server/features/manual/actions.d.ts +2 -0
- package/dist/server/features/manual/actions.js +104 -0
- package/dist/server/features/manual/forms/create.d.ts +6 -0
- package/dist/server/features/manual/forms/create.js +41 -0
- package/dist/server/features/manual/forms/index.d.ts +6 -0
- package/dist/server/features/manual/forms/index.js +38 -0
- package/dist/server/features/manual/forms/update.d.ts +7 -0
- package/dist/server/features/manual/forms/update.js +41 -0
- package/dist/server/features/notice/NoticeInstruction.d.ts +9 -0
- package/dist/server/features/notice/NoticeInstruction.js +172 -0
- package/dist/server/features/notice/actions.d.ts +3 -0
- package/dist/server/features/notice/actions.js +124 -0
- package/dist/server/features/notice/collections/workflowNotice.d.ts +3 -0
- package/dist/server/features/notice/collections/workflowNotice.js +90 -0
- package/dist/server/features/notice/constants.d.ts +16 -0
- package/dist/server/features/notice/constants.js +44 -0
- package/dist/server/features/notice/index.d.ts +1 -0
- package/dist/server/features/notice/index.js +33 -0
- package/dist/server/features/notice/plugin.d.ts +12 -0
- package/dist/server/features/notice/plugin.js +83 -0
- package/dist/server/features/notice/tools.d.ts +17 -0
- package/dist/server/features/notice/tools.js +163 -0
- package/dist/server/features/omni-trigger/CustomActionTrigger.d.ts +11 -0
- package/dist/server/features/omni-trigger/CustomActionTrigger.js +270 -0
- package/dist/server/features/omni-trigger/Plugin.d.ts +4 -0
- package/dist/server/features/omni-trigger/Plugin.js +45 -0
- package/dist/server/features/omni-trigger/index.d.ts +1 -0
- package/dist/server/features/omni-trigger/index.js +21 -0
- package/dist/server/features/parallel/ParallelInstruction.d.ts +11 -0
- package/dist/server/features/parallel/ParallelInstruction.js +137 -0
- package/dist/server/features/parallel/Plugin.d.ts +4 -0
- package/dist/server/features/parallel/Plugin.js +45 -0
- package/dist/server/features/request/Plugin.d.ts +4 -0
- package/dist/server/features/request/Plugin.js +45 -0
- package/dist/server/features/request/RequestInstruction.d.ts +14 -0
- package/dist/server/features/request/RequestInstruction.js +183 -0
- package/dist/server/features/response/Plugin.d.ts +4 -0
- package/dist/server/features/response/Plugin.js +45 -0
- package/dist/server/features/response/ResponseMessageInstruction.d.ts +7 -0
- package/dist/server/features/response/ResponseMessageInstruction.js +57 -0
- package/dist/server/features/response/index.d.ts +1 -0
- package/dist/server/features/response/index.js +21 -0
- package/dist/server/features/script/index.d.ts +1 -0
- package/dist/server/features/script/index.js +33 -0
- package/dist/server/features/script/plugin.d.ts +5 -0
- package/dist/server/features/script/plugin.js +48 -0
- package/dist/server/features/script/script.instruction.d.ts +10 -0
- package/dist/server/features/script/script.instruction.js +212 -0
- package/dist/server/features/sql/Plugin.d.ts +4 -0
- package/dist/server/features/sql/Plugin.js +45 -0
- package/dist/server/features/sql/SQLInstruction.d.ts +10 -0
- package/dist/server/features/sql/SQLInstruction.js +48 -0
- package/dist/server/features/trigger-instruction/TriggerInstruction.d.ts +15 -0
- package/dist/server/features/trigger-instruction/TriggerInstruction.js +71 -0
- package/dist/server/features/trigger-instruction/flownode-check.d.ts +2 -0
- package/dist/server/features/trigger-instruction/flownode-check.js +114 -0
- package/dist/server/features/trigger-instruction/index.d.ts +0 -0
- package/dist/server/features/trigger-instruction/index.js +0 -0
- package/dist/server/features/trigger-instruction/plugin.d.ts +4 -0
- package/dist/server/features/trigger-instruction/plugin.js +37 -0
- package/dist/server/features/variables/Plugin.d.ts +4 -0
- package/dist/server/features/variables/Plugin.js +45 -0
- package/dist/server/features/variables/VariableInstruction.d.ts +7 -0
- package/dist/server/features/variables/VariableInstruction.js +61 -0
- package/dist/server/features/variables/index.d.ts +1 -0
- package/dist/server/features/variables/index.js +27 -0
- package/dist/server/features/webhook/Plugin.d.ts +4 -0
- package/dist/server/features/webhook/Plugin.js +109 -0
- package/dist/server/features/webhook/index.d.ts +1 -0
- package/dist/server/features/webhook/index.js +27 -0
- package/dist/server/features/webhook/webhooks.d.ts +9 -0
- package/dist/server/features/webhook/webhooks.js +286 -0
- package/dist/server/functions/index.d.ts +9 -0
- package/dist/server/functions/index.js +31 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.js +54 -0
- package/dist/server/instructions/CalculationInstruction.d.ts +17 -0
- package/dist/server/instructions/CalculationInstruction.js +59 -0
- package/dist/server/instructions/ConditionInstruction.d.ts +29 -0
- package/dist/server/instructions/ConditionInstruction.js +160 -0
- package/dist/server/instructions/CreateInstruction.d.ts +10 -0
- package/dist/server/instructions/CreateInstruction.js +175 -0
- package/dist/server/instructions/DestroyInstruction.d.ts +10 -0
- package/dist/server/instructions/DestroyInstruction.js +50 -0
- package/dist/server/instructions/EndInstruction.d.ts +6 -0
- package/dist/server/instructions/EndInstruction.js +47 -0
- package/dist/server/instructions/QueryInstruction.d.ts +13 -0
- package/dist/server/instructions/QueryInstruction.js +78 -0
- package/dist/server/instructions/UpdateInstruction.d.ts +10 -0
- package/dist/server/instructions/UpdateInstruction.js +159 -0
- package/dist/server/instructions/index.d.ts +23 -0
- package/dist/server/instructions/index.js +33 -0
- package/dist/server/migrations/20241118104303-add-initAt.d.ts +6 -0
- package/dist/server/migrations/20241118104303-add-initAt.js +47 -0
- package/dist/server/migrations/20241206122842-add-createdBy.d.ts +6 -0
- package/dist/server/migrations/20241206122842-add-createdBy.js +46 -0
- package/dist/server/migrations/20241220001154-bigInt.d.ts +6 -0
- package/dist/server/migrations/20241220001154-bigInt.js +39 -0
- package/dist/server/triggers/CollectionTrigger.d.ts +14 -0
- package/dist/server/triggers/CollectionTrigger.js +188 -0
- package/dist/server/triggers/ScheduleTrigger/DateFieldScheduleTrigger.d.ts +31 -0
- package/dist/server/triggers/ScheduleTrigger/DateFieldScheduleTrigger.js +342 -0
- package/dist/server/triggers/ScheduleTrigger/StaticScheduleTrigger.d.ts +15 -0
- package/dist/server/triggers/ScheduleTrigger/StaticScheduleTrigger.js +143 -0
- package/dist/server/triggers/ScheduleTrigger/index.d.ts +13 -0
- package/dist/server/triggers/ScheduleTrigger/index.js +74 -0
- package/dist/server/triggers/ScheduleTrigger/utils.d.ts +5 -0
- package/dist/server/triggers/ScheduleTrigger/utils.js +35 -0
- package/dist/server/triggers/index.d.ts +13 -0
- package/dist/server/triggers/index.js +37 -0
- package/dist/server/types/Execution.d.ts +17 -0
- package/dist/server/types/Execution.js +25 -0
- package/dist/server/types/FlowNode.d.ts +16 -0
- package/dist/server/types/FlowNode.js +25 -0
- package/dist/server/types/Job.d.ts +14 -0
- package/dist/server/types/Job.js +25 -0
- package/dist/server/types/Workflow.d.ts +27 -0
- package/dist/server/types/Workflow.js +25 -0
- package/dist/server/types/index.d.ts +4 -0
- package/dist/server/types/index.js +15 -0
- package/dist/server/utils.d.ts +1 -0
- package/dist/server/utils.js +42 -0
- package/dist/swagger/index.d.ts +754 -0
- package/dist/swagger/index.js +798 -0
- package/package.json +63 -0
- package/server.d.ts +2 -0
- package/server.js +1 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var add_createdBy_exports = {};
|
|
19
|
+
__export(add_createdBy_exports, {
|
|
20
|
+
default: () => add_createdBy_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(add_createdBy_exports);
|
|
23
|
+
var import_server = require("@tachybase/server");
|
|
24
|
+
class add_createdBy_default extends import_server.Migration {
|
|
25
|
+
on = "afterLoad";
|
|
26
|
+
// 'beforeLoad' or 'afterLoad'
|
|
27
|
+
appVersion = "<0.22.59";
|
|
28
|
+
async up() {
|
|
29
|
+
const userRepo = this.context.db.getRepository("users");
|
|
30
|
+
const workflowRepo = this.context.db.getRepository("workflows");
|
|
31
|
+
const rootUser = await userRepo.findOne({
|
|
32
|
+
filter: {
|
|
33
|
+
specialRole: "root"
|
|
34
|
+
},
|
|
35
|
+
raw: true
|
|
36
|
+
});
|
|
37
|
+
const { id } = rootUser;
|
|
38
|
+
const result = await workflowRepo.update({
|
|
39
|
+
filter: {
|
|
40
|
+
createdById: null
|
|
41
|
+
},
|
|
42
|
+
values: { createdById: id, updatedById: id }
|
|
43
|
+
});
|
|
44
|
+
console.log("[workflows] add createdBy and updateBy", result.length, "rows");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var bigInt_exports = {};
|
|
19
|
+
__export(bigInt_exports, {
|
|
20
|
+
default: () => bigInt_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(bigInt_exports);
|
|
23
|
+
var import_server = require("@tachybase/server");
|
|
24
|
+
var import_sequelize = require("sequelize");
|
|
25
|
+
class bigInt_default extends import_server.Migration {
|
|
26
|
+
on = "afterLoad";
|
|
27
|
+
// 'beforeLoad' or 'afterLoad'
|
|
28
|
+
appVersion = "<0.22.86";
|
|
29
|
+
async up() {
|
|
30
|
+
const queryInterface = this.db.sequelize.getQueryInterface();
|
|
31
|
+
await queryInterface.changeColumn("executions", "parentNode", {
|
|
32
|
+
type: import_sequelize.DataTypes.BIGINT
|
|
33
|
+
});
|
|
34
|
+
await queryInterface.changeColumn("jobs", "cost", {
|
|
35
|
+
type: import_sequelize.DataTypes.BIGINT
|
|
36
|
+
});
|
|
37
|
+
this.app.logger.info("change bigint success!");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Transactionable } from '@tachybase/database';
|
|
2
|
+
import Trigger from '.';
|
|
3
|
+
import type { WorkflowModel } from '../types';
|
|
4
|
+
export interface CollectionChangeTriggerConfig {
|
|
5
|
+
collection: string;
|
|
6
|
+
mode: number;
|
|
7
|
+
condition: any;
|
|
8
|
+
}
|
|
9
|
+
export default class CollectionTrigger extends Trigger {
|
|
10
|
+
events: Map<any, any>;
|
|
11
|
+
on(workflow: WorkflowModel): void;
|
|
12
|
+
off(workflow: WorkflowModel): void;
|
|
13
|
+
validateEvent(workflow: WorkflowModel, context: any, options: Transactionable): Promise<boolean>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var CollectionTrigger_exports = {};
|
|
29
|
+
__export(CollectionTrigger_exports, {
|
|
30
|
+
default: () => CollectionTrigger
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(CollectionTrigger_exports);
|
|
33
|
+
var import_data_source = require("@tachybase/data-source");
|
|
34
|
+
var import__ = __toESM(require("."));
|
|
35
|
+
var import_utils = require("../utils");
|
|
36
|
+
const MODE_BITMAP = {
|
|
37
|
+
CREATE: 1,
|
|
38
|
+
UPDATE: 2,
|
|
39
|
+
DESTROY: 4
|
|
40
|
+
};
|
|
41
|
+
const MODE_BITMAP_EVENTS = /* @__PURE__ */ new Map();
|
|
42
|
+
MODE_BITMAP_EVENTS.set(MODE_BITMAP.CREATE, "afterCreateWithAssociations");
|
|
43
|
+
MODE_BITMAP_EVENTS.set(MODE_BITMAP.UPDATE, "afterUpdateWithAssociations");
|
|
44
|
+
MODE_BITMAP_EVENTS.set(MODE_BITMAP.DESTROY, "afterDestroy");
|
|
45
|
+
function getHookId(workflow, type) {
|
|
46
|
+
return `${type}#${workflow.id}`;
|
|
47
|
+
}
|
|
48
|
+
function getFieldRawName(collection, name) {
|
|
49
|
+
const field = collection.getField(name);
|
|
50
|
+
if (field && field.options.type === "belongsTo") {
|
|
51
|
+
return field.options.foreignKey;
|
|
52
|
+
}
|
|
53
|
+
return name;
|
|
54
|
+
}
|
|
55
|
+
async function handler(workflow, data, options) {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
const { condition, changed, mode, appends, blacklist } = workflow.config;
|
|
58
|
+
const [dataSourceName, collectionName] = (0, import_data_source.parseCollectionName)(workflow.config.collection);
|
|
59
|
+
const collection = (_a = this.workflow.app.dataSourceManager) == null ? void 0 : _a.dataSources.get(dataSourceName).collectionManager.getCollection(collectionName);
|
|
60
|
+
const { transaction, context } = options;
|
|
61
|
+
const { repository, filterTargetKey } = collection;
|
|
62
|
+
if (changed && changed.length && changed.filter(
|
|
63
|
+
(name) => !["linkTo", "hasOne", "hasMany", "belongsToMany"].includes(collection.getField(name).options.type)
|
|
64
|
+
).every((name) => !data.changedWithAssociations(getFieldRawName(collection, name)))) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (blacklist && blacklist.length) {
|
|
68
|
+
const changedWithAssociations = data.changedWithAssociations();
|
|
69
|
+
const presetFields = ["createdBy", "createdById", "createdAt", "updatedBy", "updatedById", "updatedAt"];
|
|
70
|
+
if (changedWithAssociations) {
|
|
71
|
+
const userFields = changedWithAssociations.filter(
|
|
72
|
+
(field) => !presetFields.includes(field) && collection.getField(field) && !["linkTo", "hasOne", "hasMany", "belongsToMany"].includes(collection.getField(field).options.type)
|
|
73
|
+
);
|
|
74
|
+
const allInBlacklist = userFields.every((name) => blacklist.includes(name));
|
|
75
|
+
if (allInBlacklist) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (condition && ((_b = condition.$and) == null ? void 0 : _b.length)) {
|
|
81
|
+
const count = await repository.count({
|
|
82
|
+
filter: {
|
|
83
|
+
$and: [condition, { [filterTargetKey]: data[filterTargetKey] }]
|
|
84
|
+
},
|
|
85
|
+
context,
|
|
86
|
+
transaction
|
|
87
|
+
});
|
|
88
|
+
if (!count) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
let result = data;
|
|
93
|
+
if ((appends == null ? void 0 : appends.length) && !(mode & MODE_BITMAP.DESTROY)) {
|
|
94
|
+
const includeFields = appends.reduce((set, field) => {
|
|
95
|
+
set.add(field.split(".")[0]);
|
|
96
|
+
set.add(field);
|
|
97
|
+
return set;
|
|
98
|
+
}, /* @__PURE__ */ new Set());
|
|
99
|
+
result = await repository.findOne({
|
|
100
|
+
filterByTk: data[filterTargetKey],
|
|
101
|
+
appends: Array.from(includeFields),
|
|
102
|
+
transaction
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
const json = (0, import_utils.toJSON)(result);
|
|
106
|
+
if (workflow.sync) {
|
|
107
|
+
await this.workflow.trigger(
|
|
108
|
+
workflow,
|
|
109
|
+
{ data: json, stack: context == null ? void 0 : context.stack },
|
|
110
|
+
{
|
|
111
|
+
transaction: this.workflow.useDataSourceTransaction(dataSourceName, transaction)
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
} else {
|
|
115
|
+
this.workflow.trigger(workflow, { data: json, stack: context == null ? void 0 : context.stack });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
class CollectionTrigger extends import__.default {
|
|
119
|
+
events = /* @__PURE__ */ new Map();
|
|
120
|
+
on(workflow) {
|
|
121
|
+
var _a, _b;
|
|
122
|
+
const { collection, mode } = workflow.config;
|
|
123
|
+
if (!collection) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const [dataSourceName, collectionName] = (0, import_data_source.parseCollectionName)(collection);
|
|
127
|
+
const { db } = ((_b = (_a = this.workflow.app.dataSourceManager) == null ? void 0 : _a.dataSources.get(dataSourceName)) == null ? void 0 : _b.collectionManager) ?? {};
|
|
128
|
+
if (!db || !db.getCollection(collectionName)) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
for (const [key, type] of MODE_BITMAP_EVENTS.entries()) {
|
|
132
|
+
const event = `${collectionName}.${type}`;
|
|
133
|
+
const name = getHookId(workflow, `${collection}.${type}`);
|
|
134
|
+
if (mode & key) {
|
|
135
|
+
if (!this.events.has(name)) {
|
|
136
|
+
const listener = handler.bind(this, workflow);
|
|
137
|
+
this.events.set(name, listener);
|
|
138
|
+
db.on(event, listener);
|
|
139
|
+
}
|
|
140
|
+
} else {
|
|
141
|
+
const listener = this.events.get(name);
|
|
142
|
+
if (listener) {
|
|
143
|
+
db.off(event, listener);
|
|
144
|
+
this.events.delete(name);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
off(workflow) {
|
|
150
|
+
var _a;
|
|
151
|
+
const { collection, mode } = workflow.config;
|
|
152
|
+
if (!collection) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const [dataSourceName, collectionName] = (0, import_data_source.parseCollectionName)(collection);
|
|
156
|
+
const { db } = ((_a = this.workflow.app.dataSourceManager.dataSources.get(dataSourceName)) == null ? void 0 : _a.collectionManager) ?? {};
|
|
157
|
+
if (!db || !db.getCollection(collectionName)) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
for (const [key, type] of MODE_BITMAP_EVENTS.entries()) {
|
|
161
|
+
const name = getHookId(workflow, `${collection}.${type}`);
|
|
162
|
+
if (mode & key) {
|
|
163
|
+
const listener = this.events.get(name);
|
|
164
|
+
if (listener) {
|
|
165
|
+
db.off(`${collectionName}.${type}`, listener);
|
|
166
|
+
this.events.delete(name);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
async validateEvent(workflow, context, options) {
|
|
172
|
+
if (context.stack) {
|
|
173
|
+
const existed = await workflow.countExecutions({
|
|
174
|
+
where: {
|
|
175
|
+
id: context.stack
|
|
176
|
+
},
|
|
177
|
+
transaction: options.transaction
|
|
178
|
+
});
|
|
179
|
+
if (existed) {
|
|
180
|
+
this.workflow.getLogger(workflow.id).warn(
|
|
181
|
+
`workflow ${workflow.id} has already been triggered in stack executions (${context.stack}), and newly triggering will be skipped.`
|
|
182
|
+
);
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Transactionable } from '@tachybase/database';
|
|
2
|
+
import type Plugin from '../../Plugin';
|
|
3
|
+
import type { WorkflowModel } from '../../types';
|
|
4
|
+
export type ScheduleOnField = {
|
|
5
|
+
field: string;
|
|
6
|
+
offset?: number;
|
|
7
|
+
unit?: 1000 | 60000 | 3600000 | 86400000;
|
|
8
|
+
};
|
|
9
|
+
export interface ScheduleTriggerConfig {
|
|
10
|
+
mode: number;
|
|
11
|
+
repeat?: string | number | null;
|
|
12
|
+
limit?: number;
|
|
13
|
+
startsOn?: ScheduleOnField;
|
|
14
|
+
endsOn?: string | ScheduleOnField;
|
|
15
|
+
}
|
|
16
|
+
export default class ScheduleTrigger {
|
|
17
|
+
workflow: Plugin;
|
|
18
|
+
events: Map<any, any>;
|
|
19
|
+
private timer;
|
|
20
|
+
private cache;
|
|
21
|
+
cacheCycle: number;
|
|
22
|
+
constructor(workflow: Plugin);
|
|
23
|
+
reload(): Promise<void>;
|
|
24
|
+
inspect(workflows: WorkflowModel[]): void;
|
|
25
|
+
loadRecordsToSchedule({ config: { collection, limit, startsOn, repeat, endsOn }, allExecuted }: WorkflowModel, currentDate: Date): Promise<import("@tachybase/database").Model<any, any>[]>;
|
|
26
|
+
getRecordNextTime(workflow: WorkflowModel, record: any, nextSecond?: boolean): any;
|
|
27
|
+
schedule(workflow: WorkflowModel, record: any, nextTime: any, toggle?: boolean, options?: {}): Promise<void>;
|
|
28
|
+
trigger(workflow: WorkflowModel, record: any, nextTime: any, { transaction }?: Transactionable): Promise<void>;
|
|
29
|
+
on(workflow: WorkflowModel): void;
|
|
30
|
+
off(workflow: WorkflowModel): void;
|
|
31
|
+
}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var DateFieldScheduleTrigger_exports = {};
|
|
29
|
+
__export(DateFieldScheduleTrigger_exports, {
|
|
30
|
+
default: () => ScheduleTrigger
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(DateFieldScheduleTrigger_exports);
|
|
33
|
+
var import_data_source = require("@tachybase/data-source");
|
|
34
|
+
var import_database = require("@tachybase/database");
|
|
35
|
+
var import_cron_parser = __toESM(require("cron-parser"));
|
|
36
|
+
var import_utils = require("./utils");
|
|
37
|
+
function getOnTimestampWithOffset({ field, offset = 0, unit = 1e3 }, now) {
|
|
38
|
+
if (!field) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const timestamp = now.getTime();
|
|
42
|
+
return timestamp - offset * unit;
|
|
43
|
+
}
|
|
44
|
+
function getDataOptionTime(record, on, dir = 1) {
|
|
45
|
+
if (!on) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
switch (typeof on) {
|
|
49
|
+
case "string": {
|
|
50
|
+
const time = (0, import_utils.parseDateWithoutMs)(on);
|
|
51
|
+
return time ? time : null;
|
|
52
|
+
}
|
|
53
|
+
case "object": {
|
|
54
|
+
const { field, offset = 0, unit = 1e3 } = on;
|
|
55
|
+
if (!record.get(field)) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const second = new Date(record.get(field).getTime());
|
|
59
|
+
second.setMilliseconds(0);
|
|
60
|
+
return second.getTime() + offset * unit * dir;
|
|
61
|
+
}
|
|
62
|
+
default:
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const DialectTimestampFnMap = {
|
|
67
|
+
postgres(col) {
|
|
68
|
+
return `CAST(FLOOR(extract(epoch from "${col}")) AS INTEGER)`;
|
|
69
|
+
},
|
|
70
|
+
mysql(col) {
|
|
71
|
+
return `CAST(FLOOR(UNIX_TIMESTAMP(\`${col}\`)) AS SIGNED INTEGER)`;
|
|
72
|
+
},
|
|
73
|
+
sqlite(col) {
|
|
74
|
+
return `CAST(FLOOR(unixepoch(${col})) AS INTEGER)`;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
DialectTimestampFnMap.mariadb = DialectTimestampFnMap.mysql;
|
|
78
|
+
function getCronNextTime(cron, currentDate) {
|
|
79
|
+
const interval = import_cron_parser.default.parseExpression(cron, { currentDate });
|
|
80
|
+
const next = interval.next();
|
|
81
|
+
return next.getTime();
|
|
82
|
+
}
|
|
83
|
+
function matchCronNextTime(cron, currentDate, range) {
|
|
84
|
+
return getCronNextTime(cron, currentDate) - currentDate.getTime() <= range;
|
|
85
|
+
}
|
|
86
|
+
function getHookId(workflow, type) {
|
|
87
|
+
return `${type}#${workflow.id}`;
|
|
88
|
+
}
|
|
89
|
+
class ScheduleTrigger {
|
|
90
|
+
constructor(workflow) {
|
|
91
|
+
this.workflow = workflow;
|
|
92
|
+
workflow.app.on("afterStart", async () => {
|
|
93
|
+
if (this.timer) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
this.timer = setInterval(() => this.reload(), this.cacheCycle);
|
|
97
|
+
this.reload();
|
|
98
|
+
});
|
|
99
|
+
workflow.app.on("beforeStop", () => {
|
|
100
|
+
if (this.timer) {
|
|
101
|
+
clearInterval(this.timer);
|
|
102
|
+
}
|
|
103
|
+
for (const [key, timer] of this.cache.entries()) {
|
|
104
|
+
clearTimeout(timer);
|
|
105
|
+
this.cache.delete(key);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
events = /* @__PURE__ */ new Map();
|
|
110
|
+
timer = null;
|
|
111
|
+
cache = /* @__PURE__ */ new Map();
|
|
112
|
+
// caching workflows in range, default to 5min
|
|
113
|
+
cacheCycle = 3e5;
|
|
114
|
+
async reload() {
|
|
115
|
+
const WorkflowRepo = this.workflow.app.db.getRepository("workflows");
|
|
116
|
+
const workflows = await WorkflowRepo.find({
|
|
117
|
+
filter: { enabled: true, type: "schedule", "config.mode": import_utils.SCHEDULE_MODE.DATE_FIELD }
|
|
118
|
+
});
|
|
119
|
+
this.cache = /* @__PURE__ */ new Map();
|
|
120
|
+
this.inspect(workflows);
|
|
121
|
+
}
|
|
122
|
+
inspect(workflows) {
|
|
123
|
+
const now = /* @__PURE__ */ new Date();
|
|
124
|
+
workflows.forEach(async (workflow) => {
|
|
125
|
+
const records = await this.loadRecordsToSchedule(workflow, now);
|
|
126
|
+
records.forEach((record) => {
|
|
127
|
+
const nextTime = this.getRecordNextTime(workflow, record);
|
|
128
|
+
this.schedule(workflow, record, nextTime, Boolean(nextTime));
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
// 1. startsOn in range -> yes
|
|
133
|
+
// 2. startsOn before now, has no repeat -> no
|
|
134
|
+
// 3. startsOn before now, and has repeat:
|
|
135
|
+
// a. repeat out of range -> no
|
|
136
|
+
// b. repeat in range (number or cron):
|
|
137
|
+
// i. endsOn after now -> yes
|
|
138
|
+
// ii. endsOn before now -> no
|
|
139
|
+
async loadRecordsToSchedule({ config: { collection, limit, startsOn, repeat, endsOn }, allExecuted }, currentDate) {
|
|
140
|
+
const { db } = this.workflow.app;
|
|
141
|
+
if (limit && allExecuted >= limit) {
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
if (!startsOn) {
|
|
145
|
+
return [];
|
|
146
|
+
}
|
|
147
|
+
const timestamp = currentDate.getTime();
|
|
148
|
+
const startTimestamp = getOnTimestampWithOffset(startsOn, currentDate);
|
|
149
|
+
if (!startTimestamp) {
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
const range = this.cacheCycle * 2;
|
|
153
|
+
const conditions = [
|
|
154
|
+
{
|
|
155
|
+
[startsOn.field]: {
|
|
156
|
+
// cache next 2 cycles
|
|
157
|
+
[import_database.Op.lt]: new Date(startTimestamp + range)
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
];
|
|
161
|
+
if (repeat) {
|
|
162
|
+
if (typeof repeat === "number") {
|
|
163
|
+
const tsFn = DialectTimestampFnMap[db.options.dialect];
|
|
164
|
+
if (repeat > range && tsFn) {
|
|
165
|
+
const modExp = (0, import_database.fn)(
|
|
166
|
+
"MOD",
|
|
167
|
+
(0, import_database.literal)(`${Math.round(timestamp / 1e3)} - ${tsFn(startsOn.field)}`),
|
|
168
|
+
Math.round(repeat / 1e3)
|
|
169
|
+
);
|
|
170
|
+
conditions.push((0, import_database.where)(modExp, { [import_database.Op.lt]: Math.round(range / 1e3) }));
|
|
171
|
+
}
|
|
172
|
+
} else if (typeof repeat === "string") {
|
|
173
|
+
if (!matchCronNextTime(repeat, currentDate, range)) {
|
|
174
|
+
return [];
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (endsOn) {
|
|
178
|
+
const now = /* @__PURE__ */ new Date();
|
|
179
|
+
const endTimestamp = getOnTimestampWithOffset(endsOn, now);
|
|
180
|
+
if (!endTimestamp) {
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
if (typeof endsOn === "string") {
|
|
184
|
+
if (endTimestamp <= timestamp) {
|
|
185
|
+
return [];
|
|
186
|
+
}
|
|
187
|
+
} else {
|
|
188
|
+
conditions.push({
|
|
189
|
+
[endsOn.field]: {
|
|
190
|
+
[import_database.Op.gte]: new Date(endTimestamp)
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
} else {
|
|
196
|
+
conditions.push({
|
|
197
|
+
[startsOn.field]: {
|
|
198
|
+
[import_database.Op.gte]: new Date(startTimestamp)
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
const { model } = db.getCollection(collection);
|
|
203
|
+
return model.findAll({
|
|
204
|
+
where: {
|
|
205
|
+
[import_database.Op.and]: conditions
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
getRecordNextTime(workflow, record, nextSecond = false) {
|
|
210
|
+
const {
|
|
211
|
+
config: { startsOn, endsOn, repeat, limit },
|
|
212
|
+
allExecuted
|
|
213
|
+
} = workflow;
|
|
214
|
+
if (limit && allExecuted >= limit) {
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
const range = this.cacheCycle;
|
|
218
|
+
const now = /* @__PURE__ */ new Date();
|
|
219
|
+
now.setMilliseconds(nextSecond ? 1e3 : 0);
|
|
220
|
+
const timestamp = now.getTime();
|
|
221
|
+
const startTime = getDataOptionTime(record, startsOn);
|
|
222
|
+
const endTime = getDataOptionTime(record, endsOn);
|
|
223
|
+
let nextTime = null;
|
|
224
|
+
if (!startTime) {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
if (startTime > timestamp + range) {
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
if (startTime >= timestamp) {
|
|
231
|
+
return !endTime || endTime >= startTime && endTime < timestamp + range ? startTime : null;
|
|
232
|
+
} else {
|
|
233
|
+
if (!repeat) {
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (typeof repeat === "number") {
|
|
238
|
+
const nextRepeatTime = (startTime - timestamp) % repeat + repeat;
|
|
239
|
+
if (nextRepeatTime > range) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
if (endTime && endTime < timestamp + nextRepeatTime) {
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
nextTime = timestamp + nextRepeatTime;
|
|
246
|
+
} else if (typeof repeat === "string") {
|
|
247
|
+
nextTime = getCronNextTime(repeat, now);
|
|
248
|
+
if (nextTime - timestamp > range) {
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
if (endTime && endTime < nextTime) {
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (endTime && endTime <= timestamp) {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
return nextTime;
|
|
259
|
+
}
|
|
260
|
+
schedule(workflow, record, nextTime, toggle = true, options = {}) {
|
|
261
|
+
const [dataSourceName, collectionName] = (0, import_data_source.parseCollectionName)(workflow.config.collection);
|
|
262
|
+
const { filterTargetKey } = this.workflow.app.dataSourceManager.dataSources.get(dataSourceName).collectionManager.getCollection(collectionName);
|
|
263
|
+
const recordPk = record.get(filterTargetKey);
|
|
264
|
+
if (toggle) {
|
|
265
|
+
const nextInterval = Math.max(0, nextTime - Date.now());
|
|
266
|
+
const key = `${workflow.id}:${recordPk}@${nextTime}`;
|
|
267
|
+
if (!this.cache.has(key)) {
|
|
268
|
+
if (nextInterval) {
|
|
269
|
+
this.cache.set(key, setTimeout(this.trigger.bind(this, workflow, record, nextTime), nextInterval));
|
|
270
|
+
} else {
|
|
271
|
+
return this.trigger(workflow, record, nextTime, options);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
} else {
|
|
275
|
+
for (const [key, timer] of this.cache.entries()) {
|
|
276
|
+
if (key.startsWith(`${workflow.id}:${recordPk}@`)) {
|
|
277
|
+
clearTimeout(timer);
|
|
278
|
+
this.cache.delete(key);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
async trigger(workflow, record, nextTime, { transaction } = {}) {
|
|
284
|
+
const [dataSourceName, collectionName] = (0, import_data_source.parseCollectionName)(workflow.config.collection);
|
|
285
|
+
const { repository, filterTargetKey } = this.workflow.app.dataSourceManager.dataSources.get(dataSourceName).collectionManager.getCollection(collectionName);
|
|
286
|
+
const recordPk = record.get(filterTargetKey);
|
|
287
|
+
const data = await repository.findOne({
|
|
288
|
+
filterByTk: recordPk,
|
|
289
|
+
appends: workflow.config.appends,
|
|
290
|
+
transaction
|
|
291
|
+
});
|
|
292
|
+
const key = `${workflow.id}:${recordPk}@${nextTime}`;
|
|
293
|
+
this.cache.delete(key);
|
|
294
|
+
this.workflow.trigger(workflow, {
|
|
295
|
+
data: data.toJSON(),
|
|
296
|
+
date: new Date(nextTime)
|
|
297
|
+
});
|
|
298
|
+
if (!workflow.config.repeat || workflow.config.limit && workflow.allExecuted >= workflow.config.limit - 1) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
const n = this.getRecordNextTime(workflow, data, true);
|
|
302
|
+
if (n) {
|
|
303
|
+
this.schedule(workflow, data, n, true);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
on(workflow) {
|
|
307
|
+
this.inspect([workflow]);
|
|
308
|
+
const { collection } = workflow.config;
|
|
309
|
+
const [dataSourceName, collectionName] = (0, import_data_source.parseCollectionName)(collection);
|
|
310
|
+
const event = `${collectionName}.afterSaveWithAssociations`;
|
|
311
|
+
const eventKey = `${collection}.afterSaveWithAssociations`;
|
|
312
|
+
const name = getHookId(workflow, event);
|
|
313
|
+
if (this.events.has(name)) {
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
const listener = async (data, { transaction }) => {
|
|
317
|
+
const nextTime = this.getRecordNextTime(workflow, data);
|
|
318
|
+
return this.schedule(workflow, data, nextTime, Boolean(nextTime), { transaction });
|
|
319
|
+
};
|
|
320
|
+
this.events.set(name, listener);
|
|
321
|
+
this.workflow.app.dataSourceManager.dataSources.get(dataSourceName).collectionManager.db.on(event, listener);
|
|
322
|
+
}
|
|
323
|
+
off(workflow) {
|
|
324
|
+
for (const [key, timer] of this.cache.entries()) {
|
|
325
|
+
if (key.startsWith(`${workflow.id}:`)) {
|
|
326
|
+
clearTimeout(timer);
|
|
327
|
+
this.cache.delete(key);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
const { collection } = workflow.config;
|
|
331
|
+
const [dataSourceName, collectionName] = (0, import_data_source.parseCollectionName)(collection);
|
|
332
|
+
const event = `${collectionName}.afterSaveWithAssociations`;
|
|
333
|
+
const eventKey = `${collection}.afterSaveWithAssociations`;
|
|
334
|
+
const name = getHookId(workflow, event);
|
|
335
|
+
if (this.events.has(eventKey)) {
|
|
336
|
+
const listener = this.events.get(name);
|
|
337
|
+
const { db } = this.workflow.app.dataSourceManager.dataSources.get(dataSourceName).collectionManager;
|
|
338
|
+
db.off(event, listener);
|
|
339
|
+
this.events.delete(eventKey);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type Plugin from '../../Plugin';
|
|
2
|
+
export default class StaticScheduleTrigger {
|
|
3
|
+
workflow: Plugin;
|
|
4
|
+
private timers;
|
|
5
|
+
constructor(workflow: Plugin);
|
|
6
|
+
inspect(workflows: any): void;
|
|
7
|
+
getNextTime({ config, allExecuted }: {
|
|
8
|
+
config: any;
|
|
9
|
+
allExecuted: any;
|
|
10
|
+
}, currentDate: any, nextSecond?: boolean): any;
|
|
11
|
+
schedule(workflow: any, nextTime: any, toggle?: boolean): void;
|
|
12
|
+
trigger(workflow: any, time: any): Promise<void>;
|
|
13
|
+
on(workflow: any): void;
|
|
14
|
+
off(workflow: any): void;
|
|
15
|
+
}
|