n8n-core 0.143.1 → 0.145.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/bin/common.js +19 -0
- package/bin/generate-known +63 -0
- package/bin/generate-ui-types +36 -0
- package/dist/BinaryDataManager/FileSystem.d.ts +8 -1
- package/dist/BinaryDataManager/FileSystem.js +53 -23
- package/dist/BinaryDataManager/FileSystem.js.map +1 -1
- package/dist/BinaryDataManager/index.d.ts +6 -2
- package/dist/BinaryDataManager/index.js +55 -10
- package/dist/BinaryDataManager/index.js.map +1 -1
- package/dist/ClassLoader.d.ts +1 -0
- package/dist/ClassLoader.js +14 -0
- package/dist/ClassLoader.js.map +1 -0
- package/dist/Constants.d.ts +1 -0
- package/dist/Constants.js +2 -1
- package/dist/Constants.js.map +1 -1
- package/dist/DirectoryLoader.d.ts +38 -0
- package/dist/DirectoryLoader.js +267 -0
- package/dist/DirectoryLoader.js.map +1 -0
- package/dist/Interfaces.d.ts +25 -0
- package/dist/NodeExecuteFunctions.d.ts +1 -0
- package/dist/NodeExecuteFunctions.js +62 -8
- package/dist/NodeExecuteFunctions.js.map +1 -1
- package/dist/UserSettings.js +12 -14
- package/dist/UserSettings.js.map +1 -1
- package/dist/WorkflowExecute.js +2 -2
- package/dist/WorkflowExecute.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +12 -5
package/bin/common.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const { mkdir, writeFile } = require('fs/promises');
|
|
3
|
+
|
|
4
|
+
const packageDir = process.cwd();
|
|
5
|
+
const distDir = path.join(packageDir, 'dist');
|
|
6
|
+
|
|
7
|
+
const writeJSON = async (file, data) => {
|
|
8
|
+
const filePath = path.resolve(distDir, file);
|
|
9
|
+
await mkdir(path.dirname(filePath), { recursive: true });
|
|
10
|
+
const payload = Array.isArray(data)
|
|
11
|
+
? `[\n${data.map((entry) => JSON.stringify(entry)).join(',\n')}\n]`
|
|
12
|
+
: JSON.stringify(data, null, 2);
|
|
13
|
+
await writeFile(filePath, payload, { encoding: 'utf-8' });
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
module.exports = {
|
|
17
|
+
packageDir,
|
|
18
|
+
writeJSON,
|
|
19
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const glob = require('fast-glob');
|
|
5
|
+
const { LoggerProxy } = require('n8n-workflow');
|
|
6
|
+
const { packageDir, writeJSON } = require('./common');
|
|
7
|
+
const { loadClassInIsolation } = require('../dist/ClassLoader');
|
|
8
|
+
|
|
9
|
+
LoggerProxy.init({
|
|
10
|
+
log: console.log.bind(console),
|
|
11
|
+
warn: console.warn.bind(console),
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const loadClass = (sourcePath) => {
|
|
15
|
+
try {
|
|
16
|
+
const [className] = path.parse(sourcePath).name.split('.');
|
|
17
|
+
const filePath = path.resolve(packageDir, sourcePath);
|
|
18
|
+
const instance = loadClassInIsolation(filePath, className);
|
|
19
|
+
return { instance, sourcePath, className };
|
|
20
|
+
} catch (e) {
|
|
21
|
+
LoggerProxy.warn(`Failed to load ${sourcePath}: ${e.message}`);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const nodesToTestWith = {};
|
|
26
|
+
|
|
27
|
+
const generate = async (kind) => {
|
|
28
|
+
const data = glob
|
|
29
|
+
.sync(`dist/${kind}/**/*.${kind === 'nodes' ? 'node' : kind}.js`, {
|
|
30
|
+
cwd: packageDir,
|
|
31
|
+
})
|
|
32
|
+
.filter((filePath) => !/[vV]\d.node\.js$/.test(filePath))
|
|
33
|
+
.map(loadClass)
|
|
34
|
+
.filter((data) => !!data)
|
|
35
|
+
.reduce((obj, { className, sourcePath, instance }) => {
|
|
36
|
+
const name = kind === 'nodes' ? instance.description.name : instance.name;
|
|
37
|
+
if (name in obj) console.error('already loaded', kind, name, sourcePath);
|
|
38
|
+
else obj[name] = { className, sourcePath };
|
|
39
|
+
|
|
40
|
+
if (kind === 'nodes') {
|
|
41
|
+
const { credentials } = instance.description;
|
|
42
|
+
if (credentials && credentials.length) {
|
|
43
|
+
for (const credential of credentials) {
|
|
44
|
+
nodesToTestWith[credential.name] = nodesToTestWith[credential.name] || [];
|
|
45
|
+
nodesToTestWith[credential.name].push(name);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
} else {
|
|
49
|
+
if (name in nodesToTestWith) {
|
|
50
|
+
obj[name].nodesToTestWith = nodesToTestWith[name];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return obj;
|
|
54
|
+
}, {});
|
|
55
|
+
LoggerProxy.info(`Detected ${Object.keys(data).length} ${kind}`);
|
|
56
|
+
await writeJSON(`known/${kind}.json`, data);
|
|
57
|
+
return data;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
(async () => {
|
|
61
|
+
await generate('nodes');
|
|
62
|
+
await generate('credentials');
|
|
63
|
+
})();
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { LoggerProxy, NodeHelpers } = require('n8n-workflow');
|
|
4
|
+
const { PackageDirectoryLoader } = require('../dist/DirectoryLoader');
|
|
5
|
+
const { packageDir, writeJSON } = require('./common');
|
|
6
|
+
|
|
7
|
+
LoggerProxy.init({
|
|
8
|
+
log: console.log.bind(console),
|
|
9
|
+
warn: console.warn.bind(console),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
(async () => {
|
|
13
|
+
const loader = new PackageDirectoryLoader(packageDir);
|
|
14
|
+
await loader.loadAll();
|
|
15
|
+
|
|
16
|
+
const credentialTypes = Object.values(loader.credentialTypes).map((data) => data.type);
|
|
17
|
+
|
|
18
|
+
const nodeTypes = Object.values(loader.nodeTypes)
|
|
19
|
+
.map((data) => {
|
|
20
|
+
const nodeType = NodeHelpers.getVersionedNodeType(data.type);
|
|
21
|
+
const applyParameters = NodeHelpers.getSpecialNodeParameters(nodeType);
|
|
22
|
+
if (applyParameters.length) {
|
|
23
|
+
nodeType.description.properties.unshift(...applyParameters);
|
|
24
|
+
}
|
|
25
|
+
return data.type;
|
|
26
|
+
})
|
|
27
|
+
.flatMap((nodeData) => {
|
|
28
|
+
const allNodeTypes = NodeHelpers.getVersionedNodeTypeAll(nodeData);
|
|
29
|
+
return allNodeTypes.map((element) => element.description);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
await Promise.all([
|
|
33
|
+
writeJSON('types/credentials.json', credentialTypes),
|
|
34
|
+
writeJSON('types/nodes.json', nodeTypes),
|
|
35
|
+
]);
|
|
36
|
+
})();
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { IBinaryDataConfig, IBinaryDataManager } from '../Interfaces';
|
|
2
|
+
import { BinaryMetadata, IBinaryDataConfig, IBinaryDataManager } from '../Interfaces';
|
|
3
3
|
export declare class BinaryDataFileSystem implements IBinaryDataManager {
|
|
4
4
|
private storagePath;
|
|
5
5
|
private binaryDataTTL;
|
|
6
6
|
private persistedBinaryDataTTL;
|
|
7
7
|
constructor(config: IBinaryDataConfig);
|
|
8
8
|
init(startPurger?: boolean): Promise<void>;
|
|
9
|
+
getFileSize(identifier: string): Promise<number>;
|
|
10
|
+
copyBinaryFile(filePath: string, executionId: string): Promise<string>;
|
|
11
|
+
storeBinaryMetadata(identifier: string, metadata: BinaryMetadata): Promise<void>;
|
|
12
|
+
getBinaryMetadata(identifier: string): Promise<BinaryMetadata>;
|
|
9
13
|
storeBinaryData(binaryBuffer: Buffer, executionId: string): Promise<string>;
|
|
10
14
|
retrieveBinaryDataByIdentifier(identifier: string): Promise<Buffer>;
|
|
15
|
+
getBinaryPath(identifier: string): string;
|
|
16
|
+
getMetadataPath(identifier: string): string;
|
|
11
17
|
markDataForDeletionByExecutionId(executionId: string): Promise<void>;
|
|
12
18
|
deleteMarkedFiles(): Promise<void>;
|
|
13
19
|
deleteMarkedPersistedFiles(): Promise<void>;
|
|
@@ -22,6 +28,7 @@ export declare class BinaryDataFileSystem implements IBinaryDataManager {
|
|
|
22
28
|
private getBinaryDataPersistMetaPath;
|
|
23
29
|
private deleteMetaFileByPath;
|
|
24
30
|
private deleteFromLocalStorage;
|
|
31
|
+
private copyFileToLocalStorage;
|
|
25
32
|
private saveToLocalStorage;
|
|
26
33
|
private retrieveFromLocalStorage;
|
|
27
34
|
}
|
|
@@ -4,7 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.BinaryDataFileSystem = void 0;
|
|
7
|
-
const
|
|
7
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
8
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
8
9
|
const path_1 = __importDefault(require("path"));
|
|
9
10
|
const uuid_1 = require("uuid");
|
|
10
11
|
const PREFIX_METAFILE = 'binarymeta';
|
|
@@ -24,27 +25,53 @@ class BinaryDataFileSystem {
|
|
|
24
25
|
await this.deleteMarkedPersistedFiles();
|
|
25
26
|
}, this.persistedBinaryDataTTL * 30000);
|
|
26
27
|
}
|
|
27
|
-
return
|
|
28
|
+
return promises_1.default
|
|
28
29
|
.readdir(this.storagePath)
|
|
29
|
-
.catch(async () =>
|
|
30
|
-
.then(async () =>
|
|
31
|
-
.catch(async () =>
|
|
32
|
-
.then(async () =>
|
|
33
|
-
.catch(async () =>
|
|
30
|
+
.catch(async () => promises_1.default.mkdir(this.storagePath, { recursive: true }))
|
|
31
|
+
.then(async () => promises_1.default.readdir(this.getBinaryDataMetaPath()))
|
|
32
|
+
.catch(async () => promises_1.default.mkdir(this.getBinaryDataMetaPath(), { recursive: true }))
|
|
33
|
+
.then(async () => promises_1.default.readdir(this.getBinaryDataPersistMetaPath()))
|
|
34
|
+
.catch(async () => promises_1.default.mkdir(this.getBinaryDataPersistMetaPath(), { recursive: true }))
|
|
34
35
|
.then(async () => this.deleteMarkedFiles())
|
|
35
36
|
.then(async () => this.deleteMarkedPersistedFiles())
|
|
36
37
|
.then(() => { });
|
|
37
38
|
}
|
|
39
|
+
async getFileSize(identifier) {
|
|
40
|
+
const stats = await promises_1.default.stat(this.getBinaryPath(identifier));
|
|
41
|
+
return stats.size;
|
|
42
|
+
}
|
|
43
|
+
async copyBinaryFile(filePath, executionId) {
|
|
44
|
+
const binaryDataId = this.generateFileName(executionId);
|
|
45
|
+
await this.addBinaryIdToPersistMeta(executionId, binaryDataId);
|
|
46
|
+
await this.copyFileToLocalStorage(filePath, binaryDataId);
|
|
47
|
+
return binaryDataId;
|
|
48
|
+
}
|
|
49
|
+
async storeBinaryMetadata(identifier, metadata) {
|
|
50
|
+
await promises_1.default.writeFile(this.getMetadataPath(identifier), JSON.stringify(metadata), {
|
|
51
|
+
encoding: 'utf-8',
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
async getBinaryMetadata(identifier) {
|
|
55
|
+
return (0, n8n_workflow_1.jsonParse)(await promises_1.default.readFile(this.getMetadataPath(identifier), { encoding: 'utf-8' }));
|
|
56
|
+
}
|
|
38
57
|
async storeBinaryData(binaryBuffer, executionId) {
|
|
39
58
|
const binaryDataId = this.generateFileName(executionId);
|
|
40
|
-
|
|
59
|
+
await this.addBinaryIdToPersistMeta(executionId, binaryDataId);
|
|
60
|
+
await this.saveToLocalStorage(binaryBuffer, binaryDataId);
|
|
61
|
+
return binaryDataId;
|
|
41
62
|
}
|
|
42
63
|
async retrieveBinaryDataByIdentifier(identifier) {
|
|
43
64
|
return this.retrieveFromLocalStorage(identifier);
|
|
44
65
|
}
|
|
66
|
+
getBinaryPath(identifier) {
|
|
67
|
+
return path_1.default.join(this.storagePath, identifier);
|
|
68
|
+
}
|
|
69
|
+
getMetadataPath(identifier) {
|
|
70
|
+
return path_1.default.join(this.storagePath, `${identifier}.metadata`);
|
|
71
|
+
}
|
|
45
72
|
async markDataForDeletionByExecutionId(executionId) {
|
|
46
73
|
const tt = new Date(new Date().getTime() + this.binaryDataTTL * 60000);
|
|
47
|
-
return
|
|
74
|
+
return promises_1.default.writeFile(path_1.default.join(this.getBinaryDataMetaPath(), `${PREFIX_METAFILE}_${executionId}_${tt.valueOf()}`), '');
|
|
48
75
|
}
|
|
49
76
|
async deleteMarkedFiles() {
|
|
50
77
|
return this.deleteMarkedFilesByMeta(this.getBinaryDataMetaPath(), PREFIX_METAFILE);
|
|
@@ -57,14 +84,14 @@ class BinaryDataFileSystem {
|
|
|
57
84
|
const timeAtNextHour = currentTime + 3600000 - (currentTime % 3600000);
|
|
58
85
|
const timeoutTime = timeAtNextHour + this.persistedBinaryDataTTL * 60000;
|
|
59
86
|
const filePath = path_1.default.join(this.getBinaryDataPersistMetaPath(), `${PREFIX_PERSISTED_METAFILE}_${executionId}_${timeoutTime}`);
|
|
60
|
-
return
|
|
87
|
+
return promises_1.default
|
|
61
88
|
.readFile(filePath)
|
|
62
|
-
.catch(async () =>
|
|
89
|
+
.catch(async () => promises_1.default.writeFile(filePath, identifier))
|
|
63
90
|
.then(() => { });
|
|
64
91
|
}
|
|
65
92
|
async deleteMarkedFilesByMeta(metaPath, filePrefix) {
|
|
66
93
|
const currentTimeValue = new Date().valueOf();
|
|
67
|
-
const metaFileNames = await
|
|
94
|
+
const metaFileNames = await promises_1.default.readdir(metaPath);
|
|
68
95
|
const execsAdded = {};
|
|
69
96
|
const proms = metaFileNames.reduce((prev, curr) => {
|
|
70
97
|
const [prefix, executionId, ts] = curr.split('_');
|
|
@@ -86,16 +113,16 @@ class BinaryDataFileSystem {
|
|
|
86
113
|
}
|
|
87
114
|
async duplicateBinaryDataByIdentifier(binaryDataId, prefix) {
|
|
88
115
|
const newBinaryDataId = this.generateFileName(prefix);
|
|
89
|
-
return
|
|
116
|
+
return promises_1.default
|
|
90
117
|
.copyFile(path_1.default.join(this.storagePath, binaryDataId), path_1.default.join(this.storagePath, newBinaryDataId))
|
|
91
118
|
.then(() => newBinaryDataId);
|
|
92
119
|
}
|
|
93
120
|
async deleteBinaryDataByExecutionId(executionId) {
|
|
94
121
|
const regex = new RegExp(`${executionId}_*`);
|
|
95
|
-
const filenames = await
|
|
122
|
+
const filenames = await promises_1.default.readdir(path_1.default.join(this.storagePath));
|
|
96
123
|
const proms = filenames.reduce((allProms, filename) => {
|
|
97
124
|
if (regex.test(filename)) {
|
|
98
|
-
allProms.push(
|
|
125
|
+
allProms.push(promises_1.default.rm(path_1.default.join(this.storagePath, filename)));
|
|
99
126
|
}
|
|
100
127
|
return allProms;
|
|
101
128
|
}, [Promise.resolve()]);
|
|
@@ -105,10 +132,10 @@ class BinaryDataFileSystem {
|
|
|
105
132
|
return this.deleteFromLocalStorage(identifier);
|
|
106
133
|
}
|
|
107
134
|
async persistBinaryDataForExecutionId(executionId) {
|
|
108
|
-
return
|
|
135
|
+
return promises_1.default.readdir(this.getBinaryDataPersistMetaPath()).then(async (metafiles) => {
|
|
109
136
|
const proms = metafiles.reduce((prev, curr) => {
|
|
110
137
|
if (curr.startsWith(`${PREFIX_PERSISTED_METAFILE}_${executionId}_`)) {
|
|
111
|
-
prev.push(
|
|
138
|
+
prev.push(promises_1.default.rm(path_1.default.join(this.getBinaryDataPersistMetaPath(), curr)));
|
|
112
139
|
return prev;
|
|
113
140
|
}
|
|
114
141
|
return prev;
|
|
@@ -117,7 +144,7 @@ class BinaryDataFileSystem {
|
|
|
117
144
|
});
|
|
118
145
|
}
|
|
119
146
|
generateFileName(prefix) {
|
|
120
|
-
return
|
|
147
|
+
return [prefix, (0, uuid_1.v4)()].join('');
|
|
121
148
|
}
|
|
122
149
|
getBinaryDataMetaPath() {
|
|
123
150
|
return path_1.default.join(this.storagePath, 'meta');
|
|
@@ -126,18 +153,21 @@ class BinaryDataFileSystem {
|
|
|
126
153
|
return path_1.default.join(this.storagePath, 'persistMeta');
|
|
127
154
|
}
|
|
128
155
|
async deleteMetaFileByPath(metafilePath) {
|
|
129
|
-
return
|
|
156
|
+
return promises_1.default.rm(metafilePath);
|
|
130
157
|
}
|
|
131
158
|
async deleteFromLocalStorage(identifier) {
|
|
132
|
-
return
|
|
159
|
+
return promises_1.default.rm(this.getBinaryPath(identifier));
|
|
160
|
+
}
|
|
161
|
+
async copyFileToLocalStorage(source, identifier) {
|
|
162
|
+
await promises_1.default.cp(source, this.getBinaryPath(identifier));
|
|
133
163
|
}
|
|
134
164
|
async saveToLocalStorage(data, identifier) {
|
|
135
|
-
await
|
|
165
|
+
await promises_1.default.writeFile(this.getBinaryPath(identifier), data);
|
|
136
166
|
}
|
|
137
167
|
async retrieveFromLocalStorage(identifier) {
|
|
138
|
-
const filePath =
|
|
168
|
+
const filePath = this.getBinaryPath(identifier);
|
|
139
169
|
try {
|
|
140
|
-
return await
|
|
170
|
+
return await promises_1.default.readFile(filePath);
|
|
141
171
|
}
|
|
142
172
|
catch (e) {
|
|
143
173
|
throw new Error(`Error finding file: ${filePath}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileSystem.js","sourceRoot":"","sources":["../../src/BinaryDataManager/FileSystem.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"FileSystem.js","sourceRoot":"","sources":["../../src/BinaryDataManager/FileSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { IBinaryData, INodeExecutionData } from 'n8n-workflow';
|
|
3
|
-
import { IBinaryDataConfig } from '../Interfaces';
|
|
2
|
+
import type { IBinaryData, INodeExecutionData } from 'n8n-workflow';
|
|
3
|
+
import type { BinaryMetadata, IBinaryDataConfig } from '../Interfaces';
|
|
4
4
|
export declare class BinaryDataManager {
|
|
5
5
|
static instance: BinaryDataManager | undefined;
|
|
6
6
|
private managers;
|
|
@@ -9,10 +9,14 @@ export declare class BinaryDataManager {
|
|
|
9
9
|
constructor(config: IBinaryDataConfig);
|
|
10
10
|
static init(config: IBinaryDataConfig, mainManager?: boolean): Promise<void>;
|
|
11
11
|
static getInstance(): BinaryDataManager;
|
|
12
|
+
copyBinaryFile(binaryData: IBinaryData, filePath: string, executionId: string): Promise<IBinaryData>;
|
|
12
13
|
storeBinaryData(binaryData: IBinaryData, binaryBuffer: Buffer, executionId: string): Promise<IBinaryData>;
|
|
13
14
|
retrieveBinaryData(binaryData: IBinaryData): Promise<Buffer>;
|
|
14
15
|
retrieveBinaryDataByIdentifier(identifier: string): Promise<Buffer>;
|
|
16
|
+
getBinaryPath(identifier: string): string;
|
|
17
|
+
getBinaryMetadata(identifier: string): Promise<BinaryMetadata>;
|
|
15
18
|
markDataForDeletionByExecutionId(executionId: string): Promise<void>;
|
|
19
|
+
markDataForDeletionByExecutionIds(executionIds: string[]): Promise<void>;
|
|
16
20
|
persistBinaryDataForExecutionId(executionId: string): Promise<void>;
|
|
17
21
|
deleteBinaryDataByExecutionId(executionId: string): Promise<void>;
|
|
18
22
|
duplicateBinaryData(inputData: Array<INodeExecutionData[] | null> | unknown, executionId: string): Promise<INodeExecutionData[][]>;
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.BinaryDataManager = void 0;
|
|
7
|
+
const pretty_bytes_1 = __importDefault(require("pretty-bytes"));
|
|
4
8
|
const Constants_1 = require("../Constants");
|
|
5
9
|
const FileSystem_1 = require("./FileSystem");
|
|
10
|
+
const promises_1 = require("fs/promises");
|
|
6
11
|
class BinaryDataManager {
|
|
7
12
|
constructor(config) {
|
|
8
13
|
this.binaryDataMode = config.mode;
|
|
@@ -26,18 +31,38 @@ class BinaryDataManager {
|
|
|
26
31
|
}
|
|
27
32
|
return BinaryDataManager.instance;
|
|
28
33
|
}
|
|
29
|
-
async
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
async copyBinaryFile(binaryData, filePath, executionId) {
|
|
35
|
+
const manager = this.managers[this.binaryDataMode];
|
|
36
|
+
if (manager) {
|
|
37
|
+
const identifier = await manager.copyBinaryFile(filePath, executionId);
|
|
38
|
+
binaryData.id = this.generateBinaryId(identifier);
|
|
39
|
+
binaryData.data = this.binaryDataMode;
|
|
40
|
+
const fileSize = await manager.getFileSize(identifier);
|
|
41
|
+
binaryData.fileSize = (0, pretty_bytes_1.default)(fileSize);
|
|
42
|
+
await manager.storeBinaryMetadata(identifier, {
|
|
43
|
+
fileName: binaryData.fileName,
|
|
44
|
+
mimeType: binaryData.mimeType,
|
|
45
|
+
fileSize,
|
|
38
46
|
});
|
|
39
47
|
}
|
|
40
|
-
|
|
48
|
+
else {
|
|
49
|
+
const { size } = await (0, promises_1.stat)(filePath);
|
|
50
|
+
binaryData.fileSize = (0, pretty_bytes_1.default)(size);
|
|
51
|
+
binaryData.data = await (0, promises_1.readFile)(filePath, { encoding: Constants_1.BINARY_ENCODING });
|
|
52
|
+
}
|
|
53
|
+
return binaryData;
|
|
54
|
+
}
|
|
55
|
+
async storeBinaryData(binaryData, binaryBuffer, executionId) {
|
|
56
|
+
binaryData.fileSize = (0, pretty_bytes_1.default)(binaryBuffer.length);
|
|
57
|
+
const manager = this.managers[this.binaryDataMode];
|
|
58
|
+
if (manager) {
|
|
59
|
+
const identifier = await manager.storeBinaryData(binaryBuffer, executionId);
|
|
60
|
+
binaryData.id = this.generateBinaryId(identifier);
|
|
61
|
+
binaryData.data = this.binaryDataMode;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
binaryData.data = binaryBuffer.toString(Constants_1.BINARY_ENCODING);
|
|
65
|
+
}
|
|
41
66
|
return binaryData;
|
|
42
67
|
}
|
|
43
68
|
async retrieveBinaryData(binaryData) {
|
|
@@ -53,12 +78,32 @@ class BinaryDataManager {
|
|
|
53
78
|
}
|
|
54
79
|
throw new Error('Storage mode used to store binary data not available');
|
|
55
80
|
}
|
|
81
|
+
getBinaryPath(identifier) {
|
|
82
|
+
const { mode, id } = this.splitBinaryModeFileId(identifier);
|
|
83
|
+
if (this.managers[mode]) {
|
|
84
|
+
return this.managers[mode].getBinaryPath(id);
|
|
85
|
+
}
|
|
86
|
+
throw new Error('Storage mode used to store binary data not available');
|
|
87
|
+
}
|
|
88
|
+
async getBinaryMetadata(identifier) {
|
|
89
|
+
const { mode, id } = this.splitBinaryModeFileId(identifier);
|
|
90
|
+
if (this.managers[mode]) {
|
|
91
|
+
return this.managers[mode].getBinaryMetadata(id);
|
|
92
|
+
}
|
|
93
|
+
throw new Error('Storage mode used to store binary data not available');
|
|
94
|
+
}
|
|
56
95
|
async markDataForDeletionByExecutionId(executionId) {
|
|
57
96
|
if (this.managers[this.binaryDataMode]) {
|
|
58
97
|
return this.managers[this.binaryDataMode].markDataForDeletionByExecutionId(executionId);
|
|
59
98
|
}
|
|
60
99
|
return Promise.resolve();
|
|
61
100
|
}
|
|
101
|
+
async markDataForDeletionByExecutionIds(executionIds) {
|
|
102
|
+
if (this.managers[this.binaryDataMode]) {
|
|
103
|
+
return Promise.all(executionIds.map(async (id) => this.managers[this.binaryDataMode].markDataForDeletionByExecutionId(id))).then(() => { });
|
|
104
|
+
}
|
|
105
|
+
return Promise.resolve();
|
|
106
|
+
}
|
|
62
107
|
async persistBinaryDataForExecutionId(executionId) {
|
|
63
108
|
if (this.managers[this.binaryDataMode]) {
|
|
64
109
|
return this.managers[this.binaryDataMode].persistBinaryDataForExecutionId(executionId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/BinaryDataManager/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/BinaryDataManager/index.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAuC;AAEvC,4CAA+C;AAE/C,6CAAoD;AACpD,0CAA6C;AAE7C,MAAa,iBAAiB;IAW7B,YAAY,MAAyB;QACpC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAyB,EAAE,WAAW,GAAG,KAAK;QAC/D,IAAI,iBAAiB,CAAC,QAAQ,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC3D;QAED,iBAAiB,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE3D,IAAI,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACrE,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,iCAAoB,CAAC,MAAM,CAAC,CAAC;YAClF,MAAM,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACvE;QAED,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,WAAW;QACjB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACvD;QAED,OAAO,iBAAiB,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,cAAc,CACnB,UAAuB,EACvB,QAAgB,EAChB,WAAmB;QAGnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,OAAO,EAAE;YACZ,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAEvE,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAGlD,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;YAEtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACvD,UAAU,CAAC,QAAQ,GAAG,IAAA,sBAAW,EAAC,QAAQ,CAAC,CAAC;YAE5C,MAAM,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE;gBAC7C,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,QAAQ;aACR,CAAC,CAAC;SACH;aAAM;YACN,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,eAAI,EAAC,QAAQ,CAAC,CAAC;YACtC,UAAU,CAAC,QAAQ,GAAG,IAAA,sBAAW,EAAC,IAAI,CAAC,CAAC;YACxC,UAAU,CAAC,IAAI,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,2BAAe,EAAE,CAAC,CAAC;SAC1E;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,eAAe,CACpB,UAAuB,EACvB,YAAoB,EACpB,WAAmB;QAEnB,UAAU,CAAC,QAAQ,GAAG,IAAA,sBAAW,EAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAGvD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,OAAO,EAAE;YACZ,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAE5E,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAGlD,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;SACtC;aAAM;YAEN,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,2BAAe,CAAC,CAAC;SACzD;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,UAAuB;QAC/C,IAAI,UAAU,CAAC,EAAE,EAAE;YAClB,OAAO,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SAC1D;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,2BAAe,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,8BAA8B,CAAC,UAAkB;QACtD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;SAC9D;QAED,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACzE,CAAC;IAED,aAAa,CAAC,UAAkB;QAC/B,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;SAC7C;QAED,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,UAAkB;QACzC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;SACjD;QAED,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,gCAAgC,CAAC,WAAmB;QACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC;SACxF;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,iCAAiC,CAAC,YAAsB;QAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YACvC,OAAO,OAAO,CAAC,GAAG,CACjB,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,gCAAgC,CAAC,EAAE,CAAC,CACvE,CACD,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;SACjB;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,WAAmB;QACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,+BAA+B,CAAC,WAAW,CAAC,CAAC;SACvF;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,WAAmB;QACtD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;SACrF;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,mBAAmB,CACxB,SAAuD,EACvD,WAAmB;QAEnB,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YACpD,MAAM,eAAe,GAAI,SAAoC,CAAC,GAAG,CAChE,KAAK,EAAE,kBAAkB,EAAE,EAAE;gBAC5B,IAAI,kBAAkB,EAAE;oBACvB,OAAO,OAAO,CAAC,GAAG,CACjB,kBAAkB,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;wBACxC,IAAI,aAAa,CAAC,MAAM,EAAE;4BACzB,OAAO,IAAI,CAAC,6BAA6B,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;yBACtE;wBAED,OAAO,aAAa,CAAC;oBACtB,CAAC,CAAC,CACF,CAAC;iBACF;gBAED,OAAO,kBAAkB,CAAC;YAC3B,CAAC,CACD,CAAC;YAEF,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;SACpC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,SAAmC,CAAC,CAAC;IAC7D,CAAC;IAEO,gBAAgB,CAAC,QAAgB;QACxC,OAAO,GAAG,IAAI,CAAC,cAAc,IAAI,QAAQ,EAAE,CAAC;IAC7C,CAAC;IAEO,qBAAqB,CAAC,MAAc;QAC3C,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,6BAA6B,CAC1C,aAAiC,EACjC,WAAmB;QAEnB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzD,IAAI,aAAa,CAAC,MAAM,EAAE;YACzB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;gBAC3D,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;oBAC1B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;iBACjC;gBAED,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAClD,IAAI,CAAC,YAAY,EAAE;oBAClB,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;iBACjC;gBAED,OAAO,aAAa,aAAb,aAAa,uBAAb,aAAa,CACjB,+BAA+B,CAChC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,EAAE,EAC3C,WAAW,EAEX,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBACpB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;oBACtC,GAAG;iBACH,CAAC,CAAC,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC7B,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE;wBACvB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;qBACrC;oBAED,OAAO,GAAG,CAAC;gBACZ,CAAC,EAAE,aAAa,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;SACH;QAED,OAAO,aAAa,CAAC;IACtB,CAAC;CACD;AAvPD,8CAuPC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const loadClassInIsolation: <T>(filePath: string, className: string) => T;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadClassInIsolation = void 0;
|
|
4
|
+
const vm_1 = require("vm");
|
|
5
|
+
const context = (0, vm_1.createContext)({ require });
|
|
6
|
+
const loadClassInIsolation = (filePath, className) => {
|
|
7
|
+
if (process.platform === 'win32') {
|
|
8
|
+
filePath = filePath.replace(/\\/g, '/');
|
|
9
|
+
}
|
|
10
|
+
const script = new vm_1.Script(`new (require('${filePath}').${className})()`);
|
|
11
|
+
return script.runInContext(context);
|
|
12
|
+
};
|
|
13
|
+
exports.loadClassInIsolation = loadClassInIsolation;
|
|
14
|
+
//# sourceMappingURL=ClassLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassLoader.js","sourceRoot":"","sources":["../src/ClassLoader.ts"],"names":[],"mappings":";;;AAAA,2BAA2C;AAE3C,MAAM,OAAO,GAAG,IAAA,kBAAa,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AACpC,MAAM,oBAAoB,GAAG,CAAI,QAAgB,EAAE,SAAiB,EAAE,EAAE;IAC9E,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QACjC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KACxC;IACD,MAAM,MAAM,GAAG,IAAI,WAAM,CAAC,iBAAiB,QAAQ,MAAM,SAAS,KAAK,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAM,CAAC;AAC1C,CAAC,CAAC;AANW,QAAA,oBAAoB,wBAM/B"}
|
package/dist/Constants.d.ts
CHANGED
package/dist/Constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RESPONSE_ERROR_MESSAGES = exports.WAIT_TIME_UNLIMITED = exports.TUNNEL_SUBDOMAIN_ENV = exports.PLACEHOLDER_EMPTY_WORKFLOW_ID = exports.PLACEHOLDER_EMPTY_EXECUTION_ID = exports.USER_SETTINGS_SUBFOLDER = exports.USER_SETTINGS_FILE_NAME = exports.USER_FOLDER_ENV_OVERWRITE = exports.EXTENSIONS_SUBDIRECTORY = exports.ENCRYPTION_KEY_ENV_OVERWRITE = exports.DOWNLOADED_NODES_SUBDIRECTORY = exports.CUSTOM_EXTENSION_ENV = exports.BINARY_ENCODING = void 0;
|
|
3
|
+
exports.CUSTOM_NODES_CATEGORY = exports.RESPONSE_ERROR_MESSAGES = exports.WAIT_TIME_UNLIMITED = exports.TUNNEL_SUBDOMAIN_ENV = exports.PLACEHOLDER_EMPTY_WORKFLOW_ID = exports.PLACEHOLDER_EMPTY_EXECUTION_ID = exports.USER_SETTINGS_SUBFOLDER = exports.USER_SETTINGS_FILE_NAME = exports.USER_FOLDER_ENV_OVERWRITE = exports.EXTENSIONS_SUBDIRECTORY = exports.ENCRYPTION_KEY_ENV_OVERWRITE = exports.DOWNLOADED_NODES_SUBDIRECTORY = exports.CUSTOM_EXTENSION_ENV = exports.BINARY_ENCODING = void 0;
|
|
4
4
|
exports.BINARY_ENCODING = 'base64';
|
|
5
5
|
exports.CUSTOM_EXTENSION_ENV = 'N8N_CUSTOM_EXTENSIONS';
|
|
6
6
|
exports.DOWNLOADED_NODES_SUBDIRECTORY = 'nodes';
|
|
@@ -16,4 +16,5 @@ exports.WAIT_TIME_UNLIMITED = '3000-01-01T00:00:00.000Z';
|
|
|
16
16
|
exports.RESPONSE_ERROR_MESSAGES = {
|
|
17
17
|
NO_ENCRYPTION_KEY: 'Encryption key is missing or was not set',
|
|
18
18
|
};
|
|
19
|
+
exports.CUSTOM_NODES_CATEGORY = 'Custom Nodes';
|
|
19
20
|
//# sourceMappingURL=Constants.js.map
|
package/dist/Constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Constants.js","sourceRoot":"","sources":["../src/Constants.ts"],"names":[],"mappings":";;;AACa,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,oBAAoB,GAAG,uBAAuB,CAAC;AAC/C,QAAA,6BAA6B,GAAG,OAAO,CAAC;AACxC,QAAA,4BAA4B,GAAG,oBAAoB,CAAC;AACpD,QAAA,uBAAuB,GAAG,QAAQ,CAAC;AACnC,QAAA,yBAAyB,GAAG,iBAAiB,CAAC;AAC9C,QAAA,uBAAuB,GAAG,QAAQ,CAAC;AACnC,QAAA,uBAAuB,GAAG,MAAM,CAAC;AACjC,QAAA,8BAA8B,GAAG,aAAa,CAAC;AAC/C,QAAA,6BAA6B,GAAG,WAAW,CAAC;AAC5C,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,mBAAmB,GAAG,0BAA0B,CAAC;AAEjD,QAAA,uBAAuB,GAAG;IACtC,iBAAiB,EAAE,0CAA0C;CAC7D,CAAC"}
|
|
1
|
+
{"version":3,"file":"Constants.js","sourceRoot":"","sources":["../src/Constants.ts"],"names":[],"mappings":";;;AACa,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,oBAAoB,GAAG,uBAAuB,CAAC;AAC/C,QAAA,6BAA6B,GAAG,OAAO,CAAC;AACxC,QAAA,4BAA4B,GAAG,oBAAoB,CAAC;AACpD,QAAA,uBAAuB,GAAG,QAAQ,CAAC;AACnC,QAAA,yBAAyB,GAAG,iBAAiB,CAAC;AAC9C,QAAA,uBAAuB,GAAG,QAAQ,CAAC;AACnC,QAAA,uBAAuB,GAAG,MAAM,CAAC;AACjC,QAAA,8BAA8B,GAAG,aAAa,CAAC;AAC/C,QAAA,6BAA6B,GAAG,WAAW,CAAC;AAC5C,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,mBAAmB,GAAG,0BAA0B,CAAC;AAEjD,QAAA,uBAAuB,GAAG;IACtC,iBAAiB,EAAE,0CAA0C;CAC7D,CAAC;AAEW,QAAA,qBAAqB,GAAG,cAAc,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { KnownNodesAndCredentials } from 'n8n-workflow';
|
|
2
|
+
import type { ICredentialType, ICredentialTypeData, INodeTypeBaseDescription, INodeTypeData, INodeTypeNameVersion } from 'n8n-workflow';
|
|
3
|
+
import type { n8n } from './Interfaces';
|
|
4
|
+
export declare type Types = {
|
|
5
|
+
nodes: INodeTypeBaseDescription[];
|
|
6
|
+
credentials: ICredentialType[];
|
|
7
|
+
};
|
|
8
|
+
export declare abstract class DirectoryLoader {
|
|
9
|
+
protected readonly directory: string;
|
|
10
|
+
private readonly excludeNodes?;
|
|
11
|
+
private readonly includeNodes?;
|
|
12
|
+
readonly loadedNodes: INodeTypeNameVersion[];
|
|
13
|
+
readonly nodeTypes: INodeTypeData;
|
|
14
|
+
readonly credentialTypes: ICredentialTypeData;
|
|
15
|
+
readonly known: KnownNodesAndCredentials;
|
|
16
|
+
readonly types: Types;
|
|
17
|
+
constructor(directory: string, excludeNodes?: string | undefined, includeNodes?: string | undefined);
|
|
18
|
+
abstract loadAll(): Promise<void>;
|
|
19
|
+
protected resolvePath(file: string): string;
|
|
20
|
+
protected loadNodeFromFile(packageName: string, nodeName: string, filePath: string): void;
|
|
21
|
+
protected loadCredentialFromFile(credentialName: string, filePath: string): void;
|
|
22
|
+
private getCodex;
|
|
23
|
+
private addCodex;
|
|
24
|
+
private fixIconPath;
|
|
25
|
+
}
|
|
26
|
+
export declare class CustomDirectoryLoader extends DirectoryLoader {
|
|
27
|
+
loadAll(): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
export declare class PackageDirectoryLoader extends DirectoryLoader {
|
|
30
|
+
packageName: string;
|
|
31
|
+
packageJson: n8n.PackageJson;
|
|
32
|
+
readPackageJson(): Promise<void>;
|
|
33
|
+
loadAll(): Promise<void>;
|
|
34
|
+
protected readJSON<T>(file: string): Promise<T>;
|
|
35
|
+
}
|
|
36
|
+
export declare class LazyPackageDirectoryLoader extends PackageDirectoryLoader {
|
|
37
|
+
loadAll(): Promise<void>;
|
|
38
|
+
}
|