n8n-workflow 2.31.2 → 2.32.0
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/cjs/augment-object.js +136 -146
- package/dist/cjs/augment-object.js.map +1 -1
- package/dist/cjs/build.tsbuildinfo +1 -1
- package/dist/cjs/common/find-ai-root-node-names.js +36 -46
- package/dist/cjs/common/find-ai-root-node-names.js.map +1 -1
- package/dist/cjs/common/get-child-nodes.js +8 -18
- package/dist/cjs/common/get-child-nodes.js.map +1 -1
- package/dist/cjs/common/get-connected-nodes.js +84 -94
- package/dist/cjs/common/get-connected-nodes.js.map +1 -1
- package/dist/cjs/common/get-node-by-name.js +16 -26
- package/dist/cjs/common/get-node-by-name.js.map +1 -1
- package/dist/cjs/common/get-parent-nodes.js +14 -24
- package/dist/cjs/common/get-parent-nodes.js.map +1 -1
- package/dist/cjs/common/index.js +9 -19
- package/dist/cjs/common/index.js.map +1 -1
- package/dist/cjs/common/map-connections-by-destination.js +31 -41
- package/dist/cjs/common/map-connections-by-destination.js.map +1 -1
- package/dist/cjs/common/resolve-variables.d.ts +8 -0
- package/dist/cjs/common/resolve-variables.d.ts.map +1 -1
- package/dist/cjs/common/resolve-variables.js +46 -33
- package/dist/cjs/common/resolve-variables.js.map +1 -1
- package/dist/cjs/connections-diff.js +58 -68
- package/dist/cjs/connections-diff.js.map +1 -1
- package/dist/cjs/constants.d.ts +3 -3
- package/dist/cjs/constants.d.ts.map +1 -1
- package/dist/cjs/constants.js +157 -166
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/credential-domain-restrictions.js +153 -163
- package/dist/cjs/credential-domain-restrictions.js.map +1 -1
- package/dist/cjs/cron.d.ts.map +1 -1
- package/dist/cjs/cron.js +25 -35
- package/dist/cjs/cron.js.map +1 -1
- package/dist/cjs/data-table.types.js +10 -20
- package/dist/cjs/data-table.types.js.map +1 -1
- package/dist/cjs/dynamic-credentials-helpers.js +93 -103
- package/dist/cjs/dynamic-credentials-helpers.js.map +1 -1
- package/dist/cjs/errors/abstract/execution-base.error.d.ts.map +1 -1
- package/dist/cjs/errors/abstract/execution-base.error.js +41 -51
- package/dist/cjs/errors/abstract/execution-base.error.js.map +1 -1
- package/dist/cjs/errors/abstract/node.error.d.ts.map +1 -1
- package/dist/cjs/errors/abstract/node.error.js +142 -152
- package/dist/cjs/errors/abstract/node.error.js.map +1 -1
- package/dist/cjs/errors/base/base.error.d.ts.map +1 -1
- package/dist/cjs/errors/base/base.error.js +35 -45
- package/dist/cjs/errors/base/base.error.js.map +1 -1
- package/dist/cjs/errors/base/operational.error.d.ts.map +1 -1
- package/dist/cjs/errors/base/operational.error.js +17 -27
- package/dist/cjs/errors/base/operational.error.js.map +1 -1
- package/dist/cjs/errors/base/unexpected.error.d.ts.map +1 -1
- package/dist/cjs/errors/base/unexpected.error.js +17 -27
- package/dist/cjs/errors/base/unexpected.error.js.map +1 -1
- package/dist/cjs/errors/base/user.error.d.ts.map +1 -1
- package/dist/cjs/errors/base/user.error.js +17 -27
- package/dist/cjs/errors/base/user.error.js.map +1 -1
- package/dist/cjs/errors/cli-subworkflow-operation.error.js +7 -17
- package/dist/cjs/errors/cli-subworkflow-operation.error.js.map +1 -1
- package/dist/cjs/errors/db-connection-timeout-error.d.ts.map +1 -1
- package/dist/cjs/errors/db-connection-timeout-error.js +11 -21
- package/dist/cjs/errors/db-connection-timeout-error.js.map +1 -1
- package/dist/cjs/errors/execution-cancelled.error.d.ts.map +1 -1
- package/dist/cjs/errors/execution-cancelled.error.js +33 -43
- package/dist/cjs/errors/execution-cancelled.error.js.map +1 -1
- package/dist/cjs/errors/expression-class-extension.error.d.ts.map +1 -1
- package/dist/cjs/errors/expression-class-extension.error.js +9 -19
- package/dist/cjs/errors/expression-class-extension.error.js.map +1 -1
- package/dist/cjs/errors/expression-computed-destructuring.error.d.ts.map +1 -1
- package/dist/cjs/errors/expression-computed-destructuring.error.js +9 -19
- package/dist/cjs/errors/expression-computed-destructuring.error.js.map +1 -1
- package/dist/cjs/errors/expression-destructuring.error.d.ts.map +1 -1
- package/dist/cjs/errors/expression-destructuring.error.js +9 -19
- package/dist/cjs/errors/expression-destructuring.error.js.map +1 -1
- package/dist/cjs/errors/expression-extension.error.js +7 -17
- package/dist/cjs/errors/expression-extension.error.js.map +1 -1
- package/dist/cjs/errors/expression-reserved-variable.error.d.ts.map +1 -1
- package/dist/cjs/errors/expression-reserved-variable.error.js +9 -19
- package/dist/cjs/errors/expression-reserved-variable.error.js.map +1 -1
- package/dist/cjs/errors/expression-with-statement.error.d.ts.map +1 -1
- package/dist/cjs/errors/expression-with-statement.error.js +9 -19
- package/dist/cjs/errors/expression-with-statement.error.js.map +1 -1
- package/dist/cjs/errors/expression.error.d.ts.map +1 -1
- package/dist/cjs/errors/expression.error.js +33 -43
- package/dist/cjs/errors/expression.error.js.map +1 -1
- package/dist/cjs/errors/index.js +62 -72
- package/dist/cjs/errors/index.js.map +1 -1
- package/dist/cjs/errors/node-api.error.d.ts.map +1 -1
- package/dist/cjs/errors/node-api.error.js +227 -237
- package/dist/cjs/errors/node-api.error.js.map +1 -1
- package/dist/cjs/errors/node-operation.error.d.ts.map +1 -1
- package/dist/cjs/errors/node-operation.error.js +43 -53
- package/dist/cjs/errors/node-operation.error.js.map +1 -1
- package/dist/cjs/errors/node-ssl.error.d.ts.map +1 -1
- package/dist/cjs/errors/node-ssl.error.js +9 -19
- package/dist/cjs/errors/node-ssl.error.js.map +1 -1
- package/dist/cjs/errors/subworkflow-operation.error.d.ts.map +1 -1
- package/dist/cjs/errors/subworkflow-operation.error.js +18 -28
- package/dist/cjs/errors/subworkflow-operation.error.js.map +1 -1
- package/dist/cjs/errors/trigger-close.error.d.ts.map +1 -1
- package/dist/cjs/errors/trigger-close.error.js +11 -21
- package/dist/cjs/errors/trigger-close.error.js.map +1 -1
- package/dist/cjs/errors/webhook-taken.error.d.ts.map +1 -1
- package/dist/cjs/errors/webhook-taken.error.js +9 -19
- package/dist/cjs/errors/webhook-taken.error.js.map +1 -1
- package/dist/cjs/errors/workflow-activation.error.d.ts.map +1 -1
- package/dist/cjs/errors/workflow-activation.error.js +54 -64
- package/dist/cjs/errors/workflow-activation.error.js.map +1 -1
- package/dist/cjs/errors/workflow-configuration.error.js +10 -20
- package/dist/cjs/errors/workflow-configuration.error.js.map +1 -1
- package/dist/cjs/errors/workflow-deactivation.error.js +7 -17
- package/dist/cjs/errors/workflow-deactivation.error.js.map +1 -1
- package/dist/cjs/errors/workflow-operation.error.d.ts.map +1 -1
- package/dist/cjs/errors/workflow-operation.error.js +20 -30
- package/dist/cjs/errors/workflow-operation.error.js.map +1 -1
- package/dist/cjs/evaluation-helpers.js +16 -26
- package/dist/cjs/evaluation-helpers.js.map +1 -1
- package/dist/cjs/execution-context-establishment-hooks.d.ts.map +1 -1
- package/dist/cjs/execution-context-establishment-hooks.js +43 -53
- package/dist/cjs/execution-context-establishment-hooks.js.map +1 -1
- package/dist/cjs/execution-context.d.ts +14 -14
- package/dist/cjs/execution-context.d.ts.map +1 -1
- package/dist/cjs/execution-context.js +203 -213
- package/dist/cjs/execution-context.js.map +1 -1
- package/dist/cjs/execution-status.d.ts +2 -2
- package/dist/cjs/execution-status.d.ts.map +1 -1
- package/dist/cjs/execution-status.js +27 -37
- package/dist/cjs/execution-status.js.map +1 -1
- package/dist/cjs/expression-evaluator-proxy.d.ts.map +1 -1
- package/dist/cjs/expression-evaluator-proxy.js +18 -28
- package/dist/cjs/expression-evaluator-proxy.js.map +1 -1
- package/dist/cjs/expression-sandboxing.d.ts.map +1 -1
- package/dist/cjs/expression-sandboxing.js +447 -457
- package/dist/cjs/expression-sandboxing.js.map +1 -1
- package/dist/cjs/expression.d.ts.map +1 -1
- package/dist/cjs/expression.js +535 -546
- package/dist/cjs/expression.js.map +1 -1
- package/dist/cjs/expressions/expression-helpers.d.ts.map +1 -1
- package/dist/cjs/expressions/expression-helpers.js +13 -23
- package/dist/cjs/expressions/expression-helpers.js.map +1 -1
- package/dist/cjs/extensions/array-extensions.js +591 -601
- package/dist/cjs/extensions/array-extensions.js.map +1 -1
- package/dist/cjs/extensions/boolean-extensions.d.ts +1 -1
- package/dist/cjs/extensions/boolean-extensions.js +38 -48
- package/dist/cjs/extensions/boolean-extensions.js.map +1 -1
- package/dist/cjs/extensions/date-extensions.js +507 -517
- package/dist/cjs/extensions/date-extensions.js.map +1 -1
- package/dist/cjs/extensions/expression-extension.d.ts.map +1 -1
- package/dist/cjs/extensions/expression-extension.js +455 -465
- package/dist/cjs/extensions/expression-extension.js.map +1 -1
- package/dist/cjs/extensions/expression-parser.d.ts.map +1 -1
- package/dist/cjs/extensions/expression-parser.js +82 -92
- package/dist/cjs/extensions/expression-parser.js.map +1 -1
- package/dist/cjs/extensions/extended-functions.d.ts +10 -18
- package/dist/cjs/extensions/extended-functions.d.ts.map +1 -1
- package/dist/cjs/extensions/extended-functions.js +80 -90
- package/dist/cjs/extensions/extended-functions.js.map +1 -1
- package/dist/cjs/extensions/extensions.js +2 -12
- package/dist/cjs/extensions/index.js +10 -20
- package/dist/cjs/extensions/index.js.map +1 -1
- package/dist/cjs/extensions/number-extensions.js +226 -236
- package/dist/cjs/extensions/number-extensions.js.map +1 -1
- package/dist/cjs/extensions/object-extensions.js +274 -284
- package/dist/cjs/extensions/object-extensions.js.map +1 -1
- package/dist/cjs/extensions/string-extensions.d.ts +1 -1
- package/dist/cjs/extensions/string-extensions.d.ts.map +1 -1
- package/dist/cjs/extensions/string-extensions.js +769 -779
- package/dist/cjs/extensions/string-extensions.js.map +1 -1
- package/dist/cjs/extensions/utils.d.ts.map +1 -1
- package/dist/cjs/extensions/utils.js +35 -45
- package/dist/cjs/extensions/utils.js.map +1 -1
- package/dist/cjs/from-ai-parse-utils.js +393 -403
- package/dist/cjs/from-ai-parse-utils.js.map +1 -1
- package/dist/cjs/global-state.js +12 -22
- package/dist/cjs/global-state.js.map +1 -1
- package/dist/cjs/graph/graph-utils.js +166 -176
- package/dist/cjs/graph/graph-utils.js.map +1 -1
- package/dist/cjs/highlighted-data.js +13 -23
- package/dist/cjs/highlighted-data.js.map +1 -1
- package/dist/cjs/index.js +105 -115
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces.d.ts +112 -22
- package/dist/cjs/interfaces.d.ts.map +1 -1
- package/dist/cjs/interfaces.js +62 -72
- package/dist/cjs/interfaces.js.map +1 -1
- package/dist/cjs/jmespath-query.js +26 -36
- package/dist/cjs/jmespath-query.js.map +1 -1
- package/dist/cjs/logger-proxy.d.ts.map +1 -1
- package/dist/cjs/logger-proxy.js +15 -25
- package/dist/cjs/logger-proxy.js.map +1 -1
- package/dist/cjs/mcp-helpers.js +10 -20
- package/dist/cjs/mcp-helpers.js.map +1 -1
- package/dist/cjs/message-event-bus.d.ts +184 -165
- package/dist/cjs/message-event-bus.d.ts.map +1 -1
- package/dist/cjs/message-event-bus.js +207 -217
- package/dist/cjs/message-event-bus.js.map +1 -1
- package/dist/cjs/metadata-utils.js +35 -45
- package/dist/cjs/metadata-utils.js.map +1 -1
- package/dist/cjs/native-methods/array.methods.js +527 -537
- package/dist/cjs/native-methods/array.methods.js.map +1 -1
- package/dist/cjs/native-methods/boolean.methods.js +18 -28
- package/dist/cjs/native-methods/boolean.methods.js.map +1 -1
- package/dist/cjs/native-methods/index.js +16 -26
- package/dist/cjs/native-methods/index.js.map +1 -1
- package/dist/cjs/native-methods/number.methods.js +79 -89
- package/dist/cjs/native-methods/number.methods.js.map +1 -1
- package/dist/cjs/native-methods/object.methods.js +7 -17
- package/dist/cjs/native-methods/object.methods.js.map +1 -1
- package/dist/cjs/native-methods/string.methods.js +474 -484
- package/dist/cjs/native-methods/string.methods.js.map +1 -1
- package/dist/cjs/node-grouping-validation.d.ts +6 -0
- package/dist/cjs/node-grouping-validation.d.ts.map +1 -1
- package/dist/cjs/node-grouping-validation.js +165 -144
- package/dist/cjs/node-grouping-validation.js.map +1 -1
- package/dist/cjs/node-helpers.d.ts.map +1 -1
- package/dist/cjs/node-helpers.js +1486 -1493
- package/dist/cjs/node-helpers.js.map +1 -1
- package/dist/cjs/node-parameters/filter-parameter.d.ts.map +1 -1
- package/dist/cjs/node-parameters/filter-parameter.js +315 -325
- package/dist/cjs/node-parameters/filter-parameter.js.map +1 -1
- package/dist/cjs/node-parameters/node-parameter-value-type-guard.js +105 -115
- package/dist/cjs/node-parameters/node-parameter-value-type-guard.js.map +1 -1
- package/dist/cjs/node-parameters/parameter-type-validation.js +120 -130
- package/dist/cjs/node-parameters/parameter-type-validation.js.map +1 -1
- package/dist/cjs/node-parameters/path-utils.js +21 -31
- package/dist/cjs/node-parameters/path-utils.js.map +1 -1
- package/dist/cjs/node-parameters/rename-node-utils.js +22 -32
- package/dist/cjs/node-parameters/rename-node-utils.js.map +1 -1
- package/dist/cjs/node-reference-parser-utils.js +472 -482
- package/dist/cjs/node-reference-parser-utils.js.map +1 -1
- package/dist/cjs/node-validation.js +59 -69
- package/dist/cjs/node-validation.js.map +1 -1
- package/dist/cjs/observable-object.js +56 -66
- package/dist/cjs/observable-object.js.map +1 -1
- package/dist/cjs/redaction-channels.js +36 -46
- package/dist/cjs/redaction-channels.js.map +1 -1
- package/dist/cjs/run-execution-data/run-execution-data.js +15 -25
- package/dist/cjs/run-execution-data/run-execution-data.js.map +1 -1
- package/dist/cjs/run-execution-data/run-execution-data.v0.js +2 -12
- package/dist/cjs/run-execution-data/run-execution-data.v1.js +26 -36
- package/dist/cjs/run-execution-data/run-execution-data.v1.js.map +1 -1
- package/dist/cjs/run-execution-data-factory.js +113 -123
- package/dist/cjs/run-execution-data-factory.js.map +1 -1
- package/dist/cjs/schemas.d.ts +13 -13
- package/dist/cjs/schemas.d.ts.map +1 -1
- package/dist/cjs/schemas.js +351 -360
- package/dist/cjs/schemas.js.map +1 -1
- package/dist/cjs/sub-workflow-output.js +10 -20
- package/dist/cjs/sub-workflow-output.js.map +1 -1
- package/dist/cjs/telemetry-helpers.d.ts.map +1 -1
- package/dist/cjs/telemetry-helpers.js +716 -726
- package/dist/cjs/telemetry-helpers.js.map +1 -1
- package/dist/cjs/tool-helpers.js +18 -28
- package/dist/cjs/tool-helpers.js.map +1 -1
- package/dist/cjs/trigger-identity.js +41 -51
- package/dist/cjs/trigger-identity.js.map +1 -1
- package/dist/cjs/trimmed-task-data.js +21 -31
- package/dist/cjs/trimmed-task-data.js.map +1 -1
- package/dist/cjs/type-guards.d.ts +3 -3
- package/dist/cjs/type-guards.d.ts.map +1 -1
- package/dist/cjs/type-guards.js +74 -84
- package/dist/cjs/type-guards.js.map +1 -1
- package/dist/cjs/type-validation.d.ts.map +1 -1
- package/dist/cjs/type-validation.js +383 -393
- package/dist/cjs/type-validation.js.map +1 -1
- package/dist/cjs/utils.d.ts +2 -2
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +430 -440
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/versioned-node-type.d.ts.map +1 -1
- package/dist/cjs/versioned-node-type.js +20 -30
- package/dist/cjs/versioned-node-type.js.map +1 -1
- package/dist/cjs/workflow-checksum.js +67 -77
- package/dist/cjs/workflow-checksum.js.map +1 -1
- package/dist/cjs/workflow-data-proxy-env-provider.js +58 -68
- package/dist/cjs/workflow-data-proxy-env-provider.js.map +1 -1
- package/dist/cjs/workflow-data-proxy-helpers.js +8 -18
- package/dist/cjs/workflow-data-proxy-helpers.js.map +1 -1
- package/dist/cjs/workflow-data-proxy.d.ts.map +1 -1
- package/dist/cjs/workflow-data-proxy.js +1162 -1172
- package/dist/cjs/workflow-data-proxy.js.map +1 -1
- package/dist/cjs/workflow-diff.d.ts +2 -1
- package/dist/cjs/workflow-diff.d.ts.map +1 -1
- package/dist/cjs/workflow-diff.js +292 -300
- package/dist/cjs/workflow-diff.js.map +1 -1
- package/dist/cjs/workflow-environments-helper.js +23 -33
- package/dist/cjs/workflow-environments-helper.js.map +1 -1
- package/dist/cjs/workflow-expression.d.ts.map +1 -1
- package/dist/cjs/workflow-expression.js +97 -107
- package/dist/cjs/workflow-expression.js.map +1 -1
- package/dist/cjs/workflow-structure-validation.d.ts.map +1 -1
- package/dist/cjs/workflow-structure-validation.js +140 -150
- package/dist/cjs/workflow-structure-validation.js.map +1 -1
- package/dist/cjs/workflow-validation.js +40 -50
- package/dist/cjs/workflow-validation.js.map +1 -1
- package/dist/cjs/workflow.d.ts.map +1 -1
- package/dist/cjs/workflow.js +612 -622
- package/dist/cjs/workflow.js.map +1 -1
- package/dist/esm/common/get-child-nodes.js.map +1 -1
- package/dist/esm/common/get-connected-nodes.js.map +1 -1
- package/dist/esm/common/get-parent-nodes.js.map +1 -1
- package/dist/esm/common/resolve-variables.d.ts +8 -0
- package/dist/esm/common/resolve-variables.d.ts.map +1 -1
- package/dist/esm/common/resolve-variables.js +22 -0
- package/dist/esm/common/resolve-variables.js.map +1 -1
- package/dist/esm/constants.d.ts +3 -3
- package/dist/esm/constants.d.ts.map +1 -1
- package/dist/esm/cron.d.ts.map +1 -1
- package/dist/esm/errors/abstract/execution-base.error.d.ts.map +1 -1
- package/dist/esm/errors/abstract/execution-base.error.js.map +1 -1
- package/dist/esm/errors/abstract/node.error.d.ts.map +1 -1
- package/dist/esm/errors/abstract/node.error.js.map +1 -1
- package/dist/esm/errors/base/base.error.d.ts.map +1 -1
- package/dist/esm/errors/base/base.error.js.map +1 -1
- package/dist/esm/errors/base/operational.error.d.ts.map +1 -1
- package/dist/esm/errors/base/operational.error.js.map +1 -1
- package/dist/esm/errors/base/unexpected.error.d.ts.map +1 -1
- package/dist/esm/errors/base/unexpected.error.js.map +1 -1
- package/dist/esm/errors/base/user.error.d.ts.map +1 -1
- package/dist/esm/errors/base/user.error.js.map +1 -1
- package/dist/esm/errors/db-connection-timeout-error.d.ts.map +1 -1
- package/dist/esm/errors/execution-cancelled.error.d.ts.map +1 -1
- package/dist/esm/errors/expression-class-extension.error.d.ts.map +1 -1
- package/dist/esm/errors/expression-computed-destructuring.error.d.ts.map +1 -1
- package/dist/esm/errors/expression-destructuring.error.d.ts.map +1 -1
- package/dist/esm/errors/expression-reserved-variable.error.d.ts.map +1 -1
- package/dist/esm/errors/expression-with-statement.error.d.ts.map +1 -1
- package/dist/esm/errors/expression.error.d.ts.map +1 -1
- package/dist/esm/errors/node-api.error.d.ts.map +1 -1
- package/dist/esm/errors/node-api.error.js.map +1 -1
- package/dist/esm/errors/node-operation.error.d.ts.map +1 -1
- package/dist/esm/errors/node-operation.error.js.map +1 -1
- package/dist/esm/errors/node-ssl.error.d.ts.map +1 -1
- package/dist/esm/errors/subworkflow-operation.error.d.ts.map +1 -1
- package/dist/esm/errors/trigger-close.error.d.ts.map +1 -1
- package/dist/esm/errors/trigger-close.error.js.map +1 -1
- package/dist/esm/errors/webhook-taken.error.d.ts.map +1 -1
- package/dist/esm/errors/workflow-activation.error.d.ts.map +1 -1
- package/dist/esm/errors/workflow-activation.error.js.map +1 -1
- package/dist/esm/errors/workflow-operation.error.d.ts.map +1 -1
- package/dist/esm/execution-context-establishment-hooks.d.ts.map +1 -1
- package/dist/esm/execution-context.d.ts +14 -14
- package/dist/esm/execution-context.d.ts.map +1 -1
- package/dist/esm/execution-status.d.ts +2 -2
- package/dist/esm/execution-status.d.ts.map +1 -1
- package/dist/esm/expression-evaluator-proxy.d.ts.map +1 -1
- package/dist/esm/expression-sandboxing.d.ts.map +1 -1
- package/dist/esm/expression-sandboxing.js.map +1 -1
- package/dist/esm/expression.d.ts.map +1 -1
- package/dist/esm/expression.js.map +1 -1
- package/dist/esm/expressions/expression-helpers.d.ts.map +1 -1
- package/dist/esm/extensions/boolean-extensions.d.ts +1 -1
- package/dist/esm/extensions/expression-extension.d.ts.map +1 -1
- package/dist/esm/extensions/expression-parser.d.ts.map +1 -1
- package/dist/esm/extensions/extended-functions.d.ts +10 -18
- package/dist/esm/extensions/extended-functions.d.ts.map +1 -1
- package/dist/esm/extensions/number-extensions.js.map +1 -1
- package/dist/esm/extensions/string-extensions.d.ts +1 -1
- package/dist/esm/extensions/string-extensions.d.ts.map +1 -1
- package/dist/esm/extensions/string-extensions.js.map +1 -1
- package/dist/esm/extensions/utils.d.ts.map +1 -1
- package/dist/esm/from-ai-parse-utils.js.map +1 -1
- package/dist/esm/interfaces.d.ts +112 -22
- package/dist/esm/interfaces.d.ts.map +1 -1
- package/dist/esm/interfaces.js.map +1 -1
- package/dist/esm/logger-proxy.d.ts.map +1 -1
- package/dist/esm/message-event-bus.d.ts +184 -165
- package/dist/esm/message-event-bus.d.ts.map +1 -1
- package/dist/esm/message-event-bus.js +2 -2
- package/dist/esm/message-event-bus.js.map +1 -1
- package/dist/esm/node-grouping-validation.d.ts +6 -0
- package/dist/esm/node-grouping-validation.d.ts.map +1 -1
- package/dist/esm/node-grouping-validation.js +34 -5
- package/dist/esm/node-grouping-validation.js.map +1 -1
- package/dist/esm/node-helpers.d.ts.map +1 -1
- package/dist/esm/node-helpers.js +3 -0
- package/dist/esm/node-helpers.js.map +1 -1
- package/dist/esm/node-parameters/filter-parameter.d.ts.map +1 -1
- package/dist/esm/node-parameters/filter-parameter.js.map +1 -1
- package/dist/esm/node-reference-parser-utils.js.map +1 -1
- package/dist/esm/run-execution-data-factory.js.map +1 -1
- package/dist/esm/schemas.d.ts +13 -13
- package/dist/esm/schemas.d.ts.map +1 -1
- package/dist/esm/schemas.js +1 -0
- package/dist/esm/schemas.js.map +1 -1
- package/dist/esm/telemetry-helpers.d.ts.map +1 -1
- package/dist/esm/telemetry-helpers.js.map +1 -1
- package/dist/esm/type-guards.d.ts +3 -3
- package/dist/esm/type-guards.d.ts.map +1 -1
- package/dist/esm/type-validation.d.ts.map +1 -1
- package/dist/esm/type-validation.js.map +1 -1
- package/dist/esm/typecheck.tsbuildinfo +1 -1
- package/dist/esm/utils.d.ts +2 -2
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/versioned-node-type.d.ts.map +1 -1
- package/dist/esm/workflow-data-proxy.d.ts.map +1 -1
- package/dist/esm/workflow-data-proxy.js.map +1 -1
- package/dist/esm/workflow-diff.d.ts +2 -1
- package/dist/esm/workflow-diff.d.ts.map +1 -1
- package/dist/esm/workflow-diff.js +3 -1
- package/dist/esm/workflow-diff.js.map +1 -1
- package/dist/esm/workflow-expression.d.ts.map +1 -1
- package/dist/esm/workflow-expression.js.map +1 -1
- package/dist/esm/workflow-structure-validation.d.ts.map +1 -1
- package/dist/esm/workflow-structure-validation.js.map +1 -1
- package/dist/esm/workflow.d.ts.map +1 -1
- package/dist/esm/workflow.js.map +1 -1
- package/package.json +10 -9
|
@@ -1,448 +1,438 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
2
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
3
4
|
};
|
|
4
|
-
(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.tryToParseJwt = exports.tryToParseUrl = exports.getValueDescription = exports.tryToParseJsonToFormFields = exports.tryToParseBinary = exports.tryToParseObject = exports.tryToParseArray = exports.tryToParseTime = exports.tryToParseDateTime = exports.tryToParseBoolean = exports.tryToParseAlphanumericString = exports.tryToParseString = exports.tryToParseNumber = void 0;
|
|
7
|
+
exports.validateFieldType = validateFieldType;
|
|
8
|
+
const isObject_1 = __importDefault(require("lodash/isObject"));
|
|
9
|
+
const luxon_1 = require("luxon");
|
|
10
|
+
const errors_1 = require("./errors");
|
|
11
|
+
const utils_1 = require("./utils");
|
|
12
|
+
const type_guards_1 = require("./type-guards");
|
|
13
|
+
const tryToParseNumber = (value) => {
|
|
14
|
+
const isValidNumber = !isNaN(Number(value));
|
|
15
|
+
if (!isValidNumber) {
|
|
16
|
+
throw new errors_1.UserError('Failed to parse value to number', { extra: { value } });
|
|
8
17
|
}
|
|
9
|
-
|
|
10
|
-
|
|
18
|
+
return Number(value);
|
|
19
|
+
};
|
|
20
|
+
exports.tryToParseNumber = tryToParseNumber;
|
|
21
|
+
const tryToParseString = (value) => {
|
|
22
|
+
if (typeof value === 'object')
|
|
23
|
+
return JSON.stringify(value);
|
|
24
|
+
if (typeof value === 'undefined')
|
|
25
|
+
return '';
|
|
26
|
+
if (typeof value === 'string' ||
|
|
27
|
+
typeof value === 'bigint' ||
|
|
28
|
+
typeof value === 'boolean' ||
|
|
29
|
+
typeof value === 'number') {
|
|
30
|
+
return value.toString();
|
|
11
31
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
typeof value === 'number') {
|
|
39
|
-
return value.toString();
|
|
40
|
-
}
|
|
41
|
-
return String(value);
|
|
42
|
-
};
|
|
43
|
-
exports.tryToParseString = tryToParseString;
|
|
44
|
-
const tryToParseAlphanumericString = (value) => {
|
|
45
|
-
const parsed = (0, exports.tryToParseString)(value);
|
|
46
|
-
// We do not allow special characters, only letters, numbers and underscore
|
|
47
|
-
// Numbers not allowed as the first character
|
|
48
|
-
const regex = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
49
|
-
if (!regex.test(parsed)) {
|
|
50
|
-
throw new errors_1.UserError('Value is not a valid alphanumeric string', { extra: { value } });
|
|
51
|
-
}
|
|
52
|
-
return parsed;
|
|
53
|
-
};
|
|
54
|
-
exports.tryToParseAlphanumericString = tryToParseAlphanumericString;
|
|
55
|
-
const tryToParseBoolean = (value) => {
|
|
56
|
-
if (typeof value === 'boolean') {
|
|
57
|
-
return value;
|
|
32
|
+
return String(value);
|
|
33
|
+
};
|
|
34
|
+
exports.tryToParseString = tryToParseString;
|
|
35
|
+
const tryToParseAlphanumericString = (value) => {
|
|
36
|
+
const parsed = (0, exports.tryToParseString)(value);
|
|
37
|
+
// We do not allow special characters, only letters, numbers and underscore
|
|
38
|
+
// Numbers not allowed as the first character
|
|
39
|
+
const regex = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
40
|
+
if (!regex.test(parsed)) {
|
|
41
|
+
throw new errors_1.UserError('Value is not a valid alphanumeric string', { extra: { value } });
|
|
42
|
+
}
|
|
43
|
+
return parsed;
|
|
44
|
+
};
|
|
45
|
+
exports.tryToParseAlphanumericString = tryToParseAlphanumericString;
|
|
46
|
+
const tryToParseBoolean = (value) => {
|
|
47
|
+
if (typeof value === 'boolean') {
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
if (typeof value === 'string' && ['true', 'false'].includes(value.toLowerCase())) {
|
|
51
|
+
return value.toLowerCase() === 'true';
|
|
52
|
+
}
|
|
53
|
+
// If value is not a empty string, try to parse it to a number
|
|
54
|
+
if (!(typeof value === 'string' && value.trim() === '')) {
|
|
55
|
+
const num = Number(value);
|
|
56
|
+
if (num === 0) {
|
|
57
|
+
return false;
|
|
58
58
|
}
|
|
59
|
-
if (
|
|
60
|
-
return
|
|
59
|
+
else if (num === 1) {
|
|
60
|
+
return true;
|
|
61
61
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
62
|
+
}
|
|
63
|
+
throw new errors_1.UserError('Failed to parse value as boolean', {
|
|
64
|
+
extra: { value },
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
exports.tryToParseBoolean = tryToParseBoolean;
|
|
68
|
+
const tryToParseDateTime = (value, defaultZone) => {
|
|
69
|
+
if (luxon_1.DateTime.isDateTime(value) && value.isValid) {
|
|
70
|
+
// Ignore the defaultZone if the value is already a DateTime
|
|
71
|
+
// because DateTime objects already contain the zone information
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
if (value instanceof Date) {
|
|
75
|
+
const fromJSDate = luxon_1.DateTime.fromJSDate(value, { zone: defaultZone });
|
|
76
|
+
if (fromJSDate.isValid) {
|
|
77
|
+
return fromJSDate;
|
|
71
78
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
}
|
|
80
|
+
const dateString = String(value).trim();
|
|
81
|
+
// Rely on luxon to parse different date formats
|
|
82
|
+
const isoDate = luxon_1.DateTime.fromISO(dateString, { zone: defaultZone, setZone: true });
|
|
83
|
+
if (isoDate.isValid) {
|
|
84
|
+
return isoDate;
|
|
85
|
+
}
|
|
86
|
+
const httpDate = luxon_1.DateTime.fromHTTP(dateString, { zone: defaultZone, setZone: true });
|
|
87
|
+
if (httpDate.isValid) {
|
|
88
|
+
return httpDate;
|
|
89
|
+
}
|
|
90
|
+
const rfc2822Date = luxon_1.DateTime.fromRFC2822(dateString, { zone: defaultZone, setZone: true });
|
|
91
|
+
if (rfc2822Date.isValid) {
|
|
92
|
+
return rfc2822Date;
|
|
93
|
+
}
|
|
94
|
+
const sqlDate = luxon_1.DateTime.fromSQL(dateString, { zone: defaultZone, setZone: true });
|
|
95
|
+
if (sqlDate.isValid) {
|
|
96
|
+
return sqlDate;
|
|
97
|
+
}
|
|
98
|
+
const parsedDateTime = luxon_1.DateTime.fromMillis(Date.parse(dateString), { zone: defaultZone });
|
|
99
|
+
if (parsedDateTime.isValid) {
|
|
100
|
+
return parsedDateTime;
|
|
101
|
+
}
|
|
102
|
+
throw new errors_1.UserError('Value is not a valid date', { extra: { dateString } });
|
|
103
|
+
};
|
|
104
|
+
exports.tryToParseDateTime = tryToParseDateTime;
|
|
105
|
+
const tryToParseTime = (value) => {
|
|
106
|
+
const isTimeInput = /^\d{2}:\d{2}(:\d{2})?((\-|\+)\d{4})?((\-|\+)\d{1,2}(:\d{2})?)?$/s.test(String(value));
|
|
107
|
+
if (!isTimeInput) {
|
|
108
|
+
throw new errors_1.UserError('Value is not a valid time', { extra: { value } });
|
|
109
|
+
}
|
|
110
|
+
return String(value);
|
|
111
|
+
};
|
|
112
|
+
exports.tryToParseTime = tryToParseTime;
|
|
113
|
+
const tryToParseArray = (value) => {
|
|
114
|
+
try {
|
|
115
|
+
if (typeof value === 'object' && Array.isArray(value)) {
|
|
81
116
|
return value;
|
|
82
117
|
}
|
|
83
|
-
|
|
84
|
-
const fromJSDate = luxon_1.DateTime.fromJSDate(value, { zone: defaultZone });
|
|
85
|
-
if (fromJSDate.isValid) {
|
|
86
|
-
return fromJSDate;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const dateString = String(value).trim();
|
|
90
|
-
// Rely on luxon to parse different date formats
|
|
91
|
-
const isoDate = luxon_1.DateTime.fromISO(dateString, { zone: defaultZone, setZone: true });
|
|
92
|
-
if (isoDate.isValid) {
|
|
93
|
-
return isoDate;
|
|
94
|
-
}
|
|
95
|
-
const httpDate = luxon_1.DateTime.fromHTTP(dateString, { zone: defaultZone, setZone: true });
|
|
96
|
-
if (httpDate.isValid) {
|
|
97
|
-
return httpDate;
|
|
98
|
-
}
|
|
99
|
-
const rfc2822Date = luxon_1.DateTime.fromRFC2822(dateString, { zone: defaultZone, setZone: true });
|
|
100
|
-
if (rfc2822Date.isValid) {
|
|
101
|
-
return rfc2822Date;
|
|
102
|
-
}
|
|
103
|
-
const sqlDate = luxon_1.DateTime.fromSQL(dateString, { zone: defaultZone, setZone: true });
|
|
104
|
-
if (sqlDate.isValid) {
|
|
105
|
-
return sqlDate;
|
|
106
|
-
}
|
|
107
|
-
const parsedDateTime = luxon_1.DateTime.fromMillis(Date.parse(dateString), { zone: defaultZone });
|
|
108
|
-
if (parsedDateTime.isValid) {
|
|
109
|
-
return parsedDateTime;
|
|
110
|
-
}
|
|
111
|
-
throw new errors_1.UserError('Value is not a valid date', { extra: { dateString } });
|
|
112
|
-
};
|
|
113
|
-
exports.tryToParseDateTime = tryToParseDateTime;
|
|
114
|
-
const tryToParseTime = (value) => {
|
|
115
|
-
const isTimeInput = /^\d{2}:\d{2}(:\d{2})?((\-|\+)\d{4})?((\-|\+)\d{1,2}(:\d{2})?)?$/s.test(String(value));
|
|
116
|
-
if (!isTimeInput) {
|
|
117
|
-
throw new errors_1.UserError('Value is not a valid time', { extra: { value } });
|
|
118
|
-
}
|
|
119
|
-
return String(value);
|
|
120
|
-
};
|
|
121
|
-
exports.tryToParseTime = tryToParseTime;
|
|
122
|
-
const tryToParseArray = (value) => {
|
|
118
|
+
let parsed;
|
|
123
119
|
try {
|
|
124
|
-
|
|
125
|
-
return value;
|
|
126
|
-
}
|
|
127
|
-
let parsed;
|
|
128
|
-
try {
|
|
129
|
-
parsed = JSON.parse(String(value));
|
|
130
|
-
}
|
|
131
|
-
catch (e) {
|
|
132
|
-
parsed = JSON.parse(String(value).replace(/'/g, '"'));
|
|
133
|
-
}
|
|
134
|
-
if (!Array.isArray(parsed)) {
|
|
135
|
-
throw new errors_1.UserError('Value is not a valid array', { extra: { value } });
|
|
136
|
-
}
|
|
137
|
-
return parsed;
|
|
120
|
+
parsed = JSON.parse(String(value));
|
|
138
121
|
}
|
|
139
122
|
catch (e) {
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
exports.tryToParseArray = tryToParseArray;
|
|
144
|
-
const tryToParseObject = (value) => {
|
|
145
|
-
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
146
|
-
return value;
|
|
123
|
+
parsed = JSON.parse(String(value).replace(/'/g, '"'));
|
|
147
124
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
if (typeof o !== 'object' || Array.isArray(o)) {
|
|
151
|
-
throw new errors_1.UserError('Value is not a valid object', { extra: { value } });
|
|
152
|
-
}
|
|
153
|
-
return o;
|
|
125
|
+
if (!Array.isArray(parsed)) {
|
|
126
|
+
throw new errors_1.UserError('Value is not a valid array', { extra: { value } });
|
|
154
127
|
}
|
|
155
|
-
|
|
128
|
+
return parsed;
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
throw new errors_1.UserError('Value is not a valid array', { extra: { value } });
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
exports.tryToParseArray = tryToParseArray;
|
|
135
|
+
const tryToParseObject = (value) => {
|
|
136
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
137
|
+
return value;
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
const o = (0, utils_1.jsonParse)(String(value), { acceptJSObject: true });
|
|
141
|
+
if (typeof o !== 'object' || Array.isArray(o)) {
|
|
156
142
|
throw new errors_1.UserError('Value is not a valid object', { extra: { value } });
|
|
157
143
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
|
|
144
|
+
return o;
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
throw new errors_1.UserError('Value is not a valid object', { extra: { value } });
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
exports.tryToParseObject = tryToParseObject;
|
|
151
|
+
const tryToParseBinary = (value) => {
|
|
152
|
+
if (!value || typeof value !== 'object' || Array.isArray(value) || !(0, type_guards_1.isBinaryValue)(value)) {
|
|
153
|
+
throw new errors_1.UserError('Value is not a valid binary data object', { extra: { value } });
|
|
154
|
+
}
|
|
155
|
+
return value;
|
|
156
|
+
};
|
|
157
|
+
exports.tryToParseBinary = tryToParseBinary;
|
|
158
|
+
const ALLOWED_FORM_FIELDS_KEYS = [
|
|
159
|
+
'fieldLabel',
|
|
160
|
+
'fieldType',
|
|
161
|
+
'placeholder',
|
|
162
|
+
'defaultValue',
|
|
163
|
+
'fieldOptions',
|
|
164
|
+
'multiselect',
|
|
165
|
+
'multipleFiles',
|
|
166
|
+
'acceptFileTypes',
|
|
167
|
+
'formatDate',
|
|
168
|
+
'requiredField',
|
|
169
|
+
'fieldValue',
|
|
170
|
+
'elementName',
|
|
171
|
+
'html',
|
|
172
|
+
'fieldName',
|
|
173
|
+
'limitSelection',
|
|
174
|
+
'numberOfSelections',
|
|
175
|
+
'minSelections',
|
|
176
|
+
'maxSelections',
|
|
177
|
+
];
|
|
178
|
+
const ALLOWED_FIELD_TYPES = [
|
|
179
|
+
'date',
|
|
180
|
+
'dropdown',
|
|
181
|
+
'email',
|
|
182
|
+
'file',
|
|
183
|
+
'number',
|
|
184
|
+
'password',
|
|
185
|
+
'text',
|
|
186
|
+
'textarea',
|
|
187
|
+
'checkbox',
|
|
188
|
+
'radio',
|
|
189
|
+
'html',
|
|
190
|
+
'hiddenField',
|
|
191
|
+
];
|
|
192
|
+
const tryToParseJsonToFormFields = (value) => {
|
|
193
|
+
const fields = [];
|
|
194
|
+
try {
|
|
195
|
+
const rawFields = (0, utils_1.jsonParse)(value, {
|
|
196
|
+
acceptJSObject: true,
|
|
197
|
+
});
|
|
198
|
+
for (const [index, field] of rawFields.entries()) {
|
|
199
|
+
for (const key of Object.keys(field)) {
|
|
200
|
+
if (!ALLOWED_FORM_FIELDS_KEYS.includes(key)) {
|
|
201
|
+
throw new errors_1.UserError(`Key '${key}' in field ${index} is not valid for form fields`);
|
|
202
|
+
}
|
|
203
|
+
if (key !== 'fieldOptions' &&
|
|
204
|
+
!['string', 'number', 'boolean'].includes(typeof field[key])) {
|
|
205
|
+
field[key] = String(field[key]);
|
|
206
|
+
}
|
|
207
|
+
else if (typeof field[key] === 'string' && key !== 'html') {
|
|
208
|
+
field[key] = field[key].replace(/</g, '<').replace(/>/g, '>');
|
|
209
|
+
}
|
|
210
|
+
if (key === 'fieldType' && !ALLOWED_FIELD_TYPES.includes(field[key])) {
|
|
211
|
+
throw new errors_1.UserError(`Field type '${field[key]}' in field ${index} is not valid for form fields`);
|
|
212
|
+
}
|
|
213
|
+
if (key === 'fieldOptions') {
|
|
214
|
+
if (Array.isArray(field[key])) {
|
|
215
|
+
field[key] = { values: field[key] };
|
|
218
216
|
}
|
|
219
|
-
if (key
|
|
220
|
-
|
|
217
|
+
if (typeof field[key] !== 'object' ||
|
|
218
|
+
!field[key].values) {
|
|
219
|
+
throw new errors_1.UserError(`Field dropdown in field ${index} does has no 'values' property that contain an array of options`);
|
|
221
220
|
}
|
|
222
|
-
|
|
223
|
-
if (
|
|
224
|
-
|
|
225
|
-
}
|
|
226
|
-
if (typeof field[key] !== 'object' ||
|
|
227
|
-
!field[key].values) {
|
|
228
|
-
throw new errors_1.UserError(`Field dropdown in field ${index} does has no 'values' property that contain an array of options`);
|
|
229
|
-
}
|
|
230
|
-
for (const [optionIndex, option] of field[key].values.entries()) {
|
|
231
|
-
if (Object.keys(option).length !== 1 || typeof option.option !== 'string') {
|
|
232
|
-
throw new errors_1.UserError(`Field dropdown in field ${index} has an invalid option ${optionIndex}`);
|
|
233
|
-
}
|
|
221
|
+
for (const [optionIndex, option] of field[key].values.entries()) {
|
|
222
|
+
if (Object.keys(option).length !== 1 || typeof option.option !== 'string') {
|
|
223
|
+
throw new errors_1.UserError(`Field dropdown in field ${index} has an invalid option ${optionIndex}`);
|
|
234
224
|
}
|
|
235
225
|
}
|
|
236
226
|
}
|
|
237
|
-
fields.push(field);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
catch (error) {
|
|
241
|
-
if (error instanceof errors_1.ApplicationError || error instanceof errors_1.BaseError)
|
|
242
|
-
throw error;
|
|
243
|
-
throw new errors_1.UserError('Value is not valid JSON');
|
|
244
|
-
}
|
|
245
|
-
return fields;
|
|
246
|
-
};
|
|
247
|
-
exports.tryToParseJsonToFormFields = tryToParseJsonToFormFields;
|
|
248
|
-
const getValueDescription = (value) => {
|
|
249
|
-
if (typeof value === 'object') {
|
|
250
|
-
if (value === null)
|
|
251
|
-
return "'null'";
|
|
252
|
-
if (Array.isArray(value))
|
|
253
|
-
return 'array';
|
|
254
|
-
return 'object';
|
|
255
|
-
}
|
|
256
|
-
return `'${String(value)}'`;
|
|
257
|
-
};
|
|
258
|
-
exports.getValueDescription = getValueDescription;
|
|
259
|
-
const ALLOWED_URL_PROTOCOLS = ['http:', 'https:', 'ftp:', 'file:'];
|
|
260
|
-
const tryToParseUrl = (value) => {
|
|
261
|
-
if (typeof value === 'string' && !value.includes('://')) {
|
|
262
|
-
value = `https://${value}`;
|
|
263
|
-
}
|
|
264
|
-
try {
|
|
265
|
-
const parsed = new URL(String(value));
|
|
266
|
-
if (!ALLOWED_URL_PROTOCOLS.includes(parsed.protocol)) {
|
|
267
|
-
throw new errors_1.UserError(`The value "${String(value)}" is not a valid url.`, {
|
|
268
|
-
extra: { value },
|
|
269
|
-
});
|
|
270
227
|
}
|
|
271
|
-
|
|
228
|
+
fields.push(field);
|
|
272
229
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
if (error instanceof errors_1.ApplicationError || error instanceof errors_1.BaseError)
|
|
233
|
+
throw error;
|
|
234
|
+
throw new errors_1.UserError('Value is not valid JSON');
|
|
235
|
+
}
|
|
236
|
+
return fields;
|
|
237
|
+
};
|
|
238
|
+
exports.tryToParseJsonToFormFields = tryToParseJsonToFormFields;
|
|
239
|
+
const getValueDescription = (value) => {
|
|
240
|
+
if (typeof value === 'object') {
|
|
241
|
+
if (value === null)
|
|
242
|
+
return "'null'";
|
|
243
|
+
if (Array.isArray(value))
|
|
244
|
+
return 'array';
|
|
245
|
+
return 'object';
|
|
246
|
+
}
|
|
247
|
+
return `'${String(value)}'`;
|
|
248
|
+
};
|
|
249
|
+
exports.getValueDescription = getValueDescription;
|
|
250
|
+
const ALLOWED_URL_PROTOCOLS = ['http:', 'https:', 'ftp:', 'file:'];
|
|
251
|
+
const tryToParseUrl = (value) => {
|
|
252
|
+
if (typeof value === 'string' && !value.includes('://')) {
|
|
253
|
+
value = `https://${value}`;
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
const parsed = new URL(String(value));
|
|
257
|
+
if (!ALLOWED_URL_PROTOCOLS.includes(parsed.protocol)) {
|
|
276
258
|
throw new errors_1.UserError(`The value "${String(value)}" is not a valid url.`, {
|
|
277
259
|
extra: { value },
|
|
278
260
|
});
|
|
279
261
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
262
|
+
return String(value);
|
|
263
|
+
}
|
|
264
|
+
catch (e) {
|
|
265
|
+
if (e instanceof errors_1.ApplicationError || e instanceof errors_1.BaseError)
|
|
266
|
+
throw e;
|
|
267
|
+
throw new errors_1.UserError(`The value "${String(value)}" is not a valid url.`, {
|
|
284
268
|
extra: { value },
|
|
285
269
|
});
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
};
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
exports.tryToParseUrl = tryToParseUrl;
|
|
273
|
+
const tryToParseJwt = (value) => {
|
|
274
|
+
const error = new errors_1.UserError(`The value "${String(value)}" is not a valid JWT token.`, {
|
|
275
|
+
extra: { value },
|
|
276
|
+
});
|
|
277
|
+
if (!value)
|
|
278
|
+
throw error;
|
|
279
|
+
const jwtPattern = /^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_.+/=]*$/;
|
|
280
|
+
if (!jwtPattern.test(String(value)))
|
|
281
|
+
throw error;
|
|
282
|
+
return String(value);
|
|
283
|
+
};
|
|
284
|
+
exports.tryToParseJwt = tryToParseJwt;
|
|
285
|
+
// eslint-disable-next-line complexity
|
|
286
|
+
function validateFieldType(fieldName, value, type, options = {}) {
|
|
287
|
+
if (value === null || value === undefined)
|
|
288
|
+
return { valid: true };
|
|
289
|
+
const strict = options.strict ?? false;
|
|
290
|
+
const valueOptions = options.valueOptions ?? [];
|
|
291
|
+
const parseStrings = options.parseStrings ?? false;
|
|
292
|
+
const defaultErrorMessage = `'${fieldName}' expects a ${type} but we got ${(0, exports.getValueDescription)(value)}`;
|
|
293
|
+
switch (type.toLowerCase()) {
|
|
294
|
+
case 'string': {
|
|
295
|
+
if (!parseStrings)
|
|
296
|
+
return { valid: true, newValue: value };
|
|
297
|
+
try {
|
|
298
|
+
if (strict && typeof value !== 'string') {
|
|
313
299
|
return { valid: false, errorMessage: defaultErrorMessage };
|
|
314
300
|
}
|
|
301
|
+
return { valid: true, newValue: (0, exports.tryToParseString)(value) };
|
|
315
302
|
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
return { valid: true, newValue: (0, exports.tryToParseAlphanumericString)(value) };
|
|
319
|
-
}
|
|
320
|
-
catch (e) {
|
|
321
|
-
return {
|
|
322
|
-
valid: false,
|
|
323
|
-
errorMessage: 'Value is not a valid alphanumeric string, only letters, numbers and underscore allowed',
|
|
324
|
-
};
|
|
325
|
-
}
|
|
303
|
+
catch (e) {
|
|
304
|
+
return { valid: false, errorMessage: defaultErrorMessage };
|
|
326
305
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
306
|
+
}
|
|
307
|
+
case 'string-alphanumeric': {
|
|
308
|
+
try {
|
|
309
|
+
return { valid: true, newValue: (0, exports.tryToParseAlphanumericString)(value) };
|
|
310
|
+
}
|
|
311
|
+
catch (e) {
|
|
312
|
+
return {
|
|
313
|
+
valid: false,
|
|
314
|
+
errorMessage: 'Value is not a valid alphanumeric string, only letters, numbers and underscore allowed',
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
case 'number': {
|
|
319
|
+
try {
|
|
320
|
+
if (strict && typeof value !== 'number') {
|
|
335
321
|
return { valid: false, errorMessage: defaultErrorMessage };
|
|
336
322
|
}
|
|
323
|
+
return { valid: true, newValue: (0, exports.tryToParseNumber)(value) };
|
|
337
324
|
}
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
catch (e) {
|
|
325
|
+
catch (e) {
|
|
326
|
+
return { valid: false, errorMessage: defaultErrorMessage };
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
case 'boolean': {
|
|
330
|
+
try {
|
|
331
|
+
if (strict && typeof value !== 'boolean') {
|
|
346
332
|
return { valid: false, errorMessage: defaultErrorMessage };
|
|
347
333
|
}
|
|
334
|
+
return { valid: true, newValue: (0, exports.tryToParseBoolean)(value) };
|
|
348
335
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
return { valid: true, newValue: (0, exports.tryToParseDateTime)(value) };
|
|
352
|
-
}
|
|
353
|
-
catch (e) {
|
|
354
|
-
const luxonDocsURL = 'https://moment.github.io/luxon/api-docs/index.html#datetimefromformat';
|
|
355
|
-
const errorMessage = `${defaultErrorMessage} <br/><br/> Consider using <a href="${luxonDocsURL}" target="_blank"><code>DateTime.fromFormat</code></a> to work with custom date formats.`;
|
|
356
|
-
return { valid: false, errorMessage };
|
|
357
|
-
}
|
|
336
|
+
catch (e) {
|
|
337
|
+
return { valid: false, errorMessage: defaultErrorMessage };
|
|
358
338
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
}
|
|
363
|
-
catch (e) {
|
|
364
|
-
return {
|
|
365
|
-
valid: false,
|
|
366
|
-
errorMessage: `'${fieldName}' expects time (hh:mm:(:ss)) but we got ${(0, exports.getValueDescription)(value)}.`,
|
|
367
|
-
};
|
|
368
|
-
}
|
|
339
|
+
}
|
|
340
|
+
case 'datetime': {
|
|
341
|
+
try {
|
|
342
|
+
return { valid: true, newValue: (0, exports.tryToParseDateTime)(value) };
|
|
369
343
|
}
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
}
|
|
374
|
-
catch (e) {
|
|
375
|
-
const errorMessage = `${defaultErrorMessage}. Make sure the value is a valid binary data object with 'mimeType' and 'data' or 'id' property.`;
|
|
376
|
-
return { valid: false, errorMessage };
|
|
377
|
-
}
|
|
344
|
+
catch (e) {
|
|
345
|
+
const luxonDocsURL = 'https://moment.github.io/luxon/api-docs/index.html#datetimefromformat';
|
|
346
|
+
const errorMessage = `${defaultErrorMessage} <br/><br/> Consider using <a href="${luxonDocsURL}" target="_blank"><code>DateTime.fromFormat</code></a> to work with custom date formats.`;
|
|
347
|
+
return { valid: false, errorMessage };
|
|
378
348
|
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
}
|
|
384
|
-
return { valid: true, newValue: (0, exports.tryToParseObject)(value) };
|
|
385
|
-
}
|
|
386
|
-
catch (e) {
|
|
387
|
-
return { valid: false, errorMessage: defaultErrorMessage };
|
|
388
|
-
}
|
|
349
|
+
}
|
|
350
|
+
case 'time': {
|
|
351
|
+
try {
|
|
352
|
+
return { valid: true, newValue: (0, exports.tryToParseTime)(value) };
|
|
389
353
|
}
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
return { valid: true, newValue: (0, exports.tryToParseArray)(value) };
|
|
396
|
-
}
|
|
397
|
-
catch (e) {
|
|
398
|
-
return { valid: false, errorMessage: defaultErrorMessage };
|
|
399
|
-
}
|
|
354
|
+
catch (e) {
|
|
355
|
+
return {
|
|
356
|
+
valid: false,
|
|
357
|
+
errorMessage: `'${fieldName}' expects time (hh:mm:(:ss)) but we got ${(0, exports.getValueDescription)(value)}.`,
|
|
358
|
+
};
|
|
400
359
|
}
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
return {
|
|
406
|
-
valid: false,
|
|
407
|
-
errorMessage: `'${fieldName}' expects one of the following values: [${validOptions}] but we got ${(0, exports.getValueDescription)(value)}`,
|
|
408
|
-
};
|
|
409
|
-
}
|
|
410
|
-
return { valid: true, newValue: value };
|
|
360
|
+
}
|
|
361
|
+
case 'binary': {
|
|
362
|
+
try {
|
|
363
|
+
return { valid: true, newValue: (0, exports.tryToParseBinary)(value) };
|
|
411
364
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
365
|
+
catch (e) {
|
|
366
|
+
const errorMessage = `${defaultErrorMessage}. Make sure the value is a valid binary data object with 'mimeType' and 'data' or 'id' property.`;
|
|
367
|
+
return { valid: false, errorMessage };
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
case 'object': {
|
|
371
|
+
try {
|
|
372
|
+
if (strict && !(0, isObject_1.default)(value)) {
|
|
417
373
|
return { valid: false, errorMessage: defaultErrorMessage };
|
|
418
374
|
}
|
|
375
|
+
return { valid: true, newValue: (0, exports.tryToParseObject)(value) };
|
|
419
376
|
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
return { valid: true, newValue: (0, exports.tryToParseJwt)(value) };
|
|
423
|
-
}
|
|
424
|
-
catch (e) {
|
|
425
|
-
return {
|
|
426
|
-
valid: false,
|
|
427
|
-
errorMessage: 'Value is not a valid JWT token',
|
|
428
|
-
};
|
|
429
|
-
}
|
|
377
|
+
catch (e) {
|
|
378
|
+
return { valid: false, errorMessage: defaultErrorMessage };
|
|
430
379
|
}
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
}
|
|
435
|
-
catch (e) {
|
|
436
|
-
return {
|
|
437
|
-
valid: false,
|
|
438
|
-
errorMessage: e.message,
|
|
439
|
-
};
|
|
440
|
-
}
|
|
380
|
+
}
|
|
381
|
+
case 'array': {
|
|
382
|
+
if (strict && !Array.isArray(value)) {
|
|
383
|
+
return { valid: false, errorMessage: defaultErrorMessage };
|
|
441
384
|
}
|
|
442
|
-
|
|
443
|
-
return { valid: true, newValue: value };
|
|
385
|
+
try {
|
|
386
|
+
return { valid: true, newValue: (0, exports.tryToParseArray)(value) };
|
|
387
|
+
}
|
|
388
|
+
catch (e) {
|
|
389
|
+
return { valid: false, errorMessage: defaultErrorMessage };
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
case 'options': {
|
|
393
|
+
const validOptions = valueOptions.map((option) => option.value).join(', ');
|
|
394
|
+
const isValidOption = valueOptions.some((option) => option.value === value);
|
|
395
|
+
if (!isValidOption) {
|
|
396
|
+
return {
|
|
397
|
+
valid: false,
|
|
398
|
+
errorMessage: `'${fieldName}' expects one of the following values: [${validOptions}] but we got ${(0, exports.getValueDescription)(value)}`,
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
return { valid: true, newValue: value };
|
|
402
|
+
}
|
|
403
|
+
case 'url': {
|
|
404
|
+
try {
|
|
405
|
+
return { valid: true, newValue: (0, exports.tryToParseUrl)(value) };
|
|
406
|
+
}
|
|
407
|
+
catch (e) {
|
|
408
|
+
return { valid: false, errorMessage: defaultErrorMessage };
|
|
444
409
|
}
|
|
445
410
|
}
|
|
411
|
+
case 'jwt': {
|
|
412
|
+
try {
|
|
413
|
+
return { valid: true, newValue: (0, exports.tryToParseJwt)(value) };
|
|
414
|
+
}
|
|
415
|
+
catch (e) {
|
|
416
|
+
return {
|
|
417
|
+
valid: false,
|
|
418
|
+
errorMessage: 'Value is not a valid JWT token',
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
case 'form-fields': {
|
|
423
|
+
try {
|
|
424
|
+
return { valid: true, newValue: (0, exports.tryToParseJsonToFormFields)(value) };
|
|
425
|
+
}
|
|
426
|
+
catch (e) {
|
|
427
|
+
return {
|
|
428
|
+
valid: false,
|
|
429
|
+
errorMessage: e.message,
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
default: {
|
|
434
|
+
return { valid: true, newValue: value };
|
|
435
|
+
}
|
|
446
436
|
}
|
|
447
|
-
}
|
|
437
|
+
}
|
|
448
438
|
//# sourceMappingURL=type-validation.js.map
|