n8n-core 1.120.0 → 1.121.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/binary-data/binary-data.config.d.ts +4 -2
- package/dist/binary-data/binary-data.config.js +11 -2
- package/dist/binary-data/binary-data.config.js.map +1 -1
- package/dist/binary-data/binary-data.service.d.ts +8 -5
- package/dist/binary-data/binary-data.service.js +27 -16
- package/dist/binary-data/binary-data.service.js.map +1 -1
- package/dist/binary-data/file-system.manager.d.ts +10 -5
- package/dist/binary-data/file-system.manager.js +50 -15
- package/dist/binary-data/file-system.manager.js.map +1 -1
- package/dist/binary-data/index.d.ts +1 -1
- package/dist/binary-data/index.js +2 -1
- package/dist/binary-data/index.js.map +1 -1
- package/dist/binary-data/object-store.manager.d.ts +3 -3
- package/dist/binary-data/object-store.manager.js +15 -10
- package/dist/binary-data/object-store.manager.js.map +1 -1
- package/dist/binary-data/types.d.ts +13 -7
- package/dist/binary-data/utils.d.ts +4 -2
- package/dist/binary-data/utils.js +13 -7
- package/dist/binary-data/utils.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/errors/index.d.ts +0 -1
- package/dist/errors/index.js +1 -3
- package/dist/errors/index.js.map +1 -1
- package/dist/execution-engine/execution-context-hook-registry.service.d.ts +12 -0
- package/dist/execution-engine/execution-context-hook-registry.service.js +67 -0
- package/dist/execution-engine/execution-context-hook-registry.service.js.map +1 -0
- package/dist/execution-engine/index.d.ts +1 -0
- package/dist/execution-engine/index.js +1 -0
- package/dist/execution-engine/index.js.map +1 -1
- package/dist/execution-engine/node-execution-context/base-execute-context.js +2 -1
- package/dist/execution-engine/node-execution-context/base-execute-context.js.map +1 -1
- package/dist/execution-engine/node-execution-context/utils/binary-helper-functions.js +2 -2
- package/dist/execution-engine/node-execution-context/utils/binary-helper-functions.js.map +1 -1
- package/package.json +7 -7
- package/dist/errors/invalid-mode.error.d.ts +0 -4
- package/dist/errors/invalid-mode.error.js +0 -12
- package/dist/errors/invalid-mode.error.js.map +0 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { InstanceSettings } from '../instance-settings';
|
|
3
|
-
declare const
|
|
4
|
-
declare const
|
|
3
|
+
export declare const BINARY_DATA_MODES: readonly ["default", "filesystem", "s3", "database"];
|
|
4
|
+
declare const binaryDataModesSchema: z.ZodEnum<["default", "filesystem", "s3", "database"]>;
|
|
5
|
+
declare const availableModesSchema: z.ZodPipeline<z.ZodEffects<z.ZodString, string[], string>, z.ZodArray<z.ZodEnum<["default", "filesystem", "s3", "database"]>, "many">>;
|
|
5
6
|
export declare class BinaryDataConfig {
|
|
6
7
|
availableModes: z.infer<typeof availableModesSchema>;
|
|
7
8
|
mode: z.infer<typeof binaryDataModesSchema>;
|
|
8
9
|
localStoragePath: string;
|
|
9
10
|
signingSecret: string;
|
|
11
|
+
dbMaxFileSize: number;
|
|
10
12
|
constructor({ encryptionKey, n8nFolder }: InstanceSettings);
|
|
11
13
|
}
|
|
12
14
|
export {};
|
|
@@ -12,21 +12,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.BinaryDataConfig = void 0;
|
|
15
|
+
exports.BinaryDataConfig = exports.BINARY_DATA_MODES = void 0;
|
|
16
16
|
const config_1 = require("@n8n/config");
|
|
17
17
|
const node_crypto_1 = require("node:crypto");
|
|
18
18
|
const node_path_1 = __importDefault(require("node:path"));
|
|
19
19
|
const zod_1 = require("zod");
|
|
20
20
|
const instance_settings_1 = require("../instance-settings");
|
|
21
|
-
|
|
21
|
+
exports.BINARY_DATA_MODES = ['default', 'filesystem', 's3', 'database'];
|
|
22
|
+
const binaryDataModesSchema = zod_1.z.enum(exports.BINARY_DATA_MODES);
|
|
22
23
|
const availableModesSchema = zod_1.z
|
|
23
24
|
.string()
|
|
24
25
|
.transform((value) => value.split(','))
|
|
25
26
|
.pipe(binaryDataModesSchema.array());
|
|
27
|
+
const dbMaxFileSizeSchema = zod_1.z
|
|
28
|
+
.number()
|
|
29
|
+
.max(1024, 'Binary data max file size in `database` mode cannot exceed 1024 MiB');
|
|
26
30
|
let BinaryDataConfig = class BinaryDataConfig {
|
|
27
31
|
constructor({ encryptionKey, n8nFolder }) {
|
|
28
32
|
this.availableModes = ['filesystem'];
|
|
29
33
|
this.mode = 'default';
|
|
34
|
+
this.dbMaxFileSize = 512;
|
|
30
35
|
this.localStoragePath = node_path_1.default.join(n8nFolder, 'binaryData');
|
|
31
36
|
this.signingSecret = (0, node_crypto_1.createHash)('sha256')
|
|
32
37
|
.update(`url-signing:${encryptionKey}`)
|
|
@@ -50,6 +55,10 @@ __decorate([
|
|
|
50
55
|
(0, config_1.Env)('N8N_BINARY_DATA_SIGNING_SECRET'),
|
|
51
56
|
__metadata("design:type", String)
|
|
52
57
|
], BinaryDataConfig.prototype, "signingSecret", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, config_1.Env)('N8N_BINARY_DATA_DATABASE_MAX_FILE_SIZE', dbMaxFileSizeSchema),
|
|
60
|
+
__metadata("design:type", Number)
|
|
61
|
+
], BinaryDataConfig.prototype, "dbMaxFileSize", void 0);
|
|
53
62
|
exports.BinaryDataConfig = BinaryDataConfig = __decorate([
|
|
54
63
|
config_1.Config,
|
|
55
64
|
__metadata("design:paramtypes", [instance_settings_1.InstanceSettings])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-data.config.js","sourceRoot":"","sources":["../../src/binary-data/binary-data.config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,wCAA0C;AAC1C,6CAAyC;AACzC,0DAA6B;AAC7B,6BAAwB;AAExB,2DAAuD;
|
|
1
|
+
{"version":3,"file":"binary-data.config.js","sourceRoot":"","sources":["../../src/binary-data/binary-data.config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,wCAA0C;AAC1C,6CAAyC;AACzC,0DAA6B;AAC7B,6BAAwB;AAExB,2DAAuD;AAE1C,QAAA,iBAAiB,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,CAAU,CAAC;AAEtF,MAAM,qBAAqB,GAAG,OAAC,CAAC,IAAI,CAAC,yBAAiB,CAAC,CAAC;AAExD,MAAM,oBAAoB,GAAG,OAAC;KAC5B,MAAM,EAAE;KACR,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACtC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC;AAEtC,MAAM,mBAAmB,GAAG,OAAC;KAC3B,MAAM,EAAE;KACR,GAAG,CAAC,IAAI,EAAE,qEAAqE,CAAC,CAAC;AAG5E,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAwB5B,YAAY,EAAE,aAAa,EAAE,SAAS,EAAoB;QArB1D,mBAAc,GAAyC,CAAC,YAAY,CAAC,CAAC;QAItE,SAAI,GAA0C,SAAS,CAAC;QAexD,kBAAa,GAAW,GAAG,CAAC;QAG3B,IAAI,CAAC,gBAAgB,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC;aACvC,MAAM,CAAC,eAAe,aAAa,EAAE,CAAC;aACtC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;CACD,CAAA;AA9BY,4CAAgB;AAG5B;IADC,IAAA,YAAG,EAAC,iCAAiC,EAAE,oBAAoB,CAAC;;wDACS;AAItE;IADC,IAAA,YAAG,EAAC,8BAA8B,EAAE,qBAAqB,CAAC;;8CACH;AAIxD;IADC,IAAA,YAAG,EAAC,8BAA8B,CAAC;;0DACX;AAOzB;IADC,IAAA,YAAG,EAAC,gCAAgC,CAAC;;uDAChB;AAItB;IADC,IAAA,YAAG,EAAC,wCAAwC,EAAE,mBAAmB,CAAC;;uDACvC;2BAtBhB,gBAAgB;IAD5B,eAAM;qCAyBoC,oCAAgB;GAxB9C,gBAAgB,CA8B5B"}
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import type { StringValue as TimeUnitValue } from 'ms';
|
|
2
2
|
import type { INodeExecutionData, IBinaryData } from 'n8n-workflow';
|
|
3
3
|
import type { Readable } from 'stream';
|
|
4
|
+
import { ErrorReporter } from '../errors';
|
|
4
5
|
import { BinaryDataConfig } from './binary-data.config';
|
|
5
6
|
import type { BinaryData } from './types';
|
|
6
7
|
export declare class BinaryDataService {
|
|
7
8
|
private readonly config;
|
|
9
|
+
private readonly errorReporter;
|
|
8
10
|
private mode;
|
|
9
11
|
private managers;
|
|
10
|
-
constructor(config: BinaryDataConfig);
|
|
12
|
+
constructor(config: BinaryDataConfig, errorReporter: ErrorReporter);
|
|
11
13
|
init(): Promise<void>;
|
|
12
14
|
createSignedToken(binaryData: IBinaryData, expiresIn?: TimeUnitValue): string;
|
|
13
15
|
validateSignedToken(token: string): string;
|
|
14
|
-
copyBinaryFile(
|
|
15
|
-
store(
|
|
16
|
+
copyBinaryFile(location: BinaryData.FileLocation, binaryData: IBinaryData, filePath: string): Promise<IBinaryData>;
|
|
17
|
+
store(location: BinaryData.FileLocation, bufferOrStream: Buffer | Readable, binaryData: IBinaryData): Promise<IBinaryData>;
|
|
16
18
|
getAsStream(binaryDataId: string, chunkSize?: number): Promise<Readable>;
|
|
17
19
|
getAsBuffer(binaryData: IBinaryData): Promise<Buffer<ArrayBufferLike>>;
|
|
18
20
|
getPath(binaryDataId: string): string;
|
|
19
21
|
getMetadata(binaryDataId: string): Promise<BinaryData.Metadata>;
|
|
20
|
-
deleteMany(
|
|
21
|
-
|
|
22
|
+
deleteMany(locations: BinaryData.FileLocation[]): Promise<void>;
|
|
23
|
+
deleteManyByBinaryDataId(ids: string[]): Promise<void>;
|
|
24
|
+
duplicateBinaryData(location: BinaryData.FileLocation, inputData: Array<INodeExecutionData[] | null>): Promise<INodeExecutionData[][]>;
|
|
22
25
|
rename(oldFileId: string, newFileId: string): Promise<void>;
|
|
23
26
|
private createBinaryDataId;
|
|
24
27
|
private duplicateBinaryDataInExecData;
|
|
@@ -51,24 +51,26 @@ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
|
51
51
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
52
52
|
const promises_1 = require("node:fs/promises");
|
|
53
53
|
const pretty_bytes_1 = __importDefault(require("pretty-bytes"));
|
|
54
|
+
const errors_1 = require("../errors");
|
|
54
55
|
const binary_data_config_1 = require("./binary-data.config");
|
|
55
56
|
const utils_1 = require("./utils");
|
|
56
57
|
const invalid_manager_error_1 = require("../errors/invalid-manager.error");
|
|
57
|
-
const invalid_mode_error_1 = require("../errors/invalid-mode.error");
|
|
58
58
|
let BinaryDataService = class BinaryDataService {
|
|
59
|
-
constructor(config) {
|
|
59
|
+
constructor(config, errorReporter) {
|
|
60
60
|
this.config = config;
|
|
61
|
+
this.errorReporter = errorReporter;
|
|
61
62
|
this.mode = 'default';
|
|
62
63
|
this.managers = {};
|
|
63
64
|
}
|
|
64
65
|
async init() {
|
|
65
66
|
const { config } = this;
|
|
66
|
-
if (
|
|
67
|
-
throw new
|
|
67
|
+
if (config.mode === 'database' || config.availableModes.includes('database')) {
|
|
68
|
+
throw new n8n_workflow_1.UserError('Database mode is not implemented yet');
|
|
69
|
+
}
|
|
68
70
|
this.mode = config.mode === 'filesystem' ? 'filesystem-v2' : config.mode;
|
|
69
71
|
if (config.availableModes.includes('filesystem')) {
|
|
70
72
|
const { FileSystemManager } = await Promise.resolve().then(() => __importStar(require('./file-system.manager')));
|
|
71
|
-
this.managers.filesystem = new FileSystemManager(config.localStoragePath);
|
|
73
|
+
this.managers.filesystem = new FileSystemManager(config.localStoragePath, this.errorReporter);
|
|
72
74
|
this.managers['filesystem-v2'] = this.managers.filesystem;
|
|
73
75
|
await this.managers.filesystem.init();
|
|
74
76
|
}
|
|
@@ -94,7 +96,7 @@ let BinaryDataService = class BinaryDataService {
|
|
|
94
96
|
const signedPayload = jsonwebtoken_1.default.verify(token, signingSecret);
|
|
95
97
|
return signedPayload.id;
|
|
96
98
|
}
|
|
97
|
-
async copyBinaryFile(
|
|
99
|
+
async copyBinaryFile(location, binaryData, filePath) {
|
|
98
100
|
const manager = this.managers[this.mode];
|
|
99
101
|
if (!manager) {
|
|
100
102
|
const { size } = await (0, promises_1.stat)(filePath);
|
|
@@ -106,13 +108,13 @@ let BinaryDataService = class BinaryDataService {
|
|
|
106
108
|
fileName: binaryData.fileName,
|
|
107
109
|
mimeType: binaryData.mimeType,
|
|
108
110
|
};
|
|
109
|
-
const { fileId, fileSize } = await manager.copyByFilePath(
|
|
111
|
+
const { fileId, fileSize } = await manager.copyByFilePath(location, filePath, metadata);
|
|
110
112
|
binaryData.id = this.createBinaryDataId(fileId);
|
|
111
113
|
binaryData.fileSize = (0, pretty_bytes_1.default)(fileSize);
|
|
112
114
|
binaryData.data = this.mode;
|
|
113
115
|
return binaryData;
|
|
114
116
|
}
|
|
115
|
-
async store(
|
|
117
|
+
async store(location, bufferOrStream, binaryData) {
|
|
116
118
|
const manager = this.managers[this.mode];
|
|
117
119
|
if (!manager) {
|
|
118
120
|
const buffer = await (0, utils_1.binaryToBuffer)(bufferOrStream);
|
|
@@ -124,7 +126,7 @@ let BinaryDataService = class BinaryDataService {
|
|
|
124
126
|
fileName: binaryData.fileName,
|
|
125
127
|
mimeType: binaryData.mimeType,
|
|
126
128
|
};
|
|
127
|
-
const { fileId, fileSize } = await manager.store(
|
|
129
|
+
const { fileId, fileSize } = await manager.store(location, bufferOrStream, metadata);
|
|
128
130
|
binaryData.id = this.createBinaryDataId(fileId);
|
|
129
131
|
binaryData.fileSize = (0, pretty_bytes_1.default)(fileSize);
|
|
130
132
|
binaryData.data = this.mode;
|
|
@@ -149,20 +151,28 @@ let BinaryDataService = class BinaryDataService {
|
|
|
149
151
|
const [mode, fileId] = binaryDataId.split(':');
|
|
150
152
|
return await this.getManager(mode).getMetadata(fileId);
|
|
151
153
|
}
|
|
152
|
-
async deleteMany(
|
|
154
|
+
async deleteMany(locations) {
|
|
153
155
|
const manager = this.managers[this.mode];
|
|
154
156
|
if (!manager)
|
|
155
157
|
return;
|
|
156
158
|
if (manager.deleteMany)
|
|
157
|
-
await manager.deleteMany(
|
|
159
|
+
await manager.deleteMany(locations);
|
|
160
|
+
}
|
|
161
|
+
async deleteManyByBinaryDataId(ids) {
|
|
162
|
+
const manager = this.managers[this.mode];
|
|
163
|
+
const fileIds = ids.flatMap((attachmentId) => {
|
|
164
|
+
const [, fileId] = attachmentId.split(':');
|
|
165
|
+
return fileId ? [fileId] : [];
|
|
166
|
+
});
|
|
167
|
+
await manager.deleteManyByFileId?.(fileIds);
|
|
158
168
|
}
|
|
159
|
-
async duplicateBinaryData(
|
|
169
|
+
async duplicateBinaryData(location, inputData) {
|
|
160
170
|
if (inputData && this.managers[this.mode]) {
|
|
161
171
|
const returnInputData = inputData.map(async (executionDataArray) => {
|
|
162
172
|
if (executionDataArray) {
|
|
163
173
|
return await Promise.all(executionDataArray.map(async (executionData) => {
|
|
164
174
|
if (executionData.binary) {
|
|
165
|
-
return await this.duplicateBinaryDataInExecData(
|
|
175
|
+
return await this.duplicateBinaryDataInExecData(location, executionData);
|
|
166
176
|
}
|
|
167
177
|
return executionData;
|
|
168
178
|
}));
|
|
@@ -182,7 +192,7 @@ let BinaryDataService = class BinaryDataService {
|
|
|
182
192
|
createBinaryDataId(fileId) {
|
|
183
193
|
return `${this.mode}:${fileId}`;
|
|
184
194
|
}
|
|
185
|
-
async duplicateBinaryDataInExecData(
|
|
195
|
+
async duplicateBinaryDataInExecData(location, executionData) {
|
|
186
196
|
const manager = this.managers[this.mode];
|
|
187
197
|
if (executionData.binary) {
|
|
188
198
|
const binaryDataKeys = Object.keys(executionData.binary);
|
|
@@ -195,7 +205,7 @@ let BinaryDataService = class BinaryDataService {
|
|
|
195
205
|
return { key, newId: undefined };
|
|
196
206
|
}
|
|
197
207
|
const [_mode, fileId] = binaryDataId.split(':');
|
|
198
|
-
return await manager?.copyByFileId(
|
|
208
|
+
return await manager?.copyByFileId(location, fileId).then((newFileId) => ({
|
|
199
209
|
newId: this.createBinaryDataId(newFileId),
|
|
200
210
|
key,
|
|
201
211
|
}));
|
|
@@ -221,6 +231,7 @@ let BinaryDataService = class BinaryDataService {
|
|
|
221
231
|
exports.BinaryDataService = BinaryDataService;
|
|
222
232
|
exports.BinaryDataService = BinaryDataService = __decorate([
|
|
223
233
|
(0, di_1.Service)(),
|
|
224
|
-
__metadata("design:paramtypes", [binary_data_config_1.BinaryDataConfig
|
|
234
|
+
__metadata("design:paramtypes", [binary_data_config_1.BinaryDataConfig,
|
|
235
|
+
errors_1.ErrorReporter])
|
|
225
236
|
], BinaryDataService);
|
|
226
237
|
//# sourceMappingURL=binary-data.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-data.service.js","sourceRoot":"","sources":["../../src/binary-data/binary-data.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gCAA6C;AAC7C,gEAA+B;AAE/B,+
|
|
1
|
+
{"version":3,"file":"binary-data.service.js","sourceRoot":"","sources":["../../src/binary-data/binary-data.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { Readable } from 'stream';
|
|
2
|
+
import type { ErrorReporter } from '../errors';
|
|
2
3
|
import type { BinaryData } from './types';
|
|
3
4
|
export declare class FileSystemManager implements BinaryData.Manager {
|
|
4
5
|
private storagePath;
|
|
5
|
-
|
|
6
|
+
private readonly errorReporter;
|
|
7
|
+
constructor(storagePath: string, errorReporter: ErrorReporter);
|
|
6
8
|
init(): Promise<void>;
|
|
7
|
-
store(
|
|
9
|
+
store(location: BinaryData.FileLocation, bufferOrStream: Buffer | Readable, { mimeType, fileName }: BinaryData.PreWriteMetadata): Promise<{
|
|
8
10
|
fileId: string;
|
|
9
11
|
fileSize: number;
|
|
10
12
|
}>;
|
|
@@ -12,14 +14,17 @@ export declare class FileSystemManager implements BinaryData.Manager {
|
|
|
12
14
|
getAsStream(fileId: string, chunkSize?: number): Promise<import("fs").ReadStream>;
|
|
13
15
|
getAsBuffer(fileId: string): Promise<Buffer<ArrayBufferLike>>;
|
|
14
16
|
getMetadata(fileId: string): Promise<BinaryData.Metadata>;
|
|
15
|
-
deleteMany(
|
|
16
|
-
copyByFilePath(
|
|
17
|
+
deleteMany(locations: BinaryData.FileLocation[]): Promise<void>;
|
|
18
|
+
copyByFilePath(targetLocation: BinaryData.FileLocation, sourcePath: string, { mimeType, fileName }: BinaryData.PreWriteMetadata): Promise<{
|
|
17
19
|
fileId: string;
|
|
18
20
|
fileSize: number;
|
|
19
21
|
}>;
|
|
20
|
-
copyByFileId(
|
|
22
|
+
copyByFileId(targetLocation: BinaryData.FileLocation, sourceFileId: string): Promise<string>;
|
|
21
23
|
rename(oldFileId: string, newFileId: string): Promise<void>;
|
|
24
|
+
deleteManyByFileId(ids: string[]): Promise<void>;
|
|
22
25
|
private toFileId;
|
|
26
|
+
private toRelativePath;
|
|
27
|
+
private parseFileId;
|
|
23
28
|
private resolvePath;
|
|
24
29
|
private storeMetadata;
|
|
25
30
|
private getSize;
|
|
@@ -13,15 +13,17 @@ const utils_1 = require("./utils");
|
|
|
13
13
|
const disallowed_filepath_error_1 = require("../errors/disallowed-filepath.error");
|
|
14
14
|
const file_not_found_error_1 = require("../errors/file-not-found.error");
|
|
15
15
|
const EXECUTION_ID_EXTRACTOR = /^(\w+)(?:[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12})$/;
|
|
16
|
+
const EXECUTION_PATH_MATCHER = /^workflows\/([^/]+)\/executions\/([^/]+)\//;
|
|
16
17
|
class FileSystemManager {
|
|
17
|
-
constructor(storagePath) {
|
|
18
|
+
constructor(storagePath, errorReporter) {
|
|
18
19
|
this.storagePath = storagePath;
|
|
20
|
+
this.errorReporter = errorReporter;
|
|
19
21
|
}
|
|
20
22
|
async init() {
|
|
21
23
|
await (0, utils_1.assertDir)(this.storagePath);
|
|
22
24
|
}
|
|
23
|
-
async store(
|
|
24
|
-
const fileId = this.toFileId(
|
|
25
|
+
async store(location, bufferOrStream, { mimeType, fileName }) {
|
|
26
|
+
const fileId = this.toFileId(location);
|
|
25
27
|
const filePath = this.resolvePath(fileId);
|
|
26
28
|
await (0, utils_1.assertDir)(node_path_1.default.dirname(filePath));
|
|
27
29
|
await promises_1.default.writeFile(filePath, bufferOrStream);
|
|
@@ -50,10 +52,10 @@ class FileSystemManager {
|
|
|
50
52
|
const filePath = this.resolvePath(`${fileId}.metadata`);
|
|
51
53
|
return await (0, n8n_workflow_1.jsonParse)(await promises_1.default.readFile(filePath, { encoding: 'utf-8' }));
|
|
52
54
|
}
|
|
53
|
-
async deleteMany(
|
|
54
|
-
if (
|
|
55
|
+
async deleteMany(locations) {
|
|
56
|
+
if (locations.length === 0)
|
|
55
57
|
return;
|
|
56
|
-
const executionIds =
|
|
58
|
+
const executionIds = locations.flatMap((location) => location.type === 'execution' ? [location.executionId] : []);
|
|
57
59
|
const set = new Set(executionIds);
|
|
58
60
|
const fileNames = await promises_1.default.readdir(this.storagePath);
|
|
59
61
|
for (const fileName of fileNames) {
|
|
@@ -63,13 +65,13 @@ class FileSystemManager {
|
|
|
63
65
|
await Promise.all([promises_1.default.rm(filePath), promises_1.default.rm(`${filePath}.metadata`)]);
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
|
-
const binaryDataDirs =
|
|
68
|
+
const binaryDataDirs = locations.map((location) => this.resolvePath(this.toRelativePath(location)));
|
|
67
69
|
await Promise.all(binaryDataDirs.map(async (dir) => {
|
|
68
70
|
await promises_1.default.rm(dir, { recursive: true, force: true });
|
|
69
71
|
}));
|
|
70
72
|
}
|
|
71
|
-
async copyByFilePath(
|
|
72
|
-
const targetFileId = this.toFileId(
|
|
73
|
+
async copyByFilePath(targetLocation, sourcePath, { mimeType, fileName }) {
|
|
74
|
+
const targetFileId = this.toFileId(targetLocation);
|
|
73
75
|
const targetPath = this.resolvePath(targetFileId);
|
|
74
76
|
await (0, utils_1.assertDir)(node_path_1.default.dirname(targetPath));
|
|
75
77
|
await promises_1.default.cp(sourcePath, targetPath);
|
|
@@ -77,8 +79,8 @@ class FileSystemManager {
|
|
|
77
79
|
await this.storeMetadata(targetFileId, { mimeType, fileName, fileSize });
|
|
78
80
|
return { fileId: targetFileId, fileSize };
|
|
79
81
|
}
|
|
80
|
-
async copyByFileId(
|
|
81
|
-
const targetFileId = this.toFileId(
|
|
82
|
+
async copyByFileId(targetLocation, sourceFileId) {
|
|
83
|
+
const targetFileId = this.toFileId(targetLocation);
|
|
82
84
|
const sourcePath = this.resolvePath(sourceFileId);
|
|
83
85
|
const targetPath = this.resolvePath(targetFileId);
|
|
84
86
|
const sourceMetadata = await this.getMetadata(sourceFileId);
|
|
@@ -99,10 +101,43 @@ class FileSystemManager {
|
|
|
99
101
|
const tempDir = node_path_1.default.join(tempDirParent, 'temp');
|
|
100
102
|
await promises_1.default.rm(tempDir, { recursive: true });
|
|
101
103
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
async deleteManyByFileId(ids) {
|
|
105
|
+
const parsedIds = ids.flatMap((id) => {
|
|
106
|
+
try {
|
|
107
|
+
const parsed = this.parseFileId(id);
|
|
108
|
+
return [parsed];
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
this.errorReporter.warn(`Could not parse file ID ${id}. Skip deletion`);
|
|
112
|
+
return [];
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
await this.deleteMany(parsedIds);
|
|
116
|
+
}
|
|
117
|
+
toFileId(location) {
|
|
118
|
+
return `${this.toRelativePath(location)}/binary_data/${(0, uuid_1.v4)()}`;
|
|
119
|
+
}
|
|
120
|
+
toRelativePath(location) {
|
|
121
|
+
switch (location.type) {
|
|
122
|
+
case 'execution': {
|
|
123
|
+
const executionId = location.executionId || 'temp';
|
|
124
|
+
return `workflows/${location.workflowId}/executions/${executionId}`;
|
|
125
|
+
}
|
|
126
|
+
case 'custom':
|
|
127
|
+
return location.pathSegments.join('/');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
parseFileId(fileId) {
|
|
131
|
+
const executionMatch = fileId.match(EXECUTION_PATH_MATCHER);
|
|
132
|
+
if (executionMatch) {
|
|
133
|
+
return utils_1.FileLocation.ofExecution(executionMatch[1], executionMatch[2]);
|
|
134
|
+
}
|
|
135
|
+
const binaryDataIndex = fileId.indexOf('/binary_data/');
|
|
136
|
+
if (binaryDataIndex !== -1) {
|
|
137
|
+
const pathSegments = fileId.substring(0, binaryDataIndex).split('/');
|
|
138
|
+
return utils_1.FileLocation.ofCustom(pathSegments);
|
|
139
|
+
}
|
|
140
|
+
throw new n8n_workflow_1.UnexpectedError(`File ID ${fileId} has invalid format.`);
|
|
106
141
|
}
|
|
107
142
|
resolvePath(...args) {
|
|
108
143
|
const returnPath = node_path_1.default.join(this.storagePath, ...args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system.manager.js","sourceRoot":"","sources":["../../src/binary-data/file-system.manager.ts"],"names":[],"mappings":";;;;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"file-system.manager.js","sourceRoot":"","sources":["../../src/binary-data/file-system.manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,4 @@ export * from './binary-data.service';
|
|
|
2
2
|
export { BinaryDataConfig } from './binary-data.config';
|
|
3
3
|
export type * from './types';
|
|
4
4
|
export { ObjectStoreService } from './object-store/object-store.service.ee';
|
|
5
|
-
export { isStoredMode as isValidNonDefaultMode } from './utils';
|
|
5
|
+
export { isStoredMode as isValidNonDefaultMode, FileLocation } from './utils';
|
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.isValidNonDefaultMode = exports.ObjectStoreService = exports.BinaryDataConfig = void 0;
|
|
17
|
+
exports.FileLocation = exports.isValidNonDefaultMode = exports.ObjectStoreService = exports.BinaryDataConfig = void 0;
|
|
18
18
|
__exportStar(require("./binary-data.service"), exports);
|
|
19
19
|
var binary_data_config_1 = require("./binary-data.config");
|
|
20
20
|
Object.defineProperty(exports, "BinaryDataConfig", { enumerable: true, get: function () { return binary_data_config_1.BinaryDataConfig; } });
|
|
@@ -22,4 +22,5 @@ var object_store_service_ee_1 = require("./object-store/object-store.service.ee"
|
|
|
22
22
|
Object.defineProperty(exports, "ObjectStoreService", { enumerable: true, get: function () { return object_store_service_ee_1.ObjectStoreService; } });
|
|
23
23
|
var utils_1 = require("./utils");
|
|
24
24
|
Object.defineProperty(exports, "isValidNonDefaultMode", { enumerable: true, get: function () { return utils_1.isStoredMode; } });
|
|
25
|
+
Object.defineProperty(exports, "FileLocation", { enumerable: true, get: function () { return utils_1.FileLocation; } });
|
|
25
26
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/binary-data/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AAEzB,kFAA4E;AAAnE,6HAAA,kBAAkB,OAAA;AAC3B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/binary-data/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AAEzB,kFAA4E;AAAnE,6HAAA,kBAAkB,OAAA;AAC3B,iCAA8E;AAArE,8GAAA,YAAY,OAAyB;AAAE,qGAAA,YAAY,OAAA"}
|
|
@@ -5,7 +5,7 @@ export declare class ObjectStoreManager implements BinaryData.Manager {
|
|
|
5
5
|
private readonly objectStoreService;
|
|
6
6
|
constructor(objectStoreService: ObjectStoreService);
|
|
7
7
|
init(): Promise<void>;
|
|
8
|
-
store(
|
|
8
|
+
store(location: BinaryData.FileLocation, bufferOrStream: Buffer | Readable, metadata: BinaryData.PreWriteMetadata): Promise<{
|
|
9
9
|
fileId: string;
|
|
10
10
|
fileSize: number;
|
|
11
11
|
}>;
|
|
@@ -13,8 +13,8 @@ export declare class ObjectStoreManager implements BinaryData.Manager {
|
|
|
13
13
|
getAsBuffer(fileId: string): Promise<Buffer<ArrayBufferLike>>;
|
|
14
14
|
getAsStream(fileId: string): Promise<Readable>;
|
|
15
15
|
getMetadata(fileId: string): Promise<BinaryData.Metadata>;
|
|
16
|
-
copyByFileId(
|
|
17
|
-
copyByFilePath(
|
|
16
|
+
copyByFileId(targetLocation: BinaryData.FileLocation, sourceFileId: string): Promise<string>;
|
|
17
|
+
copyByFilePath(targetLocation: BinaryData.FileLocation, sourcePath: string, metadata: BinaryData.PreWriteMetadata): Promise<{
|
|
18
18
|
fileId: string;
|
|
19
19
|
fileSize: number;
|
|
20
20
|
}>;
|
|
@@ -25,8 +25,8 @@ let ObjectStoreManager = class ObjectStoreManager {
|
|
|
25
25
|
async init() {
|
|
26
26
|
await this.objectStoreService.checkConnection();
|
|
27
27
|
}
|
|
28
|
-
async store(
|
|
29
|
-
const fileId = this.toFileId(
|
|
28
|
+
async store(location, bufferOrStream, metadata) {
|
|
29
|
+
const fileId = this.toFileId(location);
|
|
30
30
|
const buffer = await (0, utils_1.binaryToBuffer)(bufferOrStream);
|
|
31
31
|
await this.objectStoreService.put(fileId, buffer, metadata);
|
|
32
32
|
return { fileId, fileSize: buffer.length };
|
|
@@ -49,14 +49,14 @@ let ObjectStoreManager = class ObjectStoreManager {
|
|
|
49
49
|
metadata.fileName = fileName;
|
|
50
50
|
return metadata;
|
|
51
51
|
}
|
|
52
|
-
async copyByFileId(
|
|
53
|
-
const targetFileId = this.toFileId(
|
|
52
|
+
async copyByFileId(targetLocation, sourceFileId) {
|
|
53
|
+
const targetFileId = this.toFileId(targetLocation);
|
|
54
54
|
const sourceFile = await this.objectStoreService.get(sourceFileId, { mode: 'buffer' });
|
|
55
55
|
await this.objectStoreService.put(targetFileId, sourceFile);
|
|
56
56
|
return targetFileId;
|
|
57
57
|
}
|
|
58
|
-
async copyByFilePath(
|
|
59
|
-
const targetFileId = this.toFileId(
|
|
58
|
+
async copyByFilePath(targetLocation, sourcePath, metadata) {
|
|
59
|
+
const targetFileId = this.toFileId(targetLocation);
|
|
60
60
|
const sourceFile = await promises_1.default.readFile(sourcePath);
|
|
61
61
|
await this.objectStoreService.put(targetFileId, sourceFile, metadata);
|
|
62
62
|
return { fileId: targetFileId, fileSize: sourceFile.length };
|
|
@@ -67,10 +67,15 @@ let ObjectStoreManager = class ObjectStoreManager {
|
|
|
67
67
|
await this.objectStoreService.put(newFileId, oldFile, oldFileMetadata);
|
|
68
68
|
await this.objectStoreService.deleteOne(oldFileId);
|
|
69
69
|
}
|
|
70
|
-
toFileId(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
toFileId(location) {
|
|
71
|
+
switch (location.type) {
|
|
72
|
+
case 'execution': {
|
|
73
|
+
const executionId = location.executionId || 'temp';
|
|
74
|
+
return `workflows/${location.workflowId}/executions/${executionId}/binary_data/${(0, uuid_1.v4)()}`;
|
|
75
|
+
}
|
|
76
|
+
case 'custom':
|
|
77
|
+
return `${location.pathSegments.join('/')}/binary_data/${(0, uuid_1.v4)()}`;
|
|
78
|
+
}
|
|
74
79
|
}
|
|
75
80
|
};
|
|
76
81
|
exports.ObjectStoreManager = ObjectStoreManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-store.manager.js","sourceRoot":"","sources":["../../src/binary-data/object-store.manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gCAAkC;AAClC,gEAAkC;AAElC,+BAAkC;AAElC,oFAA4E;AAE5E,mCAAyC;AAGlC,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC9B,YAA6B,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;IAAG,CAAC;IAEvE,KAAK,CAAC,IAAI;QACT,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,KAAK,CACV,
|
|
1
|
+
{"version":3,"file":"object-store.manager.js","sourceRoot":"","sources":["../../src/binary-data/object-store.manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gCAAkC;AAClC,gEAAkC;AAElC,+BAAkC;AAElC,oFAA4E;AAE5E,mCAAyC;AAGlC,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC9B,YAA6B,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;IAAG,CAAC;IAEvE,KAAK,CAAC,IAAI;QACT,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,KAAK,CACV,QAAiC,EACjC,cAAiC,EACjC,QAAqC;QAErC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAc,EAAC,cAAc,CAAC,CAAC;QAEpD,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE5D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,MAAc;QACrB,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC/B,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC/B,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC/B,MAAM,EACL,gBAAgB,EAAE,aAAa,EAC/B,cAAc,EAAE,WAAW,EAC3B,qBAAqB,EAAE,QAAQ,GAC/B,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAwB,EAAE,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAE1E,IAAI,WAAW;YAAE,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC;QACjD,IAAI,QAAQ;YAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAE3C,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,cAAuC,EAAE,YAAoB;QAC/E,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAEnD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEvF,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAE5D,OAAO,YAAY,CAAC;IACrB,CAAC;IAKD,KAAK,CAAC,cAAc,CACnB,cAAuC,EACvC,UAAkB,EAClB,QAAqC;QAErC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEjD,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEtE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,SAAiB;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjF,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAE7E,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QACvE,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAMO,QAAQ,CAAC,QAAiC;QACjD,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,WAAW,CAAC,CAAC,CAAC;gBAClB,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC;gBACnD,OAAO,aAAa,QAAQ,CAAC,UAAU,eAAe,WAAW,gBAAgB,IAAA,SAAI,GAAE,EAAE,CAAC;YAC3F,CAAC;YACD,KAAK,QAAQ;gBACZ,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAA,SAAI,GAAE,EAAE,CAAC;QACpE,CAAC;IACF,CAAC;CACD,CAAA;AA/FY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,YAAO,GAAE;qCAEwC,4CAAkB;GADvD,kBAAkB,CA+F9B"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { Readable } from 'stream';
|
|
2
|
+
import type { BINARY_DATA_MODES } from './binary-data.config';
|
|
2
3
|
export declare namespace BinaryData {
|
|
3
4
|
type LegacyMode = 'filesystem';
|
|
4
5
|
type UpgradedMode = 'filesystem-v2';
|
|
5
|
-
export type ConfigMode =
|
|
6
|
+
export type ConfigMode = (typeof BINARY_DATA_MODES)[number];
|
|
6
7
|
export type ServiceMode = Exclude<ConfigMode, LegacyMode> | UpgradedMode;
|
|
7
8
|
export type StoredMode = Exclude<ConfigMode | UpgradedMode, 'default'>;
|
|
8
9
|
export type Metadata = {
|
|
@@ -15,20 +16,25 @@ export declare namespace BinaryData {
|
|
|
15
16
|
fileSize: number;
|
|
16
17
|
};
|
|
17
18
|
export type PreWriteMetadata = Omit<Metadata, 'fileSize'>;
|
|
18
|
-
export type
|
|
19
|
+
export type FileLocation = {
|
|
20
|
+
type: 'execution';
|
|
19
21
|
workflowId: string;
|
|
20
22
|
executionId: string;
|
|
21
|
-
}
|
|
23
|
+
} | {
|
|
24
|
+
type: 'custom';
|
|
25
|
+
pathSegments: string[];
|
|
26
|
+
};
|
|
22
27
|
export interface Manager {
|
|
23
28
|
init(): Promise<void>;
|
|
24
|
-
store(
|
|
29
|
+
store(location: FileLocation, bufferOrStream: Buffer | Readable, metadata: PreWriteMetadata): Promise<WriteResult>;
|
|
25
30
|
getPath(fileId: string): string;
|
|
26
31
|
getAsBuffer(fileId: string): Promise<Buffer>;
|
|
27
32
|
getAsStream(fileId: string, chunkSize?: number): Promise<Readable>;
|
|
28
33
|
getMetadata(fileId: string): Promise<Metadata>;
|
|
29
|
-
deleteMany?(
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
deleteMany?(locations: FileLocation[]): Promise<void>;
|
|
35
|
+
deleteManyByFileId?(ids: string[]): Promise<void>;
|
|
36
|
+
copyByFileId(targetLocation: FileLocation, sourceFileId: string): Promise<string>;
|
|
37
|
+
copyByFilePath(targetLocation: FileLocation, sourcePath: string, metadata: PreWriteMetadata): Promise<WriteResult>;
|
|
32
38
|
rename(oldFileId: string, newFileId: string): Promise<void>;
|
|
33
39
|
}
|
|
34
40
|
export type SigningPayload = {
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { Readable } from 'node:stream';
|
|
2
2
|
import type { BinaryData } from './types';
|
|
3
|
-
export declare const CONFIG_MODES: readonly ["default", "filesystem", "s3"];
|
|
4
|
-
export declare function areConfigModes(modes: string[]): modes is BinaryData.ConfigMode[];
|
|
5
3
|
export declare function isStoredMode(mode: string): mode is BinaryData.StoredMode;
|
|
6
4
|
export declare function assertDir(dir: string): Promise<void>;
|
|
7
5
|
export declare function doesNotExist(dir: string): Promise<boolean>;
|
|
8
6
|
export declare function streamToBuffer(stream: Readable): Promise<Buffer<ArrayBufferLike>>;
|
|
9
7
|
export declare function binaryToBuffer(body: Buffer | Readable): Promise<Buffer<ArrayBufferLike>>;
|
|
8
|
+
export declare const FileLocation: {
|
|
9
|
+
ofExecution: (workflowId: string, executionId: string) => BinaryData.FileLocation;
|
|
10
|
+
ofCustom: (pathSegments: string[]) => BinaryData.FileLocation;
|
|
11
|
+
};
|