@aws-amplify/storage 4.4.3 → 4.4.4-in-app-messaging.48
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/CHANGELOG.md +35 -348
- package/dist/aws-amplify-storage.js +6523 -5062
- package/dist/aws-amplify-storage.js.map +1 -1
- package/dist/aws-amplify-storage.min.js +5 -5
- package/dist/aws-amplify-storage.min.js.map +1 -1
- package/lib/Storage.d.ts +3 -1
- package/lib/Storage.js +25 -21
- package/lib/Storage.js.map +1 -1
- package/lib/common/S3ClientUtils.d.ts +33 -0
- package/lib/common/S3ClientUtils.js +179 -0
- package/lib/common/S3ClientUtils.js.map +1 -0
- package/lib/common/StorageConstants.d.ts +4 -0
- package/lib/common/StorageConstants.js +10 -0
- package/lib/common/StorageConstants.js.map +1 -0
- package/lib/common/StorageErrorStrings.d.ts +5 -1
- package/lib/common/StorageErrorStrings.js +5 -0
- package/lib/common/StorageErrorStrings.js.map +1 -1
- package/lib/common/StorageUtils.d.ts +4 -0
- package/lib/common/StorageUtils.js +41 -0
- package/lib/common/StorageUtils.js.map +1 -0
- package/lib/providers/AWSS3Provider.d.ts +9 -6
- package/lib/providers/AWSS3Provider.js +197 -149
- package/lib/providers/AWSS3Provider.js.map +1 -1
- package/lib/providers/AWSS3ProviderManagedUpload.d.ts +3 -10
- package/lib/providers/AWSS3ProviderManagedUpload.js +41 -109
- package/lib/providers/AWSS3ProviderManagedUpload.js.map +1 -1
- package/lib/providers/AWSS3UploadTask.d.ts +107 -0
- package/lib/providers/AWSS3UploadTask.js +610 -0
- package/lib/providers/AWSS3UploadTask.js.map +1 -0
- package/lib/providers/axios-http-handler.d.ts +5 -1
- package/lib/providers/axios-http-handler.js +28 -5
- package/lib/providers/axios-http-handler.js.map +1 -1
- package/lib/types/AWSS3Provider.d.ts +24 -4
- package/lib/types/Provider.d.ts +7 -1
- package/lib/types/Storage.d.ts +8 -8
- package/lib-esm/Storage.d.ts +3 -1
- package/lib-esm/Storage.js +25 -21
- package/lib-esm/Storage.js.map +1 -1
- package/lib-esm/common/S3ClientUtils.d.ts +33 -0
- package/lib-esm/common/S3ClientUtils.js +177 -0
- package/lib-esm/common/S3ClientUtils.js.map +1 -0
- package/lib-esm/common/StorageConstants.d.ts +4 -0
- package/lib-esm/common/StorageConstants.js +8 -0
- package/lib-esm/common/StorageConstants.js.map +1 -0
- package/lib-esm/common/StorageErrorStrings.d.ts +5 -1
- package/lib-esm/common/StorageErrorStrings.js +5 -0
- package/lib-esm/common/StorageErrorStrings.js.map +1 -1
- package/lib-esm/common/StorageUtils.d.ts +4 -0
- package/lib-esm/common/StorageUtils.js +39 -0
- package/lib-esm/common/StorageUtils.js.map +1 -0
- package/lib-esm/providers/AWSS3Provider.d.ts +9 -6
- package/lib-esm/providers/AWSS3Provider.js +192 -144
- package/lib-esm/providers/AWSS3Provider.js.map +1 -1
- package/lib-esm/providers/AWSS3ProviderManagedUpload.d.ts +3 -10
- package/lib-esm/providers/AWSS3ProviderManagedUpload.js +44 -112
- package/lib-esm/providers/AWSS3ProviderManagedUpload.js.map +1 -1
- package/lib-esm/providers/AWSS3UploadTask.d.ts +107 -0
- package/lib-esm/providers/AWSS3UploadTask.js +605 -0
- package/lib-esm/providers/AWSS3UploadTask.js.map +1 -0
- package/lib-esm/providers/axios-http-handler.d.ts +5 -1
- package/lib-esm/providers/axios-http-handler.js +28 -5
- package/lib-esm/providers/axios-http-handler.js.map +1 -1
- package/lib-esm/types/AWSS3Provider.d.ts +24 -4
- package/lib-esm/types/Provider.d.ts +7 -1
- package/lib-esm/types/Storage.d.ts +8 -8
- package/package.json +3 -3
- package/src/Storage.ts +85 -27
- package/src/common/S3ClientUtils.ts +168 -0
- package/src/common/StorageConstants.ts +10 -0
- package/src/common/StorageErrorStrings.ts +5 -0
- package/src/common/StorageUtils.ts +51 -0
- package/src/providers/AWSS3Provider.ts +251 -88
- package/src/providers/AWSS3ProviderManagedUpload.ts +346 -397
- package/src/providers/AWSS3UploadTask.ts +543 -0
- package/src/providers/axios-http-handler.ts +221 -186
- package/src/types/AWSS3Provider.ts +48 -7
- package/src/types/Provider.ts +18 -3
- package/src/types/Storage.ts +9 -9
|
@@ -70,9 +70,8 @@ var core_1 = require("@aws-amplify/core");
|
|
|
70
70
|
var client_s3_1 = require("@aws-sdk/client-s3");
|
|
71
71
|
var axios_http_handler_1 = require("./axios-http-handler");
|
|
72
72
|
var events = __importStar(require("events"));
|
|
73
|
+
var S3ClientUtils_1 = require("../common/S3ClientUtils");
|
|
73
74
|
var logger = new core_1.ConsoleLogger('AWSS3ProviderManagedUpload');
|
|
74
|
-
var localTestingStorageEndpoint = 'http://localhost:20005';
|
|
75
|
-
var SET_CONTENT_LENGTH_HEADER = 'contentLengthMiddleware';
|
|
76
75
|
var AWSS3ProviderManagedUpload = /** @class */ (function () {
|
|
77
76
|
function AWSS3ProviderManagedUpload(params, opts, emitter) {
|
|
78
77
|
// Defaults
|
|
@@ -91,10 +90,11 @@ var AWSS3ProviderManagedUpload = /** @class */ (function () {
|
|
|
91
90
|
this.params = params;
|
|
92
91
|
this.opts = opts;
|
|
93
92
|
this.emitter = emitter;
|
|
93
|
+
this.s3client = this._createNewS3Client(opts, emitter);
|
|
94
94
|
}
|
|
95
95
|
AWSS3ProviderManagedUpload.prototype.upload = function () {
|
|
96
96
|
return __awaiter(this, void 0, void 0, function () {
|
|
97
|
-
var _a, putObjectCommand,
|
|
97
|
+
var _a, putObjectCommand, uploadId, numberOfPartsToUpload, parts, start;
|
|
98
98
|
var _this = this;
|
|
99
99
|
return __generator(this, function (_b) {
|
|
100
100
|
switch (_b.label) {
|
|
@@ -104,56 +104,53 @@ var AWSS3ProviderManagedUpload = /** @class */ (function () {
|
|
|
104
104
|
case 1:
|
|
105
105
|
_a.body = _b.sent();
|
|
106
106
|
this.totalBytesToUpload = this.byteLength(this.body);
|
|
107
|
-
if (!(this.totalBytesToUpload <= this.minPartSize)) return [3 /*break*/,
|
|
107
|
+
if (!(this.totalBytesToUpload <= this.minPartSize)) return [3 /*break*/, 2];
|
|
108
108
|
// Multipart upload is not required. Upload the sanitized body as is
|
|
109
109
|
this.params.Body = this.body;
|
|
110
110
|
putObjectCommand = new client_s3_1.PutObjectCommand(this.params);
|
|
111
|
-
return [
|
|
112
|
-
case 2:
|
|
113
|
-
|
|
114
|
-
return [2 /*return*/, s3.send(putObjectCommand)];
|
|
115
|
-
case 3: return [4 /*yield*/, this.createMultiPartUpload()];
|
|
116
|
-
case 4:
|
|
111
|
+
return [2 /*return*/, this.s3client.send(putObjectCommand)];
|
|
112
|
+
case 2: return [4 /*yield*/, this.createMultiPartUpload()];
|
|
113
|
+
case 3:
|
|
117
114
|
uploadId = _b.sent();
|
|
118
115
|
numberOfPartsToUpload = Math.ceil(this.totalBytesToUpload / this.minPartSize);
|
|
119
116
|
parts = this.createParts();
|
|
120
117
|
start = 0;
|
|
121
|
-
_b.label =
|
|
122
|
-
case
|
|
123
|
-
if (!(start < numberOfPartsToUpload)) return [3 /*break*/,
|
|
118
|
+
_b.label = 4;
|
|
119
|
+
case 4:
|
|
120
|
+
if (!(start < numberOfPartsToUpload)) return [3 /*break*/, 9];
|
|
124
121
|
/** This first block will try to cancel the upload if the cancel
|
|
125
122
|
* request came before any parts uploads have started.
|
|
126
123
|
**/
|
|
127
124
|
return [4 /*yield*/, this.checkIfUploadCancelled(uploadId)];
|
|
128
|
-
case
|
|
125
|
+
case 5:
|
|
129
126
|
/** This first block will try to cancel the upload if the cancel
|
|
130
127
|
* request came before any parts uploads have started.
|
|
131
128
|
**/
|
|
132
129
|
_b.sent();
|
|
133
130
|
// Upload as many as `queueSize` parts simultaneously
|
|
134
131
|
return [4 /*yield*/, this.uploadParts(uploadId, parts.slice(start, start + this.queueSize))];
|
|
135
|
-
case
|
|
132
|
+
case 6:
|
|
136
133
|
// Upload as many as `queueSize` parts simultaneously
|
|
137
134
|
_b.sent();
|
|
138
135
|
/** Call cleanup a second time in case there were part upload requests
|
|
139
136
|
* in flight. This is to ensure that all parts are cleaned up.
|
|
140
137
|
*/
|
|
141
138
|
return [4 /*yield*/, this.checkIfUploadCancelled(uploadId)];
|
|
142
|
-
case
|
|
139
|
+
case 7:
|
|
143
140
|
/** Call cleanup a second time in case there were part upload requests
|
|
144
141
|
* in flight. This is to ensure that all parts are cleaned up.
|
|
145
142
|
*/
|
|
146
143
|
_b.sent();
|
|
147
|
-
_b.label =
|
|
148
|
-
case
|
|
144
|
+
_b.label = 8;
|
|
145
|
+
case 8:
|
|
149
146
|
start += this.queueSize;
|
|
150
|
-
return [3 /*break*/,
|
|
151
|
-
case
|
|
147
|
+
return [3 /*break*/, 4];
|
|
148
|
+
case 9:
|
|
152
149
|
parts.map(function (part) {
|
|
153
150
|
_this.removeEventListener(part);
|
|
154
151
|
});
|
|
155
152
|
return [4 /*yield*/, this.finishMultiPartUpload(uploadId)];
|
|
156
|
-
case
|
|
153
|
+
case 10:
|
|
157
154
|
// Step 3: Finalize the upload such that S3 can recreate the file
|
|
158
155
|
return [2 /*return*/, _b.sent()];
|
|
159
156
|
}
|
|
@@ -176,31 +173,13 @@ var AWSS3ProviderManagedUpload = /** @class */ (function () {
|
|
|
176
173
|
};
|
|
177
174
|
AWSS3ProviderManagedUpload.prototype.createMultiPartUpload = function () {
|
|
178
175
|
return __awaiter(this, void 0, void 0, function () {
|
|
179
|
-
var createMultiPartUploadCommand,
|
|
180
|
-
var _this = this;
|
|
176
|
+
var createMultiPartUploadCommand, response;
|
|
181
177
|
return __generator(this, function (_a) {
|
|
182
178
|
switch (_a.label) {
|
|
183
179
|
case 0:
|
|
184
180
|
createMultiPartUploadCommand = new client_s3_1.CreateMultipartUploadCommand(this.params);
|
|
185
|
-
return [4 /*yield*/, this.
|
|
181
|
+
return [4 /*yield*/, this.s3client.send(createMultiPartUploadCommand)];
|
|
186
182
|
case 1:
|
|
187
|
-
s3 = _a.sent();
|
|
188
|
-
// @aws-sdk/client-s3 seems to be ignoring the `ContentType` parameter, so we
|
|
189
|
-
// are explicitly adding it via middleware.
|
|
190
|
-
// https://github.com/aws/aws-sdk-js-v3/issues/2000
|
|
191
|
-
s3.middlewareStack.add(function (next) { return function (args) {
|
|
192
|
-
if (_this.params.ContentType &&
|
|
193
|
-
args &&
|
|
194
|
-
args.request &&
|
|
195
|
-
args.request.headers) {
|
|
196
|
-
args.request.headers['Content-Type'] = _this.params.ContentType;
|
|
197
|
-
}
|
|
198
|
-
return next(args);
|
|
199
|
-
}; }, {
|
|
200
|
-
step: 'build',
|
|
201
|
-
});
|
|
202
|
-
return [4 /*yield*/, s3.send(createMultiPartUploadCommand)];
|
|
203
|
-
case 2:
|
|
204
183
|
response = _a.sent();
|
|
205
184
|
logger.debug(response.UploadId);
|
|
206
185
|
return [2 /*return*/, response.UploadId];
|
|
@@ -221,17 +200,18 @@ var AWSS3ProviderManagedUpload = /** @class */ (function () {
|
|
|
221
200
|
case 0:
|
|
222
201
|
_a.trys.push([0, 2, , 3]);
|
|
223
202
|
return [4 /*yield*/, Promise.all(parts.map(function (part) { return __awaiter(_this, void 0, void 0, function () {
|
|
224
|
-
var
|
|
203
|
+
var options, _a, Key, Bucket, SSECustomerAlgorithm, SSECustomerKey, SSECustomerKeyMD5, res;
|
|
225
204
|
return __generator(this, function (_b) {
|
|
226
205
|
switch (_b.label) {
|
|
227
206
|
case 0:
|
|
228
207
|
this.setupEventListener(part);
|
|
229
|
-
|
|
230
|
-
case 1:
|
|
231
|
-
s3 = _b.sent();
|
|
208
|
+
options = { emitter: part.emitter };
|
|
232
209
|
_a = this.params, Key = _a.Key, Bucket = _a.Bucket, SSECustomerAlgorithm = _a.SSECustomerAlgorithm, SSECustomerKey = _a.SSECustomerKey, SSECustomerKeyMD5 = _a.SSECustomerKeyMD5;
|
|
233
|
-
return [
|
|
234
|
-
Bucket: Bucket }, (SSECustomerAlgorithm && { SSECustomerAlgorithm: SSECustomerAlgorithm })), (SSECustomerKey && { SSECustomerKey: SSECustomerKey })), (SSECustomerKeyMD5 && { SSECustomerKeyMD5: SSECustomerKeyMD5 }))))];
|
|
210
|
+
return [4 /*yield*/, this.s3client.send(new client_s3_1.UploadPartCommand(__assign(__assign(__assign({ PartNumber: part.partNumber, Body: part.bodyPart, UploadId: uploadId, Key: Key,
|
|
211
|
+
Bucket: Bucket }, (SSECustomerAlgorithm && { SSECustomerAlgorithm: SSECustomerAlgorithm })), (SSECustomerKey && { SSECustomerKey: SSECustomerKey })), (SSECustomerKeyMD5 && { SSECustomerKeyMD5: SSECustomerKeyMD5 }))), options)];
|
|
212
|
+
case 1:
|
|
213
|
+
res = _b.sent();
|
|
214
|
+
return [2 /*return*/, res];
|
|
235
215
|
}
|
|
236
216
|
});
|
|
237
217
|
}); }))];
|
|
@@ -257,7 +237,7 @@ var AWSS3ProviderManagedUpload = /** @class */ (function () {
|
|
|
257
237
|
};
|
|
258
238
|
AWSS3ProviderManagedUpload.prototype.finishMultiPartUpload = function (uploadId) {
|
|
259
239
|
return __awaiter(this, void 0, void 0, function () {
|
|
260
|
-
var input, completeUploadCommand,
|
|
240
|
+
var input, completeUploadCommand, data, error_2;
|
|
261
241
|
return __generator(this, function (_a) {
|
|
262
242
|
switch (_a.label) {
|
|
263
243
|
case 0:
|
|
@@ -268,22 +248,19 @@ var AWSS3ProviderManagedUpload = /** @class */ (function () {
|
|
|
268
248
|
MultipartUpload: { Parts: this.completedParts },
|
|
269
249
|
};
|
|
270
250
|
completeUploadCommand = new client_s3_1.CompleteMultipartUploadCommand(input);
|
|
271
|
-
|
|
251
|
+
_a.label = 1;
|
|
272
252
|
case 1:
|
|
273
|
-
|
|
274
|
-
|
|
253
|
+
_a.trys.push([1, 3, , 4]);
|
|
254
|
+
return [4 /*yield*/, this.s3client.send(completeUploadCommand)];
|
|
275
255
|
case 2:
|
|
276
|
-
_a.trys.push([2, 4, , 5]);
|
|
277
|
-
return [4 /*yield*/, s3.send(completeUploadCommand)];
|
|
278
|
-
case 3:
|
|
279
256
|
data = _a.sent();
|
|
280
257
|
return [2 /*return*/, data.Key];
|
|
281
|
-
case
|
|
258
|
+
case 3:
|
|
282
259
|
error_2 = _a.sent();
|
|
283
260
|
logger.error('error happened while finishing the upload. Cancelling the multipart upload', error_2);
|
|
284
261
|
this.cancelUpload();
|
|
285
262
|
return [2 /*return*/];
|
|
286
|
-
case
|
|
263
|
+
case 4: return [2 /*return*/];
|
|
287
264
|
}
|
|
288
265
|
});
|
|
289
266
|
});
|
|
@@ -318,7 +295,7 @@ var AWSS3ProviderManagedUpload = /** @class */ (function () {
|
|
|
318
295
|
};
|
|
319
296
|
AWSS3ProviderManagedUpload.prototype.cleanup = function (uploadId) {
|
|
320
297
|
return __awaiter(this, void 0, void 0, function () {
|
|
321
|
-
var input,
|
|
298
|
+
var input, data;
|
|
322
299
|
return __generator(this, function (_a) {
|
|
323
300
|
switch (_a.label) {
|
|
324
301
|
case 0:
|
|
@@ -332,14 +309,11 @@ var AWSS3ProviderManagedUpload = /** @class */ (function () {
|
|
|
332
309
|
Key: this.params.Key,
|
|
333
310
|
UploadId: uploadId,
|
|
334
311
|
};
|
|
335
|
-
return [4 /*yield*/, this.
|
|
312
|
+
return [4 /*yield*/, this.s3client.send(new client_s3_1.AbortMultipartUploadCommand(input))];
|
|
336
313
|
case 1:
|
|
337
|
-
s3 = _a.sent();
|
|
338
|
-
return [4 /*yield*/, s3.send(new client_s3_1.AbortMultipartUploadCommand(input))];
|
|
339
|
-
case 2:
|
|
340
314
|
_a.sent();
|
|
341
|
-
return [4 /*yield*/,
|
|
342
|
-
case
|
|
315
|
+
return [4 /*yield*/, this.s3client.send(new client_s3_1.ListPartsCommand(input))];
|
|
316
|
+
case 2:
|
|
343
317
|
data = _a.sent();
|
|
344
318
|
if (data && data.Parts && data.Parts.length > 0) {
|
|
345
319
|
throw new Error('Multi Part upload clean up failed');
|
|
@@ -418,53 +392,11 @@ var AWSS3ProviderManagedUpload = /** @class */ (function () {
|
|
|
418
392
|
}
|
|
419
393
|
return false;
|
|
420
394
|
};
|
|
421
|
-
/**
|
|
422
|
-
* @private
|
|
423
|
-
* creates an S3 client with new V3 aws sdk
|
|
424
|
-
*/
|
|
425
395
|
AWSS3ProviderManagedUpload.prototype._createNewS3Client = function (config, emitter) {
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
case 0: return [4 /*yield*/, this._getCredentials()];
|
|
431
|
-
case 1:
|
|
432
|
-
credentials = _a.sent();
|
|
433
|
-
region = config.region, dangerouslyConnectToHttpEndpointForTesting = config.dangerouslyConnectToHttpEndpointForTesting, cancelTokenSource = config.cancelTokenSource, useAccelerateEndpoint = config.useAccelerateEndpoint;
|
|
434
|
-
localTestingConfig = {};
|
|
435
|
-
if (dangerouslyConnectToHttpEndpointForTesting) {
|
|
436
|
-
localTestingConfig = {
|
|
437
|
-
endpoint: localTestingStorageEndpoint,
|
|
438
|
-
tls: false,
|
|
439
|
-
bucketEndpoint: false,
|
|
440
|
-
forcePathStyle: true,
|
|
441
|
-
};
|
|
442
|
-
}
|
|
443
|
-
client = new client_s3_1.S3Client(__assign(__assign({ region: region,
|
|
444
|
-
credentials: credentials,
|
|
445
|
-
useAccelerateEndpoint: useAccelerateEndpoint }, localTestingConfig), { requestHandler: new axios_http_handler_1.AxiosHttpHandler({}, emitter, cancelTokenSource), customUserAgent: core_1.getAmplifyUserAgent() }));
|
|
446
|
-
client.middlewareStack.remove(SET_CONTENT_LENGTH_HEADER);
|
|
447
|
-
return [2 /*return*/, client];
|
|
448
|
-
}
|
|
449
|
-
});
|
|
450
|
-
});
|
|
451
|
-
};
|
|
452
|
-
/**
|
|
453
|
-
* @private
|
|
454
|
-
*/
|
|
455
|
-
AWSS3ProviderManagedUpload.prototype._getCredentials = function () {
|
|
456
|
-
return core_1.Credentials.get()
|
|
457
|
-
.then(function (credentials) {
|
|
458
|
-
if (!credentials)
|
|
459
|
-
return false;
|
|
460
|
-
var cred = core_1.Credentials.shear(credentials);
|
|
461
|
-
logger.debug('set credentials for storage', cred);
|
|
462
|
-
return cred;
|
|
463
|
-
})
|
|
464
|
-
.catch(function (error) {
|
|
465
|
-
logger.warn('ensure credentials error', error);
|
|
466
|
-
return false;
|
|
467
|
-
});
|
|
396
|
+
var s3client = S3ClientUtils_1.createS3Client(config, emitter);
|
|
397
|
+
s3client.middlewareStack.add(S3ClientUtils_1.createPrefixMiddleware(this.opts, this.params.Key), S3ClientUtils_1.prefixMiddlewareOptions);
|
|
398
|
+
s3client.middlewareStack.add(S3ClientUtils_1.autoAdjustClockskewMiddleware(s3client.config), S3ClientUtils_1.autoAdjustClockskewMiddlewareOptions);
|
|
399
|
+
return s3client;
|
|
468
400
|
};
|
|
469
401
|
return AWSS3ProviderManagedUpload;
|
|
470
402
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AWSS3ProviderManagedUpload.js","sourceRoot":"","sources":["../../src/providers/AWSS3ProviderManagedUpload.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"AWSS3ProviderManagedUpload.js","sourceRoot":"","sources":["../../src/providers/AWSS3ProviderManagedUpload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { UploadPartCommandInput, S3Client, PutObjectCommandInput } from '@aws-sdk/client-s3';
|
|
3
|
+
import * as events from 'events';
|
|
4
|
+
import { Canceler } from 'axios';
|
|
5
|
+
import { UploadTask } from '../types/Provider';
|
|
6
|
+
import { StorageAccessLevel } from '..';
|
|
7
|
+
export declare enum AWSS3UploadTaskState {
|
|
8
|
+
INIT = 0,
|
|
9
|
+
IN_PROGRESS = 1,
|
|
10
|
+
PAUSED = 2,
|
|
11
|
+
CANCELLED = 3,
|
|
12
|
+
COMPLETED = 4
|
|
13
|
+
}
|
|
14
|
+
export declare enum TaskEvents {
|
|
15
|
+
CANCEL = "cancel",
|
|
16
|
+
UPLOAD_COMPLETE = "uploadComplete",
|
|
17
|
+
UPLOAD_PROGRESS = "uploadPartProgress",
|
|
18
|
+
ERROR = "error"
|
|
19
|
+
}
|
|
20
|
+
export interface AWSS3UploadTaskParams {
|
|
21
|
+
s3Client: S3Client;
|
|
22
|
+
file: Blob;
|
|
23
|
+
storage: Storage;
|
|
24
|
+
level: StorageAccessLevel;
|
|
25
|
+
params: PutObjectCommandInput;
|
|
26
|
+
prefixPromise: Promise<string>;
|
|
27
|
+
emitter?: events.EventEmitter;
|
|
28
|
+
}
|
|
29
|
+
export interface InProgressRequest {
|
|
30
|
+
uploadPartInput: UploadPartCommandInput;
|
|
31
|
+
s3Request: Promise<any>;
|
|
32
|
+
cancel: Canceler;
|
|
33
|
+
}
|
|
34
|
+
export interface UploadTaskCompleteEvent {
|
|
35
|
+
key: string;
|
|
36
|
+
}
|
|
37
|
+
export interface UploadTaskProgressEvent {
|
|
38
|
+
/**
|
|
39
|
+
* bytes that has been sent to S3 so far
|
|
40
|
+
*/
|
|
41
|
+
loaded: number;
|
|
42
|
+
/**
|
|
43
|
+
* total bytes that needs to be sent to S3
|
|
44
|
+
*/
|
|
45
|
+
total: number;
|
|
46
|
+
}
|
|
47
|
+
export interface FileMetadata {
|
|
48
|
+
bucket: string;
|
|
49
|
+
fileName: string;
|
|
50
|
+
key: string;
|
|
51
|
+
lastTouched: number;
|
|
52
|
+
uploadId: string;
|
|
53
|
+
}
|
|
54
|
+
export declare class AWSS3UploadTask implements UploadTask {
|
|
55
|
+
private readonly emitter;
|
|
56
|
+
private readonly file;
|
|
57
|
+
private readonly partSize;
|
|
58
|
+
private readonly queueSize;
|
|
59
|
+
private readonly s3client;
|
|
60
|
+
private readonly storage;
|
|
61
|
+
private readonly storageSync;
|
|
62
|
+
private readonly fileId;
|
|
63
|
+
private readonly params;
|
|
64
|
+
private readonly prefixPromise;
|
|
65
|
+
private inProgress;
|
|
66
|
+
private completedParts;
|
|
67
|
+
private queued;
|
|
68
|
+
private bytesUploaded;
|
|
69
|
+
private totalBytes;
|
|
70
|
+
private uploadId;
|
|
71
|
+
state: AWSS3UploadTaskState;
|
|
72
|
+
constructor({ s3Client, file, emitter, storage, params, level, prefixPromise, }: AWSS3UploadTaskParams);
|
|
73
|
+
get percent(): number;
|
|
74
|
+
get isInProgress(): boolean;
|
|
75
|
+
private _listSingleFile;
|
|
76
|
+
private _getFileId;
|
|
77
|
+
private _findCachedUploadParts;
|
|
78
|
+
private _emitEvent;
|
|
79
|
+
private _validateParams;
|
|
80
|
+
private _listCachedUploadTasks;
|
|
81
|
+
private _cache;
|
|
82
|
+
private _isCached;
|
|
83
|
+
private _removeFromCache;
|
|
84
|
+
private _onPartUploadCompletion;
|
|
85
|
+
private _completeUpload;
|
|
86
|
+
private _makeUploadPartRequest;
|
|
87
|
+
private _startNextPart;
|
|
88
|
+
/**
|
|
89
|
+
* Verify on S3 side that the file size matches the one on the client side.
|
|
90
|
+
*
|
|
91
|
+
* @async
|
|
92
|
+
* @throws throws an error if the file size does not match between local copy of the file and the file on s3.
|
|
93
|
+
*/
|
|
94
|
+
private _verifyFileSize;
|
|
95
|
+
private _isDone;
|
|
96
|
+
private _createParts;
|
|
97
|
+
private _initCachedUploadParts;
|
|
98
|
+
private _initMultipartUpload;
|
|
99
|
+
private _initializeUploadTask;
|
|
100
|
+
resume(): void;
|
|
101
|
+
private _startUpload;
|
|
102
|
+
_cancel(): Promise<boolean>;
|
|
103
|
+
/**
|
|
104
|
+
* pause this particular upload task
|
|
105
|
+
**/
|
|
106
|
+
pause(): void;
|
|
107
|
+
}
|