@atlaskit/media-common 2.19.0 → 2.19.2

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 (48) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/analytics/index.js +0 -2
  3. package/dist/cjs/analytics/withMediaAnalyticsContext.js +3 -17
  4. package/dist/cjs/docs/index.js +0 -2
  5. package/dist/cjs/docs/media-use-only.js +0 -8
  6. package/dist/cjs/docs/rxjs-notice.js +0 -4
  7. package/dist/cjs/downloadUrl.js +0 -6
  8. package/dist/cjs/index.js +0 -6
  9. package/dist/cjs/mediaFeatureFlag-local.js +2 -4
  10. package/dist/cjs/mediaFeatureFlags/index.js +0 -1
  11. package/dist/cjs/mediaFeatureFlags/mediaFeatureFlags.js +13 -34
  12. package/dist/cjs/mediaFeatureFlags/productKeys.js +4 -2
  13. package/dist/cjs/mediaFeatureFlags/types.js +2 -0
  14. package/dist/cjs/mediaTypeUtils/index.js +0 -10
  15. package/dist/cjs/mediaTypeUtils/isArchive.js +0 -2
  16. package/dist/cjs/mediaTypeUtils/isMimeTypeSupportedByBrowser.js +3 -12
  17. package/dist/cjs/mediaTypeUtils/isMimeTypeSupportedByServer.js +27 -26
  18. package/dist/cjs/utils/helpers.js +3 -28
  19. package/dist/cjs/version.json +1 -1
  20. package/dist/es2019/analytics/index.js +3 -1
  21. package/dist/es2019/analytics/withMediaAnalyticsContext.js +9 -7
  22. package/dist/es2019/docs/media-use-only.js +0 -4
  23. package/dist/es2019/downloadUrl.js +0 -4
  24. package/dist/es2019/index.js +4 -2
  25. package/dist/es2019/mediaFeatureFlag-local.js +2 -2
  26. package/dist/es2019/mediaFeatureFlags/mediaFeatureFlags.js +10 -12
  27. package/dist/es2019/mediaFeatureFlags/productKeys.js +4 -0
  28. package/dist/es2019/mediaFeatureFlags/types.js +2 -0
  29. package/dist/es2019/mediaTypeUtils/index.js +0 -5
  30. package/dist/es2019/mediaTypeUtils/isMimeTypeSupportedByBrowser.js +3 -2
  31. package/dist/es2019/mediaTypeUtils/isMimeTypeSupportedByServer.js +27 -14
  32. package/dist/es2019/utils/helpers.js +0 -8
  33. package/dist/es2019/version.json +1 -1
  34. package/dist/esm/analytics/index.js +3 -1
  35. package/dist/esm/analytics/withMediaAnalyticsContext.js +3 -7
  36. package/dist/esm/docs/media-use-only.js +0 -5
  37. package/dist/esm/downloadUrl.js +0 -4
  38. package/dist/esm/index.js +4 -2
  39. package/dist/esm/mediaFeatureFlag-local.js +2 -2
  40. package/dist/esm/mediaFeatureFlags/mediaFeatureFlags.js +13 -17
  41. package/dist/esm/mediaFeatureFlags/productKeys.js +4 -0
  42. package/dist/esm/mediaFeatureFlags/types.js +2 -0
  43. package/dist/esm/mediaTypeUtils/index.js +0 -5
  44. package/dist/esm/mediaTypeUtils/isMimeTypeSupportedByBrowser.js +3 -2
  45. package/dist/esm/mediaTypeUtils/isMimeTypeSupportedByServer.js +27 -14
  46. package/dist/esm/utils/helpers.js +3 -15
  47. package/dist/esm/version.json +1 -1
  48. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/media-common
2
2
 
3
+ ## 2.19.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+
9
+ ## 2.19.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [`9a88e254997`](https://bitbucket.org/atlassian/atlassian-frontend/commits/9a88e254997) - Recovered Media Feature Flag mediaUploadApiV2
14
+
3
15
  ## 2.19.0
4
16
 
5
17
  ### Minor Changes
@@ -15,7 +15,5 @@ Object.defineProperty(exports, "withMediaAnalyticsContext", {
15
15
  return _withMediaAnalyticsContext.withMediaAnalyticsContext;
16
16
  }
17
17
  });
18
-
19
18
  var _withMediaAnalyticsContext = require("./withMediaAnalyticsContext");
20
-
21
19
  var _constants = require("./constants");
@@ -1,39 +1,27 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.withMediaAnalyticsContext = void 0;
11
-
12
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
-
14
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
11
  var _react = _interopRequireWildcard(require("react"));
17
-
18
12
  var _analyticsNext = require("@atlaskit/analytics-next");
