@atlaskit/media-client 14.3.1 → 15.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 (71) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/dist/cjs/client/collection-fetcher.js +6 -4
  3. package/dist/cjs/client/file-fetcher/error.js +1 -1
  4. package/dist/cjs/client/file-fetcher/index.js +22 -20
  5. package/dist/cjs/client/media-store/error.js +1 -1
  6. package/dist/cjs/client/media-store/index.js +3 -3
  7. package/dist/cjs/constants.js +1 -1
  8. package/dist/cjs/identifier.js +1 -1
  9. package/dist/cjs/index.js +127 -120
  10. package/dist/cjs/models/errors/helpers.js +1 -1
  11. package/dist/cjs/models/errors/index.js +8 -6
  12. package/dist/cjs/models/file-state.js +3 -3
  13. package/dist/cjs/models/media-subscribable.js +5 -0
  14. package/dist/cjs/models/media.js +1 -1
  15. package/dist/cjs/utils/createFileDataLoader.js +2 -1
  16. package/dist/cjs/utils/{createFileStateSubject.js → createMediaSubject.js} +3 -5
  17. package/dist/cjs/utils/detectEmptyFile.js +1 -1
  18. package/dist/cjs/utils/hashing/hasherCreator.js +1 -1
  19. package/dist/cjs/utils/{observableToPromise.js → mediaSubscribableToPromise.js} +6 -7
  20. package/dist/cjs/utils/mobileUpload/error.js +1 -1
  21. package/dist/cjs/utils/mobileUpload/helpers.js +3 -3
  22. package/dist/cjs/utils/mobileUpload/index.js +10 -10
  23. package/dist/cjs/utils/mobileUpload/stateMachine/states/uploading.js +2 -2
  24. package/dist/cjs/utils/polling/errors.js +1 -1
  25. package/dist/cjs/utils/polling/index.js +3 -3
  26. package/dist/cjs/utils/request/errors.js +1 -1
  27. package/dist/cjs/utils/request/helpers.js +15 -15
  28. package/dist/cjs/utils/request/index.js +5 -5
  29. package/dist/cjs/utils/setTimeoutPromise.js +1 -1
  30. package/dist/cjs/utils/toMediaSubscribable.js +28 -0
  31. package/dist/cjs/utils/url.js +3 -3
  32. package/dist/cjs/utils/with-media-client-hoc.js +3 -1
  33. package/dist/cjs/version.json +1 -1
  34. package/dist/es2019/client/collection-fetcher.js +2 -1
  35. package/dist/es2019/client/file-fetcher/index.js +13 -12
  36. package/dist/es2019/index.js +3 -2
  37. package/dist/es2019/models/media-subscribable.js +1 -0
  38. package/dist/es2019/utils/{createFileStateSubject.js → createMediaSubject.js} +2 -2
  39. package/dist/es2019/utils/mediaSubscribableToPromise.js +20 -0
  40. package/dist/es2019/utils/mobileUpload/helpers.js +2 -2
  41. package/dist/es2019/utils/toMediaSubscribable.js +18 -0
  42. package/dist/es2019/version.json +1 -1
  43. package/dist/esm/client/collection-fetcher.js +4 -3
  44. package/dist/esm/client/file-fetcher/index.js +16 -15
  45. package/dist/esm/client/media-store/index.js +2 -2
  46. package/dist/esm/index.js +3 -2
  47. package/dist/esm/models/errors/index.js +2 -1
  48. package/dist/esm/models/file-state.js +2 -2
  49. package/dist/esm/models/media-subscribable.js +1 -0
  50. package/dist/esm/utils/{createFileStateSubject.js → createMediaSubject.js} +2 -2
  51. package/dist/esm/utils/{observableToPromise.js → mediaSubscribableToPromise.js} +5 -6
  52. package/dist/esm/utils/mobileUpload/helpers.js +2 -2
  53. package/dist/esm/utils/mobileUpload/stateMachine/states/uploading.js +2 -2
  54. package/dist/esm/utils/polling/index.js +2 -2
  55. package/dist/esm/utils/request/helpers.js +2 -2
  56. package/dist/esm/utils/toMediaSubscribable.js +18 -0
  57. package/dist/esm/utils/url.js +2 -2
  58. package/dist/esm/utils/with-media-client-hoc.js +2 -1
  59. package/dist/esm/version.json +1 -1
  60. package/dist/types/client/collection-fetcher.d.ts +2 -1
  61. package/dist/types/client/file-fetcher/index.d.ts +5 -5
  62. package/dist/types/index.d.ts +4 -2
  63. package/dist/types/models/media-subscribable.d.ts +3 -0
  64. package/dist/types/utils/createMediaSubject.d.ts +3 -0
  65. package/dist/types/utils/mediaSubscribableToPromise.d.ts +10 -0
  66. package/dist/types/utils/safeUnsubscribe.d.ts +2 -2
  67. package/dist/types/utils/toMediaSubscribable.d.ts +20 -0
  68. package/package.json +11 -13
  69. package/dist/es2019/utils/observableToPromise.js +0 -21
  70. package/dist/types/utils/createFileStateSubject.d.ts +0 -3
  71. package/dist/types/utils/observableToPromise.d.ts +0 -10
