n8n-core 2.28.2 → 2.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/binary-data/azure-blob/azure-blob.service.ee.d.ts +11 -2
  2. package/dist/binary-data/azure-blob/azure-blob.service.ee.js +60 -4
  3. package/dist/binary-data/azure-blob/azure-blob.service.ee.js.map +1 -1
  4. package/dist/binary-data/azure-blob.manager.d.ts +23 -0
  5. package/dist/binary-data/azure-blob.manager.js +81 -0
  6. package/dist/binary-data/azure-blob.manager.js.map +1 -0
  7. package/dist/binary-data/binary-data.config.d.ts +3 -3
  8. package/dist/binary-data/binary-data.config.js +1 -1
  9. package/dist/binary-data/binary-data.config.js.map +1 -1
  10. package/dist/binary-data/object-store.manager.js +3 -2
  11. package/dist/binary-data/object-store.manager.js.map +1 -1
  12. package/dist/binary-data/utils.js +1 -1
  13. package/dist/binary-data/utils.js.map +1 -1
  14. package/dist/build.tsbuildinfo +1 -1
  15. package/dist/errors/error-reporter.js +2 -2
  16. package/dist/errors/error-reporter.js.map +1 -1
  17. package/dist/execution-engine/active-workflow-triggers.d.ts +6 -4
  18. package/dist/execution-engine/active-workflow-triggers.js +83 -109
  19. package/dist/execution-engine/active-workflow-triggers.js.map +1 -1
  20. package/dist/execution-engine/index.d.ts +1 -0
  21. package/dist/execution-engine/index.js +3 -1
  22. package/dist/execution-engine/index.js.map +1 -1
  23. package/dist/execution-engine/node-execution-context/base-execute-context.js +19 -1
  24. package/dist/execution-engine/node-execution-context/base-execute-context.js.map +1 -1
  25. package/dist/execution-engine/node-execution-context/utils/binary-helper-functions.js +37 -3
  26. package/dist/execution-engine/node-execution-context/utils/binary-helper-functions.js.map +1 -1
  27. package/dist/execution-engine/node-execution-context/utils/get-additional-keys.js +3 -0
  28. package/dist/execution-engine/node-execution-context/utils/get-additional-keys.js.map +1 -1
  29. package/dist/execution-engine/node-execution-context/utils/request-helpers/oauth.js +85 -47
  30. package/dist/execution-engine/node-execution-context/utils/request-helpers/oauth.js.map +1 -1
  31. package/dist/execution-engine/node-execution-context/utils/scheduling-helper-functions.js +8 -1
  32. package/dist/execution-engine/node-execution-context/utils/scheduling-helper-functions.js.map +1 -1
  33. package/dist/execution-engine/partial-execution-utils/directed-graph.js +4 -4
  34. package/dist/execution-engine/partial-execution-utils/directed-graph.js.map +1 -1
  35. package/dist/execution-engine/poll-trigger-executor.d.ts +12 -0
  36. package/dist/execution-engine/poll-trigger-executor.js +88 -0
  37. package/dist/execution-engine/poll-trigger-executor.js.map +1 -0
  38. package/dist/execution-engine/scheduled-task-manager.d.ts +24 -20
  39. package/dist/execution-engine/scheduled-task-manager.js +111 -73
  40. package/dist/execution-engine/scheduled-task-manager.js.map +1 -1
  41. package/dist/execution-engine/workflow-active-triggers-state.d.ts +12 -3
  42. package/dist/execution-engine/workflow-active-triggers-state.js +42 -10
  43. package/dist/execution-engine/workflow-active-triggers-state.js.map +1 -1
  44. package/dist/execution-engine/workflow-execute.js +9 -4
  45. package/dist/execution-engine/workflow-execute.js.map +1 -1
  46. package/dist/nodes-loader/directory-loader.d.ts +3 -0
  47. package/dist/nodes-loader/directory-loader.js +57 -1
  48. package/dist/nodes-loader/directory-loader.js.map +1 -1
  49. package/dist/observability/tracing/sentry-tracing.d.ts +1 -1
  50. package/dist/observability/tracing/sentry-tracing.js +13 -1
  51. package/dist/observability/tracing/sentry-tracing.js.map +1 -1
  52. package/dist/observability/tracing/span-sampling.d.ts +1 -1
  53. package/dist/observability/tracing/span-sampling.js +2 -0
  54. package/dist/observability/tracing/span-sampling.js.map +1 -1
  55. package/package.json +24 -19
