@atlaskit/media-client 23.1.3 → 24.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cjs/client/file-fetcher/index.js +112 -36
  3. package/dist/cjs/client/media-client.js +18 -6
  4. package/dist/cjs/client/media-store/index.js +3 -4
  5. package/dist/cjs/client/mobile-upload.js +38 -2
  6. package/dist/cjs/index.js +7 -0
  7. package/dist/cjs/models/file-state.js +2 -2
  8. package/dist/cjs/test-helpers/_numbers.js +9 -0
  9. package/dist/cjs/test-helpers/authProvider.js +71 -0
  10. package/dist/cjs/test-helpers/collectionNames.js +16 -0
  11. package/dist/cjs/test-helpers/exampleMediaItems.js +317 -0
  12. package/dist/cjs/test-helpers/fakeMediaClient.js +77 -0
  13. package/dist/cjs/test-helpers/index.js +374 -0
  14. package/dist/cjs/test-helpers/mediaClientProvider.js +60 -0
  15. package/dist/cjs/test-helpers/mediaPickerAuthProvider.js +95 -0
  16. package/dist/cjs/utils/createFileDataLoader.js +2 -2
  17. package/dist/cjs/utils/mobileUpload/stateMachine/states/uploading.js +2 -2
  18. package/dist/cjs/utils/polling/index.js +2 -2
  19. package/dist/cjs/utils/request/helpers.js +2 -2
  20. package/dist/cjs/utils/url.js +2 -2
  21. package/dist/cjs/utils/with-media-client-hoc.js +8 -16
  22. package/dist/es2019/client/file-fetcher/index.js +101 -28
  23. package/dist/es2019/client/media-client.js +15 -7
  24. package/dist/es2019/client/media-store/index.js +1 -2
  25. package/dist/es2019/client/mobile-upload.js +33 -2
  26. package/dist/es2019/index.js +1 -0
  27. package/dist/es2019/test-helpers/_numbers.js +3 -0
  28. package/dist/es2019/test-helpers/authProvider.js +34 -0
  29. package/dist/es2019/test-helpers/collectionNames.js +5 -0
  30. package/dist/es2019/test-helpers/exampleMediaItems.js +268 -0
  31. package/dist/es2019/test-helpers/fakeMediaClient.js +63 -0
  32. package/dist/es2019/test-helpers/index.js +7 -0
  33. package/dist/es2019/test-helpers/mediaClientProvider.js +42 -0
  34. package/dist/es2019/test-helpers/mediaPickerAuthProvider.js +56 -0
  35. package/dist/es2019/utils/with-media-client-hoc.js +8 -16
  36. package/dist/esm/client/file-fetcher/index.js +108 -32
  37. package/dist/esm/client/media-client.js +19 -7
  38. package/dist/esm/client/media-store/index.js +3 -4
  39. package/dist/esm/client/mobile-upload.js +38 -2
  40. package/dist/esm/index.js +1 -0
  41. package/dist/esm/models/file-state.js +2 -2
  42. package/dist/esm/test-helpers/_numbers.js +3 -0
  43. package/dist/esm/test-helpers/authProvider.js +63 -0
  44. package/dist/esm/test-helpers/collectionNames.js +5 -0
  45. package/dist/esm/test-helpers/exampleMediaItems.js +268 -0
  46. package/dist/esm/test-helpers/fakeMediaClient.js +69 -0
  47. package/dist/esm/test-helpers/index.js +7 -0
  48. package/dist/esm/test-helpers/mediaClientProvider.js +48 -0
  49. package/dist/esm/test-helpers/mediaPickerAuthProvider.js +85 -0
  50. package/dist/esm/utils/createFileDataLoader.js +2 -2
  51. package/dist/esm/utils/mobileUpload/stateMachine/states/uploading.js +2 -2
  52. package/dist/esm/utils/polling/index.js +2 -2
  53. package/dist/esm/utils/request/helpers.js +2 -2
  54. package/dist/esm/utils/url.js +2 -2
  55. package/dist/esm/utils/with-media-client-hoc.js +8 -16
  56. package/dist/types/client/events.d.ts +1 -1
  57. package/dist/types/client/file-fetcher/index.d.ts +10 -6
  58. package/dist/types/client/media-client.d.ts +10 -5
  59. package/dist/types/client/media-store/index.d.ts +3 -4
  60. package/dist/types/client/mobile-upload.d.ts +6 -2
  61. package/dist/types/file-streams-cache.d.ts +1 -1
  62. package/dist/types/index.d.ts +4 -2
  63. package/dist/types/models/artifacts.d.ts +1 -11
  64. package/dist/types/models/file-state.d.ts +4 -73
  65. package/dist/types/models/media.d.ts +1 -1
  66. package/dist/types/models/mobile-upload.d.ts +1 -1
  67. package/dist/types/test-helpers/_numbers.d.ts +1 -0
  68. package/dist/types/test-helpers/authProvider.d.ts +6 -0
  69. package/dist/types/test-helpers/collectionNames.d.ts +5 -0
  70. package/dist/types/test-helpers/exampleMediaItems.d.ts +53 -0
  71. package/dist/types/test-helpers/fakeMediaClient.d.ts +4 -0
  72. package/dist/types/test-helpers/index.d.ts +7 -0
  73. package/dist/types/test-helpers/mediaClientProvider.d.ts +23 -0
  74. package/dist/types/test-helpers/mediaPickerAuthProvider.d.ts +5 -0
  75. package/dist/types/utils/createMediaSubject.d.ts +1 -1
  76. package/dist/types/utils/mediaSubscribable/fromObservable.d.ts +1 -1
  77. package/dist/types/utils/mediaSubscribable/toPromise.d.ts +1 -1
  78. package/dist/types/utils/mediaSubscribable/types.d.ts +1 -1
  79. package/dist/types/utils/mobileUpload/helpers.d.ts +1 -1
  80. package/dist/types/utils/mobileUpload/stateMachine/index.d.ts +1 -1
  81. package/dist/types/utils/mobileUpload/stateMachine/types.d.ts +1 -1
  82. package/dist/types/utils/overrideMediaTypeIfUnknown.d.ts +1 -1
  83. package/dist/types/utils/shouldFetchRemoteFileStates.d.ts +1 -1
  84. package/dist/types/utils/with-media-client-hoc.d.ts +2 -3
  85. package/dist/types-ts4.5/client/events.d.ts +1 -1
  86. package/dist/types-ts4.5/client/file-fetcher/index.d.ts +10 -6
  87. package/dist/types-ts4.5/client/media-client.d.ts +10 -5
  88. package/dist/types-ts4.5/client/media-store/index.d.ts +3 -4
  89. package/dist/types-ts4.5/client/mobile-upload.d.ts +6 -2
  90. package/dist/types-ts4.5/file-streams-cache.d.ts +1 -1
  91. package/dist/types-ts4.5/index.d.ts +4 -2
  92. package/dist/types-ts4.5/models/artifacts.d.ts +1 -11
  93. package/dist/types-ts4.5/models/file-state.d.ts +4 -73
  94. package/dist/types-ts4.5/models/media.d.ts +1 -1
  95. package/dist/types-ts4.5/models/mobile-upload.d.ts +1 -1
  96. package/dist/types-ts4.5/test-helpers/_numbers.d.ts +1 -0
  97. package/dist/types-ts4.5/test-helpers/authProvider.d.ts +6 -0
  98. package/dist/types-ts4.5/test-helpers/collectionNames.d.ts +5 -0
  99. package/dist/types-ts4.5/test-helpers/exampleMediaItems.d.ts +53 -0
  100. package/dist/types-ts4.5/test-helpers/fakeMediaClient.d.ts +4 -0
  101. package/dist/types-ts4.5/test-helpers/index.d.ts +7 -0
  102. package/dist/types-ts4.5/test-helpers/mediaClientProvider.d.ts +23 -0
  103. package/dist/types-ts4.5/test-helpers/mediaPickerAuthProvider.d.ts +5 -0
  104. package/dist/types-ts4.5/utils/createMediaSubject.d.ts +1 -1
  105. package/dist/types-ts4.5/utils/mediaSubscribable/fromObservable.d.ts +1 -1
  106. package/dist/types-ts4.5/utils/mediaSubscribable/toPromise.d.ts +1 -1
  107. package/dist/types-ts4.5/utils/mediaSubscribable/types.d.ts +1 -1
  108. package/dist/types-ts4.5/utils/mobileUpload/helpers.d.ts +1 -1
  109. package/dist/types-ts4.5/utils/mobileUpload/stateMachine/index.d.ts +1 -1
  110. package/dist/types-ts4.5/utils/mobileUpload/stateMachine/types.d.ts +1 -1
  111. package/dist/types-ts4.5/utils/overrideMediaTypeIfUnknown.d.ts +1 -1
  112. package/dist/types-ts4.5/utils/shouldFetchRemoteFileStates.d.ts +1 -1
  113. package/dist/types-ts4.5/utils/with-media-client-hoc.d.ts +2 -3
  114. package/package.json +13 -4
  115. package/report.api.md +52 -162
  116. package/tmp/api-report-tmp.d.ts +51 -154
  117. package/dist/cjs/version.json +0 -5
  118. package/dist/es2019/version.json +0 -5
  119. package/dist/esm/version.json +0 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @atlaskit/media-client