19
-
20
13
  var _MediaAnalyticsContext = require("@atlaskit/analytics-namespaced-context/MediaAnalyticsContext");
21
-
22
14
  var _mediaFeatureFlags = require("../mediaFeatureFlags");
23
-
24
15
  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); }
25
-
26
16
  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; }
27
-
28
17
  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; }
29
-
30
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; }
31
-
32
19
  var getFilteredFeatureFlags = function getFilteredFeatureFlags(keys, featureFlags) {
33
20
  return keys.reduce(function (result, key) {
34
21
  return _objectSpread(_objectSpread({}, result), {}, (0, _defineProperty2.default)({}, key, (0, _mediaFeatureFlags.getMediaFeatureFlag)(key, featureFlags)));
35
22
  }, {});
36
23
  };
24
+
37
25
  /**
38
26
  * HOC for attaching MediaAnalyticsContext to a top-level React Component.
39
27
  *
@@ -46,8 +34,6 @@ var getFilteredFeatureFlags = function getFilteredFeatureFlags(keys, featureFlag
46
34
  *
47
35
  * @see packages/analytics/analytics-next/src/hocs/withAnalyticsContext.tsx
48
36
  */
49
-
50
-
51
37
  var withMediaAnalyticsContext = function withMediaAnalyticsContext(contextPublicAttributes) {
52
38
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
53
39
  return function (WrappedComponent) {
@@ -68,10 +54,10 @@ var withMediaAnalyticsContext = function withMediaAnalyticsContext(contextPublic
68
54
  ref: ref
69
55
  })));
70
56
  });
71
- WithMediaAnalyticsContext.displayName = "WithMediaAnalyticsContext(".concat( // @ts-ignore displayName doesn't exist on type
57
+ WithMediaAnalyticsContext.displayName = "WithMediaAnalyticsContext(".concat(
58
+ // @ts-ignore displayName doesn't exist on type
72
59
  WrappedComponent.displayName || WrappedComponent.name, ")");
73
60
  return WithMediaAnalyticsContext;
74
61
  };
75
62
  };
76
-
77
63
  exports.withMediaAnalyticsContext = withMediaAnalyticsContext;
@@ -15,7 +15,5 @@ Object.defineProperty(exports, "createRxjsNotice", {
15
15
  return _rxjsNotice.createRxjsNotice;
16
16
  }
17
17
  });
18
-
19
18
  var _rxjsNotice = require("./rxjs-notice");
20
-
21
19
  var _mediaUseOnly = require("./media-use-only");
@@ -1,36 +1,28 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createMediaUseOnlyNotice = createMediaUseOnlyNotice;
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var _sectionMessage = _interopRequireDefault(require("@atlaskit/section-message"));
13
-
14
10
  function AlternativePackagesMessage(_ref) {
15
11
  var alternatePackages = _ref.alternatePackages;
16
-
17
12
  if (!alternatePackages) {
18
13
  return null;
19
14
  }
20
-
21
15
  if (alternatePackages.length === 1) {
22
16
  return /*#__PURE__*/_react.default.createElement("p", null, "Consider using", ' ', /*#__PURE__*/_react.default.createElement("a", {
23
17
  href: alternatePackages[0].link
24
18
  }, alternatePackages[0].name), ' ', "instead.");
25
19
  }
26
-
27
20
  return /*#__PURE__*/_react.default.createElement("p", null, "Consider using one of these packages instead:", /*#__PURE__*/_react.default.createElement("ul", null, alternatePackages.map(function (p) {
28
21
  return /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement("a", {
29
22
  href: p.link
30
23
  }, p.name));
31
24
  })));
32
25
  }