@@ -3,21 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.observableToPromise = void 0;
6
+ exports.mediaSubscribableToPromise = void 0;
7
7
 
8
8
  var _Subscription = require("rxjs/Subscription");
9
9
 
10
10
  /**
11
- * We're using this custom helper in place of ".toPromise()" to transform the first value emitted by an Observable or Subject into a Promise.
12
- * Note that in RxJS 7 ".toPromise()" is deprecated and replaced by "firstValueFrom()/.lastValueFrom()"
11
+ * This is a helper to transform the first value emitted by an MediaSubscribable into a Promise.
13
12
  *
14
- * @param observable a given Observable<T> or Subject<T>
13
+ * @param mediaSubscribable a given MediaSubscribable<MediaSubscribableItem>
15
14
  * @param subscription a default Subscription (this parameter exists for testing purpose)
16
15
  */
17
- var observableToPromise = function observableToPromise(observable) {
16
+ var mediaSubscribableToPromise = function mediaSubscribableToPromise(mediaSubscribable) {
18
17
  var subscription = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new _Subscription.Subscription();
19
18
  return new Promise(function (resolve, reject) {
20
- return subscription.add(observable.subscribe({
19
+ return subscription.add(mediaSubscribable.subscribe({
21
20
  next: function next(state) {
22
21
  resolve(state);
23
22
  subscription.unsubscribe();
@@ -30,4 +29,4 @@ var observableToPromise = function observableToPromise(observable) {
30
29
  });
31
30
  };
32
31
 
33
- exports.observableToPromise = observableToPromise;
32
+ exports.mediaSubscribableToPromise = mediaSubscribableToPromise;
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.isMobileUploadError = isMobileUploadError;
9
8
  exports.MobileUploadError = void 0;
9
+ exports.isMobileUploadError = isMobileUploadError;
10
10
 
11
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
12
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.createMobileDownloadFileStream = exports.createMobileFileStateSubject = void 0;
8
+ exports.createMobileFileStateSubject = exports.createMobileDownloadFileStream = void 0;
9
9
 
10
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
11
 
@@ -19,7 +19,7 @@ var _map = require("rxjs/operators/map");
19
19
 
20
20
  var _fileState = require("../../models/file-state");
21
21
 
22
- var _createFileStateSubject = require("../createFileStateSubject");
22
+ var _createMediaSubject = require("../createMediaSubject");
23
23
 
24
24
  var _detectEmptyFile = require("../detectEmptyFile");
25
25
 
@@ -38,7 +38,7 @@ var createMobileFileStateSubject = function createMobileFileStateSubject(service
38
38
  exports.createMobileFileStateSubject = createMobileFileStateSubject;
39
39
 
40
40
  var createMobileDownloadFileStream = function createMobileDownloadFileStream(dataloader, id, collectionName, occurrenceKey) {
41
- var subject = (0, _createFileStateSubject.createFileStateSubject)();
41
+ var subject = (0, _createMediaSubject.createMediaSubject)();
42
42
  var poll = new _polling.PollingFunction(); // ensure subject errors if polling exceeds max iterations or uncaught exception in executor
43
43
 
44
44
  poll.onError = function (error) {
@@ -3,22 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "isMobileUploadError", {
7
- enumerable: true,
8
- get: function get() {
9
- return _error.isMobileUploadError;
10
- }
11
- });
12
6
  Object.defineProperty(exports, "MobileUploadError", {
13
7
  enumerable: true,
14
8
  get: function get() {
15
9
  return _error.MobileUploadError;
16
10
  }
17
11
  });
18
- Object.defineProperty(exports, "createServicesCache", {
12
+ Object.defineProperty(exports, "createMobileFileStateSubject", {
19
13
  enumerable: true,
20
14
  get: function get() {
21
- return _servicesCache.createServicesCache;
15
+ return _helpers.createMobileFileStateSubject;
22
16
  }
23
17
  });
24
18
  Object.defineProperty(exports, "createMobileUploadService", {
@@ -33,10 +27,16 @@ Object.defineProperty(exports, "createMobileUploadStateMachine", {
33
27
  return _stateMachine.createMobileUploadStateMachine;
34
28
  }
35
29
  });
36
- Object.defineProperty(exports, "createMobileFileStateSubject", {
30
+ Object.defineProperty(exports, "createServicesCache", {
37
31
  enumerable: true,
38
32
  get: function get() {
39
- return _helpers.createMobileFileStateSubject;
33
+ return _servicesCache.createServicesCache;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "isMobileUploadError", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _error.isMobileUploadError;
40
40
  }
41
41
  });
42
42
 
@@ -13,9 +13,9 @@ var _xstate = require("xstate");
13
13
 
14
14
  var _fileState = require("../../../../models/file-state");
15
15
 
16
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
16
+ 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; }
17
17
 
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
18
+ 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; }
19
19
 
20
20
  var machineUploadingState = {
21
21
  // Events
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.isPollingError = isPollingError;
9
8
  exports.PollingError = void 0;
9
+ exports.isPollingError = isPollingError;
10
10
 
11
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
12
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.PollingFunction = exports.defaultPollingOptions = void 0;
8
+ exports.defaultPollingOptions = exports.PollingFunction = void 0;
9
9
 
10
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
11
 
@@ -19,9 +19,9 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
19
19
 
20
20
  var _errors = require("./errors");
21
21
 
22
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
22
+ 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; }
23
23
 
24
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
24
+ 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; }
25
25
 
26
26
  // default polling options without using feature flags
27
27
  var defaultPollingOptions = {
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.isRequestError = isRequestError;
9
8
  exports.RequestError = void 0;
9
+ exports.isRequestError = isRequestError;
10
10
 
11
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
12
 
@@ -5,26 +5,26 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.DEFAULT_RETRY_OPTIONS = void 0;
8
9
  exports.clientTimeoutPromise = clientTimeoutPromise;
9
- exports.waitPromise = waitPromise;
10
+ exports.cloneRequestError = cloneRequestError;
11
+ exports.createMapResponseToBlob = createMapResponseToBlob;
12
+ exports.createMapResponseToJson = createMapResponseToJson;
13
+ exports.createProcessFetchResponse = createProcessFetchResponse;
14
+ exports.createRequestErrorFromResponse = createRequestErrorFromResponse;
15
+ exports.createRequestErrorReason = createRequestErrorReason;
16
+ exports.createUrl = createUrl;
17
+ exports.extract = extract;
18
+ exports.fetchRetry = fetchRetry;
10
19
  exports.isAbortedRequestError = isAbortedRequestError;
11
20
  exports.isFetchNetworkError = isFetchNetworkError;
12
21
  exports.isRateLimitedError = isRateLimitedError;
13
- exports.extract = extract;
14
22
  exports.mapAuthToRequestHeaders = mapAuthToRequestHeaders;
15
- exports.createUrl = createUrl;
16
- exports.withAuth = withAuth;
17
- exports.mapResponseToJson = mapResponseToJson;
18
23
  exports.mapResponseToBlob = mapResponseToBlob;
24
+ exports.mapResponseToJson = mapResponseToJson;
19
25
  exports.mapResponseToVoid = mapResponseToVoid;
20
- exports.createMapResponseToJson = createMapResponseToJson;
21
- exports.createMapResponseToBlob = createMapResponseToBlob;
22
- exports.cloneRequestError = cloneRequestError;
23
- exports.fetchRetry = fetchRetry;
24
- exports.createRequestErrorReason = createRequestErrorReason;
25
- exports.createRequestErrorFromResponse = createRequestErrorFromResponse;
26
- exports.createProcessFetchResponse = createProcessFetchResponse;
27
- exports.DEFAULT_RETRY_OPTIONS = void 0;
26
+ exports.waitPromise = waitPromise;
27
+ exports.withAuth = withAuth;
28
28
 
29
29
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
30
30
 
@@ -40,9 +40,9 @@ var _authQueryParameters = require("../../models/auth-query-parameters");
40
40
 
41
41
  var _errors = require("./errors");
42
42
 
43
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
43
+ 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; }
44
44
 
45
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
45
+ 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; }
46
46
 
47
47
  function clientTimeoutPromise(timeout) {
48
48
  return new Promise(function (resolve, reject) {
@@ -5,25 +5,25 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.request = request;
9
8
  Object.defineProperty(exports, "RequestError", {
10
9
  enumerable: true,
11
10
  get: function get() {
12
11
  return _errors.RequestError;
13
12
  }
14
13
  });
15
- Object.defineProperty(exports, "isRequestError", {
14
+ Object.defineProperty(exports, "isRateLimitedError", {
16
15
  enumerable: true,
17
16
  get: function get() {
18
- return _errors.isRequestError;
17
+ return _helpers.isRateLimitedError;
19
18
  }
20
19
  });
21
- Object.defineProperty(exports, "isRateLimitedError", {
20
+ Object.defineProperty(exports, "isRequestError", {
22
21
  enumerable: true,
23
22
  get: function get() {
24
- return _helpers.isRateLimitedError;
23
+ return _errors.isRequestError;
25
24
  }
26
25
  });
26
+ exports.request = request;
27
27
 
28
28
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
29
29
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.rejectTimeout = exports.resolveTimeout = void 0;
6
+ exports.resolveTimeout = exports.rejectTimeout = void 0;
7
7
 
8
8
  var resolveTimeout = function resolveTimeout(timeout, resolveWith) {
9
9
  return new Promise(function (resolve, _reject) {
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createMediaSubscribable = createMediaSubscribable;
7
+ exports.toMediaSubscribable = toMediaSubscribable;
8
+
9
+ var _createMediaSubject = require("./createMediaSubject");
10
+
11
+ function toMediaSubscribable(observable) {
12
+ return {
13
+ subscribe: function subscribe(observer) {
14
+ var subscription = // This is needed to handle "subscribe" function overload.
15
+ // It allows accepting a single "next" callback function as an argument.
16
+ observer instanceof Function ? observable.subscribe(observer) : observable.subscribe(observer);
17
+ return {
18
+ unsubscribe: function unsubscribe() {
19
+ subscription.unsubscribe();
20
+ }
21
+ };
22
+ }
23
+ };
24
+ }
25
+
26
+ function createMediaSubscribable(mediaSubscribableItem) {
27
+ return toMediaSubscribable((0, _createMediaSubject.createMediaSubject)(mediaSubscribableItem));
28
+ }
@@ -5,13 +5,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.addFileAttrsToUrl = exports.objectToQueryString = exports.getAttrsFromUrl = exports.isMediaBlobUrl = void 0;
8
+ exports.objectToQueryString = exports.isMediaBlobUrl = exports.getAttrsFromUrl = exports.addFileAttrsToUrl = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
12
+ 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; }
13
13
 
14
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
14
+ 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; }
15
15
 
16
16
  var mediaBlobUrlIdentifier = 'media-blob-url';
17
17
 
@@ -25,6 +25,8 @@ var _react = _interopRequireDefault(require("react"));
25
25
 
26
26
  var _mediaClient = require("../client/media-client");
27
27
 
28
+ var _excluded = ["mediaClientConfig"];
29
+
28
30
  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); }; }
29
31
 
30
32
  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; } }
@@ -74,7 +76,7 @@ var withMediaClient = function withMediaClient(Component, featureFlags) {
74
76
  // TODO MPT-315: clean up after we move mediaClientConfig into FileIdentifier
75
77
  var _this$props = this.props,
76
78
  mediaClientConfig = _this$props.mediaClientConfig,
77
- otherProps = (0, _objectWithoutProperties2.default)(_this$props, ["mediaClientConfig"]);
79
+ otherProps = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
78
80
  var mediaClient = !mediaClientConfig ? createEmptyMediaClient(featureFlags) : getMediaClient(mediaClientConfig, featureFlags);
79
81
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, otherProps, {
80
82
  mediaClient: mediaClient
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-client",
3
- "version": "14.3.1",
3
+ "version": "15.0.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,6 +1,7 @@
1
1
  import { ReplaySubject } from 'rxjs/ReplaySubject';
2
2
  import { getFileStreamsCache } from '../file-streams-cache';
3
3
  import { mapMediaFileToFileState } from '../models/file-state';
4
+ import { toMediaSubscribable } from '../utils/toMediaSubscribable';
4
5
  export const collectionCache = {};
5
6
 
6
7
  const createCacheEntry = () => ({
@@ -66,7 +67,7 @@ export class CollectionFetcher {
66
67
  collection.nextInclusiveStartKey = nextInclusiveStartKey;
67
68
  subject.next(collection.items);
68
69
  }).catch(error => subject.error(error));
69
- return subject;
70
+ return toMediaSubscribable(subject);
70
71
  }
71
72
 
72
73
  async removeFile(id, collectionName, occurrenceKey) {
@@ -21,18 +21,19 @@ import { createFileDataloader } from '../../utils/createFileDataLoader';
21
21
  import { getMediaTypeFromUploadableFile } from '../../utils/getMediaTypeFromUploadableFile';
22
22
  import { overrideMediaTypeIfUnknown } from '../../utils/overrideMediaTypeIfUnknown';
23
23
  import { convertBase64ToBlob } from '../../utils/convertBase64ToBlob';
24
- import { observableToPromise } from '../../utils/observableToPromise';
24
+ import { mediaSubscribableToPromise } from '../../utils/mediaSubscribableToPromise';
25
25
  import { getDimensionsFromBlob } from '../../utils/getDimensionsFromBlob';
26
- import { createFileStateSubject } from '../../utils/createFileStateSubject';
26
+ import { createMediaSubject } from '../../utils/createMediaSubject';
27
27
  import { isMimeTypeSupportedByBrowser, getMediaTypeFromMimeType } from '@atlaskit/media-common/mediaTypeUtils';
28
28
  import { shouldFetchRemoteFileStates, shouldFetchRemoteFileStatesObservable } from '../../utils/shouldFetchRemoteFileStates';
29
29
  import { PollingFunction } from '../../utils/polling';
30
30
  import { isEmptyFile } from '../../utils/detectEmptyFile';
31
+ import { toMediaSubscribable } from '../../utils/toMediaSubscribable';
31
32
  export { isFileFetcherError, FileFetcherError } from './error';
32
33
  export class FileFetcherImpl {
33
34
  constructor(mediaStore) {
34
35
  _defineProperty(this, "createDownloadFileStream", (id, collectionName, occurrenceKey) => {
35
- const subject = createFileStateSubject();
36
+ const subject = createMediaSubject();
36
37
  const poll = new PollingFunction(); // ensure subject errors if polling exceeds max iterations or uncaught exception in executor
37
38
 
38
39
  poll.onError = error => subject.error(error);
@@ -85,19 +86,19 @@ export class FileFetcherImpl {
85
86
  } = options;
86
87
 
87
88
  if (!isValidId(id)) {
88
- const subject = createFileStateSubject();
89
+ const subject = createMediaSubject();
89
90
  subject.error(new FileFetcherError('invalidFileId', id, {
90
91
  collectionName,
91
92
  occurrenceKey
92
93
  }));
93
- return subject;
94
+ return toMediaSubscribable(subject);
94
95
  }
95
96
 
96
- return getFileStreamsCache().getOrInsert(id, () => this.createDownloadFileStream(id, collectionName));
97
+ return toMediaSubscribable(getFileStreamsCache().getOrInsert(id, () => this.createDownloadFileStream(id, collectionName)));
97
98
  }
98
99
 
99
100
  getCurrentState(id, options) {
100
- return observableToPromise(this.getFileState(id, options));
101
+ return mediaSubscribableToPromise(this.getFileState(id, options));
101
102
  }
102
103
 
103
104
  getArtifactURL(artifacts, artifactName, collectionName) {
@@ -140,7 +141,7 @@ export class FileFetcherImpl {
140
141
  id,
141
142
  occurrenceKey
142
143
  } = uploadableFileUpfrontIds;
143
- const subject = createFileStateSubject();
144
+ const subject = createMediaSubject();
144
145
  const deferredBlob = fetch(url).then(response => response.blob()).catch(() => undefined);
145
146
  const preview = new Promise(async (resolve, reject) => {
146
147
  const blob = await deferredBlob;
@@ -231,7 +232,7 @@ export class FileFetcherImpl {
231
232
  let preview; // TODO [MSW-796]: get file size for base64
232
233
 
233
234
  const mediaType = getMediaTypeFromUploadableFile(file);
234
- const subject = createFileStateSubject();
235
+ const subject = createMediaSubject();
235
236
  const processingSubscription = new Subscription();
236
237
 
237
238
  if (content instanceof Blob) {
@@ -306,7 +307,7 @@ export class FileFetcherImpl {
306
307
  });
307
308
  }
308
309
 
309
- return subject;
310
+ return toMediaSubscribable(subject);
310
311
  }
311
312
 
312
313
  async downloadBinary(id, name = 'download', collectionName) {
@@ -379,7 +380,7 @@ export class FileFetcherImpl {
379
380
  data: copiedFileWithMimeType
380
381
  });
381
382
  const fileCache = cache.get(copiedId);
382
- const subject = fileCache || createFileStateSubject(); // if we were passed a "preview", we propagate it into the copiedFileState
383
+ const subject = fileCache || createMediaSubject(); // if we were passed a "preview", we propagate it into the copiedFileState
383
384
 
384
385
  const previewOverride = !isErrorFileState(copiedFileState) && !!preview ? {
385
386
  preview
@@ -423,7 +424,7 @@ export class FileFetcherImpl {
423
424
  fileCache.error(error);
424
425
  } else {
425
426
  // Create a new subject with the error state for new subscriptions
426
- cache.set(id, createFileStateSubject(error));
427
+ cache.set(id, createMediaSubject(error));
427
428
  }
428
429
  }
429
430
 
@@ -4,6 +4,7 @@ export { isPreviewableType, isMediaCollectionItemFullDetails } from './models/me
4
4
  export { getArtifactUrl } from './models/artifacts';
5
5
  export { isMediaClientError, getMediaClientErrorReason } from './models/errors';
6
6
  export { isUploadingFileState, isProcessingFileState, isProcessedFileState, isErrorFileState, isPreviewableFileState, isFinalFileState, isImageRepresentationReady, mapMediaFileToFileState, mapMediaItemToFileState } from './models/file-state';
7
+ // TODO: remove access to media file stream cache https://product-fabric.atlassian.net/browse/MEX-1417
7
8
  export { getFileStreamsCache, StreamsCache } from './file-streams-cache';
8
9
  export { uploadFile } from './uploader';
9
10
  export { request, RequestError, isRequestError, isRateLimitedError } from './utils/request';
@@ -17,14 +18,14 @@ export { MediaClient } from './client/media-client';
17
18
  export { StargateClient } from './client/stargate-client';
18
19
  export { isImageRemote } from './utils/isImageRemote';
19
20
  export { checkWebpSupport } from './utils/checkWebpSupport';
20
- export { observableToPromise } from './utils/observableToPromise';
21
21
  export { getDimensionsFromBlob } from './utils/getDimensionsFromBlob';
22
- export { createFileStateSubject } from './utils/createFileStateSubject';
22
+ export { createMediaSubject } from './utils/createMediaSubject';
23
23
  export { safeUnsubscribe } from './utils/safeUnsubscribe';
24
24
  export { isFileIdentifier, isExternalImageIdentifier, isDifferentIdentifier } from './identifier';
25
25
  export { withMediaClient, getMediaClient } from './utils/with-media-client-hoc';
26
26
  export { globalMediaEventEmitter } from './globalMediaEventEmitter';
27
27
  export { isMediaBlobUrl, getAttrsFromUrl, addFileAttrsToUrl, objectToQueryString } from './utils/url';
28
+ export { createMediaSubscribable } from './utils/toMediaSubscribable';
28
29
  export { RECENTS_COLLECTION, MAX_RESOLUTION } from './constants'; // TODO MEX-659 Remove these exports when all the usages from media-client are replaced with media-common.
29
30
 
30
31
  import { getMediaTypeFromMimeType as _getMediaTypeFromMimeType, isImageMimeTypeSupportedByBrowser as _isImageMimeTypeSupportedByBrowser, isDocumentMimeTypeSupportedByBrowser as _isDocumentMimeTypeSupportedByBrowser, isMimeTypeSupportedByBrowser as _isMimeTypeSupportedByBrowser, isImageMimeTypeSupportedByServer as _isImageMimeTypeSupportedByServer, isDocumentMimeTypeSupportedByServer as _isDocumentMimeTypeSupportedByServer, isAudioMimeTypeSupportedByServer as _isAudioMimeTypeSupportedByServer, isVideoMimeTypeSupportedByServer as _isVideoMimeTypeSupportedByServer, isUnknownMimeTypeSupportedByServer as _isUnknownMimeTypeSupportedByServer, isMimeTypeSupportedByServer as _isMimeTypeSupportedByServer } from '@atlaskit/media-common/mediaTypeUtils';
@@ -0,0 +1 @@
1
+ export {};
@@ -1,5 +1,5 @@
1
1
  import { ReplaySubject } from 'rxjs/ReplaySubject';
2
- export const createFileStateSubject = initialState => {
2
+ export function createMediaSubject(initialState) {
3
3
  const subject = new ReplaySubject(1);
4
4
 
5
5
  if (initialState instanceof Error) {
@@ -9,4 +9,4 @@ export const createFileStateSubject = initialState => {
9
9
  }
10
10
 
11
11
  return subject;
12
- };
12
+ }
@@ -0,0 +1,20 @@
1
+ import { Subscription } from 'rxjs/Subscription';
2
+
3
+ /**
4
+ * This is a helper to transform the first value emitted by an MediaSubscribable into a Promise.
5
+ *
6
+ * @param mediaSubscribable a given MediaSubscribable<MediaSubscribableItem>
7
+ * @param subscription a default Subscription (this parameter exists for testing purpose)
8
+ */
9
+ export const mediaSubscribableToPromise = (mediaSubscribable, subscription = new Subscription()) => {
10
+ return new Promise((resolve, reject) => subscription.add(mediaSubscribable.subscribe({
11
+ next: state => {
12
+ resolve(state);
13
+ subscription.unsubscribe();
14
+ },
15
+ error: error => {
16
+ reject(error);
17
+ subscription.unsubscribe();
18
+ }
19
+ })));
20
+ };
@@ -2,7 +2,7 @@ import { ReplaySubject } from 'rxjs/ReplaySubject';
2
2
  import { from } from 'rxjs/observable/from';
3
3
  import { map } from 'rxjs/operators/map';
4
4
  import { mapMediaItemToFileState } from '../../models/file-state';
5
- import { createFileStateSubject } from '../createFileStateSubject';
5
+ import { createMediaSubject } from '../createMediaSubject';
6
6
  import { isEmptyFile } from '../detectEmptyFile';
7
7
  import { PollingFunction } from '../polling';
8
8
  import { MobileUploadError } from './error';
@@ -12,7 +12,7 @@ export const createMobileFileStateSubject = service => {
12
12
  return subject;
13
13
  };
14
14
  export const createMobileDownloadFileStream = (dataloader, id, collectionName, occurrenceKey) => {
15
- const subject = createFileStateSubject();
15
+ const subject = createMediaSubject();
16
16
  const poll = new PollingFunction(); // ensure subject errors if polling exceeds max iterations or uncaught exception in executor
17
17
 
18
18
  poll.onError = error => subject.error(error);
@@ -0,0 +1,18 @@
1
+ import { createMediaSubject } from './createMediaSubject';
2
+ export function toMediaSubscribable(observable) {
3
+ return {
4
+ subscribe: observer => {
5
+ const subscription = // This is needed to handle "subscribe" function overload.
6
+ // It allows accepting a single "next" callback function as an argument.
7
+ observer instanceof Function ? observable.subscribe(observer) : observable.subscribe(observer);
8
+ return {
9
+ unsubscribe: () => {
10
+ subscription.unsubscribe();
11
+ }
12
+ };
13
+ }
14
+ };
15
+ }
16
+ export function createMediaSubscribable(mediaSubscribableItem) {
17
+ return toMediaSubscribable(createMediaSubject(mediaSubscribableItem));
18
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-client",
3
- "version": "14.3.1",
3
+ "version": "15.0.0",
4
4
  "sideEffects": false
5
5
  }
@@ -5,13 +5,14 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
5
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
6
6
  import _createClass from "@babel/runtime/helpers/createClass";
7
7
 
8
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
8
+ 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; }
9
9
 
10
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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) { _defineProperty(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; }
11
11
 
12
12
  import { ReplaySubject } from 'rxjs/ReplaySubject';
13
13
  import { getFileStreamsCache } from '../file-streams-cache';
14
14
  import { mapMediaFileToFileState } from '../models/file-state';
15
+ import { toMediaSubscribable } from '../utils/toMediaSubscribable';
15
16
  export var collectionCache = {};
16
17
 
17
18
  var createCacheEntry = function createCacheEntry() {
@@ -97,7 +98,7 @@ export var CollectionFetcher = /*#__PURE__*/function () {
97
98
  }).catch(function (error) {
98
99
  return subject.error(error);
99
100
  });
100
- return subject;
101
+ return toMediaSubscribable(subject);
101
102
  }
102
103
  }, {
103
104
  key: "removeFile",