@atlaskit/media-common 2.13.0 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlaskit/media-common
2
2
 
3
+ ## 2.14.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`bfde909c9b4`](https://bitbucket.org/atlassian/atlassian-frontend/commits/bfde909c9b4) - Add new feature flag mediaUploadApiV2
8
+ - [`8d6064cece4`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8d6064cece4) - Add missing values for the launch darkly feature flags name
9
+
3
10
  ## 2.13.0
4
11
 
5
12
  ### Minor Changes
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.filterFeatureFlagNames = exports.filterFeatureFlagKeysAllProducts = exports.defaultMediaFeatureFlags = exports.areEqualFeatureFlags = void 0;
9
9
  exports.getMediaFeatureFlag = getMediaFeatureFlag;
10
- exports.useMemoizeFeatureFlags = exports.mediaFeatureFlagsProductToLaunchDarklyMap = exports.mapAndFilterFeatureFlagNames = void 0;
10
+ exports.useMemoizeFeatureFlags = exports.mapAndFilterFeatureFlagNames = void 0;
11
11
 
12
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
13
 
@@ -15,6 +15,10 @@ var _react = require("react");
15
15
 
16
16
  var _mediaFeatureFlagLocal = require("../mediaFeatureFlag-local");
17
17
 
18
+ var _types = require("./types");
19
+
20
+ var _productKeys = require("./productKeys");
21
+
18
22
  var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
19
23
  if (!ffA && !ffB) {
20
24
  return true;
@@ -29,8 +33,9 @@ var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
29
33
  captions: ffA.captions === ffB.captions,
30
34
  mediaInline: ffA.mediaInline === ffB.mediaInline,
31
35
  folderUploads: ffA.folderUploads === ffB.folderUploads,
36
+ observedWidth: ffA.observedWidth === ffB.observedWidth,
32
37
  timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo,
33
- observedWidth: ffA.observedWidth === ffB.observedWidth
38
+ mediaUploadApiV2: ffA.mediaUploadApiV2 === ffB.mediaUploadApiV2
34
39
  };