33
-
34
26
  function createMediaUseOnlyNotice(componentName, alternatePackages) {
35
27
  return /*#__PURE__*/_react.default.createElement(_sectionMessage.default, {
36
28
  title: "Internal Media Use Only",
@@ -1,16 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createRxjsNotice = createRxjsNotice;
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var _sectionMessage = _interopRequireDefault(require("@atlaskit/section-message"));
13
-
14
10
  function createRxjsNotice(componentName) {
15
11
  return /*#__PURE__*/_react.default.createElement(_sectionMessage.default, {
16
12
  title: "RxJS compatilbity",
@@ -4,14 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.downloadUrl = void 0;
7
-
8
7
  var downloadUrl = function downloadUrl(url, options) {
9
8
  var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;
10
9
  var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
11
10
  var iframeName = 'media-download-iframe';
12
11
  var link = document.createElement('a');
13
12
  var iframe = document.getElementById(iframeName);
14
-
15
13
  if (!iframe) {
16
14
  iframe = document.createElement('iframe');
17
15
  iframe.style.display = 'none';
@@ -19,17 +17,13 @@ var downloadUrl = function downloadUrl(url, options) {
19
17
  iframe.name = iframeName;
20
18
  document.body.appendChild(iframe);
21
19
  }
22
-
23
20
  link.href = url;
24
-
25
21
  if (options && options.name) {
26
22
  link.download = options.name;
27
23
  }
28
-
29
24
  link.target = isIE11 || isSafari ? '_blank' : iframeName;
30
25
  document.body.appendChild(link);
31
26
  link.click();
32
27
  document.body.removeChild(link);
33
28
  };
34
-
35
29
  exports.downloadUrl = downloadUrl;
package/dist/cjs/index.js CHANGED
@@ -153,15 +153,9 @@ Object.defineProperty(exports, "withMediaAnalyticsContext", {
153
153
  return _withMediaAnalyticsContext.withMediaAnalyticsContext;
154
154
  }
155
155
  });
156
-
157
156
  var _downloadUrl = require("./downloadUrl");
158
-
159
157
  var _mediaFeatureFlags = require("./mediaFeatureFlags");
160
-
161
158
  var _withMediaAnalyticsContext = require("./analytics/withMediaAnalyticsContext");
162
-
163
159
  var _constants = require("./analytics/constants");
164
-
165
160
  var _mediaTypeUtils = require("./mediaTypeUtils");
166
-
167
161
  var _helpers = require("./utils/helpers");
@@ -4,15 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getLocalMediaFeatureFlag = void 0;
7
-
8
7
  // window.localStorage is easier to mock in tests if wrapped in this module
9
8
  var getLocalMediaFeatureFlag = function getLocalMediaFeatureFlag(key) {
10
9
  try {
11
10
  return typeof window !== 'undefined' && window.localStorage ? window.localStorage.getItem(key) : null;
12
- } catch (e) {// do nothing, return null by default
11
+ } catch (e) {
12
+ // do nothing, return null by default
13
13
  }
14
-
15
14
  return null;
16
15
  };
17
-
18
16
  exports.getLocalMediaFeatureFlag = getLocalMediaFeatureFlag;
@@ -39,5 +39,4 @@ Object.defineProperty(exports, "useMemoizeFeatureFlags", {
39
39
  return _mediaFeatureFlags.useMemoizeFeatureFlags;
40
40
  }
41
41
  });
42
-
43
42
  var _mediaFeatureFlags = require("./mediaFeatureFlags");
@@ -1,33 +1,24 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.filterFeatureFlagNames = exports.filterFeatureFlagKeysAllProducts = exports.defaultMediaFeatureFlags = exports.areEqualFeatureFlags = void 0;
9
8
  exports.getMediaFeatureFlag = getMediaFeatureFlag;
10
9
  exports.useMemoizeFeatureFlags = exports.mapAndFilterFeatureFlagNames = void 0;
11
-
12
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
-
14
11
  var _react = require("react");
15
-
16
12
  var _mediaFeatureFlagLocal = require("../mediaFeatureFlag-local");
17
-
18
13
  var _types = require("./types");
19
-
20
14
  var _productKeys = require("./productKeys");
21
-
22
15
  var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
23
16
  if (!ffA && !ffB) {
24
17
  return true;
25
18
  }
26
-
27
19
  if (!ffA || !ffB) {
28
20
  return false;
29
21
  }
30
-
31
22
  var results = {
32
23
  newCardExperience: ffA.newCardExperience === ffB.newCardExperience,
33
24
  captions: ffA.captions === ffB.captions,
@@ -35,6 +26,8 @@ var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
35
26
  folderUploads: ffA.folderUploads === ffB.folderUploads,
36
27
  observedWidth: ffA.observedWidth === ffB.observedWidth,
37
28
  timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo,
29
+ // @ts-ignore
30
+ mediaUploadApiV2: ffA.mediaUploadApiV2 === ffB.mediaUploadApiV2,
38
31
  memoryCacheLogging: ffA.memoryCacheLogging === ffB.memoryCacheLogging,
39
32
  fetchFileStateAfterUpload: ffA.fetchFileStateAfterUpload === ffB.fetchFileStateAfterUpload
40
33
  };
@@ -42,47 +35,39 @@ var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
42
35
  return result;
43
36
  });
44
37
  };
45
-
46
38
  exports.areEqualFeatureFlags = areEqualFeatureFlags;
47
-
48
39
  var filterFeatureFlagNames = function filterFeatureFlagNames(flags) {
49
40
  var pairs = Object.entries(flags);
50
41
  return pairs.filter(function (_ref) {
51
42
  var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
52
- _key = _ref2[0],
53
- value = _ref2[1];
54
-
43
+ _key = _ref2[0],
44
+ value = _ref2[1];
55
45
  return !!value;
56
46
  }).map(function (_ref3) {
57
47
  var _ref4 = (0, _slicedToArray2.default)(_ref3, 1),
58
- key = _ref4[0];
59
-
48
+ key = _ref4[0];
60
49
  return key;
61
50
  });
62
51
  };
52
+
63
53
  /**
64
54
  * Takes a record of {Media Feature Flag Names → boolean} and a supported product name.
65
55
  * Returns the corresponding product’s Launch Darkly Keys for each of the flags set as true in the input record.
66
56
  * */
67
-
68
-
69
57
  exports.filterFeatureFlagNames = filterFeatureFlagNames;
70
-
71
58
  var mapAndFilterFeatureFlagNames = function mapAndFilterFeatureFlagNames(flags, product) {
72
59
  var mediaFeatureFlags = filterFeatureFlagNames(flags);
73
60
  return mediaFeatureFlags.map(function (key) {
74
61
  return (0, _productKeys.getProductKeys)()[product][key];
75
62
  });
76
- }; // TODO(MEX-1547): This is temporary solution to just return the launch darkly feature flags for all products.
63
+ };
77
64
 
65
+ // TODO(MEX-1547): This is temporary solution to just return the launch darkly feature flags for all products.
78
66
  /**
79
67
  * Takes a record of {Media Feature Flag Names → boolean}.
80
68
  * Returns the Launch Darkly Keys from all products for each of the flags set as true in the input record.
81
69
  * */
82
-
83
-
84
70
  exports.mapAndFilterFeatureFlagNames = mapAndFilterFeatureFlagNames;
85
-
86
71
  var filterFeatureFlagKeysAllProducts = function filterFeatureFlagKeysAllProducts(flags) {
87
72
  var filteredFlags = filterFeatureFlagNames(flags);
88
73
  var ldFeatureFlags = [];
@@ -94,9 +79,9 @@ var filterFeatureFlagKeysAllProducts = function filterFeatureFlagKeysAllProducts
94
79
  return ldFeatureFlags.filter(function (flag) {
95
80
  return flag !== '';
96
81
  });
97
- }; // default values defined here, not necessary for components to know directly as they should use the function below
98
-
82
+ };
99
83
 