2
2
 
3
+ ## 24.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [`7b6a2c6671b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7b6a2c6671b) - Introducing 'media-state' for handling media internal file state.
8
+ Introducing 'media-client-react' to provide hooks for seamless media-client integration with React.
9
+ Introducing 'MediaCardV2' with a feature flag to replace rxjs based fileState subscription with 'useFileState' hook.
10
+ Removed unused feature flags APIs from 'media-client' and its helper functions from 'media-common'.
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies
15
+
16
+ ## 23.2.0
17
+
18
+ ### Minor Changes
19
+
20
+ - [`ede6ee7aaab`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ede6ee7aaab) - Updated tests, examples and moving towards /test-helper export in packages to prevent circular dependancies
21
+
22
+ ### Patch Changes
23
+
24
+ - Updated dependencies
25
+
3
26
  ## 23.1.3
4
27
 
5
28
  ### Patch Changes
@@ -29,7 +29,7 @@ require("setimmediate");
29
29
  var _mediaCore = require("@atlaskit/media-core");
30
30
  var _downloadUrl = require("@atlaskit/media-common/downloadUrl");
31
31
  var _mediaStore = require("../media-store");
32
- var _fileState = require("../../models/file-state");
32
+ var _fileState2 = require("../../models/file-state");
33
33
  var _error = require("./error");
