@n8n/task-runner 1.3.0 → 1.5.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/config/base-runner-config.d.ts +6 -0
- package/dist/config/base-runner-config.js +42 -0
- package/dist/config/base-runner-config.js.map +1 -0
- package/dist/config/js-runner-config.d.ts +4 -0
- package/dist/config/js-runner-config.js +32 -0
- package/dist/config/js-runner-config.js.map +1 -0
- package/dist/config/main-config.d.ts +6 -0
- package/dist/config/main-config.js +30 -0
- package/dist/config/main-config.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/js-task-runner/built-ins-parser/acorn-helpers.d.ts +6 -0
- package/dist/js-task-runner/built-ins-parser/acorn-helpers.js +23 -0
- package/dist/js-task-runner/built-ins-parser/acorn-helpers.js.map +1 -0
- package/dist/js-task-runner/built-ins-parser/built-ins-parser-state.d.ts +18 -0
- package/dist/js-task-runner/built-ins-parser/built-ins-parser-state.js +56 -0
- package/dist/js-task-runner/built-ins-parser/built-ins-parser-state.js.map +1 -0
- package/dist/js-task-runner/built-ins-parser/built-ins-parser.d.ts +10 -0
- package/dist/js-task-runner/built-ins-parser/built-ins-parser.js +89 -0
- package/dist/js-task-runner/built-ins-parser/built-ins-parser.js.map +1 -0
- package/dist/js-task-runner/js-task-runner.d.ts +4 -10
- package/dist/js-task-runner/js-task-runner.js +39 -18
- package/dist/js-task-runner/js-task-runner.js.map +1 -1
- package/dist/message-types.d.ts +177 -0
- package/dist/message-types.js +3 -0
- package/dist/message-types.js.map +1 -0
- package/dist/node-types.d.ts +3 -0
- package/dist/node-types.js +22 -0
- package/dist/node-types.js.map +1 -1
- package/dist/runner-types.d.ts +60 -157
- package/dist/runner-types.js.map +1 -1
- package/dist/start.js +7 -19
- package/dist/start.js.map +1 -1
- package/dist/task-runner.d.ts +25 -13
- package/dist/task-runner.js +41 -21
- package/dist/task-runner.js.map +1 -1
- package/package.json +22 -6
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.BaseRunnerConfig = void 0;
|
|
13
|
+
const config_1 = require("@n8n/config");
|
|
14
|
+
let BaseRunnerConfig = class BaseRunnerConfig {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.n8nUri = '127.0.0.1:5679';
|
|
17
|
+
this.grantToken = '';
|
|
18
|
+
this.maxPayloadSize = 1024 * 1024 * 1024;
|
|
19
|
+
this.maxConcurrency = 5;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
exports.BaseRunnerConfig = BaseRunnerConfig;
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, config_1.Env)('N8N_RUNNERS_N8N_URI'),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], BaseRunnerConfig.prototype, "n8nUri", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, config_1.Env)('N8N_RUNNERS_GRANT_TOKEN'),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], BaseRunnerConfig.prototype, "grantToken", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, config_1.Env)('N8N_RUNNERS_MAX_PAYLOAD'),
|
|
33
|
+
__metadata("design:type", Number)
|
|
34
|
+
], BaseRunnerConfig.prototype, "maxPayloadSize", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, config_1.Env)('N8N_RUNNERS_MAX_CONCURRENCY'),
|
|
37
|
+
__metadata("design:type", Number)
|
|
38
|
+
], BaseRunnerConfig.prototype, "maxConcurrency", void 0);
|
|
39
|
+
exports.BaseRunnerConfig = BaseRunnerConfig = __decorate([
|
|
40
|
+
config_1.Config
|
|
41
|
+
], BaseRunnerConfig);
|
|
42
|
+
//# sourceMappingURL=base-runner-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-runner-config.js","sourceRoot":"","sources":["../../src/config/base-runner-config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA0C;AAGnC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAAtB;QAEN,WAAM,GAAW,gBAAgB,CAAC;QAGlC,eAAU,GAAW,EAAE,CAAC;QAGxB,mBAAc,GAAW,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAG5C,mBAAc,GAAW,CAAC,CAAC;IAC5B,CAAC;CAAA,CAAA;AAZY,4CAAgB;AAE5B;IADC,IAAA,YAAG,EAAC,qBAAqB,CAAC;;gDACO;AAGlC;IADC,IAAA,YAAG,EAAC,yBAAyB,CAAC;;oDACP;AAGxB;IADC,IAAA,YAAG,EAAC,yBAAyB,CAAC;;wDACa;AAG5C;IADC,IAAA,YAAG,EAAC,6BAA6B,CAAC;;wDACR;2BAXf,gBAAgB;IAD5B,eAAM;GACM,gBAAgB,CAY5B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.JsRunnerConfig = void 0;
|
|
13
|
+
const config_1 = require("@n8n/config");
|
|
14
|
+
let JsRunnerConfig = class JsRunnerConfig {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.allowedBuiltInModules = '';
|
|
17
|
+
this.allowedExternalModules = '';
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.JsRunnerConfig = JsRunnerConfig;
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, config_1.Env)('NODE_FUNCTION_ALLOW_BUILTIN'),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], JsRunnerConfig.prototype, "allowedBuiltInModules", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, config_1.Env)('NODE_FUNCTION_ALLOW_EXTERNAL'),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], JsRunnerConfig.prototype, "allowedExternalModules", void 0);
|
|
29
|
+
exports.JsRunnerConfig = JsRunnerConfig = __decorate([
|
|
30
|
+
config_1.Config
|
|
31
|
+
], JsRunnerConfig);
|
|
32
|
+
//# sourceMappingURL=js-runner-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js-runner-config.js","sourceRoot":"","sources":["../../src/config/js-runner-config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA0C;AAGnC,IAAM,cAAc,GAApB,MAAM,cAAc;IAApB;QAEN,0BAAqB,GAAW,EAAE,CAAC;QAGnC,2BAAsB,GAAW,EAAE,CAAC;IACrC,CAAC;CAAA,CAAA;AANY,wCAAc;AAE1B;IADC,IAAA,YAAG,EAAC,6BAA6B,CAAC;;6DACA;AAGnC;IADC,IAAA,YAAG,EAAC,8BAA8B,CAAC;;8DACA;yBALxB,cAAc;IAD1B,eAAM;GACM,cAAc,CAM1B"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MainConfig = void 0;
|
|
13
|
+
const config_1 = require("@n8n/config");
|
|
14
|
+
const base_runner_config_1 = require("./base-runner-config");
|
|
15
|
+
const js_runner_config_1 = require("./js-runner-config");
|
|
16
|
+
let MainConfig = class MainConfig {
|
|
17
|
+
};
|
|
18
|
+
exports.MainConfig = MainConfig;
|
|
19
|
+
__decorate([
|
|
20
|
+
config_1.Nested,
|
|
21
|
+
__metadata("design:type", base_runner_config_1.BaseRunnerConfig)
|
|
22
|
+
], MainConfig.prototype, "baseRunnerConfig", void 0);
|
|
23
|
+
__decorate([
|
|
24
|
+
config_1.Nested,
|
|
25
|
+
__metadata("design:type", js_runner_config_1.JsRunnerConfig)
|
|
26
|
+
], MainConfig.prototype, "jsRunnerConfig", void 0);
|
|
27
|
+
exports.MainConfig = MainConfig = __decorate([
|
|
28
|
+
config_1.Config
|
|
29
|
+
], MainConfig);
|
|
30
|
+
//# sourceMappingURL=main-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main-config.js","sourceRoot":"","sources":["../../src/config/main-config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA6C;AAE7C,6DAAwD;AACxD,yDAAoD;AAG7C,IAAM,UAAU,GAAhB,MAAM,UAAU;CAMtB,CAAA;AANY,gCAAU;AAEtB;IADC,eAAM;8BACY,qCAAgB;oDAAC;AAGpC;IADC,eAAM;8BACU,iCAAc;kDAAC;qBALpB,UAAU;IADtB,eAAM;GACM,UAAU,CAMtB"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./task-runner"), exports);
|
|
18
18
|
__exportStar(require("./runner-types"), exports);
|
|
19
|
+
__exportStar(require("./message-types"), exports);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,iDAA+B;AAC/B,kDAAgC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AssignmentExpression, Identifier, Literal, MemberExpression, Node, VariableDeclarator } from 'acorn';
|
|
2
|
+
export declare function isLiteral(node?: Node): node is Literal;
|
|
3
|
+
export declare function isIdentifier(node?: Node): node is Identifier;
|
|
4
|
+
export declare function isMemberExpression(node?: Node): node is MemberExpression;
|
|
5
|
+
export declare function isVariableDeclarator(node?: Node): node is VariableDeclarator;
|
|
6
|
+
export declare function isAssignmentExpression(node?: Node): node is AssignmentExpression;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isLiteral = isLiteral;
|
|
4
|
+
exports.isIdentifier = isIdentifier;
|
|
5
|
+
exports.isMemberExpression = isMemberExpression;
|
|
6
|
+
exports.isVariableDeclarator = isVariableDeclarator;
|
|
7
|
+
exports.isAssignmentExpression = isAssignmentExpression;
|
|
8
|
+
function isLiteral(node) {
|
|
9
|
+
return node?.type === 'Literal';
|
|
10
|
+
}
|
|
11
|
+
function isIdentifier(node) {
|
|
12
|
+
return node?.type === 'Identifier';
|
|
13
|
+
}
|
|
14
|
+
function isMemberExpression(node) {
|
|
15
|
+
return node?.type === 'MemberExpression';
|
|
16
|
+
}
|
|
17
|
+
function isVariableDeclarator(node) {
|
|
18
|
+
return node?.type === 'VariableDeclarator';
|
|
19
|
+
}
|
|
20
|
+
function isAssignmentExpression(node) {
|
|
21
|
+
return node?.type === 'AssignmentExpression';
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=acorn-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorn-helpers.js","sourceRoot":"","sources":["../../../src/js-task-runner/built-ins-parser/acorn-helpers.ts"],"names":[],"mappings":";;AASA,8BAEC;AAED,oCAEC;AAED,gDAEC;AAED,oDAEC;AAED,wDAEC;AAlBD,SAAgB,SAAS,CAAC,IAAW;IACpC,OAAO,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;AACjC,CAAC;AAED,SAAgB,YAAY,CAAC,IAAW;IACvC,OAAO,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC;AACpC,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAW;IAC7C,OAAO,IAAI,EAAE,IAAI,KAAK,kBAAkB,CAAC;AAC1C,CAAC;AAED,SAAgB,oBAAoB,CAAC,IAAW;IAC/C,OAAO,IAAI,EAAE,IAAI,KAAK,oBAAoB,CAAC;AAC5C,CAAC;AAED,SAAgB,sBAAsB,CAAC,IAAW;IACjD,OAAO,IAAI,EAAE,IAAI,KAAK,sBAAsB,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { BrokerMessage } from '../../message-types';
|
|
2
|
+
export declare class BuiltInsParserState {
|
|
3
|
+
neededNodeNames: Set<string>;
|
|
4
|
+
needsAllNodes: boolean;
|
|
5
|
+
needs$env: boolean;
|
|
6
|
+
needs$input: boolean;
|
|
7
|
+
needs$execution: boolean;
|
|
8
|
+
needs$prevNode: boolean;
|
|
9
|
+
constructor(opts?: Partial<BuiltInsParserState>);
|
|
10
|
+
markNeedsAllNodes(): void;
|
|
11
|
+
markNodeAsNeeded(nodeName: string): void;
|
|
12
|
+
markEnvAsNeeded(): void;
|
|
13
|
+
markInputAsNeeded(): void;
|
|
14
|
+
markExecutionAsNeeded(): void;
|
|
15
|
+
markPrevNodeAsNeeded(): void;
|
|
16
|
+
toDataRequestParams(): BrokerMessage.ToRequester.TaskDataRequest['requestParams'];
|
|
17
|
+
static newNeedsAllDataState(): BuiltInsParserState;
|
|
18
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BuiltInsParserState = void 0;
|
|
4
|
+
class BuiltInsParserState {
|
|
5
|
+
constructor(opts = {}) {
|
|
6
|
+
this.neededNodeNames = new Set();
|
|
7
|
+
this.needsAllNodes = false;
|
|
8
|
+
this.needs$env = false;
|
|
9
|
+
this.needs$input = false;
|
|
10
|
+
this.needs$execution = false;
|
|
11
|
+
this.needs$prevNode = false;
|
|
12
|
+
Object.assign(this, opts);
|
|
13
|
+
}
|
|
14
|
+
markNeedsAllNodes() {
|
|
15
|
+
this.needsAllNodes = true;
|
|
16
|
+
this.needs$input = true;
|
|
17
|
+
this.neededNodeNames = new Set();
|
|
18
|
+
}
|
|
19
|
+
markNodeAsNeeded(nodeName) {
|
|
20
|
+
if (this.needsAllNodes) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
this.neededNodeNames.add(nodeName);
|
|
24
|
+
}
|
|
25
|
+
markEnvAsNeeded() {
|
|
26
|
+
this.needs$env = true;
|
|
27
|
+
}
|
|
28
|
+
markInputAsNeeded() {
|
|
29
|
+
this.needs$input = true;
|
|
30
|
+
}
|
|
31
|
+
markExecutionAsNeeded() {
|
|
32
|
+
this.needs$execution = true;
|
|
33
|
+
}
|
|
34
|
+
markPrevNodeAsNeeded() {
|
|
35
|
+
this.needs$prevNode = true;
|
|
36
|
+
}
|
|
37
|
+
toDataRequestParams() {
|
|
38
|
+
return {
|
|
39
|
+
dataOfNodes: this.needsAllNodes ? 'all' : Array.from(this.neededNodeNames),
|
|
40
|
+
env: this.needs$env,
|
|
41
|
+
input: this.needs$input,
|
|
42
|
+
prevNode: this.needs$prevNode,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
static newNeedsAllDataState() {
|
|
46
|
+
const obj = new BuiltInsParserState();
|
|
47
|
+
obj.markNeedsAllNodes();
|
|
48
|
+
obj.markEnvAsNeeded();
|
|
49
|
+
obj.markInputAsNeeded();
|
|
50
|
+
obj.markExecutionAsNeeded();
|
|
51
|
+
obj.markPrevNodeAsNeeded();
|
|
52
|
+
return obj;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.BuiltInsParserState = BuiltInsParserState;
|
|
56
|
+
//# sourceMappingURL=built-ins-parser-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"built-ins-parser-state.js","sourceRoot":"","sources":["../../../src/js-task-runner/built-ins-parser/built-ins-parser-state.ts"],"names":[],"mappings":";;;AAKA,MAAa,mBAAmB;IAa/B,YAAY,OAAqC,EAAE;QAZnD,oBAAe,GAAgB,IAAI,GAAG,EAAE,CAAC;QAEzC,kBAAa,GAAG,KAAK,CAAC;QAEtB,cAAS,GAAG,KAAK,CAAC;QAElB,gBAAW,GAAG,KAAK,CAAC;QAEpB,oBAAe,GAAG,KAAK,CAAC;QAExB,mBAAc,GAAG,KAAK,CAAC;QAGtB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAKD,iBAAiB;QAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,gBAAgB,CAAC,QAAgB;QAChC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,eAAe;QACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,iBAAiB;QAChB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,qBAAqB;QACpB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,oBAAoB;QACnB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,mBAAmB;QAClB,OAAO;YACN,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;YAC1E,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,KAAK,EAAE,IAAI,CAAC,WAAW;YACvB,QAAQ,EAAE,IAAI,CAAC,cAAc;SAC7B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,oBAAoB;QAC1B,MAAM,GAAG,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACxB,GAAG,CAAC,eAAe,EAAE,CAAC;QACtB,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACxB,GAAG,CAAC,qBAAqB,EAAE,CAAC;QAC5B,GAAG,CAAC,oBAAoB,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC;IACZ,CAAC;CACD;AApED,kDAoEC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Result } from 'n8n-workflow';
|
|
2
|
+
import { BuiltInsParserState } from './built-ins-parser-state';
|
|
3
|
+
export declare class BuiltInsParser {
|
|
4
|
+
parseUsedBuiltIns(code: string): Result<BuiltInsParserState, Error>;
|
|
5
|
+
private identifyBuiltInsByWalkingAst;
|
|
6
|
+
private visitCallExpression;
|
|
7
|
+
private handlePrevNodeCall;
|
|
8
|
+
private visitIdentifier;
|
|
9
|
+
private isPairedItemProperty;
|
|
10
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BuiltInsParser = void 0;
|
|
4
|
+
const acorn_1 = require("acorn");
|
|
5
|
+
const acorn_walk_1 = require("acorn-walk");
|
|
6
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
7
|
+
const acorn_helpers_1 = require("./acorn-helpers");
|
|
8
|
+
const built_ins_parser_state_1 = require("./built-ins-parser-state");
|
|
9
|
+
class BuiltInsParser {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.visitCallExpression = (node, state, ancestors) => {
|
|
12
|
+
const isDollar = node.callee.type === 'Identifier' && node.callee.name === '$';
|
|
13
|
+
if (!isDollar)
|
|
14
|
+
return;
|
|
15
|
+
if (node.arguments.length === 0) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const firstArg = node.arguments[0];
|
|
19
|
+
if (!(0, acorn_helpers_1.isLiteral)(firstArg)) {
|
|
20
|
+
state.markNeedsAllNodes();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (typeof firstArg.value !== 'string') {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
state.markNodeAsNeeded(firstArg.value);
|
|
27
|
+
this.handlePrevNodeCall(node, state, ancestors);
|
|
28
|
+
};
|
|
29
|
+
this.visitIdentifier = (node, state) => {
|
|
30
|
+
if (node.name === '$env') {
|
|
31
|
+
state.markEnvAsNeeded();
|
|
32
|
+
}
|
|
33
|
+
else if (node.name === '$input' || node.name === '$json') {
|
|
34
|
+
state.markInputAsNeeded();
|
|
35
|
+
}
|
|
36
|
+
else if (node.name === '$execution') {
|
|
37
|
+
state.markExecutionAsNeeded();
|
|
38
|
+
}
|
|
39
|
+
else if (node.name === '$prevNode') {
|
|
40
|
+
state.markPrevNodeAsNeeded();
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
parseUsedBuiltIns(code) {
|
|
45
|
+
return (0, n8n_workflow_1.toResult)(() => {
|
|
46
|
+
const wrappedCode = `async function VmCodeWrapper() { ${code} }`;
|
|
47
|
+
const ast = (0, acorn_1.parse)(wrappedCode, { ecmaVersion: 2025, sourceType: 'module' });
|
|
48
|
+
return this.identifyBuiltInsByWalkingAst(ast);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
identifyBuiltInsByWalkingAst(ast) {
|
|
52
|
+
const accessedBuiltIns = new built_ins_parser_state_1.BuiltInsParserState();
|
|
53
|
+
(0, acorn_walk_1.ancestor)(ast, {
|
|
54
|
+
CallExpression: this.visitCallExpression,
|
|
55
|
+
Identifier: this.visitIdentifier,
|
|
56
|
+
}, undefined, accessedBuiltIns);
|
|
57
|
+
return accessedBuiltIns;
|
|
58
|
+
}
|
|
59
|
+
handlePrevNodeCall(_node, state, ancestors) {
|
|
60
|
+
const directParent = ancestors[ancestors.length - 2];
|
|
61
|
+
if ((0, acorn_helpers_1.isMemberExpression)(directParent)) {
|
|
62
|
+
const accessedProperty = directParent.property;
|
|
63
|
+
if (directParent.computed) {
|
|
64
|
+
if ((0, acorn_helpers_1.isLiteral)(accessedProperty)) {
|
|
65
|
+
if (this.isPairedItemProperty(accessedProperty.value)) {
|
|
66
|
+
state.markNeedsAllNodes();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else if ((0, acorn_helpers_1.isIdentifier)(accessedProperty)) {
|
|
70
|
+
state.markNeedsAllNodes();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else if ((0, acorn_helpers_1.isIdentifier)(accessedProperty) && this.isPairedItemProperty(accessedProperty.name)) {
|
|
74
|
+
state.markNeedsAllNodes();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else if ((0, acorn_helpers_1.isVariableDeclarator)(directParent) || (0, acorn_helpers_1.isAssignmentExpression)(directParent)) {
|
|
78
|
+
state.markNeedsAllNodes();
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
state.markNeedsAllNodes();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
isPairedItemProperty(property) {
|
|
85
|
+
return property === 'item' || property === 'pairedItem' || property === 'itemMatching';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.BuiltInsParser = BuiltInsParser;
|
|
89
|
+
//# sourceMappingURL=built-ins-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"built-ins-parser.js","sourceRoot":"","sources":["../../../src/js-task-runner/built-ins-parser/built-ins-parser.ts"],"names":[],"mappings":";;;AACA,iCAA8B;AAC9B,2CAAsC;AAEtC,+CAAwC;AAExC,mDAMyB;AACzB,qEAA+D;AAM/D,MAAa,cAAc;IAA3B;QA8BS,wBAAmB,GAAG,CAC7B,IAAoB,EACpB,KAA0B,EAC1B,SAAiB,EAChB,EAAE;YAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC;YAC/E,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAGtB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO;YACR,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,IAAA,yBAAS,EAAC,QAAQ,CAAC,EAAE,CAAC;gBAE1B,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC1B,OAAO;YACR,CAAC;YAED,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAExC,OAAO;YACR,CAAC;YAGD,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAGvC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC;QA4CM,oBAAe,GAAG,CAAC,IAAgB,EAAE,KAA0B,EAAE,EAAE;YAC1E,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,KAAK,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5D,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACvC,KAAK,CAAC,qBAAqB,EAAE,CAAC;YAC/B,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACtC,KAAK,CAAC,oBAAoB,EAAE,CAAC;YAC9B,CAAC;QACF,CAAC,CAAC;IAOH,CAAC;IAtHO,iBAAiB,CAAC,IAAY;QACpC,OAAO,IAAA,uBAAQ,EAAC,GAAG,EAAE;YACpB,MAAM,WAAW,GAAG,oCAAoC,IAAI,IAAI,CAAC;YACjE,MAAM,GAAG,GAAG,IAAA,aAAK,EAAC,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;YAE5E,OAAO,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACJ,CAAC;IAGO,4BAA4B,CAAC,GAAY;QAChD,MAAM,gBAAgB,GAAG,IAAI,4CAAmB,EAAE,CAAC;QAEnD,IAAA,qBAAQ,EACP,GAAG,EACH;YACC,cAAc,EAAE,IAAI,CAAC,mBAAmB;YACxC,UAAU,EAAE,IAAI,CAAC,eAAe;SAChC,EACD,SAAS,EACT,gBAAgB,CAChB,CAAC;QAEF,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAmCO,kBAAkB,CAAC,KAAqB,EAAE,KAA0B,EAAE,SAAiB;QAO9F,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,IAAA,kCAAkB,EAAC,YAAY,CAAC,EAAE,CAAC;YACtC,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC;YAE/C,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAE3B,IAAI,IAAA,yBAAS,EAAC,gBAAgB,CAAC,EAAE,CAAC;oBACjC,IAAI,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;wBACvD,KAAK,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,CAAC;gBAEF,CAAC;qBAEI,IAAI,IAAA,4BAAY,EAAC,gBAAgB,CAAC,EAAE,CAAC;oBACzC,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,CAAC;YACF,CAAC;iBAEI,IAAI,IAAA,4BAAY,EAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7F,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;QACF,CAAC;aAAM,IAAI,IAAA,oCAAoB,EAAC,YAAY,CAAC,IAAI,IAAA,sCAAsB,EAAC,YAAY,CAAC,EAAE,CAAC;YAMvF,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YAGP,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACF,CAAC;IAcO,oBAAoB,CAC3B,QAA6D;QAE7D,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,cAAc,CAAC;IACxF,CAAC;CACD;AA1HD,wCA0HC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CodeExecutionMode, INode, ITaskDataConnections, WorkflowParameters, IDataObject, IExecuteData, INodeExecutionData, INodeParameters, IRunExecutionData, WorkflowExecuteMode, EnvProviderState } from 'n8n-workflow';
|
|
2
2
|
import type { TaskResultData } from '../runner-types';
|
|
3
3
|
import { type Task, TaskRunner } from '../task-runner';
|
|
4
|
+
import type { MainConfig } from '../config/main-config';
|
|
4
5
|
export interface JSExecSettings {
|
|
5
6
|
code: string;
|
|
6
7
|
nodeMode: CodeExecutionMode;
|
|
@@ -22,7 +23,7 @@ export interface PartialAdditionalData {
|
|
|
22
23
|
userId?: string;
|
|
23
24
|
variables: IDataObject;
|
|
24
25
|
}
|
|
25
|
-
export interface
|
|
26
|
+
export interface DataRequestResponse {
|
|
26
27
|
workflow: Omit<WorkflowParameters, 'nodeTypes'>;
|
|
27
28
|
inputData: ITaskDataConnections;
|
|
28
29
|
node: INode;
|
|
@@ -40,17 +41,10 @@ export interface AllCodeTaskData {
|
|
|
40
41
|
contextNodeName: string;
|
|
41
42
|
additionalData: PartialAdditionalData;
|
|
42
43
|
}
|
|
43
|
-
export interface JsTaskRunnerOpts {
|
|
44
|
-
wsUrl: string;
|
|
45
|
-
grantToken: string;
|
|
46
|
-
maxConcurrency: number;
|
|
47
|
-
name?: string;
|
|
48
|
-
allowedBuiltInModules?: string;
|
|
49
|
-
allowedExternalModules?: string;
|
|
50
|
-
}
|
|
51
44
|
export declare class JsTaskRunner extends TaskRunner {
|
|
52
45
|
private readonly requireResolver;
|
|
53
|
-
|
|
46
|
+
private readonly builtInsParser;
|
|
47
|
+
constructor(config: MainConfig, name?: string);
|
|
54
48
|
executeTask(task: Task<JSExecSettings>): Promise<TaskResultData>;
|
|
55
49
|
private getNativeVariables;
|
|
56
50
|
private runForAllItems;
|
|
@@ -29,25 +29,46 @@ const n8n_workflow_1 = require("n8n-workflow");
|
|
|
29
29
|
const a = __importStar(require("node:assert"));
|
|
30
30
|
const node_vm_1 = require("node:vm");
|
|
31
31
|
const task_runner_1 = require("../task-runner");
|
|
32
|
+
const built_ins_parser_1 = require("./built-ins-parser/built-ins-parser");
|
|
33
|
+
const built_ins_parser_state_1 = require("./built-ins-parser/built-ins-parser-state");
|
|
32
34
|
const error_like_1 = require("./errors/error-like");
|
|
33
35
|
const execution_error_1 = require("./errors/execution-error");
|
|
34
36
|
const serializable_error_1 = require("./errors/serializable-error");
|
|
35
37
|
const require_resolver_1 = require("./require-resolver");
|
|
36
38
|
const result_validation_1 = require("./result-validation");
|
|
37
39
|
class JsTaskRunner extends task_runner_1.TaskRunner {
|
|
38
|
-
constructor(
|
|
39
|
-
super(
|
|
40
|
+
constructor(config, name = 'JS Task Runner') {
|
|
41
|
+
super({
|
|
42
|
+
taskType: 'javascript',
|
|
43
|
+
name,
|
|
44
|
+
...config.baseRunnerConfig,
|
|
45
|
+
});
|
|
46
|
+
this.builtInsParser = new built_ins_parser_1.BuiltInsParser();
|
|
47
|
+
const { jsRunnerConfig } = config;
|
|
40
48
|
const parseModuleAllowList = (moduleList) => moduleList === '*' ? null : new Set(moduleList.split(',').map((x) => x.trim()));
|
|
41
49
|
this.requireResolver = (0, require_resolver_1.createRequireResolver)({
|
|
42
|
-
allowedBuiltInModules: parseModuleAllowList(allowedBuiltInModules ?? ''),
|
|
43
|
-
allowedExternalModules: parseModuleAllowList(allowedExternalModules ?? ''),
|
|
50
|
+
allowedBuiltInModules: parseModuleAllowList(jsRunnerConfig.allowedBuiltInModules ?? ''),
|
|
51
|
+
allowedExternalModules: parseModuleAllowList(jsRunnerConfig.allowedExternalModules ?? ''),
|
|
44
52
|
});
|
|
45
53
|
}
|
|
46
54
|
async executeTask(task) {
|
|
47
|
-
const allData = await this.requestData(task.taskId, 'all');
|
|
48
55
|
const settings = task.settings;
|
|
49
56
|
a.ok(settings, 'JS Code not sent to runner');
|
|
50
|
-
const
|
|
57
|
+
const neededBuiltInsResult = this.builtInsParser.parseUsedBuiltIns(settings.code);
|
|
58
|
+
const neededBuiltIns = neededBuiltInsResult.ok
|
|
59
|
+
? neededBuiltInsResult.result
|
|
60
|
+
: built_ins_parser_state_1.BuiltInsParserState.newNeedsAllDataState();
|
|
61
|
+
const data = await this.requestData(task.taskId, neededBuiltIns.toDataRequestParams());
|
|
62
|
+
if (neededBuiltIns.needsAllNodes) {
|
|
63
|
+
const uniqueNodeTypes = new Map(data.workflow.nodes.map((node) => [
|
|
64
|
+
`${node.type}|${node.typeVersion}`,
|
|
65
|
+
{ name: node.type, version: node.typeVersion },
|
|
66
|
+
]));
|
|
67
|
+
const unknownNodeTypes = this.nodeTypes.onlyUnknown([...uniqueNodeTypes.values()]);
|
|
68
|
+
const nodeTypes = await this.requestNodeTypes(task.taskId, unknownNodeTypes);
|
|
69
|
+
this.nodeTypes.addNodeTypeDescriptions(nodeTypes);
|
|
70
|
+
}
|
|
71
|
+
const workflowParams = data.workflow;
|
|
51
72
|
const workflow = new n8n_workflow_1.Workflow({
|
|
52
73
|
...workflowParams,
|
|
53
74
|
nodeTypes: this.nodeTypes,
|
|
@@ -61,11 +82,11 @@ class JsTaskRunner extends task_runner_1.TaskRunner {
|
|
|
61
82
|
},
|
|
62
83
|
};
|
|
63
84
|
const result = settings.nodeMode === 'runOnceForAllItems'
|
|
64
|
-
? await this.runForAllItems(task.taskId, settings,
|
|
65
|
-
: await this.runForEachItem(task.taskId, settings,
|
|
85
|
+
? await this.runForAllItems(task.taskId, settings, data, workflow, customConsole)
|
|
86
|
+
: await this.runForEachItem(task.taskId, settings, data, workflow, customConsole);
|
|
66
87
|
return {
|
|
67
88
|
result,
|
|
68
|
-
customData:
|
|
89
|
+
customData: data.runExecutionData.resultData.metadata,
|
|
69
90
|
};
|
|
70
91
|
}
|
|
71
92
|
getNativeVariables() {
|
|
@@ -88,9 +109,9 @@ class JsTaskRunner extends task_runner_1.TaskRunner {
|
|
|
88
109
|
FormData,
|
|
89
110
|
};
|
|
90
111
|
}
|
|
91
|
-
async runForAllItems(taskId, settings,
|
|
92
|
-
const dataProxy = this.createDataProxy(
|
|
93
|
-
const inputItems =
|
|
112
|
+
async runForAllItems(taskId, settings, data, workflow, customConsole) {
|
|
113
|
+
const dataProxy = this.createDataProxy(data, workflow, data.itemIndex);
|
|
114
|
+
const inputItems = data.connectionInputData;
|
|
94
115
|
const context = {
|
|
95
116
|
require: this.requireResolver,
|
|
96
117
|
module: {},
|
|
@@ -115,12 +136,12 @@ class JsTaskRunner extends task_runner_1.TaskRunner {
|
|
|
115
136
|
throw error;
|
|
116
137
|
}
|
|
117
138
|
}
|
|
118
|
-
async runForEachItem(taskId, settings,
|
|
119
|
-
const inputItems =
|
|
139
|
+
async runForEachItem(taskId, settings, data, workflow, customConsole) {
|
|
140
|
+
const inputItems = data.connectionInputData;
|
|
120
141
|
const returnData = [];
|
|
121
142
|
for (let index = 0; index < inputItems.length; index++) {
|
|
122
143
|
const item = inputItems[index];
|
|
123
|
-
const dataProxy = this.createDataProxy(
|
|
144
|
+
const dataProxy = this.createDataProxy(data, workflow, index);
|
|
124
145
|
const context = {
|
|
125
146
|
require: this.requireResolver,
|
|
126
147
|
module: {},
|
|
@@ -164,12 +185,12 @@ class JsTaskRunner extends task_runner_1.TaskRunner {
|
|
|
164
185
|
}
|
|
165
186
|
return returnData;
|
|
166
187
|
}
|
|
167
|
-
createDataProxy(
|
|
168
|
-
return new n8n_workflow_1.WorkflowDataProxy(workflow,
|
|
188
|
+
createDataProxy(data, workflow, itemIndex) {
|
|
189
|
+
return new n8n_workflow_1.WorkflowDataProxy(workflow, data.runExecutionData, data.runIndex, itemIndex, data.activeNodeName, data.connectionInputData, data.siblingParameters, data.mode, (0, n8n_core_1.getAdditionalKeys)(data.additionalData, data.mode, data.runExecutionData), data.executeData, data.defaultReturnRunIndex, data.selfData, data.contextNodeName, data.envProviderState ?? {
|
|
169
190
|
env: {},
|
|
170
191
|
isEnvAccessBlocked: false,
|
|
171
192
|
isProcessAvailable: true,
|
|
172
|
-
}).getDataProxy();
|
|
193
|
+
}).getDataProxy({ throwOnMissingExecutionData: false });
|
|
173
194
|
}
|
|
174
195
|
toExecutionErrorIfNeeded(error) {
|
|
175
196
|
if (error instanceof Error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js-task-runner.js","sourceRoot":"","sources":["../../src/js-task-runner/js-task-runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA6C;AAC7C,+CAIsB;
|
|
1
|
+
{"version":3,"file":"js-task-runner.js","sourceRoot":"","sources":["../../src/js-task-runner/js-task-runner.ts"],"names":[],"mappings":"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"}
|