@fsai-flow/workflow 0.0.2 → 0.0.3

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.
Files changed (79) hide show
  1. package/dist/README.md +31 -0
  2. package/dist/package.json +42 -0
  3. package/dist/src/index.d.ts +21 -0
  4. package/dist/src/index.js +33 -0
  5. package/dist/src/index.js.map +1 -0
  6. package/dist/src/lib/Constants.d.ts +68 -0
  7. package/dist/src/lib/Constants.js +106 -0
  8. package/dist/src/lib/Constants.js.map +1 -0
  9. package/dist/src/lib/DeferredPromise.d.ts +6 -0
  10. package/dist/src/lib/DeferredPromise.js +11 -0
  11. package/dist/src/lib/DeferredPromise.js.map +1 -0
  12. package/dist/src/lib/Expression.d.ts +65 -0
  13. package/dist/src/lib/Expression.js +215 -0
  14. package/dist/src/lib/Expression.js.map +1 -0
  15. package/dist/src/lib/Interfaces.d.ts +1579 -0
  16. package/dist/src/lib/Interfaces.js +44 -0
  17. package/dist/src/lib/Interfaces.js.map +1 -0
  18. package/dist/src/lib/LoggerProxy.d.ts +9 -0
  19. package/dist/src/lib/LoggerProxy.js +40 -0
  20. package/dist/src/lib/LoggerProxy.js.map +1 -0
  21. package/dist/src/lib/MetadataUtils.d.ts +4 -0
  22. package/dist/src/lib/MetadataUtils.js +27 -0
  23. package/dist/src/lib/MetadataUtils.js.map +1 -0
  24. package/dist/src/lib/NodeErrors.d.ts +82 -0
  25. package/dist/src/lib/NodeErrors.js +289 -0
  26. package/dist/src/lib/NodeErrors.js.map +1 -0
  27. package/dist/src/lib/NodeHelpers.d.ts +198 -0
  28. package/dist/src/lib/NodeHelpers.js +1348 -0
  29. package/dist/src/lib/NodeHelpers.js.map +1 -0
  30. package/dist/src/lib/ObservableObject.d.ts +5 -0
  31. package/dist/src/lib/ObservableObject.js +61 -0
  32. package/dist/src/lib/ObservableObject.js.map +1 -0
  33. package/dist/src/lib/RoutingNode.d.ts +18 -0
  34. package/dist/src/lib/RoutingNode.js +508 -0
  35. package/dist/src/lib/RoutingNode.js.map +1 -0
  36. package/dist/src/lib/TelemetryHelpers.d.ts +3 -0
  37. package/dist/src/lib/TelemetryHelpers.js +69 -0
  38. package/dist/src/lib/TelemetryHelpers.js.map +1 -0
  39. package/dist/src/lib/TypeValidation.d.ts +21 -0
  40. package/dist/src/lib/TypeValidation.js +385 -0
  41. package/dist/src/lib/TypeValidation.js.map +1 -0
  42. package/dist/src/lib/VersionedNodeType.d.ts +9 -0
  43. package/dist/src/lib/VersionedNodeType.js +26 -0
  44. package/dist/src/lib/VersionedNodeType.js.map +1 -0
  45. package/dist/src/lib/Workflow.d.ts +248 -0
  46. package/dist/src/lib/Workflow.js +904 -0
  47. package/dist/src/lib/Workflow.js.map +1 -0
  48. package/dist/src/lib/WorkflowDataProxy.d.ts +87 -0
  49. package/dist/src/lib/WorkflowDataProxy.js +556 -0
  50. package/dist/src/lib/WorkflowDataProxy.js.map +1 -0
  51. package/dist/src/lib/WorkflowErrors.d.ts +9 -0
  52. package/dist/src/lib/WorkflowErrors.js +18 -0
  53. package/dist/src/lib/WorkflowErrors.js.map +1 -0
  54. package/dist/src/lib/WorkflowHooks.d.ts +11 -0
  55. package/dist/src/lib/WorkflowHooks.js +34 -0
  56. package/dist/src/lib/WorkflowHooks.js.map +1 -0
  57. package/dist/src/lib/errors/base/base.error.d.ts +30 -0
  58. package/dist/src/lib/errors/base/base.error.js +45 -0
  59. package/dist/src/lib/errors/base/base.error.js.map +1 -0
  60. package/dist/src/lib/errors/base/operational.error.d.ts +15 -0
  61. package/dist/src/lib/errors/base/operational.error.js +19 -0
  62. package/dist/src/lib/errors/base/operational.error.js.map +1 -0
  63. package/dist/src/lib/errors/error.types.d.ts +11 -0
  64. package/dist/src/lib/errors/error.types.js +3 -0
  65. package/dist/src/lib/errors/error.types.js.map +1 -0
  66. package/dist/src/lib/errors/index.d.ts +1 -0
  67. package/dist/src/lib/errors/index.js +6 -0
  68. package/dist/src/lib/errors/index.js.map +1 -0
  69. package/dist/src/lib/result.d.ts +19 -0
  70. package/dist/src/lib/result.js +36 -0
  71. package/dist/src/lib/result.js.map +1 -0
  72. package/dist/src/lib/utils.d.ts +50 -0
  73. package/dist/src/lib/utils.js +119 -0
  74. package/dist/src/lib/utils.js.map +1 -0
  75. package/package.json +5 -1
  76. package/src/lib/Interfaces.ts +28 -33
  77. package/src/lib/Workflow.ts +1 -1
  78. package/src/lib/WorkflowDataProxy.ts +1 -1
  79. package/src/lib/utils.ts +99 -120
