@atlaskit/media-client 16.0.0 → 17.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.
Files changed (87) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/cjs/client/collection-fetcher.js +4 -4
  3. package/dist/cjs/client/file-fetcher/index.js +5 -9
  4. package/dist/cjs/client/media-store/index.js +49 -32
  5. package/dist/cjs/constants.js +11 -2
  6. package/dist/cjs/index.js +2 -2
  7. package/dist/cjs/models/media.js +10 -2
  8. package/dist/cjs/uploader/calculateChunkSize.js +45 -0
  9. package/dist/cjs/uploader/error.js +67 -0
  10. package/dist/cjs/uploader/index.js +318 -0
  11. package/dist/cjs/utils/{toMediaSubscribable.js → mediaSubscribable/fromObservable.js} +4 -4
  12. package/dist/cjs/utils/mediaSubscribable/index.js +27 -0
  13. package/dist/cjs/utils/{mediaSubscribableToPromise.js → mediaSubscribable/toPromise.js} +3 -3
  14. package/dist/cjs/utils/mediaSubscribable/types.js +5 -0
  15. package/dist/cjs/utils/request/errors.js +4 -0
  16. package/dist/cjs/utils/request/helpers.js +14 -3
  17. package/dist/cjs/version.json +1 -1
  18. package/dist/es2019/client/collection-fetcher.js +2 -2
  19. package/dist/es2019/client/file-fetcher/index.js +5 -6
  20. package/dist/es2019/client/media-store/index.js +30 -18
  21. package/dist/es2019/constants.js +5 -1
  22. package/dist/es2019/index.js +1 -1
  23. package/dist/es2019/models/media.js +8 -1
  24. package/dist/es2019/uploader/calculateChunkSize.js +32 -0
  25. package/dist/es2019/uploader/error.js +30 -0
  26. package/dist/es2019/{uploader.js → uploader/index.js} +47 -10
  27. package/dist/es2019/utils/{toMediaSubscribable.js → mediaSubscribable/fromObservable.js} +3 -3
  28. package/dist/es2019/utils/mediaSubscribable/index.js +2 -0
  29. package/dist/es2019/utils/{mediaSubscribableToPromise.js → mediaSubscribable/toPromise.js} +1 -1
  30. package/dist/es2019/utils/mediaSubscribable/types.js +1 -0
  31. package/dist/es2019/utils/request/errors.js +4 -0
  32. package/dist/es2019/utils/request/helpers.js +14 -0
  33. package/dist/es2019/version.json +1 -1
  34. package/dist/esm/client/collection-fetcher.js +3 -3
  35. package/dist/esm/client/file-fetcher/index.js +6 -9
  36. package/dist/esm/client/media-client.js +1 -1
  37. package/dist/esm/client/media-store/index.js +50 -33
  38. package/dist/esm/client/media-store/resolveAuth.js +1 -1
  39. package/dist/esm/client/stargate-client.js +1 -1
  40. package/dist/esm/constants.js +5 -1
  41. package/dist/esm/index.js +1 -1
  42. package/dist/esm/models/media.js +8 -1
  43. package/dist/esm/uploader/calculateChunkSize.js +32 -0
  44. package/dist/esm/uploader/error.js +51 -0
  45. package/dist/esm/uploader/index.js +298 -0
  46. package/dist/esm/utils/createFileDataLoader.js +1 -1
  47. package/dist/esm/utils/getDimensionsFromBlob.js +1 -1
  48. package/dist/esm/utils/getVideoDimensionsFromBlob.js +1 -1
  49. package/dist/esm/utils/hashing/hasherCreator.js +1 -1
  50. package/dist/esm/utils/{toMediaSubscribable.js → mediaSubscribable/fromObservable.js} +3 -3
  51. package/dist/esm/utils/mediaSubscribable/index.js +2 -0
  52. package/dist/esm/utils/{mediaSubscribableToPromise.js → mediaSubscribable/toPromise.js} +1 -1
  53. package/dist/esm/utils/mediaSubscribable/types.js +1 -0
  54. package/dist/esm/utils/mobileUpload/helpers.js +1 -1
  55. package/dist/esm/utils/mobileUpload/stateMachine/index.js +1 -1
  56. package/dist/esm/utils/polling/index.js +1 -1
  57. package/dist/esm/utils/request/errors.js +4 -0
  58. package/dist/esm/utils/request/helpers.js +13 -4
  59. package/dist/esm/utils/request/index.js +1 -1
  60. package/dist/esm/utils/shouldFetchRemoteFileStates.js +1 -1
  61. package/dist/esm/version.json +1 -1
  62. package/dist/types/client/collection-fetcher.d.ts +1 -1
  63. package/dist/types/client/file-fetcher/index.d.ts +1 -1
  64. package/dist/types/client/media-store/index.d.ts +9 -2
  65. package/dist/types/constants.d.ts +3 -0
  66. package/dist/types/index.d.ts +2 -2
  67. package/dist/types/models/errors/types.d.ts +1 -1
  68. package/dist/types/models/media.d.ts +5 -0
  69. package/dist/types/uploader/calculateChunkSize.d.ts +11 -0
  70. package/dist/types/uploader/error.d.ts +29 -0
  71. package/dist/types/{uploader.d.ts → uploader/index.d.ts} +2 -2
  72. package/dist/types/utils/mediaSubscribable/fromObservable.d.ts +5 -0
  73. package/dist/types/utils/mediaSubscribable/index.d.ts +3 -0
  74. package/dist/types/utils/{mediaSubscribableToPromise.d.ts → mediaSubscribable/toPromise.d.ts} +3 -3
  75. package/dist/types/utils/mediaSubscribable/types.d.ts +16 -0
  76. package/dist/types/utils/request/errors.d.ts +2 -0
  77. package/dist/types/utils/request/helpers.d.ts +4 -0
  78. package/dist/types/utils/request/types.d.ts +2 -0
  79. package/dist/types/utils/safeUnsubscribe.d.ts +1 -1
  80. package/example-helpers/styles.ts +99 -0
  81. package/example-helpers/stylesWrapper.tsx +82 -0
  82. package/package.json +7 -6
  83. package/report.api.md +1389 -0
  84. package/dist/cjs/uploader.js +0 -210
  85. package/dist/esm/uploader.js +0 -194
  86. package/dist/types/utils/toMediaSubscribable.d.ts +0 -20
  87. package/example-helpers/styled.ts +0 -77