@@ -1,5 +1,7 @@
1
1
  import { Logger } from '@n8n/backend-common';
2
+ import { Readable } from 'node:stream';
2
3
  import { AzureBlobConfig } from './azure-blob.config';
4
+ import type { BinaryData } from '../types';
3
5
  export declare class AzureBlobService {
4
6
  private readonly logger;
5
7
  private readonly config;
@@ -9,8 +11,15 @@ export declare class AzureBlobService {
9
11
  private buildContainerClient;
10
12
  init(): Promise<void>;
11
13
  checkConnection(): Promise<void>;
12
- put(blobName: string, body: Buffer): Promise<void>;
13
- get(blobName: string): Promise<Buffer>;
14
+ put(blobName: string, body: Buffer, metadata?: BinaryData.PreWriteMetadata): Promise<void>;
15
+ get(blobName: string, opts: {
16
+ mode: 'buffer';
17
+ }): Promise<Buffer>;
18
+ get(blobName: string, opts: {
19
+ mode: 'stream';
20
+ chunkSize?: number;
21
+ }): Promise<Readable>;
22
+ getMetadata(blobName: string): Promise<BinaryData.Metadata>;
14
23
  delete(blobName: string): Promise<void>;
15
24
  private handleError;
16
25
  }
@@ -15,7 +15,9 @@ const storage_blob_1 = require("@azure/storage-blob");
15
15
  const backend_common_1 = require("@n8n/backend-common");
16
16
  const di_1 = require("@n8n/di");
17
17
  const n8n_workflow_1 = require("n8n-workflow");
18
+ const node_stream_1 = require("node:stream");
18
19
  const azure_blob_config_1 = require("./azure-blob.config");
20
+ const utils_1 = require("../utils");
19
21
  let AzureBlobService = class AzureBlobService {
20
22
  constructor(logger, config) {
21
23
  this.logger = logger;
@@ -59,19 +61,73 @@ let AzureBlobService = class AzureBlobService {
59
61
  this.handleError(e);
60
62
  }
61
63
  }
62
- async put(blobName, body) {
64
+ async put(blobName, body, metadata = {}) {
63
65
  try {
64
66
  await this.containerClient.getBlockBlobClient(blobName).uploadData(body, {
65
- blobHTTPHeaders: { blobContentType: 'application/json' },
67
+ blobHTTPHeaders: { blobContentType: metadata.mimeType ?? 'application/octet-stream' },
68
+ metadata: metadata.fileName
69
+ ? { filename: encodeURIComponent(metadata.fileName) }
70
+ : undefined,
66
71
  });
67
72
  }
68
73
  catch (e) {
69
74
  this.handleError(e);
70
75
  }
71
76
  }
72
- async get(blobName) {
77
+ async get(blobName, { mode, chunkSize = 0 }) {
78
+ const blockBlobClient = this.containerClient.getBlockBlobClient(blobName);
73
79
  try {
74
- return await this.containerClient.getBlockBlobClient(blobName).downloadToBuffer();
80
+ if (mode === 'stream') {
81
+ const abortController = new AbortController();
82
+ const response = await blockBlobClient.download(0, undefined, {
83
+ abortSignal: abortController.signal,
84
+ });
85
+ const body = response.readableStreamBody;
86
+ if (!body)
87
+ throw new n8n_workflow_1.UnexpectedError('Received empty response body');
88
+ if (!(body instanceof node_stream_1.Readable)) {
89
+ throw new n8n_workflow_1.UnexpectedError('Expected stream but received different type', {
90
+ extra: { bodyType: typeof body },
91
+ });
92
+ }
93
+ const wrapper = new node_stream_1.PassThrough();
94
+ let bodyFullyConsumed = false;
95
+ body.on('end', () => {
96
+ bodyFullyConsumed = true;
97
+ });
98
+ wrapper.on('close', () => {
99
+ if (!bodyFullyConsumed) {
100
+ abortController.abort();
101
+ body.destroy();
102
+ }
103
+ });
104
+ body.on('error', (error) => wrapper.destroy(error));
105
+ body.pipe(wrapper);
106
+ if (chunkSize > 0) {
107
+ const rechunker = (0, utils_1.createFixedSizeChunker)(chunkSize);
108
+ (0, node_stream_1.pipeline)(wrapper, rechunker, () => { });
109
+ return rechunker;
110
+ }
111
+ return wrapper;
112
+ }
113
+ return await blockBlobClient.downloadToBuffer();
114
+ }
115
+ catch (e) {
116
+ if (e instanceof n8n_workflow_1.UnexpectedError)
117
+ throw e;
118
+ this.handleError(e);
119
+ }
120
+ }
121
+ async getMetadata(blobName) {
122
+ try {
123
+ const props = await this.containerClient.getBlockBlobClient(blobName).getProperties();
124
+ const metadata = { fileSize: props.contentLength ?? 0 };
125
+ if (props.contentType)
126
+ metadata.mimeType = props.contentType;
127
+ const fileName = props.metadata?.filename;
128
+ if (fileName)
129
+ metadata.fileName = decodeURIComponent(fileName);
130
+ return metadata;
75
131
  }
76
132
  catch (e) {
77
133
  this.handleError(e);
@@ -1 +1 @@
1
- {"version":3,"file":"azure-blob.service.ee.js","sourceRoot":"","sources":["../../../src/binary-data/azure-blob/azure-blob.service.ee.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"azure-blob.service.ee.js","sourceRoot":"","sources":["../../../src/binary-data/azure-blob/azure-blob.service.ee.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Readable } from 'node:stream';
2
+ import { AzureBlobService } from './azure-blob/azure-blob.service.ee';
3
+ import type { BinaryData } from './types';
4
+ export declare class AzureBlobManager implements BinaryData.Manager {
5
+ private readonly azureBlobService;
6
+ constructor(azureBlobService: AzureBlobService);
7
+ init(): Promise<void>;
8
+ store(location: BinaryData.FileLocation, bufferOrStream: Buffer | Readable, metadata: BinaryData.PreWriteMetadata): Promise<{
9
+ fileId: string;
10
+ fileSize: number;
11
+ }>;
12
+ getPath(fileId: string): string;
13
+ getAsBuffer(fileId: string): Promise<Buffer<ArrayBufferLike>>;
14
+ getAsStream(fileId: string, chunkSize?: number): Promise<Readable>;
15
+ getMetadata(fileId: string): Promise<BinaryData.Metadata>;
16
+ copyByFileId(targetLocation: BinaryData.FileLocation, sourceFileId: string): Promise<string>;
17
+ copyByFilePath(targetLocation: BinaryData.FileLocation, sourcePath: string, metadata: BinaryData.PreWriteMetadata): Promise<{
18
+ fileId: string;
19
+ fileSize: number;
20
+ }>;
21
+ rename(oldFileId: string, newFileId: string): Promise<void>;
22
+ private toFileId;
23
+ }
@@ -0,0 +1,81 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AzureBlobManager = void 0;
16
+ const backend_network_1 = require("@n8n/backend-network");
17
+ const di_1 = require("@n8n/di");
18
+ const promises_1 = __importDefault(require("node:fs/promises"));
19
+ const uuid_1 = require("uuid");
20
+ const azure_blob_service_ee_1 = require("./azure-blob/azure-blob.service.ee");
21
+ let AzureBlobManager = class AzureBlobManager {
22
+ constructor(azureBlobService) {
23
+ this.azureBlobService = azureBlobService;
24
+ }
25
+ async init() {
26
+ await this.azureBlobService.checkConnection();
27
+ }
28
+ async store(location, bufferOrStream, metadata) {
29
+ const fileId = this.toFileId(location);
30
+ const buffer = await (0, backend_network_1.binaryToBuffer)(bufferOrStream);
31
+ await this.azureBlobService.put(fileId, buffer, metadata);
32
+ return { fileId, fileSize: buffer.length };
33
+ }
34
+ getPath(fileId) {
35
+ return fileId;
36
+ }
37
+ async getAsBuffer(fileId) {
38
+ return await this.azureBlobService.get(fileId, { mode: 'buffer' });
39
+ }
40
+ async getAsStream(fileId, chunkSize) {
41
+ return await this.azureBlobService.get(fileId, { mode: 'stream', chunkSize });
42
+ }
43
+ async getMetadata(fileId) {
44
+ return await this.azureBlobService.getMetadata(fileId);
45
+ }
46
+ async copyByFileId(targetLocation, sourceFileId) {
47
+ const targetFileId = this.toFileId(targetLocation);
48
+ const sourceFile = await this.azureBlobService.get(sourceFileId, { mode: 'buffer' });
49
+ const sourceMetadata = await this.azureBlobService.getMetadata(sourceFileId);
50
+ await this.azureBlobService.put(targetFileId, sourceFile, sourceMetadata);
51
+ return targetFileId;
52
+ }
53
+ async copyByFilePath(targetLocation, sourcePath, metadata) {
54
+ const targetFileId = this.toFileId(targetLocation);
55
+ const sourceFile = await promises_1.default.readFile(sourcePath);
56
+ await this.azureBlobService.put(targetFileId, sourceFile, metadata);
57
+ return { fileId: targetFileId, fileSize: sourceFile.length };
58
+ }
59
+ async rename(oldFileId, newFileId) {
60
+ const oldFile = await this.azureBlobService.get(oldFileId, { mode: 'buffer' });
61
+ const oldFileMetadata = await this.azureBlobService.getMetadata(oldFileId);
62
+ await this.azureBlobService.put(newFileId, oldFile, oldFileMetadata);
63
+ await this.azureBlobService.delete(oldFileId);
64
+ }
65
+ toFileId(location) {
66
+ switch (location.type) {
67
+ case 'execution': {
68
+ const executionId = location.executionId || 'temp';
69
+ return `workflows/${location.workflowId}/executions/${executionId}/binary_data/${(0, uuid_1.v4)()}`;
70
+ }
71
+ case 'custom':
72
+ return `${location.pathSegments.join('/')}/binary_data/${(0, uuid_1.v4)()}`;
73
+ }
74
+ }
75
+ };
76
+ exports.AzureBlobManager = AzureBlobManager;
77
+ exports.AzureBlobManager = AzureBlobManager = __decorate([
78
+ (0, di_1.Service)(),
79
+ __metadata("design:paramtypes", [azure_blob_service_ee_1.AzureBlobService])
80
+ ], AzureBlobManager);
81
+ //# sourceMappingURL=azure-blob.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-blob.manager.js","sourceRoot":"","sources":["../../src/binary-data/azure-blob.manager.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,9 @@ import { ExecutionsConfig } from '@n8n/config';
2
2
  import { z } from 'zod';
3
3
  import { InstanceSettings } from '../instance-settings';
4
4
  import { StorageConfig } from '../storage.config';
5
- export declare const BINARY_DATA_MODES: readonly ["default", "filesystem", "s3", "database"];
6
- declare const binaryDataModesSchema: z.ZodEnum<["default", "filesystem", "s3", "database"]>;
7
- declare const availableModesSchema: z.ZodPipeline<z.ZodEffects<z.ZodString, string[], string>, z.ZodArray<z.ZodEnum<["default", "filesystem", "s3", "database"]>, "many">>;
5
+ export declare const BINARY_DATA_MODES: readonly ["default", "filesystem", "s3", "azure", "database"];
6
+ declare const binaryDataModesSchema: z.ZodEnum<["default", "filesystem", "s3", "azure", "database"]>;
7
+ declare const availableModesSchema: z.ZodPipeline<z.ZodEffects<z.ZodString, string[], string>, z.ZodArray<z.ZodEnum<["default", "filesystem", "s3", "azure", "database"]>, "many">>;
8
8
  export declare class BinaryDataConfig {
9
9
  availableModes: z.infer<typeof availableModesSchema>;
10
10
  mode: z.infer<typeof binaryDataModesSchema>;
@@ -15,7 +15,7 @@ const node_crypto_1 = require("node:crypto");
15
15
  const zod_1 = require("zod");
16
16
  const instance_settings_1 = require("../instance-settings");
17
17
  const storage_config_1 = require("../storage.config");
18
- exports.BINARY_DATA_MODES = ['default', 'filesystem', 's3', 'database'];
18
+ exports.BINARY_DATA_MODES = ['default', 'filesystem', 's3', 'azure', 'database'];
19
19
  const binaryDataModesSchema = zod_1.z.enum(exports.BINARY_DATA_MODES);
20
20
  const availableModesSchema = zod_1.z
21
21
  .string()
@@ -1 +1 @@
1
- {"version":3,"file":"binary-data.config.js","sourceRoot":"","sources":["../../src/binary-data/binary-data.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA4D;AAC5D,6CAAyC;AACzC,6BAAwB;AAExB,2DAAuD;AACvD,qDAAiD;AAEpC,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,CAAC,MAAM;KAClC,MAAM,EAAE;KACR,GAAG,CAAC,IAAI,EAAE,qEAAqE,CAAC,CAAC;AAG5E,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAuB5B,YACC,EAAE,aAAa,EAAoB,EACnC,gBAAkC,EAClC,aAA4B;QAxB7B,mBAAc,GAAyC,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAmBxF,kBAAa,GAAW,GAAG,CAAC;QAgB3B,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,WAAW,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC;aACvC,MAAM,CAAC,eAAe,aAAa,EAAE,CAAC;aACtC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEnB,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;IAC7E,CAAC;IAOD,KAAK,CAAC,UAAU,CAAC,IAQhB;QACA,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC;YAChD,OAAO;QACR,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;QACpE,IAAI,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;YACpC,OAAO;QACR,CAAC;QACD,MAAM,IAAI,CAAC,cAAc,CAAC;YACzB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,IAAI,CAAC,aAAa;YACzB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;QAClE,IAAI,MAAM;YAAE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;IAC/C,CAAC;CACD,CAAA;AA5EY,4CAAgB;AAM5B;IADC,IAAA,YAAG,EAAC,8BAA8B,EAAE,qBAAqB,CAAC;;8CACd;AAI7C;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;2BArBhB,gBAAgB;IAD5B,eAAM;qCAyBc,oCAAgB;QACjB,yBAAgB;QACnB,8BAAa;GA1BjB,gBAAgB,CA4E5B"}
1
+ {"version":3,"file":"binary-data.config.js","sourceRoot":"","sources":["../../src/binary-data/binary-data.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA4D;AAC5D,6CAAyC;AACzC,6BAAwB;AAExB,2DAAuD;AACvD,qDAAiD;AAEpC,QAAA,iBAAiB,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAU,CAAC;AAE/F,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,CAAC,MAAM;KAClC,MAAM,EAAE;KACR,GAAG,CAAC,IAAI,EAAE,qEAAqE,CAAC,CAAC;AAG5E,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAuB5B,YACC,EAAE,aAAa,EAAoB,EACnC,gBAAkC,EAClC,aAA4B;QAxB7B,mBAAc,GAAyC,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAmBxF,kBAAa,GAAW,GAAG,CAAC;QAgB3B,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,WAAW,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC;aACvC,MAAM,CAAC,eAAe,aAAa,EAAE,CAAC;aACtC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEnB,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;IAC7E,CAAC;IAOD,KAAK,CAAC,UAAU,CAAC,IAQhB;QACA,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC;YAChD,OAAO;QACR,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;QACpE,IAAI,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;YACpC,OAAO;QACR,CAAC;QACD,MAAM,IAAI,CAAC,cAAc,CAAC;YACzB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,IAAI,CAAC,aAAa;YACzB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;QAClE,IAAI,MAAM;YAAE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;IAC/C,CAAC;CACD,CAAA;AA5EY,4CAAgB;AAM5B;IADC,IAAA,YAAG,EAAC,8BAA8B,EAAE,qBAAqB,CAAC;;8CACd;AAI7C;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;2BArBhB,gBAAgB;IAD5B,eAAM;qCAyBc,oCAAgB;QACjB,yBAAgB;QACnB,8BAAa;GA1BjB,gBAAgB,CA4E5B"}
@@ -52,7 +52,8 @@ let ObjectStoreManager = class ObjectStoreManager {
52
52
  async copyByFileId(targetLocation, sourceFileId) {
53
53
  const targetFileId = this.toFileId(targetLocation);
54
54
  const sourceFile = await this.objectStoreService.get(sourceFileId, { mode: 'buffer' });
55
- await this.objectStoreService.put(targetFileId, sourceFile);
55
+ const sourceMetadata = await this.getMetadata(sourceFileId);
56
+ await this.objectStoreService.put(targetFileId, sourceFile, sourceMetadata);
56
57
  return targetFileId;
57
58
  }
58
59
  async copyByFilePath(targetLocation, sourcePath, metadata) {
@@ -63,7 +64,7 @@ let ObjectStoreManager = class ObjectStoreManager {
63
64
  }
64
65
  async rename(oldFileId, newFileId) {
65
66
  const oldFile = await this.objectStoreService.get(oldFileId, { mode: 'buffer' });
66
- const oldFileMetadata = await this.objectStoreService.getMetadata(oldFileId);
67
+ const oldFileMetadata = await this.getMetadata(oldFileId);
67
68
  await this.objectStoreService.put(newFileId, oldFile, oldFileMetadata);
68
69
  await this.objectStoreService.deleteOne(oldFileId);
69
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"object-store.manager.js","sourceRoot":"","sources":["../../src/binary-data/object-store.manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object-store.manager.js","sourceRoot":"","sources":["../../src/binary-data/object-store.manager.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ const node_stream_1 = require("node:stream");
8
8
  var backend_common_1 = require("@n8n/backend-common");
9
9
  Object.defineProperty(exports, "assertDir", { enumerable: true, get: function () { return backend_common_1.assertDir; } });
10
10
  Object.defineProperty(exports, "exists", { enumerable: true, get: function () { return backend_common_1.exists; } });
11
- const STORED_MODES = ['filesystem', 'filesystem-v2', 's3', 'database'];
11
+ const STORED_MODES = ['filesystem', 'filesystem-v2', 's3', 'azure', 'database'];
12
12
  function isStoredMode(mode) {
13
13
  return STORED_MODES.includes(mode);
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/binary-data/utils.ts"],"names":[],"mappings":";;;AASA,oCAEC;AAcD,wDAiDC;AA1ED,+CAA+C;AAC/C,6CAAwC;AAIxC,sDAAwD;AAA/C,2GAAA,SAAS,OAAA;AAAE,wGAAA,MAAM,OAAA;AAE1B,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,CAAU,CAAC;AAEhF,SAAgB,YAAY,CAAC,IAAY;IACxC,OAAO,YAAY,CAAC,QAAQ,CAAC,IAA6B,CAAC,CAAC;AAC7D,CAAC;AAcD,SAAgB,sBAAsB,CAAC,SAAiB;IACvD,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,8BAAe,CAAC,sDAAsD,SAAS,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE;QACrC,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,OAAO,OAAO,GAAG,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC;YAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACxB,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC;gBACvB,KAAK,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBACjC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO,IAAI,IAAI,CAAC;YACjB,CAAC;QACF,CAAC;QACD,MAAM,IAAI,IAAI,CAAC;QACf,OAAO,GAAG,CAAC;IACZ,CAAC,CAAC;IAEF,OAAO,IAAI,uBAAS,CAAC;QACpB,SAAS,CAAC,KAAa,EAAE,SAAS,EAAE,IAAI;YACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;YACvB,OAAO,MAAM,IAAI,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,EAAE,CAAC;QACR,CAAC;QACD,KAAK,CAAC,IAAI;YACT,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,EAAE,CAAC;QACR,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,IAAI;YAClB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACjB,MAAM,GAAG,CAAC,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,CAAC;QACb,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAEY,QAAA,YAAY,GAAG;IAC3B,WAAW,EAAE,CAAC,UAAkB,EAAE,WAAmB,EAA2B,EAAE,CAAC,CAAC;QACnF,IAAI,EAAE,WAAW;QACjB,UAAU;QACV,WAAW;KACX,CAAC;IAMF,QAAQ,EAAE,CAAC,EACV,YAAY,EACZ,UAAU,EACV,QAAQ,GAKR,EAA2B,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,QAAQ;QACd,YAAY;QACZ,UAAU;QACV,QAAQ;KACR,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/binary-data/utils.ts"],"names":[],"mappings":"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"}