@n8n/workflow-sdk 0.2.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/LICENSE.md +88 -0
- package/README.md +30 -0
- package/dist/ast-interpreter/errors.d.ts +19 -0
- package/dist/ast-interpreter/errors.js +64 -0
- package/dist/ast-interpreter/errors.js.map +1 -0
- package/dist/ast-interpreter/index.d.ts +5 -0
- package/dist/ast-interpreter/index.js +18 -0
- package/dist/ast-interpreter/index.js.map +1 -0
- package/dist/ast-interpreter/interpreter.d.ts +2 -0
- package/dist/ast-interpreter/interpreter.js +471 -0
- package/dist/ast-interpreter/interpreter.js.map +1 -0
- package/dist/ast-interpreter/parser.d.ts +2 -0
- package/dist/ast-interpreter/parser.js +61 -0
- package/dist/ast-interpreter/parser.js.map +1 -0
- package/dist/ast-interpreter/validators.d.ts +13 -0
- package/dist/ast-interpreter/validators.js +243 -0
- package/dist/ast-interpreter/validators.js.map +1 -0
- package/dist/build.tsbuildinfo +1 -0
- package/dist/cli/code-to-json.d.ts +1 -0
- package/dist/cli/code-to-json.js +51 -0
- package/dist/cli/code-to-json.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +25 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/json-to-code.d.ts +1 -0
- package/dist/cli/json-to-code.js +60 -0
- package/dist/cli/json-to-code.js.map +1 -0
- package/dist/cli/utils.d.ts +1 -0
- package/dist/cli/utils.js +16 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/codegen/code-generator.d.ts +14 -0
- package/dist/codegen/code-generator.js +807 -0
- package/dist/codegen/code-generator.js.map +1 -0
- package/dist/codegen/composite-builder.d.ts +3 -0
- package/dist/codegen/composite-builder.js +718 -0
- package/dist/codegen/composite-builder.js.map +1 -0
- package/dist/codegen/composite-handlers/build-utils.d.ts +24 -0
- package/dist/codegen/composite-handlers/build-utils.js +79 -0
- package/dist/codegen/composite-handlers/build-utils.js.map +1 -0
- package/dist/codegen/composite-handlers/error-handler.d.ts +6 -0
- package/dist/codegen/composite-handlers/error-handler.js +51 -0
- package/dist/codegen/composite-handlers/error-handler.js.map +1 -0
- package/dist/codegen/composite-handlers/if-else-handler.d.ts +5 -0
- package/dist/codegen/composite-handlers/if-else-handler.js +57 -0
- package/dist/codegen/composite-handlers/if-else-handler.js.map +1 -0
- package/dist/codegen/composite-handlers/index.d.ts +1 -0
- package/dist/codegen/composite-handlers/index.js +17 -0
- package/dist/codegen/composite-handlers/index.js.map +1 -0
- package/dist/codegen/composite-handlers/merge-handler.d.ts +5 -0
- package/dist/codegen/composite-handlers/merge-handler.js +25 -0
- package/dist/codegen/composite-handlers/merge-handler.js.map +1 -0
- package/dist/codegen/composite-handlers/sib-handler.d.ts +5 -0
- package/dist/codegen/composite-handlers/sib-handler.js +57 -0
- package/dist/codegen/composite-handlers/sib-handler.js.map +1 -0
- package/dist/codegen/composite-handlers/switch-case-handler.d.ts +5 -0
- package/dist/codegen/composite-handlers/switch-case-handler.js +80 -0
- package/dist/codegen/composite-handlers/switch-case-handler.js.map +1 -0
- package/dist/codegen/composite-tree.d.ts +81 -0
- package/dist/codegen/composite-tree.js +3 -0
- package/dist/codegen/composite-tree.js.map +1 -0
- package/dist/codegen/config-builder.d.ts +7 -0
- package/dist/codegen/config-builder.js +22 -0
- package/dist/codegen/config-builder.js.map +1 -0
- package/dist/codegen/constants.d.ts +5 -0
- package/dist/codegen/constants.js +30 -0
- package/dist/codegen/constants.js.map +1 -0
- package/dist/codegen/deferred-connections.d.ts +20 -0
- package/dist/codegen/deferred-connections.js +46 -0
- package/dist/codegen/deferred-connections.js.map +1 -0
- package/dist/codegen/execution-schema-jsdoc.d.ts +3 -0
- package/dist/codegen/execution-schema-jsdoc.js +109 -0
- package/dist/codegen/execution-schema-jsdoc.js.map +1 -0
- package/dist/codegen/execution-status.d.ts +9 -0
- package/dist/codegen/execution-status.js +42 -0
- package/dist/codegen/execution-status.js.map +1 -0
- package/dist/codegen/expression-annotator.d.ts +2 -0
- package/dist/codegen/expression-annotator.js +38 -0
- package/dist/codegen/expression-annotator.js.map +1 -0
- package/dist/codegen/graph-annotator.d.ts +2 -0
- package/dist/codegen/graph-annotator.js +107 -0
- package/dist/codegen/graph-annotator.js.map +1 -0
- package/dist/codegen/index.d.ts +20 -0
- package/dist/codegen/index.js +60 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/merge-pattern.d.ts +12 -0
- package/dist/codegen/merge-pattern.js +119 -0
- package/dist/codegen/merge-pattern.js.map +1 -0
- package/dist/codegen/node-type-utils.d.ts +4 -0
- package/dist/codegen/node-type-utils.js +38 -0
- package/dist/codegen/node-type-utils.js.map +1 -0
- package/dist/codegen/output-utils.d.ts +9 -0
- package/dist/codegen/output-utils.js +68 -0
- package/dist/codegen/output-utils.js.map +1 -0
- package/dist/codegen/parse-workflow-code.d.ts +3 -0
- package/dist/codegen/parse-workflow-code.js +438 -0
- package/dist/codegen/parse-workflow-code.js.map +1 -0
- package/dist/codegen/semantic-graph.d.ts +3 -0
- package/dist/codegen/semantic-graph.js +216 -0
- package/dist/codegen/semantic-graph.js.map +1 -0
- package/dist/codegen/semantic-registry.d.ts +18 -0
- package/dist/codegen/semantic-registry.js +102 -0
- package/dist/codegen/semantic-registry.js.map +1 -0
- package/dist/codegen/sib-merge-handler.d.ts +20 -0
- package/dist/codegen/sib-merge-handler.js +92 -0
- package/dist/codegen/sib-merge-handler.js.map +1 -0
- package/dist/codegen/string-utils.d.ts +6 -0
- package/dist/codegen/string-utils.js +38 -0
- package/dist/codegen/string-utils.js.map +1 -0
- package/dist/codegen/subnode-generator.d.ts +17 -0
- package/dist/codegen/subnode-generator.js +219 -0
- package/dist/codegen/subnode-generator.js.map +1 -0
- package/dist/codegen/types.d.ts +40 -0
- package/dist/codegen/types.js +16 -0
- package/dist/codegen/types.js.map +1 -0
- package/dist/codegen/variable-names.d.ts +8 -0
- package/dist/codegen/variable-names.js +121 -0
- package/dist/codegen/variable-names.js.map +1 -0
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.js +14 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/node-types.d.ts +19 -0
- package/dist/constants/node-types.js +46 -0
- package/dist/constants/node-types.js.map +1 -0
- package/dist/expression/index.d.ts +6 -0
- package/dist/expression/index.js +181 -0
- package/dist/expression/index.js.map +1 -0
- package/dist/expression.d.ts +1 -0
- package/dist/expression.js +10 -0
- package/dist/expression.js.map +1 -0
- package/dist/generate-types/generate-node-defs-cli.d.ts +7 -0
- package/dist/generate-types/generate-node-defs-cli.js +99 -0
- package/dist/generate-types/generate-node-defs-cli.js.map +1 -0
- package/dist/generate-types/generate-types.d.ts +163 -0
- package/dist/generate-types/generate-types.js +2569 -0
- package/dist/generate-types/generate-types.js.map +1 -0
- package/dist/generate-types/generate-zod-schemas.d.ts +41 -0
- package/dist/generate-types/generate-zod-schemas.js +1129 -0
- package/dist/generate-types/generate-zod-schemas.js.map +1 -0
- package/dist/generate-types/index.d.ts +3 -0
- package/dist/generate-types/index.js +62 -0
- package/dist/generate-types/index.js.map +1 -0
- package/dist/generate-types/zod-helpers.d.ts +189 -0
- package/dist/generate-types/zod-helpers.js +76 -0
- package/dist/generate-types/zod-helpers.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +87 -0
- package/dist/index.js.map +1 -0
- package/dist/types/aliases.d.ts +5 -0
- package/dist/types/aliases.js +3 -0
- package/dist/types/aliases.js.map +1 -0
- package/dist/types/base.d.ts +395 -0
- package/dist/types/base.js +22 -0
- package/dist/types/base.js.map +1 -0
- package/dist/utils/code-helpers.d.ts +7 -0
- package/dist/utils/code-helpers.js +47 -0
- package/dist/utils/code-helpers.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/safe-access.d.ts +3 -0
- package/dist/utils/safe-access.js +21 -0
- package/dist/utils/safe-access.js.map +1 -0
- package/dist/utils/trigger-detection.d.ts +1 -0
- package/dist/utils/trigger-detection.js +17 -0
- package/dist/utils/trigger-detection.js.map +1 -0
- package/dist/validation/display-options.d.ts +18 -0
- package/dist/validation/display-options.js +194 -0
- package/dist/validation/display-options.js.map +1 -0
- package/dist/validation/index.d.ts +34 -0
- package/dist/validation/index.js +428 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/input-resolver.d.ts +2 -0
- package/dist/validation/input-resolver.js +23 -0
- package/dist/validation/input-resolver.js.map +1 -0
- package/dist/validation/resolve-schema.d.ts +14 -0
- package/dist/validation/resolve-schema.js +105 -0
- package/dist/validation/resolve-schema.js.map +1 -0
- package/dist/validation/schema-helpers.d.ts +164 -0
- package/dist/validation/schema-helpers.js +51 -0
- package/dist/validation/schema-helpers.js.map +1 -0
- package/dist/validation/schema-validator.d.ts +22 -0
- package/dist/validation/schema-validator.js +402 -0
- package/dist/validation/schema-validator.js.map +1 -0
- package/dist/validation/test-schema-setup.d.ts +2 -0
- package/dist/validation/test-schema-setup.js +108 -0
- package/dist/validation/test-schema-setup.js.map +1 -0
- package/dist/validation.d.ts +1 -0
- package/dist/validation.js +9 -0
- package/dist/validation.js.map +1 -0
- package/dist/workflow-builder/connection-utils.d.ts +4 -0
- package/dist/workflow-builder/connection-utils.js +42 -0
- package/dist/workflow-builder/connection-utils.js.map +1 -0
- package/dist/workflow-builder/constants.d.ts +3 -0
- package/dist/workflow-builder/constants.js +7 -0
- package/dist/workflow-builder/constants.js.map +1 -0
- package/dist/workflow-builder/control-flow-builders/if-else.d.ts +2 -0
- package/dist/workflow-builder/control-flow-builders/if-else.js +3 -0
- package/dist/workflow-builder/control-flow-builders/if-else.js.map +1 -0
- package/dist/workflow-builder/control-flow-builders/next-batch.d.ts +2 -0
- package/dist/workflow-builder/control-flow-builders/next-batch.js +7 -0
- package/dist/workflow-builder/control-flow-builders/next-batch.js.map +1 -0
- package/dist/workflow-builder/control-flow-builders/split-in-batches.d.ts +27 -0
- package/dist/workflow-builder/control-flow-builders/split-in-batches.js +268 -0
- package/dist/workflow-builder/control-flow-builders/split-in-batches.js.map +1 -0
- package/dist/workflow-builder/control-flow-builders/switch-case.d.ts +2 -0
- package/dist/workflow-builder/control-flow-builders/switch-case.js +3 -0
- package/dist/workflow-builder/control-flow-builders/switch-case.js.map +1 -0
- package/dist/workflow-builder/layout-utils.d.ts +2 -0
- package/dist/workflow-builder/layout-utils.js +54 -0
- package/dist/workflow-builder/layout-utils.js.map +1 -0
- package/dist/workflow-builder/node-builders/index.d.ts +2 -0
- package/dist/workflow-builder/node-builders/index.js +29 -0
- package/dist/workflow-builder/node-builders/index.js.map +1 -0
- package/dist/workflow-builder/node-builders/node-builder.d.ts +26 -0
- package/dist/workflow-builder/node-builders/node-builder.js +596 -0
- package/dist/workflow-builder/node-builders/node-builder.js.map +1 -0
- package/dist/workflow-builder/node-builders/subnode-builders.d.ts +25 -0
- package/dist/workflow-builder/node-builders/subnode-builders.js +110 -0
- package/dist/workflow-builder/node-builders/subnode-builders.js.map +1 -0
- package/dist/workflow-builder/pin-data-utils.d.ts +5 -0
- package/dist/workflow-builder/pin-data-utils.js +54 -0
- package/dist/workflow-builder/pin-data-utils.js.map +1 -0
- package/dist/workflow-builder/plugins/composite-handlers/branch-handler-utils.d.ts +9 -0
- package/dist/workflow-builder/plugins/composite-handlers/branch-handler-utils.js +162 -0
- package/dist/workflow-builder/plugins/composite-handlers/branch-handler-utils.js.map +1 -0
- package/dist/workflow-builder/plugins/composite-handlers/if-else-handler.d.ts +5 -0
- package/dist/workflow-builder/plugins/composite-handlers/if-else-handler.js +83 -0
- package/dist/workflow-builder/plugins/composite-handlers/if-else-handler.js.map +1 -0
- package/dist/workflow-builder/plugins/composite-handlers/index.d.ts +3 -0
- package/dist/workflow-builder/plugins/composite-handlers/index.js +10 -0
- package/dist/workflow-builder/plugins/composite-handlers/index.js.map +1 -0
- package/dist/workflow-builder/plugins/composite-handlers/split-in-batches-handler.d.ts +15 -0
- package/dist/workflow-builder/plugins/composite-handlers/split-in-batches-handler.js +216 -0
- package/dist/workflow-builder/plugins/composite-handlers/split-in-batches-handler.js.map +1 -0
- package/dist/workflow-builder/plugins/composite-handlers/switch-case-handler.d.ts +5 -0
- package/dist/workflow-builder/plugins/composite-handlers/switch-case-handler.js +91 -0
- package/dist/workflow-builder/plugins/composite-handlers/switch-case-handler.js.map +1 -0
- package/dist/workflow-builder/plugins/defaults.d.ts +2 -0
- package/dist/workflow-builder/plugins/defaults.js +53 -0
- package/dist/workflow-builder/plugins/defaults.js.map +1 -0
- package/dist/workflow-builder/plugins/index.d.ts +3 -0
- package/dist/workflow-builder/plugins/index.js +9 -0
- package/dist/workflow-builder/plugins/index.js.map +1 -0
- package/dist/workflow-builder/plugins/registry.d.ts +22 -0
- package/dist/workflow-builder/plugins/registry.js +98 -0
- package/dist/workflow-builder/plugins/registry.js.map +1 -0
- package/dist/workflow-builder/plugins/serializers/index.d.ts +1 -0
- package/dist/workflow-builder/plugins/serializers/index.js +6 -0
- package/dist/workflow-builder/plugins/serializers/index.js.map +1 -0
- package/dist/workflow-builder/plugins/serializers/json-serializer.d.ts +3 -0
- package/dist/workflow-builder/plugins/serializers/json-serializer.js +140 -0
- package/dist/workflow-builder/plugins/serializers/json-serializer.js.map +1 -0
- package/dist/workflow-builder/plugins/types.d.ts +76 -0
- package/dist/workflow-builder/plugins/types.js +29 -0
- package/dist/workflow-builder/plugins/types.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/agent-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/agent-validator.js +45 -0
- package/dist/workflow-builder/plugins/validators/agent-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/chain-llm-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/chain-llm-validator.js +39 -0
- package/dist/workflow-builder/plugins/validators/chain-llm-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/date-method-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/date-method-validator.js +28 -0
- package/dist/workflow-builder/plugins/validators/date-method-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/disconnected-node-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/disconnected-node-validator.js +142 -0
- package/dist/workflow-builder/plugins/validators/disconnected-node-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/expression-path-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/expression-path-validator.js +155 -0
- package/dist/workflow-builder/plugins/validators/expression-path-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/expression-prefix-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/expression-prefix-validator.js +32 -0
- package/dist/workflow-builder/plugins/validators/expression-prefix-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/from-ai-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/from-ai-validator.js +30 -0
- package/dist/workflow-builder/plugins/validators/from-ai-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/http-request-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/http-request-validator.js +55 -0
- package/dist/workflow-builder/plugins/validators/http-request-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/index.d.ts +15 -0
- package/dist/workflow-builder/plugins/validators/index.js +34 -0
- package/dist/workflow-builder/plugins/validators/index.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/max-nodes-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/max-nodes-validator.js +40 -0
- package/dist/workflow-builder/plugins/validators/max-nodes-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/merge-node-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/merge-node-validator.js +54 -0
- package/dist/workflow-builder/plugins/validators/merge-node-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/missing-trigger-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/missing-trigger-validator.js +27 -0
- package/dist/workflow-builder/plugins/validators/missing-trigger-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/no-nodes-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/no-nodes-validator.js +23 -0
- package/dist/workflow-builder/plugins/validators/no-nodes-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/set-node-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/set-node-validator.js +41 -0
- package/dist/workflow-builder/plugins/validators/set-node-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/subnode-connection-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/subnode-connection-validator.js +64 -0
- package/dist/workflow-builder/plugins/validators/subnode-connection-validator.js.map +1 -0
- package/dist/workflow-builder/plugins/validators/tool-node-validator.d.ts +2 -0
- package/dist/workflow-builder/plugins/validators/tool-node-validator.js +37 -0
- package/dist/workflow-builder/plugins/validators/tool-node-validator.js.map +1 -0
- package/dist/workflow-builder/string-utils.d.ts +9 -0
- package/dist/workflow-builder/string-utils.js +237 -0
- package/dist/workflow-builder/string-utils.js.map +1 -0
- package/dist/workflow-builder/subnode-utils.d.ts +2 -0
- package/dist/workflow-builder/subnode-utils.js +180 -0
- package/dist/workflow-builder/subnode-utils.js.map +1 -0
- package/dist/workflow-builder/type-guards.d.ts +15 -0
- package/dist/workflow-builder/type-guards.js +48 -0
- package/dist/workflow-builder/type-guards.js.map +1 -0
- package/dist/workflow-builder/validation-helpers.d.ts +27 -0
- package/dist/workflow-builder/validation-helpers.js +195 -0
- package/dist/workflow-builder/validation-helpers.js.map +1 -0
- package/dist/workflow-builder/workflow-import.d.ts +15 -0
- package/dist/workflow-builder/workflow-import.js +102 -0
- package/dist/workflow-builder/workflow-import.js.map +1 -0
- package/dist/workflow-builder.d.ts +2 -0
- package/dist/workflow-builder.js +636 -0
- package/dist/workflow-builder.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildConfigString = buildConfigString;
|
|
4
|
+
exports.buildConfigStringMultiline = buildConfigStringMultiline;
|
|
5
|
+
function buildConfigString(entries) {
|
|
6
|
+
const includedEntries = entries.filter((e) => e.condition);
|
|
7
|
+
if (includedEntries.length === 0) {
|
|
8
|
+
return '{}';
|
|
9
|
+
}
|
|
10
|
+
const parts = includedEntries.map((e) => `${e.key}: ${e.value}`);
|
|
11
|
+
return `{ ${parts.join(', ')} }`;
|
|
12
|
+
}
|
|
13
|
+
function buildConfigStringMultiline(entries, indent = '') {
|
|
14
|
+
const includedEntries = entries.filter((e) => e.condition);
|
|
15
|
+
if (includedEntries.length === 0) {
|
|
16
|
+
return '{}';
|
|
17
|
+
}
|
|
18
|
+
const innerIndent = indent + ' ';
|
|
19
|
+
const parts = includedEntries.map((e) => `${innerIndent}${e.key}: ${e.value}`);
|
|
20
|
+
return `{\n${parts.join(',\n')}\n${indent}}`;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=config-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-builder.js","sourceRoot":"","sources":["../../src/codegen/config-builder.ts"],"names":[],"mappings":";;AAkCA,8CASC;AAUD,gEAWC;AA9BD,SAAgB,iBAAiB,CAAC,OAAsB;IACvD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE3D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACjE,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,CAAC;AAUD,SAAgB,0BAA0B,CAAC,OAAsB,EAAE,SAAiB,EAAE;IACrF,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE3D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAE/E,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,MAAM,GAAG,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AiConnectionType } from './types';
|
|
2
|
+
export declare const AI_CONNECTION_TO_CONFIG_KEY: Record<AiConnectionType, string>;
|
|
3
|
+
export declare const AI_CONNECTION_TO_BUILDER: Record<AiConnectionType, string>;
|
|
4
|
+
export declare const AI_ALWAYS_ARRAY_TYPES: Set<"ai_languageModel" | "ai_memory" | "ai_tool" | "ai_outputParser" | "ai_embedding" | "ai_vectorStore" | "ai_retriever" | "ai_document" | "ai_textSplitter" | "ai_reranker">;
|
|
5
|
+
export declare const AI_OPTIONAL_ARRAY_TYPES: Set<"ai_languageModel" | "ai_memory" | "ai_tool" | "ai_outputParser" | "ai_embedding" | "ai_vectorStore" | "ai_retriever" | "ai_document" | "ai_textSplitter" | "ai_reranker">;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AI_OPTIONAL_ARRAY_TYPES = exports.AI_ALWAYS_ARRAY_TYPES = exports.AI_CONNECTION_TO_BUILDER = exports.AI_CONNECTION_TO_CONFIG_KEY = void 0;
|
|
4
|
+
exports.AI_CONNECTION_TO_CONFIG_KEY = {
|
|
5
|
+
ai_languageModel: 'model',
|
|
6
|
+
ai_memory: 'memory',
|
|
7
|
+
ai_tool: 'tools',
|
|
8
|
+
ai_outputParser: 'outputParser',
|
|
9
|
+
ai_embedding: 'embedding',
|
|
10
|
+
ai_vectorStore: 'vectorStore',
|
|
11
|
+
ai_retriever: 'retriever',
|
|
12
|
+
ai_document: 'documentLoader',
|
|
13
|
+
ai_textSplitter: 'textSplitter',
|
|
14
|
+
ai_reranker: 'reranker',
|
|
15
|
+
};
|
|
16
|
+
exports.AI_CONNECTION_TO_BUILDER = {
|
|
17
|
+
ai_languageModel: 'languageModel',
|
|
18
|
+
ai_memory: 'memory',
|
|
19
|
+
ai_tool: 'tool',
|
|
20
|
+
ai_outputParser: 'outputParser',
|
|
21
|
+
ai_embedding: 'embedding',
|
|
22
|
+
ai_vectorStore: 'vectorStore',
|
|
23
|
+
ai_retriever: 'retriever',
|
|
24
|
+
ai_document: 'documentLoader',
|
|
25
|
+
ai_textSplitter: 'textSplitter',
|
|
26
|
+
ai_reranker: 'reranker',
|
|
27
|
+
};
|
|
28
|
+
exports.AI_ALWAYS_ARRAY_TYPES = new Set(['ai_tool']);
|
|
29
|
+
exports.AI_OPTIONAL_ARRAY_TYPES = new Set(['ai_languageModel']);
|
|
30
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/codegen/constants.ts"],"names":[],"mappings":";;;AASa,QAAA,2BAA2B,GAAqC;IAC5E,gBAAgB,EAAE,OAAO;IACzB,SAAS,EAAE,QAAQ;IACnB,OAAO,EAAE,OAAO;IAChB,eAAe,EAAE,cAAc;IAC/B,YAAY,EAAE,WAAW;IACzB,cAAc,EAAE,aAAa;IAC7B,YAAY,EAAE,WAAW;IACzB,WAAW,EAAE,gBAAgB;IAC7B,eAAe,EAAE,cAAc;IAC/B,WAAW,EAAE,UAAU;CACvB,CAAC;AAKW,QAAA,wBAAwB,GAAqC;IACzE,gBAAgB,EAAE,eAAe;IACjC,SAAS,EAAE,QAAQ;IACnB,OAAO,EAAE,MAAM;IACf,eAAe,EAAE,cAAc;IAC/B,YAAY,EAAE,WAAW;IACzB,cAAc,EAAE,aAAa;IAC7B,YAAY,EAAE,WAAW;IACzB,WAAW,EAAE,gBAAgB;IAC7B,eAAe,EAAE,cAAc;IAC/B,WAAW,EAAE,UAAU;CACvB,CAAC;AAKW,QAAA,qBAAqB,GAAG,IAAI,GAAG,CAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;AAK/D,QAAA,uBAAuB,GAAG,IAAI,GAAG,CAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type DeferredInputConnection, type DeferredMergeDownstream } from './composite-handlers/build-utils';
|
|
2
|
+
import type { CompositeNode } from './composite-tree';
|
|
3
|
+
import type { SemanticNode } from './types';
|
|
4
|
+
export type { DeferredInputConnection, DeferredMergeDownstream, } from './composite-handlers/build-utils';
|
|
5
|
+
interface DeferredConnectionContext {
|
|
6
|
+
deferredConnections: DeferredInputConnection[];
|
|
7
|
+
deferredMergeDownstreams: DeferredMergeDownstream[];
|
|
8
|
+
deferredMergeNodes: Set<string>;
|
|
9
|
+
}
|
|
10
|
+
export interface DeferredConnectionParams {
|
|
11
|
+
targetNode: SemanticNode;
|
|
12
|
+
targetInputIndex: number;
|
|
13
|
+
sourceNodeName: string;
|
|
14
|
+
sourceOutputIndex: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function createDeferredConnection(params: DeferredConnectionParams, ctx: DeferredConnectionContext): void;
|
|
17
|
+
export declare function findMergeInputIndex(mergeNode: SemanticNode, sourceName: string, sourceOutputSlot?: string): number;
|
|
18
|
+
export declare function registerDeferredMerge(mergeNode: SemanticNode, ctx: DeferredConnectionContext): void;
|
|
19
|
+
export declare function isDeferredMerge(mergeName: string, ctx: DeferredConnectionContext): boolean;
|
|
20
|
+
export declare function addDeferredMergeDownstream(mergeNode: SemanticNode, downstreamChain: CompositeNode | null, ctx: DeferredConnectionContext): void;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDeferredConnection = createDeferredConnection;
|
|
4
|
+
exports.findMergeInputIndex = findMergeInputIndex;
|
|
5
|
+
exports.registerDeferredMerge = registerDeferredMerge;
|
|
6
|
+
exports.isDeferredMerge = isDeferredMerge;
|
|
7
|
+
exports.addDeferredMergeDownstream = addDeferredMergeDownstream;
|
|
8
|
+
const build_utils_1 = require("./composite-handlers/build-utils");
|
|
9
|
+
function createDeferredConnection(params, ctx) {
|
|
10
|
+
ctx.deferredConnections.push({
|
|
11
|
+
targetNode: params.targetNode,
|
|
12
|
+
targetInputIndex: params.targetInputIndex,
|
|
13
|
+
sourceNodeName: params.sourceNodeName,
|
|
14
|
+
sourceOutputIndex: params.sourceOutputIndex,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function findMergeInputIndex(mergeNode, sourceName, sourceOutputSlot) {
|
|
18
|
+
for (const [inputSlot, sources] of mergeNode.inputSources) {
|
|
19
|
+
for (const source of sources) {
|
|
20
|
+
if (source.from === sourceName) {
|
|
21
|
+
if (sourceOutputSlot !== undefined) {
|
|
22
|
+
if (source.outputSlot === sourceOutputSlot) {
|
|
23
|
+
return (0, build_utils_1.extractInputIndex)(inputSlot);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
return (0, build_utils_1.extractInputIndex)(inputSlot);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
function registerDeferredMerge(mergeNode, ctx) {
|
|
35
|
+
ctx.deferredMergeNodes.add(mergeNode.name);
|
|
36
|
+
}
|
|
37
|
+
function isDeferredMerge(mergeName, ctx) {
|
|
38
|
+
return ctx.deferredMergeNodes.has(mergeName);
|
|
39
|
+
}
|
|
40
|
+
function addDeferredMergeDownstream(mergeNode, downstreamChain, ctx) {
|
|
41
|
+
ctx.deferredMergeDownstreams.push({
|
|
42
|
+
mergeNode,
|
|
43
|
+
downstreamChain,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=deferred-connections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferred-connections.js","sourceRoot":"","sources":["../../src/codegen/deferred-connections.ts"],"names":[],"mappings":";;AA+CA,4DAUC;AAUD,kDAsBC;AAQD,sDAKC;AASD,0CAEC;AASD,gEASC;AA3HD,kEAI0C;AAmC1C,SAAgB,wBAAwB,CACvC,MAAgC,EAChC,GAA8B;IAE9B,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;KAC3C,CAAC,CAAC;AACJ,CAAC;AAUD,SAAgB,mBAAmB,CAClC,SAAuB,EACvB,UAAkB,EAClB,gBAAyB;IAEzB,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;QAC3D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAIhC,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBACpC,IAAI,MAAM,CAAC,UAAU,KAAK,gBAAgB,EAAE,CAAC;wBAC5C,OAAO,IAAA,+BAAiB,EAAC,SAAS,CAAC,CAAC;oBACrC,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,OAAO,IAAA,+BAAiB,EAAC,SAAS,CAAC,CAAC;gBACrC,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAQD,SAAgB,qBAAqB,CACpC,SAAuB,EACvB,GAA8B;IAE9B,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AASD,SAAgB,eAAe,CAAC,SAAiB,EAAE,GAA8B;IAChF,OAAO,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AASD,SAAgB,0BAA0B,CACzC,SAAuB,EACvB,eAAqC,EACrC,GAA8B;IAE9B,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC;QACjC,SAAS;QACT,eAAe;KACf,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.schemaToOutputSample = schemaToOutputSample;
|
|
4
|
+
exports.generateSchemaJSDoc = generateSchemaJSDoc;
|
|
5
|
+
function schemaToOutputSample(schema, excludeValues) {
|
|
6
|
+
if (schema.type !== 'object' || !Array.isArray(schema.value)) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const shouldRedact = excludeValues !== false;
|
|
10
|
+
const sample = {};
|
|
11
|
+
for (const field of schema.value) {
|
|
12
|
+
if (!field.key)
|
|
13
|
+
continue;
|
|
14
|
+
if (field.type === 'object' && Array.isArray(field.value)) {
|
|
15
|
+
const nestedSample = schemaToOutputSample(field, excludeValues);
|
|
16
|
+
sample[field.key] = nestedSample ?? {};
|
|
17
|
+
}
|
|
18
|
+
else if (field.type === 'array' && Array.isArray(field.value)) {
|
|
19
|
+
sample[field.key] = [];
|
|
20
|
+
}
|
|
21
|
+
else if (shouldRedact) {
|
|
22
|
+
sample[field.key] = getDefaultForType(field.type);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
sample[field.key] = parseSchemaValue(field);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return sample;
|
|
29
|
+
}
|
|
30
|
+
const MAX_OUTPUT_VALUE_LENGTH = 200;
|
|
31
|
+
function parseSchemaValue(field) {
|
|
32
|
+
const value = typeof field.value === 'string' ? field.value : undefined;
|
|
33
|
+
if (value === undefined)
|
|
34
|
+
return null;
|
|
35
|
+
if (value === '[null]')
|
|
36
|
+
return null;
|
|
37
|
+
if (value === '<EMPTY>')
|
|
38
|
+
return undefined;
|
|
39
|
+
switch (field.type) {
|
|
40
|
+
case 'string': {
|
|
41
|
+
if (value.length > MAX_OUTPUT_VALUE_LENGTH) {
|
|
42
|
+
return value.slice(0, MAX_OUTPUT_VALUE_LENGTH) + '... [truncated]';
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
case 'number': {
|
|
47
|
+
const num = Number(value);
|
|
48
|
+
return Number.isNaN(num) ? 0 : num;
|
|
49
|
+
}
|
|
50
|
+
case 'boolean':
|
|
51
|
+
return value === 'true';
|
|
52
|
+
case 'null':
|
|
53
|
+
return null;
|
|
54
|
+
default:
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function getDefaultForType(type) {
|
|
59
|
+
switch (type) {
|
|
60
|
+
case 'string':
|
|
61
|
+
return '';
|
|
62
|
+
case 'number':
|
|
63
|
+
return 0;
|
|
64
|
+
case 'boolean':
|
|
65
|
+
return false;
|
|
66
|
+
case 'object':
|
|
67
|
+
return {};
|
|
68
|
+
case 'array':
|
|
69
|
+
return [];
|
|
70
|
+
case 'null':
|
|
71
|
+
return null;
|
|
72
|
+
default:
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function generateSchemaJSDoc(nodeName, schema) {
|
|
77
|
+
const lines = [];
|
|
78
|
+
lines.push(`@output - access via $('${nodeName}').item.json`);
|
|
79
|
+
if (schema.type === 'object' && Array.isArray(schema.value)) {
|
|
80
|
+
for (const field of schema.value) {
|
|
81
|
+
const tsType = schemaTypeToTs(field.type);
|
|
82
|
+
const example = typeof field.value === 'string' ? ` // @example ${formatSampleValue(field.value)}` : '';
|
|
83
|
+
lines.push(` ${field.key}: ${tsType}${example}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return lines.join('\n');
|
|
87
|
+
}
|
|
88
|
+
function schemaTypeToTs(type) {
|
|
89
|
+
const typeMap = {
|
|
90
|
+
string: 'string',
|
|
91
|
+
number: 'number',
|
|
92
|
+
boolean: 'boolean',
|
|
93
|
+
object: 'Record<string, unknown>',
|
|
94
|
+
array: 'unknown[]',
|
|
95
|
+
null: 'null',
|
|
96
|
+
undefined: 'undefined',
|
|
97
|
+
};
|
|
98
|
+
return typeMap[type] ?? 'unknown';
|
|
99
|
+
}
|
|
100
|
+
function formatSampleValue(value) {
|
|
101
|
+
if (value === '[null]')
|
|
102
|
+
return 'null';
|
|
103
|
+
if (value === '<EMPTY>')
|
|
104
|
+
return 'undefined';
|
|
105
|
+
const maxLen = 40;
|
|
106
|
+
const escaped = value.replace(/\n/g, '\\n');
|
|
107
|
+
return escaped.length > maxLen ? `"${escaped.slice(0, maxLen)}..."` : `"${escaped}"`;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=execution-schema-jsdoc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-schema-jsdoc.js","sourceRoot":"","sources":["../../src/codegen/execution-schema-jsdoc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IRunExecutionData } from 'n8n-workflow';
|
|
2
|
+
type ExecutionResultData = IRunExecutionData['resultData'];
|
|
3
|
+
export interface NodeExecutionStatus {
|
|
4
|
+
status: 'success' | 'error' | 'not_executed';
|
|
5
|
+
errorMessage?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function buildNodeExecutionStatus(data?: ExecutionResultData): Map<string, NodeExecutionStatus>;
|
|
8
|
+
export declare function formatExecutionStatusJSDoc(data?: ExecutionResultData): string;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildNodeExecutionStatus = buildNodeExecutionStatus;
|
|
4
|
+
exports.formatExecutionStatusJSDoc = formatExecutionStatusJSDoc;
|
|
5
|
+
function buildNodeExecutionStatus(data) {
|
|
6
|
+
const statuses = new Map();
|
|
7
|
+
if (!data?.runData)
|
|
8
|
+
return statuses;
|
|
9
|
+
for (const [nodeName, taskDataArray] of Object.entries(data.runData)) {
|
|
10
|
+
for (const taskData of taskDataArray) {
|
|
11
|
+
if (taskData.error) {
|
|
12
|
+
const msg = taskData.error.message ?? 'Unknown error';
|
|
13
|
+
const desc = taskData.error.description;
|
|
14
|
+
const fullMsg = desc ? `${msg}: ${desc}` : msg;
|
|
15
|
+
const truncated = fullMsg.length > 150 ? fullMsg.slice(0, 150) + '...' : fullMsg;
|
|
16
|
+
statuses.set(nodeName, { status: 'error', errorMessage: truncated });
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
statuses.set(nodeName, { status: 'success' });
|
|
20
|
+
}
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return statuses;
|
|
25
|
+
}
|
|
26
|
+
function formatExecutionStatusJSDoc(data) {
|
|
27
|
+
if (!data)
|
|
28
|
+
return '';
|
|
29
|
+
const lines = [];
|
|
30
|
+
if (data.lastNodeExecuted) {
|
|
31
|
+
lines.push(`@lastExecuted "${data.lastNodeExecuted}"`);
|
|
32
|
+
}
|
|
33
|
+
const hasError = !!data.error || hasNodeErrors(data);
|
|
34
|
+
lines.push(`@workflowExecutionStatus ${hasError ? 'error' : 'success'}`);
|
|
35
|
+
return lines.join('\n');
|
|
36
|
+
}
|
|
37
|
+
function hasNodeErrors(data) {
|
|
38
|
+
if (!data.runData)
|
|
39
|
+
return false;
|
|
40
|
+
return Object.values(data.runData).some((taskDataArray) => taskDataArray.some((td) => td.error));
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=execution-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-status.js","sourceRoot":"","sources":["../../src/codegen/execution-status.ts"],"names":[],"mappings":";;AAgBA,4DAuBC;AAMD,gEAaC;AA1CD,SAAgB,wBAAwB,CACvC,IAA0B;IAE1B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IAExD,IAAI,CAAC,IAAI,EAAE,OAAO;QAAE,OAAO,QAAQ,CAAC;IAEpC,KAAK,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACtC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC;gBACtD,MAAM,IAAI,GAAI,QAAQ,CAAC,KAAkC,CAAC,WAAW,CAAC;gBACtE,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjF,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACP,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/C,CAAC;YACD,MAAM;QACP,CAAC;IACF,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAMD,SAAgB,0BAA0B,CAAC,IAA0B;IACpE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,4BAA4B,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAEzE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,aAAa,CAAC,IAAyB;IAC/C,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAClG,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildExpressionAnnotations = buildExpressionAnnotations;
|
|
4
|
+
function buildExpressionAnnotations(expressionValues) {
|
|
5
|
+
const annotations = new Map();
|
|
6
|
+
if (!expressionValues)
|
|
7
|
+
return annotations;
|
|
8
|
+
for (const [nodeName, expressions] of Object.entries(expressionValues)) {
|
|
9
|
+
for (const { expression, resolvedValue, parameterPath } of expressions) {
|
|
10
|
+
const formattedValue = formatResolvedValue(resolvedValue);
|
|
11
|
+
annotations.set(expression, formattedValue);
|
|
12
|
+
if (parameterPath) {
|
|
13
|
+
annotations.set(`${nodeName}::${parameterPath}`, formattedValue);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return annotations;
|
|
18
|
+
}
|
|
19
|
+
function formatResolvedValue(value) {
|
|
20
|
+
if (value === undefined || value === '<EMPTY>') {
|
|
21
|
+
return 'undefined';
|
|
22
|
+
}
|
|
23
|
+
if (value === null || value === '[null]') {
|
|
24
|
+
return 'null';
|
|
25
|
+
}
|
|
26
|
+
if (typeof value === 'string') {
|
|
27
|
+
const maxLen = 250;
|
|
28
|
+
return value.length > maxLen ? `"${value.slice(0, maxLen)}..."` : `"${value}"`;
|
|
29
|
+
}
|
|
30
|
+
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
31
|
+
return String(value);
|
|
32
|
+
}
|
|
33
|
+
if (Array.isArray(value)) {
|
|
34
|
+
return `[Array with ${value.length} items]`;
|
|
35
|
+
}
|
|
36
|
+
return '[Object]';
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=expression-annotator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-annotator.js","sourceRoot":"","sources":["../../src/codegen/expression-annotator.ts"],"names":[],"mappings":";;AAUA,gEAsBC;AAtBD,SAAgB,0BAA0B,CACzC,gBAAoD;IAEpD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE9C,IAAI,CAAC,gBAAgB;QAAE,OAAO,WAAW,CAAC;IAE1C,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxE,KAAK,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,WAAW,EAAE,CAAC;YACxE,MAAM,cAAc,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAG1D,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAG5C,IAAI,aAAa,EAAE,CAAC;gBACnB,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,KAAK,aAAa,EAAE,EAAE,cAAc,CAAC,CAAC;YAClE,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAChD,OAAO,WAAW,CAAC;IACpB,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,GAAG,CAAC;QACnB,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;IAChF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,eAAe,KAAK,CAAC,MAAM,SAAS,CAAC;IAC7C,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.annotateGraph = annotateGraph;
|
|
4
|
+
function detectCycles(graph) {
|
|
5
|
+
const visiting = new Set();
|
|
6
|
+
const visited = new Set();
|
|
7
|
+
function dfs(nodeName, ancestors) {
|
|
8
|
+
if (visited.has(nodeName))
|
|
9
|
+
return;
|
|
10
|
+
if (visiting.has(nodeName))
|
|
11
|
+
return;
|
|
12
|
+
visiting.add(nodeName);
|
|
13
|
+
const newAncestors = new Set(ancestors);
|
|
14
|
+
newAncestors.add(nodeName);
|
|
15
|
+
const node = graph.nodes.get(nodeName);
|
|
16
|
+
if (!node) {
|
|
17
|
+
visiting.delete(nodeName);
|
|
18
|
+
visited.add(nodeName);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
for (const [, connections] of node.outputs) {
|
|
22
|
+
for (const conn of connections) {
|
|
23
|
+
if (ancestors.has(conn.target)) {
|
|
24
|
+
const targetNode = graph.nodes.get(conn.target);
|
|
25
|
+
if (targetNode) {
|
|
26
|
+
targetNode.annotations.isCycleTarget = true;
|
|
27
|
+
}
|
|
28
|
+
const edges = graph.cycleEdges.get(nodeName) ?? [];
|
|
29
|
+
edges.push(conn.target);
|
|
30
|
+
graph.cycleEdges.set(nodeName, edges);
|
|
31
|
+
}
|
|
32
|
+
else if (!visited.has(conn.target)) {
|
|
33
|
+
dfs(conn.target, newAncestors);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
visiting.delete(nodeName);
|
|
38
|
+
visited.add(nodeName);
|
|
39
|
+
}
|
|
40
|
+
for (const rootName of graph.roots) {
|
|
41
|
+
const ancestors = new Set();
|
|
42
|
+
dfs(rootName, ancestors);
|
|
43
|
+
}
|
|
44
|
+
for (const [nodeName] of graph.nodes) {
|
|
45
|
+
if (!visited.has(nodeName)) {
|
|
46
|
+
const ancestors = new Set();
|
|
47
|
+
dfs(nodeName, ancestors);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function collectReachable(startName, graph, visited = new Set()) {
|
|
52
|
+
if (visited.has(startName))
|
|
53
|
+
return visited;
|
|
54
|
+
visited.add(startName);
|
|
55
|
+
const node = graph.nodes.get(startName);
|
|
56
|
+
if (!node)
|
|
57
|
+
return visited;
|
|
58
|
+
for (const [, connections] of node.outputs) {
|
|
59
|
+
for (const conn of connections) {
|
|
60
|
+
collectReachable(conn.target, graph, visited);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return visited;
|
|
64
|
+
}
|
|
65
|
+
function findConvergenceNodes(graph) {
|
|
66
|
+
for (const [, node] of graph.nodes) {
|
|
67
|
+
if (node.outputs.size <= 1)
|
|
68
|
+
continue;
|
|
69
|
+
const branchOutputs = [];
|
|
70
|
+
for (const [, connections] of node.outputs) {
|
|
71
|
+
if (connections.length > 0) {
|
|
72
|
+
const branchTargets = connections.map((c) => c.target);
|
|
73
|
+
branchOutputs.push(branchTargets);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (branchOutputs.length < 2)
|
|
77
|
+
continue;
|
|
78
|
+
const branchReachable = [];
|
|
79
|
+
for (const branchTargets of branchOutputs) {
|
|
80
|
+
const reachable = new Set();
|
|
81
|
+
for (const target of branchTargets) {
|
|
82
|
+
collectReachable(target, graph, reachable);
|
|
83
|
+
}
|
|
84
|
+
branchReachable.push(reachable);
|
|
85
|
+
}
|
|
86
|
+
const allReachable = new Set();
|
|
87
|
+
for (const reachable of branchReachable) {
|
|
88
|
+
for (const nodeName of reachable) {
|
|
89
|
+
allReachable.add(nodeName);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
for (const nodeName of allReachable) {
|
|
93
|
+
const reachedByCount = branchReachable.filter((set) => set.has(nodeName)).length;
|
|
94
|
+
if (reachedByCount >= 2) {
|
|
95
|
+
const targetNode = graph.nodes.get(nodeName);
|
|
96
|
+
if (targetNode) {
|
|
97
|
+
targetNode.annotations.isConvergencePoint = true;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function annotateGraph(graph) {
|
|
104
|
+
detectCycles(graph);
|
|
105
|
+
findConvergenceNodes(graph);
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=graph-annotator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-annotator.js","sourceRoot":"","sources":["../../src/codegen/graph-annotator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { NodeExecutionSchema, IRunExecutionData } from 'n8n-workflow';
|
|
2
|
+
import type { ExpressionValue } from './types';
|
|
3
|
+
import type { WorkflowJSON } from '../types/base';
|
|
4
|
+
export type { SemanticGraph, SemanticNode, SemanticConnection, SubnodeConnection, ExpressionValue, } from './types';
|
|
5
|
+
export type { CompositeTree, CompositeNode } from './composite-tree';
|
|
6
|
+
export type { CompositeType, NodeSemantics } from './semantic-registry';
|
|
7
|
+
export interface GenerateWorkflowCodeOptions {
|
|
8
|
+
workflow: WorkflowJSON;
|
|
9
|
+
executionSchema?: NodeExecutionSchema[];
|
|
10
|
+
expressionValues?: Record<string, ExpressionValue[]>;
|
|
11
|
+
executionData?: IRunExecutionData['resultData'];
|
|
12
|
+
valuesExcluded?: boolean;
|
|
13
|
+
pinnedNodes?: string[];
|
|
14
|
+
}
|
|
15
|
+
export { buildSemanticGraph } from './semantic-graph';
|
|
16
|
+
export { annotateGraph } from './graph-annotator';
|
|
17
|
+
export { buildCompositeTree } from './composite-builder';
|
|
18
|
+
export { generateCode } from './code-generator';
|
|
19
|
+
export { getOutputName, getInputName, getCompositeType, getNodeSemantics, isCycleOutput, } from './semantic-registry';
|
|
20
|
+
export declare function generateWorkflowCode(input: WorkflowJSON | GenerateWorkflowCodeOptions): string;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isCycleOutput = exports.getNodeSemantics = exports.getCompositeType = exports.getInputName = exports.getOutputName = exports.generateCode = exports.buildCompositeTree = exports.annotateGraph = exports.buildSemanticGraph = void 0;
|
|
4
|
+
exports.generateWorkflowCode = generateWorkflowCode;
|
|
5
|
+
const code_generator_1 = require("./code-generator");
|
|
6
|
+
const composite_builder_1 = require("./composite-builder");
|
|
7
|
+
const execution_status_1 = require("./execution-status");
|
|
8
|
+
const expression_annotator_1 = require("./expression-annotator");
|
|
9
|
+
const graph_annotator_1 = require("./graph-annotator");
|
|
10
|
+
const semantic_graph_1 = require("./semantic-graph");
|
|
11
|
+
var semantic_graph_2 = require("./semantic-graph");
|
|
12
|
+
Object.defineProperty(exports, "buildSemanticGraph", { enumerable: true, get: function () { return semantic_graph_2.buildSemanticGraph; } });
|
|
13
|
+
var graph_annotator_2 = require("./graph-annotator");
|
|
14
|
+
Object.defineProperty(exports, "annotateGraph", { enumerable: true, get: function () { return graph_annotator_2.annotateGraph; } });
|
|
15
|
+
var composite_builder_2 = require("./composite-builder");
|
|
16
|
+
Object.defineProperty(exports, "buildCompositeTree", { enumerable: true, get: function () { return composite_builder_2.buildCompositeTree; } });
|
|
17
|
+
var code_generator_2 = require("./code-generator");
|
|
18
|
+
Object.defineProperty(exports, "generateCode", { enumerable: true, get: function () { return code_generator_2.generateCode; } });
|
|
19
|
+
var semantic_registry_1 = require("./semantic-registry");
|
|
20
|
+
Object.defineProperty(exports, "getOutputName", { enumerable: true, get: function () { return semantic_registry_1.getOutputName; } });
|
|
21
|
+
Object.defineProperty(exports, "getInputName", { enumerable: true, get: function () { return semantic_registry_1.getInputName; } });
|
|
22
|
+
Object.defineProperty(exports, "getCompositeType", { enumerable: true, get: function () { return semantic_registry_1.getCompositeType; } });
|
|
23
|
+
Object.defineProperty(exports, "getNodeSemantics", { enumerable: true, get: function () { return semantic_registry_1.getNodeSemantics; } });
|
|
24
|
+
Object.defineProperty(exports, "isCycleOutput", { enumerable: true, get: function () { return semantic_registry_1.isCycleOutput; } });
|
|
25
|
+
function isOptionsObject(input) {
|
|
26
|
+
return 'workflow' in input && input.workflow !== undefined;
|
|
27
|
+
}
|
|
28
|
+
function generateWorkflowCode(input) {
|
|
29
|
+
const { workflow, executionSchema, expressionValues, executionData, valuesExcluded, pinnedNodes, } = isOptionsObject(input)
|
|
30
|
+
? input
|
|
31
|
+
: {
|
|
32
|
+
workflow: input,
|
|
33
|
+
executionSchema: undefined,
|
|
34
|
+
expressionValues: undefined,
|
|
35
|
+
executionData: undefined,
|
|
36
|
+
valuesExcluded: undefined,
|
|
37
|
+
pinnedNodes: undefined,
|
|
38
|
+
};
|
|
39
|
+
const graph = (0, semantic_graph_1.buildSemanticGraph)(workflow);
|
|
40
|
+
(0, graph_annotator_1.annotateGraph)(graph);
|
|
41
|
+
const tree = (0, composite_builder_1.buildCompositeTree)(graph);
|
|
42
|
+
const expressionAnnotations = (0, expression_annotator_1.buildExpressionAnnotations)(expressionValues);
|
|
43
|
+
const nodeExecutionStatus = (0, execution_status_1.buildNodeExecutionStatus)(executionData);
|
|
44
|
+
const nodeSchemas = new Map();
|
|
45
|
+
if (executionSchema) {
|
|
46
|
+
for (const { nodeName, schema } of executionSchema) {
|
|
47
|
+
nodeSchemas.set(nodeName, schema);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const workflowStatusJSDoc = (0, execution_status_1.formatExecutionStatusJSDoc)(executionData);
|
|
51
|
+
return (0, code_generator_1.generateCode)(tree, workflow, graph, {
|
|
52
|
+
expressionAnnotations: expressionAnnotations.size > 0 ? expressionAnnotations : undefined,
|
|
53
|
+
nodeExecutionStatus: nodeExecutionStatus.size > 0 ? nodeExecutionStatus : undefined,
|
|
54
|
+
nodeSchemas: nodeSchemas.size > 0 ? nodeSchemas : undefined,
|
|
55
|
+
workflowStatusJSDoc: workflowStatusJSDoc || undefined,
|
|
56
|
+
valuesExcluded,
|
|
57
|
+
pinnedNodes: pinnedNodes ? new Set(pinnedNodes) : undefined,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":";;;AA+FA,oDAqDC;AAtID,qDAAgD;AAChD,2DAAyD;AACzD,yDAA0F;AAC1F,iEAAoE;AACpE,uDAAkD;AAClD,qDAAsD;AAkCtD,mDAAsD;AAA7C,oHAAA,kBAAkB,OAAA;AAC3B,qDAAkD;AAAzC,gHAAA,aAAa,OAAA;AACtB,yDAAyD;AAAhD,uHAAA,kBAAkB,OAAA;AAC3B,mDAAgD;AAAvC,8GAAA,YAAY,OAAA;AACrB,yDAM6B;AAL5B,kHAAA,aAAa,OAAA;AACb,iHAAA,YAAY,OAAA;AACZ,qHAAA,gBAAgB,OAAA;AAChB,qHAAA,gBAAgB,OAAA;AAChB,kHAAA,aAAa,OAAA;AAMd,SAAS,eAAe,CACvB,KAAiD;IAEjD,OAAO,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC;AAC5D,CAAC;AAuBD,SAAgB,oBAAoB,CAAC,KAAiD;IAErF,MAAM,EACL,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,WAAW,GACX,GAAG,eAAe,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC;YACA,QAAQ,EAAE,KAAK;YACf,eAAe,EAAE,SAAS;YAC1B,gBAAgB,EAAE,SAAS;YAC3B,aAAa,EAAE,SAAS;YACxB,cAAc,EAAE,SAAS;YACzB,WAAW,EAAE,SAAS;SACtB,CAAC;IAGJ,MAAM,KAAK,GAAG,IAAA,mCAAkB,EAAC,QAAQ,CAAC,CAAC;IAG3C,IAAA,+BAAa,EAAC,KAAK,CAAC,CAAC;IAGrB,MAAM,IAAI,GAAG,IAAA,sCAAkB,EAAC,KAAK,CAAC,CAAC;IAGvC,MAAM,qBAAqB,GAAG,IAAA,iDAA0B,EAAC,gBAAgB,CAAC,CAAC;IAC3E,MAAM,mBAAmB,GAAG,IAAA,2CAAwB,EAAC,aAAa,CAAC,CAAC;IAGpE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,IAAI,eAAe,EAAE,CAAC;QACrB,KAAK,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;YACpD,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAGD,MAAM,mBAAmB,GAAG,IAAA,6CAA0B,EAAC,aAAa,CAAC,CAAC;IAGtE,OAAO,IAAA,6BAAY,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC1C,qBAAqB,EAAE,qBAAqB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS;QACzF,mBAAmB,EAAE,mBAAmB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;QACnF,WAAW,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAC3D,mBAAmB,EAAE,mBAAmB,IAAI,SAAS;QACrD,cAAc;QACd,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;KAC3D,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BuildContext } from './composite-handlers/build-utils';
|
|
2
|
+
import type { SemanticNode } from './types';
|
|
3
|
+
export declare function hasOutputsOutsideMerge(node: SemanticNode, mergeNode: SemanticNode): boolean;
|
|
4
|
+
export declare function findDirectMergeInFanOut(targetNames: string[], ctx: BuildContext): {
|
|
5
|
+
mergeNode: SemanticNode;
|
|
6
|
+
nonMergeTargets: string[];
|
|
7
|
+
} | null;
|
|
8
|
+
export declare function detectMergePattern(targetNames: string[], ctx: BuildContext): {
|
|
9
|
+
mergeNode: SemanticNode;
|
|
10
|
+
branches: string[];
|
|
11
|
+
} | null;
|
|
12
|
+
export declare function findMergeInputIndex(mergeNode: SemanticNode, sourceName: string, sourceOutputSlot?: string): number;
|