n8n-core 1.72.1 → 1.74.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.
Files changed (113) hide show
  1. package/LICENSE.md +5 -3
  2. package/dist/ActiveWorkflows.d.ts +9 -3
  3. package/dist/ActiveWorkflows.js +25 -14
  4. package/dist/ActiveWorkflows.js.map +1 -1
  5. package/dist/BinaryData/BinaryData.service.js +3 -3
  6. package/dist/BinaryData/BinaryData.service.js.map +1 -1
  7. package/dist/BinaryData/ObjectStore.manager.js +2 -2
  8. package/dist/BinaryData/ObjectStore.manager.js.map +1 -1
  9. package/dist/Cipher.js +2 -2
  10. package/dist/Cipher.js.map +1 -1
  11. package/dist/Constants.d.ts +5 -0
  12. package/dist/Constants.js +29 -1
  13. package/dist/Constants.js.map +1 -1
  14. package/dist/CreateNodeAsTool.d.ts +2 -2
  15. package/dist/CreateNodeAsTool.js +30 -44
  16. package/dist/CreateNodeAsTool.js.map +1 -1
  17. package/dist/Credentials.js +2 -2
  18. package/dist/Credentials.js.map +1 -1
  19. package/dist/DirectoryLoader.d.ts +3 -0
  20. package/dist/DirectoryLoader.js +26 -6
  21. package/dist/DirectoryLoader.js.map +1 -1
  22. package/dist/InstanceSettings.d.ts +11 -3
  23. package/dist/InstanceSettings.js +53 -24
  24. package/dist/InstanceSettings.js.map +1 -1
  25. package/dist/InstanceSettingsConfig.d.ts +3 -0
  26. package/dist/InstanceSettingsConfig.js +9 -1
  27. package/dist/InstanceSettingsConfig.js.map +1 -1
  28. package/dist/NodeExecuteFunctions.d.ts +2 -7
  29. package/dist/NodeExecuteFunctions.js +27 -125
  30. package/dist/NodeExecuteFunctions.js.map +1 -1
  31. package/dist/ObjectStore/ObjectStore.service.ee.d.ts +3 -1
  32. package/dist/ObjectStore/ObjectStore.service.ee.js +9 -4
  33. package/dist/ObjectStore/ObjectStore.service.ee.js.map +1 -1
  34. package/dist/RoutingNode.d.ts +18 -0
  35. package/dist/RoutingNode.js +560 -0
  36. package/dist/RoutingNode.js.map +1 -0
  37. package/dist/SSHClientsManager.js +2 -2
  38. package/dist/SSHClientsManager.js.map +1 -1
  39. package/dist/ScheduledTaskManager.js +2 -2
  40. package/dist/ScheduledTaskManager.js.map +1 -1
  41. package/dist/SerializedBuffer.d.ts +6 -0
  42. package/dist/SerializedBuffer.js +16 -0
  43. package/dist/SerializedBuffer.js.map +1 -0
  44. package/dist/TriggersAndPollers.d.ts +5 -0
  45. package/dist/TriggersAndPollers.js +70 -0
  46. package/dist/TriggersAndPollers.js.map +1 -0
  47. package/dist/WorkflowExecute.d.ts +9 -1
  48. package/dist/WorkflowExecute.js +267 -117
  49. package/dist/WorkflowExecute.js.map +1 -1
  50. package/dist/build.tsbuildinfo +1 -1
  51. package/dist/decorators/index.d.ts +1 -0
  52. package/dist/decorators/index.js +6 -0
  53. package/dist/decorators/index.js.map +1 -0
  54. package/dist/decorators/memoized.d.ts +1 -0
  55. package/dist/decorators/memoized.js +23 -0
  56. package/dist/decorators/memoized.js.map +1 -0
  57. package/dist/error-reporter.d.ts +18 -0
  58. package/dist/error-reporter.js +184 -0
  59. package/dist/error-reporter.js.map +1 -0
  60. package/dist/index.d.ts +6 -0
  61. package/dist/index.js +10 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/logging/logger.d.ts +34 -0
  64. package/dist/logging/logger.js +210 -0
  65. package/dist/logging/logger.js.map +1 -0
  66. package/dist/node-execution-context/base-execute-context.d.ts +1 -3
  67. package/dist/node-execution-context/base-execute-context.js +2 -10
  68. package/dist/node-execution-context/base-execute-context.js.map +1 -1
  69. package/dist/node-execution-context/execute-context.d.ts +2 -2
  70. package/dist/node-execution-context/execute-context.js +4 -2
  71. package/dist/node-execution-context/execute-context.js.map +1 -1
  72. package/dist/node-execution-context/execute-single-context.js +1 -0
  73. package/dist/node-execution-context/execute-single-context.js.map +1 -1
  74. package/dist/node-execution-context/index.d.ts +2 -1
  75. package/dist/node-execution-context/index.js +5 -3
  76. package/dist/node-execution-context/index.js.map +1 -1
  77. package/dist/node-execution-context/local-load-options-context.d.ts +10 -0
  78. package/dist/node-execution-context/local-load-options-context.js +49 -0
  79. package/dist/node-execution-context/local-load-options-context.js.map +1 -0
  80. package/dist/node-execution-context/node-execution-context.d.ts +10 -4
  81. package/dist/node-execution-context/node-execution-context.js +70 -8
  82. package/dist/node-execution-context/node-execution-context.js.map +1 -1
  83. package/dist/node-execution-context/supply-data-context.d.ts +5 -6
  84. package/dist/node-execution-context/supply-data-context.js +9 -19
  85. package/dist/node-execution-context/supply-data-context.js.map +1 -1
  86. package/dist/node-execution-context/utils/cleanupParameterData.d.ts +2 -0
  87. package/dist/node-execution-context/utils/cleanupParameterData.js +27 -0
  88. package/dist/node-execution-context/utils/cleanupParameterData.js.map +1 -0
  89. package/dist/node-execution-context/utils/ensureType.d.ts +6 -0
  90. package/dist/node-execution-context/utils/ensureType.js +75 -0
  91. package/dist/node-execution-context/utils/ensureType.js.map +1 -0
  92. package/dist/node-execution-context/utils/getAdditionalKeys.d.ts +4 -0
  93. package/dist/node-execution-context/utils/getAdditionalKeys.js +57 -0
  94. package/dist/node-execution-context/utils/getAdditionalKeys.js.map +1 -0
  95. package/dist/node-execution-context/utils/getInputConnectionData.d.ts +4 -0
  96. package/dist/node-execution-context/utils/getInputConnectionData.js +99 -0
  97. package/dist/node-execution-context/utils/getInputConnectionData.js.map +1 -0
  98. package/dist/node-execution-context/utils/validateValueAgainstSchema.d.ts +2 -0
  99. package/dist/node-execution-context/utils/validateValueAgainstSchema.js +129 -0
  100. package/dist/node-execution-context/utils/validateValueAgainstSchema.js.map +1 -0
  101. package/dist/node-execution-context/webhook-context.d.ts +2 -2
  102. package/dist/node-execution-context/webhook-context.js +2 -1
  103. package/dist/node-execution-context/webhook-context.js.map +1 -1
  104. package/dist/node-execution-context/workflow-node-context.d.ts +6 -0
  105. package/dist/node-execution-context/workflow-node-context.js +14 -0
  106. package/dist/node-execution-context/workflow-node-context.js.map +1 -0
  107. package/dist/utils.d.ts +5 -0
  108. package/dist/utils.js +10 -0
  109. package/dist/utils.js.map +1 -0
  110. package/package.json +13 -8
  111. package/dist/node-execution-context/utils.d.ts +0 -11
  112. package/dist/node-execution-context/utils.js +0 -275
  113. package/dist/node-execution-context/utils.js.map +0 -1