84
+ // default values defined here, not necessary for components to know directly as they should use the function below
100
85
  exports.filterFeatureFlagKeysAllProducts = filterFeatureFlagKeysAllProducts;
101
86
  var defaultMediaFeatureFlags = {
102
87
  newCardExperience: false,
@@ -107,9 +92,12 @@ var defaultMediaFeatureFlags = {
107
92
  folderUploads: false,
108
93
  observedWidth: false,
109
94
  timestampOnVideo: false,
95
+ // @ts-ignore
96
+ mediaUploadApiV2: true,
110
97
  memoryCacheLogging: false,
111
98
  fetchFileStateAfterUpload: false
112
99
  };
100
+
113
101
  /**
114
102
  * Public accessor from components to fallback to defaults if flags not passed,
115
103
  * otherwise whatever product has set will be returned.
@@ -120,33 +108,24 @@ var defaultMediaFeatureFlags = {
120
108
  *
121
109
  * (you will see a warning in console if override used)
122
110
  * */
123
-
124
111
  exports.defaultMediaFeatureFlags = defaultMediaFeatureFlags;
125
-
126
112
  function getMediaFeatureFlag(flagName, featureFlags) {
127
113
  var devOverride = (0, _mediaFeatureFlagLocal.getLocalMediaFeatureFlag)(flagName);
128
-
129
114
  if (devOverride !== null) {
130
115
  try {
131
116
  return JSON.parse(devOverride);
132
117
  } catch (e) {}
133
118
  }
134
-
135
119
  if (featureFlags) {
136
120
  return flagName in featureFlags ? featureFlags[flagName] : defaultMediaFeatureFlags[flagName];
137
121
  }
138
-
139
122
  return defaultMediaFeatureFlags[flagName];
140
123
  }
141
-
142
124
  var useMemoizeFeatureFlags = function useMemoizeFeatureFlags(featureFlags) {
143
125
  var ref = (0, _react.useRef)();
144
-
145
126
  if (!areEqualFeatureFlags(featureFlags, ref.current)) {
146
127
  ref.current = featureFlags;
147
128
  }
148
-
149
129
  return ref.current;
150
130
  };
151
-
152
131
  exports.useMemoizeFeatureFlags = useMemoizeFeatureFlags;
@@ -13,6 +13,8 @@ var productKeys = {
13
13
  //TODO fill the value after https://product-fabric.atlassian.net/browse/MEX-1593
14
14
  observedWidth: '',
15
15
  timestampOnVideo: 'confluence.frontend.media.timestamp.on.video',
16
+ // @ts-ignore
17
+ mediaUploadApiV2: 'confluence.enable.media.upload.api.v2',
16
18
  memoryCacheLogging: 'confluence-frontend-media-card-memory-cache-logging',
17
19
  fetchFileStateAfterUpload: 'confluence-frontend-media-client-fetch-file-state-after-upload'
18
20
  },
@@ -25,13 +27,13 @@ var productKeys = {
25
27
  //TODO fill the value after https://product-fabric.atlassian.net/browse/MEX-1593
26
28
  observedWidth: '',
27
29
  timestampOnVideo: 'issue.details.media-cards-timestamp-on-video',
30
+ // @ts-ignore
31
+ mediaUploadApiV2: 'issue.details.enable-media-upload-api-version-2',
28
32
  memoryCacheLogging: 'jira-frontend-media-card-memory-cache-logging',
29
33
  fetchFileStateAfterUpload: 'jira-frontend-media-client-fetch-file-state-after-upload'
30
34
  }
31
35
  };
