@uploadcare/upload-client 3.0.0 → 3.1.2-alpha.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.
package/dist/index.cjs CHANGED
@@ -215,31 +215,95 @@ function identity(obj) {
215
215
  return obj;
216
216
  }
217
217
 
218
+ var getFileOptions = function (_a) {
219
+ var name = _a.name, contentType = _a.contentType;
220
+ return [
221
+ {
222
+ filename: name,
223
+ contentType: contentType
224
+ }
225
+ ];
226
+ };
218
227
  var transformFile = identity;
219
228
  var getFormData = (function () { return new NodeFormData__default["default"](); });
220
229
 
221
- var isFileTuple = function (tuple) {
222
- return tuple[0] === 'file';
230
+ /**
231
+ * FileData type guard.
232
+ */
233
+ var isFileData = function (data) {
234
+ return (data !== undefined &&
235
+ ((typeof Blob !== 'undefined' && data instanceof Blob) ||
236
+ (typeof File !== 'undefined' && data instanceof File) ||
237
+ (typeof Buffer !== 'undefined' && data instanceof Buffer)));
223
238
  };
224
- function buildFormData(body) {
225
- var formData = getFormData();
226
- var _loop_1 = function (tuple) {
227
- if (Array.isArray(tuple[1])) {
228
- // refactor this
229
- tuple[1].forEach(function (val) { return val && formData.append(tuple[0] + '[]', "" + val); });
230
- }
231
- else if (isFileTuple(tuple)) {
232
- var name_1 = tuple[2];
233
- var file = transformFile(tuple[1]); // lgtm[js/superfluous-trailing-arguments]
234
- formData.append(tuple[0], file, name_1);
235
- }
236
- else if (tuple[1] != null) {
237
- formData.append(tuple[0], "" + tuple[1]);
239
+ /**
240
+ * Uuid type guard.
241
+ */
242
+ var isUuid = function (data) {
243
+ var UUID_REGEX = '[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}';
244
+ var regExp = new RegExp(UUID_REGEX);
245
+ return !isFileData(data) && regExp.test(data);
246
+ };
247
+ /**
248
+ * Url type guard.
249
+ *
250
+ * @param {NodeFile | BrowserFile | Url | Uuid} data
251
+ */
252
+ var isUrl = function (data) {
253
+ var URL_REGEX = '^(?:\\w+:)?\\/\\/([^\\s\\.]+\\.\\S{2}|localhost[\\:?\\d]*)\\S*$';
254
+ var regExp = new RegExp(URL_REGEX);
255
+ return !isFileData(data) && regExp.test(data);
256
+ };
257
+
258
+ var isSimpleValue = function (value) {
259
+ return (typeof value === 'string' ||
260
+ typeof value === 'number' ||
261
+ typeof value === 'undefined');
262
+ };
263
+ var isObjectValue = function (value) {
264
+ return !!value && typeof value === 'object' && !Array.isArray(value);
265
+ };
266
+ var isFileValue = function (value) {
267
+ return !!value &&
268
+ typeof value === 'object' &&
269
+ 'data' in value &&
270
+ isFileData(value.data);
271
+ };
272
+ function collectParams(params, inputKey, inputValue) {
273
+ if (isFileValue(inputValue)) {
274
+ var name_1 = inputValue.name, contentType = inputValue.contentType;
275
+ var file = transformFile(inputValue.data); // lgtm [js/superfluous-trailing-arguments]
276
+ var options = getFileOptions({ name: name_1, contentType: contentType });
277
+ params.push(__spreadArrays([inputKey, file], options));
278
+ }
279
+ else if (isObjectValue(inputValue)) {
280
+ for (var _i = 0, _a = Object.entries(inputValue); _i < _a.length; _i++) {
281
+ var _b = _a[_i], key = _b[0], value = _b[1];
282
+ if (typeof value !== 'undefined') {
283
+ params.push([inputKey + "[" + key + "]", String(value)]);
284
+ }
238
285
  }
239
- };
240
- for (var _i = 0, body_1 = body; _i < body_1.length; _i++) {
241
- var tuple = body_1[_i];
242
- _loop_1(tuple);
286
+ }
287
+ else if (isSimpleValue(inputValue) && inputValue) {
288
+ params.push([inputKey, inputValue.toString()]);
289
+ }
290
+ }
291
+ function getFormDataParams(options) {
292
+ var params = [];
293
+ for (var _i = 0, _a = Object.entries(options); _i < _a.length; _i++) {
294
+ var _b = _a[_i], key = _b[0], value = _b[1];
295
+ collectParams(params, key, value);
296
+ }
297
+ return params;
298
+ }
299
+ function buildFormData(options) {
300
+ var formData = getFormData();
301
+ var paramsList = getFormDataParams(options);
302
+ for (var _i = 0, paramsList_1 = paramsList; _i < paramsList_1.length; _i++) {
303
+ var params = paramsList_1[_i];
304
+ var key = params[0], value = params[1], options_1 = params.slice(2);
305
+ // node form-data has another signature for append
306
+ formData.append.apply(formData, __spreadArrays([key, value], options_1));
243
307
  }
244
308
  return formData;
245
309
  }
@@ -247,13 +311,26 @@ function buildFormData(body) {
247
311
  var serializePair = function (key, value) {
248
312
  return typeof value !== 'undefined' ? key + "=" + encodeURIComponent(value) : null;
249
313
  };
314
+ // TODO: generalize value transforming logic and use it here and inside `buildFormData`
250
315
  var createQuery = function (query) {
251
316
  return Object.entries(query)
252
317
  .reduce(function (params, _a) {
253
318
  var key = _a[0], value = _a[1];
254
- return params.concat(Array.isArray(value)
255
- ? value.map(function (value) { return serializePair(key + "[]", value); })
256
- : serializePair(key, value));
319
+ var param;
320
+ if (typeof value === 'object' && !Array.isArray(value)) {
321
+ param = Object.entries(value)
322
+ .filter(function (entry) { return typeof entry[1] !== 'undefined'; })
323
+ .map(function (entry) {
324
+ return serializePair(key + "[" + entry[0] + "]", String(entry[1]));
325
+ });
326
+ }
327
+ else if (Array.isArray(value)) {
328
+ param = value.map(function (val) { return serializePair(key + "[]", val); });
329
+ }
330
+ else {
331
+ param = serializePair(key, value);
332
+ }
333
+ return params.concat(param);
257
334
  }, [])
258
335
  .filter(function (x) { return !!x; })
259
336
  .join('&');
@@ -289,7 +366,7 @@ var defaultSettings = {
289
366
  var defaultContentType = 'application/octet-stream';
290
367
  var defaultFilename = 'original';
291
368
 
292
- var version = '3.0.0';
369
+ var version = '3.1.1';
293
370
 
294
371
  /**
295
372
  * Returns User Agent based on version and settings.
@@ -400,12 +477,16 @@ function retryIfThrottled(fn, retryThrottledMaxTimes) {
400
477
  });
401
478
  }
402
479
 
480
+ function getStoreValue(store) {
481
+ return typeof store === 'undefined' ? 'auto' : store ? '1' : '0';
482
+ }
483
+
403
484
  /**
404
485
  * Performs file uploading request to Uploadcare Upload API.
405
486
  * Can be canceled and has progress.
406
487
  */
407
488
  function base(file, _a) {
408
- 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;
489
+ var publicKey = _a.publicKey, fileName = _a.fileName, contentType = _a.contentType, _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, metadata = _a.metadata;
409
490
  return retryIfThrottled(function () {
410
491
  var _a;
411
492
  return request({
@@ -416,17 +497,19 @@ function base(file, _a) {
416
497
  headers: {
417
498
  'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
418
499
  },
419
- data: buildFormData([
420
- ['file', file, (_a = fileName !== null && fileName !== void 0 ? fileName : file.name) !== null && _a !== void 0 ? _a : defaultFilename],
421
- ['UPLOADCARE_PUB_KEY', publicKey],
422
- [
423
- 'UPLOADCARE_STORE',
424
- typeof store === 'undefined' ? 'auto' : store ? 1 : 0
425
- ],
426
- ['signature', secureSignature],
427
- ['expire', secureExpire],
428
- ['source', source]
429
- ]),
500
+ data: buildFormData({
501
+ file: {
502
+ data: file,
503
+ name: (_a = fileName !== null && fileName !== void 0 ? fileName : file.name) !== null && _a !== void 0 ? _a : defaultFilename,
504
+ contentType: contentType
505
+ },
506
+ UPLOADCARE_PUB_KEY: publicKey,
507
+ UPLOADCARE_STORE: getStoreValue(store),
508
+ signature: secureSignature,
509
+ expire: secureExpire,
510
+ source: source,
511
+ metadata: metadata
512
+ }),
430
513
  signal: signal,
431
514
  onProgress: onProgress
432
515
  }).then(function (_a) {
@@ -451,7 +534,7 @@ var TypeEnum;
451
534
  * Uploading files from URL.
452
535
  */
453
536
  function fromUrl(sourceUrl, _a) {
454
- 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;
537
+ 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, metadata = _a.metadata;
455
538
  return retryIfThrottled(function () {
456
539
  return request({
457
540
  method: 'POST',
@@ -462,13 +545,14 @@ function fromUrl(sourceUrl, _a) {
462
545
  jsonerrors: 1,
463
546
  pub_key: publicKey,
464
547
  source_url: sourceUrl,
465
- store: typeof store === 'undefined' ? 'auto' : store ? 1 : undefined,
548
+ store: getStoreValue(store),
466
549
  filename: fileName,
467
550
  check_URL_duplicates: checkForUrlDuplicates ? 1 : undefined,
468
551
  save_URL_duplicates: saveUrlForRecurrentUploads ? 1 : undefined,
469
552
  signature: secureSignature,
470
553
  expire: secureExpire,
471
- source: source
554
+ source: source,
555
+ metadata: metadata
472
556
  }),
473
557
  signal: signal
474
558
  }).then(function (_a) {
@@ -630,7 +714,7 @@ function info(uuid, _a) {
630
714
  * Start multipart uploading.
631
715
  */
632
716
  function multipartStart(size, _a) {
633
- 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;
717
+ 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, metadata = _a.metadata;
634
718
  return retryIfThrottled(function () {
635
719
  return request({
636
720
  method: 'POST',
@@ -638,17 +722,18 @@ function multipartStart(size, _a) {
638
722
  headers: {
639
723
  'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
640
724
  },
641
- data: buildFormData([
642
- ['filename', fileName !== null && fileName !== void 0 ? fileName : defaultFilename],
643
- ['size', size],
644
- ['content_type', contentType !== null && contentType !== void 0 ? contentType : defaultContentType],
645
- ['part_size', multipartChunkSize],
646
- ['UPLOADCARE_STORE', store ? '' : 'auto'],
647
- ['UPLOADCARE_PUB_KEY', publicKey],
648
- ['signature', secureSignature],
649
- ['expire', secureExpire],
650
- ['source', source]
651
- ]),
725
+ data: buildFormData({
726
+ filename: fileName !== null && fileName !== void 0 ? fileName : defaultFilename,
727
+ size: size,
728
+ content_type: contentType !== null && contentType !== void 0 ? contentType : defaultContentType,
729
+ part_size: multipartChunkSize,
730
+ UPLOADCARE_STORE: getStoreValue(store),
731
+ UPLOADCARE_PUB_KEY: publicKey,
732
+ signature: secureSignature,
733
+ expire: secureExpire,
734
+ source: source,
735
+ metadata: metadata
736
+ }),
652
737
  signal: signal
653
738
  }).then(function (_a) {
654
739
  var data = _a.data, headers = _a.headers, request = _a.request;
@@ -705,11 +790,11 @@ function multipartComplete(uuid, _a) {
705
790
  headers: {
706
791
  'X-UC-User-Agent': getUserAgent({ publicKey: publicKey, integration: integration, userAgent: userAgent })
707
792
  },
708
- data: buildFormData([
709
- ['uuid', uuid],
710
- ['UPLOADCARE_PUB_KEY', publicKey],
711
- ['source', source]
712
- ]),
793
+ data: buildFormData({
794
+ uuid: uuid,
795
+ UPLOADCARE_PUB_KEY: publicKey,
796
+ source: source
797
+ }),
713
798
  signal: signal
714
799
  }).then(function (_a) {
715
800
  var data = _a.data, headers = _a.headers, request = _a.request;
@@ -738,6 +823,8 @@ var UploadcareFile = /** @class */ (function () {
738
823
  this.originalFilename = null;
739
824
  this.imageInfo = null;
740
825
  this.videoInfo = null;
826
+ this.contentInfo = null;
827
+ this.metadata = null;
741
828
  var uuid = fileInfo.uuid, s3Bucket = fileInfo.s3Bucket;
742
829
  var urlBase = s3Bucket
743
830
  ? "https://" + s3Bucket + ".s3.amazonaws.com/" + uuid + "/" + fileInfo.filename
@@ -757,6 +844,8 @@ var UploadcareFile = /** @class */ (function () {
757
844
  this.originalFilename = fileInfo.originalFilename;
758
845
  this.imageInfo = camelizeKeys(fileInfo.imageInfo);
759
846
  this.videoInfo = camelizeKeys(fileInfo.videoInfo);
847
+ this.contentInfo = camelizeKeys(fileInfo.contentInfo);
848
+ this.metadata = fileInfo.metadata || null;
760
849
  }
761
850
  return UploadcareFile;
762
851
  }());
@@ -816,10 +905,11 @@ function isReadyPoll(_a) {
816
905
  }
817
906
 
818
907
  var uploadFromObject = function (file, _a) {
819
- 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;
908
+ var publicKey = _a.publicKey, fileName = _a.fileName, baseURL = _a.baseURL, secureSignature = _a.secureSignature, secureExpire = _a.secureExpire, store = _a.store, contentType = _a.contentType, signal = _a.signal, onProgress = _a.onProgress, source = _a.source, integration = _a.integration, userAgent = _a.userAgent, retryThrottledRequestMaxTimes = _a.retryThrottledRequestMaxTimes, baseCDN = _a.baseCDN, metadata = _a.metadata;
820
909
  return base(file, {
821
910
  publicKey: publicKey,
822
911
  fileName: fileName,
912
+ contentType: contentType,
823
913
  baseURL: baseURL,
824
914
  secureSignature: secureSignature,
825
915
  secureExpire: secureExpire,
@@ -829,7 +919,8 @@ var uploadFromObject = function (file, _a) {
829
919
  source: source,
830
920
  integration: integration,
831
921
  userAgent: userAgent,
832
- retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes
922
+ retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
923
+ metadata: metadata
833
924
  })
834
925
  .then(function (_a) {
835
926
  var file = _a.file;
@@ -1137,7 +1228,7 @@ var pushStrategy = function (_a) {
1137
1228
  });
1138
1229
  };
1139
1230
  var uploadFromUrl = function (sourceUrl, _a) {
1140
- 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;
1231
+ 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, metadata = _a.metadata;
1141
1232
  return Promise.resolve(preconnect(pusherKey))
1142
1233
  .then(function () {
1143
1234
  return fromUrl(sourceUrl, {
@@ -1153,7 +1244,8 @@ var uploadFromUrl = function (sourceUrl, _a) {
1153
1244
  source: source,
1154
1245
  integration: integration,
1155
1246
  userAgent: userAgent,
1156
- retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes
1247
+ retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1248
+ metadata: metadata
1157
1249
  });
1158
1250
  })
1159
1251
  .catch(function (error) {
@@ -1235,34 +1327,6 @@ var uploadFromUploaded = function (uuid, _a) {
1235
1327
  });
1236
1328
  };
1237
1329
 
1238
- /**
1239
- * FileData type guard.
1240
- */
1241
- var isFileData = function (data) {
1242
- return (data !== undefined &&
1243
- ((typeof Blob !== 'undefined' && data instanceof Blob) ||
1244
- (typeof File !== 'undefined' && data instanceof File) ||
1245
- (typeof Buffer !== 'undefined' && data instanceof Buffer)));
1246
- };
1247
- /**
1248
- * Uuid type guard.
1249
- */
1250
- var isUuid = function (data) {
1251
- var UUID_REGEX = '[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}';
1252
- var regExp = new RegExp(UUID_REGEX);
1253
- return !isFileData(data) && regExp.test(data);
1254
- };
1255
- /**
1256
- * Url type guard.
1257
- *
1258
- * @param {NodeFile | BrowserFile | Url | Uuid} data
1259
- */
1260
- var isUrl = function (data) {
1261
- var URL_REGEX = '^(?:\\w+:)?\\/\\/([^\\s\\.]+\\.\\S{2}|localhost[\\:?\\d]*)\\S*$';
1262
- var regExp = new RegExp(URL_REGEX);
1263
- return !isFileData(data) && regExp.test(data);
1264
- };
1265
-
1266
1330
  /**
1267
1331
  * Get file size.
1268
1332
  */
@@ -1342,7 +1406,7 @@ var uploadPartWithRetry = function (chunk, url, _a) {
1342
1406
  });
1343
1407
  };
1344
1408
  var uploadMultipart = function (file, _a) {
1345
- 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;
1409
+ 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, metadata = _a.metadata;
1346
1410
  var size = fileSize || getFileSize(file);
1347
1411
  var progressValues;
1348
1412
  var createProgressHandler = function (totalChunks, chunkIdx) {
@@ -1377,7 +1441,8 @@ var uploadMultipart = function (file, _a) {
1377
1441
  source: source,
1378
1442
  integration: integration,
1379
1443
  userAgent: userAgent,
1380
- retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes
1444
+ retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1445
+ metadata: metadata
1381
1446
  })
1382
1447
  .then(function (_a) {
1383
1448
  var uuid = _a.uuid, parts = _a.parts;
@@ -1431,10 +1496,10 @@ var uploadMultipart = function (file, _a) {
1431
1496
  * Uploads file from provided data.
1432
1497
  */
1433
1498
  function uploadFile(data, _a) {
1434
- 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;
1499
+ 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, multipartMinFileSize = _a.multipartMinFileSize, 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, metadata = _a.metadata;
1435
1500
  if (isFileData(data)) {
1436
1501
  var fileSize = getFileSize(data);
1437
- if (isMultipart(fileSize)) {
1502
+ if (isMultipart(fileSize, multipartMinFileSize)) {
1438
1503
  return uploadMultipart(data, {
1439
1504
  publicKey: publicKey,
1440
1505
  contentType: contentType,
@@ -1452,12 +1517,14 @@ function uploadFile(data, _a) {
1452
1517
  userAgent: userAgent,
1453
1518
  maxConcurrentRequests: maxConcurrentRequests,
1454
1519
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1455
- baseCDN: baseCDN
1520
+ baseCDN: baseCDN,
1521
+ metadata: metadata
1456
1522
  });
1457
1523
  }
1458
1524
  return uploadFromObject(data, {
1459
1525
  publicKey: publicKey,
1460
1526
  fileName: fileName,
1527
+ contentType: contentType,
1461
1528
  baseURL: baseURL,
1462
1529
  secureSignature: secureSignature,
1463
1530
  secureExpire: secureExpire,
@@ -1468,7 +1535,8 @@ function uploadFile(data, _a) {
1468
1535
  integration: integration,
1469
1536
  userAgent: userAgent,
1470
1537
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1471
- baseCDN: baseCDN
1538
+ baseCDN: baseCDN,
1539
+ metadata: metadata
1472
1540
  });
1473
1541
  }
1474
1542
  if (isUrl(data)) {
@@ -1488,7 +1556,8 @@ function uploadFile(data, _a) {
1488
1556
  integration: integration,
1489
1557
  userAgent: userAgent,
1490
1558
  retryThrottledRequestMaxTimes: retryThrottledRequestMaxTimes,
1491
- pusherKey: pusherKey
1559
+ pusherKey: pusherKey,
1560
+ metadata: metadata
1492
1561
  });
1493
1562
  }
1494
1563
  if (isUuid(data)) {