package/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # @atlaskit/media-client
2
2
 
3
+ ## 17.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`c07a8176ddf`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c07a8176ddf) - New BlobType SlicedBlob that includes partnumber introduced and used for uploading chunks
8
+ - [`a2e6bd37426`](https://bitbucket.org/atlassian/atlassian-frontend/commits/a2e6bd37426) - add uploadId to prob function to support new media upload api
9
+
10
+ ### Patch Changes
11
+
12
+ - [`e80f52696fe`](https://bitbucket.org/atlassian/atlassian-frontend/commits/e80f52696fe) - Migrated styled-components to emotion
13
+ - [`de9dc9e7cbd`](https://bitbucket.org/atlassian/atlassian-frontend/commits/de9dc9e7cbd) - Renamed internal helpers and files
14
+ - Updated dependencies
15
+
16
+ ## 17.0.0
17
+
18
+ ### Major Changes
19
+
20
+ - [`a718050239e`](https://bitbucket.org/atlassian/atlassian-frontend/commits/a718050239e) - Media Client Uploader enforces a hard limit of 2Tb files.
21
+
22
+ To mitigate these changes:
23
+
24
+ - Set the feature flag mediaUploadApiV2 as false or Revert to a previous version for affected consumers and methods;
25
+ Media Client uploadFile method.
26
+ Media Client File Fetcher upload method.
27
+ Media Picker.
28
+
29
+ - [`e4d0b89cd8b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/e4d0b89cd8b) - Additional parameters and changes to the way parameters are passed to MediaStore.uploadChunk and MediaStore.probeChunks.
30
+ - [`d07442a7ff7`](https://bitbucket.org/atlassian/atlassian-frontend/commits/d07442a7ff7) - Breaking change to media-client uploadFile method, chunkSize and processingBatchSize as parameters removed from uploadFile.
31
+
32
+ ### Patch Changes
33
+
34
+ - [`61cf857a95a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/61cf857a95a) - A util function for dynamically calculating chunkSizes.
35
+ - Updated dependencies
36
+
37
+ ## 16.0.1
38
+
39
+ ### Patch Changes
40
+
41
+ - [`12d0af77572`](https://bitbucket.org/atlassian/atlassian-frontend/commits/12d0af77572) - Store media environment in session storage
42
+ - [`325e210e59f`](https://bitbucket.org/atlassian/atlassian-frontend/commits/325e210e59f) - Revert changes made in MEX-1638-revert-update-media-store-class-with-new-endpoint-parameters
43
+ - [`b73f20ed703`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b73f20ed703) - EDM-3073: Fix collab for media inline and copy-paste regression
44
+ - [`c2ede50a80a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c2ede50a80a) - Add media region and environment returned from media API response into failed analytic events.
45
+ - Updated dependencies
46
+
3
47
  ## 16.0.0
4
48
 
5
49
  ### Major Changes
@@ -7,10 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.collectionCache = exports.CollectionFetcher = void 0;
9
9
 
10
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
-
12
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
11
 
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
14
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
15
 
16
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -25,7 +25,7 @@ var _fileStreamsCache = require("../file-streams-cache");
25
25
 
26
26
  var _fileState = require("../models/file-state");
27
27
 
28
- var _toMediaSubscribable = require("../utils/toMediaSubscribable");
28
+ var _mediaSubscribable = require("../utils/mediaSubscribable");
29
29
 
30
30
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
31
31
 
@@ -116,7 +116,7 @@ var CollectionFetcher = /*#__PURE__*/function () {
116
116
  }).catch(function (error) {
117
117
  return subject.error(error);
118
118
  });
119
- return (0, _toMediaSubscribable.toMediaSubscribable)(subject);
119
+ return (0, _mediaSubscribable.fromObservable)(subject);
120
120
  }
121
121
  }, {
122
122
  key: "removeFile",
@@ -69,7 +69,7 @@ var _overrideMediaTypeIfUnknown = require("../../utils/overrideMediaTypeIfUnknow
69
69
 
70
70
  var _convertBase64ToBlob = require("../../utils/convertBase64ToBlob");
71
71
 
72
- var _mediaSubscribableToPromise = require("../../utils/mediaSubscribableToPromise");
72
+ var _mediaSubscribable = require("../../utils/mediaSubscribable");
73
73
 
74
74
  var _getDimensionsFromBlob = require("../../utils/getDimensionsFromBlob");
75
75
 
@@ -83,8 +83,6 @@ var _polling = require("../../utils/polling");
83
83
 
84
84
  var _detectEmptyFile = require("../../utils/detectEmptyFile");
85
85
 
86
- var _toMediaSubscribable = require("../../utils/toMediaSubscribable");
87
-
88
86
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
89
87
 
90
88
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -182,17 +180,17 @@ var FileFetcherImpl = /*#__PURE__*/function () {
182
180
  collectionName: collectionName,
183
181
  occurrenceKey: occurrenceKey
184
182
  }));
185
- return (0, _toMediaSubscribable.toMediaSubscribable)(subject);
183
+ return (0, _mediaSubscribable.fromObservable)(subject);
186
184
  }
187
185
 
188
- return (0, _toMediaSubscribable.toMediaSubscribable)((0, _fileStreamsCache.getFileStreamsCache)().getOrInsert(id, function () {
186
+ return (0, _mediaSubscribable.fromObservable)((0, _fileStreamsCache.getFileStreamsCache)().getOrInsert(id, function () {
189
187
  return _this2.createDownloadFileStream(id, collectionName);
190
188
  }));
191
189
  }
192
190
  }, {
193
191
  key: "getCurrentState",
194
192
  value: function getCurrentState(id, options) {
195
- return (0, _mediaSubscribableToPromise.mediaSubscribableToPromise)(this.getFileState(id, options));
193
+ return (0, _mediaSubscribable.toPromise)(this.getFileState(id, options));
196
194
  }
197
195
  }, {
198
196
  key: "getArtifactURL",
@@ -333,7 +331,6 @@ var FileFetcherImpl = /*#__PURE__*/function () {
333
331
  };
334
332
  mediaType = (0, _mediaTypeUtils.getMediaTypeFromMimeType)(type); // we emit a richer state after the blob is fetched
335
333
 
336
- // we emit a richer state after the blob is fetched
337
334
  subject.next({
338
335
  status: 'processing',
339
336
  name: name,
@@ -345,7 +342,6 @@ var FileFetcherImpl = /*#__PURE__*/function () {
345
342
  preview: preview
346
343
  }); // we don't want to wait for the file to be upload
347
344
 
348
- // we don't want to wait for the file to be upload
349
345
  _this3.upload(file, undefined, uploadableFileUpfrontIds);
350
346
 
351
347
  _context3.next = 12;
@@ -482,7 +478,7 @@ var FileFetcherImpl = /*#__PURE__*/function () {
482
478
  });
483
479
  }
484
480
 
485
- return (0, _toMediaSubscribable.toMediaSubscribable)(subject);
481
+ return (0, _mediaSubscribable.fromObservable)(subject);
486
482
  }
487
483
  }, {
488
484
  key: "downloadBinary",
@@ -47,6 +47,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
47
47
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
48
48
 
49
49
  var MEDIA_API_REGION = 'media-api-region';
50
+ var MEDIA_API_ENVIRONMENT = 'media-api-environment';
50
51
  var defaultImageOptions = {
51
52
  'max-age': _constants.FILE_CACHE_MAX_AGE,
52
53
  allowAnimated: true,
@@ -69,7 +70,6 @@ var jsonHeaders = {
69
70
  Accept: 'application/json',
70
71
  'Content-Type': 'application/json'
71
72
  };
72
- var mediaEnvironment;
73
73
 
74
74
  var MediaStore = /*#__PURE__*/function () {
75
75
  function MediaStore(config, featureFlags) {
@@ -225,26 +225,38 @@ var MediaStore = /*#__PURE__*/function () {
225
225
  }, {
226
226
  key: "uploadChunk",
227
227
  value: function () {
228
- var _uploadChunk = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(etag, blob, collectionName) {
229
- var metadata, options;
228
+ var _uploadChunk = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(etag, blob) {
229
+ var _ref,
230
+ collectionName,
231
+ uploadId,
232
+ partNumber,
233
+ metadata,
234
+ options,
235
+ _args3 = arguments;
236
+
230
237
  return _regenerator.default.wrap(function _callee3$(_context3) {
231
238
  while (1) {
232
239
  switch (_context3.prev = _context3.next) {
233
240
  case 0:
241
+ _ref = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : {}, collectionName = _ref.collectionName, uploadId = _ref.uploadId, partNumber = _ref.partNumber;
234
242
  metadata = {
235
243
  method: 'PUT',
236
244
  endpoint: '/chunk/{etag}'
237
245
  };
238
246
  options = _objectSpread(_objectSpread({}, metadata), {}, {
247
+ params: {
248
+ uploadId: uploadId,
249
+ partNumber: partNumber
250
+ },
239
251
  authContext: {
240
252
  collectionName: collectionName
241
253
  },
242
254
  body: blob
243
255
  });
244
- _context3.next = 4;
256
+ _context3.next = 5;
245
257
  return this.request("/chunk/".concat(etag), options);
246
258
 
247
- case 4:
259
+ case 5:
248
260
  case "end":
249
261
  return _context3.stop();
250
262
  }
@@ -252,7 +264,7 @@ var MediaStore = /*#__PURE__*/function () {
252
264
  }, _callee3, this);
253
265
  }));
254
266
 
255
- function uploadChunk(_x6, _x7, _x8) {
267
+ function uploadChunk(_x6, _x7) {
256
268
  return _uploadChunk.apply(this, arguments);
257
269
  }
258
270
 
@@ -260,13 +272,20 @@ var MediaStore = /*#__PURE__*/function () {
260
272
  }()
261
273
  }, {
262
274
  key: "probeChunks",
263
- value: function probeChunks(chunks, collectionName) {
275
+ value: function probeChunks(chunks) {
276
+ var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
277
+ collectionName = _ref2.collectionName,
278
+ uploadId = _ref2.uploadId;
279
+
264
280
  var metadata = {
265
281
  method: 'POST',
266
282
  endpoint: '/chunk/probe'
267
283
  };
268
284
 
269
285
  var options = _objectSpread(_objectSpread({}, metadata), {}, {
286
+ params: {
287
+ uploadId: uploadId
288
+ },
270
289
  authContext: {
271
290
  collectionName: collectionName
272
291
  },
@@ -339,13 +358,13 @@ var MediaStore = /*#__PURE__*/function () {
339
358
  key: "getFileImageURL",
340
359
  value: function () {
341
360
  var _getFileImageURL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(id, params) {
342
- var _ref, collectionName, auth;
361
+ var _ref3, collectionName, auth;
343
362
 
344
363
  return _regenerator.default.wrap(function _callee4$(_context4) {
345
364
  while (1) {
346
365
  switch (_context4.prev = _context4.next) {
347
366
  case 0:
348
- _ref = params || {}, collectionName = _ref.collection;
367
+ _ref3 = params || {}, collectionName = _ref3.collection;
349
368
  _context4.next = 3;
350
369
  return this.resolveAuth({
351
370
  collectionName: collectionName
@@ -363,7 +382,7 @@ var MediaStore = /*#__PURE__*/function () {
363
382
  }, _callee4, this);
364
383
  }));
365
384
 
366
- function getFileImageURL(_x9, _x10) {
385
+ function getFileImageURL(_x8, _x9) {
367
386
  return _getFileImageURL.apply(this, arguments);
368
387
  }
369
388
 
@@ -418,7 +437,7 @@ var MediaStore = /*#__PURE__*/function () {
418
437
  }, _callee5, this);
419
438
  }));
420
439
 
421
- function getFileBinaryURL(_x11, _x12) {
440
+ function getFileBinaryURL(_x10, _x11) {
422
441
  return _getFileBinaryURL.apply(this, arguments);
423
442
  }
424
443
 
@@ -467,7 +486,7 @@ var MediaStore = /*#__PURE__*/function () {
467
486
  }, _callee6, this);
468
487
  }));
469
488
 
470
- function getArtifactURL(_x13, _x14, _x15) {
489
+ function getArtifactURL(_x12, _x13, _x14) {
471
490
  return _getArtifactURL.apply(this, arguments);
472
491
  }
473
492
 
@@ -512,7 +531,7 @@ var MediaStore = /*#__PURE__*/function () {
512
531
  }, _callee7, this);
513
532
  }));
514
533
 
515
- function getImage(_x16, _x17, _x18, _x19) {
534
+ function getImage(_x15, _x16, _x17, _x18) {
516
535
  return _getImage.apply(this, arguments);
517
536
  }
518
537
 
@@ -557,7 +576,7 @@ var MediaStore = /*#__PURE__*/function () {
557
576
  }, _callee8, this);
558
577
  }));
559
578
 
560
- function getItems(_x20, _x21) {
579
+ function getItems(_x19, _x20) {
561
580
  return _getItems.apply(this, arguments);
562
581
  }
563
582
 
@@ -592,7 +611,7 @@ var MediaStore = /*#__PURE__*/function () {
592
611
  }, _callee9, this);
593
612
  }));
594
613
 
595
- function getImageMetadata(_x22, _x23) {
614
+ function getImageMetadata(_x21, _x22) {
596
615
  return _getImageMetadata.apply(this, arguments);
597
616
  }
598
617
 
@@ -629,7 +648,7 @@ var MediaStore = /*#__PURE__*/function () {
629
648
  }, _callee10, this);
630
649
  }));
631
650
 
632
- function appendChunksToUpload(_x24, _x25, _x26) {
651
+ function appendChunksToUpload(_x23, _x24, _x25) {
633
652
  return _appendChunksToUpload.apply(this, arguments);
634
653
  }
635
654
 
@@ -702,8 +721,8 @@ var MediaStore = /*#__PURE__*/function () {
702
721
 
703
722
  case 8:
704
723
  response = _context11.sent;
705
- updateMediaRegion(response.headers.get('x-media-region'));
706
- updateMediaEnvironment(response.headers.get('x-media-env'));
724
+ setKeyValueInSessionStorage(MEDIA_API_REGION, response.headers.get('x-media-region'));
725
+ setKeyValueInSessionStorage(MEDIA_API_ENVIRONMENT, response.headers.get('x-media-env'));
707
726
  return _context11.abrupt("return", response);
708
727
 
709
728
  case 12:
@@ -714,7 +733,7 @@ var MediaStore = /*#__PURE__*/function () {
714
733
  }, _callee11, this);
715
734
  }));
716
735
 
717
- function request(_x27) {
736
+ function request(_x26) {
718
737
  return _request2.apply(this, arguments);
719
738
  }
720
739
 
@@ -726,32 +745,30 @@ var MediaStore = /*#__PURE__*/function () {
726
745
 
727
746
  exports.MediaStore = MediaStore;
728
747
 
729
- function updateMediaRegion(region) {
730
- if (!region || !(window && window.sessionStorage)) {
748
+ var getValueFromSessionStorage = function getValueFromSessionStorage(key) {
749
+ return window && window.sessionStorage && window.sessionStorage.getItem(key) || undefined;
750
+ };
751
+
752
+ var setKeyValueInSessionStorage = function setKeyValueInSessionStorage(key, value) {
753
+ if (!value || !(window && window.sessionStorage)) {
731
754
  return;
732
755
  }
733
756
 
734
- var currentRegion = window.sessionStorage.getItem(MEDIA_API_REGION);
735
-
736
- if (currentRegion !== region) {
737
- window.sessionStorage.setItem(MEDIA_API_REGION, region);
738
- }
739
- }
757
+ var currentValue = window.sessionStorage.getItem(key);
740
758
 
741
- var updateMediaEnvironment = function updateMediaEnvironment(mediaEnv) {
742
- if (mediaEnv) {
743
- mediaEnvironment = mediaEnv;
759
+ if (currentValue !== value) {
760
+ window.sessionStorage.setItem(key, value);
744
761
  }
745
762
  };
746
763
 
747
764
  var getMediaEnvironment = function getMediaEnvironment() {
748
- return mediaEnvironment;
765
+ return getValueFromSessionStorage(MEDIA_API_ENVIRONMENT);
749
766
  };
750
767
 
751
768
  exports.getMediaEnvironment = getMediaEnvironment;
752
769
 
753
770
  var getMediaRegion = function getMediaRegion() {
754
- return window && window.sessionStorage && window.sessionStorage.getItem(MEDIA_API_REGION) || undefined;
771
+ return getValueFromSessionStorage(MEDIA_API_REGION);
755
772
  };
756
773
 
757
774
  exports.getMediaRegion = getMediaRegion;
@@ -3,11 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.RECENTS_COLLECTION = exports.MAX_RESOLUTION = exports.FILE_CACHE_MAX_AGE = void 0;
6
+ exports.RECENTS_COLLECTION = exports.PROCESSING_BATCH_SIZE = exports.MAX_UPLOAD_FILE_SIZE = exports.MAX_RESOLUTION = exports.FILE_CACHE_MAX_AGE = exports.CHUNK_SIZE = void 0;
7
+
8
+ var _media = require("./models/media");
9
+
7
10
  var RECENTS_COLLECTION = 'recents';
8
11
  exports.RECENTS_COLLECTION = RECENTS_COLLECTION;
9
12
  var FILE_CACHE_MAX_AGE = 60 * 60 * 24 * 30; // Retain for 30 days
10
13
 
11
14
  exports.FILE_CACHE_MAX_AGE = FILE_CACHE_MAX_AGE;
12
15
  var MAX_RESOLUTION = 4096;
13
- exports.MAX_RESOLUTION = MAX_RESOLUTION;
16
+ exports.MAX_RESOLUTION = MAX_RESOLUTION;
17
+ var CHUNK_SIZE = 4 * _media.DATA_UNIT.MB;
18
+ exports.CHUNK_SIZE = CHUNK_SIZE;
19
+ var PROCESSING_BATCH_SIZE = 1000;
20
+ exports.PROCESSING_BATCH_SIZE = PROCESSING_BATCH_SIZE;
21
+ var MAX_UPLOAD_FILE_SIZE = 2 * _media.DATA_UNIT.TB;
22
+ exports.MAX_UPLOAD_FILE_SIZE = MAX_UPLOAD_FILE_SIZE;
package/dist/cjs/index.js CHANGED
@@ -108,7 +108,7 @@ Object.defineProperty(exports, "createMediaSubject", {
108
108
  Object.defineProperty(exports, "createMediaSubscribable", {
109
109
  enumerable: true,
110
110
  get: function get() {
111
- return _toMediaSubscribable.createMediaSubscribable;
111
+ return _mediaSubscribable.createMediaSubscribable;
112
112
  }
113
113
  });
114
114
  Object.defineProperty(exports, "createUrl", {
@@ -417,7 +417,7 @@ var _globalMediaEventEmitter = require("./globalMediaEventEmitter");
417
417
 
418
418
  var _url = require("./utils/url");
419
419
 
420
- var _toMediaSubscribable = require("./utils/toMediaSubscribable");
420
+ var _mediaSubscribable = require("./utils/mediaSubscribable");
421
421
 
422
422
  var _constants = require("./constants");
423
423
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isPreviewableType = exports.isMediaCollectionItemFullDetails = void 0;
6
+ exports.isPreviewableType = exports.isMediaCollectionItemFullDetails = exports.DATA_UNIT = void 0;
7
7
 
8
8
  var _mediaCommon = require("@atlaskit/media-common");
9
9
 
@@ -24,4 +24,12 @@ var isMediaCollectionItemFullDetails = function isMediaCollectionItemFullDetails
24
24
  return !!mediaCollectionItem['mediaType'] && !!mediaCollectionItem['mimeType'] && !!mediaCollectionItem['processingStatus'];
25
25
  };
26
26
 
27
- exports.isMediaCollectionItemFullDetails = isMediaCollectionItemFullDetails;
27
+ exports.isMediaCollectionItemFullDetails = isMediaCollectionItemFullDetails;
28
+ var DATA_UNIT;
29
+ exports.DATA_UNIT = DATA_UNIT;
30
+
31
+ (function (DATA_UNIT) {
32
+ DATA_UNIT[DATA_UNIT["MB"] = 1048576] = "MB";
33
+ DATA_UNIT[DATA_UNIT["GB"] = 1073741824] = "GB";
34
+ DATA_UNIT[DATA_UNIT["TB"] = 1099511627776] = "TB";
35
+ })(DATA_UNIT || (exports.DATA_UNIT = DATA_UNIT = {}));
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fileSizeError = exports.calculateChunkSize = void 0;
7
+
8
+ var _media = require("../models/media");
9
+
10
+ var _constants = require("../constants");
11
+
12
+ var fileSizeError = 'fileSizeExceedsLimit';
13
+ /**
14
+ * This is a helper to dynamically calculate the chunk size for a given file size.
15
+ *
16
+ * @param fileSize The size of a file to calculate the chunk size for.
17
+ * @returns A number of bytes per chunk or Throws an Error if the file size exceeds 2TB
18
+ *
19
+ * @see {@link https://product-fabric.atlassian.net/wiki/spaces/FIL/pages/3221881143/Rule+of+thumb+for+chunk+sizes#Given-the-following-conditions}
20
+ *
21
+ */
22
+
23
+ exports.fileSizeError = fileSizeError;
24
+
25
+ var calculateChunkSize = function calculateChunkSize(fileSize) {
26
+ if (fileSize > _constants.MAX_UPLOAD_FILE_SIZE) {
27
+ throw new Error(fileSizeError);
28
+ }
29
+
30
+ if (fileSize <= 5 * _media.DATA_UNIT.GB) {
31
+ return 5 * _media.DATA_UNIT.MB;
32
+ }
33
+
34
+ if (fileSize > 5 * _media.DATA_UNIT.GB && fileSize <= 50 * _media.DATA_UNIT.GB) {
35
+ return 50 * _media.DATA_UNIT.MB;
36
+ }
37
+
38
+ if (fileSize > 50 * _media.DATA_UNIT.GB && fileSize <= 0.95 * _media.DATA_UNIT.TB) {
39
+ return 100 * _media.DATA_UNIT.MB;
40
+ }
41
+
42
+ return 210 * _media.DATA_UNIT.MB;
43
+ };
44
+
45
+ exports.calculateChunkSize = calculateChunkSize;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.UploaderError = void 0;
9
+ exports.isUploaderError = isUploaderError;
10
+
11
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
+
13
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
+
15
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
16
+
17
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
18
+
19
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
20
+
21
+ var _errors = require("../models/errors");
22
+
23
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
24
+
25
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
26
+
27
+ var UploaderError = /*#__PURE__*/function (_BaseMediaClientError) {
28
+ (0, _inherits2.default)(UploaderError, _BaseMediaClientError);
29
+
30
+ var _super = _createSuper(UploaderError);
31
+
32
+ function UploaderError(reason, id, metadata) {
33
+ var _this;
34
+
35
+ (0, _classCallCheck2.default)(this, UploaderError);
36
+ _this = _super.call(this, reason);
37
+ _this.reason = reason;
38
+ _this.id = id;
39
+ _this.metadata = metadata;
40
+ return _this;
41
+ }
42
+
43
+ (0, _createClass2.default)(UploaderError, [{
44
+ key: "attributes",
45
+ get: function get() {
46
+ var reason = this.reason,
47
+ id = this.id,
48
+ _this$metadata = this.metadata;
49
+ _this$metadata = _this$metadata === void 0 ? {} : _this$metadata;
50
+ var collectionName = _this$metadata.collectionName,
51
+ occurrenceKey = _this$metadata.occurrenceKey;
52
+ return {
53
+ reason: reason,
54
+ id: id,
55
+ collectionName: collectionName,
56
+ occurrenceKey: occurrenceKey
57
+ };
58
+ }
59
+ }]);
60
+ return UploaderError;
61
+ }(_errors.BaseMediaClientError);
62
+
63
+ exports.UploaderError = UploaderError;
64
+
65
+ function isUploaderError(err) {
66
+ return err instanceof UploaderError;
67
+ }