@@ -1,275 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateValueAgainstSchema = void 0;
4
- exports.cleanupParameterData = cleanupParameterData;
5
- exports.ensureType = ensureType;
6
- exports.getAdditionalKeys = getAdditionalKeys;
7
- const luxon_1 = require("luxon");
8
- const n8n_workflow_1 = require("n8n-workflow");
9
- const Constants_1 = require("../Constants");
10
- const ExecutionMetadata_1 = require("../ExecutionMetadata");
11
- const Secrets_1 = require("../Secrets");
12
- function cleanupParameterData(inputData) {
13
- if (typeof inputData !== 'object' || inputData === null) {
14
- return;
15
- }
16
- if (Array.isArray(inputData)) {
17
- inputData.forEach((value) => cleanupParameterData(value));
18
- return;
19
- }
20
- if (typeof inputData === 'object') {
21
- Object.keys(inputData).forEach((key) => {
22
- const value = inputData[key];
23
- if (typeof value === 'object') {
24
- if (luxon_1.DateTime.isDateTime(value)) {
25
- inputData[key] = value.toString();
26
- }
27
- else {
28
- cleanupParameterData(value);
29
- }
30
- }
31
- });
32
- }
33
- }
34
- const validateResourceMapperValue = (parameterName, paramValues, node, skipRequiredCheck = false) => {
35
- const result = { valid: true, newValue: paramValues };
36
- const paramNameParts = parameterName.split('.');
37
- if (paramNameParts.length !== 2) {
38
- return result;
39
- }
40
- const resourceMapperParamName = paramNameParts[0];
41
- const resourceMapperField = node.parameters[resourceMapperParamName];
42
- if (!resourceMapperField || !(0, n8n_workflow_1.isResourceMapperValue)(resourceMapperField)) {
43
- return result;
44
- }
45
- const schema = resourceMapperField.schema;
46
- const paramValueNames = Object.keys(paramValues);
47
- for (let i = 0; i < paramValueNames.length; i++) {
48
- const key = paramValueNames[i];
49
- const resolvedValue = paramValues[key];
50
- const schemaEntry = schema.find((s) => s.id === key);
51
- if (!skipRequiredCheck &&
52
- schemaEntry?.required === true &&
53
- schemaEntry.type !== 'boolean' &&
54
- !resolvedValue) {
55
- return {
56
- valid: false,
57
- errorMessage: `The value "${String(key)}" is required but not set`,
58
- fieldName: key,
59
- };
60
- }
61
- if (schemaEntry?.type) {
62
- const validationResult = (0, n8n_workflow_1.validateFieldType)(key, resolvedValue, schemaEntry.type, {
63
- valueOptions: schemaEntry.options,
64
- });
65
- if (!validationResult.valid) {
66
- return { ...validationResult, fieldName: key };
67
- }
68
- else {
69
- paramValues[key] = validationResult.newValue;
70
- }
71
- }
72
- }
73
- return result;
74
- };
75
- const validateCollection = (node, runIndex, itemIndex, propertyDescription, parameterPath, validationResult) => {
76
- let nestedDescriptions;
77
- if (propertyDescription.type === 'fixedCollection') {
78
- nestedDescriptions = propertyDescription.options.find((entry) => entry.name === parameterPath[1])?.values;
79
- }
80
- if (propertyDescription.type === 'collection') {
81
- nestedDescriptions = propertyDescription.options;
82
- }
83
- if (!nestedDescriptions) {
84
- return validationResult;
85
- }
86
- const validationMap = {};
87
- for (const prop of nestedDescriptions) {
88
- if (!prop.validateType || prop.ignoreValidationDuringExecution)
89
- continue;
90
- validationMap[prop.name] = {
91
- type: prop.validateType,
92
- displayName: prop.displayName,
93
- options: prop.validateType === 'options' ? prop.options : undefined,
94
- };
95
- }
96
- if (!Object.keys(validationMap).length) {
97
- return validationResult;
98
- }
99
- if (validationResult.valid) {
100
- for (const value of Array.isArray(validationResult.newValue)
101
- ? validationResult.newValue
102
- : [validationResult.newValue]) {
103
- for (const key of Object.keys(value)) {
104
- if (!validationMap[key])
105
- continue;
106
- const fieldValidationResult = (0, n8n_workflow_1.validateFieldType)(key, value[key], validationMap[key].type, {
107
- valueOptions: validationMap[key].options,
108
- });
109
- if (!fieldValidationResult.valid) {
110
- throw new n8n_workflow_1.ExpressionError(`Invalid input for field '${validationMap[key].displayName}' inside '${propertyDescription.displayName}' in [item ${itemIndex}]`, {
111
- description: fieldValidationResult.errorMessage,
112
- runIndex,
113
- itemIndex,
114
- nodeCause: node.name,
115
- });
116
- }
117
- value[key] = fieldValidationResult.newValue;
118
- }
119
- }
120
- }
121
- return validationResult;
122
- };
123
- const validateValueAgainstSchema = (node, nodeType, parameterValue, parameterName, runIndex, itemIndex) => {
124
- const parameterPath = parameterName.split('.');
125
- const propertyDescription = nodeType.description.properties.find((prop) => parameterPath[0] === prop.name && n8n_workflow_1.NodeHelpers.displayParameter(node.parameters, prop, node));
126
- if (!propertyDescription) {
127
- return parameterValue;
128
- }
129
- let validationResult = { valid: true, newValue: parameterValue };
130
- if (parameterPath.length === 1 &&
131
- propertyDescription.validateType &&
132
- !propertyDescription.ignoreValidationDuringExecution) {
133
- validationResult = (0, n8n_workflow_1.validateFieldType)(parameterName, parameterValue, propertyDescription.validateType);
134
- }
135
- else if (propertyDescription.type === 'resourceMapper' &&
136
- parameterPath[1] === 'value' &&
137
- typeof parameterValue === 'object') {
138
- validationResult = validateResourceMapperValue(parameterName, parameterValue, node, propertyDescription.typeOptions?.resourceMapper?.mode !== 'add');
139
- }
140
- else if (['fixedCollection', 'collection'].includes(propertyDescription.type)) {
141
- validationResult = validateCollection(node, runIndex, itemIndex, propertyDescription, parameterPath, validationResult);
142
- }
143
- if (!validationResult.valid) {
144
- throw new n8n_workflow_1.ExpressionError(`Invalid input for '${validationResult.fieldName
145
- ? String(validationResult.fieldName)
146
- : propertyDescription.displayName}' [item ${itemIndex}]`, {
147
- description: validationResult.errorMessage,
148
- runIndex,
149
- itemIndex,
150
- nodeCause: node.name,
151
- });
152
- }
153
- return validationResult.newValue;
154
- };
155
- exports.validateValueAgainstSchema = validateValueAgainstSchema;
156
- function ensureType(toType, parameterValue, parameterName, errorOptions) {
157
- let returnData = parameterValue;
158
- if (returnData === null) {
159
- throw new n8n_workflow_1.ExpressionError(`Parameter '${parameterName}' must not be null`, errorOptions);
160
- }
161
- if (returnData === undefined) {
162
- throw new n8n_workflow_1.ExpressionError(`Parameter '${parameterName}' could not be 'undefined'`, errorOptions);
163
- }
164
- if (['object', 'array', 'json'].includes(toType)) {
165
- if (typeof returnData !== 'object') {
166
- if (typeof returnData === 'string' && returnData.length) {
167
- try {
168
- const parsedValue = JSON.parse(returnData);
169
- returnData = parsedValue;
170
- }
171
- catch (error) {
172
- throw new n8n_workflow_1.ExpressionError(`Parameter '${parameterName}' could not be parsed`, {
173
- ...errorOptions,
174
- description: error.message,
175
- });
176
- }
177
- }
178
- else {
179
- throw new n8n_workflow_1.ExpressionError(`Parameter '${parameterName}' must be an ${toType}, but we got '${String(parameterValue)}'`, errorOptions);
180
- }
181
- }
182
- else if (toType === 'json') {
183
- try {
184
- JSON.stringify(returnData);
185
- }
186
- catch (error) {
187
- throw new n8n_workflow_1.ExpressionError(`Parameter '${parameterName}' is not valid JSON`, {
188
- ...errorOptions,
189
- description: error.message,
190
- });
191
- }
192
- }
193
- if (toType === 'array' && !Array.isArray(returnData)) {
194
- throw new n8n_workflow_1.ExpressionError(`Parameter '${parameterName}' must be an array, but we got object`, errorOptions);
195
- }
196
- }
197
- try {
198
- if (toType === 'string') {
199
- if (typeof returnData === 'object') {
200
- returnData = JSON.stringify(returnData);
201
- }
202
- else {
203
- returnData = String(returnData);
204
- }
205
- }
206
- if (toType === 'number') {
207
- returnData = Number(returnData);
208
- if (Number.isNaN(returnData)) {
209
- throw new n8n_workflow_1.ExpressionError(`Parameter '${parameterName}' must be a number, but we got '${parameterValue}'`, errorOptions);
210
- }
211
- }
212
- if (toType === 'boolean') {
213
- returnData = Boolean(returnData);
214
- }
215
- }
216
- catch (error) {
217
- if (error instanceof n8n_workflow_1.ExpressionError)
218
- throw error;
219
- throw new n8n_workflow_1.ExpressionError(`Parameter '${parameterName}' could not be converted to ${toType}`, {
220
- ...errorOptions,
221
- description: error.message,
222
- });
223
- }
224
- return returnData;
225
- }
226
- function getAdditionalKeys(additionalData, mode, runExecutionData, options) {
227
- const executionId = additionalData.executionId ?? Constants_1.PLACEHOLDER_EMPTY_EXECUTION_ID;
228
- const resumeUrl = `${additionalData.webhookWaitingBaseUrl}/${executionId}`;
229
- const resumeFormUrl = `${additionalData.formWaitingBaseUrl}/${executionId}`;
230
- return {
231
- $execution: {
232
- id: executionId,
233
- mode: mode === 'manual' ? 'test' : 'production',
234
- resumeUrl,
235
- resumeFormUrl,
236
- customData: runExecutionData
237
- ? {
238
- set(key, value) {
239
- try {
240
- (0, ExecutionMetadata_1.setWorkflowExecutionMetadata)(runExecutionData, key, value);
241
- }
242
- catch (e) {
243
- if (mode === 'manual') {
244
- throw e;
245
- }
246
- n8n_workflow_1.LoggerProxy.debug(e.message);
247
- }
248
- },
249
- setAll(obj) {
250
- try {
251
- (0, ExecutionMetadata_1.setAllWorkflowExecutionMetadata)(runExecutionData, obj);
252
- }
253
- catch (e) {
254
- if (mode === 'manual') {
255
- throw e;
256
- }
257
- n8n_workflow_1.LoggerProxy.debug(e.message);
258
- }
259
- },
260
- get(key) {
261
- return (0, ExecutionMetadata_1.getWorkflowExecutionMetadata)(runExecutionData, key);
262
- },
263
- getAll() {
264
- return (0, ExecutionMetadata_1.getAllWorkflowExecutionMetadata)(runExecutionData);
265
- },
266
- }
267
- : undefined,
268
- },
269
- $vars: additionalData.variables,
270
- $secrets: options?.secretsEnabled ? (0, Secrets_1.getSecretsProxy)(additionalData) : undefined,
271
- $executionId: executionId,
272
- $resumeWebhookUrl: resumeUrl,
273
- };
274
- }
275
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/node-execution-context/utils.ts"],"names":[],"mappings":"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"}