@uploadcare/upload-client 2.0.0-alpha.6 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,14 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- /*globals self, window */
6
-
7
- /*eslint-disable @mysticatea/prettier */
8
- const { AbortController, AbortSignal } =
9
- typeof self !== "undefined" ? self :
10
- typeof window !== "undefined" ? window :
11
- /* otherwise */ undefined;
12
-
13
5
  /*! *****************************************************************************
14
6
  Copyright (c) Microsoft Corporation. All rights reserved.
15
7
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
@@ -58,32 +50,13 @@ function __spreadArrays() {
58
50
  return r;
59
51
  }
60
52
 
61
- /*
62
- Settings for future support:
63
- parallelDirectUploads: 10,
64
- */
65
- var defaultSettings = {
66
- baseCDN: 'https://ucarecdn.com',
67
- baseURL: 'https://upload.uploadcare.com',
68
- maxContentLength: 50 * 1024 * 1024,
69
- retryThrottledRequestMaxTimes: 1,
70
- multipartMinFileSize: 25 * 1024 * 1024,
71
- multipartChunkSize: 5 * 1024 * 1024,
72
- multipartMinLastPartSize: 1024 * 1024,
73
- maxConcurrentRequests: 4,
74
- multipartMaxAttempts: 3,
75
- pollingTimeoutMilliseconds: 10000,
76
- pusherKey: '79ae88bd931ea68464d9'
77
- };
78
- var defaultContentType = 'application/octet-stream';
79
- var defaultFilename = 'original';
80
-
81
53
  var UploadClientError = /** @class */ (function (_super) {
82
54
  __extends(UploadClientError, _super);
83
- function UploadClientError(message, request, response, headers) {
55
+ function UploadClientError(message, code, request, response, headers) {
84
56
  var _this = _super.call(this) || this;
85
57
  _this.name = 'UploadClientError';
86
58
  _this.message = message;
59
+ _this.code = code;
87
60
  _this.request = request;
88
61
  _this.response = response;
89
62
  _this.headers = headers;
@@ -191,20 +164,27 @@ var request = function (_a) {
191
164
  });
192
165
  };
193
166
 
167
+ function identity(obj) {
168
+ return obj;
169
+ }
170
+
171
+ var transformFile = identity;
194
172
  var getFormData = (function () { return new FormData(); });
195
173
 
174
+ var isFileTuple = function (tuple) {
175
+ return tuple[0] === 'file';
176
+ };
196
177
  function buildFormData(body) {
197
178
  var formData = getFormData();
198
- var isTriple = function (tuple) {
199
- return tuple[0] === 'file';
200
- };
201
179
  var _loop_1 = function (tuple) {
202
180
  if (Array.isArray(tuple[1])) {
203
181
  // refactor this
204
182
  tuple[1].forEach(function (val) { return val && formData.append(tuple[0] + '[]', "" + val); });
205
183
  }
206
- else if (isTriple(tuple)) {
207
- formData.append(tuple[0], tuple[1], tuple[2]);
184
+ else if (isFileTuple(tuple)) {
185
+ var name_1 = tuple[2];
186
+ var file = transformFile(tuple[1]); // lgtm[js/superfluous-trailing-arguments]
187
+ formData.append(tuple[0], file, name_1);
208
188
  }
209
189
  else if (tuple[1] != null) {
210
190
  formData.append(tuple[0], "" + tuple[1]);
@@ -242,16 +222,53 @@ var getUrl = function (base, path, query) {
242
222
  .join('');
243
223
  };
244
224
 
245
- var version = '2.0.0-alpha.6';
225
+ /*
226
+ Settings for future support:
227
+ parallelDirectUploads: 10,
228
+ */
229
+ var defaultSettings = {
230
+ baseCDN: 'https://ucarecdn.com',
231
+ baseURL: 'https://upload.uploadcare.com',
232
+ maxContentLength: 50 * 1024 * 1024,
233
+ retryThrottledRequestMaxTimes: 1,
234
+ multipartMinFileSize: 25 * 1024 * 1024,
235
+ multipartChunkSize: 5 * 1024 * 1024,
236
+ multipartMinLastPartSize: 1024 * 1024,
237
+ maxConcurrentRequests: 4,
238
+ multipartMaxAttempts: 3,
239
+ pollingTimeoutMilliseconds: 10000,
240
+ pusherKey: '79ae88bd931ea68464d9'
241
+ };
242
+ var defaultContentType = 'application/octet-stream';
243
+ var defaultFilename = 'original';
244
+
245
+ var version = '2.0.0';
246
246
 
247
247
  /**
248
248
  * Returns User Agent based on version and settings.
249
249
  */
250
250
  function getUserAgent(_a) {
251
- var _b = _a === void 0 ? {} : _a, _c = _b.publicKey, publicKey = _c === void 0 ? '' : _c, _d = _b.integration, integration = _d === void 0 ? '' : _d;
252
- var mainInfo = [version, publicKey].filter(Boolean).join('/');
253
- var additionInfo = ['JavaScript', integration].filter(Boolean).join('; ');
254
- return "UploadcareUploadClient/" + mainInfo + " (" + additionInfo + ")";
251
+ var _b = _a === void 0 ? {} : _a, userAgent = _b.userAgent, _c = _b.publicKey, publicKey = _c === void 0 ? '' : _c, _d = _b.integration, integration = _d === void 0 ? '' : _d;
252
+ var libraryName = 'UploadcareUploadClient';
253
+ var libraryVersion = version;
254
+ var languageName = 'JavaScript';
255
+ if (typeof userAgent === 'string') {
256
+ return userAgent;
257
+ }
258
+ if (typeof userAgent === 'function') {
259
+ return userAgent({
260
+ publicKey: publicKey,
261
+ libraryName: libraryName,
262
+ libraryVersion: libraryVersion,
263
+ languageName: languageName,
264
+ integration: integration
265
+ });
266
+ }
267
+ var mainInfo = [libraryName, libraryVersion, publicKey]
268
+ .filter(Boolean)
269
+ .join('/');
270
+ var additionInfo = [languageName, integration].filter(Boolean).join('; ');
271
+ return mainInfo + " (" + additionInfo + ")";
255
272
  }
256
273
 
257
274
  var SEPARATOR = /\W|_/g;
@@ -314,7 +331,7 @@ function retrier(fn, options) {
314
331
  return runAttempt(fn);
315
332
  }
316
333
 
317
- var REQUEST_WAS_THROTTLED_CODE = 429;
334
+ var REQUEST_WAS_THROTTLED_CODE = 'RequestThrottledError';
318
335
  var DEFAULT_RETRY_AFTER_TIMEOUT = 15000;
319
336
  function getTimeoutFromThrottledRequest(error) {
320
337
  var headers = (error || {}).headers;
@@ -326,9 +343,8 @@ function retryIfThrottled(fn, retryThrottledMaxTimes) {
326
343
  return retrier(function (_a) {
327
344
  var attempt = _a.attempt, retry = _a.retry;
328
345
  return fn().catch(function (error) {
329
- var _a;
330
346
  if ('response' in error &&
331
- ((_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.statusCode) === REQUEST_WAS_THROTTLED_CODE &&
347
+ (error === null || error === void 0 ? void 0 : error.code) === REQUEST_WAS_THROTTLED_CODE &&
332
348
  attempt < retryThrottledMaxTimes) {
333
349
  return retry(getTimeoutFromThrottledRequest(error));
334
350
  }
@@ -342,7 +358,7 @@ function retryIfThrottled(fn, retryThrottledMaxTimes) {
342
358
  * Can be canceled and has progress.
343
359
  */
344
360
  function base(file, _a) {
345
- var publicKey = _a.publicKey, fileName = _a.fileName, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, onProgress = _a.onProgress, _c = _a.source, source = _c === void 0 ? 'local' : _c, integration = _a.integration, _d = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _d === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _d;
361
+ var publicKey = _a.publicKey, fileName = _a.fileName, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, onProgress = _a.onProgress, _c = _a.source, source = _c === void 0 ? 'local' : _c, integration = _a.integration, userAgent = _a.userAgent, _d = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _d === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _d;
346
362
  return retryIfThrottled(function () {
347
363
  var _a;
348
364
  return request({
@@ -351,7 +367,7 @@ function base(file, _a) {
351
367
  jsonerrors: 1
352
368
  }),
353
369
  headers: {
354
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
370
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
355
371
  },
356
372
  data: buildFormData([
357
373
  ['file', file, (_a = fileName !== null && fileName !== void 0 ? fileName : file.name) !== null && _a !== void 0 ? _a : defaultFilename],
@@ -370,39 +386,7 @@ function base(file, _a) {
370
386
  var data = _a.data, headers = _a.headers, request = _a.request;
371
387
  var response = camelizeKeys(JSON.parse(data));
372
388
  if ('error' in response) {
373
- throw new UploadClientError("[" + response.error.statusCode + "] " + response.error.content, request, response.error, headers);
374
- }
375
- else {
376
- return response;
377
- }
378
- });
379
- }, retryThrottledRequestMaxTimes);
380
- }
381
-
382
- /**
383
- * Returns a JSON dictionary holding file info.
384
- */
385
- /* eslint @typescript-eslint/camelcase: [2, {allow: ["pub_key", "file_id"]}] */
386
- function info(uuid, _a) {
387
- var publicKey = _a.publicKey, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, signal = _a.signal, source = _a.source, integration = _a.integration, _c = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _c === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _c;
388
- return retryIfThrottled(function () {
389
- return request({
390
- method: 'GET',
391
- headers: {
392
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
393
- },
394
- url: getUrl(baseURL, '/info/', {
395
- jsonerrors: 1,
396
- pub_key: publicKey,
397
- file_id: uuid,
398
- source: source
399
- }),
400
- signal: signal
401
- }).then(function (_a) {
402
- var data = _a.data, headers = _a.headers, request = _a.request;
403
- var response = camelizeKeys(JSON.parse(data));
404
- if ('error' in response) {
405
- throw new UploadClientError("[" + response.error.statusCode + "] " + response.error.content, request, response.error, headers);
389
+ throw new UploadClientError(response.error.content, response.error.errorCode, request, response, headers);
406
390
  }
407
391
  else {
408
392
  return response;
@@ -419,14 +403,13 @@ var TypeEnum;
419
403
  /**
420
404
  * Uploading files from URL.
421
405
  */
422
- /* eslint @typescript-eslint/camelcase: [2, {allow: ["pub_key", "source_url", "check_URL_duplicates", "save_URL_duplicates"]}] */
423
406
  function fromUrl(sourceUrl, _a) {
424
- var publicKey = _a.publicKey, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, store = _a.store, fileName = _a.fileName, checkForUrlDuplicates = _a.checkForUrlDuplicates, saveUrlForRecurrentUploads = _a.saveUrlForRecurrentUploads, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, _c = _a.source, source = _c === void 0 ? 'url' : _c, signal = _a.signal, integration = _a.integration, _d = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _d === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _d;
407
+ var publicKey = _a.publicKey, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, store = _a.store, fileName = _a.fileName, checkForUrlDuplicates = _a.checkForUrlDuplicates, saveUrlForRecurrentUploads = _a.saveUrlForRecurrentUploads, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, _c = _a.source, source = _c === void 0 ? 'url' : _c, signal = _a.signal, integration = _a.integration, userAgent = _a.userAgent, _d = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _d === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _d;
425
408
  return retryIfThrottled(function () {
426
409
  return request({
427
410
  method: 'POST',
428
411
  headers: {
429
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
412
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
430
413
  },
431
414
  url: getUrl(baseURL, '/from_url/', {
432
415
  jsonerrors: 1,
@@ -445,7 +428,7 @@ function fromUrl(sourceUrl, _a) {
445
428
  var data = _a.data, headers = _a.headers, request = _a.request;
446
429
  var response = camelizeKeys(JSON.parse(data));
447
430
  if ('error' in response) {
448
- throw new UploadClientError("[" + response.error.statusCode + "] " + response.error.content, request, response.error, headers);
431
+ throw new UploadClientError(response.error.content, response.error.errorCode, request, response, headers);
449
432
  }
450
433
  else {
451
434
  return response;
@@ -469,12 +452,18 @@ var isErrorResponse = function (response) {
469
452
  * Checking upload status and working with file tokens.
470
453
  */
471
454
  function fromUrlStatus(token, _a) {
472
- var _b = _a === void 0 ? {} : _a, publicKey = _b.publicKey, _c = _b.baseURL, baseURL = _c === void 0 ? defaultSettings.baseURL : _c, signal = _b.signal, integration = _b.integration, _d = _b.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _d === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _d;
455
+ var _b = _a === void 0 ? {} : _a, publicKey = _b.publicKey, _c = _b.baseURL, baseURL = _c === void 0 ? defaultSettings.baseURL : _c, signal = _b.signal, integration = _b.integration, userAgent = _b.userAgent, _d = _b.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _d === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _d;
473
456
  return retryIfThrottled(function () {
474
457
  return request({
475
458
  method: 'GET',
476
459
  headers: publicKey
477
- ? { 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration }) }
460
+ ? {
461
+ 'X-UC-User-Agent': getUserAgent({
462
+ publicKey: publicKey,
463
+ integration: integration,
464
+ userAgent: userAgent
465
+ })
466
+ }
478
467
  : undefined,
479
468
  url: getUrl(baseURL, '/from_url/status/', {
480
469
  jsonerrors: 1,
@@ -485,7 +474,7 @@ function fromUrlStatus(token, _a) {
485
474
  var data = _a.data, headers = _a.headers, request = _a.request;
486
475
  var response = camelizeKeys(JSON.parse(data));
487
476
  if ('error' in response && !isErrorResponse(response)) {
488
- throw new UploadClientError("[" + response.error.statusCode + "] " + response.error.content, request, response.error, headers);
477
+ throw new UploadClientError(response.error.content, undefined, request, response, headers);
489
478
  }
490
479
  else {
491
480
  return response;
@@ -497,14 +486,13 @@ function fromUrlStatus(token, _a) {
497
486
  /**
498
487
  * Create files group.
499
488
  */
500
- /* eslint @typescript-eslint/camelcase: [2, {allow: ["pub_key"]}] */
501
489
  function group(uuids, _a) {
502
- var publicKey = _a.publicKey, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, jsonpCallback = _a.jsonpCallback, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, signal = _a.signal, source = _a.source, integration = _a.integration, _c = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _c === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _c;
490
+ var publicKey = _a.publicKey, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, jsonpCallback = _a.jsonpCallback, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, signal = _a.signal, source = _a.source, integration = _a.integration, userAgent = _a.userAgent, _c = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _c === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _c;
503
491
  return retryIfThrottled(function () {
504
492
  return request({
505
493
  method: 'POST',
506
494
  headers: {
507
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
495
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
508
496
  },
509
497
  url: getUrl(baseURL, '/group/', {
510
498
  jsonerrors: 1,
@@ -520,7 +508,7 @@ function group(uuids, _a) {
520
508
  var data = _a.data, headers = _a.headers, request = _a.request;
521
509
  var response = camelizeKeys(JSON.parse(data));
522
510
  if ('error' in response) {
523
- throw new UploadClientError("[" + response.error.statusCode + "] " + response.error.content, request, response.error, headers);
511
+ throw new UploadClientError(response.error.content, response.error.errorCode, request, response, headers);
524
512
  }
525
513
  else {
526
514
  return response;
@@ -532,14 +520,13 @@ function group(uuids, _a) {
532
520
  /**
533
521
  * Get info about group.
534
522
  */
535
- /* eslint @typescript-eslint/camelcase: [2, {allow: ["pub_key", "group_id"]}] */
536
523
  function groupInfo(id, _a) {
537
- var publicKey = _a.publicKey, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, signal = _a.signal, source = _a.source, integration = _a.integration, _c = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _c === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _c;
524
+ var publicKey = _a.publicKey, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, signal = _a.signal, source = _a.source, integration = _a.integration, userAgent = _a.userAgent, _c = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _c === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _c;
538
525
  return retryIfThrottled(function () {
539
526
  return request({
540
527
  method: 'GET',
541
528
  headers: {
542
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
529
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
543
530
  },
544
531
  url: getUrl(baseURL, '/group/info/', {
545
532
  jsonerrors: 1,
@@ -552,7 +539,7 @@ function groupInfo(id, _a) {
552
539
  var data = _a.data, headers = _a.headers, request = _a.request;
553
540
  var response = camelizeKeys(JSON.parse(data));
554
541
  if ('error' in response) {
555
- throw new UploadClientError("[" + response.error.statusCode + "] " + response.error.content, request, response.error, headers);
542
+ throw new UploadClientError(response.error.content, response.error.errorCode, request, response, headers);
556
543
  }
557
544
  else {
558
545
  return response;
@@ -562,38 +549,30 @@ function groupInfo(id, _a) {
562
549
  }
563
550
 
564
551
  /**
565
- * Start multipart uploading.
552
+ * Returns a JSON dictionary holding file info.
566
553
  */
567
- function multipartStart(size, _a) {
568
- var publicKey = _a.publicKey, contentType = _a.contentType, fileName = _a.fileName, _b = _a.multipartChunkSize, multipartChunkSize = _b === void 0 ? defaultSettings.multipartChunkSize : _b, _c = _a.baseURL, baseURL = _c === void 0 ? '' : _c, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, _d = _a.source, source = _d === void 0 ? 'local' : _d, integration = _a.integration, _e = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _e === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _e;
554
+ function info(uuid, _a) {
555
+ var publicKey = _a.publicKey, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, signal = _a.signal, source = _a.source, integration = _a.integration, userAgent = _a.userAgent, _c = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _c === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _c;
569
556
  return retryIfThrottled(function () {
570
557
  return request({
571
- method: 'POST',
572
- url: getUrl(baseURL, '/multipart/start/', { jsonerrors: 1 }),
558
+ method: 'GET',
573
559
  headers: {
574
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
560
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
575
561
  },
576
- data: buildFormData([
577
- ['filename', fileName !== null && fileName !== void 0 ? fileName : defaultFilename],
578
- ['size', size],
579
- ['content_type', contentType !== null && contentType !== void 0 ? contentType : defaultContentType],
580
- ['part_size', multipartChunkSize],
581
- ['UPLOADCARE_STORE', store ? '' : 'auto'],
582
- ['UPLOADCARE_PUB_KEY', publicKey],
583
- ['signature', secureSignature],
584
- ['expire', secureExpire],
585
- ['source', source]
586
- ]),
562
+ url: getUrl(baseURL, '/info/', {
563
+ jsonerrors: 1,
564
+ pub_key: publicKey,
565
+ file_id: uuid,
566
+ source: source
567
+ }),
587
568
  signal: signal
588
569
  }).then(function (_a) {
589
570
  var data = _a.data, headers = _a.headers, request = _a.request;
590
571
  var response = camelizeKeys(JSON.parse(data));
591
572
  if ('error' in response) {
592
- throw new UploadClientError("[" + response.error.statusCode + "] " + response.error.content, request, response.error, headers);
573
+ throw new UploadClientError(response.error.content, response.error.errorCode, request, response, headers);
593
574
  }
594
575
  else {
595
- // convert to array
596
- response.parts = Object.keys(response.parts).map(function (key) { return response.parts[key]; });
597
576
  return response;
598
577
  }
599
578
  });
@@ -601,20 +580,26 @@ function multipartStart(size, _a) {
601
580
  }
602
581
 
603
582
  /**
604
- * Complete multipart uploading.
583
+ * Start multipart uploading.
605
584
  */
606
- function multipartComplete(uuid, _a) {
607
- var publicKey = _a.publicKey, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, _c = _a.source, source = _c === void 0 ? 'local' : _c, signal = _a.signal, integration = _a.integration, _d = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _d === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _d;
585
+ function multipartStart(size, _a) {
586
+ var publicKey = _a.publicKey, contentType = _a.contentType, fileName = _a.fileName, _b = _a.multipartChunkSize, multipartChunkSize = _b === void 0 ? defaultSettings.multipartChunkSize : _b, _c = _a.baseURL, baseURL = _c === void 0 ? '' : _c, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, _d = _a.source, source = _d === void 0 ? 'local' : _d, integration = _a.integration, userAgent = _a.userAgent, _e = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _e === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _e;
608
587
  return retryIfThrottled(function () {
609
588
  return request({
610
589
  method: 'POST',
611
- url: getUrl(baseURL, '/multipart/complete/', { jsonerrors: 1 }),
590
+ url: getUrl(baseURL, '/multipart/start/', { jsonerrors: 1 }),
612
591
  headers: {
613
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
592
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
614
593
  },
615
594
  data: buildFormData([
616
- ['uuid', uuid],
595
+ ['filename', fileName !== null && fileName !== void 0 ? fileName : defaultFilename],
596
+ ['size', size],
597
+ ['content_type', contentType !== null && contentType !== void 0 ? contentType : defaultContentType],
598
+ ['part_size', multipartChunkSize],
599
+ ['UPLOADCARE_STORE', store ? '' : 'auto'],
617
600
  ['UPLOADCARE_PUB_KEY', publicKey],
601
+ ['signature', secureSignature],
602
+ ['expire', secureExpire],
618
603
  ['source', source]
619
604
  ]),
620
605
  signal: signal
@@ -622,9 +607,11 @@ function multipartComplete(uuid, _a) {
622
607
  var data = _a.data, headers = _a.headers, request = _a.request;
623
608
  var response = camelizeKeys(JSON.parse(data));
624
609
  if ('error' in response) {
625
- throw new UploadClientError("[" + response.error.statusCode + "] " + response.error.content, request, response.error, headers);
610
+ throw new UploadClientError(response.error.content, response.error.errorCode, request, response, headers);
626
611
  }
627
612
  else {
613
+ // convert to array
614
+ response.parts = Object.keys(response.parts).map(function (key) { return response.parts[key]; });
628
615
  return response;
629
616
  }
630
617
  });
@@ -635,15 +622,10 @@ function multipartComplete(uuid, _a) {
635
622
  * Complete multipart uploading.
636
623
  */
637
624
  function multipartUpload(part, url, _a) {
638
- var publicKey = _a.publicKey, signal = _a.signal, onProgress = _a.onProgress, integration = _a.integration;
625
+ var signal = _a.signal, onProgress = _a.onProgress;
639
626
  return request({
640
627
  method: 'PUT',
641
628
  url: url,
642
- headers: {
643
- 'X-UC-User-Agent': publicKey
644
- ? getUserAgent({ publicKey: publicKey, integration: integration })
645
- : undefined
646
- },
647
629
  data: part,
648
630
  onProgress: onProgress,
649
631
  signal: signal
@@ -660,6 +642,37 @@ function multipartUpload(part, url, _a) {
660
642
  });
661
643
  }
662
644
 
645
+ /**
646
+ * Complete multipart uploading.
647
+ */
648
+ function multipartComplete(uuid, _a) {
649
+ var publicKey = _a.publicKey, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, _c = _a.source, source = _c === void 0 ? 'local' : _c, signal = _a.signal, integration = _a.integration, userAgent = _a.userAgent, _d = _a.retryThrottledRequestMaxTimes, retryThrottledRequestMaxTimes = _d === void 0 ? defaultSettings.retryThrottledRequestMaxTimes : _d;
650
+ return retryIfThrottled(function () {
651
+ return request({
652
+ method: 'POST',
653
+ url: getUrl(baseURL, '/multipart/complete/', { jsonerrors: 1 }),
654
+ headers: {
655
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
656
+ },
657
+ data: buildFormData([
658
+ ['uuid', uuid],
659
+ ['UPLOADCARE_PUB_KEY', publicKey],
660
+ ['source', source]
661
+ ]),
662
+ signal: signal
663
+ }).then(function (_a) {
664
+ var data = _a.data, headers = _a.headers, request = _a.request;
665
+ var response = camelizeKeys(JSON.parse(data));
666
+ if ('error' in response) {
667
+ throw new UploadClientError(response.error.content, response.error.errorCode, request, response, headers);
668
+ }
669
+ else {
670
+ return response;
671
+ }
672
+ });
673
+ }, retryThrottledRequestMaxTimes);
674
+ }
675
+
663
676
  var UploadcareFile = /** @class */ (function () {
664
677
  function UploadcareFile(fileInfo, _a) {
665
678
  var baseCDN = _a.baseCDN, defaultEffects = _a.defaultEffects, fileName = _a.fileName;
@@ -667,6 +680,7 @@ var UploadcareFile = /** @class */ (function () {
667
680
  this.size = null;
668
681
  this.isStored = null;
669
682
  this.isImage = null;
683
+ this.mimeType = null;
670
684
  this.cdnUrl = null;
671
685
  this.cdnUrlModifiers = null;
672
686
  this.originalUrl = null;
@@ -685,6 +699,7 @@ var UploadcareFile = /** @class */ (function () {
685
699
  this.size = fileInfo.size;
686
700
  this.isStored = fileInfo.isStored;
687
701
  this.isImage = fileInfo.isImage;
702
+ this.mimeType = fileInfo.mimeType;
688
703
  this.cdnUrl = cdnUrl;
689
704
  this.cdnUrlModifiers = cdnUrlModifiers;
690
705
  this.originalUrl = originalUrl;
@@ -726,7 +741,7 @@ var poll = function (_a) {
726
741
  };
727
742
 
728
743
  function isReadyPoll(_a) {
729
- var file = _a.file, publicKey = _a.publicKey, baseURL = _a.baseURL, source = _a.source, integration = _a.integration, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, signal = _a.signal, onProgress = _a.onProgress;
744
+ var file = _a.file, publicKey = _a.publicKey, baseURL = _a.baseURL, source = _a.source, integration = _a.integration, userAgent = _a.userAgent, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, signal = _a.signal, onProgress = _a.onProgress;
730
745
  return poll({
731
746
  check: function (signal) {
732
747
  return info(file, {
@@ -735,6 +750,7 @@ function isReadyPoll(_a) {
735
750
  signal: signal,
736
751
  source: source,
737
752
  integration: integration,
753
+ userAgent: userAgent,
738
754
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes
739
755
  }).then(function (response) {
740
756
  if (response.isReady) {
@@ -749,7 +765,7 @@ function isReadyPoll(_a) {
749
765
  }
750
766
 
751
767
  var uploadFromObject = function (file, _a) {
752
- var publicKey = _a.publicKey, fileName = _a.fileName, baseURL = _a.baseURL, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, baseCDN = _a.baseCDN;
768
+ var publicKey = _a.publicKey, fileName = _a.fileName, baseURL = _a.baseURL, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, userAgent = _a.userAgent, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, baseCDN = _a.baseCDN;
753
769
  return base(file, {
754
770
  publicKey: publicKey,
755
771
  fileName: fileName,
@@ -761,6 +777,7 @@ var uploadFromObject = function (file, _a) {
761
777
  onProgress: onProgress,
762
778
  source: source,
763
779
  integration: integration,
780
+ userAgent: userAgent,
764
781
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes
765
782
  })
766
783
  .then(function (_a) {
@@ -771,6 +788,7 @@ var uploadFromObject = function (file, _a) {
771
788
  baseURL: baseURL,
772
789
  source: source,
773
790
  integration: integration,
791
+ userAgent: userAgent,
774
792
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
775
793
  onProgress: onProgress,
776
794
  signal: signal
@@ -779,6 +797,14 @@ var uploadFromObject = function (file, _a) {
779
797
  .then(function (fileInfo) { return new UploadcareFile(fileInfo, { baseCDN: baseCDN }); });
780
798
  };
781
799
 
800
+ /*globals self, window */
801
+
802
+ /*eslint-disable @mysticatea/prettier */
803
+ const { AbortController, AbortSignal } =
804
+ typeof self !== "undefined" ? self :
805
+ typeof window !== "undefined" ? window :
806
+ /* otherwise */ undefined;
807
+
782
808
  var race = function (fns, _a) {
783
809
  var signal = (_a === void 0 ? {} : _a).signal;
784
810
  var lastError = null;
@@ -874,7 +900,7 @@ var Pusher = /** @class */ (function () {
874
900
  _this.queue = [];
875
901
  });
876
902
  this.ws.addEventListener('message', function (e) {
877
- var data = JSON.parse(e.data);
903
+ var data = JSON.parse(e.data.toString());
878
904
  switch (data.event) {
879
905
  case 'pusher:connection_established': {
880
906
  _this.emmitter.emit('connected', undefined);
@@ -970,19 +996,20 @@ var preconnect = function (key) {
970
996
  };
971
997
 
972
998
  function pollStrategy(_a) {
973
- var token = _a.token, publicKey = _a.publicKey, baseURL = _a.baseURL, integration = _a.integration, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, onProgress = _a.onProgress, signal = _a.signal;
999
+ var token = _a.token, publicKey = _a.publicKey, baseURL = _a.baseURL, integration = _a.integration, userAgent = _a.userAgent, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, onProgress = _a.onProgress, signal = _a.signal;
974
1000
  return poll({
975
1001
  check: function (signal) {
976
1002
  return fromUrlStatus(token, {
977
1003
  publicKey: publicKey,
978
1004
  baseURL: baseURL,
979
1005
  integration: integration,
1006
+ userAgent: userAgent,
980
1007
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
981
1008
  signal: signal
982
1009
  }).then(function (response) {
983
1010
  switch (response.status) {
984
1011
  case Status.Error: {
985
- return new UploadClientError(response.error);
1012
+ return new UploadClientError(response.error, response.errorCode);
986
1013
  }
987
1014
  case Status.Waiting: {
988
1015
  return false;
@@ -1010,7 +1037,7 @@ function pollStrategy(_a) {
1010
1037
  });
1011
1038
  }
1012
1039
  var pushStrategy = function (_a) {
1013
- var token = _a.token, pusherKey = _a.pusherKey, signal = _a.signal, stopRace = _a.stopRace, onProgress = _a.onProgress;
1040
+ var token = _a.token, pusherKey = _a.pusherKey, signal = _a.signal, onProgress = _a.onProgress;
1014
1041
  return new Promise(function (resolve, reject) {
1015
1042
  var pusher = getPusher(pusherKey);
1016
1043
  var unsubErrorHandler = pusher.onError(reject);
@@ -1020,10 +1047,9 @@ var pushStrategy = function (_a) {
1020
1047
  };
1021
1048
  onCancel(signal, function () {
1022
1049
  destroy();
1023
- reject(cancelError('pisher cancelled'));
1050
+ reject(cancelError('pusher cancelled'));
1024
1051
  });
1025
1052
  pusher.subscribe(token, function (result) {
1026
- stopRace();
1027
1053
  switch (result.status) {
1028
1054
  case Status.Progress: {
1029
1055
  if (onProgress) {
@@ -1040,14 +1066,14 @@ var pushStrategy = function (_a) {
1040
1066
  }
1041
1067
  case Status.Error: {
1042
1068
  destroy();
1043
- reject(new UploadClientError(result.msg));
1069
+ reject(new UploadClientError(result.msg, result.error_code));
1044
1070
  }
1045
1071
  }
1046
1072
  });
1047
1073
  });
1048
1074
  };
1049
1075
  var uploadFromUrl = function (sourceUrl, _a) {
1050
- var publicKey = _a.publicKey, fileName = _a.fileName, baseURL = _a.baseURL, baseCDN = _a.baseCDN, checkForUrlDuplicates = _a.checkForUrlDuplicates, saveUrlForRecurrentUploads = _a.saveUrlForRecurrentUploads, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, _b = _a.pusherKey, pusherKey = _b === void 0 ? defaultSettings.pusherKey : _b;
1076
+ var publicKey = _a.publicKey, fileName = _a.fileName, baseURL = _a.baseURL, baseCDN = _a.baseCDN, checkForUrlDuplicates = _a.checkForUrlDuplicates, saveUrlForRecurrentUploads = _a.saveUrlForRecurrentUploads, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, userAgent = _a.userAgent, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, _b = _a.pusherKey, pusherKey = _b === void 0 ? defaultSettings.pusherKey : _b;
1051
1077
  return Promise.resolve(preconnect(pusherKey))
1052
1078
  .then(function () {
1053
1079
  return fromUrl(sourceUrl, {
@@ -1062,8 +1088,14 @@ var uploadFromUrl = function (sourceUrl, _a) {
1062
1088
  signal: signal,
1063
1089
  source: source,
1064
1090
  integration: integration,
1091
+ userAgent: userAgent,
1065
1092
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes
1066
1093
  });
1094
+ })
1095
+ .catch(function (error) {
1096
+ var pusher = getPusher(pusherKey);
1097
+ pusher === null || pusher === void 0 ? void 0 : pusher.disconnect();
1098
+ return Promise.reject(error);
1067
1099
  })
1068
1100
  .then(function (urlResponse) {
1069
1101
  if (urlResponse.type === TypeEnum.FileInfo) {
@@ -1078,17 +1110,17 @@ var uploadFromUrl = function (sourceUrl, _a) {
1078
1110
  publicKey: publicKey,
1079
1111
  baseURL: baseURL,
1080
1112
  integration: integration,
1113
+ userAgent: userAgent,
1081
1114
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1082
1115
  onProgress: onProgress,
1083
1116
  signal: signal
1084
1117
  });
1085
1118
  },
1086
1119
  function (_a) {
1087
- var stopRace = _a.stopRace, signal = _a.signal;
1120
+ var signal = _a.signal;
1088
1121
  return pushStrategy({
1089
1122
  token: urlResponse.token,
1090
1123
  pusherKey: pusherKey,
1091
- stopRace: stopRace,
1092
1124
  signal: signal,
1093
1125
  onProgress: onProgress
1094
1126
  });
@@ -1107,6 +1139,7 @@ var uploadFromUrl = function (sourceUrl, _a) {
1107
1139
  publicKey: publicKey,
1108
1140
  baseURL: baseURL,
1109
1141
  integration: integration,
1142
+ userAgent: userAgent,
1110
1143
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1111
1144
  onProgress: onProgress,
1112
1145
  signal: signal
@@ -1116,13 +1149,14 @@ var uploadFromUrl = function (sourceUrl, _a) {
1116
1149
  };
1117
1150
 
1118
1151
  var uploadFromUploaded = function (uuid, _a) {
1119
- var publicKey = _a.publicKey, fileName = _a.fileName, baseURL = _a.baseURL, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, baseCDN = _a.baseCDN;
1152
+ var publicKey = _a.publicKey, fileName = _a.fileName, baseURL = _a.baseURL, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, userAgent = _a.userAgent, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, baseCDN = _a.baseCDN;
1120
1153
  return info(uuid, {
1121
1154
  publicKey: publicKey,
1122
1155
  baseURL: baseURL,
1123
1156
  signal: signal,
1124
1157
  source: source,
1125
1158
  integration: integration,
1159
+ userAgent: userAgent,
1126
1160
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes
1127
1161
  })
1128
1162
  .then(function (fileInfo) { return new UploadcareFile(fileInfo, { baseCDN: baseCDN, fileName: fileName }); })
@@ -1176,6 +1210,18 @@ var isMultipart = function (fileSize, multipartMinFileSize) {
1176
1210
  return fileSize >= multipartMinFileSize;
1177
1211
  };
1178
1212
 
1213
+ var sliceChunk = function (file, index, fileSize, chunkSize) {
1214
+ var start = chunkSize * index;
1215
+ var end = Math.min(start + chunkSize, fileSize);
1216
+ return file.slice(start, end);
1217
+ };
1218
+
1219
+ function prepareChunks(file, fileSize, chunkSize) {
1220
+ return function (index) {
1221
+ return sliceChunk(file, index, fileSize, chunkSize);
1222
+ };
1223
+ }
1224
+
1179
1225
  var runWithConcurrency = function (concurrency, tasks) {
1180
1226
  return new Promise(function (resolve, reject) {
1181
1227
  var results = [];
@@ -1211,11 +1257,6 @@ var runWithConcurrency = function (concurrency, tasks) {
1211
1257
  });
1212
1258
  };
1213
1259
 
1214
- var getChunk = function (file, index, fileSize, chunkSize) {
1215
- var start = chunkSize * index;
1216
- var end = Math.min(start + chunkSize, fileSize);
1217
- return file.slice(start, end);
1218
- };
1219
1260
  var uploadPartWithRetry = function (chunk, url, _a) {
1220
1261
  var publicKey = _a.publicKey, onProgress = _a.onProgress, signal = _a.signal, integration = _a.integration, multipartMaxAttempts = _a.multipartMaxAttempts;
1221
1262
  return retrier(function (_a) {
@@ -1234,7 +1275,7 @@ var uploadPartWithRetry = function (chunk, url, _a) {
1234
1275
  });
1235
1276
  };
1236
1277
  var uploadMultipart = function (file, _a) {
1237
- var publicKey = _a.publicKey, fileName = _a.fileName, fileSize = _a.fileSize, baseURL = _a.baseURL, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, contentType = _a.contentType, _b = _a.multipartChunkSize, multipartChunkSize = _b === void 0 ? defaultSettings.multipartChunkSize : _b, _c = _a.maxConcurrentRequests, maxConcurrentRequests = _c === void 0 ? defaultSettings.maxConcurrentRequests : _c, _d = _a.multipartMaxAttempts, multipartMaxAttempts = _d === void 0 ? defaultSettings.multipartMaxAttempts : _d, baseCDN = _a.baseCDN;
1278
+ var publicKey = _a.publicKey, fileName = _a.fileName, fileSize = _a.fileSize, baseURL = _a.baseURL, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, userAgent = _a.userAgent, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, contentType = _a.contentType, _b = _a.multipartChunkSize, multipartChunkSize = _b === void 0 ? defaultSettings.multipartChunkSize : _b, _c = _a.maxConcurrentRequests, maxConcurrentRequests = _c === void 0 ? defaultSettings.maxConcurrentRequests : _c, _d = _a.multipartMaxAttempts, multipartMaxAttempts = _d === void 0 ? defaultSettings.multipartMaxAttempts : _d, baseCDN = _a.baseCDN;
1238
1279
  var size = fileSize || getFileSize(file);
1239
1280
  var progressValues;
1240
1281
  var createProgressHandler = function (size, index) {
@@ -1263,14 +1304,16 @@ var uploadMultipart = function (file, _a) {
1263
1304
  signal: signal,
1264
1305
  source: source,
1265
1306
  integration: integration,
1307
+ userAgent: userAgent,
1266
1308
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes
1267
1309
  })
1268
1310
  .then(function (_a) {
1269
1311
  var uuid = _a.uuid, parts = _a.parts;
1312
+ var getChunk = prepareChunks(file, size, multipartChunkSize);
1270
1313
  return Promise.all([
1271
1314
  uuid,
1272
1315
  runWithConcurrency(maxConcurrentRequests, parts.map(function (url, index) { return function () {
1273
- return uploadPartWithRetry(getChunk(file, index, size, multipartChunkSize), url, {
1316
+ return uploadPartWithRetry(getChunk(index), url, {
1274
1317
  publicKey: publicKey,
1275
1318
  onProgress: createProgressHandler(parts.length, index),
1276
1319
  signal: signal,
@@ -1287,6 +1330,7 @@ var uploadMultipart = function (file, _a) {
1287
1330
  baseURL: baseURL,
1288
1331
  source: source,
1289
1332
  integration: integration,
1333
+ userAgent: userAgent,
1290
1334
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes
1291
1335
  });
1292
1336
  })
@@ -1301,6 +1345,7 @@ var uploadMultipart = function (file, _a) {
1301
1345
  baseURL: baseURL,
1302
1346
  source: source,
1303
1347
  integration: integration,
1348
+ userAgent: userAgent,
1304
1349
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1305
1350
  onProgress: onProgress,
1306
1351
  signal: signal
@@ -1314,7 +1359,7 @@ var uploadMultipart = function (file, _a) {
1314
1359
  * Uploads file from provided data.
1315
1360
  */
1316
1361
  function uploadFile(data, _a) {
1317
- var publicKey = _a.publicKey, fileName = _a.fileName, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, contentType = _a.contentType, _c = _a.multipartChunkSize, multipartChunkSize = _c === void 0 ? defaultSettings.multipartChunkSize : _c, _d = _a.baseCDN, baseCDN = _d === void 0 ? defaultSettings.baseCDN : _d;
1362
+ var publicKey = _a.publicKey, fileName = _a.fileName, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, userAgent = _a.userAgent, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, contentType = _a.contentType, multipartChunkSize = _a.multipartChunkSize, multipartMaxAttempts = _a.multipartMaxAttempts, maxConcurrentRequests = _a.maxConcurrentRequests, _c = _a.baseCDN, baseCDN = _c === void 0 ? defaultSettings.baseCDN : _c, checkForUrlDuplicates = _a.checkForUrlDuplicates, saveUrlForRecurrentUploads = _a.saveUrlForRecurrentUploads, pusherKey = _a.pusherKey;
1318
1363
  if (isFileData(data)) {
1319
1364
  var fileSize = getFileSize(data);
1320
1365
  if (isMultipart(fileSize)) {
@@ -1322,6 +1367,7 @@ function uploadFile(data, _a) {
1322
1367
  publicKey: publicKey,
1323
1368
  contentType: contentType,
1324
1369
  multipartChunkSize: multipartChunkSize,
1370
+ multipartMaxAttempts: multipartMaxAttempts,
1325
1371
  fileName: fileName,
1326
1372
  baseURL: baseURL,
1327
1373
  secureSignature: secureSignature,
@@ -1331,6 +1377,8 @@ function uploadFile(data, _a) {
1331
1377
  onProgress: onProgress,
1332
1378
  source: source,
1333
1379
  integration: integration,
1380
+ userAgent: userAgent,
1381
+ maxConcurrentRequests: maxConcurrentRequests,
1334
1382
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1335
1383
  baseCDN: baseCDN
1336
1384
  });
@@ -1346,6 +1394,7 @@ function uploadFile(data, _a) {
1346
1394
  onProgress: onProgress,
1347
1395
  source: source,
1348
1396
  integration: integration,
1397
+ userAgent: userAgent,
1349
1398
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1350
1399
  baseCDN: baseCDN
1351
1400
  });
@@ -1355,6 +1404,9 @@ function uploadFile(data, _a) {
1355
1404
  publicKey: publicKey,
1356
1405
  fileName: fileName,
1357
1406
  baseURL: baseURL,
1407
+ baseCDN: baseCDN,
1408
+ checkForUrlDuplicates: checkForUrlDuplicates,
1409
+ saveUrlForRecurrentUploads: saveUrlForRecurrentUploads,
1358
1410
  secureSignature: secureSignature,
1359
1411
  secureExpire: secureExpire,
1360
1412
  store: store,
@@ -1362,8 +1414,9 @@ function uploadFile(data, _a) {
1362
1414
  onProgress: onProgress,
1363
1415
  source: source,
1364
1416
  integration: integration,
1417
+ userAgent: userAgent,
1365
1418
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1366
- baseCDN: baseCDN
1419
+ pusherKey: pusherKey
1367
1420
  });
1368
1421
  }
1369
1422
  if (isUuid(data)) {
@@ -1375,6 +1428,7 @@ function uploadFile(data, _a) {
1375
1428
  onProgress: onProgress,
1376
1429
  source: source,
1377
1430
  integration: integration,
1431
+ userAgent: userAgent,
1378
1432
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1379
1433
  baseCDN: baseCDN
1380
1434
  });
@@ -1389,8 +1443,7 @@ var UploadcareGroup = /** @class */ (function () {
1389
1443
  this.filesCount = groupInfo.filesCount;
1390
1444
  this.totalSize = Object.values(groupInfo.files).reduce(function (acc, file) { return acc + file.size; }, 0);
1391
1445
  this.isStored = !!groupInfo.datetimeStored;
1392
- this.isImage = !!Object.values(groupInfo.files).filter(function (file) { return file.isImage; })
1393
- .length;
1446
+ this.isImage = !!Object.values(groupInfo.files).filter(function (file) { return file.isImage; }).length;
1394
1447
  this.cdnUrl = groupInfo.cdnUrl;
1395
1448
  this.files = files;
1396
1449
  this.createdAt = groupInfo.datetimeCreated;
@@ -1437,7 +1490,7 @@ var isUrlArray = function (data) {
1437
1490
  };
1438
1491
 
1439
1492
  function uploadFileGroup(data, _a) {
1440
- var publicKey = _a.publicKey, fileName = _a.fileName, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, contentType = _a.contentType, _c = _a.multipartChunkSize, multipartChunkSize = _c === void 0 ? defaultSettings.multipartChunkSize : _c, _d = _a.baseCDN, baseCDN = _d === void 0 ? defaultSettings.baseCDN : _d, jsonpCallback = _a.jsonpCallback, defaultEffects = _a.defaultEffects;
1493
+ var publicKey = _a.publicKey, fileName = _a.fileName, _b = _a.baseURL, baseURL = _b === void 0 ? defaultSettings.baseURL : _b, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, userAgent = _a.userAgent, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, contentType = _a.contentType, _c = _a.multipartChunkSize, multipartChunkSize = _c === void 0 ? defaultSettings.multipartChunkSize : _c, _d = _a.baseCDN, baseCDN = _d === void 0 ? defaultSettings.baseCDN : _d, jsonpCallback = _a.jsonpCallback, defaultEffects = _a.defaultEffects;
1441
1494
  if (!isFileDataArray(data) && !isUrlArray(data) && !isUuidArray(data)) {
1442
1495
  throw new TypeError("Group uploading from \"" + data + "\" is not supported");
1443
1496
  }
@@ -1470,6 +1523,7 @@ function uploadFileGroup(data, _a) {
1470
1523
  onProgress: createProgressHandler(filesCount, index),
1471
1524
  source: source,
1472
1525
  integration: integration,
1526
+ userAgent: userAgent,
1473
1527
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1474
1528
  contentType: contentType,
1475
1529
  multipartChunkSize: multipartChunkSize,
@@ -1493,6 +1547,7 @@ function uploadFileGroup(data, _a) {
1493
1547
  signal: signal,
1494
1548
  source: source,
1495
1549
  integration: integration,
1550
+ userAgent: userAgent,
1496
1551
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes
1497
1552
  }).then(function (groupInfo) { return new UploadcareGroup(groupInfo, filesInGroup); });
1498
1553
  });
@@ -1570,5 +1625,9 @@ exports.info = info;
1570
1625
  exports.multipartComplete = multipartComplete;
1571
1626
  exports.multipartStart = multipartStart;
1572
1627
  exports.multipartUpload = multipartUpload;
1628
+ exports.uploadBase = uploadFromObject;
1573
1629
  exports.uploadFile = uploadFile;
1574
1630
  exports.uploadFileGroup = uploadFileGroup;
1631
+ exports.uploadFromUploaded = uploadFromUploaded;
1632
+ exports.uploadFromUrl = uploadFromUrl;
1633
+ exports.uploadMultipart = uploadMultipart;