32
-
33
36
  var getProductKeys = function getProductKeys() {
34
37
  return productKeys;
35
38
  };
36
-
37
39
  exports.getProductKeys = getProductKeys;
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.supportedProducts = void 0;
7
7
  // Media feature flags - type and defaults defined here in one source of truth
8
+
8
9
  // With this type we ensure the object will contain all the flags
10
+
9
11
  var supportedProducts = ['confluence', 'jira'];
10
12
  exports.supportedProducts = supportedProducts;
@@ -70,35 +70,25 @@ Object.defineProperty(exports, "isVideoMimeTypeSupportedByServer", {
70
70
  return _isMimeTypeSupportedByServer.isVideoMimeTypeSupportedByServer;
71
71
  }
72
72
  });
73
-
74
73
  var _isArchive = require("./isArchive");
75
-
76
74
  var _isMimeTypeSupportedByBrowser = require("./isMimeTypeSupportedByBrowser");
77
-
78
75
  var _isMimeTypeSupportedByServer = require("./isMimeTypeSupportedByServer");
79
-
80
76
  var getMediaTypeFromMimeType = function getMediaTypeFromMimeType(mimeType) {
81
77
  if ((0, _isArchive.isArchive)(mimeType)) {
82
78
  return 'archive';
83
79
  }
84
-
85
80
  if ((0, _isMimeTypeSupportedByBrowser.isImageMimeTypeSupportedByBrowser)(mimeType) || (0, _isMimeTypeSupportedByServer.isImageMimeTypeSupportedByServer)(mimeType)) {
86
81
  return 'image';
87
82
  }
88
-
89
83
  if ((0, _isMimeTypeSupportedByBrowser.isDocumentMimeTypeSupportedByBrowser)(mimeType) || (0, _isMimeTypeSupportedByServer.isDocumentMimeTypeSupportedByServer)(mimeType)) {
90
84
  return 'doc';
91
85
  }
92
-
93
86
  if ((0, _isMimeTypeSupportedByBrowser.isAudioMimeTypeSupportedByBrowser)(mimeType) || (0, _isMimeTypeSupportedByServer.isAudioMimeTypeSupportedByServer)(mimeType)) {
94
87
  return 'audio';
95
88
  }
96
-
97
89
  if ((0, _isMimeTypeSupportedByBrowser.isVideoMimeTypeSupportedByBrowser)(mimeType) || (0, _isMimeTypeSupportedByServer.isVideoMimeTypeSupportedByServer)(mimeType)) {
98
90
  return 'video';
99
91
  }
100
-
101
92
  return 'unknown';
102
93
  };
103
-
104
94
  exports.getMediaTypeFromMimeType = getMediaTypeFromMimeType;
@@ -4,10 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isArchive = void 0;
7
-
8
7
  // Based on https://en.wikipedia.org/wiki/List_of_archive_formats
9
8
  var isArchive = function isArchive(mimeType) {
10
9
  return ['application/x-archive', 'application/x-cpio', 'application/x-shar', 'application/x-iso9660-image', 'application/x-sbx', 'application/x-tar', 'application/x-bzip2', 'application/gzip', 'application/x-gzip', 'application/x-lzip', 'application/x-lzma', 'application/x-lzop', 'application/x-snappy-framed', 'application/x-xz', 'application/x-compress', 'application/zstd', 'application/x-7z-compressed', 'application/x-ace-compressed', 'application/x-astrotite-afa', 'application/x-alz-compressed', 'application/vnd.android.package-archive', 'application/x-freearc', 'application/x-arj', 'application/x-b1', 'application/vnd.ms-cab-compressed', 'application/x-cfs-compressed', 'application/x-dar', 'application/x-dgc-compressed', 'application/x-apple-diskimage', 'application/x-gca-compressed', 'application/java-archive', 'application/x-lzh', 'application/x-lzx', 'application/x-rar-compressed', 'application/x-stuffit', 'application/x-stuffitx', 'application/x-gtar', 'application/x-ms-wim', 'application/x-xar', 'application/zip', 'application/x-zoo', 'application/x-par2'].indexOf(mimeType.toLowerCase()) > -1;
11
10
  };