35
40
  return Object.values(results).every(function (result) {
36
41
  return result;
@@ -65,7 +70,7 @@ exports.filterFeatureFlagNames = filterFeatureFlagNames;
65
70
  var mapAndFilterFeatureFlagNames = function mapAndFilterFeatureFlagNames(flags, product) {
66
71
  var mediaFeatureFlags = filterFeatureFlagNames(flags);
67
72
  return mediaFeatureFlags.map(function (key) {
68
- return mediaFeatureFlagsProductToLaunchDarklyMap[product][key];
73
+ return (0, _productKeys.getProductKeys)()[product][key];
69
74
  });
70
75
  }; // TODO(MEX-1547): This is temporary solution to just return the launch darkly feature flags for all products.
71
76
 
@@ -79,39 +84,19 @@ exports.mapAndFilterFeatureFlagNames = mapAndFilterFeatureFlagNames;
79
84
 
80
85
  var filterFeatureFlagKeysAllProducts = function filterFeatureFlagKeysAllProducts(flags) {
81
86
  var filteredFlags = filterFeatureFlagNames(flags);
82
- var supportedProducts = Object.keys(mediaFeatureFlagsProductToLaunchDarklyMap);
83
87
  var ldFeatureFlags = [];
84
88
  filteredFlags.forEach(function (flag) {
85
- return supportedProducts.forEach(function (product) {
86
- return ldFeatureFlags.push(mediaFeatureFlagsProductToLaunchDarklyMap[product][flag]);
89
+ return _types.supportedProducts.forEach(function (product) {
90
+ return ldFeatureFlags.push((0, _productKeys.getProductKeys)()[product][flag]);
87
91
  });
88
92
  });
89
93
  return ldFeatureFlags.filter(function (flag) {
90
94
  return flag !== '';
91
95
  });
92
- };
93
-
94
- exports.filterFeatureFlagKeysAllProducts = filterFeatureFlagKeysAllProducts;
95
- var mediaFeatureFlagsProductToLaunchDarklyMap = {
96
- confluence: {
97
- newCardExperience: 'confluence.media.cards.new.experience',
98
- captions: 'confluence.frontend.fabric.editor.media.captions',
99
- mediaInline: 'confluence.frontend.fabric.editor.media.inline',
100
- folderUploads: 'confluence.media.picker.folder.uploads',
101
- timestampOnVideo: '',
102
- observedWidth: ''
103
- },
104
- jira: {
105
- newCardExperience: 'issue.details.media-cards-new-experience',
106
- captions: 'issue.details.editor.media.captions',
107
- mediaInline: '',
108
- folderUploads: '',
109
- timestampOnVideo: '',
110
- observedWidth: ''
111
- }
112
96
  }; // default values defined here, not necessary for components to know directly as they should use the function below
113
97
 
114
- exports.mediaFeatureFlagsProductToLaunchDarklyMap = mediaFeatureFlagsProductToLaunchDarklyMap;
98
+
99
+ exports.filterFeatureFlagKeysAllProducts = filterFeatureFlagKeysAllProducts;
115
100
  var defaultMediaFeatureFlags = {
116
101
  newCardExperience: false,
117
102
  captions: false,
@@ -119,8 +104,9 @@ var defaultMediaFeatureFlags = {
119
104
  // We can't yet switch this feature on
120
105
  // TODO https://product-fabric.atlassian.net/browse/MEX-104
121
106
  folderUploads: false,
107
+ observedWidth: false,
122
108
  timestampOnVideo: false,
123
- observedWidth: false
109
+ mediaUploadApiV2: false
124
110
  };
125
111
  /**
126
112
  * Public accessor from components to fallback to defaults if flags not passed,
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getProductKeys = void 0;
7
+ var productKeys = {
8
+ confluence: {
9
+ newCardExperience: 'confluence.frontend.media.cards.new.experience',
10
+ captions: 'confluence.frontend.fabric.editor.media.captions',
11
+ mediaInline: 'confluence.frontend.fabric.editor.media.inline',
12
+ folderUploads: 'confluence.frontend.media.picker.folder.uploads',
13
+ //TODO fill the value after https://product-fabric.atlassian.net/browse/MEX-1593
14
+ observedWidth: '',
15
+ // TODO https://product-fabric.atlassian.net/browse/MEX-1620
16
+ timestampOnVideo: '',
17
+ mediaUploadApiV2: 'confluence.enable.media.upload.api.v2'
18
+ },
19
+ jira: {
20
+ newCardExperience: 'issue.details.media-cards-new-experience',
21
+ captions: 'issue.details.editor.media.captions',
22
+ // Manged by Linking Platform. No Rollout plan found for Jira
23
+ mediaInline: '',
24
+ folderUploads: 'issue.details.media-picker-folder-upload',
25
+ //TODO fill the value after https://product-fabric.atlassian.net/browse/MEX-1593
26
+ observedWidth: '',
27
+ // TODO https://product-fabric.atlassian.net/browse/MEX-1620
28
+ timestampOnVideo: '',
29
+ mediaUploadApiV2: 'issue.details.enable-media-upload-api-version-2'
30
+ }
31
+ };
32
+
33
+ var getProductKeys = function getProductKeys() {
34
+ return productKeys;
35
+ };
36
+
37
+ exports.getProductKeys = getProductKeys;
@@ -2,4 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+ exports.supportedProducts = void 0;
7
+ // Media feature flags - type and defaults defined here in one source of truth
8
+ // With this type we ensure the object will contain all the flags
9
+ var supportedProducts = ['confluence', 'jira'];
10
+ exports.supportedProducts = supportedProducts;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-common",
3
- "version": "2.13.0",
3
+ "version": "2.14.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,5 +1,7 @@
1
1
  import { useRef } from 'react';
2
2
  import { getLocalMediaFeatureFlag } from '../mediaFeatureFlag-local';
3
+ import { supportedProducts } from './types';
4
+ import { getProductKeys } from './productKeys';
3
5
  export const areEqualFeatureFlags = (ffA, ffB) => {
4
6
  if (!ffA && !ffB) {
5
7
  return true;
@@ -14,8 +16,9 @@ export const areEqualFeatureFlags = (ffA, ffB) => {
14
16
  captions: ffA.captions === ffB.captions,
15
17
  mediaInline: ffA.mediaInline === ffB.mediaInline,
16
18
  folderUploads: ffA.folderUploads === ffB.folderUploads,
19
+ observedWidth: ffA.observedWidth === ffB.observedWidth,
17
20
  timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo,
18
- observedWidth: ffA.observedWidth === ffB.observedWidth
21
+ mediaUploadApiV2: ffA.mediaUploadApiV2 === ffB.mediaUploadApiV2
19
22
  };
20
23
  return Object.values(results).every(result => result);
21
24
  };
@@ -30,7 +33,7 @@ export const filterFeatureFlagNames = flags => {
30
33
 
31
34
  export const mapAndFilterFeatureFlagNames = (flags, product) => {
32
35
  const mediaFeatureFlags = filterFeatureFlagNames(flags);
33
- return mediaFeatureFlags.map(key => mediaFeatureFlagsProductToLaunchDarklyMap[product][key]);
36
+ return mediaFeatureFlags.map(key => getProductKeys()[product][key]);
34
37
  }; // TODO(MEX-1547): This is temporary solution to just return the launch darkly feature flags for all products.
35
38
 
36
39
  /**
@@ -40,28 +43,9 @@ export const mapAndFilterFeatureFlagNames = (flags, product) => {
40
43
 
41
44
  export const filterFeatureFlagKeysAllProducts = flags => {
42
45
  const filteredFlags = filterFeatureFlagNames(flags);
43
- const supportedProducts = Object.keys(mediaFeatureFlagsProductToLaunchDarklyMap);
44
46
  const ldFeatureFlags = [];
45
- filteredFlags.forEach(flag => supportedProducts.forEach(product => ldFeatureFlags.push(mediaFeatureFlagsProductToLaunchDarklyMap[product][flag])));
47
+ filteredFlags.forEach(flag => supportedProducts.forEach(product => ldFeatureFlags.push(getProductKeys()[product][flag])));
46
48
  return ldFeatureFlags.filter(flag => flag !== '');
47
- };
48
- export const mediaFeatureFlagsProductToLaunchDarklyMap = {
49
- confluence: {
50
- newCardExperience: 'confluence.media.cards.new.experience',
51
- captions: 'confluence.frontend.fabric.editor.media.captions',
52
- mediaInline: 'confluence.frontend.fabric.editor.media.inline',
53
- folderUploads: 'confluence.media.picker.folder.uploads',
54
- timestampOnVideo: '',
55
- observedWidth: ''
56
- },
57
- jira: {
58
- newCardExperience: 'issue.details.media-cards-new-experience',
59
- captions: 'issue.details.editor.media.captions',
60
- mediaInline: '',
61
- folderUploads: '',
62
- timestampOnVideo: '',
63
- observedWidth: ''
64
- }
65
49
  }; // default values defined here, not necessary for components to know directly as they should use the function below
66
50
 
67
51
  export const defaultMediaFeatureFlags = {
@@ -71,8 +55,9 @@ export const defaultMediaFeatureFlags = {
71
55
  // We can't yet switch this feature on
72
56
  // TODO https://product-fabric.atlassian.net/browse/MEX-104
73
57
  folderUploads: false,
58
+ observedWidth: false,
74
59
  timestampOnVideo: false,
75
- observedWidth: false
60
+ mediaUploadApiV2: false
76
61
  };
77
62
  /**
78
63
  * Public accessor from components to fallback to defaults if flags not passed,
@@ -0,0 +1,26 @@
1
+ const productKeys = {
2
+ confluence: {
3
+ newCardExperience: 'confluence.frontend.media.cards.new.experience',
4
+ captions: 'confluence.frontend.fabric.editor.media.captions',
5
+ mediaInline: 'confluence.frontend.fabric.editor.media.inline',
6
+ folderUploads: 'confluence.frontend.media.picker.folder.uploads',
7
+ //TODO fill the value after https://product-fabric.atlassian.net/browse/MEX-1593
8
+ observedWidth: '',
9
+ // TODO https://product-fabric.atlassian.net/browse/MEX-1620
10
+ timestampOnVideo: '',
11
+ mediaUploadApiV2: 'confluence.enable.media.upload.api.v2'
12
+ },
13
+ jira: {
14
+ newCardExperience: 'issue.details.media-cards-new-experience',
15
+ captions: 'issue.details.editor.media.captions',
16
+ // Manged by Linking Platform. No Rollout plan found for Jira
17
+ mediaInline: '',
18
+ folderUploads: 'issue.details.media-picker-folder-upload',
19
+ //TODO fill the value after https://product-fabric.atlassian.net/browse/MEX-1593
20
+ observedWidth: '',
21
+ // TODO https://product-fabric.atlassian.net/browse/MEX-1620
22
+ timestampOnVideo: '',
23
+ mediaUploadApiV2: 'issue.details.enable-media-upload-api-version-2'
24
+ }
25
+ };
26
+ export const getProductKeys = () => productKeys;
@@ -1 +1,3 @@
1
- export {};
1
+ // Media feature flags - type and defaults defined here in one source of truth
2
+ // With this type we ensure the object will contain all the flags
3
+ export const supportedProducts = ['confluence', 'jira'];
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-common",
3
- "version": "2.13.0",
3
+ "version": "2.14.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,6 +1,8 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import { useRef } from 'react';
3
3
  import { getLocalMediaFeatureFlag } from '../mediaFeatureFlag-local';
4
+ import { supportedProducts } from './types';
5
+ import { getProductKeys } from './productKeys';
4
6
  export var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
5
7
  if (!ffA && !ffB) {
6
8
  return true;
@@ -15,8 +17,9 @@ export var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
15
17
  captions: ffA.captions === ffB.captions,
16
18
  mediaInline: ffA.mediaInline === ffB.mediaInline,
17
19
  folderUploads: ffA.folderUploads === ffB.folderUploads,
20
+ observedWidth: ffA.observedWidth === ffB.observedWidth,
18
21
  timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo,
19
- observedWidth: ffA.observedWidth === ffB.observedWidth
22
+ mediaUploadApiV2: ffA.mediaUploadApiV2 === ffB.mediaUploadApiV2
20
23
  };
21
24
  return Object.values(results).every(function (result) {
22
25
  return result;
@@ -45,7 +48,7 @@ export var filterFeatureFlagNames = function filterFeatureFlagNames(flags) {
45
48
  export var mapAndFilterFeatureFlagNames = function mapAndFilterFeatureFlagNames(flags, product) {
46
49
  var mediaFeatureFlags = filterFeatureFlagNames(flags);
47
50
  return mediaFeatureFlags.map(function (key) {
48
- return mediaFeatureFlagsProductToLaunchDarklyMap[product][key];
51
+ return getProductKeys()[product][key];
49
52
  });
50
53
  }; // TODO(MEX-1547): This is temporary solution to just return the launch darkly feature flags for all products.
51
54
 
@@ -56,34 +59,15 @@ export var mapAndFilterFeatureFlagNames = function mapAndFilterFeatureFlagNames(
56
59
 
57
60
  export var filterFeatureFlagKeysAllProducts = function filterFeatureFlagKeysAllProducts(flags) {
58
61
  var filteredFlags = filterFeatureFlagNames(flags);
59
- var supportedProducts = Object.keys(mediaFeatureFlagsProductToLaunchDarklyMap);
60
62
  var ldFeatureFlags = [];
61
63
  filteredFlags.forEach(function (flag) {
62
64
  return supportedProducts.forEach(function (product) {
63
- return ldFeatureFlags.push(mediaFeatureFlagsProductToLaunchDarklyMap[product][flag]);
65
+ return ldFeatureFlags.push(getProductKeys()[product][flag]);
64
66
  });
65
67
  });
66
68
  return ldFeatureFlags.filter(function (flag) {
67
69
  return flag !== '';
68
70
  });
69
- };
70
- export var mediaFeatureFlagsProductToLaunchDarklyMap = {
71
- confluence: {
72
- newCardExperience: 'confluence.media.cards.new.experience',
73
- captions: 'confluence.frontend.fabric.editor.media.captions',
74
- mediaInline: 'confluence.frontend.fabric.editor.media.inline',
75
- folderUploads: 'confluence.media.picker.folder.uploads',
76
- timestampOnVideo: '',
77
- observedWidth: ''
78
- },
79
- jira: {
80
- newCardExperience: 'issue.details.media-cards-new-experience',
81
- captions: 'issue.details.editor.media.captions',
82
- mediaInline: '',
83
- folderUploads: '',
84
- timestampOnVideo: '',
85
- observedWidth: ''
86
- }
87
71
  }; // default values defined here, not necessary for components to know directly as they should use the function below
88
72
 
89
73
  export var defaultMediaFeatureFlags = {
@@ -93,8 +77,9 @@ export var defaultMediaFeatureFlags = {
93
77
  // We can't yet switch this feature on
94
78
  // TODO https://product-fabric.atlassian.net/browse/MEX-104
95
79
  folderUploads: false,
80
+ observedWidth: false,
96
81
  timestampOnVideo: false,
97
- observedWidth: false
82
+ mediaUploadApiV2: false
98
83
  };
99
84
  /**
100
85
  * Public accessor from components to fallback to defaults if flags not passed,
@@ -0,0 +1,28 @@
1
+ var productKeys = {
2
+ confluence: {
3
+ newCardExperience: 'confluence.frontend.media.cards.new.experience',
4
+ captions: 'confluence.frontend.fabric.editor.media.captions',
5
+ mediaInline: 'confluence.frontend.fabric.editor.media.inline',
6
+ folderUploads: 'confluence.frontend.media.picker.folder.uploads',
7
+ //TODO fill the value after https://product-fabric.atlassian.net/browse/MEX-1593
8
+ observedWidth: '',
9
+ // TODO https://product-fabric.atlassian.net/browse/MEX-1620
10
+ timestampOnVideo: '',
11
+ mediaUploadApiV2: 'confluence.enable.media.upload.api.v2'
12
+ },
13
+ jira: {
14
+ newCardExperience: 'issue.details.media-cards-new-experience',
15
+ captions: 'issue.details.editor.media.captions',
16
+ // Manged by Linking Platform. No Rollout plan found for Jira
17
+ mediaInline: '',
18
+ folderUploads: 'issue.details.media-picker-folder-upload',
19
+ //TODO fill the value after https://product-fabric.atlassian.net/browse/MEX-1593
20
+ observedWidth: '',
21
+ // TODO https://product-fabric.atlassian.net/browse/MEX-1620
22
+ timestampOnVideo: '',
23
+ mediaUploadApiV2: 'issue.details.enable-media-upload-api-version-2'
24
+ }
25
+ };
26
+ export var getProductKeys = function getProductKeys() {
27
+ return productKeys;
28
+ };
@@ -1 +1,3 @@
1
- export {};
1
+ // Media feature flags - type and defaults defined here in one source of truth
2
+ // With this type we ensure the object will contain all the flags
3
+ export var supportedProducts = ['confluence', 'jira'];
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-common",
3
- "version": "2.13.0",
3
+ "version": "2.14.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,4 +1,4 @@
1
- import { RequiredMediaFeatureFlags, MediaFeatureFlags, MediaFeatureFlagsMap, SupportedProduct } from './types';
1
+ import { RequiredMediaFeatureFlags, MediaFeatureFlags, SupportedProduct } from './types';
2
2
  export declare const areEqualFeatureFlags: (ffA?: MediaFeatureFlags | undefined, ffB?: MediaFeatureFlags | undefined) => boolean;
3
3
  export declare const filterFeatureFlagNames: (flags: RequiredMediaFeatureFlags) => Array<keyof MediaFeatureFlags>;
4
4
  /**
@@ -11,7 +11,6 @@ export declare const mapAndFilterFeatureFlagNames: (flags: RequiredMediaFeatureF
11
11
  * Returns the Launch Darkly Keys from all products for each of the flags set as true in the input record.
12
12
  * */
13
13
  export declare const filterFeatureFlagKeysAllProducts: (flags: RequiredMediaFeatureFlags) => Array<string>;
14
- export declare const mediaFeatureFlagsProductToLaunchDarklyMap: Record<SupportedProduct, MediaFeatureFlagsMap>;
15
14
  export declare const defaultMediaFeatureFlags: Required<MediaFeatureFlags>;
16
15
  /**
17
16
  * Public accessor from components to fallback to defaults if flags not passed,
@@ -0,0 +1,2 @@
1
+ import { ProductKeys } from './types';
2
+ export declare const getProductKeys: () => ProductKeys;
@@ -3,12 +3,15 @@ export interface MediaFeatureFlags {
3
3
  captions?: boolean;
4
4
  mediaInline?: boolean;
5
5
  folderUploads?: boolean;
6
- timestampOnVideo?: boolean;
7
6
  observedWidth?: boolean;
7
+ timestampOnVideo?: boolean;
8
+ mediaUploadApiV2?: boolean;
8
9
  }
9
10
  export interface WithMediaFeatureFlags {
10
11
  featureFlags?: MediaFeatureFlags;
11
12
  }
12
13
  export declare type RequiredMediaFeatureFlags = Record<keyof Required<MediaFeatureFlags>, boolean>;
13
14
  export declare type MediaFeatureFlagsMap = Record<keyof Required<MediaFeatureFlags>, string>;
14
- export declare type SupportedProduct = 'confluence' | 'jira';
15
+ export declare const supportedProducts: readonly ["confluence", "jira"];
16
+ export declare type SupportedProduct = typeof supportedProducts[number];
17
+ export declare type ProductKeys = Record<SupportedProduct, MediaFeatureFlagsMap>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/media-common",
3
- "version": "2.13.0",
3
+ "version": "2.14.0",
4
4
  "description": "Includes common utilities used by other media packages",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"