34
34
  var _uploader = require("../../uploader");
35
35
  var _fileStreamsCache = require("../../file-streams-cache");
@@ -47,13 +47,36 @@ var _mediaTypeUtils = require("@atlaskit/media-common/mediaTypeUtils");
47
47
  var _shouldFetchRemoteFileStates = require("../../utils/shouldFetchRemoteFileStates");
48
48
  var _polling = require("../../utils/polling");
49
49
  var _detectEmptyFile = require("../../utils/detectEmptyFile");
50
- 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; }
51
- 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; } // import setimmediate to temporary fix dataloader 2.0.0 bug
50
+ var _mediaState = require("@atlaskit/media-state");
51
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
52
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // import setimmediate to temporary fix dataloader 2.0.0 bug
52
53
  // @see https://github.com/graphql/dataloader/issues/249
53
54
  var FileFetcherImpl = /*#__PURE__*/function () {
54
- function FileFetcherImpl(mediaStore) {
55
+ function FileFetcherImpl(mediaApi) {
55
56
  var _this = this;
57
+ var store = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _mediaState.mediaStore;
56
58
  (0, _classCallCheck2.default)(this, FileFetcherImpl);
59
+ (0, _defineProperty2.default)(this, "getErrorFileState", function (error, id, occurrenceKey) {
60
+ return typeof error === 'string' ? {
61
+ status: 'error',
62
+ id: id,
63
+ reason: error,
64
+ occurrenceKey: occurrenceKey,
65
+ message: error
66
+ } : {
67
+ status: 'error',
68
+ id: id,
69
+ reason: error === null || error === void 0 ? void 0 : error.reason,
70
+ details: error === null || error === void 0 ? void 0 : error.attributes,
71
+ occurrenceKey: occurrenceKey,
72
+ message: error === null || error === void 0 ? void 0 : error.message
73
+ };
74
+ });
75
+ (0, _defineProperty2.default)(this, "setFileState", function (id, fileState) {
76
+ _this.store.setState(function (state) {
77
+ state.files[id] = fileState;
78
+ });
79
+ });
57
80
  // TODO: ----- ADD TICKET TO PASS TRACE ID to this.dataloader.load
58
81
  (0, _defineProperty2.default)(this, "createDownloadFileStream", function (id, collectionName, occurrenceKey) {
59
82
  var subject = (0, _createMediaSubject.createMediaSubject)();
@@ -93,7 +116,7 @@ var FileFetcherImpl = /*#__PURE__*/function () {
93
116
  occurrenceKey: occurrenceKey
94
117
  });
95
118
  case 7:
96
- fileState = (0, _fileState.mapMediaItemToFileState)(id, response);
119
+ fileState = (0, _fileState2.mapMediaItemToFileState)(id, response);
97
120
  subject.next(fileState);
98
121
  _context.t0 = fileState.status;
99
122
  _context.next = _context.t0 === 'processing' ? 12 : _context.t0 === 'processed' ? 14 : 16;
@@ -148,8 +171,9 @@ var FileFetcherImpl = /*#__PURE__*/function () {
148
171
  preview: preview
149
172
  };
150
173
  });
151
- this.mediaStore = mediaStore;
152
- this.dataloader = (0, _createFileDataLoader.createFileDataloader)(mediaStore);
174
+ this.mediaApi = mediaApi;
175
+ this.store = store;
176
+ this.dataloader = (0, _createFileDataLoader.createFileDataloader)(mediaApi);
153
177
  }
154
178
  (0, _createClass2.default)(FileFetcherImpl, [{
155
179
  key: "getFileState",
@@ -160,14 +184,34 @@ var FileFetcherImpl = /*#__PURE__*/function () {
160
184
  occurrenceKey = options.occurrenceKey;
161
185
  if (!(0, _uuidValidate.default)(id)) {
162
186
  var subject = (0, _createMediaSubject.createMediaSubject)();
163
- subject.error(new _error.FileFetcherError('invalidFileId', id, {
187
+ var err = new _error.FileFetcherError('invalidFileId', id, {
164
188
  collectionName: collectionName,
165
189
  occurrenceKey: occurrenceKey
166
- }));
190
+ });
191
+ var errorFileState = {
192
+ status: 'error',
193
+ id: id,
194
+ reason: err === null || err === void 0 ? void 0 : err.reason,
195
+ message: err === null || err === void 0 ? void 0 : err.message,
196
+ occurrenceKey: occurrenceKey,
197
+ details: err === null || err === void 0 ? void 0 : err.attributes
198
+ };
199
+ subject.error(err);
200
+ this.setFileState(id, errorFileState);
167
201
  return (0, _mediaSubscribable.fromObservable)(subject);
168
202
  }
169
203
  return (0, _mediaSubscribable.fromObservable)((0, _fileStreamsCache.getFileStreamsCache)().getOrInsert(id, function () {
170
- return _this2.createDownloadFileStream(id, collectionName);
204
+ var subject = _this2.createDownloadFileStream(id, collectionName);
205
+ subject.subscribe({
206
+ next: function next(fileState) {
207
+ _this2.setFileState(id, fileState);
208
+ },
209
+ error: function error(err) {
210
+ var errorFileState = _this2.getErrorFileState(err, id, occurrenceKey);
211
+ _this2.setFileState(id, errorFileState);
212
+ }
213
+ });
214
+ return subject;
171
215
  }));
172
216
  }
173
217
  }, {
@@ -178,17 +222,17 @@ var FileFetcherImpl = /*#__PURE__*/function () {
178
222
  }, {
179
223
  key: "getArtifactURL",
180
224
  value: function getArtifactURL(artifacts, artifactName, collectionName) {
181
- return this.mediaStore.getArtifactURL(artifacts, artifactName, collectionName);
225
+ return this.mediaApi.getArtifactURL(artifacts, artifactName, collectionName);
182
226
  }
183
227
  }, {
184
228
  key: "getFileBinaryURL",
185
229
  value: function getFileBinaryURL(id, collectionName) {
186
- return this.mediaStore.getFileBinaryURL(id, collectionName);
230
+ return this.mediaApi.getFileBinaryURL(id, collectionName);
187
231
  }
188
232
  }, {
189
233
  key: "touchFiles",
190
234
  value: function touchFiles(descriptors, collection, traceContext) {
191
- return this.mediaStore.touchFiles({
235
+ return this.mediaApi.touchFiles({
192
236
  descriptors: descriptors
193
237
  }, {
194
238
  collection: collection
@@ -274,6 +318,7 @@ var FileFetcherImpl = /*#__PURE__*/function () {
274
318
  subject.next(fileState);
275
319
  // we save it into the cache as soon as possible, in case someone subscribes
276
320
  (0, _fileStreamsCache.getFileStreamsCache)().set(id, subject);
321
+ this.setFileState(id, fileState);
277
322
  return _context4.abrupt("return", new Promise( /*#__PURE__*/function () {
278
323
  var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(resolve, reject) {
279
324
  var blob, type, size, file, mediaType, dimensions;
@@ -329,7 +374,7 @@ var FileFetcherImpl = /*#__PURE__*/function () {
329
374
  return _ref4.apply(this, arguments);
330
375
  };
331
376
  }()));
332
- case 10:
377
+ case 11:
333
378
  case "end":
334
379
  return _context4.stop();
335
380
  }
@@ -352,22 +397,37 @@ var FileFetcherImpl = /*#__PURE__*/function () {
352
397
  var subject = (0, _createMediaSubject.createMediaSubject)();
353
398
  (0, _fileStreamsCache.getFileStreamsCache)().set(id, subject);
354
399
  var onProgress = function onProgress(progress) {
355
- subject.next(_objectSpread(_objectSpread({
400
+ var fileState = _objectSpread(_objectSpread({
356
401
  status: 'uploading'
357
402
  }, stateBase), {}, {
358
403
  progress: progress
359
- }));
404
+ });
405
+ subject.next(fileState);
406
+ _this4.setFileState(id, fileState);
360
407
  };
361
408
  var processingSubscription = new _Subscription.Subscription();
362
409
  var onUploadFinish = function onUploadFinish(error) {
363
410
  if (error) {
411
+ var errorFileState = _this4.getErrorFileState(error, id, occurrenceKey);
412
+ _this4.setFileState(id, errorFileState);
364
413
  return subject.error(error);
365
414
  }
366
415
  processingSubscription = _this4.createDownloadFileStream(id, collection, occurrenceKey).pipe((0, _map.map)(function (remoteFileState) {
367
416
  return _objectSpread(_objectSpread(_objectSpread({}, stateBase), remoteFileState), (0, _overrideMediaTypeIfUnknown.overrideMediaTypeIfUnknown)(remoteFileState, stateBase.mediaType));
368
- })).subscribe(subject);
417
+ })).subscribe({
418
+ next: function next(fileState) {
419
+ subject.next(fileState);
420
+ _this4.setFileState(id, fileState);
421
+ },
422
+ error: function error(err) {
423
+ var errorFileState = _this4.getErrorFileState(err, id, occurrenceKey);
424
+ subject.error(err);
425
+ _this4.setFileState(id, errorFileState);
426
+ },
427
+ complete: subject.complete
428
+ });
369
429
  };
370
- var _uploadFile = (0, _uploader.uploadFile)(file, this.mediaStore, upfrontId, {
430
+ var _uploadFile = (0, _uploader.uploadFile)(file, this.mediaApi, upfrontId, {
371
431
  onUploadFinish: onUploadFinish,
372
432
  onProgress: onProgress
373
433
  }, traceContext),
@@ -384,8 +444,6 @@ var FileFetcherImpl = /*#__PURE__*/function () {
384
444
  setTimeout(onProgress, 0, 0);
385
445
  return (0, _mediaSubscribable.fromObservable)(subject);
386
446
  }
387
-
388
- // TODO: ----- ADD TICKET
389
447
  }, {
390
448
  key: "downloadBinary",
391
449
  value: function () {
@@ -400,7 +458,7 @@ var FileFetcherImpl = /*#__PURE__*/function () {
400
458
  name = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : 'download';
401
459
  collectionName = _args5.length > 2 ? _args5[2] : undefined;
402
460
  _context5.next = 4;
403
- return this.mediaStore.getFileBinaryURL(id, collectionName);
461
+ return this.mediaApi.getFileBinaryURL(id, collectionName);
404
462
  case 4:
405
463
  url = _context5.sent;
406
464
  (0, _downloadUrl.downloadUrl)(url, {
@@ -426,6 +484,7 @@ var FileFetcherImpl = /*#__PURE__*/function () {
426
484
  key: "copyFile",
427
485
  value: function () {
428
486
  var _copyFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(source, destination) {
487
+ var _this5 = this;
429
488
  var options,
430
489
  traceContext,
431
490
  authProvider,
@@ -453,7 +512,12 @@ var FileFetcherImpl = /*#__PURE__*/function () {
453
512
  fileCache,
454
513
  subject,
455
514
  previewOverride,
515
+ fileState,
516
+ _fileState,
456
517
  _fileCache,
518
+ replaceFileState,
519
+ key,
520
+ errorFileState,
457
521
  _args6 = arguments;
458
522
  return _regenerator.default.wrap(function _callee6$(_context6) {
459
523
  while (1) switch (_context6.prev = _context6.next) {
@@ -500,15 +564,15 @@ var FileFetcherImpl = /*#__PURE__*/function () {
500
564
  copiedId = copiedFileWithMimeType.id, copiedMimeType = copiedFileWithMimeType.mimeType; // backend may return an "unknown" mediaType just after the copy
501
565
  // it's better to deduce it from "copiedMimeType" using getMediaTypeFromMimeType()
502
566
  mediaType = copiedMimeType ? (0, _mediaTypeUtils.getMediaTypeFromMimeType)(copiedMimeType) : 'unknown';
503
- copiedFileState = (0, _fileState.mapMediaFileToFileState)({
567
+ copiedFileState = (0, _fileState2.mapMediaFileToFileState)({
504
568
  data: copiedFileWithMimeType
505
569
  });
506
570
  fileCache = cache.get(copiedId);
507
571
  subject = fileCache || (0, _createMediaSubject.createMediaSubject)(); // if we were passed a "preview", we propagate it into the copiedFileState
508
- previewOverride = !(0, _fileState.isErrorFileState)(copiedFileState) && !!preview ? {
572
+ previewOverride = !(0, _fileState2.isErrorFileState)(copiedFileState) && !!preview ? {
509
573
  preview: preview
510
574
  } : {};
511
- _context6.t2 = !(0, _fileState.isFinalFileState)(copiedFileState) &&
575
+ _context6.t2 = !(0, _fileState2.isFinalFileState)(copiedFileState) &&
512
576
  // mimeType should always be returned by "copyFileWithToken"
513
577
  // but in case it's not, we don't want to penalize "copyFile"
514
578
  copiedMimeType;
@@ -522,53 +586,65 @@ var FileFetcherImpl = /*#__PURE__*/function () {
522
586
  _context6.t2 = _context6.sent;
523
587
  case 31:
524
588
  if (!_context6.t2) {
525
- _context6.next = 36;
589
+ _context6.next = 38;
526
590
  break;
527
591
  }
528
- subject.next(_objectSpread(_objectSpread(_objectSpread({}, copiedFileState), (0, _overrideMediaTypeIfUnknown.overrideMediaTypeIfUnknown)(copiedFileState, mediaType)), previewOverride));
592
+ fileState = _objectSpread(_objectSpread(_objectSpread({}, copiedFileState), (0, _overrideMediaTypeIfUnknown.overrideMediaTypeIfUnknown)(copiedFileState, mediaType)), previewOverride);
593
+ subject.next(fileState);
594
+ this.setFileState(copiedId, fileState);
529
595
  processingSubscription = this.createDownloadFileStream(copiedId, destinationCollectionName, occurrenceKey).subscribe({
530
596
  next: function next(remoteFileState) {
531
- return subject.next(_objectSpread(_objectSpread(_objectSpread({}, remoteFileState), (0, _overrideMediaTypeIfUnknown.overrideMediaTypeIfUnknown)(remoteFileState, mediaType)), !(0, _fileState.isErrorFileState)(remoteFileState) && previewOverride));
597
+ var fileState = _objectSpread(_objectSpread(_objectSpread({}, remoteFileState), (0, _overrideMediaTypeIfUnknown.overrideMediaTypeIfUnknown)(remoteFileState, mediaType)), !(0, _fileState2.isErrorFileState)(remoteFileState) && previewOverride);
598
+ _this5.setFileState(copiedId, fileState);
599
+ return subject.next(fileState);
532
600
  },
533
601
  error: function error(err) {
602
+ var errorFileState = _this5.getErrorFileState(err, id, occurrenceKey);
603
+ _this5.setFileState(copiedId, errorFileState);
534
604
  return subject.error(err);
535
605
  },
536
606
  complete: function complete() {
537
607
  return subject.complete();
538
608
  }
539
609
  });
540
- _context6.next = 37;
610
+ _context6.next = 39;
541
611
  break;
542
- case 36:
543
- if (!(0, _fileState.isProcessingFileState)(copiedFileState)) {
544
- subject.next(_objectSpread(_objectSpread({}, copiedFileState), !(0, _fileState.isErrorFileState)(copiedFileState) && previewOverride));
612
+ case 38:
613
+ if (!(0, _fileState2.isProcessingFileState)(copiedFileState)) {
614
+ _fileState = _objectSpread(_objectSpread({}, copiedFileState), !(0, _fileState2.isErrorFileState)(copiedFileState) && previewOverride);
615
+ subject.next(_fileState);
616
+ this.setFileState(copiedId, _fileState);
545
617
  }
546
- case 37:
618
+ case 39:
547
619
  if (!cache.has(copiedId)) {
548
620
  (0, _fileStreamsCache.getFileStreamsCache)().set(copiedId, subject);
549
621
  }
550
622
  return _context6.abrupt("return", copiedFile);
551
- case 41:
552
- _context6.prev = 41;
623
+ case 43:
624
+ _context6.prev = 43;
553
625
  _context6.t3 = _context6["catch"](14);
554
626
  if (processingSubscription) {
555
627
  processingSubscription.unsubscribe();
556
628
  }
557
629
  if (replaceFileId) {
558
630
  _fileCache = cache.get(replaceFileId);
631
+ replaceFileState = this.store.getState().files[replaceFileId];
559
632
  if (_fileCache) {
560
633
  _fileCache.error(_context6.t3);
561
634
  } else {
562
635
  // Create a new subject with the error state for new subscriptions
563
636
  cache.set(id, (0, _createMediaSubject.createMediaSubject)(_context6.t3));
564
637
  }
638
+ key = replaceFileState ? replaceFileId : id;
639
+ errorFileState = this.getErrorFileState(_context6.t3, id, occurrenceKey);
640
+ this.setFileState(key, errorFileState);
565
641
  }
566
642
  throw _context6.t3;
567
- case 46:
643
+ case 48:
568
644
  case "end":
569
645
  return _context6.stop();
570
646
  }
571
- }, _callee6, this, [[14, 41]]);
647
+ }, _callee6, this, [[14, 43]]);
572
648
  }));
573
649
  function copyFile(_x9, _x10) {
574
650
  return _copyFile.apply(this, arguments);
@@ -14,6 +14,7 @@ var _eventemitter = require("eventemitter2");
14
14
  var _mediaStore = require("./media-store");
15
15
  var _fileFetcher = require("./file-fetcher");
16
16
  var _stargateClient = require("./stargate-client");
17
+ var _mediaState = require("@atlaskit/media-state");
17
18
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
19
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
20
  var MediaClient = /*#__PURE__*/function () {
@@ -21,20 +22,31 @@ var MediaClient = /*#__PURE__*/function () {
21
22
 
22
23
  // Deprecated value introduced for backward compatibility with Context
23
24
 
24
- function MediaClient(mediaClientConfig, featureFlags) {
25
+ function MediaClient(mediaClientConfig) {
26
+ var store = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _mediaState.mediaStore;
27
+ var mediaApi = arguments.length > 2 ? arguments[2] : undefined;
25
28
  (0, _classCallCheck2.default)(this, MediaClient);
26
29
  this.mediaClientConfig = mediaClientConfig;
27
- this.featureFlags = featureFlags;
28
- this.mediaStore = new _mediaStore.MediaStore({
30
+ this.store = store;
31
+ this.mediaStore = mediaApi !== null && mediaApi !== void 0 ? mediaApi : new _mediaStore.MediaStore({
29
32
  authProvider: mediaClientConfig.authProvider,
30
33
  initialAuth: mediaClientConfig.initialAuth
31
- }, featureFlags);
34
+ });
32
35
  this.config = mediaClientConfig;
33
- this.file = new _fileFetcher.FileFetcherImpl(this.mediaStore);
36
+ this.file = new _fileFetcher.FileFetcherImpl(this.mediaStore, this.store);
34
37
  this.eventEmitter = new _eventemitter.EventEmitter2();
35
38
  this.stargate = new _stargateClient.StargateClient(mediaClientConfig.stargateBaseUrl);
36
39
  }
40
+
41
+ /**
42
+ * @internal
43
+ */
37
44
  (0, _createClass2.default)(MediaClient, [{
45
+ key: "__DO_NOT_USE__getMediaStore",
46
+ value: function __DO_NOT_USE__getMediaStore() {
47
+ return this.store;
48
+ }
49
+ }, {
38
50
  key: "getImage",
39
51
  value: function getImage(id, params, controller, fetchMaxRes, traceContext) {
40
52
  return this.mediaStore.getImage(id, params, controller, fetchMaxRes, traceContext);
@@ -91,7 +103,7 @@ var MediaClient = /*#__PURE__*/function () {
91
103
  });
92
104
  case 4:
93
105
  module = _context2.sent;
94
- this.mobileUpload = new module.MobileUploadImpl(this.mediaStore);
106
+ this.mobileUpload = new module.MobileUploadImpl(this.mediaStore, this.store);
95
107
  return _context2.abrupt("return", this.mobileUpload);
96
108
  case 7:
97
109
  case "end":
@@ -30,8 +30,8 @@ var _request3 = require("../../utils/request");
30
30
  var _helpers = require("../../utils/request/helpers");
31
31
  var _resolveAuth = require("./resolveAuth");
32
32
  var _error = require("./error");
33
- 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; }
34
- 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; }
33
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
34
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
35
35
  var MEDIA_API_REGION = 'media-api-region';
36
36
  var MEDIA_API_ENVIRONMENT = 'media-api-environment';
37
37
  var defaultImageOptions = {
@@ -51,7 +51,7 @@ var jsonHeaders = {
51
51
  'Content-Type': 'application/json'
52
52
  };
53
53
  var MediaStore = /*#__PURE__*/function () {
54
- function MediaStore(config, featureFlags) {
54
+ function MediaStore(config) {
55
55
  var _this = this;
56
56
  (0, _classCallCheck2.default)(this, MediaStore);
57
57
  (0, _defineProperty2.default)(this, "resolveAuth", function (authContext) {
@@ -61,7 +61,6 @@ var MediaStore = /*#__PURE__*/function () {
61
61
  return (0, _resolveAuth.resolveInitialAuth)(_this.config.initialAuth);
62
62
  });
63
63
  this.config = config;
64
- this.featureFlags = featureFlags;
65
64
  }
66
65
  (0, _createClass2.default)(MediaStore, [{
67
66
  key: "removeCollectionFile",
@@ -7,19 +7,46 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.MobileUploadImpl = void 0;
8
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
11
  var _mediaCommon = require("@atlaskit/media-common");
12
+ var _mediaState = require("@atlaskit/media-state");
11
13
  var _fileStreamsCache = require("../file-streams-cache");
12
14
  var _createFileDataLoader = require("../utils/createFileDataLoader");
13
15
  var _mobileUpload = require("../utils/mobileUpload");
14
16
  var MobileUploadImpl = /*#__PURE__*/function () {
15
- function MobileUploadImpl(mediaStore) {
17
+ function MobileUploadImpl(mediaApi) {
18
+ var _this = this;
19
+ var store = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _mediaState.mediaStore;
16
20
  (0, _classCallCheck2.default)(this, MobileUploadImpl);
17
- this.dataloader = (0, _createFileDataLoader.createFileDataloader)(mediaStore);
21
+ (0, _defineProperty2.default)(this, "getErrorFileState", function (error, id, occurrenceKey) {
22
+ return typeof error === 'string' ? {
23
+ status: 'error',
24
+ id: id,
25
+ reason: error,
26
+ occurrenceKey: occurrenceKey,
27
+ message: error
28
+ } : {
29
+ status: 'error',
30
+ id: id,
31
+ reason: error === null || error === void 0 ? void 0 : error.reason,
32
+ details: error === null || error === void 0 ? void 0 : error.attributes,
33
+ occurrenceKey: occurrenceKey,
34
+ message: error === null || error === void 0 ? void 0 : error.message
35
+ };
36
+ });
37
+ (0, _defineProperty2.default)(this, "setFileState", function (id, fileState) {
38
+ _this.store.setState(function (state) {
39
+ state.files[id] = fileState;
40
+ });
41
+ });
42
+ this.store = store;
43
+ this.dataloader = (0, _createFileDataLoader.createFileDataloader)(mediaApi);
18
44
  this.servicesCache = (0, _mobileUpload.createServicesCache)();
19
45
  }
20
46
  (0, _createClass2.default)(MobileUploadImpl, [{
21
47
  key: "notifyUploadStart",
22
48
  value: function notifyUploadStart(event) {
49
+ var _this2 = this;
23
50
  var fileId = event.fileId,
24
51
  collectionName = event.collectionName,
25
52
  occurrenceKey = event.occurrenceKey,
@@ -43,6 +70,15 @@ var MobileUploadImpl = /*#__PURE__*/function () {
43
70
  };
44
71
  var service = (0, _mobileUpload.createMobileUploadService)((0, _mobileUpload.createMobileUploadStateMachine)(this.dataloader, initialState, collectionName));
45
72
  var subject = (0, _mobileUpload.createMobileFileStateSubject)(service);
73
+ subject.subscribe({
74
+ next: function next(fileState) {
75
+ _this2.setFileState(fileId, fileState);
76
+ },
77
+ error: function error(err) {
78
+ var errorFileState = _this2.getErrorFileState(err, fileId, occurrenceKey);
79
+ _this2.setFileState(fileId, errorFileState);
80
+ }
81
+ });
46
82
  this.servicesCache.set(fileId, service);
47
83
  (0, _fileStreamsCache.getFileStreamsCache)().set(fileId, subject);
48
84
  }
package/dist/cjs/index.js CHANGED
@@ -135,6 +135,12 @@ Object.defineProperty(exports, "getDimensionsFromBlob", {
135
135
  return _getDimensionsFromBlob.getDimensionsFromBlob;
136
136
  }
137
137
  });
138
+ Object.defineProperty(exports, "getFileStreamsCache", {
139
+ enumerable: true,
140
+ get: function get() {
141
+ return _fileStreamsCache.getFileStreamsCache;
142
+ }
143
+ });
138
144
  Object.defineProperty(exports, "getMediaClient", {
139
145
  enumerable: true,
140
146
  get: function get() {
@@ -384,6 +390,7 @@ var _globalMediaEventEmitter = require("./globalMediaEventEmitter");
384
390
  var _url = require("./utils/url");
385
391
  var _mediaSubscribable = require("./utils/mediaSubscribable");
386
392
  var _constants = require("./constants");
393
+ var _fileStreamsCache = require("./file-streams-cache");
387
394
  var _mediaTypeUtils = require("@atlaskit/media-common/mediaTypeUtils");
388
395
  // TODO MEX-659 Remove these exports when all the usages from media-client are replaced with media-common.
389
396
 
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.mapMediaItemToFileState = exports.mapMediaFileToFileState = exports.isUploadingFileState = exports.isProcessingFileState = exports.isProcessedFileState = exports.isPreviewableFileState = exports.isImageRepresentationReady = exports.isFinalFileState = exports.isErrorFileState = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- 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; }
10
- 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; }
9
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
11
  var isUploadingFileState = function isUploadingFileState(fileState) {
12
12
  return fileState.status === 'uploading';
13
13
  };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.numbers = numbers;
7
+ function numbers(count) {
8
+ return Array.from(Array(count).keys());
9
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.StoryBookAuthProvider = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _collectionNames = require("./collectionNames");
13
+ var cachedAuths = {};
14
+ var authProviderBaseURL = 'https://media-playground.dev.atl-paas.net/';
15
+ var StoryBookAuthProvider = /*#__PURE__*/function () {
16
+ function StoryBookAuthProvider() {
17
+ (0, _classCallCheck2.default)(this, StoryBookAuthProvider);
18
+ }
19
+ (0, _createClass2.default)(StoryBookAuthProvider, null, [{
20
+ key: "create",
21
+ value: function create(isAsapEnvironment, access) {
22
+ var loadTenatAuth = /*#__PURE__*/function () {
23
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(collectionName) {
24
+ var environment, headers, config, url, response;
25
+ return _regenerator.default.wrap(function _callee$(_context) {
26
+ while (1) switch (_context.prev = _context.next) {
27
+ case 0:
28
+ environment = isAsapEnvironment ? 'asap' : '';
29
+ headers = new Headers();
30
+ headers.append('Content-Type', 'application/json; charset=utf-8');
31
+ headers.append('Accept', 'text/plain, */*; q=0.01');
32
+ config = {
33
+ method: 'POST',
34
+ headers: headers,
35
+ body: access ? JSON.stringify({
36
+ access: access
37
+ }) : undefined
38
+ };
39
+ url = "".concat(authProviderBaseURL, "/token/tenant?collection=").concat(collectionName, "&environment=").concat(environment);
40
+ response = fetch(url, config); // We leverage the fact, that our internal /toke/tenant API returns data in the same format as Auth
41
+ _context.next = 9;
42
+ return response;
43
+ case 9:
44
+ _context.next = 11;
45
+ return _context.sent.json();
46
+ case 11:
47
+ return _context.abrupt("return", _context.sent);
48
+ case 12:
49
+ case "end":
50
+ return _context.stop();
51
+ }
52
+ }, _callee);
53
+ }));
54
+ return function loadTenatAuth(_x) {
55
+ return _ref.apply(this, arguments);
56
+ };
57
+ }();
58
+ return function (authContext) {
59
+ var collectionName = authContext && authContext.collectionName || _collectionNames.defaultCollectionName;
60
+ var accessStr = access ? JSON.stringify(access) : '';
61
+ var cacheKey = "".concat(collectionName, "-").concat(accessStr, "-").concat(isAsapEnvironment);
62
+ if (!cachedAuths[cacheKey]) {
63
+ cachedAuths[cacheKey] = loadTenatAuth(collectionName);
64
+ }
65
+ return cachedAuths[cacheKey];
66
+ };
67
+ }
68
+ }]);
69
+ return StoryBookAuthProvider;
70
+ }();
71
+ exports.StoryBookAuthProvider = StoryBookAuthProvider;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.onlyAnimatedGifsCollectionName = exports.fileCollectionName = exports.defaultMediaPickerCollectionName = exports.defaultCollectionName = exports.collectionNames = void 0;
7
+ var defaultCollectionName = 'MediaServicesSample';
8
+ exports.defaultCollectionName = defaultCollectionName;
9
+ var onlyAnimatedGifsCollectionName = 'only-animated-gifs';
10
+ exports.onlyAnimatedGifsCollectionName = onlyAnimatedGifsCollectionName;
11
+ var fileCollectionName = "".concat(defaultCollectionName, "Files");
12
+ exports.fileCollectionName = fileCollectionName;
13
+ var defaultMediaPickerCollectionName = 'mediapicker-test';
14
+ exports.defaultMediaPickerCollectionName = defaultMediaPickerCollectionName;
15
+ var collectionNames = [defaultCollectionName, 'MediaServicesSampleAtlaskit', 'MediaServicesSampleHulk', 'MediaServicesSampleFabric', fileCollectionName, onlyAnimatedGifsCollectionName, defaultMediaPickerCollectionName];
16
+ exports.collectionNames = collectionNames;