12
-
13
11
  exports.isArchive = isArchive;
@@ -4,24 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isVideoMimeTypeSupportedByBrowser = exports.isMimeTypeSupportedByBrowser = exports.isImageMimeTypeSupportedByBrowser = exports.isDocumentMimeTypeSupportedByBrowser = exports.isAudioMimeTypeSupportedByBrowser = void 0;
7
-
8
7
  // Based on https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types
9
8
  var isImageMimeTypeSupportedByBrowser = function isImageMimeTypeSupportedByBrowser(mimeType) {
10
- return ['image/apng', 'image/bmp', 'image/gif', 'image/x-icon', 'image/jpeg', 'image/png', 'image/webp' //'image/svg+xml', // Removed because of https://product-fabric.atlassian.net/browse/BMPT-625
9
+ return ['image/apng', 'image/bmp', 'image/gif', 'image/x-icon', 'image/jpeg', 'image/png', 'image/webp'
10
+ //'image/svg+xml', // Removed because of https://product-fabric.atlassian.net/browse/BMPT-625
11
11
  ].indexOf(mimeType.toLowerCase()) > -1;
12
12
  };
13
-
14
13
  exports.isImageMimeTypeSupportedByBrowser = isImageMimeTypeSupportedByBrowser;
15
-
16
14
  var isDocumentMimeTypeSupportedByBrowser = function isDocumentMimeTypeSupportedByBrowser(mimeType) {
17
15
  return mimeType.toLowerCase() === 'application/pdf';
18
16
  };
19
-
20
17
  exports.isDocumentMimeTypeSupportedByBrowser = isDocumentMimeTypeSupportedByBrowser;
21
-
22
18
  var isAudioMimeTypeSupportedByBrowser = function isAudioMimeTypeSupportedByBrowser(mimeType) {
23
19
  return ['audio/aac', 'audio/flac', 'audio/mp4', 'audio/mpeg', 'audio/ogg', 'audio/x-ogg', 'audio/wav', 'audio/x-wav'].indexOf(mimeType.toLowerCase()) > -1;
24
20
  };
21
+
25
22
  /**
26
23
  * For backward compatilbity, we assume MP4/MOV is natively supported.
27
24
  * TODO: Improve detection of supported video formats by the browser.
@@ -31,18 +28,12 @@ var isAudioMimeTypeSupportedByBrowser = function isAudioMimeTypeSupportedByBrows
31
28
  * - https://product-fabric.atlassian.net/browse/EDM-634
32
29
  * - https://product-fabric.atlassian.net/browse/EDM-426
33
30
  */
34
-
35
-
36
31
  exports.isAudioMimeTypeSupportedByBrowser = isAudioMimeTypeSupportedByBrowser;
37
-
38
32
  var isVideoMimeTypeSupportedByBrowser = function isVideoMimeTypeSupportedByBrowser(mimeType) {
39
33
  return ['video/mp4', 'video/quicktime'].indexOf(mimeType.toLowerCase()) > -1;
40
34
  };
41
-
42
35
  exports.isVideoMimeTypeSupportedByBrowser = isVideoMimeTypeSupportedByBrowser;
43
-
44
36
  var isMimeTypeSupportedByBrowser = function isMimeTypeSupportedByBrowser(mimeType) {
45
37
  return isDocumentMimeTypeSupportedByBrowser(mimeType) || isImageMimeTypeSupportedByBrowser(mimeType) || isAudioMimeTypeSupportedByBrowser(mimeType) || isVideoMimeTypeSupportedByBrowser(mimeType);
46
38
  };
47
-
48
39
  exports.isMimeTypeSupportedByBrowser = isMimeTypeSupportedByBrowser;
@@ -4,54 +4,55 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isVideoMimeTypeSupportedByServer = exports.isUnknownMimeTypeSupportedByServer = exports.isMimeTypeSupportedByServer = exports.isImageMimeTypeSupportedByServer = exports.isDocumentMimeTypeSupportedByServer = exports.isAudioMimeTypeSupportedByServer = void 0;
7
-
8
7
  // Based on https://developer.atlassian.com/platform/media/learning/file-previews/
9
8
  var isImageMimeTypeSupportedByServer = function isImageMimeTypeSupportedByServer(mimeType) {
10
9
  return ['image/bmp', 'image/x-windows-bmp', 'application/dicom', 'image/gif', 'image/jpeg', 'image/jpg', 'image/jp_', 'application/jpg', 'application/x-jpg', 'image/png', 'application/png', 'application/x-png', 'application/vnd.adobe.photoshop', 'image/vnd.adobe.photoshop', 'image/photoshop', 'image/x-photoshop', 'image/psd', 'application/photoshop', 'application/psd', 'zz-application/zz-winassoc-psd', 'image/tiff', 'image/x-tif', 'image/x-tiff', 'application/tif', 'application/x-tif', 'application/tiff', 'application/x-tiff', 'image/svg+xml', 'image/heif', 'image/heif-sequence', 'image/heic', 'image/heic-sequence'].indexOf(mimeType.toLowerCase()) > -1;
11
10
  };
12
-
13
11
  exports.isImageMimeTypeSupportedByServer = isImageMimeTypeSupportedByServer;
14
-
15
12
  var isDocumentMimeTypeSupportedByServer = function isDocumentMimeTypeSupportedByServer(mimeType) {
16
- return [// Adobe PDF
17
- 'application/pdf', 'application/x-pdf', 'application/acrobat', 'applications/vnd.pdf', 'text/pdf', 'text/x-pdf', // Adobe Illustrator
18
- 'application/vnd.adobe.illustrator', // Microsoft Office
19
- 'application/vnd.ms-office', // Microsoft Word
20
- 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', 'application/vnd.ms-word.document.macroenabled.12', 'application/vnd.ms-word.template.macroenabled.12', // Microsoft Excel
21
- 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', 'application/vnd.ms-excel.sheet.macroenabled.12', 'application/vnd.ms-excel.template.macroenabled.12', 'application/vnd.ms-excel.addin.macroenabled.12', 'application/vnd.ms-excel.sheet.macroenabled', 'application/vnd.ms-excel.template.macroenabled', 'application/vnd.ms-excel.addin.macroenabled', // Microsoft Powerpoint
22
- 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.openxmlformats-officedocument.presentationml.template', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'application/vnd.ms-powerpoint.presentation.macroenabled.12', 'application/vnd.ms-powerpoint.template.macroenabled.12', 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', // OpenOffice
23
- 'application/vnd.sun.xml.writer', 'application/vnd.sun.xml.writer.template', // OpenDocument
24
- 'application/vnd.sun.xml.draw', 'application/vnd.sun.xml.draw.template', 'application/vnd.oasis.opendocument.graphics', 'application/vnd.oasis.opendocument.presentation', 'application/x-vnd.oasis.opendocument.presentation', 'application/vnd.sun.xml.calc', 'application/vnd.sun.xml.calc.template', 'application/vnd.oasis.opendocument.spreadsheet', 'application/x-vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.spreadsheet-template', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.text-template', 'application/vnd.oasis.opendocument.text-master', 'application/x-vnd.oasis.opendocument.text', 'application/x-vnd.oasis.opendocument.text-template', 'application/x-vnd.oasis.opendocument.text-master', // WordPerfect
25
- 'application/vnd.wordperfect', // Text files
26
- 'text/csv', 'text/x-diff', 'text/x-perl', 'text/x-python', 'text/x-ruby', 'text/rtf', 'text/richtext', 'text/plain', 'application/txt', // Rich text
27
- 'application/rtf', 'application/x-rtf', // PostScript
13
+ return [
14
+ // Adobe PDF
15
+ 'application/pdf', 'application/x-pdf', 'application/acrobat', 'applications/vnd.pdf', 'text/pdf', 'text/x-pdf',
16
+ // Adobe Illustrator
17
+ 'application/vnd.adobe.illustrator',
18
+ // Microsoft Office
19
+ 'application/vnd.ms-office',
20
+ // Microsoft Word
21
+ 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', 'application/vnd.ms-word.document.macroenabled.12', 'application/vnd.ms-word.template.macroenabled.12',
22
+ // Microsoft Excel
23
+ 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', 'application/vnd.ms-excel.sheet.macroenabled.12', 'application/vnd.ms-excel.template.macroenabled.12', 'application/vnd.ms-excel.addin.macroenabled.12', 'application/vnd.ms-excel.sheet.macroenabled', 'application/vnd.ms-excel.template.macroenabled', 'application/vnd.ms-excel.addin.macroenabled',
24
+ // Microsoft Powerpoint
25
+ 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.openxmlformats-officedocument.presentationml.template', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'application/vnd.ms-powerpoint.presentation.macroenabled.12', 'application/vnd.ms-powerpoint.template.macroenabled.12', 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',
26
+ // OpenOffice
27
+ 'application/vnd.sun.xml.writer', 'application/vnd.sun.xml.writer.template',
28
+ // OpenDocument
29
+ 'application/vnd.sun.xml.draw', 'application/vnd.sun.xml.draw.template', 'application/vnd.oasis.opendocument.graphics', 'application/vnd.oasis.opendocument.presentation', 'application/x-vnd.oasis.opendocument.presentation', 'application/vnd.sun.xml.calc', 'application/vnd.sun.xml.calc.template', 'application/vnd.oasis.opendocument.spreadsheet', 'application/x-vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.spreadsheet-template', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.text-template', 'application/vnd.oasis.opendocument.text-master', 'application/x-vnd.oasis.opendocument.text', 'application/x-vnd.oasis.opendocument.text-template', 'application/x-vnd.oasis.opendocument.text-master',
30
+ // WordPerfect
31
+ 'application/vnd.wordperfect',
32
+ // Text files
33
+ 'text/csv', 'text/x-diff', 'text/x-perl', 'text/x-python', 'text/x-ruby', 'text/rtf', 'text/richtext', 'text/plain', 'application/txt',
34
+ // Rich text
35
+ 'application/rtf', 'application/x-rtf',
36
+ // PostScript
28
37
  'application/postscript'].indexOf(mimeType.toLowerCase()) > -1;
29
38
  };
30
-
31
39
  exports.isDocumentMimeTypeSupportedByServer = isDocumentMimeTypeSupportedByServer;
32
-
33
40
  var isAudioMimeTypeSupportedByServer = function isAudioMimeTypeSupportedByServer(mimeType) {
34
41
  return ['audio/aac', 'audio/x-hx-aac-adts', 'audio/vnd.dolby.dd-raw', 'audio/aiff', 'audio/x-aiff', 'audio/x-monkeys-audio', 'audio/x-ape', 'audio/basic', 'audio/flac', 'audio/mp4', 'audio/midi', 'audio/x-matroska', 'audio/x-mod', 'audio/mpeg', 'audio/ogg', 'audio/x-ogg', 'audio/x-pn-realaudio', 'audio/wav', 'audio/x-wav', 'audio/x-ms-wma'].indexOf(mimeType.toLowerCase()) > -1;
35
42
  };
36
-
37
43
  exports.isAudioMimeTypeSupportedByServer = isAudioMimeTypeSupportedByServer;
38
-
39
44
  var isVideoMimeTypeSupportedByServer = function isVideoMimeTypeSupportedByServer(mimeType) {
40
45
  return ['video/3gpp', 'video/3gpp2', 'video/x-ms-asf', 'video/avi', 'video/msvideo', 'video/x-msvideo', 'video/x-dv', 'video/x-flv', 'video/m2ts', 'video/x-m4v', 'video/x-matroska', 'video/quicktime', 'video/mp4', 'video/mpeg', 'video/ogg', 'video/x-ogg', 'video/webm', 'video/x-ms-wmv'].indexOf(mimeType.toLowerCase()) > -1;
41
- }; // BMPT-620: The backend momentarily returns this mimeType for cloud files imported via dt-api-mediapicker
42
- // Once these cloud files are processed they are receiving a more relevant mimeType
43
-
46
+ };
44
47
 
48
+ // BMPT-620: The backend momentarily returns this mimeType for cloud files imported via dt-api-mediapicker
49
+ // Once these cloud files are processed they are receiving a more relevant mimeType
45
50
  exports.isVideoMimeTypeSupportedByServer = isVideoMimeTypeSupportedByServer;
46
-
47
51
  var isUnknownMimeTypeSupportedByServer = function isUnknownMimeTypeSupportedByServer(mimeType) {
48
52
  return ['binary/octet-stream'].indexOf(mimeType.toLowerCase()) > -1;
49
53
  };
50
-
51
54
  exports.isUnknownMimeTypeSupportedByServer = isUnknownMimeTypeSupportedByServer;
52
-
53
55
  var isMimeTypeSupportedByServer = function isMimeTypeSupportedByServer(mimeType) {
54
56
  return isImageMimeTypeSupportedByServer(mimeType) || isDocumentMimeTypeSupportedByServer(mimeType) || isAudioMimeTypeSupportedByServer(mimeType) || isVideoMimeTypeSupportedByServer(mimeType) || isUnknownMimeTypeSupportedByServer(mimeType);
55
57
  };
56
-
57
58
  exports.isMimeTypeSupportedByServer = isMimeTypeSupportedByServer;