@qrvey/object-storage 2.0.3-beta → 2.0.4-1170
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/README.md +1 -1
- package/dist/cjs/index-v2.js +1699 -0
- package/dist/cjs/index-v2.js.map +1 -0
- package/dist/cjs/index.js +163 -1051
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/chunk-66BQA4WX.mjs +96 -0
- package/dist/esm/chunk-66BQA4WX.mjs.map +1 -0
- package/dist/esm/index-v2.d.mts +417 -0
- package/dist/esm/index-v2.mjs +1582 -0
- package/dist/esm/index-v2.mjs.map +1 -0
- package/dist/esm/index.d.mts +19 -45
- package/dist/esm/index.mjs +158 -1088
- package/dist/esm/index.mjs.map +1 -1
- package/dist/types/index-v2.d.ts +417 -0
- package/dist/types/index.d.ts +19 -45
- package/package.json +23 -11
package/dist/cjs/index.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var stream = require('stream');
|
|
4
4
|
var storageBlob = require('@azure/storage-blob');
|
|
5
5
|
var clientS3 = require('@aws-sdk/client-s3');
|
|
6
6
|
var credentialProviderNode = require('@aws-sdk/credential-provider-node');
|
|
7
7
|
var s3RequestPresigner = require('@aws-sdk/s3-request-presigner');
|
|
8
8
|
var libStorage = require('@aws-sdk/lib-storage');
|
|
9
|
-
var
|
|
10
|
-
var https = require('https');
|
|
11
|
-
var basicFtp = require('basic-ftp');
|
|
9
|
+
var nodeHttpHandler = require('@smithy/node-http-handler');
|
|
12
10
|
|
|
13
11
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
12
|
|
|
15
|
-
var
|
|
13
|
+
var stream__default = /*#__PURE__*/_interopDefault(stream);
|
|
16
14
|
|
|
17
15
|
var __defProp = Object.defineProperty;
|
|
18
16
|
var __defProps = Object.defineProperties;
|
|
@@ -38,13 +36,7 @@ var __spreadValues = (a, b) => {
|
|
|
38
36
|
return a;
|
|
39
37
|
};
|
|
40
38
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
41
|
-
var
|
|
42
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
43
|
-
}) : x)(function(x) {
|
|
44
|
-
if (typeof require !== "undefined")
|
|
45
|
-
return require.apply(this, arguments);
|
|
46
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
47
|
-
});
|
|
39
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
48
40
|
var __objRest = (source, exclude) => {
|
|
49
41
|
var target = {};
|
|
50
42
|
for (var prop in source)
|
|
@@ -57,6 +49,10 @@ var __objRest = (source, exclude) => {
|
|
|
57
49
|
}
|
|
58
50
|
return target;
|
|
59
51
|
};
|
|
52
|
+
var __publicField = (obj, key, value) => {
|
|
53
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
54
|
+
return value;
|
|
55
|
+
};
|
|
60
56
|
var __forAwait = (obj, it, method) => (it = obj[__knownSymbol("asyncIterator")]) ? it.call(obj) : (obj = obj[__knownSymbol("iterator")](), it = {}, method = (key, fn) => (fn = obj[key]) && (it[key] = (arg) => new Promise((yes, no, done) => (arg = fn.call(obj, arg), done = arg.done, Promise.resolve(arg.value).then((value) => yes({ value, done }), no)))), method("next"), method("return"), it);
|
|
61
57
|
|
|
62
58
|
// src/shared/utils/errorHandler.ts
|
|
@@ -84,7 +80,7 @@ var errorMessages = {
|
|
|
84
80
|
ObjectNotFound: "ObjectNotFound - The specified key does not exist. (404)",
|
|
85
81
|
DEFAULT: "An unknown error occurred"
|
|
86
82
|
};
|
|
87
|
-
var
|
|
83
|
+
var _ErrorHandler = class _ErrorHandler {
|
|
88
84
|
static handleError(errorCode, errorMessage, errorObj) {
|
|
89
85
|
const errorResponse = {
|
|
90
86
|
code: errorCode,
|
|
@@ -99,6 +95,8 @@ var ErrorHandler = class {
|
|
|
99
95
|
return errorResponse;
|
|
100
96
|
}
|
|
101
97
|
};
|
|
98
|
+
__name(_ErrorHandler, "ErrorHandler");
|
|
99
|
+
var ErrorHandler = _ErrorHandler;
|
|
102
100
|
|
|
103
101
|
// src/services/storage/blob/blobHelpers.ts
|
|
104
102
|
function BlobPropertiesResponseToObjectResponse(blobProperties) {
|
|
@@ -114,11 +112,12 @@ function BlobPropertiesResponseToObjectResponse(blobProperties) {
|
|
|
114
112
|
contentLanguage: blobProperties.contentLanguage
|
|
115
113
|
};
|
|
116
114
|
}
|
|
115
|
+
__name(BlobPropertiesResponseToObjectResponse, "BlobPropertiesResponseToObjectResponse");
|
|
117
116
|
|
|
118
117
|
// src/services/storage/blob/blocIdStorage.ts
|
|
119
|
-
var
|
|
118
|
+
var _BlockIdStorage = class _BlockIdStorage {
|
|
120
119
|
constructor() {
|
|
121
|
-
this
|
|
120
|
+
__publicField(this, "blockIdMap", {});
|
|
122
121
|
}
|
|
123
122
|
static getInstance() {
|
|
124
123
|
if (!_BlockIdStorage.instance) {
|
|
@@ -139,21 +138,30 @@ var BlockIdStorage = class _BlockIdStorage {
|
|
|
139
138
|
delete this.blockIdMap[blobName];
|
|
140
139
|
}
|
|
141
140
|
};
|
|
141
|
+
__name(_BlockIdStorage, "BlockIdStorage");
|
|
142
|
+
__publicField(_BlockIdStorage, "instance");
|
|
143
|
+
var BlockIdStorage = _BlockIdStorage;
|
|
142
144
|
|
|
143
145
|
// src/services/storage/blob/blobStorage.service.ts
|
|
144
|
-
var
|
|
146
|
+
var _BlobStorageService = class _BlobStorageService {
|
|
145
147
|
/**
|
|
146
148
|
* Retrieves the properties of a blob from the container by its name.
|
|
147
149
|
*
|
|
148
150
|
* @param {string} blobName - The name of the blob.
|
|
149
|
-
* @param {ObjectStorageOptions} options - The options for the object storage service.
|
|
150
151
|
* @return {Promise<GetObjectResponse>} A promise that resolves to the blob properties.
|
|
151
152
|
*/
|
|
152
|
-
constructor(containerName
|
|
153
|
+
constructor(containerName) {
|
|
154
|
+
__publicField(this, "blobServiceClient");
|
|
155
|
+
__publicField(this, "containerName");
|
|
153
156
|
this.containerName = containerName;
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
+
let connectionString;
|
|
158
|
+
if (process.env.DATA_LAKE_BUCKET && process.env.DATA_LAKE_BUCKET === this.containerName) {
|
|
159
|
+
connectionString = process.env.AZURE_DATALAKE_CONNECTION_STRING;
|
|
160
|
+
}
|
|
161
|
+
if (!connectionString) {
|
|
162
|
+
connectionString = process.env.AZURE_STORAGE_CONNECTION_STRING;
|
|
163
|
+
}
|
|
164
|
+
this.blobServiceClient = storageBlob.BlobServiceClient.fromConnectionString(connectionString);
|
|
157
165
|
}
|
|
158
166
|
/**
|
|
159
167
|
* Creates a writable stream for uploading a file to the Blob storage.
|
|
@@ -162,15 +170,16 @@ var BlobStorageService = class {
|
|
|
162
170
|
* @return {CreateUploadWriteStreamResponse} An object containing the key of the uploaded blob, the writable stream, and a promise that resolves when the upload is complete.
|
|
163
171
|
*/
|
|
164
172
|
createUploadWriteStream(blobName) {
|
|
165
|
-
const streamPassThrough = new
|
|
166
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
167
|
-
this.containerName
|
|
168
|
-
);
|
|
173
|
+
const streamPassThrough = new stream__default.default.PassThrough();
|
|
174
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
169
175
|
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
|
|
170
176
|
const uploadPromise = blockBlobClient.uploadStream(streamPassThrough, void 0, void 0, {
|
|
171
177
|
onProgress: (ev) => console.log(ev)
|
|
172
178
|
}).then(() => {
|
|
173
|
-
return {
|
|
179
|
+
return {
|
|
180
|
+
Bucket: this.containerName,
|
|
181
|
+
Key: blobName
|
|
182
|
+
};
|
|
174
183
|
});
|
|
175
184
|
return {
|
|
176
185
|
key: blobName,
|
|
@@ -186,9 +195,7 @@ var BlobStorageService = class {
|
|
|
186
195
|
*/
|
|
187
196
|
async getHeadObject(blobName) {
|
|
188
197
|
try {
|
|
189
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
190
|
-
this.containerName
|
|
191
|
-
);
|
|
198
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
192
199
|
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
|
|
193
200
|
const blobProperties = await blockBlobClient.getProperties();
|
|
194
201
|
return BlobPropertiesResponseToObjectResponse(blobProperties);
|
|
@@ -207,18 +214,13 @@ var BlobStorageService = class {
|
|
|
207
214
|
var _a;
|
|
208
215
|
try {
|
|
209
216
|
let downloadBlockBlobResponse;
|
|
210
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
211
|
-
this.containerName
|
|
212
|
-
);
|
|
217
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
213
218
|
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
|
|
214
219
|
const expression = (options == null ? void 0 : options.range) || "";
|
|
215
220
|
const matches = expression.match(/\d+/g);
|
|
216
221
|
if (expression && (matches == null ? void 0 : matches.length)) {
|
|
217
222
|
const [start, end] = matches.map(Number);
|
|
218
|
-
downloadBlockBlobResponse = await blockBlobClient.download(
|
|
219
|
-
start,
|
|
220
|
-
end
|
|
221
|
-
);
|
|
223
|
+
downloadBlockBlobResponse = await blockBlobClient.download(start, end);
|
|
222
224
|
} else {
|
|
223
225
|
downloadBlockBlobResponse = await blockBlobClient.download(0);
|
|
224
226
|
}
|
|
@@ -238,9 +240,7 @@ var BlobStorageService = class {
|
|
|
238
240
|
}
|
|
239
241
|
async getSignatureUrl(blobName, expiresInMinutes, permissions) {
|
|
240
242
|
try {
|
|
241
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
242
|
-
this.containerName
|
|
243
|
-
);
|
|
243
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
244
244
|
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
|
|
245
245
|
const startDate = /* @__PURE__ */ new Date();
|
|
246
246
|
const expiryDate = new Date(startDate);
|
|
@@ -256,12 +256,11 @@ var BlobStorageService = class {
|
|
|
256
256
|
}
|
|
257
257
|
async getUploadUrl(blobName, expiresInMinutes) {
|
|
258
258
|
try {
|
|
259
|
-
const sasUrl = await this.getSignatureUrl(
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
return { key: blobName, signedUrl: sasUrl };
|
|
259
|
+
const sasUrl = await this.getSignatureUrl(blobName, expiresInMinutes, "w");
|
|
260
|
+
return {
|
|
261
|
+
key: blobName,
|
|
262
|
+
signedUrl: sasUrl
|
|
263
|
+
};
|
|
265
264
|
} catch (error) {
|
|
266
265
|
throw ErrorHandler.handleError("DEFAULT", "", error);
|
|
267
266
|
}
|
|
@@ -275,11 +274,7 @@ var BlobStorageService = class {
|
|
|
275
274
|
*/
|
|
276
275
|
async getDownloadUrl(blobName, expiresInMinutes) {
|
|
277
276
|
try {
|
|
278
|
-
const sasUrl = await this.getSignatureUrl(
|
|
279
|
-
blobName,
|
|
280
|
-
expiresInMinutes,
|
|
281
|
-
"r"
|
|
282
|
-
);
|
|
277
|
+
const sasUrl = await this.getSignatureUrl(blobName, expiresInMinutes, "r");
|
|
283
278
|
return sasUrl;
|
|
284
279
|
} catch (error) {
|
|
285
280
|
throw ErrorHandler.handleError("DEFAULT", "", error);
|
|
@@ -295,17 +290,16 @@ var BlobStorageService = class {
|
|
|
295
290
|
*/
|
|
296
291
|
async upload(blobName, body, metadata = {}) {
|
|
297
292
|
try {
|
|
298
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
299
|
-
this.containerName
|
|
300
|
-
);
|
|
293
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
301
294
|
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
|
|
302
|
-
Buffer.isBuffer(body) ? await blockBlobClient.upload(body, body.length, {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
295
|
+
Buffer.isBuffer(body) ? await blockBlobClient.upload(body, body.length, {
|
|
296
|
+
metadata
|
|
297
|
+
}) : await blockBlobClient.uploadStream(body, void 0, void 0, {
|
|
298
|
+
metadata
|
|
299
|
+
});
|
|
300
|
+
return {
|
|
301
|
+
key: blobName
|
|
302
|
+
};
|
|
309
303
|
} catch (error) {
|
|
310
304
|
throw ErrorHandler.handleError("DEFAULT", "", error);
|
|
311
305
|
}
|
|
@@ -318,9 +312,7 @@ var BlobStorageService = class {
|
|
|
318
312
|
*/
|
|
319
313
|
async delete(data) {
|
|
320
314
|
try {
|
|
321
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
322
|
-
this.containerName
|
|
323
|
-
);
|
|
315
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
324
316
|
return this.deleteObject(containerClient, data);
|
|
325
317
|
} catch (error) {
|
|
326
318
|
throw ErrorHandler.handleError("DEFAULT", "", error);
|
|
@@ -362,16 +354,9 @@ var BlobStorageService = class {
|
|
|
362
354
|
let continuationToken = options.pagination;
|
|
363
355
|
const limit = (_a = options.limit) != null ? _a : 1e3;
|
|
364
356
|
let continueListing = true;
|
|
365
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
366
|
-
this.containerName
|
|
367
|
-
);
|
|
357
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
368
358
|
while (continueListing) {
|
|
369
|
-
const response = await this.listChunk(
|
|
370
|
-
options,
|
|
371
|
-
continuationToken,
|
|
372
|
-
limit - responseContents.length,
|
|
373
|
-
containerClient
|
|
374
|
-
);
|
|
359
|
+
const response = await this.listChunk(options, continuationToken, limit - responseContents.length, containerClient);
|
|
375
360
|
continuationToken = response.continuationToken;
|
|
376
361
|
responseContents = responseContents.concat(response.items);
|
|
377
362
|
if (responseContents.length >= limit || !continuationToken) {
|
|
@@ -420,10 +405,16 @@ var BlobStorageService = class {
|
|
|
420
405
|
pagination
|
|
421
406
|
}));
|
|
422
407
|
if ((_a = response.items) == null ? void 0 : _a.length)
|
|
423
|
-
allItems = [
|
|
408
|
+
allItems = [
|
|
409
|
+
...allItems,
|
|
410
|
+
...response.items
|
|
411
|
+
];
|
|
424
412
|
pagination = (_b = response.pagination) != null ? _b : void 0;
|
|
425
413
|
} while (pagination);
|
|
426
|
-
return {
|
|
414
|
+
return {
|
|
415
|
+
items: allItems,
|
|
416
|
+
count: allItems.length
|
|
417
|
+
};
|
|
427
418
|
}
|
|
428
419
|
/**
|
|
429
420
|
* Deletes a blob from the blob storage service.
|
|
@@ -447,14 +438,15 @@ var BlobStorageService = class {
|
|
|
447
438
|
* @return {Promise<{ key: string; deleted: boolean; error?: string }[]>} - A promise that resolves to an array of objects containing the key, deleted status, and an optional error message for each blob deleted.
|
|
448
439
|
*/
|
|
449
440
|
async deleteObjects(blobNames) {
|
|
450
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
451
|
-
this.containerName
|
|
452
|
-
);
|
|
441
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
453
442
|
const deleteBlobPromises = blobNames.map(async (blobName) => {
|
|
454
443
|
var _a;
|
|
455
444
|
try {
|
|
456
445
|
await this.deleteObject(containerClient, blobName);
|
|
457
|
-
return {
|
|
446
|
+
return {
|
|
447
|
+
key: blobName,
|
|
448
|
+
deleted: true
|
|
449
|
+
};
|
|
458
450
|
} catch (error) {
|
|
459
451
|
return {
|
|
460
452
|
key: blobName,
|
|
@@ -472,21 +464,15 @@ var BlobStorageService = class {
|
|
|
472
464
|
*/
|
|
473
465
|
async getHeadBucket() {
|
|
474
466
|
try {
|
|
475
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
476
|
-
this.containerName
|
|
477
|
-
);
|
|
467
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
478
468
|
const properties = await containerClient.getProperties();
|
|
479
469
|
return properties;
|
|
480
470
|
} catch (error) {
|
|
481
|
-
throw new Error(
|
|
482
|
-
"Error in Azure getHeadContainer. Container: " + this.containerName + " Error: " + error
|
|
483
|
-
);
|
|
471
|
+
throw new Error("Error in Azure getHeadContainer. Container: " + this.containerName + " Error: " + error);
|
|
484
472
|
}
|
|
485
473
|
}
|
|
486
474
|
async listMultipartUploadsForBucket() {
|
|
487
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
488
|
-
this.containerName
|
|
489
|
-
);
|
|
475
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
490
476
|
const blobList = containerClient.listBlobsFlat();
|
|
491
477
|
const uploads = [];
|
|
492
478
|
try {
|
|
@@ -521,15 +507,12 @@ var BlobStorageService = class {
|
|
|
521
507
|
*/
|
|
522
508
|
async listMultipartUploadsForKey(blobName) {
|
|
523
509
|
var _a;
|
|
524
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
525
|
-
this.containerName
|
|
526
|
-
);
|
|
510
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
527
511
|
const blobClient = containerClient.getBlockBlobClient(blobName);
|
|
528
512
|
const listResponse = await blobClient.getBlockList("all");
|
|
529
513
|
const parts = ((_a = listResponse == null ? void 0 : listResponse.uncommittedBlocks) == null ? void 0 : _a.map((block, index) => ({
|
|
530
514
|
PartNumber: index + 1,
|
|
531
515
|
LastModified: /* @__PURE__ */ new Date(),
|
|
532
|
-
// Azure Blob Storage doesn't provide the last modified date for individual parts
|
|
533
516
|
ETag: block.name,
|
|
534
517
|
Size: block.size
|
|
535
518
|
}))) || [];
|
|
@@ -558,9 +541,7 @@ var BlobStorageService = class {
|
|
|
558
541
|
* @return {Promise<string>} A Promise that resolves to a string representing the base64 encoded block ID of the uploaded part.
|
|
559
542
|
*/
|
|
560
543
|
async uploadMultipart(blobName, file, partNumber, uploadId) {
|
|
561
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
562
|
-
this.containerName
|
|
563
|
-
);
|
|
544
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
564
545
|
const blobClient = containerClient.getBlockBlobClient(blobName);
|
|
565
546
|
const blockIdBase = uploadId || await this.generateUploadIdMultipart();
|
|
566
547
|
const partId = partNumber.toString().padStart(6, "0");
|
|
@@ -572,14 +553,13 @@ var BlobStorageService = class {
|
|
|
572
553
|
* Completes a multipart upload by committing the blocks to create the blob.
|
|
573
554
|
*
|
|
574
555
|
* @param {string} blobName - The name of the blob for which the multipart upload is being completed.
|
|
556
|
+
* @param {string} uploadId - The ID of the multipart upload to be completed.
|
|
575
557
|
* @return {Promise<void>} A Promise that resolves when the multipart upload is successfully completed.
|
|
576
558
|
* @throws {Error} If no block IDs are found in the metadata.
|
|
577
559
|
*/
|
|
578
|
-
async completeMultipartUpload(blobName) {
|
|
560
|
+
async completeMultipartUpload(blobName, uploadId) {
|
|
579
561
|
var _a;
|
|
580
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
581
|
-
this.containerName
|
|
582
|
-
);
|
|
562
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
583
563
|
const blobClient = containerClient.getBlockBlobClient(blobName);
|
|
584
564
|
const listMultipartUploads = await this.listMultipartUploadsForKey(blobName);
|
|
585
565
|
const blockIds = ((_a = listMultipartUploads == null ? void 0 : listMultipartUploads.Parts) == null ? void 0 : _a.map((part) => part.ETag)) || [];
|
|
@@ -596,9 +576,7 @@ var BlobStorageService = class {
|
|
|
596
576
|
* @return {Promise<void>} A promise that resolves when the multipart upload is successfully aborted.
|
|
597
577
|
*/
|
|
598
578
|
async abortMultipartUpload(blobName, uploadId) {
|
|
599
|
-
const containerClient = this.blobServiceClient.getContainerClient(
|
|
600
|
-
this.containerName
|
|
601
|
-
);
|
|
579
|
+
const containerClient = this.blobServiceClient.getContainerClient(this.containerName);
|
|
602
580
|
const blobClient = containerClient.getBlockBlobClient(blobName);
|
|
603
581
|
const blockIdStorage = BlockIdStorage.getInstance();
|
|
604
582
|
blockIdStorage.clearBlockIds(uploadId);
|
|
@@ -607,15 +585,13 @@ var BlobStorageService = class {
|
|
|
607
585
|
async getMultipartUploadPresignedUrl(blobName, uploadId, partNumber, expiresInMinutes = 2) {
|
|
608
586
|
const partId = partNumber.toString().padStart(6, "0");
|
|
609
587
|
const partIdBase64 = Buffer.from(partId).toString("base64");
|
|
610
|
-
const sasUrl = await this.getSignatureUrl(
|
|
611
|
-
blobName,
|
|
612
|
-
expiresInMinutes,
|
|
613
|
-
"w"
|
|
614
|
-
);
|
|
588
|
+
const sasUrl = await this.getSignatureUrl(blobName, expiresInMinutes, "w");
|
|
615
589
|
const url = `${sasUrl}&comp=block&blockid=${partIdBase64}`;
|
|
616
590
|
return url;
|
|
617
591
|
}
|
|
618
592
|
};
|
|
593
|
+
__name(_BlobStorageService, "BlobStorageService");
|
|
594
|
+
var BlobStorageService = _BlobStorageService;
|
|
619
595
|
|
|
620
596
|
// src/services/storage/s3/s3Helpers.ts
|
|
621
597
|
function listResponseContentsToListResponseItems(responseContents) {
|
|
@@ -628,6 +604,7 @@ function listResponseContentsToListResponseItems(responseContents) {
|
|
|
628
604
|
};
|
|
629
605
|
});
|
|
630
606
|
}
|
|
607
|
+
__name(listResponseContentsToListResponseItems, "listResponseContentsToListResponseItems");
|
|
631
608
|
function s3ObjectToObjectResponse(s3Object) {
|
|
632
609
|
return {
|
|
633
610
|
body: s3Object.Body,
|
|
@@ -642,469 +619,23 @@ function s3ObjectToObjectResponse(s3Object) {
|
|
|
642
619
|
lastModified: s3Object.LastModified
|
|
643
620
|
};
|
|
644
621
|
}
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
var HttpAuthLocation;
|
|
648
|
-
(function(HttpAuthLocation2) {
|
|
649
|
-
HttpAuthLocation2["HEADER"] = "header";
|
|
650
|
-
HttpAuthLocation2["QUERY"] = "query";
|
|
651
|
-
})(HttpAuthLocation || (HttpAuthLocation = {}));
|
|
652
|
-
|
|
653
|
-
// node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js
|
|
654
|
-
var HttpApiKeyAuthLocation;
|
|
655
|
-
(function(HttpApiKeyAuthLocation2) {
|
|
656
|
-
HttpApiKeyAuthLocation2["HEADER"] = "header";
|
|
657
|
-
HttpApiKeyAuthLocation2["QUERY"] = "query";
|
|
658
|
-
})(HttpApiKeyAuthLocation || (HttpApiKeyAuthLocation = {}));
|
|
659
|
-
|
|
660
|
-
// node_modules/@smithy/types/dist-es/endpoint.js
|
|
661
|
-
var EndpointURLScheme;
|
|
662
|
-
(function(EndpointURLScheme2) {
|
|
663
|
-
EndpointURLScheme2["HTTP"] = "http";
|
|
664
|
-
EndpointURLScheme2["HTTPS"] = "https";
|
|
665
|
-
})(EndpointURLScheme || (EndpointURLScheme = {}));
|
|
666
|
-
|
|
667
|
-
// node_modules/@smithy/types/dist-es/extensions/checksum.js
|
|
668
|
-
var AlgorithmId;
|
|
669
|
-
(function(AlgorithmId2) {
|
|
670
|
-
AlgorithmId2["MD5"] = "md5";
|
|
671
|
-
AlgorithmId2["CRC32"] = "crc32";
|
|
672
|
-
AlgorithmId2["CRC32C"] = "crc32c";
|
|
673
|
-
AlgorithmId2["SHA1"] = "sha1";
|
|
674
|
-
AlgorithmId2["SHA256"] = "sha256";
|
|
675
|
-
})(AlgorithmId || (AlgorithmId = {}));
|
|
676
|
-
|
|
677
|
-
// node_modules/@smithy/types/dist-es/http.js
|
|
678
|
-
var FieldPosition;
|
|
679
|
-
(function(FieldPosition2) {
|
|
680
|
-
FieldPosition2[FieldPosition2["HEADER"] = 0] = "HEADER";
|
|
681
|
-
FieldPosition2[FieldPosition2["TRAILER"] = 1] = "TRAILER";
|
|
682
|
-
})(FieldPosition || (FieldPosition = {}));
|
|
683
|
-
|
|
684
|
-
// node_modules/@smithy/types/dist-es/profile.js
|
|
685
|
-
var IniSectionType;
|
|
686
|
-
(function(IniSectionType2) {
|
|
687
|
-
IniSectionType2["PROFILE"] = "profile";
|
|
688
|
-
IniSectionType2["SSO_SESSION"] = "sso-session";
|
|
689
|
-
IniSectionType2["SERVICES"] = "services";
|
|
690
|
-
})(IniSectionType || (IniSectionType = {}));
|
|
691
|
-
|
|
692
|
-
// node_modules/@smithy/types/dist-es/transfer.js
|
|
693
|
-
var RequestHandlerProtocol;
|
|
694
|
-
(function(RequestHandlerProtocol2) {
|
|
695
|
-
RequestHandlerProtocol2["HTTP_0_9"] = "http/0.9";
|
|
696
|
-
RequestHandlerProtocol2["HTTP_1_0"] = "http/1.0";
|
|
697
|
-
RequestHandlerProtocol2["TDS_8_0"] = "tds/8.0";
|
|
698
|
-
})(RequestHandlerProtocol || (RequestHandlerProtocol = {}));
|
|
699
|
-
|
|
700
|
-
// node_modules/@smithy/protocol-http/dist-es/httpResponse.js
|
|
701
|
-
var HttpResponse = class {
|
|
702
|
-
constructor(options) {
|
|
703
|
-
this.statusCode = options.statusCode;
|
|
704
|
-
this.reason = options.reason;
|
|
705
|
-
this.headers = options.headers || {};
|
|
706
|
-
this.body = options.body;
|
|
707
|
-
}
|
|
708
|
-
static isInstance(response) {
|
|
709
|
-
if (!response)
|
|
710
|
-
return false;
|
|
711
|
-
const resp = response;
|
|
712
|
-
return typeof resp.statusCode === "number" && typeof resp.headers === "object";
|
|
713
|
-
}
|
|
714
|
-
};
|
|
715
|
-
|
|
716
|
-
// node_modules/@smithy/util-uri-escape/dist-es/escape-uri.js
|
|
717
|
-
var escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode);
|
|
718
|
-
var hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`;
|
|
719
|
-
|
|
720
|
-
// node_modules/@smithy/querystring-builder/dist-es/index.js
|
|
721
|
-
function buildQueryString(query) {
|
|
722
|
-
const parts = [];
|
|
723
|
-
for (let key of Object.keys(query).sort()) {
|
|
724
|
-
const value = query[key];
|
|
725
|
-
key = escapeUri(key);
|
|
726
|
-
if (Array.isArray(value)) {
|
|
727
|
-
for (let i = 0, iLen = value.length; i < iLen; i++) {
|
|
728
|
-
parts.push(`${key}=${escapeUri(value[i])}`);
|
|
729
|
-
}
|
|
730
|
-
} else {
|
|
731
|
-
let qsEntry = key;
|
|
732
|
-
if (value || typeof value === "string") {
|
|
733
|
-
qsEntry += `=${escapeUri(value)}`;
|
|
734
|
-
}
|
|
735
|
-
parts.push(qsEntry);
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
return parts.join("&");
|
|
739
|
-
}
|
|
740
|
-
|
|
741
|
-
// node_modules/@smithy/node-http-handler/dist-es/constants.js
|
|
742
|
-
var NODEJS_TIMEOUT_ERROR_CODES = ["ECONNRESET", "EPIPE", "ETIMEDOUT"];
|
|
743
|
-
|
|
744
|
-
// node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js
|
|
745
|
-
var getTransformedHeaders = (headers) => {
|
|
746
|
-
const transformedHeaders = {};
|
|
747
|
-
for (const name of Object.keys(headers)) {
|
|
748
|
-
const headerValues = headers[name];
|
|
749
|
-
transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(",") : headerValues;
|
|
750
|
-
}
|
|
751
|
-
return transformedHeaders;
|
|
752
|
-
};
|
|
753
|
-
|
|
754
|
-
// node_modules/@smithy/node-http-handler/dist-es/timing.js
|
|
755
|
-
var timing = {
|
|
756
|
-
setTimeout: (cb, ms) => setTimeout(cb, ms),
|
|
757
|
-
clearTimeout: (timeoutId) => clearTimeout(timeoutId)
|
|
758
|
-
};
|
|
759
|
-
|
|
760
|
-
// node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js
|
|
761
|
-
var DEFER_EVENT_LISTENER_TIME = 1e3;
|
|
762
|
-
var setConnectionTimeout = (request, reject, timeoutInMs = 0) => {
|
|
763
|
-
if (!timeoutInMs) {
|
|
764
|
-
return -1;
|
|
765
|
-
}
|
|
766
|
-
const registerTimeout = (offset) => {
|
|
767
|
-
const timeoutId = timing.setTimeout(() => {
|
|
768
|
-
request.destroy();
|
|
769
|
-
reject(Object.assign(new Error(`Socket timed out without establishing a connection within ${timeoutInMs} ms`), {
|
|
770
|
-
name: "TimeoutError"
|
|
771
|
-
}));
|
|
772
|
-
}, timeoutInMs - offset);
|
|
773
|
-
const doWithSocket = (socket) => {
|
|
774
|
-
if (socket == null ? void 0 : socket.connecting) {
|
|
775
|
-
socket.on("connect", () => {
|
|
776
|
-
timing.clearTimeout(timeoutId);
|
|
777
|
-
});
|
|
778
|
-
} else {
|
|
779
|
-
timing.clearTimeout(timeoutId);
|
|
780
|
-
}
|
|
781
|
-
};
|
|
782
|
-
if (request.socket) {
|
|
783
|
-
doWithSocket(request.socket);
|
|
784
|
-
} else {
|
|
785
|
-
request.on("socket", doWithSocket);
|
|
786
|
-
}
|
|
787
|
-
};
|
|
788
|
-
if (timeoutInMs < 2e3) {
|
|
789
|
-
registerTimeout(0);
|
|
790
|
-
return 0;
|
|
791
|
-
}
|
|
792
|
-
return timing.setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME);
|
|
793
|
-
};
|
|
794
|
-
|
|
795
|
-
// node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js
|
|
796
|
-
var DEFER_EVENT_LISTENER_TIME2 = 3e3;
|
|
797
|
-
var setSocketKeepAlive = (request, { keepAlive, keepAliveMsecs }, deferTimeMs = DEFER_EVENT_LISTENER_TIME2) => {
|
|
798
|
-
if (keepAlive !== true) {
|
|
799
|
-
return -1;
|
|
800
|
-
}
|
|
801
|
-
const registerListener = () => {
|
|
802
|
-
if (request.socket) {
|
|
803
|
-
request.socket.setKeepAlive(keepAlive, keepAliveMsecs || 0);
|
|
804
|
-
} else {
|
|
805
|
-
request.on("socket", (socket) => {
|
|
806
|
-
socket.setKeepAlive(keepAlive, keepAliveMsecs || 0);
|
|
807
|
-
});
|
|
808
|
-
}
|
|
809
|
-
};
|
|
810
|
-
if (deferTimeMs === 0) {
|
|
811
|
-
registerListener();
|
|
812
|
-
return 0;
|
|
813
|
-
}
|
|
814
|
-
return timing.setTimeout(registerListener, deferTimeMs);
|
|
815
|
-
};
|
|
816
|
-
|
|
817
|
-
// node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js
|
|
818
|
-
var DEFER_EVENT_LISTENER_TIME3 = 3e3;
|
|
819
|
-
var setSocketTimeout = (request, reject, timeoutInMs = DEFAULT_REQUEST_TIMEOUT) => {
|
|
820
|
-
const registerTimeout = (offset) => {
|
|
821
|
-
const timeout = timeoutInMs - offset;
|
|
822
|
-
const onTimeout = () => {
|
|
823
|
-
request.destroy();
|
|
824
|
-
reject(Object.assign(new Error(`Connection timed out after ${timeoutInMs} ms`), { name: "TimeoutError" }));
|
|
825
|
-
};
|
|
826
|
-
if (request.socket) {
|
|
827
|
-
request.socket.setTimeout(timeout, onTimeout);
|
|
828
|
-
request.on("close", () => {
|
|
829
|
-
var _a;
|
|
830
|
-
return (_a = request.socket) == null ? void 0 : _a.removeListener("timeout", onTimeout);
|
|
831
|
-
});
|
|
832
|
-
} else {
|
|
833
|
-
request.setTimeout(timeout, onTimeout);
|
|
834
|
-
}
|
|
835
|
-
};
|
|
836
|
-
if (0 < timeoutInMs && timeoutInMs < 6e3) {
|
|
837
|
-
registerTimeout(0);
|
|
838
|
-
return 0;
|
|
839
|
-
}
|
|
840
|
-
return timing.setTimeout(registerTimeout.bind(null, timeoutInMs === 0 ? 0 : DEFER_EVENT_LISTENER_TIME3), DEFER_EVENT_LISTENER_TIME3);
|
|
841
|
-
};
|
|
842
|
-
var MIN_WAIT_TIME = 6e3;
|
|
843
|
-
async function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME) {
|
|
844
|
-
var _a;
|
|
845
|
-
const headers = (_a = request.headers) != null ? _a : {};
|
|
846
|
-
const expect = headers["Expect"] || headers["expect"];
|
|
847
|
-
let timeoutId = -1;
|
|
848
|
-
let sendBody = true;
|
|
849
|
-
if (expect === "100-continue") {
|
|
850
|
-
sendBody = await Promise.race([
|
|
851
|
-
new Promise((resolve) => {
|
|
852
|
-
timeoutId = Number(timing.setTimeout(() => resolve(true), Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs)));
|
|
853
|
-
}),
|
|
854
|
-
new Promise((resolve) => {
|
|
855
|
-
httpRequest.on("continue", () => {
|
|
856
|
-
timing.clearTimeout(timeoutId);
|
|
857
|
-
resolve(true);
|
|
858
|
-
});
|
|
859
|
-
httpRequest.on("response", () => {
|
|
860
|
-
timing.clearTimeout(timeoutId);
|
|
861
|
-
resolve(false);
|
|
862
|
-
});
|
|
863
|
-
httpRequest.on("error", () => {
|
|
864
|
-
timing.clearTimeout(timeoutId);
|
|
865
|
-
resolve(false);
|
|
866
|
-
});
|
|
867
|
-
})
|
|
868
|
-
]);
|
|
869
|
-
}
|
|
870
|
-
if (sendBody) {
|
|
871
|
-
writeBody(httpRequest, request.body);
|
|
872
|
-
}
|
|
873
|
-
}
|
|
874
|
-
function writeBody(httpRequest, body) {
|
|
875
|
-
if (body instanceof stream2.Readable) {
|
|
876
|
-
body.pipe(httpRequest);
|
|
877
|
-
return;
|
|
878
|
-
}
|
|
879
|
-
if (body) {
|
|
880
|
-
if (Buffer.isBuffer(body) || typeof body === "string") {
|
|
881
|
-
httpRequest.end(body);
|
|
882
|
-
return;
|
|
883
|
-
}
|
|
884
|
-
const uint8 = body;
|
|
885
|
-
if (typeof uint8 === "object" && uint8.buffer && typeof uint8.byteOffset === "number" && typeof uint8.byteLength === "number") {
|
|
886
|
-
httpRequest.end(Buffer.from(uint8.buffer, uint8.byteOffset, uint8.byteLength));
|
|
887
|
-
return;
|
|
888
|
-
}
|
|
889
|
-
httpRequest.end(Buffer.from(body));
|
|
890
|
-
return;
|
|
891
|
-
}
|
|
892
|
-
httpRequest.end();
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
// node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js
|
|
896
|
-
var DEFAULT_REQUEST_TIMEOUT = 0;
|
|
897
|
-
var NodeHttpHandler = class _NodeHttpHandler {
|
|
898
|
-
static create(instanceOrOptions) {
|
|
899
|
-
if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === "function") {
|
|
900
|
-
return instanceOrOptions;
|
|
901
|
-
}
|
|
902
|
-
return new _NodeHttpHandler(instanceOrOptions);
|
|
903
|
-
}
|
|
904
|
-
static checkSocketUsage(agent, socketWarningTimestamp, logger = console) {
|
|
905
|
-
var _a, _b, _c, _d, _e;
|
|
906
|
-
const { sockets, requests, maxSockets } = agent;
|
|
907
|
-
if (typeof maxSockets !== "number" || maxSockets === Infinity) {
|
|
908
|
-
return socketWarningTimestamp;
|
|
909
|
-
}
|
|
910
|
-
const interval = 15e3;
|
|
911
|
-
if (Date.now() - interval < socketWarningTimestamp) {
|
|
912
|
-
return socketWarningTimestamp;
|
|
913
|
-
}
|
|
914
|
-
if (sockets && requests) {
|
|
915
|
-
for (const origin in sockets) {
|
|
916
|
-
const socketsInUse = (_b = (_a = sockets[origin]) == null ? void 0 : _a.length) != null ? _b : 0;
|
|
917
|
-
const requestsEnqueued = (_d = (_c = requests[origin]) == null ? void 0 : _c.length) != null ? _d : 0;
|
|
918
|
-
if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) {
|
|
919
|
-
(_e = logger == null ? void 0 : logger.warn) == null ? void 0 : _e.call(logger, `@smithy/node-http-handler:WARN - socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued.
|
|
920
|
-
See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html
|
|
921
|
-
or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`);
|
|
922
|
-
return Date.now();
|
|
923
|
-
}
|
|
924
|
-
}
|
|
925
|
-
}
|
|
926
|
-
return socketWarningTimestamp;
|
|
927
|
-
}
|
|
928
|
-
constructor(options) {
|
|
929
|
-
this.socketWarningTimestamp = 0;
|
|
930
|
-
this.metadata = { handlerProtocol: "http/1.1" };
|
|
931
|
-
this.configProvider = new Promise((resolve, reject) => {
|
|
932
|
-
if (typeof options === "function") {
|
|
933
|
-
options().then((_options) => {
|
|
934
|
-
resolve(this.resolveDefaultConfig(_options));
|
|
935
|
-
}).catch(reject);
|
|
936
|
-
} else {
|
|
937
|
-
resolve(this.resolveDefaultConfig(options));
|
|
938
|
-
}
|
|
939
|
-
});
|
|
940
|
-
}
|
|
941
|
-
resolveDefaultConfig(options) {
|
|
942
|
-
const { requestTimeout, connectionTimeout, socketTimeout, socketAcquisitionWarningTimeout, httpAgent, httpsAgent } = options || {};
|
|
943
|
-
const keepAlive = true;
|
|
944
|
-
const maxSockets = 50;
|
|
945
|
-
return {
|
|
946
|
-
connectionTimeout,
|
|
947
|
-
requestTimeout: requestTimeout != null ? requestTimeout : socketTimeout,
|
|
948
|
-
socketAcquisitionWarningTimeout,
|
|
949
|
-
httpAgent: (() => {
|
|
950
|
-
if (httpAgent instanceof http.Agent || typeof (httpAgent == null ? void 0 : httpAgent.destroy) === "function") {
|
|
951
|
-
return httpAgent;
|
|
952
|
-
}
|
|
953
|
-
return new http.Agent(__spreadValues({ keepAlive, maxSockets }, httpAgent));
|
|
954
|
-
})(),
|
|
955
|
-
httpsAgent: (() => {
|
|
956
|
-
if (httpsAgent instanceof https.Agent || typeof (httpsAgent == null ? void 0 : httpsAgent.destroy) === "function") {
|
|
957
|
-
return httpsAgent;
|
|
958
|
-
}
|
|
959
|
-
return new https.Agent(__spreadValues({ keepAlive, maxSockets }, httpsAgent));
|
|
960
|
-
})(),
|
|
961
|
-
logger: console
|
|
962
|
-
};
|
|
963
|
-
}
|
|
964
|
-
destroy() {
|
|
965
|
-
var _a, _b, _c, _d;
|
|
966
|
-
(_b = (_a = this.config) == null ? void 0 : _a.httpAgent) == null ? void 0 : _b.destroy();
|
|
967
|
-
(_d = (_c = this.config) == null ? void 0 : _c.httpsAgent) == null ? void 0 : _d.destroy();
|
|
968
|
-
}
|
|
969
|
-
async handle(request, { abortSignal, requestTimeout } = {}) {
|
|
970
|
-
if (!this.config) {
|
|
971
|
-
this.config = await this.configProvider;
|
|
972
|
-
}
|
|
973
|
-
return new Promise((_resolve, _reject) => {
|
|
974
|
-
var _a, _b, _c, _d, _e, _f;
|
|
975
|
-
let writeRequestBodyPromise = void 0;
|
|
976
|
-
const timeouts = [];
|
|
977
|
-
const resolve = async (arg) => {
|
|
978
|
-
await writeRequestBodyPromise;
|
|
979
|
-
timeouts.forEach(timing.clearTimeout);
|
|
980
|
-
_resolve(arg);
|
|
981
|
-
};
|
|
982
|
-
const reject = async (arg) => {
|
|
983
|
-
await writeRequestBodyPromise;
|
|
984
|
-
timeouts.forEach(timing.clearTimeout);
|
|
985
|
-
_reject(arg);
|
|
986
|
-
};
|
|
987
|
-
if (!this.config) {
|
|
988
|
-
throw new Error("Node HTTP request handler config is not resolved");
|
|
989
|
-
}
|
|
990
|
-
if (abortSignal == null ? void 0 : abortSignal.aborted) {
|
|
991
|
-
const abortError = new Error("Request aborted");
|
|
992
|
-
abortError.name = "AbortError";
|
|
993
|
-
reject(abortError);
|
|
994
|
-
return;
|
|
995
|
-
}
|
|
996
|
-
const isSSL = request.protocol === "https:";
|
|
997
|
-
const agent = isSSL ? this.config.httpsAgent : this.config.httpAgent;
|
|
998
|
-
timeouts.push(timing.setTimeout(() => {
|
|
999
|
-
this.socketWarningTimestamp = _NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp, this.config.logger);
|
|
1000
|
-
}, (_c = this.config.socketAcquisitionWarningTimeout) != null ? _c : ((_a = this.config.requestTimeout) != null ? _a : 2e3) + ((_b = this.config.connectionTimeout) != null ? _b : 1e3)));
|
|
1001
|
-
const queryString = buildQueryString(request.query || {});
|
|
1002
|
-
let auth = void 0;
|
|
1003
|
-
if (request.username != null || request.password != null) {
|
|
1004
|
-
const username = (_d = request.username) != null ? _d : "";
|
|
1005
|
-
const password = (_e = request.password) != null ? _e : "";
|
|
1006
|
-
auth = `${username}:${password}`;
|
|
1007
|
-
}
|
|
1008
|
-
let path = request.path;
|
|
1009
|
-
if (queryString) {
|
|
1010
|
-
path += `?${queryString}`;
|
|
1011
|
-
}
|
|
1012
|
-
if (request.fragment) {
|
|
1013
|
-
path += `#${request.fragment}`;
|
|
1014
|
-
}
|
|
1015
|
-
let hostname = (_f = request.hostname) != null ? _f : "";
|
|
1016
|
-
if (hostname[0] === "[" && hostname.endsWith("]")) {
|
|
1017
|
-
hostname = request.hostname.slice(1, -1);
|
|
1018
|
-
} else {
|
|
1019
|
-
hostname = request.hostname;
|
|
1020
|
-
}
|
|
1021
|
-
const nodeHttpsOptions = {
|
|
1022
|
-
headers: request.headers,
|
|
1023
|
-
host: hostname,
|
|
1024
|
-
method: request.method,
|
|
1025
|
-
path,
|
|
1026
|
-
port: request.port,
|
|
1027
|
-
agent,
|
|
1028
|
-
auth
|
|
1029
|
-
};
|
|
1030
|
-
const requestFunc = isSSL ? https.request : http.request;
|
|
1031
|
-
const req = requestFunc(nodeHttpsOptions, (res) => {
|
|
1032
|
-
const httpResponse = new HttpResponse({
|
|
1033
|
-
statusCode: res.statusCode || -1,
|
|
1034
|
-
reason: res.statusMessage,
|
|
1035
|
-
headers: getTransformedHeaders(res.headers),
|
|
1036
|
-
body: res
|
|
1037
|
-
});
|
|
1038
|
-
resolve({ response: httpResponse });
|
|
1039
|
-
});
|
|
1040
|
-
req.on("error", (err) => {
|
|
1041
|
-
if (NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) {
|
|
1042
|
-
reject(Object.assign(err, { name: "TimeoutError" }));
|
|
1043
|
-
} else {
|
|
1044
|
-
reject(err);
|
|
1045
|
-
}
|
|
1046
|
-
});
|
|
1047
|
-
if (abortSignal) {
|
|
1048
|
-
const onAbort = () => {
|
|
1049
|
-
req.destroy();
|
|
1050
|
-
const abortError = new Error("Request aborted");
|
|
1051
|
-
abortError.name = "AbortError";
|
|
1052
|
-
reject(abortError);
|
|
1053
|
-
};
|
|
1054
|
-
if (typeof abortSignal.addEventListener === "function") {
|
|
1055
|
-
const signal = abortSignal;
|
|
1056
|
-
signal.addEventListener("abort", onAbort, { once: true });
|
|
1057
|
-
req.once("close", () => signal.removeEventListener("abort", onAbort));
|
|
1058
|
-
} else {
|
|
1059
|
-
abortSignal.onabort = onAbort;
|
|
1060
|
-
}
|
|
1061
|
-
}
|
|
1062
|
-
const effectiveRequestTimeout = requestTimeout != null ? requestTimeout : this.config.requestTimeout;
|
|
1063
|
-
timeouts.push(setConnectionTimeout(req, reject, this.config.connectionTimeout));
|
|
1064
|
-
timeouts.push(setSocketTimeout(req, reject, effectiveRequestTimeout));
|
|
1065
|
-
const httpAgent = nodeHttpsOptions.agent;
|
|
1066
|
-
if (typeof httpAgent === "object" && "keepAlive" in httpAgent) {
|
|
1067
|
-
timeouts.push(setSocketKeepAlive(req, {
|
|
1068
|
-
keepAlive: httpAgent.keepAlive,
|
|
1069
|
-
keepAliveMsecs: httpAgent.keepAliveMsecs
|
|
1070
|
-
}));
|
|
1071
|
-
}
|
|
1072
|
-
writeRequestBodyPromise = writeRequestBody(req, request, effectiveRequestTimeout).catch((e) => {
|
|
1073
|
-
timeouts.forEach(timing.clearTimeout);
|
|
1074
|
-
return _reject(e);
|
|
1075
|
-
});
|
|
1076
|
-
});
|
|
1077
|
-
}
|
|
1078
|
-
updateHttpClientConfig(key, value) {
|
|
1079
|
-
this.config = void 0;
|
|
1080
|
-
this.configProvider = this.configProvider.then((config) => {
|
|
1081
|
-
return __spreadProps(__spreadValues({}, config), {
|
|
1082
|
-
[key]: value
|
|
1083
|
-
});
|
|
1084
|
-
});
|
|
1085
|
-
}
|
|
1086
|
-
httpHandlerConfigs() {
|
|
1087
|
-
var _a;
|
|
1088
|
-
return (_a = this.config) != null ? _a : {};
|
|
1089
|
-
}
|
|
1090
|
-
};
|
|
1091
|
-
|
|
1092
|
-
// src/services/storage/s3/s3Storage.service.ts
|
|
1093
|
-
var S3StorageService = class {
|
|
622
|
+
__name(s3ObjectToObjectResponse, "s3ObjectToObjectResponse");
|
|
623
|
+
var _S3StorageService = class _S3StorageService {
|
|
1094
624
|
constructor(bucketName, options) {
|
|
1095
|
-
this
|
|
625
|
+
__publicField(this, "httpHandler", new nodeHttpHandler.NodeHttpHandler({
|
|
1096
626
|
socketTimeout: 6e5
|
|
1097
|
-
});
|
|
1098
|
-
this
|
|
627
|
+
}));
|
|
628
|
+
__publicField(this, "s3Client", new clientS3.S3Client({
|
|
1099
629
|
region: process.env.AWS_DEFAULT_REGION,
|
|
1100
630
|
requestHandler: this.httpHandler,
|
|
1101
631
|
credentials: credentialProviderNode.defaultProvider()
|
|
1102
|
-
});
|
|
1103
|
-
this
|
|
632
|
+
}));
|
|
633
|
+
__publicField(this, "s3", new clientS3.S3({
|
|
1104
634
|
region: process.env.AWS_DEFAULT_REGION,
|
|
1105
635
|
requestHandler: this.httpHandler,
|
|
1106
636
|
credentials: credentialProviderNode.defaultProvider()
|
|
1107
|
-
});
|
|
637
|
+
}));
|
|
638
|
+
__publicField(this, "bucketName");
|
|
1108
639
|
var _a, _b, _c, _d;
|
|
1109
640
|
this.bucketName = bucketName;
|
|
1110
641
|
if (((_a = options == null ? void 0 : options.credentials) == null ? void 0 : _a.accessKeyId) && ((_b = options == null ? void 0 : options.credentials) == null ? void 0 : _b.secretAccessKey)) {
|
|
@@ -1149,11 +680,7 @@ var S3StorageService = class {
|
|
|
1149
680
|
let continueListing = true;
|
|
1150
681
|
while (continueListing) {
|
|
1151
682
|
const listChunkLimit = limit - responseContents.length;
|
|
1152
|
-
const response = await this.listChunk(
|
|
1153
|
-
options,
|
|
1154
|
-
continuationToken,
|
|
1155
|
-
listChunkLimit
|
|
1156
|
-
);
|
|
683
|
+
const response = await this.listChunk(options, continuationToken, listChunkLimit);
|
|
1157
684
|
continuationToken = response.NextContinuationToken;
|
|
1158
685
|
responseContents = responseContents.concat((_b = response.Contents) != null ? _b : []);
|
|
1159
686
|
if (responseContents.length >= limit || !continuationToken) {
|
|
@@ -1195,10 +722,16 @@ var S3StorageService = class {
|
|
|
1195
722
|
pagination
|
|
1196
723
|
}));
|
|
1197
724
|
if ((_a = response.items) == null ? void 0 : _a.length)
|
|
1198
|
-
allItems = [
|
|
725
|
+
allItems = [
|
|
726
|
+
...allItems,
|
|
727
|
+
...response.items
|
|
728
|
+
];
|
|
1199
729
|
pagination = response.pagination === null ? void 0 : response.pagination;
|
|
1200
730
|
} while (pagination);
|
|
1201
|
-
return {
|
|
731
|
+
return {
|
|
732
|
+
items: allItems,
|
|
733
|
+
count: allItems.length
|
|
734
|
+
};
|
|
1202
735
|
}
|
|
1203
736
|
/**
|
|
1204
737
|
* Retrieves an object from the S3 bucket.
|
|
@@ -1238,7 +771,9 @@ var S3StorageService = class {
|
|
|
1238
771
|
Bucket: this.bucketName,
|
|
1239
772
|
Key: key
|
|
1240
773
|
});
|
|
1241
|
-
return s3RequestPresigner.getSignedUrl(this.s3Client, command, {
|
|
774
|
+
return s3RequestPresigner.getSignedUrl(this.s3Client, command, {
|
|
775
|
+
expiresIn
|
|
776
|
+
});
|
|
1242
777
|
}
|
|
1243
778
|
/**
|
|
1244
779
|
* Retrieves a signed URL for uploading an object to the S3 bucket.
|
|
@@ -1271,22 +806,6 @@ var S3StorageService = class {
|
|
|
1271
806
|
* @returns A promise that resolves to the response containing the key of the uploaded object.
|
|
1272
807
|
*/
|
|
1273
808
|
async upload(key, body, metadata) {
|
|
1274
|
-
if (body instanceof stream2__default.default.Readable) {
|
|
1275
|
-
const upload = new libStorage.Upload({
|
|
1276
|
-
client: this.s3Client,
|
|
1277
|
-
params: {
|
|
1278
|
-
Bucket: this.bucketName,
|
|
1279
|
-
Key: key,
|
|
1280
|
-
Body: body,
|
|
1281
|
-
Metadata: metadata
|
|
1282
|
-
},
|
|
1283
|
-
queueSize: 5,
|
|
1284
|
-
partSize: 8 * 1024 * 1024
|
|
1285
|
-
// 8MB parts
|
|
1286
|
-
});
|
|
1287
|
-
await upload.done();
|
|
1288
|
-
return { key };
|
|
1289
|
-
}
|
|
1290
809
|
const command = new clientS3.PutObjectCommand({
|
|
1291
810
|
Bucket: this.bucketName,
|
|
1292
811
|
Key: key,
|
|
@@ -1294,7 +813,9 @@ var S3StorageService = class {
|
|
|
1294
813
|
Metadata: metadata
|
|
1295
814
|
});
|
|
1296
815
|
await this.s3Client.send(command);
|
|
1297
|
-
return {
|
|
816
|
+
return {
|
|
817
|
+
key
|
|
818
|
+
};
|
|
1298
819
|
}
|
|
1299
820
|
/**
|
|
1300
821
|
* Creates a writable stream for uploading a file to the S3 bucket.
|
|
@@ -1303,7 +824,7 @@ var S3StorageService = class {
|
|
|
1303
824
|
* @return {CreateUploadWriteStreamResponse} An object containing the key of the uploaded object, the writable stream, and a promise that resolves when the upload is complete.
|
|
1304
825
|
*/
|
|
1305
826
|
createUploadWriteStream(key) {
|
|
1306
|
-
const streamPassThrough = new
|
|
827
|
+
const streamPassThrough = new stream__default.default.PassThrough();
|
|
1307
828
|
const params = {
|
|
1308
829
|
Bucket: this.bucketName,
|
|
1309
830
|
Key: key,
|
|
@@ -1341,9 +862,7 @@ var S3StorageService = class {
|
|
|
1341
862
|
});
|
|
1342
863
|
return this.s3Client.send(command);
|
|
1343
864
|
} catch (error) {
|
|
1344
|
-
throw new Error(
|
|
1345
|
-
"Error in S3 getHeadContainer. bucketName: " + this.bucketName + " Error: " + error
|
|
1346
|
-
);
|
|
865
|
+
throw new Error("Error in S3 getHeadContainer. bucketName: " + this.bucketName + " Error: " + error);
|
|
1347
866
|
}
|
|
1348
867
|
}
|
|
1349
868
|
/**
|
|
@@ -1420,10 +939,7 @@ var S3StorageService = class {
|
|
|
1420
939
|
return upId;
|
|
1421
940
|
}
|
|
1422
941
|
async completeMultipartUpload(key, uploadId) {
|
|
1423
|
-
const partsResponse = await this.listMultipartUploadsForKey(
|
|
1424
|
-
key,
|
|
1425
|
-
uploadId
|
|
1426
|
-
);
|
|
942
|
+
const partsResponse = await this.listMultipartUploadsForKey(key, uploadId);
|
|
1427
943
|
const partsList = (partsResponse == null ? void 0 : partsResponse.Parts) && partsResponse.Parts.map(
|
|
1428
944
|
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
|
1429
945
|
(_a) => {
|
|
@@ -1457,353 +973,23 @@ var S3StorageService = class {
|
|
|
1457
973
|
PartNumber: parseInt(partNumber, 10)
|
|
1458
974
|
};
|
|
1459
975
|
const expiresIn = expiresInMinutes * 60;
|
|
1460
|
-
const presignedUrl = await s3RequestPresigner.getSignedUrl(
|
|
1461
|
-
|
|
1462
|
-
new clientS3.UploadPartCommand(uploadPartParams),
|
|
1463
|
-
{ expiresIn }
|
|
1464
|
-
);
|
|
1465
|
-
return presignedUrl;
|
|
1466
|
-
}
|
|
1467
|
-
};
|
|
1468
|
-
var SftpClient = __require("ssh2-sftp-client");
|
|
1469
|
-
var SftpStorageService = class {
|
|
1470
|
-
constructor(bucketName, options) {
|
|
1471
|
-
this.bucketName = bucketName;
|
|
1472
|
-
this.options = options || {};
|
|
1473
|
-
this.client = new SftpClient();
|
|
1474
|
-
}
|
|
1475
|
-
async initializeClient() {
|
|
1476
|
-
const host = this.options.host || process.env.SFTP_HOST;
|
|
1477
|
-
const port = parseInt(
|
|
1478
|
-
String(this.options.port || process.env.SFTP_PORT)
|
|
1479
|
-
);
|
|
1480
|
-
const user = this.options.user || process.env.SFTP_USER;
|
|
1481
|
-
const password = this.options.password || process.env.SFTP_PASSWORD;
|
|
1482
|
-
const privateKey = this.options.privateKey || process.env.SFTP_PRIVATE_KEY;
|
|
1483
|
-
if (!password && !privateKey) {
|
|
1484
|
-
throw new Error(
|
|
1485
|
-
"Either password or private key must be provided for SFTP connection"
|
|
1486
|
-
);
|
|
1487
|
-
}
|
|
1488
|
-
await this.client.connect({
|
|
1489
|
-
host,
|
|
1490
|
-
port,
|
|
1491
|
-
username: user,
|
|
1492
|
-
password,
|
|
1493
|
-
privateKey,
|
|
1494
|
-
readyTimeout: 4e3,
|
|
1495
|
-
retries: 1,
|
|
1496
|
-
retry_factor: 2,
|
|
1497
|
-
retry_minTimeout: 2e3
|
|
1498
|
-
});
|
|
1499
|
-
}
|
|
1500
|
-
async withClient(fn) {
|
|
1501
|
-
try {
|
|
1502
|
-
await this.initializeClient();
|
|
1503
|
-
return await fn();
|
|
1504
|
-
} finally {
|
|
1505
|
-
await this.client.end().catch(() => {
|
|
1506
|
-
});
|
|
1507
|
-
}
|
|
1508
|
-
}
|
|
1509
|
-
async list(options) {
|
|
1510
|
-
return this.withClient(async () => {
|
|
1511
|
-
const prefix = options.prefix || "";
|
|
1512
|
-
const path = this.bucketName + (prefix ? "/" + prefix : "");
|
|
1513
|
-
const list = await this.client.list(path);
|
|
1514
|
-
const items = list.map((item) => ({
|
|
1515
|
-
key: item.name,
|
|
1516
|
-
lastModified: item.modifyTime ? new Date(item.modifyTime) : /* @__PURE__ */ new Date(),
|
|
1517
|
-
size: item.size,
|
|
1518
|
-
eTag: ""
|
|
1519
|
-
}));
|
|
1520
|
-
return {
|
|
1521
|
-
items,
|
|
1522
|
-
pagination: null,
|
|
1523
|
-
count: items.length
|
|
1524
|
-
};
|
|
1525
|
-
});
|
|
1526
|
-
}
|
|
1527
|
-
async ensureDirectoriesExist(remotePath) {
|
|
1528
|
-
var _a, _b;
|
|
1529
|
-
const parts = remotePath.split("/");
|
|
1530
|
-
parts.pop();
|
|
1531
|
-
let current = "";
|
|
1532
|
-
for (const part of parts) {
|
|
1533
|
-
if (!part)
|
|
1534
|
-
continue;
|
|
1535
|
-
current += `/${part}`;
|
|
1536
|
-
try {
|
|
1537
|
-
await this.client.stat(current);
|
|
1538
|
-
} catch (err) {
|
|
1539
|
-
const isNoEntry = err.code === "ENOENT" || ((_a = err.message) == null ? void 0 : _a.includes("No such file")) || ((_b = err.message) == null ? void 0 : _b.includes("does not exist"));
|
|
1540
|
-
if (isNoEntry) {
|
|
1541
|
-
try {
|
|
1542
|
-
await this.client.mkdir(current);
|
|
1543
|
-
} catch (mkdirErr) {
|
|
1544
|
-
throw new Error(
|
|
1545
|
-
`Failed to create directory ${current}: ${mkdirErr.message}`
|
|
1546
|
-
);
|
|
1547
|
-
}
|
|
1548
|
-
} else {
|
|
1549
|
-
throw new Error(
|
|
1550
|
-
`Failed to check directory ${current}: ${err.message}`
|
|
1551
|
-
);
|
|
1552
|
-
}
|
|
1553
|
-
}
|
|
1554
|
-
}
|
|
1555
|
-
}
|
|
1556
|
-
async upload(key, body) {
|
|
1557
|
-
return this.withClient(async () => {
|
|
1558
|
-
let remotePath = `${this.bucketName}/${key}`;
|
|
1559
|
-
remotePath = remotePath + "";
|
|
1560
|
-
await this.ensureDirectoriesExist(remotePath);
|
|
1561
|
-
if (body instanceof stream2.Readable) {
|
|
1562
|
-
await this.client.put(body, remotePath);
|
|
1563
|
-
} else if (body instanceof Buffer) {
|
|
1564
|
-
await this.client.put(Buffer.from(body), remotePath);
|
|
1565
|
-
} else {
|
|
1566
|
-
await this.client.put(Buffer.from(String(body)), remotePath);
|
|
1567
|
-
}
|
|
1568
|
-
return { key };
|
|
1569
|
-
});
|
|
1570
|
-
}
|
|
1571
|
-
async delete(key) {
|
|
1572
|
-
return this.withClient(async () => {
|
|
1573
|
-
await this.client.delete(`${this.bucketName}/${key}`);
|
|
1574
|
-
return true;
|
|
1575
|
-
});
|
|
1576
|
-
}
|
|
1577
|
-
async getObject(key) {
|
|
1578
|
-
await this.initializeClient();
|
|
1579
|
-
const remotePath = `${this.bucketName}/${key}`;
|
|
1580
|
-
const stats = await this.client.stat(remotePath);
|
|
1581
|
-
const data = await this.client.get(remotePath);
|
|
1582
|
-
let stream3;
|
|
1583
|
-
if (Buffer.isBuffer(data) || typeof data === "string") {
|
|
1584
|
-
stream3 = stream2.Readable.from(data);
|
|
1585
|
-
} else if (data instanceof stream2.Readable) {
|
|
1586
|
-
stream3 = data;
|
|
1587
|
-
} else {
|
|
1588
|
-
throw new Error("Unsupported stream type returned by SFTP client");
|
|
1589
|
-
}
|
|
1590
|
-
const cleanup = async () => {
|
|
1591
|
-
try {
|
|
1592
|
-
await this.client.end();
|
|
1593
|
-
} catch (e) {
|
|
1594
|
-
}
|
|
1595
|
-
};
|
|
1596
|
-
stream3.on("end", cleanup);
|
|
1597
|
-
stream3.on("error", cleanup);
|
|
1598
|
-
return {
|
|
1599
|
-
body: stream3,
|
|
1600
|
-
contentLength: stats.size,
|
|
1601
|
-
lastModified: stats.modifyTime ? new Date(stats.modifyTime) : /* @__PURE__ */ new Date(),
|
|
1602
|
-
metadata: {}
|
|
1603
|
-
};
|
|
1604
|
-
}
|
|
1605
|
-
listAll(options) {
|
|
1606
|
-
throw new Error("Method not implemented.");
|
|
1607
|
-
}
|
|
1608
|
-
getHeadObject(key) {
|
|
1609
|
-
throw new Error("Method not implemented.");
|
|
1610
|
-
}
|
|
1611
|
-
getDownloadUrl(key, expiresInMinutes) {
|
|
1612
|
-
throw new Error("Method not implemented.");
|
|
1613
|
-
}
|
|
1614
|
-
getUploadUrl(key, expiresInMinutes) {
|
|
1615
|
-
throw new Error("Method not implemented.");
|
|
1616
|
-
}
|
|
1617
|
-
createUploadWriteStream(key) {
|
|
1618
|
-
throw new Error("Method not implemented.");
|
|
1619
|
-
}
|
|
1620
|
-
getHeadBucket() {
|
|
1621
|
-
throw new Error("Method not implemented.");
|
|
1622
|
-
}
|
|
1623
|
-
generateUploadIdMultipart(key) {
|
|
1624
|
-
throw new Error("Method not implemented.");
|
|
1625
|
-
}
|
|
1626
|
-
listMultipartUploadsForBucket() {
|
|
1627
|
-
throw new Error("Method not implemented.");
|
|
1628
|
-
}
|
|
1629
|
-
listMultipartUploadsForKey(key, uploadId) {
|
|
1630
|
-
throw new Error("Method not implemented.");
|
|
1631
|
-
}
|
|
1632
|
-
uploadMultipart(key, file, partNumber, uploadId) {
|
|
1633
|
-
throw new Error("Method not implemented.");
|
|
1634
|
-
}
|
|
1635
|
-
completeMultipartUpload(key, uploadId) {
|
|
1636
|
-
throw new Error("Method not implemented.");
|
|
1637
|
-
}
|
|
1638
|
-
abortMultipartUpload(key, uploadId) {
|
|
1639
|
-
throw new Error("Method not implemented.");
|
|
1640
|
-
}
|
|
1641
|
-
getMultipartUploadPresignedUrl(key, uploadId, partNumber, expiresInMinutes) {
|
|
1642
|
-
throw new Error("Method not implemented.");
|
|
1643
|
-
}
|
|
1644
|
-
};
|
|
1645
|
-
var FtpStorageService = class {
|
|
1646
|
-
constructor(bucketName, options) {
|
|
1647
|
-
this.bucketName = bucketName;
|
|
1648
|
-
this.options = options || {};
|
|
1649
|
-
this.client = new basicFtp.Client();
|
|
1650
|
-
}
|
|
1651
|
-
listAll(options) {
|
|
1652
|
-
throw new Error("Method not implemented.");
|
|
1653
|
-
}
|
|
1654
|
-
async initializeClient() {
|
|
1655
|
-
var _a, _b, _c, _d, _e;
|
|
1656
|
-
const host = ((_a = this == null ? void 0 : this.options) == null ? void 0 : _a.host) || process.env.FTP_HOST;
|
|
1657
|
-
const port = parseInt(
|
|
1658
|
-
String(((_b = this == null ? void 0 : this.options) == null ? void 0 : _b.port) || process.env.FTP_PORT),
|
|
1659
|
-
10
|
|
1660
|
-
);
|
|
1661
|
-
const user = ((_c = this == null ? void 0 : this.options) == null ? void 0 : _c.user) || process.env.FTP_USER;
|
|
1662
|
-
const password = ((_d = this == null ? void 0 : this.options) == null ? void 0 : _d.password) || process.env.FTP_PASSWORD;
|
|
1663
|
-
await this.client.access({
|
|
1664
|
-
host,
|
|
1665
|
-
port,
|
|
1666
|
-
user,
|
|
1667
|
-
password,
|
|
1668
|
-
secure: ((_e = this == null ? void 0 : this.options) == null ? void 0 : _e.secure) || false
|
|
1669
|
-
});
|
|
1670
|
-
}
|
|
1671
|
-
async withClient(fn) {
|
|
1672
|
-
try {
|
|
1673
|
-
await this.initializeClient();
|
|
1674
|
-
return await fn();
|
|
1675
|
-
} finally {
|
|
1676
|
-
this.client.close();
|
|
1677
|
-
}
|
|
1678
|
-
}
|
|
1679
|
-
async list(options) {
|
|
1680
|
-
return this.withClient(async () => {
|
|
1681
|
-
const prefix = options.prefix || "";
|
|
1682
|
-
const path = `${this.bucketName}/${prefix}`;
|
|
1683
|
-
try {
|
|
1684
|
-
const list = await this.client.list(path);
|
|
1685
|
-
const items = list.map(
|
|
1686
|
-
(item) => ({
|
|
1687
|
-
key: prefix + item.name,
|
|
1688
|
-
lastModified: item.modifiedAt || /* @__PURE__ */ new Date(),
|
|
1689
|
-
size: item.size,
|
|
1690
|
-
eTag: ""
|
|
1691
|
-
})
|
|
1692
|
-
);
|
|
1693
|
-
return {
|
|
1694
|
-
items,
|
|
1695
|
-
pagination: null,
|
|
1696
|
-
count: items.length
|
|
1697
|
-
};
|
|
1698
|
-
} catch (e) {
|
|
1699
|
-
return { items: [], pagination: null, count: 0 };
|
|
1700
|
-
}
|
|
1701
|
-
});
|
|
1702
|
-
}
|
|
1703
|
-
async getObject(key) {
|
|
1704
|
-
await this.initializeClient();
|
|
1705
|
-
const passThrough = new stream2.PassThrough();
|
|
1706
|
-
const path = `${this.bucketName}/${key}`;
|
|
1707
|
-
const stats = await this.client.size(path);
|
|
1708
|
-
this.client.downloadTo(passThrough, path).then(() => passThrough.end()).catch((err) => passThrough.emit("error", err));
|
|
1709
|
-
const cleanup = () => {
|
|
1710
|
-
this.client.close();
|
|
1711
|
-
};
|
|
1712
|
-
passThrough.on("end", cleanup);
|
|
1713
|
-
passThrough.on("error", cleanup);
|
|
1714
|
-
return {
|
|
1715
|
-
body: passThrough,
|
|
1716
|
-
contentLength: stats,
|
|
1717
|
-
lastModified: /* @__PURE__ */ new Date(),
|
|
1718
|
-
metadata: {}
|
|
1719
|
-
};
|
|
1720
|
-
}
|
|
1721
|
-
async upload(key, body) {
|
|
1722
|
-
return this.withClient(async () => {
|
|
1723
|
-
await this.client.cd("/");
|
|
1724
|
-
try {
|
|
1725
|
-
await this.client.cd(this.bucketName);
|
|
1726
|
-
} catch (e) {
|
|
1727
|
-
await this.client.send(`MKD ${this.bucketName}`);
|
|
1728
|
-
await this.client.cd(this.bucketName);
|
|
1729
|
-
}
|
|
1730
|
-
const parts = key.split("/");
|
|
1731
|
-
parts.pop();
|
|
1732
|
-
for (const part of parts) {
|
|
1733
|
-
if (!part)
|
|
1734
|
-
continue;
|
|
1735
|
-
try {
|
|
1736
|
-
await this.client.cd(part);
|
|
1737
|
-
} catch (e) {
|
|
1738
|
-
await this.client.send(`MKD ${part}`);
|
|
1739
|
-
await this.client.cd(part);
|
|
1740
|
-
}
|
|
1741
|
-
}
|
|
1742
|
-
await this.client.cd("/");
|
|
1743
|
-
const fullPath = `${this.bucketName}/${key}`;
|
|
1744
|
-
const stream3 = body instanceof stream2.Readable ? body : stream2.Readable.from([body]);
|
|
1745
|
-
await this.client.uploadFrom(stream3, fullPath);
|
|
1746
|
-
return { key };
|
|
1747
|
-
});
|
|
1748
|
-
}
|
|
1749
|
-
async delete(key) {
|
|
1750
|
-
return this.withClient(async () => {
|
|
1751
|
-
await this.client.remove(`${this.bucketName}/${key}`);
|
|
1752
|
-
return true;
|
|
976
|
+
const presignedUrl = await s3RequestPresigner.getSignedUrl(this.s3Client, new clientS3.UploadPartCommand(uploadPartParams), {
|
|
977
|
+
expiresIn
|
|
1753
978
|
});
|
|
1754
|
-
|
|
1755
|
-
async close() {
|
|
1756
|
-
this.client.close();
|
|
1757
|
-
}
|
|
1758
|
-
// Unsupported Operations
|
|
1759
|
-
async getDownloadUrl(_key, _expiresInMinutes) {
|
|
1760
|
-
throw new Error("FTP does not support pre-signed URLs");
|
|
1761
|
-
}
|
|
1762
|
-
async getUploadUrl(_key, _expiresInMinutes) {
|
|
1763
|
-
throw new Error("FTP does not support pre-signed URLs");
|
|
1764
|
-
}
|
|
1765
|
-
async getHeadObject(_key) {
|
|
1766
|
-
throw new Error("Operation not supported");
|
|
1767
|
-
}
|
|
1768
|
-
createUploadWriteStream(_key) {
|
|
1769
|
-
throw new Error("Operation not supported");
|
|
1770
|
-
}
|
|
1771
|
-
async getHeadBucket() {
|
|
1772
|
-
throw new Error("Operation not supported");
|
|
1773
|
-
}
|
|
1774
|
-
async generateUploadIdMultipart(_key) {
|
|
1775
|
-
throw new Error("Multipart upload is not supported");
|
|
1776
|
-
}
|
|
1777
|
-
async listMultipartUploadsForBucket() {
|
|
1778
|
-
throw new Error("Multipart upload is not supported");
|
|
1779
|
-
}
|
|
1780
|
-
async listMultipartUploadsForKey(_key, _uploadId) {
|
|
1781
|
-
throw new Error("Multipart upload is not supported");
|
|
1782
|
-
}
|
|
1783
|
-
async uploadMultipart(_key, _file, _partNumber, _uploadId) {
|
|
1784
|
-
throw new Error("Multipart upload is not supported");
|
|
1785
|
-
}
|
|
1786
|
-
async completeMultipartUpload(_key, _uploadId) {
|
|
1787
|
-
throw new Error("Multipart upload is not supported");
|
|
1788
|
-
}
|
|
1789
|
-
async abortMultipartUpload(_key, _uploadId) {
|
|
1790
|
-
throw new Error("Method not implemented.");
|
|
1791
|
-
}
|
|
1792
|
-
async getMultipartUploadPresignedUrl(_key, _uploadId, _partNumber, _expiresInMinutes) {
|
|
1793
|
-
throw new Error("Multipart upload is not supported");
|
|
979
|
+
return presignedUrl;
|
|
1794
980
|
}
|
|
1795
981
|
};
|
|
982
|
+
__name(_S3StorageService, "S3StorageService");
|
|
983
|
+
var S3StorageService = _S3StorageService;
|
|
1796
984
|
|
|
1797
985
|
// src/shared/utils/constants.ts
|
|
1798
986
|
var OBJECT_STORAGE_SERVICE_TYPES = {
|
|
1799
987
|
AWS_S3: "aws_s3",
|
|
1800
|
-
AZURE_BLOB_STORAGE: "azure_blob_storage"
|
|
1801
|
-
FTP: "ftp",
|
|
1802
|
-
SFTP: "sftp"
|
|
988
|
+
AZURE_BLOB_STORAGE: "azure_blob_storage"
|
|
1803
989
|
};
|
|
1804
990
|
|
|
1805
991
|
// src/services/objectStorageFactory.service.ts
|
|
1806
|
-
var
|
|
992
|
+
var _ObjectStorageFactory = class _ObjectStorageFactory {
|
|
1807
993
|
static async instance(bucketName, options) {
|
|
1808
994
|
var _a, _b;
|
|
1809
995
|
const provider = ((_a = options == null ? void 0 : options.provider) == null ? void 0 : _a.toLowerCase()) || ((_b = process.env.OBJECT_STORAGE_SERVICE) == null ? void 0 : _b.toLowerCase());
|
|
@@ -1811,21 +997,17 @@ var ObjectStorageFactory = class {
|
|
|
1811
997
|
case OBJECT_STORAGE_SERVICE_TYPES.AWS_S3:
|
|
1812
998
|
return new S3StorageService(bucketName, options);
|
|
1813
999
|
case OBJECT_STORAGE_SERVICE_TYPES.AZURE_BLOB_STORAGE:
|
|
1814
|
-
return new BlobStorageService(bucketName
|
|
1815
|
-
case OBJECT_STORAGE_SERVICE_TYPES.FTP:
|
|
1816
|
-
return new FtpStorageService(bucketName, options);
|
|
1817
|
-
case OBJECT_STORAGE_SERVICE_TYPES.SFTP:
|
|
1818
|
-
return new SftpStorageService(bucketName, options);
|
|
1000
|
+
return new BlobStorageService(bucketName);
|
|
1819
1001
|
default:
|
|
1820
|
-
throw new Error(
|
|
1821
|
-
`Unsupported object storage provider: ${provider}`
|
|
1822
|
-
);
|
|
1002
|
+
throw new Error(`Unsupported object storage provider: ${provider}`);
|
|
1823
1003
|
}
|
|
1824
1004
|
}
|
|
1825
1005
|
};
|
|
1006
|
+
__name(_ObjectStorageFactory, "ObjectStorageFactory");
|
|
1007
|
+
var ObjectStorageFactory = _ObjectStorageFactory;
|
|
1826
1008
|
|
|
1827
1009
|
// src/services/objectStorage.service.ts
|
|
1828
|
-
var
|
|
1010
|
+
var _ObjectStorageService = class _ObjectStorageService {
|
|
1829
1011
|
constructor(bucketName, options) {
|
|
1830
1012
|
_ObjectStorageService.bucketName = bucketName;
|
|
1831
1013
|
if (options)
|
|
@@ -1841,56 +1023,38 @@ var ObjectStorageService = class _ObjectStorageService {
|
|
|
1841
1023
|
*
|
|
1842
1024
|
* @param {ListRequestOptions} options - The options to apply to the list operation.
|
|
1843
1025
|
* @param {string} [bucketName] - The name of the bucket to list objects from. If not provided, the default bucket name will be used.
|
|
1844
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
1845
1026
|
* @return {Promise<ListResponse>} A promise that resolves to the list of objects.
|
|
1846
1027
|
*/
|
|
1847
|
-
static async list(options, bucketName
|
|
1848
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
1849
|
-
bucketName,
|
|
1850
|
-
objectStorageOptions
|
|
1851
|
-
).then((instance) => instance.list(options));
|
|
1028
|
+
static async list(options, bucketName) {
|
|
1029
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.list(options));
|
|
1852
1030
|
}
|
|
1853
1031
|
/**
|
|
1854
1032
|
* Retrieves a list of all objects from the object storage service.
|
|
1855
1033
|
*
|
|
1856
1034
|
* @param {ListRequestOptions} options - The options to apply to the list operation.
|
|
1857
1035
|
* @param {string} [bucketName] - The name of the bucket to list objects from. If not provided, the default bucket name will be used.
|
|
1858
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
1859
1036
|
* @return {Promise<ListResponse>} A promise that resolves to the list of all objects.
|
|
1860
1037
|
*/
|
|
1861
|
-
static async listAll(options, bucketName
|
|
1862
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
1863
|
-
bucketName,
|
|
1864
|
-
objectStorageOptions
|
|
1865
|
-
).then((instance) => instance.listAll(options));
|
|
1038
|
+
static async listAll(options, bucketName) {
|
|
1039
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.listAll(options));
|
|
1866
1040
|
}
|
|
1867
1041
|
/**
|
|
1868
1042
|
* Retrieves an object from the object storage service.
|
|
1869
1043
|
*
|
|
1870
1044
|
* @param {string} key - The key of the object to retrieve.
|
|
1871
1045
|
* @param {string} [bucketName] - The name of the bucket where the object is stored. If not provided, the default bucket name will be used.
|
|
1872
|
-
* @param {IGetObjectOptions} [options] - The options to apply to the get operation.
|
|
1873
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
1874
1046
|
* @return {Promise<GetObjectResponse>} A promise that resolves to the retrieved object.
|
|
1875
1047
|
*/
|
|
1876
|
-
static async getObject(key, bucketName, options
|
|
1877
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
1878
|
-
bucketName,
|
|
1879
|
-
objectStorageOptions
|
|
1880
|
-
).then((instance) => instance.getObject(key, options));
|
|
1048
|
+
static async getObject(key, bucketName, options) {
|
|
1049
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.getObject(key, options));
|
|
1881
1050
|
}
|
|
1882
1051
|
/**
|
|
1883
1052
|
* Retrieves an object info (without file content) from the object storage service.
|
|
1884
1053
|
* @param key - The key of the object to retrieve.
|
|
1885
|
-
* @param bucketName - The name of the bucket where the object is stored. If not provided, the default bucket name will be used.
|
|
1886
|
-
* @param objectStorageOptions - The options for the object storage service.
|
|
1887
1054
|
* @returns A promise that resolves to the info of the file.
|
|
1888
1055
|
*/
|
|
1889
|
-
static async getHeadObject(key, bucketName
|
|
1890
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
1891
|
-
bucketName,
|
|
1892
|
-
objectStorageOptions
|
|
1893
|
-
).then((instance) => instance.getHeadObject(key));
|
|
1056
|
+
static async getHeadObject(key, bucketName) {
|
|
1057
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.getHeadObject(key));
|
|
1894
1058
|
}
|
|
1895
1059
|
/**
|
|
1896
1060
|
* Retrieves a signed URL for the specified object in the object storage service.
|
|
@@ -1898,14 +1062,10 @@ var ObjectStorageService = class _ObjectStorageService {
|
|
|
1898
1062
|
* @param {string} key - The key of the object for which to generate the signed URL.
|
|
1899
1063
|
* @param {number} expiresInMinutes - The number of minutes until the signed URL expires.
|
|
1900
1064
|
* @param {string} [bucketName] - The name of the bucket where the object is stored. If not provided, the default bucket name will be used.
|
|
1901
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
1902
1065
|
* @return {Promise<string>} A promise that resolves to the generated signed URL.
|
|
1903
1066
|
*/
|
|
1904
|
-
static async getDownloadUrl(key, expiresInMinutes, bucketName
|
|
1905
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
1906
|
-
bucketName,
|
|
1907
|
-
objectStorageOptions
|
|
1908
|
-
).then((instance) => instance.getDownloadUrl(key, expiresInMinutes));
|
|
1067
|
+
static async getDownloadUrl(key, expiresInMinutes, bucketName) {
|
|
1068
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.getDownloadUrl(key, expiresInMinutes));
|
|
1909
1069
|
}
|
|
1910
1070
|
/**
|
|
1911
1071
|
* Retrieves an upload URL for the specified object in the object storage service.
|
|
@@ -1913,14 +1073,10 @@ var ObjectStorageService = class _ObjectStorageService {
|
|
|
1913
1073
|
* @param {string} key - The key of the object for which to generate the upload URL.
|
|
1914
1074
|
* @param {number} expiresInMinutes - The number of minutes until the upload URL expires.
|
|
1915
1075
|
* @param {string} [bucketName] - The name of the bucket where the object will be stored. If not provided, the default bucket name will be used.
|
|
1916
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
1917
1076
|
* @return {Promise<string>} A promise that resolves to the generated upload URL.
|
|
1918
1077
|
*/
|
|
1919
|
-
static async getUploadUrl(key, expiresInMinutes, bucketName
|
|
1920
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
1921
|
-
bucketName,
|
|
1922
|
-
objectStorageOptions
|
|
1923
|
-
).then((instance) => instance.getUploadUrl(key, expiresInMinutes));
|
|
1078
|
+
static async getUploadUrl(key, expiresInMinutes, bucketName) {
|
|
1079
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.getUploadUrl(key, expiresInMinutes));
|
|
1924
1080
|
}
|
|
1925
1081
|
/**
|
|
1926
1082
|
* Uploads a file to the object storage service.
|
|
@@ -1929,48 +1085,39 @@ var ObjectStorageService = class _ObjectStorageService {
|
|
|
1929
1085
|
* @param {FileContent} body - The content of the file to upload.
|
|
1930
1086
|
* @param {Object} [metadata] - Optional metadata to associate with the object.
|
|
1931
1087
|
* @param {string} [bucketName] - The name of the bucket where the object will be stored. If not provided, the default bucket name will be used.
|
|
1932
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
1933
1088
|
* @return {Promise<UploadResponse>} A promise that resolves to the response of the upload operation.
|
|
1934
1089
|
*/
|
|
1935
|
-
static async upload(key, body, metadata, bucketName
|
|
1936
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
1937
|
-
bucketName,
|
|
1938
|
-
objectStorageOptions
|
|
1939
|
-
).then((instance) => instance.upload(key, body, metadata));
|
|
1090
|
+
static async upload(key, body, metadata, bucketName) {
|
|
1091
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.upload(key, body, metadata));
|
|
1940
1092
|
}
|
|
1941
1093
|
/**
|
|
1942
1094
|
* Creates an upload write stream for the specified key in the object storage service.
|
|
1943
1095
|
*
|
|
1944
1096
|
* @param {string} key - The key of the object to create the upload write stream for.
|
|
1945
1097
|
* @param {string} [bucketName] - The name of the bucket where the object will be stored. If not provided, the default bucket name will be used.
|
|
1946
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
1947
1098
|
* @return {Promise<CreateUploadWriteStreamResponse>} A promise that resolves to the response of the upload operation.
|
|
1948
1099
|
*/
|
|
1949
|
-
static async createUploadWriteStream(key, bucketName
|
|
1950
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
1951
|
-
bucketName,
|
|
1952
|
-
objectStorageOptions
|
|
1953
|
-
).then((instance) => instance.createUploadWriteStream(key));
|
|
1100
|
+
static async createUploadWriteStream(key, bucketName) {
|
|
1101
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.createUploadWriteStream(key));
|
|
1954
1102
|
}
|
|
1955
1103
|
/**
|
|
1956
1104
|
* Deletes an object or multiple objects from the object storage service.
|
|
1957
1105
|
*
|
|
1958
1106
|
* @param {string | string[]} key - The key or array of keys of the objects to delete.
|
|
1959
1107
|
* @param {string} [bucketName] - The name of the bucket where the objects are stored. If not provided, the default bucket name will be used.
|
|
1960
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
1961
1108
|
* @return {Promise<{ key: string; deleted: boolean; error?: string }[] | boolean>} A promise that resolves to an array of objects containing the key, deleted status, and an optional error message for each object deleted, or a boolean value indicating the success of the deletion.
|
|
1962
1109
|
*/
|
|
1963
|
-
static async delete(key, bucketName
|
|
1964
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
1965
|
-
bucketName,
|
|
1966
|
-
objectStorageOptions
|
|
1967
|
-
).then(async (instance) => {
|
|
1110
|
+
static async delete(key, bucketName) {
|
|
1111
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then(async (instance) => {
|
|
1968
1112
|
if (Array.isArray(key)) {
|
|
1969
1113
|
const deleteBlobPromises = key.map(async (blobName) => {
|
|
1970
1114
|
var _a;
|
|
1971
1115
|
try {
|
|
1972
1116
|
await instance.delete(blobName);
|
|
1973
|
-
return {
|
|
1117
|
+
return {
|
|
1118
|
+
key: blobName,
|
|
1119
|
+
deleted: true
|
|
1120
|
+
};
|
|
1974
1121
|
} catch (error) {
|
|
1975
1122
|
return {
|
|
1976
1123
|
key: blobName,
|
|
@@ -1989,28 +1136,20 @@ var ObjectStorageService = class _ObjectStorageService {
|
|
|
1989
1136
|
* Retrieves the head bucket from the object storage service.
|
|
1990
1137
|
*
|
|
1991
1138
|
* @param {string} [bucketName] - The name of the bucket. If not provided, the default bucket name will be used.
|
|
1992
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
1993
1139
|
* @return {Promise<HeadBucketResponse>} A promise that resolves to the head bucket response.
|
|
1994
1140
|
*/
|
|
1995
|
-
static async getHeadBucket(bucketName
|
|
1996
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
1997
|
-
bucketName,
|
|
1998
|
-
objectStorageOptions
|
|
1999
|
-
).then((instance) => instance.getHeadBucket());
|
|
1141
|
+
static async getHeadBucket(bucketName) {
|
|
1142
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.getHeadBucket());
|
|
2000
1143
|
}
|
|
2001
1144
|
/**
|
|
2002
1145
|
* Generates a unique upload ID for a multipart upload.
|
|
2003
1146
|
*
|
|
2004
1147
|
* @param {string} key - The key of the object to upload.
|
|
2005
1148
|
* @param {string} [bucketName] - The name of the bucket. If not provided, the default bucket name will be used.
|
|
2006
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
2007
1149
|
* @return {Promise<string>} A promise that resolves to the generated upload ID.
|
|
2008
1150
|
*/
|
|
2009
|
-
static async generateUploadIdMultipart(key, bucketName
|
|
2010
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
2011
|
-
bucketName,
|
|
2012
|
-
objectStorageOptions
|
|
2013
|
-
).then((instance) => instance.generateUploadIdMultipart(key));
|
|
1151
|
+
static async generateUploadIdMultipart(key, bucketName) {
|
|
1152
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.generateUploadIdMultipart(key));
|
|
2014
1153
|
}
|
|
2015
1154
|
/**
|
|
2016
1155
|
* Retrieves a list of multipart uploads for a specified key in the object storage service.
|
|
@@ -2018,29 +1157,19 @@ var ObjectStorageService = class _ObjectStorageService {
|
|
|
2018
1157
|
* @param {string} key - The key of the object to retrieve uploads for.
|
|
2019
1158
|
* @param {string} [bucketName] - The name of the bucket. If not provided, the default bucket name will be used.
|
|
2020
1159
|
* @param {string} [uploadId] - The upload ID to filter the results by.
|
|
2021
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
2022
1160
|
* @return {Promise<ListPartsMultipartUploadResponse>} A promise that resolves to the list of multipart uploads for the specified key.
|
|
2023
1161
|
*/
|
|
2024
|
-
static async listMultipartUploadsForKey(key, bucketName, uploadId
|
|
2025
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
2026
|
-
bucketName,
|
|
2027
|
-
objectStorageOptions
|
|
2028
|
-
).then(
|
|
2029
|
-
(instance) => instance.listMultipartUploadsForKey(key, uploadId)
|
|
2030
|
-
);
|
|
1162
|
+
static async listMultipartUploadsForKey(key, bucketName, uploadId) {
|
|
1163
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.listMultipartUploadsForKey(key, uploadId));
|
|
2031
1164
|
}
|
|
2032
1165
|
/**
|
|
2033
1166
|
* Retrieves a list of all multipart uploads for a specified bucket in the object storage service.
|
|
2034
1167
|
*
|
|
2035
1168
|
* @param {string} [bucketName] - The name of the bucket. If not provided, the default bucket name will be used.
|
|
2036
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
2037
1169
|
* @return {Promise<ListMultipartUploadsResponse>} A promise that resolves to the list of multipart uploads for the specified bucket.
|
|
2038
1170
|
*/
|
|
2039
|
-
static async listMultipartUploadsForBucket(bucketName
|
|
2040
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
2041
|
-
bucketName,
|
|
2042
|
-
objectStorageOptions
|
|
2043
|
-
).then((instance) => instance.listMultipartUploadsForBucket());
|
|
1171
|
+
static async listMultipartUploadsForBucket(bucketName) {
|
|
1172
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.listMultipartUploadsForBucket());
|
|
2044
1173
|
}
|
|
2045
1174
|
/**
|
|
2046
1175
|
* Uploads a multipart file to the specified bucket in the object storage service.
|
|
@@ -2050,16 +1179,10 @@ var ObjectStorageService = class _ObjectStorageService {
|
|
|
2050
1179
|
* @param {number} partNumber - The number of the part being uploaded.
|
|
2051
1180
|
* @param {string} [uploadId] - The ID of the multipart upload.
|
|
2052
1181
|
* @param {string} [bucketName] - The name of the bucket to upload the file to. If not provided, the default bucket name will be used.
|
|
2053
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
2054
1182
|
* @return {Promise<string>} A Promise that resolves to the base64 encoded block ID of the uploaded part.
|
|
2055
1183
|
*/
|
|
2056
|
-
static async uploadMultipart(key, file, partNumber, uploadId, bucketName
|
|
2057
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
2058
|
-
bucketName,
|
|
2059
|
-
objectStorageOptions
|
|
2060
|
-
).then(
|
|
2061
|
-
(instance) => instance.uploadMultipart(key, file, partNumber, uploadId)
|
|
2062
|
-
);
|
|
1184
|
+
static async uploadMultipart(key, file, partNumber, uploadId, bucketName) {
|
|
1185
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.uploadMultipart(key, file, partNumber, uploadId));
|
|
2063
1186
|
}
|
|
2064
1187
|
/**
|
|
2065
1188
|
* Completes a multipart upload for the specified object in the object storage service.
|
|
@@ -2067,14 +1190,10 @@ var ObjectStorageService = class _ObjectStorageService {
|
|
|
2067
1190
|
* @param {string} key - The key of the object to complete the multipart upload for.
|
|
2068
1191
|
* @param {string} uploadId - The ID of the multipart upload to complete.
|
|
2069
1192
|
* @param {string} [bucketName] - The name of the bucket to complete the multipart upload in. If not provided, the default bucket name will be used.
|
|
2070
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
2071
1193
|
* @return {Promise<void>} A Promise that resolves when the multipart upload is completed.
|
|
2072
1194
|
*/
|
|
2073
|
-
static async completeMultipartUpload(key, uploadId, bucketName
|
|
2074
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
2075
|
-
bucketName,
|
|
2076
|
-
objectStorageOptions
|
|
2077
|
-
).then((instance) => instance.completeMultipartUpload(key, uploadId));
|
|
1195
|
+
static async completeMultipartUpload(key, uploadId, bucketName) {
|
|
1196
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.completeMultipartUpload(key, uploadId));
|
|
2078
1197
|
}
|
|
2079
1198
|
/**
|
|
2080
1199
|
* Aborts a multipart upload for the specified object in the object storage service.
|
|
@@ -2082,14 +1201,10 @@ var ObjectStorageService = class _ObjectStorageService {
|
|
|
2082
1201
|
* @param {string} key - The key of the object to abort the multipart upload for.
|
|
2083
1202
|
* @param {string} uploadId - The ID of the multipart upload to abort.
|
|
2084
1203
|
* @param {string} [bucketName] - The name of the bucket to abort the multipart upload in. If not provided, the default bucket name will be used.
|
|
2085
|
-
* @param {ObjectStorageOptions} [objectStorageOptions] - The options for the object storage service.
|
|
2086
1204
|
* @return {Promise<void>} A Promise that resolves when the multipart upload is aborted.
|
|
2087
1205
|
*/
|
|
2088
|
-
static async abortMultipartUpload(key, uploadId, bucketName
|
|
2089
|
-
return _ObjectStorageService.getObjectStorageServiceInstance(
|
|
2090
|
-
bucketName,
|
|
2091
|
-
objectStorageOptions
|
|
2092
|
-
).then((instance) => instance.abortMultipartUpload(key, uploadId));
|
|
1206
|
+
static async abortMultipartUpload(key, uploadId, bucketName) {
|
|
1207
|
+
return _ObjectStorageService.getObjectStorageServiceInstance(bucketName).then((instance) => instance.abortMultipartUpload(key, uploadId));
|
|
2093
1208
|
}
|
|
2094
1209
|
/**
|
|
2095
1210
|
* Retrieves a presigned URL for a specific part of a multipart upload.
|
|
@@ -2101,16 +1216,13 @@ var ObjectStorageService = class _ObjectStorageService {
|
|
|
2101
1216
|
* @return {Promise<string>} A Promise that resolves to the presigned URL for the specified part of the multipart upload.
|
|
2102
1217
|
*/
|
|
2103
1218
|
static async getMultipartUploadPresignedUrl(key, uploadId, partNumber, expiresInMinutes) {
|
|
2104
|
-
return _ObjectStorageService.getObjectStorageServiceInstance().then(
|
|
2105
|
-
(instance) => instance.getMultipartUploadPresignedUrl(
|
|
2106
|
-
key,
|
|
2107
|
-
uploadId,
|
|
2108
|
-
partNumber,
|
|
2109
|
-
expiresInMinutes
|
|
2110
|
-
)
|
|
2111
|
-
);
|
|
1219
|
+
return _ObjectStorageService.getObjectStorageServiceInstance().then((instance) => instance.getMultipartUploadPresignedUrl(key, uploadId, partNumber, expiresInMinutes));
|
|
2112
1220
|
}
|
|
2113
1221
|
};
|
|
1222
|
+
__name(_ObjectStorageService, "ObjectStorageService");
|
|
1223
|
+
__publicField(_ObjectStorageService, "bucketName");
|
|
1224
|
+
__publicField(_ObjectStorageService, "objectStorageOptions");
|
|
1225
|
+
var ObjectStorageService = _ObjectStorageService;
|
|
2114
1226
|
|
|
2115
1227
|
exports.ObjectStorageService = ObjectStorageService;
|
|
2116
1228
|
//# sourceMappingURL=out.js.map
|