package/dist/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # @fsai-flow/workflow
2
+
3
+ This library is a dependency for [FSAI-Flow](https://github.com/your-org/flowx) that contains workflow-related base classes and types used throughout the application.
4
+
5
+ ## Installation
6
+
7
+ This project is published to the npm registry. To use it in your project:
8
+
9
+ ```bash
10
+ npm install @fsai-flow/workflow
11
+ ```
12
+
13
+ ## Building
14
+
15
+ Run `nx build workflow` to build the library.
16
+
17
+ ## Running unit tests
18
+
19
+ Run `nx test workflow` to execute the unit tests via [Jest](https://jestjs.io).
20
+
21
+ ## Contributing
22
+
23
+ To contribute to this project:
24
+
25
+ 1. Clone this repository
26
+ 2. Make your changes
27
+ 3. Open a Pull Request
28
+
29
+ ## Publishing
30
+
31
+ Maintainers can publish a new version to the npm package registry.
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@fsai-flow/workflow",
3
+ "version": "0.0.2",
4
+ "license": "PolyForm Noncommercial License 1.0.0",
5
+ "dependencies": {
6
+ "form-data": "^4.0.1",
7
+ "jmespath": "^0.16.0",
8
+ "esprima-next": "5.8.4",
9
+ "lodash.get": "^4.4.2",
10
+ "lodash.isequal": "^4.5.0",
11
+ "lodash.merge": "^4.6.2",
12
+ "luxon": "^3.5.0",
13
+ "request": "^2.88.2",
14
+ "request-promise-native": "^1.0.9",
15
+ "riot-tmpl": "^3.0.8",
16
+ "tslib": "^2.3.0",
17
+ "@sentry/node": "^9.15.0",
18
+ "callsites": "^3.1.0",
19
+ "xml2js": "^0.6.2"
20
+ },
21
+ "devDependencies": {
22
+ "@types/express": "^5.0.0",
23
+ "@types/jmespath": "^0.15.2",
24
+ "@types/lodash": "^4.17.13",
25
+ "@types/lodash.get": "^4.4.9",
26
+ "@types/lodash.isequal": "^4.5.8",
27
+ "@types/lodash.merge": "^4.6.9",
28
+ "@types/luxon": "^3.4.2",
29
+ "@types/request": "^2.48.12",
30
+ "@types/request-promise-native": "^1.0.15",
31
+ "@types/xml2js": "^0.4.14",
32
+ "@typescript-eslint/eslint-plugin": "^8.18.0",
33
+ "@typescript-eslint/parser": "^8.18.0",
34
+ "eslint": "^9.15.0",
35
+ "eslint-friendly-formatter": "^4.0.1",
36
+ "jsonc-eslint-parser": "^2.4.0"
37
+ },
38
+ "type": "commonjs",
39
+ "main": "./dist/src/index.js",
40
+ "typings": "./dist/src/index.d.ts",
41
+ "types": "./src/index.d.ts"
42
+ }
@@ -0,0 +1,21 @@
1
+ import * as LoggerProxy from './lib/LoggerProxy';
2
+ import * as NodeHelpers from './lib/NodeHelpers';
3
+ import * as ObservableObject from './lib/ObservableObject';
4
+ export * from './lib/MetadataUtils';
5
+ export * from './lib/errors';
6
+ export * from './lib/DeferredPromise';
7
+ export * from './lib/Interfaces';
8
+ export * from './lib/Expression';
9
+ export * from './lib/NodeErrors';
10
+ export * from './lib/Constants';
11
+ export * from './lib/NodeHelpers';
12
+ export * as TelemetryHelpers from './lib/TelemetryHelpers';
13
+ export * from './lib/RoutingNode';
14
+ export * from './lib/Workflow';
15
+ export * from './lib/TypeValidation';
16
+ export * from './lib/WorkflowDataProxy';
17
+ export * from './lib/WorkflowErrors';
18
+ export * from './lib/WorkflowHooks';
19
+ export * from './lib/result';
20
+ export { LoggerProxy, NodeHelpers, ObservableObject };
21
+ export { updateDisplayOptions, randomInt, jsonParse, jsonStringify, replaceCircularReferences, } from './lib/utils';
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.replaceCircularReferences = exports.jsonStringify = exports.jsonParse = exports.randomInt = exports.updateDisplayOptions = exports.ObservableObject = exports.NodeHelpers = exports.LoggerProxy = exports.TelemetryHelpers = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const LoggerProxy = tslib_1.__importStar(require("./lib/LoggerProxy"));
6
+ exports.LoggerProxy = LoggerProxy;
7
+ const NodeHelpers = tslib_1.__importStar(require("./lib/NodeHelpers"));
8
+ exports.NodeHelpers = NodeHelpers;
9
+ const ObservableObject = tslib_1.__importStar(require("./lib/ObservableObject"));
10
+ exports.ObservableObject = ObservableObject;
11
+ tslib_1.__exportStar(require("./lib/MetadataUtils"), exports);
12
+ tslib_1.__exportStar(require("./lib/errors"), exports);
13
+ tslib_1.__exportStar(require("./lib/DeferredPromise"), exports);
14
+ tslib_1.__exportStar(require("./lib/Interfaces"), exports);
15
+ tslib_1.__exportStar(require("./lib/Expression"), exports);
16
+ tslib_1.__exportStar(require("./lib/NodeErrors"), exports);
17
+ tslib_1.__exportStar(require("./lib/Constants"), exports);
18
+ tslib_1.__exportStar(require("./lib/NodeHelpers"), exports);
19
+ exports.TelemetryHelpers = tslib_1.__importStar(require("./lib/TelemetryHelpers"));
20
+ tslib_1.__exportStar(require("./lib/RoutingNode"), exports);
21
+ tslib_1.__exportStar(require("./lib/Workflow"), exports);
22
+ tslib_1.__exportStar(require("./lib/TypeValidation"), exports);
23
+ tslib_1.__exportStar(require("./lib/WorkflowDataProxy"), exports);
24
+ tslib_1.__exportStar(require("./lib/WorkflowErrors"), exports);
25
+ tslib_1.__exportStar(require("./lib/WorkflowHooks"), exports);
26
+ tslib_1.__exportStar(require("./lib/result"), exports);
27
+ var utils_1 = require("./lib/utils");
28
+ Object.defineProperty(exports, "updateDisplayOptions", { enumerable: true, get: function () { return utils_1.updateDisplayOptions; } });
29
+ Object.defineProperty(exports, "randomInt", { enumerable: true, get: function () { return utils_1.randomInt; } });
30
+ Object.defineProperty(exports, "jsonParse", { enumerable: true, get: function () { return utils_1.jsonParse; } });
31
+ Object.defineProperty(exports, "jsonStringify", { enumerable: true, get: function () { return utils_1.jsonStringify; } });
32
+ Object.defineProperty(exports, "replaceCircularReferences", { enumerable: true, get: function () { return utils_1.replaceCircularReferences; } });
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,uEAAiD;AAsB7C,kCAAW;AArBf,uEAAiD;AAsB7C,kCAAW;AArBf,iFAA2D;AAsBvD,4CAAgB;AApBpB,8DAAoC;AAEpC,uDAA4B;AAC5B,gEAAsC;AACtC,2DAAiC;AACjC,2DAAiC;AACjC,2DAAiC;AACjC,0DAAgC;AAChC,4DAAkC;AAClC,mFAA2D;AAC3D,4DAAkC;AAClC,yDAA+B;AAC/B,+DAAqC;AACrC,kEAAwC;AACxC,+DAAqC;AACrC,8DAAoC;AACpC,uDAA6B;AAM7B,qCAMqB;AALjB,6GAAA,oBAAoB,OAAA;AACpB,kGAAA,SAAS,OAAA;AACT,kGAAA,SAAS,OAAA;AACT,sGAAA,aAAa,OAAA;AACb,kHAAA,yBAAyB,OAAA"}
@@ -0,0 +1,68 @@
1
+ import { NodeConnectionType } from "./Interfaces";
2
+ export declare const DIGITS = "0123456789";
3
+ export declare const UPPERCASE_LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
4
+ export declare const LOWERCASE_LETTERS: string;
5
+ export declare const ALPHABET: string;
6
+ export declare const BINARY_ENCODING = "base64";
7
+ export declare const WAIT_INDEFINITELY: Date;
8
+ export declare const LOG_LEVELS: readonly ["silent", "error", "warn", "info", "debug"];
9
+ export declare const CODE_LANGUAGES: readonly ["javaScript", "python"];
10
+ export declare const CODE_EXECUTION_MODES: readonly ["runOnceForAllItems", "runOnceForEachItem"];
11
+ export declare const CREDENTIAL_EMPTY_VALUE = "__n8n_EMPTY_VALUE_7b1af746-3729-4c60-9b9b-e08eb29e58da";
12
+ export declare const FORM_TRIGGER_PATH_IDENTIFIER = "n8n-form";
13
+ export declare const UNKNOWN_ERROR_MESSAGE = "There was an unknown issue while executing the node";
14
+ export declare const UNKNOWN_ERROR_DESCRIPTION = "Double-check the node configuration and the service it connects to. Check the error details below and refer to the <a href=\"https://docs.n8n.io\" target=\"_blank\">n8n documentation</a> to troubleshoot the issue.";
15
+ export declare const UNKNOWN_ERROR_MESSAGE_CRED = "UNKNOWN ERROR";
16
+ export declare const STICKY_NODE_TYPE = "n8n-nodes-base.stickyNote";
17
+ export declare const NO_OP_NODE_TYPE = "n8n-nodes-base.noOp";
18
+ export declare const HTTP_REQUEST_NODE_TYPE = "n8n-nodes-base.httpRequest";
19
+ export declare const WEBHOOK_NODE_TYPE = "n8n-nodes-base.webhook";
20
+ export declare const MANUAL_TRIGGER_NODE_TYPE = "n8n-nodes-base.manualTrigger";
21
+ export declare const ERROR_TRIGGER_NODE_TYPE = "n8n-nodes-base.errorTrigger";
22
+ export declare const START_NODE_TYPE = "n8n-nodes-base.start";
23
+ export declare const EXECUTE_WORKFLOW_NODE_TYPE = "n8n-nodes-base.executeWorkflow";
24
+ export declare const EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE = "n8n-nodes-base.executeWorkflowTrigger";
25
+ export declare const CODE_NODE_TYPE = "n8n-nodes-base.code";
26
+ export declare const FUNCTION_NODE_TYPE = "n8n-nodes-base.function";
27
+ export declare const FUNCTION_ITEM_NODE_TYPE = "n8n-nodes-base.functionItem";
28
+ export declare const MERGE_NODE_TYPE = "n8n-nodes-base.merge";
29
+ export declare const AI_TRANSFORM_NODE_TYPE = "n8n-nodes-base.aiTransform";
30
+ export declare const FORM_NODE_TYPE = "n8n-nodes-base.form";
31
+ export declare const FORM_TRIGGER_NODE_TYPE = "n8n-nodes-base.formTrigger";
32
+ export declare const CHAT_TRIGGER_NODE_TYPE = "@n8n/n8n-nodes-langchain.chatTrigger";
33
+ export declare const WAIT_NODE_TYPE = "n8n-nodes-base.wait";
34
+ export declare const ConnectionTypeDisplayNames: {
35
+ [key in NodeConnectionType]: string;
36
+ };
37
+ export declare const STARTING_NODE_TYPES: string[];
38
+ export declare const SCRIPTING_NODE_TYPES: string[];
39
+ export declare const ADD_FORM_NOTICE = "addFormPage";
40
+ /**
41
+ * Nodes whose parameter values may refer to other nodes without expressions.
42
+ * Their content may need to be updated when the referenced node is renamed.
43
+ */
44
+ export declare const NODES_WITH_RENAMABLE_CONTENT: Set<string>;
45
+ export declare const MANUAL_CHAT_TRIGGER_LANGCHAIN_NODE_TYPE = "@n8n/n8n-nodes-langchain.manualChatTrigger";
46
+ export declare const AGENT_LANGCHAIN_NODE_TYPE = "@n8n/n8n-nodes-langchain.agent";
47
+ export declare const CHAIN_LLM_LANGCHAIN_NODE_TYPE = "@n8n/n8n-nodes-langchain.chainLlm";
48
+ export declare const OPENAI_LANGCHAIN_NODE_TYPE = "@n8n/n8n-nodes-langchain.openAi";
49
+ export declare const CHAIN_SUMMARIZATION_LANGCHAIN_NODE_TYPE = "@n8n/n8n-nodes-langchain.chainSummarization";
50
+ export declare const CODE_TOOL_LANGCHAIN_NODE_TYPE = "@n8n/n8n-nodes-langchain.toolCode";
51
+ export declare const WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE = "@n8n/n8n-nodes-langchain.toolWorkflow";
52
+ export declare const HTTP_REQUEST_TOOL_LANGCHAIN_NODE_TYPE = "@n8n/n8n-nodes-langchain.toolHttpRequest";
53
+ export declare const LANGCHAIN_CUSTOM_TOOLS: string[];
54
+ export declare const SEND_AND_WAIT_OPERATION = "sendAndWait";
55
+ export declare const AI_TRANSFORM_CODE_GENERATED_FOR_PROMPT = "codeGeneratedForPrompt";
56
+ export declare const AI_TRANSFORM_JS_CODE = "jsCode";
57
+ /**
58
+ * Key for an item standing in for a manual execution data item too large to be
59
+ * sent live via pubsub. See {@link TRIMMED_TASK_DATA_CONNECTIONS} in constants
60
+ * in `cli` package.
61
+ */
62
+ export declare const TRIMMED_TASK_DATA_CONNECTIONS_KEY = "__isTrimmedManualExecutionDataItem";
63
+ export declare const OPEN_AI_API_CREDENTIAL_TYPE = "openAiApi";
64
+ export declare const FREE_AI_CREDITS_ERROR_TYPE = "free_ai_credits_request_error";
65
+ export declare const FREE_AI_CREDITS_USED_ALL_CREDITS_ERROR_CODE = 400;
66
+ export declare const FROM_AI_AUTO_GENERATED_MARKER = "/*n8n-auto-generated-fromAI-override*/";
67
+ export declare const PROJECT_ROOT = "0";
68
+ export declare const WAITING_FORMS_EXECUTION_STATUS = "n8n-execution-status";
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TRIMMED_TASK_DATA_CONNECTIONS_KEY = exports.AI_TRANSFORM_JS_CODE = exports.AI_TRANSFORM_CODE_GENERATED_FOR_PROMPT = exports.SEND_AND_WAIT_OPERATION = exports.LANGCHAIN_CUSTOM_TOOLS = exports.HTTP_REQUEST_TOOL_LANGCHAIN_NODE_TYPE = exports.WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE = exports.CODE_TOOL_LANGCHAIN_NODE_TYPE = exports.CHAIN_SUMMARIZATION_LANGCHAIN_NODE_TYPE = exports.OPENAI_LANGCHAIN_NODE_TYPE = exports.CHAIN_LLM_LANGCHAIN_NODE_TYPE = exports.AGENT_LANGCHAIN_NODE_TYPE = exports.MANUAL_CHAT_TRIGGER_LANGCHAIN_NODE_TYPE = exports.NODES_WITH_RENAMABLE_CONTENT = exports.ADD_FORM_NOTICE = exports.SCRIPTING_NODE_TYPES = exports.STARTING_NODE_TYPES = exports.ConnectionTypeDisplayNames = exports.WAIT_NODE_TYPE = exports.CHAT_TRIGGER_NODE_TYPE = exports.FORM_TRIGGER_NODE_TYPE = exports.FORM_NODE_TYPE = exports.AI_TRANSFORM_NODE_TYPE = exports.MERGE_NODE_TYPE = exports.FUNCTION_ITEM_NODE_TYPE = exports.FUNCTION_NODE_TYPE = exports.CODE_NODE_TYPE = exports.EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE = exports.EXECUTE_WORKFLOW_NODE_TYPE = exports.START_NODE_TYPE = exports.ERROR_TRIGGER_NODE_TYPE = exports.MANUAL_TRIGGER_NODE_TYPE = exports.WEBHOOK_NODE_TYPE = exports.HTTP_REQUEST_NODE_TYPE = exports.NO_OP_NODE_TYPE = exports.STICKY_NODE_TYPE = exports.UNKNOWN_ERROR_MESSAGE_CRED = exports.UNKNOWN_ERROR_DESCRIPTION = exports.UNKNOWN_ERROR_MESSAGE = exports.FORM_TRIGGER_PATH_IDENTIFIER = exports.CREDENTIAL_EMPTY_VALUE = exports.CODE_EXECUTION_MODES = exports.CODE_LANGUAGES = exports.LOG_LEVELS = exports.WAIT_INDEFINITELY = exports.BINARY_ENCODING = exports.ALPHABET = exports.LOWERCASE_LETTERS = exports.UPPERCASE_LETTERS = exports.DIGITS = void 0;
4
+ exports.WAITING_FORMS_EXECUTION_STATUS = exports.PROJECT_ROOT = exports.FROM_AI_AUTO_GENERATED_MARKER = exports.FREE_AI_CREDITS_USED_ALL_CREDITS_ERROR_CODE = exports.FREE_AI_CREDITS_ERROR_TYPE = exports.OPEN_AI_API_CREDENTIAL_TYPE = void 0;
5
+ const Interfaces_1 = require("./Interfaces");
6
+ exports.DIGITS = '0123456789';
7
+ exports.UPPERCASE_LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
8
+ exports.LOWERCASE_LETTERS = exports.UPPERCASE_LETTERS.toLowerCase();
9
+ exports.ALPHABET = [exports.DIGITS, exports.UPPERCASE_LETTERS, exports.LOWERCASE_LETTERS].join('');
10
+ exports.BINARY_ENCODING = 'base64';
11
+ exports.WAIT_INDEFINITELY = new Date('3000-01-01T00:00:00.000Z');
12
+ exports.LOG_LEVELS = ['silent', 'error', 'warn', 'info', 'debug'];
13
+ exports.CODE_LANGUAGES = ['javaScript', 'python'];
14
+ exports.CODE_EXECUTION_MODES = ['runOnceForAllItems', 'runOnceForEachItem'];
15
+ // Arbitrary value to represent an empty credential value
16
+ exports.CREDENTIAL_EMPTY_VALUE = '__n8n_EMPTY_VALUE_7b1af746-3729-4c60-9b9b-e08eb29e58da';
17
+ exports.FORM_TRIGGER_PATH_IDENTIFIER = 'n8n-form';
18
+ exports.UNKNOWN_ERROR_MESSAGE = 'There was an unknown issue while executing the node';
19
+ exports.UNKNOWN_ERROR_DESCRIPTION = 'Double-check the node configuration and the service it connects to. Check the error details below and refer to the <a href="https://docs.n8n.io" target="_blank">n8n documentation</a> to troubleshoot the issue.';
20
+ exports.UNKNOWN_ERROR_MESSAGE_CRED = 'UNKNOWN ERROR';
21
+ //n8n-nodes-base
22
+ exports.STICKY_NODE_TYPE = 'n8n-nodes-base.stickyNote';
23
+ exports.NO_OP_NODE_TYPE = 'n8n-nodes-base.noOp';
24
+ exports.HTTP_REQUEST_NODE_TYPE = 'n8n-nodes-base.httpRequest';
25
+ exports.WEBHOOK_NODE_TYPE = 'n8n-nodes-base.webhook';
26
+ exports.MANUAL_TRIGGER_NODE_TYPE = 'n8n-nodes-base.manualTrigger';
27
+ exports.ERROR_TRIGGER_NODE_TYPE = 'n8n-nodes-base.errorTrigger';
28
+ exports.START_NODE_TYPE = 'n8n-nodes-base.start';
29
+ exports.EXECUTE_WORKFLOW_NODE_TYPE = 'n8n-nodes-base.executeWorkflow';
30
+ exports.EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE = 'n8n-nodes-base.executeWorkflowTrigger';
31
+ exports.CODE_NODE_TYPE = 'n8n-nodes-base.code';
32
+ exports.FUNCTION_NODE_TYPE = 'n8n-nodes-base.function';
33
+ exports.FUNCTION_ITEM_NODE_TYPE = 'n8n-nodes-base.functionItem';
34
+ exports.MERGE_NODE_TYPE = 'n8n-nodes-base.merge';
35
+ exports.AI_TRANSFORM_NODE_TYPE = 'n8n-nodes-base.aiTransform';
36
+ exports.FORM_NODE_TYPE = 'n8n-nodes-base.form';
37
+ exports.FORM_TRIGGER_NODE_TYPE = 'n8n-nodes-base.formTrigger';
38
+ exports.CHAT_TRIGGER_NODE_TYPE = '@n8n/n8n-nodes-langchain.chatTrigger';
39
+ exports.WAIT_NODE_TYPE = 'n8n-nodes-base.wait';
40
+ exports.ConnectionTypeDisplayNames = {
41
+ [Interfaces_1.NodeConnectionTypes.Main]: 'Main',
42
+ [Interfaces_1.NodeConnectionTypes.AiAgent]: 'IA Agent',
43
+ [Interfaces_1.NodeConnectionTypes.AiChain]: 'Chain',
44
+ [Interfaces_1.NodeConnectionTypes.AiDocument]: 'Document',
45
+ [Interfaces_1.NodeConnectionTypes.AiEmbedding]: 'Embedding',
46
+ [Interfaces_1.NodeConnectionTypes.AiLanguageModel]: 'Model',
47
+ [Interfaces_1.NodeConnectionTypes.AiMemory]: 'Memory',
48
+ [Interfaces_1.NodeConnectionTypes.AiOutputParser]: 'Output Parser',
49
+ [Interfaces_1.NodeConnectionTypes.AiRetriever]: 'Retriever',
50
+ [Interfaces_1.NodeConnectionTypes.AiTextSplitter]: 'Text Splitter',
51
+ [Interfaces_1.NodeConnectionTypes.AiTool]: 'Tool',
52
+ [Interfaces_1.NodeConnectionTypes.AiVectorStore]: 'Vector Store',
53
+ };
54
+ exports.STARTING_NODE_TYPES = [
55
+ exports.MANUAL_TRIGGER_NODE_TYPE,
56
+ exports.EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE,
57
+ exports.ERROR_TRIGGER_NODE_TYPE,
58
+ exports.START_NODE_TYPE,
59
+ ];
60
+ exports.SCRIPTING_NODE_TYPES = [
61
+ exports.FUNCTION_NODE_TYPE,
62
+ exports.FUNCTION_ITEM_NODE_TYPE,
63
+ exports.CODE_NODE_TYPE,
64
+ exports.AI_TRANSFORM_NODE_TYPE,
65
+ ];
66
+ exports.ADD_FORM_NOTICE = 'addFormPage';
67
+ /**
68
+ * Nodes whose parameter values may refer to other nodes without expressions.
69
+ * Their content may need to be updated when the referenced node is renamed.
70
+ */
71
+ exports.NODES_WITH_RENAMABLE_CONTENT = new Set([
72
+ exports.CODE_NODE_TYPE,
73
+ exports.FUNCTION_NODE_TYPE,
74
+ exports.FUNCTION_ITEM_NODE_TYPE,
75
+ exports.AI_TRANSFORM_NODE_TYPE,
76
+ ]);
77
+ //@n8n/n8n-nodes-langchain
78
+ exports.MANUAL_CHAT_TRIGGER_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.manualChatTrigger';
79
+ exports.AGENT_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.agent';
80
+ exports.CHAIN_LLM_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.chainLlm';
81
+ exports.OPENAI_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.openAi';
82
+ exports.CHAIN_SUMMARIZATION_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.chainSummarization';
83
+ exports.CODE_TOOL_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.toolCode';
84
+ exports.WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.toolWorkflow';
85
+ exports.HTTP_REQUEST_TOOL_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.toolHttpRequest';
86
+ exports.LANGCHAIN_CUSTOM_TOOLS = [
87
+ exports.CODE_TOOL_LANGCHAIN_NODE_TYPE,
88
+ exports.WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE,
89
+ exports.HTTP_REQUEST_TOOL_LANGCHAIN_NODE_TYPE,
90
+ ];
91
+ exports.SEND_AND_WAIT_OPERATION = 'sendAndWait';
92
+ exports.AI_TRANSFORM_CODE_GENERATED_FOR_PROMPT = 'codeGeneratedForPrompt';
93
+ exports.AI_TRANSFORM_JS_CODE = 'jsCode';
94
+ /**
95
+ * Key for an item standing in for a manual execution data item too large to be
96
+ * sent live via pubsub. See {@link TRIMMED_TASK_DATA_CONNECTIONS} in constants
97
+ * in `cli` package.
98
+ */
99
+ exports.TRIMMED_TASK_DATA_CONNECTIONS_KEY = '__isTrimmedManualExecutionDataItem';
100
+ exports.OPEN_AI_API_CREDENTIAL_TYPE = 'openAiApi';
101
+ exports.FREE_AI_CREDITS_ERROR_TYPE = 'free_ai_credits_request_error';
102
+ exports.FREE_AI_CREDITS_USED_ALL_CREDITS_ERROR_CODE = 400;
103
+ exports.FROM_AI_AUTO_GENERATED_MARKER = '/*n8n-auto-generated-fromAI-override*/';
104
+ exports.PROJECT_ROOT = '0';
105
+ exports.WAITING_FORMS_EXECUTION_STATUS = 'n8n-execution-status';
106
+ //# sourceMappingURL=Constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../../../src/lib/Constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface IDeferredPromise<T> {
2
+ promise: () => Promise<T>;
3
+ reject: (error: Error) => void;
4
+ resolve: (result: T) => void;
5
+ }
6
+ export declare function createDeferredPromise<T>(): Promise<IDeferredPromise<T>>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDeferredPromise = createDeferredPromise;
4
+ async function createDeferredPromise() {
5
+ return new Promise((resolveCreate) => {
6
+ const promise = new Promise((resolve, reject) => {
7
+ resolveCreate({ promise: async () => promise, resolve, reject });
8
+ });
9
+ });
10
+ }
11
+ //# sourceMappingURL=DeferredPromise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeferredPromise.js","sourceRoot":"","sources":["../../../src/lib/DeferredPromise.ts"],"names":[],"mappings":";;AAOA,sDAMC;AANM,KAAK,UAAU,qBAAqB;IAC1C,OAAO,IAAI,OAAO,CAAsB,CAAC,aAAa,EAAE,EAAE;QACzD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClD,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { INode, INodeExecutionData, INodeParameters, IRunExecutionData, IWorkflowDataProxyAdditionalKeys, NodeParameterValue, Workflow, WorkflowExecuteMode } from '..';
2
+ export declare class Expression {
3
+ workflow: Workflow;
4
+ constructor(workflow: Workflow);
5
+ /**
6
+ * Converts an object to a string in a way to make it clear that
7
+ * the value comes from an object
8
+ *
9
+ * @param {object} value
10
+ * @returns {string}
11
+ * @memberof Workflow
12
+ */
13
+ convertObjectValueToString(value: object): string;
14
+ /**
15
+ * Resolves the paramter value. If it is an expression it will execute it and
16
+ * return the result. For everything simply the supplied value will be returned.
17
+ *
18
+ * @param {NodeParameterValue} parameterValue
19
+ * @param {(IRunExecutionData | null)} runExecutionData
20
+ * @param {number} runIndex
21
+ * @param {number} itemIndex
22
+ * @param {string} activeNodeName
23
+ * @param {INodeExecutionData[]} connectionInputData
24
+ * @param {boolean} [returnObjectAsString=false]
25
+ * @returns {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[])}
26
+ * @memberof Workflow
27
+ */
28
+ resolveSimpleParameterValue(parameterValue: NodeParameterValue, siblingParameters: INodeParameters, runExecutionData: IRunExecutionData | null, runIndex: number, itemIndex: number, activeNodeName: string, connectionInputData: INodeExecutionData[], mode: WorkflowExecuteMode, additionalKeys: IWorkflowDataProxyAdditionalKeys, returnObjectAsString?: boolean, selfData?: {}): NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[];
29
+ /**
30
+ * Resolves value of parameter. But does not work for workflow-data.
31
+ *
32
+ * @param {INode} node
33
+ * @param {(string | undefined)} parameterValue
34
+ * @param {string} [defaultValue]
35
+ * @returns {(string | undefined)}
36
+ * @memberof Workflow
37
+ */
38
+ getSimpleParameterValue(node: INode, parameterValue: string | boolean | undefined, mode: WorkflowExecuteMode, additionalKeys: IWorkflowDataProxyAdditionalKeys, defaultValue?: boolean | number | string): boolean | number | string | undefined;
39
+ /**
40
+ * Resolves value of complex parameter. But does not work for workflow-data.
41
+ *
42
+ * @param {INode} node
43
+ * @param {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[])} parameterValue
44
+ * @param {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[] | undefined)} [defaultValue]
45
+ * @returns {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[] | undefined)}
46
+ * @memberof Workflow
47
+ */
48
+ getComplexParameterValue(node: INode, parameterValue: NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[], mode: WorkflowExecuteMode, additionalKeys: IWorkflowDataProxyAdditionalKeys, defaultValue?: NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[] | undefined, selfData?: {}): NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[] | undefined;
49
+ /**
50
+ * Returns the resolved node parameter value. If it is an expression it will execute it and
51
+ * return the result. If the value to resolve is an array or object it will do the same
52
+ * for all of the items and values.
53
+ *
54
+ * @param {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[])} parameterValue
55
+ * @param {(IRunExecutionData | null)} runExecutionData
56
+ * @param {number} runIndex
57
+ * @param {number} itemIndex
58
+ * @param {string} activeNodeName
59
+ * @param {INodeExecutionData[]} connectionInputData
60
+ * @param {boolean} [returnObjectAsString=false]
61
+ * @returns {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[])}
62
+ * @memberof Workflow
63
+ */
64
+ getParameterValue(parameterValue: NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[], runExecutionData: IRunExecutionData | null, runIndex: number, itemIndex: number, activeNodeName: string, connectionInputData: INodeExecutionData[], mode: WorkflowExecuteMode, additionalKeys: IWorkflowDataProxyAdditionalKeys, returnObjectAsString?: boolean, selfData?: {}): NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[];
65
+ }
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Expression = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // @ts-ignore
6
+ const tmpl = tslib_1.__importStar(require("riot-tmpl"));
7
+ const luxon_1 = require("luxon");
8
+ // eslint-disable-next-line import/no-cycle
9
+ const __1 = require("..");
10
+ // @ts-ignore
11
+ // Set it to use double curly brackets instead of single ones
12
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
13
+ tmpl.brackets.set('{{ }}');
14
+ // Make sure that it does not always print an error when it could not resolve
15
+ // a variable
16
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
17
+ tmpl.tmpl.errorHandler = () => { };
18
+ class Expression {
19
+ workflow;
20
+ constructor(workflow) {
21
+ this.workflow = workflow;
22
+ }
23
+ /**
24
+ * Converts an object to a string in a way to make it clear that
25
+ * the value comes from an object
26
+ *
27
+ * @param {object} value
28
+ * @returns {string}
29
+ * @memberof Workflow
30
+ */
31
+ convertObjectValueToString(value) {
32
+ const typeName = Array.isArray(value) ? 'Array' : 'Object';
33
+ return `[${typeName}: ${JSON.stringify(value)}]`;
34
+ }
35
+ /**
36
+ * Resolves the paramter value. If it is an expression it will execute it and
37
+ * return the result. For everything simply the supplied value will be returned.
38
+ *
39
+ * @param {NodeParameterValue} parameterValue
40
+ * @param {(IRunExecutionData | null)} runExecutionData
41
+ * @param {number} runIndex
42
+ * @param {number} itemIndex
43
+ * @param {string} activeNodeName
44
+ * @param {INodeExecutionData[]} connectionInputData
45
+ * @param {boolean} [returnObjectAsString=false]
46
+ * @returns {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[])}
47
+ * @memberof Workflow
48
+ */
49
+ resolveSimpleParameterValue(parameterValue, siblingParameters, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, mode, additionalKeys, returnObjectAsString = false, selfData = {}) {
50
+ // Check if it is an expression
51
+ if (typeof parameterValue !== 'string' || parameterValue.charAt(0) !== '=') {
52
+ // Is no expression so return value
53
+ return parameterValue;
54
+ }
55
+ // Is an expression
56
+ // Remove the equal sign
57
+ // eslint-disable-next-line no-param-reassign
58
+ parameterValue = parameterValue.substr(1);
59
+ // Generate a data proxy which allows to query workflow data
60
+ const dataProxy = new __1.WorkflowDataProxy(this.workflow, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, siblingParameters, mode, additionalKeys, -1, selfData);
61
+ const data = dataProxy.getDataProxy();
62
+ // Support only a subset of process properties
63
+ // @ts-ignore
64
+ data.process = {
65
+ arch: process.arch,
66
+ env: process.env,
67
+ platform: process.platform,
68
+ pid: process.pid,
69
+ ppid: process.ppid,
70
+ release: process.release,
71
+ version: process.pid,
72
+ versions: process.versions,
73
+ };
74
+ // @ts-ignore
75
+ data.document = {};
76
+ // @ts-ignore
77
+ data.DateTime = luxon_1.DateTime;
78
+ data['Interval'] = luxon_1.Interval;
79
+ data['Duration'] = luxon_1.Duration;
80
+ // @ts-ignore
81
+ data.constructor = {};
82
+ // Execute the expression
83
+ try {
84
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
85
+ const returnValue = tmpl.tmpl(parameterValue, data);
86
+ if (typeof returnValue === 'function') {
87
+ throw new Error('Expression resolved to a function. Please add "()"');
88
+ }
89
+ else if (returnValue !== null && typeof returnValue === 'object') {
90
+ if (returnObjectAsString) {
91
+ return this.convertObjectValueToString(returnValue);
92
+ }
93
+ }
94
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
95
+ return returnValue;
96
+ }
97
+ catch (e) {
98
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-member-access
99
+ throw new Error(`Expression is not valid: ${e.message}`);
100
+ }
101
+ }
102
+ /**
103
+ * Resolves value of parameter. But does not work for workflow-data.
104
+ *
105
+ * @param {INode} node
106
+ * @param {(string | undefined)} parameterValue
107
+ * @param {string} [defaultValue]
108
+ * @returns {(string | undefined)}
109
+ * @memberof Workflow
110
+ */
111
+ getSimpleParameterValue(node, parameterValue, mode, additionalKeys, defaultValue) {
112
+ if (parameterValue === undefined) {
113
+ // Value is not set so return the default
114
+ return defaultValue;
115
+ }
116
+ // Get the value of the node (can be an expression)
117
+ const runIndex = 0;
118
+ const itemIndex = 0;
119
+ const connectionInputData = [];
120
+ const runData = {
121
+ resultData: {
122
+ runData: {},
123
+ },
124
+ };
125
+ return this.getParameterValue(parameterValue, runData, runIndex, itemIndex, node.name, connectionInputData, mode, additionalKeys);
126
+ }
127
+ /**
128
+ * Resolves value of complex parameter. But does not work for workflow-data.
129
+ *
130
+ * @param {INode} node
131
+ * @param {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[])} parameterValue
132
+ * @param {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[] | undefined)} [defaultValue]
133
+ * @returns {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[] | undefined)}
134
+ * @memberof Workflow
135
+ */
136
+ getComplexParameterValue(node, parameterValue, mode, additionalKeys, defaultValue = undefined, selfData = {}) {
137
+ if (parameterValue === undefined) {
138
+ // Value is not set so return the default
139
+ return defaultValue;
140
+ }
141
+ // Get the value of the node (can be an expression)
142
+ const runIndex = 0;
143
+ const itemIndex = 0;
144
+ const connectionInputData = [];
145
+ const runData = {
146
+ resultData: {
147
+ runData: {},
148
+ },
149
+ };
150
+ // Resolve the "outer" main values
151
+ const returnData = this.getParameterValue(parameterValue, runData, runIndex, itemIndex, node.name, connectionInputData, mode, additionalKeys, false, selfData);
152
+ // Resolve the "inner" values
153
+ return this.getParameterValue(returnData, runData, runIndex, itemIndex, node.name, connectionInputData, mode, additionalKeys, false, selfData);
154
+ }
155
+ /**
156
+ * Returns the resolved node parameter value. If it is an expression it will execute it and
157
+ * return the result. If the value to resolve is an array or object it will do the same
158
+ * for all of the items and values.
159
+ *
160
+ * @param {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[])} parameterValue
161
+ * @param {(IRunExecutionData | null)} runExecutionData
162
+ * @param {number} runIndex
163
+ * @param {number} itemIndex
164
+ * @param {string} activeNodeName
165
+ * @param {INodeExecutionData[]} connectionInputData
166
+ * @param {boolean} [returnObjectAsString=false]
167
+ * @returns {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[])}
168
+ * @memberof Workflow
169
+ */
170
+ getParameterValue(parameterValue, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, mode, additionalKeys, returnObjectAsString = false, selfData = {}) {
171
+ // Helper function which returns true when the parameter is a complex one or array
172
+ const isComplexParameter = (value) => {
173
+ return typeof value === 'object';
174
+ };
175
+ // Helper function which resolves a parameter value depending on if it is simply or not
176
+ const resolveParameterValue = (value, siblingParameters) => {
177
+ if (isComplexParameter(value)) {
178
+ return this.getParameterValue(value, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, mode, additionalKeys, returnObjectAsString, selfData);
179
+ }
180
+ return this.resolveSimpleParameterValue(value, siblingParameters, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, mode, additionalKeys, returnObjectAsString, selfData);
181
+ };
182
+ // Check if it value is a simple one that we can get it resolved directly
183
+ if (!isComplexParameter(parameterValue)) {
184
+ return this.resolveSimpleParameterValue(parameterValue, {}, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, mode, additionalKeys, returnObjectAsString, selfData);
185
+ }
186
+ // The parameter value is complex so resolve depending on type
187
+ if (Array.isArray(parameterValue)) {
188
+ // Data is an array
189
+ const returnData = [];
190
+ // eslint-disable-next-line no-restricted-syntax
191
+ for (const item of parameterValue) {
192
+ returnData.push(resolveParameterValue(item, {}));
193
+ }
194
+ if (returnObjectAsString && typeof returnData === 'object') {
195
+ return this.convertObjectValueToString(returnData);
196
+ }
197
+ return returnData;
198
+ }
199
+ if (parameterValue === null || parameterValue === undefined) {
200
+ return parameterValue;
201
+ }
202
+ // Data is an object
203
+ const returnData = {};
204
+ // eslint-disable-next-line no-restricted-syntax
205
+ for (const key of Object.keys(parameterValue)) {
206
+ returnData[key] = resolveParameterValue(parameterValue[key], parameterValue);
207
+ }
208
+ if (returnObjectAsString && typeof returnData === 'object') {
209
+ return this.convertObjectValueToString(returnData);
210
+ }
211
+ return returnData;
212
+ }
213
+ }
214
+ exports.Expression = Expression;
215
+ //# sourceMappingURL=Expression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Expression.js","sourceRoot":"","sources":["../../../src/lib/Expression.ts"],"names":[],"mappings":"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"}