@uploadcare/upload-client 2.0.0-alpha.7 → 2.1.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.
@@ -52,10 +52,11 @@ function __spreadArrays() {
52
52
 
53
53
  var UploadClientError = /** @class */ (function (_super) {
54
54
  __extends(UploadClientError, _super);
55
- function UploadClientError(message, request, response, headers) {
55
+ function UploadClientError(message, code, request, response, headers) {
56
56
  var _this = _super.call(this) || this;
57
57
  _this.name = 'UploadClientError';
58
58
  _this.message = message;
59
+ _this.code = code;
59
60
  _this.request = request;
60
61
  _this.response = response;
61
62
  _this.headers = headers;
@@ -163,20 +164,27 @@ var request = function (_a) {
163
164
  });
164
165
  };
165
166
 
167
+ function identity(obj) {
168
+ return obj;
169
+ }
170
+
171
+ var transformFile = identity;
166
172
  var getFormData = (function () { return new FormData(); });
167
173
 
174
+ var isFileTuple = function (tuple) {
175
+ return tuple[0] === 'file';
176
+ };
168
177
  function buildFormData(body) {
169
178
  var formData = getFormData();
170
- var isTriple = function (tuple) {
171
- return tuple[0] === 'file';
172
- };
173
179
  var _loop_1 = function (tuple) {
174
180
  if (Array.isArray(tuple[1])) {
175
181
  // refactor this
176
182
  tuple[1].forEach(function (val) { return val && formData.append(tuple[0] + '[]', "" + val); });
177
183
  }
178
- else if (isTriple(tuple)) {
179
- 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);
180
188
  }
181
189
  else if (tuple[1] != null) {
182
190
  formData.append(tuple[0], "" + tuple[1]);
@@ -234,16 +242,33 @@ var defaultSettings = {
234
242
  var defaultContentType = 'application/octet-stream';
235
243
  var defaultFilename = 'original';
236
244
 
237
- var version = '1.1.2';
245
+ var version = '2.1.0';
238
246
 
239
247
  /**
240
248
  * Returns User Agent based on version and settings.
241
249
  */
242
250
  function getUserAgent(_a) {
243
- var _b = _a === void 0 ? {} : _a, _c = _b.publicKey, publicKey = _c === void 0 ? '' : _c, _d = _b.integration, integration = _d === void 0 ? '' : _d;
244
- var mainInfo = [version, publicKey].filter(Boolean).join('/');
245
- var additionInfo = ['JavaScript', integration].filter(Boolean).join('; ');
246
- 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 + ")";
247
272
  }
248
273
 
249
274
  var SEPARATOR = /\W|_/g;
@@ -306,7 +331,7 @@ function retrier(fn, options) {
306
331
  return runAttempt(fn);
307
332
  }
308
333
 
309
- var REQUEST_WAS_THROTTLED_CODE = 429;
334
+ var REQUEST_WAS_THROTTLED_CODE = 'RequestThrottledError';
310
335
  var DEFAULT_RETRY_AFTER_TIMEOUT = 15000;
311
336
  function getTimeoutFromThrottledRequest(error) {
312
337
  var headers = (error || {}).headers;
@@ -318,9 +343,8 @@ function retryIfThrottled(fn, retryThrottledMaxTimes) {
318
343
  return retrier(function (_a) {
319
344
  var attempt = _a.attempt, retry = _a.retry;
320
345
  return fn().catch(function (error) {
321
- var _a;
322
346
  if ('response' in error &&
323
- ((_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 &&
324
348
  attempt < retryThrottledMaxTimes) {
325
349
  return retry(getTimeoutFromThrottledRequest(error));
326
350
  }
@@ -334,7 +358,7 @@ function retryIfThrottled(fn, retryThrottledMaxTimes) {
334
358
  * Can be canceled and has progress.
335
359
  */
336
360
  function base(file, _a) {
337
- 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;
338
362
  return retryIfThrottled(function () {
339
363
  var _a;
340
364
  return request({
@@ -343,7 +367,7 @@ function base(file, _a) {
343
367
  jsonerrors: 1
344
368
  }),
345
369
  headers: {
346
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
370
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
347
371
  },
348
372
  data: buildFormData([
349
373
  ['file', file, (_a = fileName !== null && fileName !== void 0 ? fileName : file.name) !== null && _a !== void 0 ? _a : defaultFilename],
@@ -362,7 +386,7 @@ function base(file, _a) {
362
386
  var data = _a.data, headers = _a.headers, request = _a.request;
363
387
  var response = camelizeKeys(JSON.parse(data));
364
388
  if ('error' in response) {
365
- 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);
366
390
  }
367
391
  else {
368
392
  return response;
@@ -379,14 +403,13 @@ var TypeEnum;
379
403
  /**
380
404
  * Uploading files from URL.
381
405
  */
382
- /* eslint @typescript-eslint/camelcase: [2, {allow: ["pub_key", "source_url", "check_URL_duplicates", "save_URL_duplicates"]}] */
383
406
  function fromUrl(sourceUrl, _a) {
384
- 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;
385
408
  return retryIfThrottled(function () {
386
409
  return request({
387
410
  method: 'POST',
388
411
  headers: {
389
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
412
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
390
413
  },
391
414
  url: getUrl(baseURL, '/from_url/', {
392
415
  jsonerrors: 1,
@@ -405,7 +428,7 @@ function fromUrl(sourceUrl, _a) {
405
428
  var data = _a.data, headers = _a.headers, request = _a.request;
406
429
  var response = camelizeKeys(JSON.parse(data));
407
430
  if ('error' in response) {
408
- 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);
409
432
  }
410
433
  else {
411
434
  return response;
@@ -429,12 +452,18 @@ var isErrorResponse = function (response) {
429
452
  * Checking upload status and working with file tokens.
430
453
  */
431
454
  function fromUrlStatus(token, _a) {
432
- 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;
433
456
  return retryIfThrottled(function () {
434
457
  return request({
435
458
  method: 'GET',
436
459
  headers: publicKey
437
- ? { '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
+ }
438
467
  : undefined,
439
468
  url: getUrl(baseURL, '/from_url/status/', {
440
469
  jsonerrors: 1,
@@ -445,7 +474,7 @@ function fromUrlStatus(token, _a) {
445
474
  var data = _a.data, headers = _a.headers, request = _a.request;
446
475
  var response = camelizeKeys(JSON.parse(data));
447
476
  if ('error' in response && !isErrorResponse(response)) {
448
- throw new UploadClientError("[" + response.error.statusCode + "] " + response.error.content, request, response.error, headers);
477
+ throw new UploadClientError(response.error.content, undefined, request, response, headers);
449
478
  }
450
479
  else {
451
480
  return response;
@@ -457,14 +486,13 @@ function fromUrlStatus(token, _a) {
457
486
  /**
458
487
  * Create files group.
459
488
  */
460
- /* eslint @typescript-eslint/camelcase: [2, {allow: ["pub_key"]}] */
461
489
  function group(uuids, _a) {
462
- 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;
463
491
  return retryIfThrottled(function () {
464
492
  return request({
465
493
  method: 'POST',
466
494
  headers: {
467
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
495
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
468
496
  },
469
497
  url: getUrl(baseURL, '/group/', {
470
498
  jsonerrors: 1,
@@ -480,7 +508,7 @@ function group(uuids, _a) {
480
508
  var data = _a.data, headers = _a.headers, request = _a.request;
481
509
  var response = camelizeKeys(JSON.parse(data));
482
510
  if ('error' in response) {
483
- 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);
484
512
  }
485
513
  else {
486
514
  return response;
@@ -492,14 +520,13 @@ function group(uuids, _a) {
492
520
  /**
493
521
  * Get info about group.
494
522
  */
495
- /* eslint @typescript-eslint/camelcase: [2, {allow: ["pub_key", "group_id"]}] */
496
523
  function groupInfo(id, _a) {
497
- 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;
498
525
  return retryIfThrottled(function () {
499
526
  return request({
500
527
  method: 'GET',
501
528
  headers: {
502
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
529
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
503
530
  },
504
531
  url: getUrl(baseURL, '/group/info/', {
505
532
  jsonerrors: 1,
@@ -512,7 +539,7 @@ function groupInfo(id, _a) {
512
539
  var data = _a.data, headers = _a.headers, request = _a.request;
513
540
  var response = camelizeKeys(JSON.parse(data));
514
541
  if ('error' in response) {
515
- 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);
516
543
  }
517
544
  else {
518
545
  return response;
@@ -524,14 +551,13 @@ function groupInfo(id, _a) {
524
551
  /**
525
552
  * Returns a JSON dictionary holding file info.
526
553
  */
527
- /* eslint @typescript-eslint/camelcase: [2, {allow: ["pub_key", "file_id"]}] */
528
554
  function info(uuid, _a) {
529
- 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;
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;
530
556
  return retryIfThrottled(function () {
531
557
  return request({
532
558
  method: 'GET',
533
559
  headers: {
534
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
560
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
535
561
  },
536
562
  url: getUrl(baseURL, '/info/', {
537
563
  jsonerrors: 1,
@@ -544,7 +570,7 @@ function info(uuid, _a) {
544
570
  var data = _a.data, headers = _a.headers, request = _a.request;
545
571
  var response = camelizeKeys(JSON.parse(data));
546
572
  if ('error' in response) {
547
- 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);
548
574
  }
549
575
  else {
550
576
  return response;
@@ -557,13 +583,13 @@ function info(uuid, _a) {
557
583
  * Start multipart uploading.
558
584
  */
559
585
  function multipartStart(size, _a) {
560
- 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;
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;
561
587
  return retryIfThrottled(function () {
562
588
  return request({
563
589
  method: 'POST',
564
590
  url: getUrl(baseURL, '/multipart/start/', { jsonerrors: 1 }),
565
591
  headers: {
566
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
592
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
567
593
  },
568
594
  data: buildFormData([
569
595
  ['filename', fileName !== null && fileName !== void 0 ? fileName : defaultFilename],
@@ -581,7 +607,7 @@ function multipartStart(size, _a) {
581
607
  var data = _a.data, headers = _a.headers, request = _a.request;
582
608
  var response = camelizeKeys(JSON.parse(data));
583
609
  if ('error' in response) {
584
- 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);
585
611
  }
586
612
  else {
587
613
  // convert to array
@@ -596,15 +622,10 @@ function multipartStart(size, _a) {
596
622
  * Complete multipart uploading.
597
623
  */
598
624
  function multipartUpload(part, url, _a) {
599
- var publicKey = _a.publicKey, signal = _a.signal, onProgress = _a.onProgress, integration = _a.integration;
625
+ var signal = _a.signal, onProgress = _a.onProgress;
600
626
  return request({
601
627
  method: 'PUT',
602
628
  url: url,
603
- headers: {
604
- 'X-UC-User-Agent': publicKey
605
- ? getUserAgent({ publicKey: publicKey, integration: integration })
606
- : undefined
607
- },
608
629
  data: part,
609
630
  onProgress: onProgress,
610
631
  signal: signal
@@ -625,13 +646,13 @@ function multipartUpload(part, url, _a) {
625
646
  * Complete multipart uploading.
626
647
  */
627
648
  function multipartComplete(uuid, _a) {
628
- 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;
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;
629
650
  return retryIfThrottled(function () {
630
651
  return request({
631
652
  method: 'POST',
632
653
  url: getUrl(baseURL, '/multipart/complete/', { jsonerrors: 1 }),
633
654
  headers: {
634
- 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration })
655
+ 'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
635
656
  },
636
657
  data: buildFormData([
637
658
  ['uuid', uuid],
@@ -643,7 +664,7 @@ function multipartComplete(uuid, _a) {
643
664
  var data = _a.data, headers = _a.headers, request = _a.request;
644
665
  var response = camelizeKeys(JSON.parse(data));
645
666
  if ('error' in response) {
646
- throw new UploadClientError("[" + response.error.statusCode + "] " + response.error.content, request, response.error, headers);
667
+ throw new UploadClientError(response.error.content, response.error.errorCode, request, response, headers);
647
668
  }
648
669
  else {
649
670
  return response;
@@ -659,6 +680,7 @@ var UploadcareFile = /** @class */ (function () {
659
680
  this.size = null;
660
681
  this.isStored = null;
661
682
  this.isImage = null;
683
+ this.mimeType = null;
662
684
  this.cdnUrl = null;
663
685
  this.cdnUrlModifiers = null;
664
686
  this.originalUrl = null;
@@ -677,6 +699,7 @@ var UploadcareFile = /** @class */ (function () {
677
699
  this.size = fileInfo.size;
678
700
  this.isStored = fileInfo.isStored;
679
701
  this.isImage = fileInfo.isImage;
702
+ this.mimeType = fileInfo.mimeType;
680
703
  this.cdnUrl = cdnUrl;
681
704
  this.cdnUrlModifiers = cdnUrlModifiers;
682
705
  this.originalUrl = originalUrl;
@@ -718,7 +741,7 @@ var poll = function (_a) {
718
741
  };
719
742
 
720
743
  function isReadyPoll(_a) {
721
- 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;
722
745
  return poll({
723
746
  check: function (signal) {
724
747
  return info(file, {
@@ -727,6 +750,7 @@ function isReadyPoll(_a) {
727
750
  signal: signal,
728
751
  source: source,
729
752
  integration: integration,
753
+ userAgent: userAgent,
730
754
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes
731
755
  }).then(function (response) {
732
756
  if (response.isReady) {
@@ -741,7 +765,7 @@ function isReadyPoll(_a) {
741
765
  }
742
766
 
743
767
  var uploadFromObject = function (file, _a) {
744
- 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;
745
769
  return base(file, {
746
770
  publicKey: publicKey,
747
771
  fileName: fileName,
@@ -753,6 +777,7 @@ var uploadFromObject = function (file, _a) {
753
777
  onProgress: onProgress,
754
778
  source: source,
755
779
  integration: integration,
780
+ userAgent: userAgent,
756
781
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes
757
782
  })
758
783
  .then(function (_a) {
@@ -763,6 +788,7 @@ var uploadFromObject = function (file, _a) {
763
788
  baseURL: baseURL,
764
789
  source: source,
765
790
  integration: integration,
791
+ userAgent: userAgent,
766
792
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
767
793
  onProgress: onProgress,
768
794
  signal: signal
@@ -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
  });
@@ -1561,6 +1616,8 @@ var UploadClient = /** @class */ (function () {
1561
1616
 
1562
1617
  exports.AbortController = AbortController;
1563
1618
  exports.UploadClient = UploadClient;
1619
+ exports.UploadcareFile = UploadcareFile;
1620
+ exports.UploadcareGroup = UploadcareGroup;
1564
1621
  exports.base = base;
1565
1622
  exports.fromUrl = fromUrl;
1566
1623
  exports.fromUrlStatus = fromUrlStatus;
@@ -1570,5 +1627,9 @@ exports.info = info;
1570
1627
  exports.multipartComplete = multipartComplete;
1571
1628
  exports.multipartStart = multipartStart;
1572
1629
  exports.multipartUpload = multipartUpload;
1630
+ exports.uploadBase = uploadFromObject;
1573
1631
  exports.uploadFile = uploadFile;
1574
1632
  exports.uploadFileGroup = uploadFileGroup;
1633
+ exports.uploadFromUploaded = uploadFromUploaded;
1634
+ exports.uploadFromUrl = uploadFromUrl;
1635
+ exports.uploadMultipart = uploadMultipart;