n8n-nodes-base 1.62.1 → 1.63.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build.tsbuildinfo +1 -1
- package/dist/nodes/AiTransform/AiTransform.node.js +1 -1
- package/dist/nodes/AiTransform/AiTransform.node.js.map +1 -1
- package/dist/nodes/Code/Code.node.js +8 -9
- package/dist/nodes/Code/Code.node.js.map +1 -1
- package/dist/nodes/Code/ExecutionError.d.ts +1 -1
- package/dist/nodes/Code/ExecutionError.js +1 -1
- package/dist/nodes/Code/ExecutionError.js.map +1 -1
- package/dist/nodes/Code/JavaScriptSandbox.d.ts +3 -3
- package/dist/nodes/Code/JavaScriptSandbox.js +11 -32
- package/dist/nodes/Code/JavaScriptSandbox.js.map +1 -1
- package/dist/nodes/Code/JsCodeValidator.d.ts +3 -0
- package/dist/nodes/Code/JsCodeValidator.js +37 -0
- package/dist/nodes/Code/JsCodeValidator.js.map +1 -0
- package/dist/nodes/Code/JsTaskRunnerSandbox.d.ts +11 -0
- package/dist/nodes/Code/JsTaskRunnerSandbox.js +62 -0
- package/dist/nodes/Code/JsTaskRunnerSandbox.js.map +1 -0
- package/dist/nodes/Code/PythonSandbox.d.ts +3 -3
- package/dist/nodes/Code/PythonSandbox.js +4 -4
- package/dist/nodes/Code/PythonSandbox.js.map +1 -1
- package/dist/nodes/Code/Sandbox.d.ts +5 -6
- package/dist/nodes/Code/Sandbox.js +17 -18
- package/dist/nodes/Code/Sandbox.js.map +1 -1
- package/dist/nodes/Form/utils.js +1 -1
- package/dist/nodes/Form/utils.js.map +1 -1
- package/dist/nodes/Gitlab/Gitlab.node.js +14 -2
- package/dist/nodes/Gitlab/Gitlab.node.js.map +1 -1
- package/dist/nodes/Google/Gmail/GenericFunctions.d.ts +1 -13
- package/dist/nodes/Google/Gmail/GenericFunctions.js +2 -16
- package/dist/nodes/Google/Gmail/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/Gmail/types.d.ts +35 -0
- package/dist/nodes/Google/Gmail/types.js +3 -0
- package/dist/nodes/Google/Gmail/types.js.map +1 -0
- package/dist/nodes/Google/Gmail/v2/GmailV2.node.d.ts +2 -0
- package/dist/nodes/Google/Gmail/v2/GmailV2.node.js +31 -0
- package/dist/nodes/Google/Gmail/v2/GmailV2.node.js.map +1 -1
- package/dist/nodes/Google/Gmail/v2/MessageDescription.d.ts +1 -1
- package/dist/nodes/Google/Gmail/v2/MessageDescription.js +6 -0
- package/dist/nodes/Google/Gmail/v2/MessageDescription.js.map +1 -1
- package/dist/nodes/HttpRequest/V3/Description.d.ts +2 -0
- package/dist/nodes/HttpRequest/V3/Description.js +1153 -0
- package/dist/nodes/HttpRequest/V3/Description.js.map +1 -0
- package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.js +5 -1152
- package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.js.map +1 -1
- package/dist/nodes/ICalendar/createEvent.operation.js +0 -1
- package/dist/nodes/ICalendar/createEvent.operation.js.map +1 -1
- package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js.map +1 -1
- package/dist/nodes/Nasa/Nasa.node.js +5 -2
- package/dist/nodes/Nasa/Nasa.node.js.map +1 -1
- package/dist/nodes/Slack/V2/GenericFunctions.d.ts +2 -0
- package/dist/nodes/Slack/V2/GenericFunctions.js +74 -0
- package/dist/nodes/Slack/V2/GenericFunctions.js.map +1 -1
- package/dist/nodes/Slack/V2/MessageDescription.d.ts +4 -1
- package/dist/nodes/Slack/V2/MessageDescription.js +135 -122
- package/dist/nodes/Slack/V2/MessageDescription.js.map +1 -1
- package/dist/nodes/Slack/V2/SlackV2.node.d.ts +2 -0
- package/dist/nodes/Slack/V2/SlackV2.node.js +46 -12
- package/dist/nodes/Slack/V2/SlackV2.node.js.map +1 -1
- package/dist/nodes/Wait/Wait.node.js +0 -7
- package/dist/nodes/Wait/Wait.node.js.map +1 -1
- package/dist/types/nodes.json +7 -7
- package/dist/utils/sendAndWait/email-templates.d.ts +4 -0
- package/dist/utils/sendAndWait/email-templates.js +142 -0
- package/dist/utils/sendAndWait/email-templates.js.map +1 -0
- package/dist/utils/sendAndWait/interfaces.d.ts +14 -0
- package/dist/utils/sendAndWait/interfaces.js +3 -0
- package/dist/utils/sendAndWait/interfaces.js.map +1 -0
- package/dist/utils/sendAndWait/utils.d.ts +49 -0
- package/dist/utils/sendAndWait/utils.js +216 -0
- package/dist/utils/sendAndWait/utils.js.map +1 -0
- package/dist/utils/utilities.d.ts +1 -0
- package/dist/utils/utilities.js +21 -0
- package/dist/utils/utilities.js.map +1 -1
- package/package.json +11 -10
|
@@ -99,7 +99,7 @@ class AiTransform {
|
|
|
99
99
|
const context = Sandbox_1.getSandboxContext.call(this, index);
|
|
100
100
|
context.items = context.$input.all();
|
|
101
101
|
const Sandbox = JavaScriptSandbox_1.JavaScriptSandbox;
|
|
102
|
-
const sandbox = new Sandbox(context, code,
|
|
102
|
+
const sandbox = new Sandbox(context, code, this.helpers);
|
|
103
103
|
sandbox.on('output', workflowMode === 'manual'
|
|
104
104
|
? this.sendMessageToUI
|
|
105
105
|
: CODE_ENABLE_STDOUT === 'true'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiTransform.node.js","sourceRoot":"","sources":["../../../nodes/AiTransform/AiTransform.node.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AiTransform.node.js","sourceRoot":"","sources":["../../../nodes/AiTransform/AiTransform.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Code = void 0;
|
|
7
|
+
const config_1 = require("@n8n/config");
|
|
7
8
|
const set_1 = __importDefault(require("lodash/set"));
|
|
8
9
|
const typedi_1 = __importDefault(require("typedi"));
|
|
9
|
-
const config_1 = require("@n8n/config");
|
|
10
10
|
const JavascriptCodeDescription_1 = require("./descriptions/JavascriptCodeDescription");
|
|
11
11
|
const PythonCodeDescription_1 = require("./descriptions/PythonCodeDescription");
|
|
12
12
|
const JavaScriptSandbox_1 = require("./JavaScriptSandbox");
|
|
13
|
+
const JsTaskRunnerSandbox_1 = require("./JsTaskRunnerSandbox");
|
|
13
14
|
const PythonSandbox_1 = require("./PythonSandbox");
|
|
14
15
|
const Sandbox_1 = require("./Sandbox");
|
|
15
16
|
const utils_1 = require("./utils");
|
|
@@ -99,12 +100,10 @@ class Code {
|
|
|
99
100
|
const codeParameterName = language === 'python' ? 'pythonCode' : 'jsCode';
|
|
100
101
|
if (!runnersConfig.disabled && language === 'javaScript') {
|
|
101
102
|
const code = this.getNodeParameter(codeParameterName, 0);
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}, 0);
|
|
107
|
-
return [items];
|
|
103
|
+
const sandbox = new JsTaskRunnerSandbox_1.JsTaskRunnerSandbox(code, nodeMode, workflowMode, this);
|
|
104
|
+
return nodeMode === 'runOnceForAllItems'
|
|
105
|
+
? [await sandbox.runCodeAllItems()]
|
|
106
|
+
: [await sandbox.runCodeForEachItem()];
|
|
108
107
|
}
|
|
109
108
|
const getSandbox = (index = 0) => {
|
|
110
109
|
const code = this.getNodeParameter(codeParameterName, index);
|
|
@@ -116,7 +115,7 @@ class Code {
|
|
|
116
115
|
context.item = context.$input.item;
|
|
117
116
|
}
|
|
118
117
|
const Sandbox = language === 'python' ? PythonSandbox_1.PythonSandbox : JavaScriptSandbox_1.JavaScriptSandbox;
|
|
119
|
-
const sandbox = new Sandbox(context, code,
|
|
118
|
+
const sandbox = new Sandbox(context, code, this.helpers);
|
|
120
119
|
sandbox.on('output', workflowMode === 'manual'
|
|
121
120
|
? this.sendMessageToUI
|
|
122
121
|
: CODE_ENABLE_STDOUT === 'true'
|
|
@@ -148,7 +147,7 @@ class Code {
|
|
|
148
147
|
const sandbox = getSandbox(index);
|
|
149
148
|
let result;
|
|
150
149
|
try {
|
|
151
|
-
result = await sandbox.runCodeEachItem();
|
|
150
|
+
result = await sandbox.runCodeEachItem(index);
|
|
152
151
|
}
|
|
153
152
|
catch (error) {
|
|
154
153
|
if (!this.continueOnFail()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Code.node.js","sourceRoot":"","sources":["../../../nodes/Code/Code.node.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"Code.node.js","sourceRoot":"","sources":["../../../nodes/Code/Code.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ export declare class ExecutionError extends ApplicationError {
|
|
|
8
8
|
stack: string;
|
|
9
9
|
lineNumber: number | undefined;
|
|
10
10
|
constructor(error: Error & {
|
|
11
|
-
stack
|
|
11
|
+
stack?: string;
|
|
12
12
|
}, itemIndex?: number);
|
|
13
13
|
private populateFromStack;
|
|
14
14
|
private toLineNumberDisplay;
|
|
@@ -14,7 +14,7 @@ class ExecutionError extends n8n_workflow_1.ApplicationError {
|
|
|
14
14
|
if (this.itemIndex !== undefined) {
|
|
15
15
|
this.context = { itemIndex: this.itemIndex };
|
|
16
16
|
}
|
|
17
|
-
this.stack = error.stack;
|
|
17
|
+
this.stack = error.stack ?? '';
|
|
18
18
|
this.populateFromStack();
|
|
19
19
|
}
|
|
20
20
|
populateFromStack() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionError.js","sourceRoot":"","sources":["../../../nodes/Code/ExecutionError.ts"],"names":[],"mappings":";;;AAAA,+CAAgD;AAEhD,MAAa,cAAe,SAAQ,+BAAgB;IAWnD,YAAY,
|
|
1
|
+
{"version":3,"file":"ExecutionError.js","sourceRoot":"","sources":["../../../nodes/Code/ExecutionError.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,12 @@ export declare const vmResolver: Resolver;
|
|
|
6
6
|
export declare class JavaScriptSandbox extends Sandbox {
|
|
7
7
|
private jsCode;
|
|
8
8
|
private readonly vm;
|
|
9
|
-
constructor(context: SandboxContext, jsCode: string,
|
|
9
|
+
constructor(context: SandboxContext, jsCode: string, helpers: IExecuteFunctions['helpers'], options?: {
|
|
10
10
|
resolver?: Resolver;
|
|
11
11
|
});
|
|
12
|
-
runCode(): Promise<
|
|
12
|
+
runCode<T = unknown>(): Promise<T>;
|
|
13
13
|
runCodeAllItems(options?: {
|
|
14
14
|
multiOutput?: boolean;
|
|
15
15
|
}): Promise<INodeExecutionData[] | INodeExecutionData[][]>;
|
|
16
|
-
runCodeEachItem(): Promise<INodeExecutionData | undefined>;
|
|
16
|
+
runCodeEachItem(itemIndex: number): Promise<INodeExecutionData | undefined>;
|
|
17
17
|
}
|
|
@@ -5,6 +5,7 @@ const vm2_1 = require("@n8n/vm2");
|
|
|
5
5
|
const ValidationError_1 = require("./ValidationError");
|
|
6
6
|
const ExecutionError_1 = require("./ExecutionError");
|
|
7
7
|
const Sandbox_1 = require("./Sandbox");
|
|
8
|
+
const JsCodeValidator_1 = require("./JsCodeValidator");
|
|
8
9
|
const { NODE_FUNCTION_ALLOW_BUILTIN: builtIn, NODE_FUNCTION_ALLOW_EXTERNAL: external } = process.env;
|
|
9
10
|
exports.vmResolver = (0, vm2_1.makeResolverFromLegacyOptions)({
|
|
10
11
|
external: external
|
|
@@ -16,13 +17,13 @@ exports.vmResolver = (0, vm2_1.makeResolverFromLegacyOptions)({
|
|
|
16
17
|
builtin: builtIn?.split(',') ?? [],
|
|
17
18
|
});
|
|
18
19
|
class JavaScriptSandbox extends Sandbox_1.Sandbox {
|
|
19
|
-
constructor(context, jsCode,
|
|
20
|
+
constructor(context, jsCode, helpers, options) {
|
|
20
21
|
super({
|
|
21
22
|
object: {
|
|
22
23
|
singular: 'object',
|
|
23
24
|
plural: 'objects',
|
|
24
25
|
},
|
|
25
|
-
},
|
|
26
|
+
}, helpers);
|
|
26
27
|
this.jsCode = jsCode;
|
|
27
28
|
this.vm = new vm2_1.NodeVM({
|
|
28
29
|
console: 'redirect',
|
|
@@ -35,7 +36,7 @@ class JavaScriptSandbox extends Sandbox_1.Sandbox {
|
|
|
35
36
|
async runCode() {
|
|
36
37
|
const script = `module.exports = async function() {${this.jsCode}\n}()`;
|
|
37
38
|
try {
|
|
38
|
-
const executionResult = await this.vm.run(script, __dirname);
|
|
39
|
+
const executionResult = (await this.vm.run(script, __dirname));
|
|
39
40
|
return executionResult;
|
|
40
41
|
}
|
|
41
42
|
catch (error) {
|
|
@@ -49,10 +50,7 @@ class JavaScriptSandbox extends Sandbox_1.Sandbox {
|
|
|
49
50
|
executionResult = await this.vm.run(script, __dirname);
|
|
50
51
|
}
|
|
51
52
|
catch (error) {
|
|
52
|
-
|
|
53
|
-
const quoted = error.message.replace('items', '`items`');
|
|
54
|
-
error.message = quoted + '. Did you mean `$input.all()`?';
|
|
55
|
-
}
|
|
53
|
+
(0, JsCodeValidator_1.mapItemsNotDefinedErrorIfNeededForRunForAll)(this.jsCode, error);
|
|
56
54
|
throw new ExecutionError_1.ExecutionError(error);
|
|
57
55
|
}
|
|
58
56
|
if (executionResult === null)
|
|
@@ -62,7 +60,6 @@ class JavaScriptSandbox extends Sandbox_1.Sandbox {
|
|
|
62
60
|
throw new ValidationError_1.ValidationError({
|
|
63
61
|
message: "The code doesn't return an array of arrays",
|
|
64
62
|
description: 'Please return an array of arrays. One array for the different outputs and one for the different items that get returned.',
|
|
65
|
-
itemIndex: this.itemIndex,
|
|
66
63
|
});
|
|
67
64
|
}
|
|
68
65
|
return executionResult.map((data) => {
|
|
@@ -71,38 +68,20 @@ class JavaScriptSandbox extends Sandbox_1.Sandbox {
|
|
|
71
68
|
}
|
|
72
69
|
return this.validateRunCodeAllItems(executionResult);
|
|
73
70
|
}
|
|
74
|
-
async runCodeEachItem() {
|
|
71
|
+
async runCodeEachItem(itemIndex) {
|
|
75
72
|
const script = `module.exports = async function() {${this.jsCode}\n}()`;
|
|
76
|
-
|
|
77
|
-
if (match?.groups?.disallowedMethod) {
|
|
78
|
-
const { disallowedMethod } = match.groups;
|
|
79
|
-
const lineNumber = this.jsCode.split('\n').findIndex((line) => {
|
|
80
|
-
return line.includes(disallowedMethod) && !line.startsWith('//') && !line.startsWith('*');
|
|
81
|
-
}) + 1;
|
|
82
|
-
const disallowedMethodFound = lineNumber !== 0;
|
|
83
|
-
if (disallowedMethodFound) {
|
|
84
|
-
throw new ValidationError_1.ValidationError({
|
|
85
|
-
message: `Can't use .${disallowedMethod}() here`,
|
|
86
|
-
description: "This is only available in 'Run Once for All Items' mode",
|
|
87
|
-
itemIndex: this.itemIndex,
|
|
88
|
-
lineNumber,
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
}
|
|
73
|
+
(0, JsCodeValidator_1.validateNoDisallowedMethodsInRunForEach)(this.jsCode, itemIndex);
|
|
92
74
|
let executionResult;
|
|
93
75
|
try {
|
|
94
76
|
executionResult = await this.vm.run(script, __dirname);
|
|
95
77
|
}
|
|
96
78
|
catch (error) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
error.message = quoted + '. Did you mean `$input.item.json`?';
|
|
100
|
-
}
|
|
101
|
-
throw new ExecutionError_1.ExecutionError(error, this.itemIndex);
|
|
79
|
+
(0, JsCodeValidator_1.mapItemNotDefinedErrorIfNeededForRunForEach)(this.jsCode, error);
|
|
80
|
+
throw new ExecutionError_1.ExecutionError(error, itemIndex);
|
|
102
81
|
}
|
|
103
82
|
if (executionResult === null)
|
|
104
|
-
return;
|
|
105
|
-
return this.validateRunCodeEachItem(executionResult);
|
|
83
|
+
return undefined;
|
|
84
|
+
return this.validateRunCodeEachItem(executionResult, itemIndex);
|
|
106
85
|
}
|
|
107
86
|
}
|
|
108
87
|
exports.JavaScriptSandbox = JavaScriptSandbox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JavaScriptSandbox.js","sourceRoot":"","sources":["../../../nodes/Code/JavaScriptSandbox.ts"],"names":[],"mappings":";;;AAAA,kCAAgF;AAGhF,uDAAoD;AACpD,qDAAkD;AAElD,uCAAoC;
|
|
1
|
+
{"version":3,"file":"JavaScriptSandbox.js","sourceRoot":"","sources":["../../../nodes/Code/JavaScriptSandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function validateNoDisallowedMethodsInRunForEach(code: string, itemIndex: number): void;
|
|
2
|
+
export declare function mapItemsNotDefinedErrorIfNeededForRunForAll(code: string, error: Error): void;
|
|
3
|
+
export declare function mapItemNotDefinedErrorIfNeededForRunForEach(code: string, error: Error): void;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateNoDisallowedMethodsInRunForEach = validateNoDisallowedMethodsInRunForEach;
|
|
4
|
+
exports.mapItemsNotDefinedErrorIfNeededForRunForAll = mapItemsNotDefinedErrorIfNeededForRunForAll;
|
|
5
|
+
exports.mapItemNotDefinedErrorIfNeededForRunForEach = mapItemNotDefinedErrorIfNeededForRunForEach;
|
|
6
|
+
const ValidationError_1 = require("./ValidationError");
|
|
7
|
+
function validateNoDisallowedMethodsInRunForEach(code, itemIndex) {
|
|
8
|
+
const match = code.match(/\$input\.(?<disallowedMethod>first|last|all|itemMatching)/);
|
|
9
|
+
if (match?.groups?.disallowedMethod) {
|
|
10
|
+
const { disallowedMethod } = match.groups;
|
|
11
|
+
const lineNumber = code.split('\n').findIndex((line) => {
|
|
12
|
+
return line.includes(disallowedMethod) && !line.startsWith('//') && !line.startsWith('*');
|
|
13
|
+
}) + 1;
|
|
14
|
+
const disallowedMethodFound = lineNumber !== 0;
|
|
15
|
+
if (disallowedMethodFound) {
|
|
16
|
+
throw new ValidationError_1.ValidationError({
|
|
17
|
+
message: `Can't use .${disallowedMethod}() here`,
|
|
18
|
+
description: "This is only available in 'Run Once for All Items' mode",
|
|
19
|
+
itemIndex,
|
|
20
|
+
lineNumber,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function mapItemsNotDefinedErrorIfNeededForRunForAll(code, error) {
|
|
26
|
+
if (error.message === 'items is not defined' && !/(let|const|var) +items +=/.test(code)) {
|
|
27
|
+
const quoted = error.message.replace('items', '`items`');
|
|
28
|
+
error.message = quoted + '. Did you mean `$input.all()`?';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function mapItemNotDefinedErrorIfNeededForRunForEach(code, error) {
|
|
32
|
+
if (error.message === 'item is not defined' && !/(let|const|var) +item +=/.test(code)) {
|
|
33
|
+
const quoted = error.message.replace('item', '`item`');
|
|
34
|
+
error.message = quoted + '. Did you mean `$input.item.json`?';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=JsCodeValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsCodeValidator.js","sourceRoot":"","sources":["../../../nodes/Code/JsCodeValidator.ts"],"names":[],"mappings":";;AAOA,0FAsBC;AAMD,kGAMC;AAMD,kGAMC;AArDD,uDAAoD;AAOpD,SAAgB,uCAAuC,CAAC,IAAY,EAAE,SAAiB;IACtF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAEtF,IAAI,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QACrC,MAAM,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QAE1C,MAAM,UAAU,GACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC3F,CAAC,CAAC,GAAG,CAAC,CAAC;QAER,MAAM,qBAAqB,GAAG,UAAU,KAAK,CAAC,CAAC;QAE/C,IAAI,qBAAqB,EAAE,CAAC;YAC3B,MAAM,IAAI,iCAAe,CAAC;gBACzB,OAAO,EAAE,cAAc,gBAAgB,SAAS;gBAChD,WAAW,EAAE,yDAAyD;gBACtE,SAAS;gBACT,UAAU;aACV,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;AACF,CAAC;AAMD,SAAgB,2CAA2C,CAAC,IAAY,EAAE,KAAY;IAErF,IAAI,KAAK,CAAC,OAAO,KAAK,sBAAsB,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACzD,KAAK,CAAC,OAAO,GAAI,MAAiB,GAAG,gCAAgC,CAAC;IACvE,CAAC;AACF,CAAC;AAMD,SAAgB,2CAA2C,CAAC,IAAY,EAAE,KAAY;IAErF,IAAI,KAAK,CAAC,OAAO,KAAK,qBAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACvD,KAAK,CAAC,OAAO,GAAI,MAAiB,GAAG,oCAAoC,CAAC;IAC3E,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type CodeExecutionMode, type IExecuteFunctions, type INodeExecutionData, type WorkflowExecuteMode } from 'n8n-workflow';
|
|
2
|
+
export declare class JsTaskRunnerSandbox {
|
|
3
|
+
private readonly jsCode;
|
|
4
|
+
private readonly nodeMode;
|
|
5
|
+
private readonly workflowMode;
|
|
6
|
+
private readonly executeFunctions;
|
|
7
|
+
constructor(jsCode: string, nodeMode: CodeExecutionMode, workflowMode: WorkflowExecuteMode, executeFunctions: IExecuteFunctions);
|
|
8
|
+
runCode<T = unknown>(): Promise<T>;
|
|
9
|
+
runCodeAllItems(): Promise<INodeExecutionData[]>;
|
|
10
|
+
runCodeForEachItem(): Promise<INodeExecutionData[]>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JsTaskRunnerSandbox = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const ExecutionError_1 = require("./ExecutionError");
|
|
6
|
+
const JsCodeValidator_1 = require("./JsCodeValidator");
|
|
7
|
+
class JsTaskRunnerSandbox {
|
|
8
|
+
constructor(jsCode, nodeMode, workflowMode, executeFunctions) {
|
|
9
|
+
this.jsCode = jsCode;
|
|
10
|
+
this.nodeMode = nodeMode;
|
|
11
|
+
this.workflowMode = workflowMode;
|
|
12
|
+
this.executeFunctions = executeFunctions;
|
|
13
|
+
}
|
|
14
|
+
async runCode() {
|
|
15
|
+
const itemIndex = 0;
|
|
16
|
+
try {
|
|
17
|
+
const executionResult = (await this.executeFunctions.startJob('javascript', {
|
|
18
|
+
code: this.jsCode,
|
|
19
|
+
nodeMode: this.nodeMode,
|
|
20
|
+
workflowMode: this.workflowMode,
|
|
21
|
+
}, itemIndex));
|
|
22
|
+
return executionResult;
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
const error = (0, n8n_workflow_1.ensureError)(e);
|
|
26
|
+
throw new ExecutionError_1.ExecutionError(error);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async runCodeAllItems() {
|
|
30
|
+
const itemIndex = 0;
|
|
31
|
+
return await this.executeFunctions
|
|
32
|
+
.startJob('javascript', {
|
|
33
|
+
code: this.jsCode,
|
|
34
|
+
nodeMode: this.nodeMode,
|
|
35
|
+
workflowMode: this.workflowMode,
|
|
36
|
+
continueOnFail: this.executeFunctions.continueOnFail(),
|
|
37
|
+
}, itemIndex)
|
|
38
|
+
.catch((e) => {
|
|
39
|
+
const error = (0, n8n_workflow_1.ensureError)(e);
|
|
40
|
+
(0, JsCodeValidator_1.mapItemsNotDefinedErrorIfNeededForRunForAll)(this.jsCode, error);
|
|
41
|
+
throw new ExecutionError_1.ExecutionError(error);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async runCodeForEachItem() {
|
|
45
|
+
(0, JsCodeValidator_1.validateNoDisallowedMethodsInRunForEach)(this.jsCode, 0);
|
|
46
|
+
const itemIndex = 0;
|
|
47
|
+
return await this.executeFunctions
|
|
48
|
+
.startJob('javascript', {
|
|
49
|
+
code: this.jsCode,
|
|
50
|
+
nodeMode: this.nodeMode,
|
|
51
|
+
workflowMode: this.workflowMode,
|
|
52
|
+
continueOnFail: this.executeFunctions.continueOnFail(),
|
|
53
|
+
}, itemIndex)
|
|
54
|
+
.catch((e) => {
|
|
55
|
+
const error = (0, n8n_workflow_1.ensureError)(e);
|
|
56
|
+
(0, JsCodeValidator_1.mapItemsNotDefinedErrorIfNeededForRunForAll)(this.jsCode, error);
|
|
57
|
+
throw new ExecutionError_1.ExecutionError(error);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.JsTaskRunnerSandbox = JsTaskRunnerSandbox;
|
|
62
|
+
//# sourceMappingURL=JsTaskRunnerSandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsTaskRunnerSandbox.js","sourceRoot":"","sources":["../../../nodes/Code/JsTaskRunnerSandbox.ts"],"names":[],"mappings":";;;AAAA,+CAMsB;AAEtB,qDAAkD;AAClD,uDAG2B;AAK3B,MAAa,mBAAmB;IAC/B,YACkB,MAAc,EACd,QAA2B,EAC3B,YAAiC,EACjC,gBAAmC;QAHnC,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,iBAAY,GAAZ,YAAY,CAAqB;QACjC,qBAAgB,GAAhB,gBAAgB,CAAmB;IAClD,CAAC;IAEJ,KAAK,CAAC,OAAO;QACZ,MAAM,SAAS,GAAG,CAAC,CAAC;QAEpB,IAAI,CAAC;YACJ,MAAM,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAC5D,YAAY,EACZ;gBACC,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,YAAY,EAAE,IAAI,CAAC,YAAY;aAC/B,EACD,SAAS,CACT,CAAM,CAAC;YACR,OAAO,eAAe,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,IAAA,0BAAW,EAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,IAAI,+BAAc,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACF,CAAC;IAED,KAAK,CAAC,eAAe;QACpB,MAAM,SAAS,GAAG,CAAC,CAAC;QAEpB,OAAO,MAAM,IAAI,CAAC,gBAAgB;aAChC,QAAQ,CACR,YAAY,EACZ;YACC,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;SACtD,EACD,SAAS,CACT;aACA,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,KAAK,GAAG,IAAA,0BAAW,EAAC,CAAC,CAAC,CAAC;YAE7B,IAAA,6DAA2C,EAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAEhE,MAAM,IAAI,+BAAc,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB;QACvB,IAAA,yDAAuC,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,CAAC,CAAC;QAEpB,OAAO,MAAM,IAAI,CAAC,gBAAgB;aAChC,QAAQ,CACR,YAAY,EACZ;YACC,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;SACtD,EACD,SAAS,CACT;aACA,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,KAAK,GAAG,IAAA,0BAAW,EAAC,CAAC,CAAC,CAAC;YAE7B,IAAA,6DAA2C,EAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAEhE,MAAM,IAAI,+BAAc,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;CACD;AA1ED,kDA0EC"}
|
|
@@ -4,10 +4,10 @@ import { Sandbox } from './Sandbox';
|
|
|
4
4
|
export declare class PythonSandbox extends Sandbox {
|
|
5
5
|
private pythonCode;
|
|
6
6
|
private readonly context;
|
|
7
|
-
constructor(context: SandboxContext, pythonCode: string,
|
|
8
|
-
runCode(): Promise<
|
|
7
|
+
constructor(context: SandboxContext, pythonCode: string, helpers: IExecuteFunctions['helpers']);
|
|
8
|
+
runCode<T = unknown>(): Promise<T>;
|
|
9
9
|
runCodeAllItems(): Promise<INodeExecutionData[]>;
|
|
10
|
-
runCodeEachItem(): Promise<INodeExecutionData>;
|
|
10
|
+
runCodeEachItem(itemIndex: number): Promise<INodeExecutionData>;
|
|
11
11
|
private runCodeInPython;
|
|
12
12
|
private getPrettyError;
|
|
13
13
|
}
|
|
@@ -5,13 +5,13 @@ const Pyodide_1 = require("./Pyodide");
|
|
|
5
5
|
const Sandbox_1 = require("./Sandbox");
|
|
6
6
|
const envAccessBlocked = process.env.N8N_BLOCK_ENV_ACCESS_IN_NODE === 'true';
|
|
7
7
|
class PythonSandbox extends Sandbox_1.Sandbox {
|
|
8
|
-
constructor(context, pythonCode,
|
|
8
|
+
constructor(context, pythonCode, helpers) {
|
|
9
9
|
super({
|
|
10
10
|
object: {
|
|
11
11
|
singular: 'dictionary',
|
|
12
12
|
plural: 'dictionaries',
|
|
13
13
|
},
|
|
14
|
-
},
|
|
14
|
+
}, helpers);
|
|
15
15
|
this.pythonCode = pythonCode;
|
|
16
16
|
this.context = Object.keys(context).reduce((acc, key) => {
|
|
17
17
|
acc[key.startsWith('$') ? key.replace(/^\$/, '_') : key] = context[key];
|
|
@@ -25,9 +25,9 @@ class PythonSandbox extends Sandbox_1.Sandbox {
|
|
|
25
25
|
const executionResult = await this.runCodeInPython();
|
|
26
26
|
return this.validateRunCodeAllItems(executionResult);
|
|
27
27
|
}
|
|
28
|
-
async runCodeEachItem() {
|
|
28
|
+
async runCodeEachItem(itemIndex) {
|
|
29
29
|
const executionResult = await this.runCodeInPython();
|
|
30
|
-
return this.validateRunCodeEachItem(executionResult);
|
|
30
|
+
return this.validateRunCodeEachItem(executionResult, itemIndex);
|
|
31
31
|
}
|
|
32
32
|
async runCodeInPython() {
|
|
33
33
|
const packageCacheDir = this.helpers.getStoragePath();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PythonSandbox.js","sourceRoot":"","sources":["../../../nodes/Code/PythonSandbox.ts"],"names":[],"mappings":";;;AAEA,uCAAwC;AAExC,uCAAoC;AAQpC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,MAAM,CAAC;AAE7E,MAAa,aAAc,SAAQ,iBAAO;IAGzC,YACC,OAAuB,EACf,UAAkB,EAC1B,
|
|
1
|
+
{"version":3,"file":"PythonSandbox.js","sourceRoot":"","sources":["../../../nodes/Code/PythonSandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,14 +15,13 @@ export declare const REQUIRED_N8N_ITEM_KEYS: Set<string>;
|
|
|
15
15
|
export declare function getSandboxContext(this: IExecuteFunctions, index: number): SandboxContext;
|
|
16
16
|
export declare abstract class Sandbox extends EventEmitter {
|
|
17
17
|
private textKeys;
|
|
18
|
-
protected itemIndex: number | undefined;
|
|
19
18
|
protected helpers: IExecuteFunctions['helpers'];
|
|
20
|
-
constructor(textKeys: SandboxTextKeys,
|
|
21
|
-
abstract runCode(): Promise<
|
|
19
|
+
constructor(textKeys: SandboxTextKeys, helpers: IExecuteFunctions['helpers']);
|
|
20
|
+
abstract runCode<T = unknown>(): Promise<T>;
|
|
22
21
|
abstract runCodeAllItems(): Promise<INodeExecutionData[] | INodeExecutionData[][]>;
|
|
23
|
-
abstract runCodeEachItem(): Promise<INodeExecutionData | undefined>;
|
|
24
|
-
validateRunCodeEachItem(executionResult: INodeExecutionData | undefined): INodeExecutionData;
|
|
25
|
-
validateRunCodeAllItems(executionResult: INodeExecutionData | INodeExecutionData[] | undefined
|
|
22
|
+
abstract runCodeEachItem(itemIndex: number): Promise<INodeExecutionData | undefined>;
|
|
23
|
+
validateRunCodeEachItem(executionResult: INodeExecutionData | undefined, itemIndex: number): INodeExecutionData;
|
|
24
|
+
validateRunCodeAllItems(executionResult: INodeExecutionData | INodeExecutionData[] | undefined): INodeExecutionData[];
|
|
26
25
|
private getTextKey;
|
|
27
26
|
private validateItem;
|
|
28
27
|
private validateTopLevelKeys;
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Sandbox = exports.REQUIRED_N8N_ITEM_KEYS = void 0;
|
|
4
4
|
exports.getSandboxContext = getSandboxContext;
|
|
5
5
|
const events_1 = require("events");
|
|
6
|
-
const ValidationError_1 = require("./ValidationError");
|
|
7
6
|
const utils_1 = require("./utils");
|
|
7
|
+
const ValidationError_1 = require("./ValidationError");
|
|
8
8
|
exports.REQUIRED_N8N_ITEM_KEYS = new Set(['json', 'binary', 'pairedItem', 'error']);
|
|
9
9
|
function getSandboxContext(index) {
|
|
10
10
|
const helpers = {
|
|
@@ -20,20 +20,19 @@ function getSandboxContext(index) {
|
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
class Sandbox extends events_1.EventEmitter {
|
|
23
|
-
constructor(textKeys,
|
|
23
|
+
constructor(textKeys, helpers) {
|
|
24
24
|
super();
|
|
25
25
|
this.textKeys = textKeys;
|
|
26
|
-
this.itemIndex = itemIndex;
|
|
27
26
|
this.helpers = helpers;
|
|
28
27
|
}
|
|
29
|
-
validateRunCodeEachItem(executionResult) {
|
|
28
|
+
validateRunCodeEachItem(executionResult, itemIndex) {
|
|
30
29
|
if (typeof executionResult !== 'object') {
|
|
31
30
|
throw new ValidationError_1.ValidationError({
|
|
32
31
|
message: `Code doesn't return ${this.getTextKey('object', { includeArticle: true })}`,
|
|
33
32
|
description: `Please return ${this.getTextKey('object', {
|
|
34
33
|
includeArticle: true,
|
|
35
34
|
})} representing the output item. ('${executionResult}' was returned instead.)`,
|
|
36
|
-
itemIndex
|
|
35
|
+
itemIndex,
|
|
37
36
|
});
|
|
38
37
|
}
|
|
39
38
|
if (Array.isArray(executionResult)) {
|
|
@@ -43,34 +42,34 @@ class Sandbox extends events_1.EventEmitter {
|
|
|
43
42
|
throw new ValidationError_1.ValidationError({
|
|
44
43
|
message: `Code doesn't return a single ${this.getTextKey('object')}`,
|
|
45
44
|
description: `${firstSentence} If you need to output multiple items, please use the 'Run Once for All Items' mode instead.`,
|
|
46
|
-
itemIndex
|
|
45
|
+
itemIndex,
|
|
47
46
|
});
|
|
48
47
|
}
|
|
49
48
|
const [returnData] = this.helpers.normalizeItems([executionResult]);
|
|
50
|
-
this.validateItem(returnData);
|
|
51
|
-
this.validateTopLevelKeys(returnData);
|
|
49
|
+
this.validateItem(returnData, itemIndex);
|
|
50
|
+
this.validateTopLevelKeys(returnData, itemIndex);
|
|
52
51
|
return returnData;
|
|
53
52
|
}
|
|
54
|
-
validateRunCodeAllItems(executionResult
|
|
53
|
+
validateRunCodeAllItems(executionResult) {
|
|
55
54
|
if (typeof executionResult !== 'object') {
|
|
56
55
|
throw new ValidationError_1.ValidationError({
|
|
57
56
|
message: "Code doesn't return items properly",
|
|
58
57
|
description: `Please return an array of ${this.getTextKey('object', {
|
|
59
58
|
plural: true,
|
|
60
59
|
})}, one for each item you would like to output.`,
|
|
61
|
-
itemIndex,
|
|
62
60
|
});
|
|
63
61
|
}
|
|
64
62
|
if (Array.isArray(executionResult)) {
|
|
65
63
|
const mustHaveTopLevelN8nKey = executionResult.some((item) => Object.keys(item).find((key) => exports.REQUIRED_N8N_ITEM_KEYS.has(key)));
|
|
66
64
|
if (mustHaveTopLevelN8nKey) {
|
|
67
|
-
for (
|
|
68
|
-
|
|
65
|
+
for (let index = 0; index < executionResult.length; index++) {
|
|
66
|
+
const item = executionResult[index];
|
|
67
|
+
this.validateTopLevelKeys(item, index);
|
|
69
68
|
}
|
|
70
69
|
}
|
|
71
70
|
}
|
|
72
71
|
const returnData = this.helpers.normalizeItems(executionResult);
|
|
73
|
-
returnData.forEach((item) => this.validateItem(item));
|
|
72
|
+
returnData.forEach((item, index) => this.validateItem(item, index));
|
|
74
73
|
return returnData;
|
|
75
74
|
}
|
|
76
75
|
getTextKey(key, options) {
|
|
@@ -83,30 +82,30 @@ class Sandbox extends events_1.EventEmitter {
|
|
|
83
82
|
}
|
|
84
83
|
return `a ${response}`;
|
|
85
84
|
}
|
|
86
|
-
validateItem({ json, binary }) {
|
|
85
|
+
validateItem({ json, binary }, itemIndex) {
|
|
87
86
|
if (json === undefined || !(0, utils_1.isObject)(json)) {
|
|
88
87
|
throw new ValidationError_1.ValidationError({
|
|
89
88
|
message: `A 'json' property isn't ${this.getTextKey('object', { includeArticle: true })}`,
|
|
90
89
|
description: `In the returned data, every key named 'json' must point to ${this.getTextKey('object', { includeArticle: true })}.`,
|
|
91
|
-
itemIndex
|
|
90
|
+
itemIndex,
|
|
92
91
|
});
|
|
93
92
|
}
|
|
94
93
|
if (binary !== undefined && !(0, utils_1.isObject)(binary)) {
|
|
95
94
|
throw new ValidationError_1.ValidationError({
|
|
96
95
|
message: `A 'binary' property isn't ${this.getTextKey('object', { includeArticle: true })}`,
|
|
97
96
|
description: `In the returned data, every key named 'binary’ must point to ${this.getTextKey('object', { includeArticle: true })}.`,
|
|
98
|
-
itemIndex
|
|
97
|
+
itemIndex,
|
|
99
98
|
});
|
|
100
99
|
}
|
|
101
100
|
}
|
|
102
|
-
validateTopLevelKeys(item) {
|
|
101
|
+
validateTopLevelKeys(item, itemIndex) {
|
|
103
102
|
Object.keys(item).forEach((key) => {
|
|
104
103
|
if (exports.REQUIRED_N8N_ITEM_KEYS.has(key))
|
|
105
104
|
return;
|
|
106
105
|
throw new ValidationError_1.ValidationError({
|
|
107
106
|
message: `Unknown top-level item key: ${key}`,
|
|
108
107
|
description: 'Access the properties of an item under `.json`, e.g. `item.json`',
|
|
109
|
-
itemIndex
|
|
108
|
+
itemIndex,
|
|
110
109
|
});
|
|
111
110
|
});
|
|
112
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sandbox.js","sourceRoot":"","sources":["../../../nodes/Code/Sandbox.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Sandbox.js","sourceRoot":"","sources":["../../../nodes/Code/Sandbox.ts"],"names":[],"mappings":"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"}
|