n8n-workflow 1.98.0 → 1.99.1
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/dist/{augment-object.d.ts → cjs/augment-object.d.ts} +1 -0
- package/dist/cjs/augment-object.d.ts.map +1 -0
- package/dist/cjs/augment-object.js +159 -0
- package/dist/cjs/augment-object.js.map +1 -0
- package/dist/{constants.d.ts → cjs/constants.d.ts} +12 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +112 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/{cron.d.ts → cjs/cron.d.ts} +1 -0
- package/dist/cjs/cron.d.ts.map +1 -0
- package/dist/cjs/cron.js +37 -0
- package/dist/cjs/cron.js.map +1 -0
- package/dist/{deferred-promise.d.ts → cjs/deferred-promise.d.ts} +1 -0
- package/dist/cjs/deferred-promise.d.ts.map +1 -0
- package/dist/cjs/deferred-promise.js +22 -0
- package/dist/cjs/deferred-promise.js.map +1 -0
- package/dist/{errors → cjs/errors}/abstract/execution-base.error.d.ts +1 -0
- package/dist/cjs/errors/abstract/execution-base.error.d.ts.map +1 -0
- package/dist/cjs/errors/abstract/execution-base.error.js +50 -0
- package/dist/cjs/errors/abstract/execution-base.error.js.map +1 -0
- package/dist/cjs/errors/abstract/node.error.d.ts +48 -0
- package/dist/cjs/errors/abstract/node.error.d.ts.map +1 -0
- package/dist/cjs/errors/abstract/node.error.js +178 -0
- package/dist/cjs/errors/abstract/node.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/application.error.d.ts +6 -2
- package/dist/cjs/errors/application.error.d.ts.map +1 -0
- package/dist/cjs/errors/application.error.js +41 -0
- package/dist/cjs/errors/application.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/base/base.error.d.ts +12 -0
- package/dist/cjs/errors/base/base.error.d.ts.map +1 -0
- package/dist/cjs/errors/base/base.error.js +53 -0
- package/dist/cjs/errors/base/base.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/base/operational.error.d.ts +8 -0
- package/dist/cjs/errors/base/operational.error.d.ts.map +1 -0
- package/dist/cjs/errors/base/operational.error.js +29 -0
- package/dist/cjs/errors/base/operational.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/base/unexpected.error.d.ts +8 -0
- package/dist/cjs/errors/base/unexpected.error.d.ts.map +1 -0
- package/dist/cjs/errors/base/unexpected.error.js +29 -0
- package/dist/cjs/errors/base/unexpected.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/base/user.error.d.ts +8 -0
- package/dist/cjs/errors/base/user.error.d.ts.map +1 -0
- package/dist/cjs/errors/base/user.error.js +29 -0
- package/dist/cjs/errors/base/user.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/cli-subworkflow-operation.error.d.ts +1 -0
- package/dist/cjs/errors/cli-subworkflow-operation.error.d.ts.map +1 -0
- package/dist/cjs/errors/cli-subworkflow-operation.error.js +18 -0
- package/dist/cjs/errors/cli-subworkflow-operation.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/db-connection-timeout-error.d.ts +1 -0
- package/dist/cjs/errors/db-connection-timeout-error.d.ts.map +1 -0
- package/dist/cjs/errors/db-connection-timeout-error.js +23 -0
- package/dist/cjs/errors/db-connection-timeout-error.js.map +1 -0
- package/dist/cjs/errors/ensure-error.d.ts +3 -0
- package/dist/cjs/errors/ensure-error.d.ts.map +1 -0
- package/dist/cjs/errors/ensure-error.js +23 -0
- package/dist/cjs/errors/ensure-error.js.map +1 -0
- package/dist/{errors → cjs/errors}/error.types.d.ts +2 -0
- package/dist/cjs/errors/error.types.d.ts.map +1 -0
- package/dist/cjs/errors/error.types.js +13 -0
- package/dist/{errors → cjs/errors}/error.types.js.map +1 -1
- package/dist/{errors → cjs/errors}/execution-cancelled.error.d.ts +1 -0
- package/dist/cjs/errors/execution-cancelled.error.d.ts.map +1 -0
- package/dist/cjs/errors/execution-cancelled.error.js +24 -0
- package/dist/cjs/errors/execution-cancelled.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/expression-extension.error.d.ts +1 -0
- package/dist/cjs/errors/expression-extension.error.d.ts.map +1 -0
- package/dist/cjs/errors/expression-extension.error.js +18 -0
- package/dist/cjs/errors/expression-extension.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/expression.error.d.ts +4 -0
- package/dist/cjs/errors/expression.error.d.ts.map +1 -0
- package/dist/cjs/errors/expression.error.js +48 -0
- package/dist/cjs/errors/expression.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/index.d.ts +1 -0
- package/dist/cjs/errors/index.d.ts.map +1 -0
- package/dist/cjs/errors/index.js +58 -0
- package/dist/cjs/errors/index.js.map +1 -0
- package/dist/{errors → cjs/errors}/node-api.error.d.ts +8 -0
- package/dist/cjs/errors/node-api.error.d.ts.map +1 -0
- package/dist/cjs/errors/node-api.error.js +257 -0
- package/dist/cjs/errors/node-api.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/node-operation.error.d.ts +4 -0
- package/dist/cjs/errors/node-operation.error.d.ts.map +1 -0
- package/dist/cjs/errors/node-operation.error.js +50 -0
- package/dist/cjs/errors/node-operation.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/node-ssl.error.d.ts +1 -0
- package/dist/cjs/errors/node-ssl.error.d.ts.map +1 -0
- package/dist/cjs/errors/node-ssl.error.js +21 -0
- package/dist/cjs/errors/node-ssl.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/subworkflow-operation.error.d.ts +1 -0
- package/dist/cjs/errors/subworkflow-operation.error.d.ts.map +1 -0
- package/dist/cjs/errors/subworkflow-operation.error.js +30 -0
- package/dist/cjs/errors/subworkflow-operation.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/trigger-close.error.d.ts +1 -0
- package/dist/cjs/errors/trigger-close.error.d.ts.map +1 -0
- package/dist/cjs/errors/trigger-close.error.js +24 -0
- package/dist/cjs/errors/trigger-close.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/webhook-taken.error.d.ts +1 -0
- package/dist/cjs/errors/webhook-taken.error.d.ts.map +1 -0
- package/dist/cjs/errors/webhook-taken.error.js +21 -0
- package/dist/cjs/errors/webhook-taken.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/workflow-activation.error.d.ts +4 -0
- package/dist/cjs/errors/workflow-activation.error.d.ts.map +1 -0
- package/dist/cjs/errors/workflow-activation.error.js +54 -0
- package/dist/cjs/errors/workflow-activation.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/workflow-deactivation.error.d.ts +1 -0
- package/dist/cjs/errors/workflow-deactivation.error.d.ts.map +1 -0
- package/dist/cjs/errors/workflow-deactivation.error.js +18 -0
- package/dist/cjs/errors/workflow-deactivation.error.js.map +1 -0
- package/dist/{errors → cjs/errors}/workflow-operation.error.d.ts +4 -0
- package/dist/cjs/errors/workflow-operation.error.d.ts.map +1 -0
- package/dist/cjs/errors/workflow-operation.error.js +32 -0
- package/dist/cjs/errors/workflow-operation.error.js.map +1 -0
- package/dist/{execution-status.d.ts → cjs/execution-status.d.ts} +1 -0
- package/dist/cjs/execution-status.d.ts.map +1 -0
- package/dist/cjs/execution-status.js +24 -0
- package/dist/cjs/execution-status.js.map +1 -0
- package/dist/{expression-evaluator-proxy.d.ts → cjs/expression-evaluator-proxy.d.ts} +1 -0
- package/dist/cjs/expression-evaluator-proxy.d.ts.map +1 -0
- package/dist/cjs/expression-evaluator-proxy.js +30 -0
- package/dist/cjs/expression-evaluator-proxy.js.map +1 -0
- package/dist/{expression-sandboxing.d.ts → cjs/expression-sandboxing.d.ts} +1 -0
- package/dist/cjs/expression-sandboxing.d.ts.map +1 -0
- package/dist/cjs/expression-sandboxing.js +62 -0
- package/dist/cjs/expression-sandboxing.js.map +1 -0
- package/dist/{expression.d.ts → cjs/expression.d.ts} +33 -0
- package/dist/cjs/expression.d.ts.map +1 -0
- package/dist/cjs/expression.js +368 -0
- package/dist/cjs/expression.js.map +1 -0
- package/dist/cjs/expressions/expression-helpers.d.ts +6 -0
- package/dist/cjs/expressions/expression-helpers.d.ts.map +1 -0
- package/dist/cjs/expressions/expression-helpers.js +24 -0
- package/dist/cjs/expressions/expression-helpers.js.map +1 -0
- package/dist/{extensions → cjs/extensions}/array-extensions.d.ts +1 -0
- package/dist/cjs/extensions/array-extensions.d.ts.map +1 -0
- package/dist/cjs/extensions/array-extensions.js +627 -0
- package/dist/cjs/extensions/array-extensions.js.map +1 -0
- package/dist/{extensions → cjs/extensions}/boolean-extensions.d.ts +1 -0
- package/dist/cjs/extensions/boolean-extensions.d.ts.map +1 -0
- package/dist/cjs/extensions/boolean-extensions.js +49 -0
- package/dist/cjs/extensions/boolean-extensions.js.map +1 -0
- package/dist/{extensions → cjs/extensions}/date-extensions.d.ts +1 -0
- package/dist/cjs/extensions/date-extensions.d.ts.map +1 -0
- package/dist/cjs/extensions/date-extensions.js +528 -0
- package/dist/cjs/extensions/date-extensions.js.map +1 -0
- package/dist/{extensions → cjs/extensions}/expression-extension.d.ts +22 -0
- package/dist/cjs/extensions/expression-extension.d.ts.map +1 -0
- package/dist/cjs/extensions/expression-extension.js +493 -0
- package/dist/cjs/extensions/expression-extension.js.map +1 -0
- package/dist/{extensions → cjs/extensions}/expression-parser.d.ts +1 -0
- package/dist/cjs/extensions/expression-parser.d.ts.map +1 -0
- package/dist/cjs/extensions/expression-parser.js +94 -0
- package/dist/cjs/extensions/expression-parser.js.map +1 -0
- package/dist/{extensions → cjs/extensions}/extended-functions.d.ts +1 -0
- package/dist/cjs/extensions/extended-functions.d.ts.map +1 -0
- package/dist/cjs/extensions/extended-functions.js +89 -0
- package/dist/cjs/extensions/extended-functions.js.map +1 -0
- package/dist/{extensions → cjs/extensions}/extensions.d.ts +1 -0
- package/dist/cjs/extensions/extensions.d.ts.map +1 -0
- package/dist/cjs/extensions/extensions.js +13 -0
- package/dist/cjs/extensions/extensions.js.map +1 -0
- package/dist/{extensions → cjs/extensions}/index.d.ts +1 -0
- package/dist/cjs/extensions/index.d.ts.map +1 -0
- package/dist/cjs/extensions/index.js +21 -0
- package/dist/cjs/extensions/index.js.map +1 -0
- package/dist/{extensions → cjs/extensions}/number-extensions.d.ts +1 -0
- package/dist/cjs/extensions/number-extensions.d.ts.map +1 -0
- package/dist/cjs/extensions/number-extensions.js +236 -0
- package/dist/cjs/extensions/number-extensions.js.map +1 -0
- package/dist/{extensions → cjs/extensions}/object-extensions.d.ts +1 -0
- package/dist/cjs/extensions/object-extensions.d.ts.map +1 -0
- package/dist/cjs/extensions/object-extensions.js +296 -0
- package/dist/cjs/extensions/object-extensions.js.map +1 -0
- package/dist/{extensions → cjs/extensions}/string-extensions.d.ts +1 -0
- package/dist/cjs/extensions/string-extensions.d.ts.map +1 -0
- package/dist/cjs/extensions/string-extensions.js +788 -0
- package/dist/cjs/extensions/string-extensions.js.map +1 -0
- package/dist/{extensions → cjs/extensions}/utils.d.ts +1 -0
- package/dist/cjs/extensions/utils.d.ts.map +1 -0
- package/dist/cjs/extensions/utils.js +42 -0
- package/dist/cjs/extensions/utils.js.map +1 -0
- package/dist/cjs/from-ai-parse-utils.d.ts +44 -0
- package/dist/cjs/from-ai-parse-utils.d.ts.map +1 -0
- package/dist/cjs/from-ai-parse-utils.js +291 -0
- package/dist/cjs/from-ai-parse-utils.js.map +1 -0
- package/dist/{global-state.d.ts → cjs/global-state.d.ts} +1 -0
- package/dist/cjs/global-state.d.ts.map +1 -0
- package/dist/cjs/global-state.js +23 -0
- package/dist/cjs/global-state.js.map +1 -0
- package/dist/{graph → cjs/graph}/graph-utils.d.ts +21 -0
- package/dist/cjs/graph/graph-utils.d.ts.map +1 -0
- package/dist/cjs/graph/graph-utils.js +195 -0
- package/dist/cjs/graph/graph-utils.js.map +1 -0
- package/dist/{index.d.ts → cjs/index.d.ts} +2 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +114 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/{interfaces.d.ts → cjs/interfaces.d.ts} +90 -0
- package/dist/cjs/interfaces.d.ts.map +1 -0
- package/dist/cjs/interfaces.js +53 -0
- package/dist/cjs/interfaces.js.map +1 -0
- package/dist/{logger-proxy.d.ts → cjs/logger-proxy.d.ts} +1 -0
- package/dist/cjs/logger-proxy.d.ts.map +1 -0
- package/dist/cjs/logger-proxy.js +26 -0
- package/dist/cjs/logger-proxy.js.map +1 -0
- package/dist/{message-event-bus.d.ts → cjs/message-event-bus.d.ts} +1 -0
- package/dist/cjs/message-event-bus.d.ts.map +1 -0
- package/dist/cjs/message-event-bus.js +96 -0
- package/dist/cjs/message-event-bus.js.map +1 -0
- package/dist/{metadata-utils.d.ts → cjs/metadata-utils.d.ts} +1 -0
- package/dist/cjs/metadata-utils.d.ts.map +1 -0
- package/dist/cjs/metadata-utils.js +37 -0
- package/dist/cjs/metadata-utils.js.map +1 -0
- package/dist/{native-methods → cjs/native-methods}/array.methods.d.ts +1 -0
- package/dist/cjs/native-methods/array.methods.d.ts.map +1 -0
- package/dist/cjs/native-methods/array.methods.js +552 -0
- package/dist/cjs/native-methods/array.methods.js.map +1 -0
- package/dist/{native-methods → cjs/native-methods}/boolean.methods.d.ts +1 -0
- package/dist/cjs/native-methods/boolean.methods.d.ts.map +1 -0
- package/dist/cjs/native-methods/boolean.methods.js +31 -0
- package/dist/cjs/native-methods/boolean.methods.js.map +1 -0
- package/dist/{native-methods → cjs/native-methods}/index.d.ts +1 -0
- package/dist/cjs/native-methods/index.d.ts.map +1 -0
- package/dist/cjs/native-methods/index.js +27 -0
- package/dist/cjs/native-methods/index.js.map +1 -0
- package/dist/{native-methods → cjs/native-methods}/number.methods.d.ts +1 -0
- package/dist/cjs/native-methods/number.methods.d.ts.map +1 -0
- package/dist/cjs/native-methods/number.methods.js +95 -0
- package/dist/cjs/native-methods/number.methods.js.map +1 -0
- package/dist/{native-methods → cjs/native-methods}/object.methods.d.ts +1 -0
- package/dist/cjs/native-methods/object.methods.d.ts.map +1 -0
- package/dist/cjs/native-methods/object.methods.js +18 -0
- package/dist/cjs/native-methods/object.methods.js.map +1 -0
- package/dist/{native-methods → cjs/native-methods}/string.methods.d.ts +1 -0
- package/dist/cjs/native-methods/string.methods.d.ts.map +1 -0
- package/dist/cjs/native-methods/string.methods.js +499 -0
- package/dist/cjs/native-methods/string.methods.js.map +1 -0
- package/dist/{node-helpers.d.ts → cjs/node-helpers.d.ts} +109 -1
- package/dist/cjs/node-helpers.d.ts.map +1 -0
- package/dist/cjs/node-helpers.js +1369 -0
- package/dist/cjs/node-helpers.js.map +1 -0
- package/dist/{node-parameters → cjs/node-parameters}/filter-parameter.d.ts +1 -0
- package/dist/cjs/node-parameters/filter-parameter.d.ts.map +1 -0
- package/dist/cjs/node-parameters/filter-parameter.js +383 -0
- package/dist/cjs/node-parameters/filter-parameter.js.map +1 -0
- package/dist/{node-parameters → cjs/node-parameters}/rename-node-utils.d.ts +2 -1
- package/dist/cjs/node-parameters/rename-node-utils.d.ts.map +1 -0
- package/dist/cjs/node-parameters/rename-node-utils.js +36 -0
- package/dist/cjs/node-parameters/rename-node-utils.js.map +1 -0
- package/dist/{node-reference-parser-utils.d.ts → cjs/node-reference-parser-utils.d.ts} +11 -0
- package/dist/cjs/node-reference-parser-utils.d.ts.map +1 -0
- package/dist/cjs/node-reference-parser-utils.js +468 -0
- package/dist/cjs/node-reference-parser-utils.js.map +1 -0
- package/dist/{observable-object.d.ts → cjs/observable-object.d.ts} +1 -0
- package/dist/cjs/observable-object.d.ts.map +1 -0
- package/dist/cjs/observable-object.js +72 -0
- package/dist/cjs/observable-object.js.map +1 -0
- package/dist/{result.d.ts → cjs/result.d.ts} +7 -0
- package/dist/cjs/result.d.ts.map +1 -0
- package/dist/cjs/result.js +41 -0
- package/dist/cjs/result.js.map +1 -0
- package/dist/{telemetry-helpers.d.ts → cjs/telemetry-helpers.d.ts} +7 -0
- package/dist/cjs/telemetry-helpers.d.ts.map +1 -0
- package/dist/cjs/telemetry-helpers.js +522 -0
- package/dist/cjs/telemetry-helpers.js.map +1 -0
- package/dist/{type-guards.d.ts → cjs/type-guards.d.ts} +1 -0
- package/dist/cjs/type-guards.d.ts.map +1 -0
- package/dist/cjs/type-guards.js +56 -0
- package/dist/cjs/type-guards.js.map +1 -0
- package/dist/{type-validation.d.ts → cjs/type-validation.d.ts} +1 -0
- package/dist/cjs/type-validation.d.ts.map +1 -0
- package/dist/cjs/type-validation.js +408 -0
- package/dist/cjs/type-validation.js.map +1 -0
- package/dist/cjs/typecheck.tsbuildinfo +1 -0
- package/dist/{utils.d.ts → cjs/utils.d.ts} +31 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +334 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/{versioned-node-type.d.ts → cjs/versioned-node-type.d.ts} +1 -0
- package/dist/cjs/versioned-node-type.d.ts.map +1 -0
- package/dist/cjs/versioned-node-type.js +36 -0
- package/dist/cjs/versioned-node-type.js.map +1 -0
- package/dist/cjs/workflow-data-proxy-env-provider.d.ts +25 -0
- package/dist/cjs/workflow-data-proxy-env-provider.d.ts.map +1 -0
- package/dist/cjs/workflow-data-proxy-env-provider.js +70 -0
- package/dist/cjs/workflow-data-proxy-env-provider.js.map +1 -0
- package/dist/{workflow-data-proxy-helpers.d.ts → cjs/workflow-data-proxy-helpers.d.ts} +1 -0
- package/dist/cjs/workflow-data-proxy-helpers.d.ts.map +1 -0
- package/dist/cjs/workflow-data-proxy-helpers.js +20 -0
- package/dist/cjs/workflow-data-proxy-helpers.js.map +1 -0
- package/dist/{workflow-data-proxy.d.ts → cjs/workflow-data-proxy.d.ts} +45 -0
- package/dist/cjs/workflow-data-proxy.d.ts.map +1 -0
- package/dist/cjs/workflow-data-proxy.js +1189 -0
- package/dist/cjs/workflow-data-proxy.js.map +1 -0
- package/dist/cjs/workflow.d.ts +157 -0
- package/dist/cjs/workflow.d.ts.map +1 -0
- package/dist/cjs/workflow.js +765 -0
- package/dist/cjs/workflow.js.map +1 -0
- package/dist/esm/augment-object.d.ts +3 -0
- package/dist/esm/augment-object.d.ts.map +1 -0
- package/dist/{augment-object.js → esm/augment-object.js} +9 -6
- package/dist/esm/augment-object.js.map +1 -0
- package/dist/esm/constants.d.ts +73 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +99 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/cron.d.ts +35 -0
- package/dist/esm/cron.d.ts.map +1 -0
- package/dist/{cron.js → esm/cron.js} +4 -8
- package/dist/esm/cron.js.map +1 -0
- package/dist/esm/deferred-promise.d.ts +10 -0
- package/dist/esm/deferred-promise.d.ts.map +1 -0
- package/dist/esm/deferred-promise.js +9 -0
- package/dist/esm/deferred-promise.js.map +1 -0
- package/dist/esm/errors/abstract/execution-base.error.d.ts +28 -0
- package/dist/esm/errors/abstract/execution-base.error.d.ts.map +1 -0
- package/dist/{errors → esm/errors}/abstract/execution-base.error.js +9 -8
- package/dist/esm/errors/abstract/execution-base.error.js.map +1 -0
- package/dist/esm/errors/abstract/node.error.d.ts +48 -0
- package/dist/esm/errors/abstract/node.error.d.ts.map +1 -0
- package/dist/{errors → esm/errors}/abstract/node.error.js +52 -12
- package/dist/esm/errors/abstract/node.error.js.map +1 -0
- package/dist/esm/errors/application.error.d.ts +13 -0
- package/dist/esm/errors/application.error.d.ts.map +1 -0
- package/dist/esm/errors/application.error.js +24 -0
- package/dist/esm/errors/application.error.js.map +1 -0
- package/dist/esm/errors/base/base.error.d.ts +26 -0
- package/dist/esm/errors/base/base.error.d.ts.map +1 -0
- package/dist/{errors → esm/errors}/base/base.error.js +20 -10
- package/dist/esm/errors/base/base.error.js.map +1 -0
- package/dist/esm/errors/base/operational.error.d.ts +16 -0
- package/dist/esm/errors/base/operational.error.d.ts.map +1 -0
- package/dist/esm/errors/base/operational.error.js +15 -0
- package/dist/esm/errors/base/operational.error.js.map +1 -0
- package/dist/esm/errors/base/unexpected.error.d.ts +16 -0
- package/dist/esm/errors/base/unexpected.error.d.ts.map +1 -0
- package/dist/esm/errors/base/unexpected.error.js +15 -0
- package/dist/esm/errors/base/unexpected.error.js.map +1 -0
- package/dist/esm/errors/base/user.error.d.ts +18 -0
- package/dist/esm/errors/base/user.error.d.ts.map +1 -0
- package/dist/esm/errors/base/user.error.js +15 -0
- package/dist/esm/errors/base/user.error.js.map +1 -0
- package/dist/esm/errors/cli-subworkflow-operation.error.d.ts +4 -0
- package/dist/esm/errors/cli-subworkflow-operation.error.d.ts.map +1 -0
- package/dist/esm/errors/cli-subworkflow-operation.error.js +4 -0
- package/dist/esm/errors/cli-subworkflow-operation.error.js.map +1 -0
- package/dist/esm/errors/db-connection-timeout-error.d.ts +9 -0
- package/dist/esm/errors/db-connection-timeout-error.d.ts.map +1 -0
- package/dist/{errors → esm/errors}/db-connection-timeout-error.js +2 -6
- package/dist/esm/errors/db-connection-timeout-error.js.map +1 -0
- package/dist/esm/errors/ensure-error.d.ts +3 -0
- package/dist/esm/errors/ensure-error.d.ts.map +1 -0
- package/dist/esm/errors/ensure-error.js +10 -0
- package/dist/esm/errors/ensure-error.js.map +1 -0
- package/dist/esm/errors/error.types.d.ts +12 -0
- package/dist/esm/errors/error.types.d.ts.map +1 -0
- package/dist/esm/errors/error.types.js +2 -0
- package/dist/esm/errors/error.types.js.map +1 -0
- package/dist/esm/errors/execution-cancelled.error.d.ts +5 -0
- package/dist/esm/errors/execution-cancelled.error.d.ts.map +1 -0
- package/dist/esm/errors/execution-cancelled.error.js +10 -0
- package/dist/esm/errors/execution-cancelled.error.js.map +1 -0
- package/dist/esm/errors/expression-extension.error.d.ts +4 -0
- package/dist/esm/errors/expression-extension.error.d.ts.map +1 -0
- package/dist/esm/errors/expression-extension.error.js +4 -0
- package/dist/esm/errors/expression-extension.error.js.map +1 -0
- package/dist/esm/errors/expression.error.d.ts +22 -0
- package/dist/esm/errors/expression.error.d.ts.map +1 -0
- package/dist/{errors → esm/errors}/expression.error.js +5 -6
- package/dist/esm/errors/expression.error.js.map +1 -0
- package/dist/esm/errors/index.d.ts +24 -0
- package/dist/esm/errors/index.d.ts.map +1 -0
- package/dist/esm/errors/index.js +23 -0
- package/dist/esm/errors/index.js.map +1 -0
- package/dist/esm/errors/node-api.error.d.ts +39 -0
- package/dist/esm/errors/node-api.error.d.ts.map +1 -0
- package/dist/{errors → esm/errors}/node-api.error.js +55 -19
- package/dist/esm/errors/node-api.error.js.map +1 -0
- package/dist/esm/errors/node-operation.error.d.ts +11 -0
- package/dist/esm/errors/node-operation.error.d.ts.map +1 -0
- package/dist/{errors → esm/errors}/node-operation.error.js +9 -9
- package/dist/esm/errors/node-operation.error.js.map +1 -0
- package/dist/esm/errors/node-ssl.error.d.ts +5 -0
- package/dist/esm/errors/node-ssl.error.d.ts.map +1 -0
- package/dist/esm/errors/node-ssl.error.js +7 -0
- package/dist/esm/errors/node-ssl.error.js.map +1 -0
- package/dist/esm/errors/subworkflow-operation.error.d.ts +7 -0
- package/dist/esm/errors/subworkflow-operation.error.d.ts.map +1 -0
- package/dist/esm/errors/subworkflow-operation.error.js +16 -0
- package/dist/esm/errors/subworkflow-operation.error.js.map +1 -0
- package/dist/esm/errors/trigger-close.error.d.ts +12 -0
- package/dist/esm/errors/trigger-close.error.d.ts.map +1 -0
- package/dist/esm/errors/trigger-close.error.js +10 -0
- package/dist/esm/errors/trigger-close.error.js.map +1 -0
- package/dist/esm/errors/webhook-taken.error.d.ts +5 -0
- package/dist/esm/errors/webhook-taken.error.d.ts.map +1 -0
- package/dist/esm/errors/webhook-taken.error.js +7 -0
- package/dist/esm/errors/webhook-taken.error.js.map +1 -0
- package/dist/esm/errors/workflow-activation.error.d.ts +20 -0
- package/dist/esm/errors/workflow-activation.error.d.ts.map +1 -0
- package/dist/{errors → esm/errors}/workflow-activation.error.js +12 -11
- package/dist/esm/errors/workflow-activation.error.js.map +1 -0
- package/dist/esm/errors/workflow-deactivation.error.d.ts +4 -0
- package/dist/esm/errors/workflow-deactivation.error.d.ts.map +1 -0
- package/dist/esm/errors/workflow-deactivation.error.js +4 -0
- package/dist/esm/errors/workflow-deactivation.error.js.map +1 -0
- package/dist/esm/errors/workflow-operation.error.d.ts +11 -0
- package/dist/esm/errors/workflow-operation.error.d.ts.map +1 -0
- package/dist/esm/errors/workflow-operation.error.js +18 -0
- package/dist/esm/errors/workflow-operation.error.js.map +1 -0
- package/dist/esm/execution-status.d.ts +3 -0
- package/dist/esm/execution-status.d.ts.map +1 -0
- package/dist/esm/execution-status.js +11 -0
- package/dist/esm/execution-status.js.map +1 -0
- package/dist/esm/expression-evaluator-proxy.d.ts +6 -0
- package/dist/esm/expression-evaluator-proxy.d.ts.map +1 -0
- package/dist/esm/expression-evaluator-proxy.js +15 -0
- package/dist/esm/expression-evaluator-proxy.js.map +1 -0
- package/dist/esm/expression-sandboxing.d.ts +5 -0
- package/dist/esm/expression-sandboxing.d.ts.map +1 -0
- package/dist/esm/expression-sandboxing.js +47 -0
- package/dist/esm/expression-sandboxing.js.map +1 -0
- package/dist/esm/expression.d.ts +46 -0
- package/dist/esm/expression.d.ts.map +1 -0
- package/dist/{expression.js → esm/expression.js} +125 -44
- package/dist/esm/expression.js.map +1 -0
- package/dist/esm/expressions/expression-helpers.d.ts +6 -0
- package/dist/esm/expressions/expression-helpers.d.ts.map +1 -0
- package/dist/esm/expressions/expression-helpers.js +10 -0
- package/dist/esm/expressions/expression-helpers.js.map +1 -0
- package/dist/esm/extensions/array-extensions.d.ts +33 -0
- package/dist/esm/extensions/array-extensions.d.ts.map +1 -0
- package/dist/{extensions → esm/extensions}/array-extensions.js +41 -42
- package/dist/esm/extensions/array-extensions.js.map +1 -0
- package/dist/esm/extensions/boolean-extensions.d.ts +6 -0
- package/dist/esm/extensions/boolean-extensions.d.ts.map +1 -0
- package/dist/{extensions → esm/extensions}/boolean-extensions.js +4 -10
- package/dist/esm/extensions/boolean-extensions.js.map +1 -0
- package/dist/esm/extensions/date-extensions.d.ts +3 -0
- package/dist/esm/extensions/date-extensions.d.ts.map +1 -0
- package/dist/{extensions → esm/extensions}/date-extensions.js +27 -29
- package/dist/esm/extensions/date-extensions.js.map +1 -0
- package/dist/esm/extensions/expression-extension.d.ts +32 -0
- package/dist/esm/extensions/expression-extension.d.ts.map +1 -0
- package/dist/esm/extensions/expression-extension.js +474 -0
- package/dist/esm/extensions/expression-extension.js.map +1 -0
- package/dist/esm/extensions/expression-parser.d.ts +14 -0
- package/dist/esm/extensions/expression-parser.d.ts.map +1 -0
- package/dist/{extensions → esm/extensions}/expression-parser.js +9 -11
- package/dist/esm/extensions/expression-parser.js.map +1 -0
- package/dist/esm/extensions/extended-functions.d.ts +28 -0
- package/dist/esm/extensions/extended-functions.d.ts.map +1 -0
- package/dist/{extensions → esm/extensions}/extended-functions.js +8 -10
- package/dist/esm/extensions/extended-functions.js.map +1 -0
- package/dist/esm/extensions/extensions.d.ts +42 -0
- package/dist/esm/extensions/extensions.d.ts.map +1 -0
- package/dist/esm/extensions/extensions.js +2 -0
- package/dist/esm/extensions/extensions.js.map +1 -0
- package/dist/esm/extensions/index.d.ts +3 -0
- package/dist/esm/extensions/index.d.ts.map +1 -0
- package/dist/esm/extensions/index.js +2 -0
- package/dist/esm/extensions/index.js.map +1 -0
- package/dist/esm/extensions/number-extensions.d.ts +27 -0
- package/dist/esm/extensions/number-extensions.d.ts.map +1 -0
- package/dist/{extensions → esm/extensions}/number-extensions.js +14 -15
- package/dist/esm/extensions/number-extensions.js.map +1 -0
- package/dist/esm/extensions/object-extensions.d.ts +46 -0
- package/dist/esm/extensions/object-extensions.d.ts.map +1 -0
- package/dist/{extensions → esm/extensions}/object-extensions.js +18 -21
- package/dist/esm/extensions/object-extensions.js.map +1 -0
- package/dist/esm/extensions/string-extensions.d.ts +38 -0
- package/dist/esm/extensions/string-extensions.d.ts.map +1 -0
- package/dist/{extensions → esm/extensions}/string-extensions.js +121 -40
- package/dist/esm/extensions/string-extensions.js.map +1 -0
- package/dist/esm/extensions/utils.d.ts +4 -0
- package/dist/esm/extensions/utils.d.ts.map +1 -0
- package/dist/esm/extensions/utils.js +27 -0
- package/dist/esm/extensions/utils.js.map +1 -0
- package/dist/esm/from-ai-parse-utils.d.ts +44 -0
- package/dist/esm/from-ai-parse-utils.d.ts.map +1 -0
- package/dist/{from-ai-parse-utils.js → esm/from-ai-parse-utils.js} +63 -18
- package/dist/esm/from-ai-parse-utils.js.map +1 -0
- package/dist/esm/global-state.d.ts +6 -0
- package/dist/esm/global-state.d.ts.map +1 -0
- package/dist/esm/global-state.js +9 -0
- package/dist/esm/global-state.js.map +1 -0
- package/dist/esm/graph/graph-utils.d.ts +57 -0
- package/dist/esm/graph/graph-utils.d.ts.map +1 -0
- package/dist/{graph → esm/graph}/graph-utils.js +35 -16
- package/dist/esm/graph/graph-utils.js.map +1 -0
- package/dist/esm/index.d.ts +49 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +33 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces.d.ts +2173 -0
- package/dist/esm/interfaces.d.ts.map +1 -0
- package/dist/{interfaces.js → esm/interfaces.js} +13 -11
- package/dist/esm/interfaces.js.map +1 -0
- package/dist/esm/logger-proxy.d.ts +7 -0
- package/dist/esm/logger-proxy.d.ts.map +1 -0
- package/dist/esm/logger-proxy.js +12 -0
- package/dist/esm/logger-proxy.js.map +1 -0
- package/dist/esm/message-event-bus.d.ts +107 -0
- package/dist/esm/message-event-bus.d.ts.map +1 -0
- package/dist/{message-event-bus.js → esm/message-event-bus.js} +26 -23
- package/dist/esm/message-event-bus.js.map +1 -0
- package/dist/esm/metadata-utils.d.ts +5 -0
- package/dist/esm/metadata-utils.d.ts.map +1 -0
- package/dist/{metadata-utils.js → esm/metadata-utils.js} +6 -7
- package/dist/esm/metadata-utils.js.map +1 -0
- package/dist/esm/native-methods/array.methods.d.ts +3 -0
- package/dist/esm/native-methods/array.methods.d.ts.map +1 -0
- package/dist/{native-methods → esm/native-methods}/array.methods.js +1 -4
- package/dist/esm/native-methods/array.methods.js.map +1 -0
- package/dist/esm/native-methods/boolean.methods.d.ts +3 -0
- package/dist/esm/native-methods/boolean.methods.d.ts.map +1 -0
- package/dist/{native-methods → esm/native-methods}/boolean.methods.js +1 -4
- package/dist/esm/native-methods/boolean.methods.js.map +1 -0
- package/dist/esm/native-methods/index.d.ts +4 -0
- package/dist/esm/native-methods/index.d.ts.map +1 -0
- package/dist/esm/native-methods/index.js +14 -0
- package/dist/esm/native-methods/index.js.map +1 -0
- package/dist/esm/native-methods/number.methods.d.ts +3 -0
- package/dist/esm/native-methods/number.methods.d.ts.map +1 -0
- package/dist/{native-methods → esm/native-methods}/number.methods.js +1 -4
- package/dist/esm/native-methods/number.methods.js.map +1 -0
- package/dist/esm/native-methods/object.methods.d.ts +3 -0
- package/dist/esm/native-methods/object.methods.d.ts.map +1 -0
- package/dist/esm/native-methods/object.methods.js +5 -0
- package/dist/esm/native-methods/object.methods.js.map +1 -0
- package/dist/esm/native-methods/string.methods.d.ts +3 -0
- package/dist/esm/native-methods/string.methods.d.ts.map +1 -0
- package/dist/{native-methods → esm/native-methods}/string.methods.js +1 -4
- package/dist/esm/native-methods/string.methods.js.map +1 -0
- package/dist/esm/node-helpers.d.ts +145 -0
- package/dist/esm/node-helpers.d.ts.map +1 -0
- package/dist/{node-helpers.js → esm/node-helpers.js} +302 -106
- package/dist/esm/node-helpers.js.map +1 -0
- package/dist/esm/node-parameters/filter-parameter.d.ts +21 -0
- package/dist/esm/node-parameters/filter-parameter.d.ts.map +1 -0
- package/dist/{node-parameters → esm/node-parameters}/filter-parameter.js +13 -51
- package/dist/esm/node-parameters/filter-parameter.js.map +1 -0
- package/dist/esm/node-parameters/rename-node-utils.d.ts +3 -0
- package/dist/esm/node-parameters/rename-node-utils.d.ts.map +1 -0
- package/dist/{node-parameters → esm/node-parameters}/rename-node-utils.js +4 -5
- package/dist/esm/node-parameters/rename-node-utils.js.map +1 -0
- package/dist/esm/node-reference-parser-utils.d.ts +20 -0
- package/dist/esm/node-reference-parser-utils.d.ts.map +1 -0
- package/dist/{node-reference-parser-utils.js → esm/node-reference-parser-utils.js} +135 -46
- package/dist/esm/node-reference-parser-utils.js.map +1 -0
- package/dist/esm/observable-object.d.ts +7 -0
- package/dist/esm/observable-object.d.ts.map +1 -0
- package/dist/{observable-object.js → esm/observable-object.js} +13 -5
- package/dist/esm/observable-object.js.map +1 -0
- package/dist/esm/result.d.ts +19 -0
- package/dist/esm/result.d.ts.map +1 -0
- package/dist/esm/result.js +25 -0
- package/dist/esm/result.js.map +1 -0
- package/dist/esm/telemetry-helpers.d.ts +45 -0
- package/dist/esm/telemetry-helpers.d.ts.map +1 -0
- package/dist/{telemetry-helpers.js → esm/telemetry-helpers.js} +67 -62
- package/dist/esm/telemetry-helpers.js.map +1 -0
- package/dist/esm/type-guards.d.ts +12 -0
- package/dist/esm/type-guards.d.ts.map +1 -0
- package/dist/esm/type-guards.js +33 -0
- package/dist/esm/type-guards.js.map +1 -0
- package/dist/esm/type-validation.d.ts +22 -0
- package/dist/esm/type-validation.d.ts.map +1 -0
- package/dist/{type-validation.js → esm/type-validation.js} +66 -78
- package/dist/esm/type-validation.js.map +1 -0
- package/dist/esm/typecheck.tsbuildinfo +1 -0
- package/dist/esm/utils.d.ts +94 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +300 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/versioned-node-type.d.ts +10 -0
- package/dist/esm/versioned-node-type.d.ts.map +1 -0
- package/dist/{versioned-node-type.js → esm/versioned-node-type.js} +4 -5
- package/dist/esm/versioned-node-type.js.map +1 -0
- package/dist/esm/workflow-data-proxy-env-provider.d.ts +25 -0
- package/dist/esm/workflow-data-proxy-env-provider.d.ts.map +1 -0
- package/dist/{workflow-data-proxy-env-provider.js → esm/workflow-data-proxy-env-provider.js} +22 -9
- package/dist/esm/workflow-data-proxy-env-provider.js.map +1 -0
- package/dist/esm/workflow-data-proxy-helpers.d.ts +3 -0
- package/dist/esm/workflow-data-proxy-helpers.d.ts.map +1 -0
- package/dist/esm/workflow-data-proxy-helpers.js +7 -0
- package/dist/esm/workflow-data-proxy-helpers.js.map +1 -0
- package/dist/esm/workflow-data-proxy.d.ts +80 -0
- package/dist/esm/workflow-data-proxy.d.ts.map +1 -0
- package/dist/{workflow-data-proxy.js → esm/workflow-data-proxy.js} +174 -109
- package/dist/esm/workflow-data-proxy.js.map +1 -0
- package/dist/esm/workflow.d.ts +157 -0
- package/dist/esm/workflow.d.ts.map +1 -0
- package/dist/{workflow.js → esm/workflow.js} +223 -73
- package/dist/esm/workflow.js.map +1 -0
- package/package.json +20 -16
- package/dist/augment-object.js.map +0 -1
- package/dist/build.tsbuildinfo +0 -1
- package/dist/constants.js +0 -89
- package/dist/constants.js.map +0 -1
- package/dist/cron.js.map +0 -1
- package/dist/deferred-promise.js +0 -12
- package/dist/deferred-promise.js.map +0 -1
- package/dist/errors/abstract/execution-base.error.js.map +0 -1
- package/dist/errors/abstract/node.error.d.ts +0 -12
- package/dist/errors/abstract/node.error.js.map +0 -1
- package/dist/errors/application.error.js +0 -24
- package/dist/errors/application.error.js.map +0 -1
- package/dist/errors/base/base.error.js.map +0 -1
- package/dist/errors/base/operational.error.js +0 -12
- package/dist/errors/base/operational.error.js.map +0 -1
- package/dist/errors/base/unexpected.error.js +0 -12
- package/dist/errors/base/unexpected.error.js.map +0 -1
- package/dist/errors/base/user.error.js +0 -12
- package/dist/errors/base/user.error.js.map +0 -1
- package/dist/errors/cli-subworkflow-operation.error.js +0 -8
- package/dist/errors/cli-subworkflow-operation.error.js.map +0 -1
- package/dist/errors/db-connection-timeout-error.js.map +0 -1
- package/dist/errors/ensure-error.d.ts +0 -1
- package/dist/errors/ensure-error.js +0 -11
- package/dist/errors/ensure-error.js.map +0 -1
- package/dist/errors/error.types.js +0 -3
- package/dist/errors/execution-cancelled.error.js +0 -14
- package/dist/errors/execution-cancelled.error.js.map +0 -1
- package/dist/errors/expression-extension.error.js +0 -8
- package/dist/errors/expression-extension.error.js.map +0 -1
- package/dist/errors/expression.error.js.map +0 -1
- package/dist/errors/index.js +0 -48
- package/dist/errors/index.js.map +0 -1
- package/dist/errors/node-api.error.js.map +0 -1
- package/dist/errors/node-operation.error.js.map +0 -1
- package/dist/errors/node-ssl.error.js +0 -11
- package/dist/errors/node-ssl.error.js.map +0 -1
- package/dist/errors/subworkflow-operation.error.js +0 -19
- package/dist/errors/subworkflow-operation.error.js.map +0 -1
- package/dist/errors/trigger-close.error.js +0 -13
- package/dist/errors/trigger-close.error.js.map +0 -1
- package/dist/errors/webhook-taken.error.js +0 -11
- package/dist/errors/webhook-taken.error.js.map +0 -1
- package/dist/errors/workflow-activation.error.js.map +0 -1
- package/dist/errors/workflow-deactivation.error.js +0 -8
- package/dist/errors/workflow-deactivation.error.js.map +0 -1
- package/dist/errors/workflow-operation.error.js +0 -17
- package/dist/errors/workflow-operation.error.js.map +0 -1
- package/dist/execution-status.js +0 -14
- package/dist/execution-status.js.map +0 -1
- package/dist/expression-evaluator-proxy.js +0 -20
- package/dist/expression-evaluator-proxy.js.map +0 -1
- package/dist/expression-sandboxing.js +0 -43
- package/dist/expression-sandboxing.js.map +0 -1
- package/dist/expression.js.map +0 -1
- package/dist/extensions/array-extensions.js.map +0 -1
- package/dist/extensions/boolean-extensions.js.map +0 -1
- package/dist/extensions/date-extensions.js.map +0 -1
- package/dist/extensions/expression-extension.js +0 -362
- package/dist/extensions/expression-extension.js.map +0 -1
- package/dist/extensions/expression-parser.js.map +0 -1
- package/dist/extensions/extended-functions.js.map +0 -1
- package/dist/extensions/extensions.js +0 -3
- package/dist/extensions/extensions.js.map +0 -1
- package/dist/extensions/index.js +0 -11
- package/dist/extensions/index.js.map +0 -1
- package/dist/extensions/number-extensions.js.map +0 -1
- package/dist/extensions/object-extensions.js.map +0 -1
- package/dist/extensions/string-extensions.js.map +0 -1
- package/dist/extensions/utils.js +0 -31
- package/dist/extensions/utils.js.map +0 -1
- package/dist/from-ai-parse-utils.d.ts +0 -12
- package/dist/from-ai-parse-utils.js.map +0 -1
- package/dist/global-state.js +0 -13
- package/dist/global-state.js.map +0 -1
- package/dist/graph/graph-utils.js.map +0 -1
- package/dist/index.js +0 -103
- package/dist/index.js.map +0 -1
- package/dist/interfaces.js.map +0 -1
- package/dist/logger-proxy.js +0 -16
- package/dist/logger-proxy.js.map +0 -1
- package/dist/message-event-bus.js.map +0 -1
- package/dist/metadata-utils.js.map +0 -1
- package/dist/native-methods/array.methods.js.map +0 -1
- package/dist/native-methods/boolean.methods.js.map +0 -1
- package/dist/native-methods/index.js +0 -17
- package/dist/native-methods/index.js.map +0 -1
- package/dist/native-methods/number.methods.js.map +0 -1
- package/dist/native-methods/object.methods.js +0 -8
- package/dist/native-methods/object.methods.js.map +0 -1
- package/dist/native-methods/string.methods.js.map +0 -1
- package/dist/node-helpers.js.map +0 -1
- package/dist/node-parameters/filter-parameter.js.map +0 -1
- package/dist/node-parameters/rename-node-utils.js.map +0 -1
- package/dist/node-reference-parser-utils.js.map +0 -1
- package/dist/observable-object.js.map +0 -1
- package/dist/result.js +0 -25
- package/dist/result.js.map +0 -1
- package/dist/telemetry-helpers.js.map +0 -1
- package/dist/type-guards.js +0 -46
- package/dist/type-guards.js.map +0 -1
- package/dist/type-validation.js.map +0 -1
- package/dist/utils.js +0 -259
- package/dist/utils.js.map +0 -1
- package/dist/versioned-node-type.js.map +0 -1
- package/dist/workflow-data-proxy-env-provider.d.ts +0 -7
- package/dist/workflow-data-proxy-env-provider.js.map +0 -1
- package/dist/workflow-data-proxy-helpers.js +0 -10
- package/dist/workflow-data-proxy-helpers.js.map +0 -1
- package/dist/workflow-data-proxy.js.map +0 -1
- package/dist/workflow.d.ts +0 -54
- package/dist/workflow.js.map +0 -1
|
@@ -0,0 +1,1369 @@
|
|
|
1
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
2
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
3
|
+
};
|
|
4
|
+
(function (factory) {
|
|
5
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
6
|
+
var v = factory(require, exports);
|
|
7
|
+
if (v !== undefined) module.exports = v;
|
|
8
|
+
}
|
|
9
|
+
else if (typeof define === "function" && define.amd) {
|
|
10
|
+
define(["require", "exports", "lodash/get", "lodash/isEqual", "./constants", "./errors/application.error", "./interfaces", "./node-parameters/filter-parameter", "./type-guards", "./type-validation", "./utils"], factory);
|
|
11
|
+
}
|
|
12
|
+
})(function (require, exports) {
|
|
13
|
+
"use strict";
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.getUpdatedToolDescription = exports.cronNodeOptions = void 0;
|
|
16
|
+
exports.isSubNodeType = isSubNodeType;
|
|
17
|
+
exports.displayParameter = displayParameter;
|
|
18
|
+
exports.displayParameterPath = displayParameterPath;
|
|
19
|
+
exports.getContext = getContext;
|
|
20
|
+
exports.getNodeParameters = getNodeParameters;
|
|
21
|
+
exports.getNodeWebhookPath = getNodeWebhookPath;
|
|
22
|
+
exports.getNodeWebhookUrl = getNodeWebhookUrl;
|
|
23
|
+
exports.getConnectionTypes = getConnectionTypes;
|
|
24
|
+
exports.getNodeInputs = getNodeInputs;
|
|
25
|
+
exports.getNodeOutputs = getNodeOutputs;
|
|
26
|
+
exports.getNodeParametersIssues = getNodeParametersIssues;
|
|
27
|
+
exports.getParameterValueByPath = getParameterValueByPath;
|
|
28
|
+
exports.getParameterIssues = getParameterIssues;
|
|
29
|
+
exports.mergeIssues = mergeIssues;
|
|
30
|
+
exports.mergeNodeProperties = mergeNodeProperties;
|
|
31
|
+
exports.getVersionedNodeType = getVersionedNodeType;
|
|
32
|
+
exports.isTriggerNode = isTriggerNode;
|
|
33
|
+
exports.isExecutable = isExecutable;
|
|
34
|
+
exports.isNodeWithWorkflowSelector = isNodeWithWorkflowSelector;
|
|
35
|
+
exports.makeDescription = makeDescription;
|
|
36
|
+
exports.isTool = isTool;
|
|
37
|
+
exports.makeNodeName = makeNodeName;
|
|
38
|
+
exports.isDefaultNodeName = isDefaultNodeName;
|
|
39
|
+
exports.getToolDescriptionForNode = getToolDescriptionForNode;
|
|
40
|
+
exports.getSubworkflowId = getSubworkflowId;
|
|
41
|
+
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
42
|
+
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
43
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
44
|
+
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
|
|
45
|
+
/* eslint-disable prefer-spread */
|
|
46
|
+
const get_1 = __importDefault(require("lodash/get"));
|
|
47
|
+
const isEqual_1 = __importDefault(require("lodash/isEqual"));
|
|
48
|
+
const constants_1 = require("./constants");
|
|
49
|
+
const application_error_1 = require("./errors/application.error");
|
|
50
|
+
const interfaces_1 = require("./interfaces");
|
|
51
|
+
const filter_parameter_1 = require("./node-parameters/filter-parameter");
|
|
52
|
+
const type_guards_1 = require("./type-guards");
|
|
53
|
+
const type_validation_1 = require("./type-validation");
|
|
54
|
+
const utils_1 = require("./utils");
|
|
55
|
+
exports.cronNodeOptions = [
|
|
56
|
+
{
|
|
57
|
+
name: 'item',
|
|
58
|
+
displayName: 'Item',
|
|
59
|
+
values: [
|
|
60
|
+
{
|
|
61
|
+
displayName: 'Mode',
|
|
62
|
+
name: 'mode',
|
|
63
|
+
type: 'options',
|
|
64
|
+
options: [
|
|
65
|
+
{
|
|
66
|
+
name: 'Every Minute',
|
|
67
|
+
value: 'everyMinute',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Every Hour',
|
|
71
|
+
value: 'everyHour',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'Every Day',
|
|
75
|
+
value: 'everyDay',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: 'Every Week',
|
|
79
|
+
value: 'everyWeek',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'Every Month',
|
|
83
|
+
value: 'everyMonth',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'Every X',
|
|
87
|
+
value: 'everyX',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'Custom',
|
|
91
|
+
value: 'custom',
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
default: 'everyDay',
|
|
95
|
+
description: 'How often to trigger.',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
displayName: 'Hour',
|
|
99
|
+
name: 'hour',
|
|
100
|
+
type: 'number',
|
|
101
|
+
typeOptions: {
|
|
102
|
+
minValue: 0,
|
|
103
|
+
maxValue: 23,
|
|
104
|
+
},
|
|
105
|
+
displayOptions: {
|
|
106
|
+
hide: {
|
|
107
|
+
mode: ['custom', 'everyHour', 'everyMinute', 'everyX'],
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
default: 14,
|
|
111
|
+
description: 'The hour of the day to trigger (24h format)',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
displayName: 'Minute',
|
|
115
|
+
name: 'minute',
|
|
116
|
+
type: 'number',
|
|
117
|
+
typeOptions: {
|
|
118
|
+
minValue: 0,
|
|
119
|
+
maxValue: 59,
|
|
120
|
+
},
|
|
121
|
+
displayOptions: {
|
|
122
|
+
hide: {
|
|
123
|
+
mode: ['custom', 'everyMinute', 'everyX'],
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
default: 0,
|
|
127
|
+
description: 'The minute of the day to trigger',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
displayName: 'Day of Month',
|
|
131
|
+
name: 'dayOfMonth',
|
|
132
|
+
type: 'number',
|
|
133
|
+
displayOptions: {
|
|
134
|
+
show: {
|
|
135
|
+
mode: ['everyMonth'],
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
typeOptions: {
|
|
139
|
+
minValue: 1,
|
|
140
|
+
maxValue: 31,
|
|
141
|
+
},
|
|
142
|
+
default: 1,
|
|
143
|
+
description: 'The day of the month to trigger',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
displayName: 'Weekday',
|
|
147
|
+
name: 'weekday',
|
|
148
|
+
type: 'options',
|
|
149
|
+
displayOptions: {
|
|
150
|
+
show: {
|
|
151
|
+
mode: ['everyWeek'],
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
options: [
|
|
155
|
+
{
|
|
156
|
+
name: 'Monday',
|
|
157
|
+
value: '1',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
name: 'Tuesday',
|
|
161
|
+
value: '2',
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
name: 'Wednesday',
|
|
165
|
+
value: '3',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
name: 'Thursday',
|
|
169
|
+
value: '4',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
name: 'Friday',
|
|
173
|
+
value: '5',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: 'Saturday',
|
|
177
|
+
value: '6',
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
name: 'Sunday',
|
|
181
|
+
value: '0',
|
|
182
|
+
},
|
|
183
|
+
],
|
|
184
|
+
default: '1',
|
|
185
|
+
description: 'The weekday to trigger',
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
displayName: 'Cron Expression',
|
|
189
|
+
name: 'cronExpression',
|
|
190
|
+
type: 'string',
|
|
191
|
+
displayOptions: {
|
|
192
|
+
show: {
|
|
193
|
+
mode: ['custom'],
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
default: '* * * * * *',
|
|
197
|
+
description: 'Use custom cron expression. Values and ranges as follows:<ul><li>Seconds: 0-59</li><li>Minutes: 0 - 59</li><li>Hours: 0 - 23</li><li>Day of Month: 1 - 31</li><li>Months: 0 - 11 (Jan - Dec)</li><li>Day of Week: 0 - 6 (Sun - Sat)</li></ul>',
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
displayName: 'Value',
|
|
201
|
+
name: 'value',
|
|
202
|
+
type: 'number',
|
|
203
|
+
typeOptions: {
|
|
204
|
+
minValue: 0,
|
|
205
|
+
maxValue: 1000,
|
|
206
|
+
},
|
|
207
|
+
displayOptions: {
|
|
208
|
+
show: {
|
|
209
|
+
mode: ['everyX'],
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
default: 2,
|
|
213
|
+
description: 'All how many X minutes/hours it should trigger',
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
displayName: 'Unit',
|
|
217
|
+
name: 'unit',
|
|
218
|
+
type: 'options',
|
|
219
|
+
displayOptions: {
|
|
220
|
+
show: {
|
|
221
|
+
mode: ['everyX'],
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
options: [
|
|
225
|
+
{
|
|
226
|
+
name: 'Minutes',
|
|
227
|
+
value: 'minutes',
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: 'Hours',
|
|
231
|
+
value: 'hours',
|
|
232
|
+
},
|
|
233
|
+
],
|
|
234
|
+
default: 'hours',
|
|
235
|
+
description: 'If it should trigger all X minutes or hours',
|
|
236
|
+
},
|
|
237
|
+
],
|
|
238
|
+
},
|
|
239
|
+
];
|
|
240
|
+
/**
|
|
241
|
+
* Determines if the provided node type has any output types other than the main connection type.
|
|
242
|
+
* @param typeDescription The node's type description to check.
|
|
243
|
+
*/
|
|
244
|
+
function isSubNodeType(typeDescription) {
|
|
245
|
+
if (!typeDescription?.outputs || typeof typeDescription.outputs === 'string') {
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
const outputTypes = getConnectionTypes(typeDescription.outputs);
|
|
249
|
+
return outputTypes
|
|
250
|
+
? outputTypes.filter((output) => output !== interfaces_1.NodeConnectionTypes.Main).length > 0
|
|
251
|
+
: false;
|
|
252
|
+
}
|
|
253
|
+
const getPropertyValues = (nodeValues, propertyName, node, nodeTypeDescription, nodeValuesRoot) => {
|
|
254
|
+
let value;
|
|
255
|
+
if (propertyName.charAt(0) === '/') {
|
|
256
|
+
// Get the value from the root of the node
|
|
257
|
+
value = (0, get_1.default)(nodeValuesRoot, propertyName.slice(1));
|
|
258
|
+
}
|
|
259
|
+
else if (propertyName === '@version') {
|
|
260
|
+
value = node?.typeVersion || 0;
|
|
261
|
+
}
|
|
262
|
+
else if (propertyName === '@tool') {
|
|
263
|
+
value = nodeTypeDescription?.name.endsWith('Tool') ?? false;
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
// Get the value from current level
|
|
267
|
+
value = (0, get_1.default)(nodeValues, propertyName);
|
|
268
|
+
}
|
|
269
|
+
if (value && typeof value === 'object' && '__rl' in value && value.__rl) {
|
|
270
|
+
value = value.value;
|
|
271
|
+
}
|
|
272
|
+
if (!Array.isArray(value)) {
|
|
273
|
+
return [value];
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
return value;
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
const checkConditions = (conditions, actualValues) => {
|
|
280
|
+
return conditions.some((condition) => {
|
|
281
|
+
if (condition &&
|
|
282
|
+
typeof condition === 'object' &&
|
|
283
|
+
condition._cnd &&
|
|
284
|
+
Object.keys(condition).length === 1) {
|
|
285
|
+
const [key, targetValue] = Object.entries(condition._cnd)[0];
|
|
286
|
+
return actualValues.every((propertyValue) => {
|
|
287
|
+
if (key === 'eq') {
|
|
288
|
+
return (0, isEqual_1.default)(propertyValue, targetValue);
|
|
289
|
+
}
|
|
290
|
+
if (key === 'not') {
|
|
291
|
+
return !(0, isEqual_1.default)(propertyValue, targetValue);
|
|
292
|
+
}
|
|
293
|
+
if (key === 'gte') {
|
|
294
|
+
return propertyValue >= targetValue;
|
|
295
|
+
}
|
|
296
|
+
if (key === 'lte') {
|
|
297
|
+
return propertyValue <= targetValue;
|
|
298
|
+
}
|
|
299
|
+
if (key === 'gt') {
|
|
300
|
+
return propertyValue > targetValue;
|
|
301
|
+
}
|
|
302
|
+
if (key === 'lt') {
|
|
303
|
+
return propertyValue < targetValue;
|
|
304
|
+
}
|
|
305
|
+
if (key === 'between') {
|
|
306
|
+
const { from, to } = targetValue;
|
|
307
|
+
return propertyValue >= from && propertyValue <= to;
|
|
308
|
+
}
|
|
309
|
+
if (key === 'includes') {
|
|
310
|
+
return propertyValue.includes(targetValue);
|
|
311
|
+
}
|
|
312
|
+
if (key === 'startsWith') {
|
|
313
|
+
return propertyValue.startsWith(targetValue);
|
|
314
|
+
}
|
|
315
|
+
if (key === 'endsWith') {
|
|
316
|
+
return propertyValue.endsWith(targetValue);
|
|
317
|
+
}
|
|
318
|
+
if (key === 'regex') {
|
|
319
|
+
return new RegExp(targetValue).test(propertyValue);
|
|
320
|
+
}
|
|
321
|
+
if (key === 'exists') {
|
|
322
|
+
return propertyValue !== null && propertyValue !== undefined && propertyValue !== '';
|
|
323
|
+
}
|
|
324
|
+
return false;
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
return actualValues.includes(condition);
|
|
328
|
+
});
|
|
329
|
+
};
|
|
330
|
+
/**
|
|
331
|
+
* Returns if the parameter should be displayed or not
|
|
332
|
+
*
|
|
333
|
+
* @param {INodeParameters} nodeValues The data on the node which decides if the parameter
|
|
334
|
+
* should be displayed
|
|
335
|
+
* @param {(INodeProperties | INodeCredentialDescription)} parameter The parameter to check if it should be displayed
|
|
336
|
+
* @param {INodeParameters} [nodeValuesRoot] The root node-parameter-data
|
|
337
|
+
*/
|
|
338
|
+
function displayParameter(nodeValues, parameter, node, // Allow null as it does also get used by credentials and they do not have versioning yet
|
|
339
|
+
nodeTypeDescription, nodeValuesRoot, displayKey = 'displayOptions') {
|
|
340
|
+
if (!parameter[displayKey]) {
|
|
341
|
+
return true;
|
|
342
|
+
}
|
|
343
|
+
const { show, hide } = parameter[displayKey];
|
|
344
|
+
nodeValuesRoot = nodeValuesRoot || nodeValues;
|
|
345
|
+
if (show) {
|
|
346
|
+
// All the defined rules have to match to display parameter
|
|
347
|
+
for (const propertyName of Object.keys(show)) {
|
|
348
|
+
const values = getPropertyValues(nodeValues, propertyName, node, nodeTypeDescription, nodeValuesRoot);
|
|
349
|
+
if (values.some((v) => typeof v === 'string' && v.charAt(0) === '=')) {
|
|
350
|
+
return true;
|
|
351
|
+
}
|
|
352
|
+
if (values.length === 0 || !checkConditions(show[propertyName], values)) {
|
|
353
|
+
return false;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
if (hide) {
|
|
358
|
+
// Any of the defined hide rules have to match to hide the parameter
|
|
359
|
+
for (const propertyName of Object.keys(hide)) {
|
|
360
|
+
const values = getPropertyValues(nodeValues, propertyName, node, nodeTypeDescription, nodeValuesRoot);
|
|
361
|
+
if (values.length !== 0 && checkConditions(hide[propertyName], values)) {
|
|
362
|
+
return false;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return true;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Returns if the given parameter should be displayed or not considering the path
|
|
370
|
+
* to the properties
|
|
371
|
+
*
|
|
372
|
+
* @param {INodeParameters} nodeValues The data on the node which decides if the parameter
|
|
373
|
+
* should be displayed
|
|
374
|
+
* @param {(INodeProperties | INodeCredentialDescription)} parameter The parameter to check if it should be displayed
|
|
375
|
+
* @param {string} path The path to the property
|
|
376
|
+
*/
|
|
377
|
+
function displayParameterPath(nodeValues, parameter, path, node, nodeTypeDescription, displayKey = 'displayOptions') {
|
|
378
|
+
let resolvedNodeValues = nodeValues;
|
|
379
|
+
if (path !== '') {
|
|
380
|
+
resolvedNodeValues = (0, get_1.default)(nodeValues, path);
|
|
381
|
+
}
|
|
382
|
+
// Get the root parameter data
|
|
383
|
+
let nodeValuesRoot = nodeValues;
|
|
384
|
+
if (path && path.split('.').indexOf('parameters') === 0) {
|
|
385
|
+
nodeValuesRoot = (0, get_1.default)(nodeValues, 'parameters');
|
|
386
|
+
}
|
|
387
|
+
return displayParameter(resolvedNodeValues, parameter, node, nodeTypeDescription, nodeValuesRoot, displayKey);
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Returns the context data
|
|
391
|
+
*
|
|
392
|
+
* @param {IRunExecutionData} runExecutionData The run execution data
|
|
393
|
+
* @param {string} type The data type. "node"/"flow"
|
|
394
|
+
* @param {INode} [node] If type "node" is set the node to return the context of has to be supplied
|
|
395
|
+
*/
|
|
396
|
+
function getContext(runExecutionData, type, node) {
|
|
397
|
+
if (runExecutionData.executionData === undefined) {
|
|
398
|
+
// TODO: Should not happen leave it for test now
|
|
399
|
+
throw new application_error_1.ApplicationError('`executionData` is not initialized');
|
|
400
|
+
}
|
|
401
|
+
let key;
|
|
402
|
+
if (type === 'flow') {
|
|
403
|
+
key = 'flow';
|
|
404
|
+
}
|
|
405
|
+
else if (type === 'node') {
|
|
406
|
+
if (node === undefined) {
|
|
407
|
+
// @TODO: What does this mean?
|
|
408
|
+
throw new application_error_1.ApplicationError('The request data of context type "node" the node parameter has to be set!');
|
|
409
|
+
}
|
|
410
|
+
key = `node:${node.name}`;
|
|
411
|
+
}
|
|
412
|
+
else {
|
|
413
|
+
throw new application_error_1.ApplicationError('Unknown context type. Only `flow` and `node` are supported.', {
|
|
414
|
+
extra: { contextType: type },
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
if (runExecutionData.executionData.contextData[key] === undefined) {
|
|
418
|
+
runExecutionData.executionData.contextData[key] = {};
|
|
419
|
+
}
|
|
420
|
+
return runExecutionData.executionData.contextData[key];
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Returns which parameters are dependent on which
|
|
424
|
+
*/
|
|
425
|
+
function getParameterDependencies(nodePropertiesArray) {
|
|
426
|
+
const dependencies = {};
|
|
427
|
+
for (const nodeProperties of nodePropertiesArray) {
|
|
428
|
+
const { name, displayOptions } = nodeProperties;
|
|
429
|
+
if (!dependencies[name]) {
|
|
430
|
+
dependencies[name] = [];
|
|
431
|
+
}
|
|
432
|
+
if (!displayOptions) {
|
|
433
|
+
// Does not have any dependencies
|
|
434
|
+
continue;
|
|
435
|
+
}
|
|
436
|
+
for (const displayRule of Object.values(displayOptions)) {
|
|
437
|
+
for (const parameterName of Object.keys(displayRule)) {
|
|
438
|
+
if (!dependencies[name].includes(parameterName)) {
|
|
439
|
+
if (parameterName.charAt(0) === '@') {
|
|
440
|
+
// Is a special parameter so can be skipped
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
443
|
+
dependencies[name].push(parameterName);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
return dependencies;
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Returns in which order the parameters should be resolved
|
|
452
|
+
* to have the parameters available they depend on
|
|
453
|
+
*/
|
|
454
|
+
function getParameterResolveOrder(nodePropertiesArray, parameterDependencies) {
|
|
455
|
+
const executionOrder = [];
|
|
456
|
+
const indexToResolve = Array.from({ length: nodePropertiesArray.length }, (_, k) => k);
|
|
457
|
+
const resolvedParameters = [];
|
|
458
|
+
let index;
|
|
459
|
+
let property;
|
|
460
|
+
let lastIndexLength = indexToResolve.length;
|
|
461
|
+
let lastIndexReduction = -1;
|
|
462
|
+
let iterations = 0;
|
|
463
|
+
while (indexToResolve.length !== 0) {
|
|
464
|
+
iterations += 1;
|
|
465
|
+
index = indexToResolve.shift();
|
|
466
|
+
property = nodePropertiesArray[index];
|
|
467
|
+
if (parameterDependencies[property.name].length === 0) {
|
|
468
|
+
// Does not have any dependencies so simply add
|
|
469
|
+
executionOrder.push(index);
|
|
470
|
+
resolvedParameters.push(property.name);
|
|
471
|
+
continue;
|
|
472
|
+
}
|
|
473
|
+
// Parameter has dependencies
|
|
474
|
+
for (const dependency of parameterDependencies[property.name]) {
|
|
475
|
+
if (!resolvedParameters.includes(dependency)) {
|
|
476
|
+
if (dependency.charAt(0) === '/') {
|
|
477
|
+
// Assume that root level dependencies are resolved
|
|
478
|
+
continue;
|
|
479
|
+
}
|
|
480
|
+
// Dependencies for that parameter are still missing so
|
|
481
|
+
// try to add again later
|
|
482
|
+
indexToResolve.push(index);
|
|
483
|
+
continue;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
// All dependencies got found so add
|
|
487
|
+
executionOrder.push(index);
|
|
488
|
+
resolvedParameters.push(property.name);
|
|
489
|
+
if (indexToResolve.length < lastIndexLength) {
|
|
490
|
+
lastIndexReduction = iterations;
|
|
491
|
+
}
|
|
492
|
+
if (iterations > lastIndexReduction + nodePropertiesArray.length) {
|
|
493
|
+
throw new application_error_1.ApplicationError('Could not resolve parameter dependencies. Max iterations reached! Hint: If `displayOptions` are specified in any child parameter of a parent `collection` or `fixedCollection`, remove the `displayOptions` from the child parameter.');
|
|
494
|
+
}
|
|
495
|
+
lastIndexLength = indexToResolve.length;
|
|
496
|
+
}
|
|
497
|
+
return executionOrder;
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Returns the node parameter values. Depending on the settings it either just returns the none
|
|
501
|
+
* default values or it applies all the default values.
|
|
502
|
+
*
|
|
503
|
+
* @param {INodeProperties[]} nodePropertiesArray The properties which exist and their settings
|
|
504
|
+
* @param {INodeParameters} nodeValues The node parameter data
|
|
505
|
+
* @param {boolean} returnDefaults If default values get added or only none default values returned
|
|
506
|
+
* @param {boolean} returnNoneDisplayed If also values which should not be displayed should be returned
|
|
507
|
+
* @param {GetNodeParametersOptions} options Optional properties
|
|
508
|
+
*/
|
|
509
|
+
// eslint-disable-next-line complexity
|
|
510
|
+
function getNodeParameters(nodePropertiesArray, nodeValues, returnDefaults, returnNoneDisplayed, node, nodeTypeDescription, options) {
|
|
511
|
+
let { nodeValuesRoot, parameterDependencies } = options ?? {};
|
|
512
|
+
const { onlySimpleTypes = false, dataIsResolved = false, parentType } = options ?? {};
|
|
513
|
+
if (parameterDependencies === undefined) {
|
|
514
|
+
parameterDependencies = getParameterDependencies(nodePropertiesArray);
|
|
515
|
+
}
|
|
516
|
+
// Get the parameter names which get used multiple times as for this
|
|
517
|
+
// ones we have to always check which ones get displayed and which ones not
|
|
518
|
+
const duplicateParameterNames = [];
|
|
519
|
+
const parameterNames = [];
|
|
520
|
+
for (const nodeProperties of nodePropertiesArray) {
|
|
521
|
+
if (parameterNames.includes(nodeProperties.name)) {
|
|
522
|
+
if (!duplicateParameterNames.includes(nodeProperties.name)) {
|
|
523
|
+
duplicateParameterNames.push(nodeProperties.name);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
else {
|
|
527
|
+
parameterNames.push(nodeProperties.name);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
const nodeParameters = {};
|
|
531
|
+
const nodeParametersFull = {};
|
|
532
|
+
let nodeValuesDisplayCheck = nodeParametersFull;
|
|
533
|
+
if (!dataIsResolved && !returnNoneDisplayed) {
|
|
534
|
+
nodeValuesDisplayCheck = getNodeParameters(nodePropertiesArray, nodeValues, true, true, node, nodeTypeDescription, {
|
|
535
|
+
onlySimpleTypes: true,
|
|
536
|
+
dataIsResolved: true,
|
|
537
|
+
nodeValuesRoot,
|
|
538
|
+
parentType,
|
|
539
|
+
parameterDependencies,
|
|
540
|
+
});
|
|
541
|
+
}
|
|
542
|
+
nodeValuesRoot = nodeValuesRoot || nodeValuesDisplayCheck;
|
|
543
|
+
// Go through the parameters in order of their dependencies
|
|
544
|
+
const parameterIterationOrderIndex = getParameterResolveOrder(nodePropertiesArray, parameterDependencies);
|
|
545
|
+
for (const parameterIndex of parameterIterationOrderIndex) {
|
|
546
|
+
const nodeProperties = nodePropertiesArray[parameterIndex];
|
|
547
|
+
if (!nodeValues ||
|
|
548
|
+
(nodeValues[nodeProperties.name] === undefined &&
|
|
549
|
+
(!returnDefaults || parentType === 'collection'))) {
|
|
550
|
+
// The value is not defined so go to the next
|
|
551
|
+
continue;
|
|
552
|
+
}
|
|
553
|
+
if (!returnNoneDisplayed &&
|
|
554
|
+
!displayParameter(nodeValuesDisplayCheck, nodeProperties, node, nodeTypeDescription, nodeValuesRoot)) {
|
|
555
|
+
if (!returnNoneDisplayed || !returnDefaults) {
|
|
556
|
+
continue;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
if (!['collection', 'fixedCollection'].includes(nodeProperties.type)) {
|
|
560
|
+
// Is a simple property so can be set as it is
|
|
561
|
+
if (duplicateParameterNames.includes(nodeProperties.name)) {
|
|
562
|
+
if (!displayParameter(nodeValuesDisplayCheck, nodeProperties, node, nodeTypeDescription, nodeValuesRoot)) {
|
|
563
|
+
continue;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
if (returnDefaults) {
|
|
567
|
+
// Set also when it has the default value
|
|
568
|
+
if (['boolean', 'number', 'options'].includes(nodeProperties.type)) {
|
|
569
|
+
// Boolean, numbers and options are special as false and 0 are valid values
|
|
570
|
+
// and should not be replaced with default value
|
|
571
|
+
nodeParameters[nodeProperties.name] =
|
|
572
|
+
nodeValues[nodeProperties.name] !== undefined
|
|
573
|
+
? nodeValues[nodeProperties.name]
|
|
574
|
+
: nodeProperties.default;
|
|
575
|
+
}
|
|
576
|
+
else if (nodeProperties.type === 'resourceLocator' &&
|
|
577
|
+
typeof nodeProperties.default === 'object') {
|
|
578
|
+
nodeParameters[nodeProperties.name] =
|
|
579
|
+
nodeValues[nodeProperties.name] !== undefined
|
|
580
|
+
? nodeValues[nodeProperties.name]
|
|
581
|
+
: { __rl: true, ...nodeProperties.default };
|
|
582
|
+
}
|
|
583
|
+
else {
|
|
584
|
+
nodeParameters[nodeProperties.name] =
|
|
585
|
+
nodeValues[nodeProperties.name] ?? nodeProperties.default;
|
|
586
|
+
}
|
|
587
|
+
nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
|
|
588
|
+
}
|
|
589
|
+
else if ((nodeValues[nodeProperties.name] !== nodeProperties.default &&
|
|
590
|
+
typeof nodeValues[nodeProperties.name] !== 'object') ||
|
|
591
|
+
(typeof nodeValues[nodeProperties.name] === 'object' &&
|
|
592
|
+
!(0, isEqual_1.default)(nodeValues[nodeProperties.name], nodeProperties.default)) ||
|
|
593
|
+
(nodeValues[nodeProperties.name] !== undefined && parentType === 'collection')) {
|
|
594
|
+
// Set only if it is different to the default value
|
|
595
|
+
nodeParameters[nodeProperties.name] = nodeValues[nodeProperties.name];
|
|
596
|
+
nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
|
|
597
|
+
continue;
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
if (onlySimpleTypes) {
|
|
601
|
+
// It is only supposed to resolve the simple types. So continue.
|
|
602
|
+
continue;
|
|
603
|
+
}
|
|
604
|
+
// Is a complex property so check lower levels
|
|
605
|
+
let tempValue;
|
|
606
|
+
if (nodeProperties.type === 'collection') {
|
|
607
|
+
// Is collection
|
|
608
|
+
if (nodeProperties.typeOptions !== undefined &&
|
|
609
|
+
nodeProperties.typeOptions.multipleValues === true) {
|
|
610
|
+
// Multiple can be set so will be an array
|
|
611
|
+
// Return directly the values like they are
|
|
612
|
+
if (nodeValues[nodeProperties.name] !== undefined) {
|
|
613
|
+
nodeParameters[nodeProperties.name] = nodeValues[nodeProperties.name];
|
|
614
|
+
}
|
|
615
|
+
else if (returnDefaults) {
|
|
616
|
+
// Does not have values defined but defaults should be returned
|
|
617
|
+
if (Array.isArray(nodeProperties.default)) {
|
|
618
|
+
nodeParameters[nodeProperties.name] = (0, utils_1.deepCopy)(nodeProperties.default);
|
|
619
|
+
}
|
|
620
|
+
else {
|
|
621
|
+
// As it is probably wrong for many nodes, do we keep on returning an empty array if
|
|
622
|
+
// anything else than an array is set as default
|
|
623
|
+
nodeParameters[nodeProperties.name] = [];
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
|
|
627
|
+
}
|
|
628
|
+
else if (nodeValues[nodeProperties.name] !== undefined) {
|
|
629
|
+
// Has values defined so get them
|
|
630
|
+
const tempNodeParameters = getNodeParameters(nodeProperties.options, nodeValues[nodeProperties.name], returnDefaults, returnNoneDisplayed, node, nodeTypeDescription, {
|
|
631
|
+
onlySimpleTypes: false,
|
|
632
|
+
dataIsResolved: false,
|
|
633
|
+
nodeValuesRoot,
|
|
634
|
+
parentType: nodeProperties.type,
|
|
635
|
+
});
|
|
636
|
+
if (tempNodeParameters !== null) {
|
|
637
|
+
nodeParameters[nodeProperties.name] = tempNodeParameters;
|
|
638
|
+
nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
else if (returnDefaults) {
|
|
642
|
+
// Does not have values defined but defaults should be returned
|
|
643
|
+
nodeParameters[nodeProperties.name] = (0, utils_1.deepCopy)(nodeProperties.default);
|
|
644
|
+
nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
else if (nodeProperties.type === 'fixedCollection') {
|
|
648
|
+
// Is fixedCollection
|
|
649
|
+
const collectionValues = {};
|
|
650
|
+
let tempNodeParameters;
|
|
651
|
+
let tempNodePropertiesArray;
|
|
652
|
+
let nodePropertyOptions;
|
|
653
|
+
let propertyValues = nodeValues[nodeProperties.name];
|
|
654
|
+
if (returnDefaults) {
|
|
655
|
+
if (propertyValues === undefined) {
|
|
656
|
+
propertyValues = (0, utils_1.deepCopy)(nodeProperties.default);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
if (!returnDefaults &&
|
|
660
|
+
nodeProperties.typeOptions?.multipleValues === false &&
|
|
661
|
+
propertyValues &&
|
|
662
|
+
Object.keys(propertyValues).length === 0) {
|
|
663
|
+
// For fixedCollections, which only allow one value, it is important to still return
|
|
664
|
+
// the empty object which indicates that a value got added, even if it does not have
|
|
665
|
+
// anything set. If that is not done, the value would get lost.
|
|
666
|
+
return nodeValues;
|
|
667
|
+
}
|
|
668
|
+
// Iterate over all collections
|
|
669
|
+
for (const itemName of Object.keys(propertyValues || {})) {
|
|
670
|
+
if (nodeProperties.typeOptions !== undefined &&
|
|
671
|
+
nodeProperties.typeOptions.multipleValues === true) {
|
|
672
|
+
// Multiple can be set so will be an array
|
|
673
|
+
const tempArrayValue = [];
|
|
674
|
+
// Iterate over all items as it contains multiple ones
|
|
675
|
+
for (const nodeValue of propertyValues[itemName]) {
|
|
676
|
+
nodePropertyOptions = nodeProperties.options.find(
|
|
677
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
678
|
+
(nodePropertyOptions) => nodePropertyOptions.name === itemName);
|
|
679
|
+
if (nodePropertyOptions === undefined) {
|
|
680
|
+
throw new application_error_1.ApplicationError('Could not find property option', {
|
|
681
|
+
extra: { propertyOption: itemName, property: nodeProperties.name },
|
|
682
|
+
});
|
|
683
|
+
}
|
|
684
|
+
tempNodePropertiesArray = nodePropertyOptions.values;
|
|
685
|
+
tempValue = getNodeParameters(tempNodePropertiesArray, nodeValue, returnDefaults, returnNoneDisplayed, node, nodeTypeDescription, {
|
|
686
|
+
onlySimpleTypes: false,
|
|
687
|
+
dataIsResolved: false,
|
|
688
|
+
nodeValuesRoot,
|
|
689
|
+
parentType: nodeProperties.type,
|
|
690
|
+
});
|
|
691
|
+
if (tempValue !== null) {
|
|
692
|
+
tempArrayValue.push(tempValue);
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
collectionValues[itemName] = tempArrayValue;
|
|
696
|
+
}
|
|
697
|
+
else {
|
|
698
|
+
// Only one can be set so is an object of objects
|
|
699
|
+
tempNodeParameters = {};
|
|
700
|
+
// Get the options of the current item
|
|
701
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
702
|
+
const nodePropertyOptions = nodeProperties.options.find((data) => data.name === itemName);
|
|
703
|
+
if (nodePropertyOptions !== undefined) {
|
|
704
|
+
tempNodePropertiesArray = nodePropertyOptions.values;
|
|
705
|
+
tempValue = getNodeParameters(tempNodePropertiesArray, nodeValues[nodeProperties.name][itemName], returnDefaults, returnNoneDisplayed, node, nodeTypeDescription, {
|
|
706
|
+
onlySimpleTypes: false,
|
|
707
|
+
dataIsResolved: false,
|
|
708
|
+
nodeValuesRoot,
|
|
709
|
+
parentType: nodeProperties.type,
|
|
710
|
+
});
|
|
711
|
+
if (tempValue !== null) {
|
|
712
|
+
Object.assign(tempNodeParameters, tempValue);
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
if (Object.keys(tempNodeParameters).length !== 0) {
|
|
716
|
+
collectionValues[itemName] = tempNodeParameters;
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
if (!returnDefaults &&
|
|
721
|
+
nodeProperties.typeOptions?.multipleValues === false &&
|
|
722
|
+
collectionValues &&
|
|
723
|
+
Object.keys(collectionValues).length === 0 &&
|
|
724
|
+
propertyValues &&
|
|
725
|
+
propertyValues?.constructor.name === 'Object' &&
|
|
726
|
+
Object.keys(propertyValues).length !== 0) {
|
|
727
|
+
// For fixedCollections, which only allow one value, it is important to still return
|
|
728
|
+
// the object with an empty collection property which indicates that a value got added
|
|
729
|
+
// which contains all default values. If that is not done, the value would get lost.
|
|
730
|
+
const returnValue = {};
|
|
731
|
+
Object.keys(propertyValues || {}).forEach((value) => {
|
|
732
|
+
returnValue[value] = {};
|
|
733
|
+
});
|
|
734
|
+
nodeParameters[nodeProperties.name] = returnValue;
|
|
735
|
+
}
|
|
736
|
+
if (Object.keys(collectionValues).length !== 0 || returnDefaults) {
|
|
737
|
+
// Set only if value got found
|
|
738
|
+
if (returnDefaults) {
|
|
739
|
+
// Set also when it has the default value
|
|
740
|
+
if (collectionValues === undefined) {
|
|
741
|
+
nodeParameters[nodeProperties.name] = (0, utils_1.deepCopy)(nodeProperties.default);
|
|
742
|
+
}
|
|
743
|
+
else {
|
|
744
|
+
nodeParameters[nodeProperties.name] = collectionValues;
|
|
745
|
+
}
|
|
746
|
+
nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
|
|
747
|
+
}
|
|
748
|
+
else if (collectionValues !== nodeProperties.default) {
|
|
749
|
+
// Set only if values got found and it is not the default
|
|
750
|
+
nodeParameters[nodeProperties.name] = collectionValues;
|
|
751
|
+
nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
return nodeParameters;
|
|
757
|
+
}
|
|
758
|
+
/**
|
|
759
|
+
* Returns the webhook path
|
|
760
|
+
*/
|
|
761
|
+
function getNodeWebhookPath(workflowId, node, path, isFullPath, restartWebhook) {
|
|
762
|
+
let webhookPath = '';
|
|
763
|
+
if (restartWebhook === true) {
|
|
764
|
+
return path;
|
|
765
|
+
}
|
|
766
|
+
if (node.webhookId === undefined) {
|
|
767
|
+
const nodeName = encodeURIComponent(node.name.toLowerCase());
|
|
768
|
+
webhookPath = `${workflowId}/${nodeName}/${path}`;
|
|
769
|
+
}
|
|
770
|
+
else {
|
|
771
|
+
if (isFullPath === true) {
|
|
772
|
+
return path || node.webhookId;
|
|
773
|
+
}
|
|
774
|
+
webhookPath = `${node.webhookId}/${path}`;
|
|
775
|
+
}
|
|
776
|
+
return webhookPath;
|
|
777
|
+
}
|
|
778
|
+
/**
|
|
779
|
+
* Returns the webhook URL
|
|
780
|
+
*/
|
|
781
|
+
function getNodeWebhookUrl(baseUrl, workflowId, node, path, isFullPath) {
|
|
782
|
+
if ((path.startsWith(':') || path.includes('/:')) && node.webhookId) {
|
|
783
|
+
// setting this to false to prefix the webhookId
|
|
784
|
+
isFullPath = false;
|
|
785
|
+
}
|
|
786
|
+
if (path.startsWith('/')) {
|
|
787
|
+
path = path.slice(1);
|
|
788
|
+
}
|
|
789
|
+
return `${baseUrl}/${getNodeWebhookPath(workflowId, node, path, isFullPath)}`;
|
|
790
|
+
}
|
|
791
|
+
function getConnectionTypes(connections) {
|
|
792
|
+
return connections
|
|
793
|
+
.map((connection) => {
|
|
794
|
+
if (typeof connection === 'string') {
|
|
795
|
+
return connection;
|
|
796
|
+
}
|
|
797
|
+
return connection.type;
|
|
798
|
+
})
|
|
799
|
+
.filter((connection) => connection !== undefined);
|
|
800
|
+
}
|
|
801
|
+
function getNodeInputs(workflow, node, nodeTypeData) {
|
|
802
|
+
if (Array.isArray(nodeTypeData?.inputs)) {
|
|
803
|
+
return nodeTypeData.inputs;
|
|
804
|
+
}
|
|
805
|
+
// Calculate the outputs dynamically
|
|
806
|
+
try {
|
|
807
|
+
return (workflow.expression.getSimpleParameterValue(node, nodeTypeData.inputs, 'internal', {}) || []);
|
|
808
|
+
}
|
|
809
|
+
catch (e) {
|
|
810
|
+
console.warn('Could not calculate inputs dynamically for node: ', node.name);
|
|
811
|
+
return [];
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
function getNodeOutputs(workflow, node, nodeTypeData) {
|
|
815
|
+
let outputs = [];
|
|
816
|
+
if (Array.isArray(nodeTypeData.outputs)) {
|
|
817
|
+
outputs = nodeTypeData.outputs;
|
|
818
|
+
}
|
|
819
|
+
else {
|
|
820
|
+
// Calculate the outputs dynamically
|
|
821
|
+
try {
|
|
822
|
+
outputs = (workflow.expression.getSimpleParameterValue(node, nodeTypeData.outputs, 'internal', {}) || []);
|
|
823
|
+
}
|
|
824
|
+
catch (e) {
|
|
825
|
+
console.warn('Could not calculate outputs dynamically for node: ', node.name);
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
if (node.onError === 'continueErrorOutput') {
|
|
829
|
+
// Copy the data to make sure that we do not change the data of the
|
|
830
|
+
// node type and so change the displayNames for all nodes in the flow
|
|
831
|
+
outputs = (0, utils_1.deepCopy)(outputs);
|
|
832
|
+
if (outputs.length === 1) {
|
|
833
|
+
// Set the displayName to "Success"
|
|
834
|
+
if (typeof outputs[0] === 'string') {
|
|
835
|
+
outputs[0] = {
|
|
836
|
+
type: outputs[0],
|
|
837
|
+
};
|
|
838
|
+
}
|
|
839
|
+
outputs[0].displayName = 'Success';
|
|
840
|
+
}
|
|
841
|
+
return [
|
|
842
|
+
...outputs,
|
|
843
|
+
{
|
|
844
|
+
category: 'error',
|
|
845
|
+
type: interfaces_1.NodeConnectionTypes.Main,
|
|
846
|
+
displayName: 'Error',
|
|
847
|
+
},
|
|
848
|
+
];
|
|
849
|
+
}
|
|
850
|
+
return outputs;
|
|
851
|
+
}
|
|
852
|
+
/**
|
|
853
|
+
* Returns all the parameter-issues of the node
|
|
854
|
+
*
|
|
855
|
+
* @param {INodeProperties[]} nodePropertiesArray The properties of the node
|
|
856
|
+
* @param {INode} node The data of the node
|
|
857
|
+
*/
|
|
858
|
+
function getNodeParametersIssues(nodePropertiesArray, node, nodeTypeDescription, pinDataNodeNames) {
|
|
859
|
+
const foundIssues = {};
|
|
860
|
+
let propertyIssues;
|
|
861
|
+
if (node.disabled === true || pinDataNodeNames?.includes(node.name)) {
|
|
862
|
+
// Ignore issues on disabled and pindata nodes
|
|
863
|
+
return null;
|
|
864
|
+
}
|
|
865
|
+
for (const nodeProperty of nodePropertiesArray) {
|
|
866
|
+
propertyIssues = getParameterIssues(nodeProperty, node.parameters, '', node, nodeTypeDescription);
|
|
867
|
+
mergeIssues(foundIssues, propertyIssues);
|
|
868
|
+
}
|
|
869
|
+
if (Object.keys(foundIssues).length === 0) {
|
|
870
|
+
return null;
|
|
871
|
+
}
|
|
872
|
+
return foundIssues;
|
|
873
|
+
}
|
|
874
|
+
/*
|
|
875
|
+
* Validates resource locator node parameters based on validation ruled defined in each parameter mode
|
|
876
|
+
*/
|
|
877
|
+
const validateResourceLocatorParameter = (value, parameterMode) => {
|
|
878
|
+
const valueToValidate = value?.value?.toString() || '';
|
|
879
|
+
if (valueToValidate.startsWith('=')) {
|
|
880
|
+
return [];
|
|
881
|
+
}
|
|
882
|
+
const validationErrors = [];
|
|
883
|
+
// Each mode can have multiple validations specified
|
|
884
|
+
if (parameterMode.validation) {
|
|
885
|
+
for (const validation of parameterMode.validation) {
|
|
886
|
+
if (validation && validation.type === 'regex') {
|
|
887
|
+
const regexValidation = validation;
|
|
888
|
+
const regex = new RegExp(`^${regexValidation.properties.regex}$`);
|
|
889
|
+
if (!regex.test(valueToValidate)) {
|
|
890
|
+
validationErrors.push(regexValidation.properties.errorMessage);
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
return validationErrors;
|
|
896
|
+
};
|
|
897
|
+
/*
|
|
898
|
+
* Validates resource mapper values based on service schema
|
|
899
|
+
*/
|
|
900
|
+
const validateResourceMapperParameter = (nodeProperties, value, skipRequiredCheck = false) => {
|
|
901
|
+
// No issues to raise in automatic mapping mode, no user input to validate
|
|
902
|
+
if (value.mappingMode === 'autoMapInputData') {
|
|
903
|
+
return {};
|
|
904
|
+
}
|
|
905
|
+
const issues = {};
|
|
906
|
+
let fieldWordSingular = nodeProperties.typeOptions?.resourceMapper?.fieldWords?.singular || 'Field';
|
|
907
|
+
fieldWordSingular = fieldWordSingular.charAt(0).toUpperCase() + fieldWordSingular.slice(1);
|
|
908
|
+
value.schema.forEach((field) => {
|
|
909
|
+
const fieldValue = value.value ? value.value[field.id] : null;
|
|
910
|
+
const key = `${nodeProperties.name}.${field.id}`;
|
|
911
|
+
const fieldErrors = [];
|
|
912
|
+
if (field.required && !skipRequiredCheck) {
|
|
913
|
+
if (value.value === null || fieldValue === undefined) {
|
|
914
|
+
const error = `${fieldWordSingular} "${field.id}" is required`;
|
|
915
|
+
fieldErrors.push(error);
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
if (!fieldValue?.toString().startsWith('=') && field.type) {
|
|
919
|
+
const validationResult = (0, type_validation_1.validateFieldType)(field.id, fieldValue, field.type, {
|
|
920
|
+
valueOptions: field.options,
|
|
921
|
+
});
|
|
922
|
+
if (!validationResult.valid && validationResult.errorMessage) {
|
|
923
|
+
fieldErrors.push(validationResult.errorMessage);
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
if (fieldErrors.length > 0) {
|
|
927
|
+
issues[key] = fieldErrors;
|
|
928
|
+
}
|
|
929
|
+
});
|
|
930
|
+
return issues;
|
|
931
|
+
};
|
|
932
|
+
const validateParameter = (nodeProperties, value, type) => {
|
|
933
|
+
const nodeName = nodeProperties.name;
|
|
934
|
+
const options = type === 'options' ? nodeProperties.options : undefined;
|
|
935
|
+
if (!value?.toString().startsWith('=')) {
|
|
936
|
+
const validationResult = (0, type_validation_1.validateFieldType)(nodeName, value, type, {
|
|
937
|
+
valueOptions: options,
|
|
938
|
+
});
|
|
939
|
+
if (!validationResult.valid && validationResult.errorMessage) {
|
|
940
|
+
return validationResult.errorMessage;
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
return undefined;
|
|
944
|
+
};
|
|
945
|
+
/**
|
|
946
|
+
* Adds an issue if the parameter is not defined
|
|
947
|
+
*
|
|
948
|
+
* @param {INodeIssues} foundIssues The already found issues
|
|
949
|
+
* @param {INodeProperties} nodeProperties The properties of the node
|
|
950
|
+
* @param {NodeParameterValue} value The value of the parameter
|
|
951
|
+
*/
|
|
952
|
+
function addToIssuesIfMissing(foundIssues, nodeProperties, value) {
|
|
953
|
+
// TODO: Check what it really has when undefined
|
|
954
|
+
if ((nodeProperties.type === 'string' && (value === '' || value === undefined)) ||
|
|
955
|
+
(nodeProperties.type === 'multiOptions' && Array.isArray(value) && value.length === 0) ||
|
|
956
|
+
(nodeProperties.type === 'dateTime' && (value === '' || value === undefined)) ||
|
|
957
|
+
(nodeProperties.type === 'options' && (value === '' || value === undefined)) ||
|
|
958
|
+
((nodeProperties.type === 'resourceLocator' || nodeProperties.type === 'workflowSelector') &&
|
|
959
|
+
!(0, type_guards_1.isValidResourceLocatorParameterValue)(value))) {
|
|
960
|
+
// Parameter is required but empty
|
|
961
|
+
if (foundIssues.parameters === undefined) {
|
|
962
|
+
foundIssues.parameters = {};
|
|
963
|
+
}
|
|
964
|
+
if (foundIssues.parameters[nodeProperties.name] === undefined) {
|
|
965
|
+
foundIssues.parameters[nodeProperties.name] = [];
|
|
966
|
+
}
|
|
967
|
+
foundIssues.parameters[nodeProperties.name].push(`Parameter "${nodeProperties.displayName}" is required.`);
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
/**
|
|
971
|
+
* Returns the parameter value
|
|
972
|
+
*
|
|
973
|
+
* @param {INodeParameters} nodeValues The values of the node
|
|
974
|
+
* @param {string} parameterName The name of the parameter to return the value of
|
|
975
|
+
* @param {string} path The path to the properties
|
|
976
|
+
*/
|
|
977
|
+
function getParameterValueByPath(nodeValues, parameterName, path) {
|
|
978
|
+
return (0, get_1.default)(nodeValues, path ? `${path}.${parameterName}` : parameterName);
|
|
979
|
+
}
|
|
980
|
+
function isINodeParameterResourceLocator(value) {
|
|
981
|
+
return typeof value === 'object' && value !== null && 'value' in value && 'mode' in value;
|
|
982
|
+
}
|
|
983
|
+
/**
|
|
984
|
+
* Returns all the issues with the given node-values
|
|
985
|
+
*
|
|
986
|
+
* @param {INodeProperties} nodeProperties The properties of the node
|
|
987
|
+
* @param {INodeParameters} nodeValues The values of the node
|
|
988
|
+
* @param {string} path The path to the properties
|
|
989
|
+
*/
|
|
990
|
+
// eslint-disable-next-line complexity
|
|
991
|
+
function getParameterIssues(nodeProperties, nodeValues, path, node, nodeTypeDescription) {
|
|
992
|
+
const foundIssues = {};
|
|
993
|
+
const isDisplayed = displayParameterPath(nodeValues, nodeProperties, path, node, nodeTypeDescription);
|
|
994
|
+
if (nodeProperties.required === true) {
|
|
995
|
+
if (isDisplayed) {
|
|
996
|
+
const value = getParameterValueByPath(nodeValues, nodeProperties.name, path);
|
|
997
|
+
if (
|
|
998
|
+
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
999
|
+
nodeProperties.typeOptions !== undefined &&
|
|
1000
|
+
nodeProperties.typeOptions.multipleValues !== undefined) {
|
|
1001
|
+
// Multiple can be set so will be an array
|
|
1002
|
+
if (Array.isArray(value)) {
|
|
1003
|
+
for (const singleValue of value) {
|
|
1004
|
+
addToIssuesIfMissing(foundIssues, nodeProperties, singleValue);
|
|
1005
|
+
}
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
else {
|
|
1009
|
+
// Only one can be set so will be a single value
|
|
1010
|
+
addToIssuesIfMissing(foundIssues, nodeProperties, value);
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
if ((nodeProperties.type === 'resourceLocator' || nodeProperties.type === 'workflowSelector') &&
|
|
1015
|
+
isDisplayed) {
|
|
1016
|
+
const value = getParameterValueByPath(nodeValues, nodeProperties.name, path);
|
|
1017
|
+
if (isINodeParameterResourceLocator(value)) {
|
|
1018
|
+
const mode = nodeProperties.modes?.find((option) => option.name === value.mode);
|
|
1019
|
+
if (mode) {
|
|
1020
|
+
const errors = validateResourceLocatorParameter(value, mode);
|
|
1021
|
+
errors.forEach((error) => {
|
|
1022
|
+
if (foundIssues.parameters === undefined) {
|
|
1023
|
+
foundIssues.parameters = {};
|
|
1024
|
+
}
|
|
1025
|
+
if (foundIssues.parameters[nodeProperties.name] === undefined) {
|
|
1026
|
+
foundIssues.parameters[nodeProperties.name] = [];
|
|
1027
|
+
}
|
|
1028
|
+
foundIssues.parameters[nodeProperties.name].push(error);
|
|
1029
|
+
});
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
else if (nodeProperties.type === 'resourceMapper' && isDisplayed) {
|
|
1034
|
+
const skipRequiredCheck = nodeProperties.typeOptions?.resourceMapper?.mode !== 'add';
|
|
1035
|
+
const value = getParameterValueByPath(nodeValues, nodeProperties.name, path);
|
|
1036
|
+
if ((0, type_guards_1.isResourceMapperValue)(value)) {
|
|
1037
|
+
const issues = validateResourceMapperParameter(nodeProperties, value, skipRequiredCheck);
|
|
1038
|
+
if (Object.keys(issues).length > 0) {
|
|
1039
|
+
if (foundIssues.parameters === undefined) {
|
|
1040
|
+
foundIssues.parameters = {};
|
|
1041
|
+
}
|
|
1042
|
+
if (foundIssues.parameters[nodeProperties.name] === undefined) {
|
|
1043
|
+
foundIssues.parameters[nodeProperties.name] = [];
|
|
1044
|
+
}
|
|
1045
|
+
foundIssues.parameters = { ...foundIssues.parameters, ...issues };
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
else if (nodeProperties.type === 'filter' && isDisplayed) {
|
|
1050
|
+
const value = getParameterValueByPath(nodeValues, nodeProperties.name, path);
|
|
1051
|
+
if ((0, type_guards_1.isFilterValue)(value)) {
|
|
1052
|
+
const issues = (0, filter_parameter_1.validateFilterParameter)(nodeProperties, value);
|
|
1053
|
+
if (Object.keys(issues).length > 0) {
|
|
1054
|
+
foundIssues.parameters = { ...foundIssues.parameters, ...issues };
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1058
|
+
else if (nodeProperties.validateType) {
|
|
1059
|
+
const value = getParameterValueByPath(nodeValues, nodeProperties.name, path);
|
|
1060
|
+
const error = validateParameter(nodeProperties, value, nodeProperties.validateType);
|
|
1061
|
+
if (error) {
|
|
1062
|
+
if (foundIssues.parameters === undefined) {
|
|
1063
|
+
foundIssues.parameters = {};
|
|
1064
|
+
}
|
|
1065
|
+
if (foundIssues.parameters[nodeProperties.name] === undefined) {
|
|
1066
|
+
foundIssues.parameters[nodeProperties.name] = [];
|
|
1067
|
+
}
|
|
1068
|
+
foundIssues.parameters[nodeProperties.name].push(error);
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
// Check if there are any child parameters
|
|
1072
|
+
if (nodeProperties.options === undefined) {
|
|
1073
|
+
// There are none so nothing else to check
|
|
1074
|
+
return foundIssues;
|
|
1075
|
+
}
|
|
1076
|
+
// Check the child parameters
|
|
1077
|
+
// Important:
|
|
1078
|
+
// Checks the child properties only if the property is defined on current level.
|
|
1079
|
+
// That means that the required flag works only for the current level only. If
|
|
1080
|
+
// it is set on a lower level it means that the property is only required in case
|
|
1081
|
+
// the parent property got set.
|
|
1082
|
+
let basePath = path ? `${path}.` : '';
|
|
1083
|
+
const checkChildNodeProperties = [];
|
|
1084
|
+
// Collect all the properties to check
|
|
1085
|
+
if (nodeProperties.type === 'collection') {
|
|
1086
|
+
for (const option of nodeProperties.options) {
|
|
1087
|
+
checkChildNodeProperties.push({
|
|
1088
|
+
basePath,
|
|
1089
|
+
data: option,
|
|
1090
|
+
});
|
|
1091
|
+
}
|
|
1092
|
+
}
|
|
1093
|
+
else if (nodeProperties.type === 'fixedCollection' && isDisplayed) {
|
|
1094
|
+
basePath = basePath ? `${basePath}.` : `${nodeProperties.name}.`;
|
|
1095
|
+
let propertyOptions;
|
|
1096
|
+
for (propertyOptions of nodeProperties.options) {
|
|
1097
|
+
// Check if the option got set and if not skip it
|
|
1098
|
+
const value = getParameterValueByPath(nodeValues, propertyOptions.name, basePath.slice(0, -1));
|
|
1099
|
+
// Validate allowed field counts
|
|
1100
|
+
const valueArray = Array.isArray(value) ? value : [];
|
|
1101
|
+
const { minRequiredFields, maxAllowedFields } = nodeProperties.typeOptions ?? {};
|
|
1102
|
+
let error = '';
|
|
1103
|
+
if (minRequiredFields && valueArray.length < minRequiredFields) {
|
|
1104
|
+
error = `At least ${minRequiredFields} ${minRequiredFields === 1 ? 'field is' : 'fields are'} required.`;
|
|
1105
|
+
}
|
|
1106
|
+
if (maxAllowedFields && valueArray.length > maxAllowedFields) {
|
|
1107
|
+
error = `At most ${maxAllowedFields} ${maxAllowedFields === 1 ? 'field is' : 'fields are'} allowed.`;
|
|
1108
|
+
}
|
|
1109
|
+
if (error) {
|
|
1110
|
+
foundIssues.parameters ??= {};
|
|
1111
|
+
foundIssues.parameters[nodeProperties.name] ??= [];
|
|
1112
|
+
foundIssues.parameters[nodeProperties.name].push(error);
|
|
1113
|
+
}
|
|
1114
|
+
if (value === undefined) {
|
|
1115
|
+
continue;
|
|
1116
|
+
}
|
|
1117
|
+
if (
|
|
1118
|
+
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
1119
|
+
nodeProperties.typeOptions !== undefined &&
|
|
1120
|
+
nodeProperties.typeOptions.multipleValues !== undefined) {
|
|
1121
|
+
// Multiple can be set so will be an array of objects
|
|
1122
|
+
if (Array.isArray(value)) {
|
|
1123
|
+
for (let i = 0; i < value.length; i++) {
|
|
1124
|
+
for (const option of propertyOptions.values) {
|
|
1125
|
+
checkChildNodeProperties.push({
|
|
1126
|
+
basePath: `${basePath}${propertyOptions.name}[${i}]`,
|
|
1127
|
+
data: option,
|
|
1128
|
+
});
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
else {
|
|
1134
|
+
// Only one can be set so will be an object
|
|
1135
|
+
for (const option of propertyOptions.values) {
|
|
1136
|
+
checkChildNodeProperties.push({
|
|
1137
|
+
basePath: basePath + propertyOptions.name,
|
|
1138
|
+
data: option,
|
|
1139
|
+
});
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
else {
|
|
1145
|
+
// For all other types there is nothing to check so return
|
|
1146
|
+
return foundIssues;
|
|
1147
|
+
}
|
|
1148
|
+
let propertyIssues;
|
|
1149
|
+
for (const optionData of checkChildNodeProperties) {
|
|
1150
|
+
propertyIssues = getParameterIssues(optionData.data, nodeValues, optionData.basePath, node, nodeTypeDescription);
|
|
1151
|
+
mergeIssues(foundIssues, propertyIssues);
|
|
1152
|
+
}
|
|
1153
|
+
return foundIssues;
|
|
1154
|
+
}
|
|
1155
|
+
/**
|
|
1156
|
+
* Merges multiple NodeIssues together
|
|
1157
|
+
*
|
|
1158
|
+
* @param {INodeIssues} destination The issues to merge into
|
|
1159
|
+
* @param {(INodeIssues | null)} source The issues to merge
|
|
1160
|
+
*/
|
|
1161
|
+
function mergeIssues(destination, source) {
|
|
1162
|
+
if (source === null) {
|
|
1163
|
+
// Nothing to merge
|
|
1164
|
+
return;
|
|
1165
|
+
}
|
|
1166
|
+
if (source.execution === true) {
|
|
1167
|
+
destination.execution = true;
|
|
1168
|
+
}
|
|
1169
|
+
const objectProperties = ['parameters', 'credentials'];
|
|
1170
|
+
let destinationProperty;
|
|
1171
|
+
for (const propertyName of objectProperties) {
|
|
1172
|
+
if (source[propertyName] !== undefined) {
|
|
1173
|
+
if (destination[propertyName] === undefined) {
|
|
1174
|
+
destination[propertyName] = {};
|
|
1175
|
+
}
|
|
1176
|
+
let parameterName;
|
|
1177
|
+
for (parameterName of Object.keys(source[propertyName])) {
|
|
1178
|
+
destinationProperty = destination[propertyName];
|
|
1179
|
+
if (destinationProperty[parameterName] === undefined) {
|
|
1180
|
+
destinationProperty[parameterName] = [];
|
|
1181
|
+
}
|
|
1182
|
+
destinationProperty[parameterName].push.apply(destinationProperty[parameterName], source[propertyName][parameterName]);
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
}
|
|
1186
|
+
if (source.typeUnknown === true) {
|
|
1187
|
+
destination.typeUnknown = true;
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1190
|
+
/**
|
|
1191
|
+
* Merges the given node properties
|
|
1192
|
+
*/
|
|
1193
|
+
function mergeNodeProperties(mainProperties, addProperties) {
|
|
1194
|
+
let existingIndex;
|
|
1195
|
+
for (const property of addProperties) {
|
|
1196
|
+
if (property.doNotInherit)
|
|
1197
|
+
continue;
|
|
1198
|
+
existingIndex = mainProperties.findIndex((element) => element.name === property.name);
|
|
1199
|
+
if (existingIndex === -1) {
|
|
1200
|
+
// Property does not exist yet, so add
|
|
1201
|
+
mainProperties.push(property);
|
|
1202
|
+
}
|
|
1203
|
+
else {
|
|
1204
|
+
// Property exists already, so overwrite
|
|
1205
|
+
mainProperties[existingIndex] = property;
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
}
|
|
1209
|
+
function getVersionedNodeType(object, version) {
|
|
1210
|
+
if ('nodeVersions' in object) {
|
|
1211
|
+
return object.getNodeType(version);
|
|
1212
|
+
}
|
|
1213
|
+
return object;
|
|
1214
|
+
}
|
|
1215
|
+
function isTriggerNode(nodeTypeData) {
|
|
1216
|
+
return nodeTypeData.group.includes('trigger');
|
|
1217
|
+
}
|
|
1218
|
+
function isExecutable(workflow, node, nodeTypeData) {
|
|
1219
|
+
const outputs = getNodeOutputs(workflow, node, nodeTypeData);
|
|
1220
|
+
const outputNames = getConnectionTypes(outputs);
|
|
1221
|
+
return (outputNames.includes(interfaces_1.NodeConnectionTypes.Main) ||
|
|
1222
|
+
outputNames.includes(interfaces_1.NodeConnectionTypes.AiTool) ||
|
|
1223
|
+
isTriggerNode(nodeTypeData));
|
|
1224
|
+
}
|
|
1225
|
+
function isNodeWithWorkflowSelector(node) {
|
|
1226
|
+
return [constants_1.EXECUTE_WORKFLOW_NODE_TYPE, constants_1.WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE].includes(node.type);
|
|
1227
|
+
}
|
|
1228
|
+
/**
|
|
1229
|
+
* @returns An object containing either the resolved operation's action if available,
|
|
1230
|
+
* else the resource and operation if both exist.
|
|
1231
|
+
* If neither can be resolved, returns an empty object.
|
|
1232
|
+
*/
|
|
1233
|
+
function resolveResourceAndOperation(nodeParameters, nodeTypeDescription) {
|
|
1234
|
+
const resource = nodeParameters.resource;
|
|
1235
|
+
const operation = nodeParameters.operation;
|
|
1236
|
+
const nodeTypeOperation = nodeTypeDescription.properties.find((p) => p.name === 'operation' && p.displayOptions?.show?.resource?.includes(resource));
|
|
1237
|
+
if (nodeTypeOperation?.options && (0, type_guards_1.isINodePropertyOptionsList)(nodeTypeOperation.options)) {
|
|
1238
|
+
const foundOperation = nodeTypeOperation.options.find((option) => option.value === operation);
|
|
1239
|
+
if (foundOperation?.action) {
|
|
1240
|
+
return { action: foundOperation.action };
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
if (resource && operation) {
|
|
1244
|
+
return { operation, resource };
|
|
1245
|
+
}
|
|
1246
|
+
else {
|
|
1247
|
+
return {};
|
|
1248
|
+
}
|
|
1249
|
+
}
|
|
1250
|
+
/**
|
|
1251
|
+
* Generates a human-readable description for a node based on its parameters and type definition.
|
|
1252
|
+
*
|
|
1253
|
+
* This function creates a descriptive string that represents what the node does,
|
|
1254
|
+
* based on its resource, operation, and node type information. The description is
|
|
1255
|
+
* formatted in one of the following ways:
|
|
1256
|
+
*
|
|
1257
|
+
* 1. "{action} in {displayName}" if the operation has a defined action
|
|
1258
|
+
* 2. "{operation} {resource} in {displayName}" if resource and operation exist
|
|
1259
|
+
* 3. The node type's description field as a fallback
|
|
1260
|
+
*/
|
|
1261
|
+
function makeDescription(nodeParameters, nodeTypeDescription) {
|
|
1262
|
+
const { action, operation, resource } = resolveResourceAndOperation(nodeParameters, nodeTypeDescription);
|
|
1263
|
+
if (action) {
|
|
1264
|
+
return `${action} in ${nodeTypeDescription.defaults.name}`;
|
|
1265
|
+
}
|
|
1266
|
+
if (resource && operation) {
|
|
1267
|
+
return `${operation} ${resource} in ${nodeTypeDescription.defaults.name}`;
|
|
1268
|
+
}
|
|
1269
|
+
return nodeTypeDescription.description;
|
|
1270
|
+
}
|
|
1271
|
+
function isTool(nodeTypeDescription, parameters) {
|
|
1272
|
+
// Check if node is a vector store in retrieve-as-tool mode
|
|
1273
|
+
if (nodeTypeDescription.name.includes('vectorStore')) {
|
|
1274
|
+
const mode = parameters.mode;
|
|
1275
|
+
return mode === 'retrieve-as-tool';
|
|
1276
|
+
}
|
|
1277
|
+
// Check for other tool nodes
|
|
1278
|
+
for (const output of nodeTypeDescription.outputs) {
|
|
1279
|
+
if (typeof output === 'string') {
|
|
1280
|
+
return output === interfaces_1.NodeConnectionTypes.AiTool;
|
|
1281
|
+
}
|
|
1282
|
+
else if (output?.type && output.type === interfaces_1.NodeConnectionTypes.AiTool) {
|
|
1283
|
+
return true;
|
|
1284
|
+
}
|
|
1285
|
+
}
|
|
1286
|
+
return false;
|
|
1287
|
+
}
|
|
1288
|
+
/**
|
|
1289
|
+
* Generates a resource and operation aware node name.
|
|
1290
|
+
*
|
|
1291
|
+
* Appends `in {nodeTypeDisplayName}` if nodeType is a tool
|
|
1292
|
+
*
|
|
1293
|
+
* 1. "{action}" if the operation has a defined action
|
|
1294
|
+
* 2. "{operation} {resource}" if resource and operation exist
|
|
1295
|
+
* 3. The node type's defaults.name field or displayName as a fallback
|
|
1296
|
+
*/
|
|
1297
|
+
function makeNodeName(nodeParameters, nodeTypeDescription) {
|
|
1298
|
+
const { action, operation, resource } = resolveResourceAndOperation(nodeParameters, nodeTypeDescription);
|
|
1299
|
+
const postfix = isTool(nodeTypeDescription, nodeParameters)
|
|
1300
|
+
? ` in ${nodeTypeDescription.defaults.name}`
|
|
1301
|
+
: '';
|
|
1302
|
+
if (action) {
|
|
1303
|
+
return `${action}${postfix}`;
|
|
1304
|
+
}
|
|
1305
|
+
if (resource && operation) {
|
|
1306
|
+
const operationProper = operation[0].toUpperCase() + operation.slice(1);
|
|
1307
|
+
return `${operationProper} ${resource}${postfix}`;
|
|
1308
|
+
}
|
|
1309
|
+
return nodeTypeDescription.defaults.name ?? nodeTypeDescription.displayName;
|
|
1310
|
+
}
|
|
1311
|
+
/**
|
|
1312
|
+
* Returns true if the node name is of format `<defaultNodeName>\d*` , which includes auto-renamed nodes
|
|
1313
|
+
*/
|
|
1314
|
+
function isDefaultNodeName(name, nodeType, parameters) {
|
|
1315
|
+
const legacyDefaultName = nodeType.defaults.name ?? nodeType.displayName;
|
|
1316
|
+
const currentDefaultName = makeNodeName(parameters, nodeType);
|
|
1317
|
+
for (const defaultName of [legacyDefaultName, currentDefaultName]) {
|
|
1318
|
+
if (name.startsWith(defaultName) && /^\d*$/.test(name.slice(defaultName.length)))
|
|
1319
|
+
return true;
|
|
1320
|
+
}
|
|
1321
|
+
return false;
|
|
1322
|
+
}
|
|
1323
|
+
/**
|
|
1324
|
+
* Determines whether a tool description should be updated and returns the new description if needed.
|
|
1325
|
+
* Returns undefined if no update is needed.
|
|
1326
|
+
*/
|
|
1327
|
+
const getUpdatedToolDescription = (currentNodeType, newParameters, currentParameters) => {
|
|
1328
|
+
if (!currentNodeType)
|
|
1329
|
+
return;
|
|
1330
|
+
if (newParameters?.descriptionType === 'manual' && currentParameters) {
|
|
1331
|
+
const previousDescription = makeDescription(currentParameters, currentNodeType);
|
|
1332
|
+
const newDescription = makeDescription(newParameters, currentNodeType);
|
|
1333
|
+
if (newParameters.toolDescription === previousDescription ||
|
|
1334
|
+
!newParameters.toolDescription?.toString().trim() ||
|
|
1335
|
+
newParameters.toolDescription === currentNodeType.description) {
|
|
1336
|
+
return newDescription;
|
|
1337
|
+
}
|
|
1338
|
+
}
|
|
1339
|
+
return;
|
|
1340
|
+
};
|
|
1341
|
+
exports.getUpdatedToolDescription = getUpdatedToolDescription;
|
|
1342
|
+
/**
|
|
1343
|
+
* Generates a tool description for a given node based on its parameters and type.
|
|
1344
|
+
*/
|
|
1345
|
+
function getToolDescriptionForNode(node, nodeType) {
|
|
1346
|
+
let toolDescription;
|
|
1347
|
+
if (node.parameters.descriptionType === 'auto' ||
|
|
1348
|
+
!node?.parameters.toolDescription?.toString().trim()) {
|
|
1349
|
+
toolDescription = makeDescription(node.parameters, nodeType.description);
|
|
1350
|
+
}
|
|
1351
|
+
else if (node?.parameters.toolDescription) {
|
|
1352
|
+
toolDescription = node.parameters.toolDescription;
|
|
1353
|
+
}
|
|
1354
|
+
else {
|
|
1355
|
+
toolDescription = nodeType.description.description;
|
|
1356
|
+
}
|
|
1357
|
+
return toolDescription;
|
|
1358
|
+
}
|
|
1359
|
+
/**
|
|
1360
|
+
* Attempts to retrieve the ID of a subworkflow from a execute workflow node.
|
|
1361
|
+
*/
|
|
1362
|
+
function getSubworkflowId(node) {
|
|
1363
|
+
if (isNodeWithWorkflowSelector(node) && (0, type_guards_1.isResourceLocatorValue)(node.parameters.workflowId)) {
|
|
1364
|
+
return node.parameters.workflowId.value;
|
|
1365
|
+
}
|
|
1366
|
+
return;
|
|
1367
|
+
}
|
|
1368
|
+
});
|
|
1369
|
+
//# sourceMappingURL=node-helpers.js.map
|