@atlaskit/media-client 27.3.4 → 27.4.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 +8 -0
- package/dist/cjs/client/file-fetcher/index.js +1 -1
- package/dist/cjs/client/media-store/MediaStore.js +13 -7
- package/dist/es2019/client/file-fetcher/index.js +2 -2
- package/dist/es2019/client/media-store/MediaStore.js +10 -3
- package/dist/esm/client/file-fetcher/index.js +2 -2
- package/dist/esm/client/media-store/MediaStore.js +13 -6
- package/dist/types/client/media-store/types.d.ts +4 -1
- package/dist/types-ts4.5/client/media-store/types.d.ts +4 -1
- package/example-helpers/stylesWrapper.tsx +4 -1
- package/package.json +8 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @atlaskit/media-client
|
|
2
2
|
|
|
3
|
+
## 27.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#130787](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/130787)
|
|
8
|
+
[`64a680780dc57`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/64a680780dc57) -
|
|
9
|
+
Add performance observer metrics for Media Card to assist investigation into hot-110955
|
|
10
|
+
|
|
3
11
|
## 27.3.4
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
|
@@ -154,7 +154,7 @@ var FileFetcherImpl = exports.FileFetcherImpl = /*#__PURE__*/function () {
|
|
|
154
154
|
if (content instanceof Blob) {
|
|
155
155
|
size = content.size;
|
|
156
156
|
mimeType = content.type;
|
|
157
|
-
if ((0, _mediaTypeUtils.isMimeTypeSupportedByBrowser)(content.type) || (0, _platformFeatureFlags.
|
|
157
|
+
if ((0, _mediaTypeUtils.isMimeTypeSupportedByBrowser)(content.type) || (0, _platformFeatureFlags.fg)('platform.media-svg-rendering')) {
|
|
158
158
|
preview = {
|
|
159
159
|
value: content,
|
|
160
160
|
origin: 'local'
|
|
@@ -10,13 +10,13 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
10
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
var _mediaCore = require("@atlaskit/media-core");
|
|
13
14
|
var _mediaCommon = require("@atlaskit/media-common");
|
|
14
15
|
var _constants = require("../../constants");
|
|
15
16
|
var _artifacts = require("../../models/artifacts");
|
|
16
17
|
var _request3 = require("../../utils/request");
|
|
17
18
|
var _helpers = require("../../utils/request/helpers");
|
|
18
19
|
var _resolveAuth = require("./resolveAuth");
|
|
19
|
-
var _mediaCore = require("@atlaskit/media-core");
|
|
20
20
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
21
21
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
22
22
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -441,7 +441,8 @@ var MediaStore = exports.MediaStore = /*#__PURE__*/function () {
|
|
|
441
441
|
},
|
|
442
442
|
params: extendImageParams(params, fetchMaxRes),
|
|
443
443
|
headers: headers,
|
|
444
|
-
traceContext: traceContext
|
|
444
|
+
traceContext: traceContext,
|
|
445
|
+
addMediaClientParam: (0, _platformFeatureFlags.fg)('platform.media-card-performance-observer_lgc7b') && true
|
|
445
446
|
});
|
|
446
447
|
return _context8.abrupt("return", this.request("/file/".concat(id, "/").concat(imageEndpoint), options, controller).then((0, _helpers.createMapResponseToBlob)(metadata)));
|
|
447
448
|
case 7:
|
|
@@ -595,7 +596,9 @@ var MediaStore = exports.MediaStore = /*#__PURE__*/function () {
|
|
|
595
596
|
body,
|
|
596
597
|
clientOptions,
|
|
597
598
|
traceContext,
|
|
599
|
+
addMediaClientParam,
|
|
598
600
|
auth,
|
|
601
|
+
clientId,
|
|
599
602
|
extendedTraceContext,
|
|
600
603
|
response,
|
|
601
604
|
_args12 = arguments;
|
|
@@ -608,31 +611,34 @@ var MediaStore = exports.MediaStore = /*#__PURE__*/function () {
|
|
|
608
611
|
authContext: {}
|
|
609
612
|
};
|
|
610
613
|
controller = _args12.length > 2 ? _args12[2] : undefined;
|
|
611
|
-
method = options.method, endpoint = options.endpoint, authContext = options.authContext, params = options.params, headers = options.headers, body = options.body, clientOptions = options.clientOptions, traceContext = options.traceContext;
|
|
614
|
+
method = options.method, endpoint = options.endpoint, authContext = options.authContext, params = options.params, headers = options.headers, body = options.body, clientOptions = options.clientOptions, traceContext = options.traceContext, addMediaClientParam = options.addMediaClientParam;
|
|
612
615
|
_context12.next = 5;
|
|
613
616
|
return this.resolveAuth(authContext);
|
|
614
617
|
case 5:
|
|
615
618
|
auth = _context12.sent;
|
|
619
|
+
clientId = (0, _mediaCore.isClientBasedAuth)(auth) ? auth.clientId : undefined;
|
|
616
620
|
extendedTraceContext = traceContext ? _objectSpread(_objectSpread({}, traceContext), {}, {
|
|
617
621
|
spanId: (traceContext === null || traceContext === void 0 ? void 0 : traceContext.spanId) || (0, _mediaCommon.getRandomHex)(8)
|
|
618
622
|
}) : undefined;
|
|
619
|
-
_context12.next =
|
|
623
|
+
_context12.next = 10;
|
|
620
624
|
return (0, _request3.request)("".concat(auth.baseUrl).concat(path), {
|
|
621
625
|
method: method,
|
|
622
626
|
endpoint: endpoint,
|
|
623
627
|
auth: auth,
|
|
624
|
-
params: params,
|
|
628
|
+
params: addMediaClientParam ? _objectSpread(_objectSpread({}, params), {}, {
|
|
629
|
+
clientId: clientId
|
|
630
|
+
}) : params,
|
|
625
631
|
headers: headers,
|
|
626
632
|
body: body,
|
|
627
633
|
clientOptions: clientOptions,
|
|
628
634
|
traceContext: extendedTraceContext
|
|
629
635
|
}, controller);
|
|
630
|
-
case
|
|
636
|
+
case 10:
|
|
631
637
|
response = _context12.sent;
|
|
632
638
|
setKeyValueInSessionStorage(MEDIA_API_REGION, response.headers.get('x-media-region'));
|
|
633
639
|
setKeyValueInSessionStorage(MEDIA_API_ENVIRONMENT, response.headers.get('x-media-env'));
|
|
634
640
|
return _context12.abrupt("return", response);
|
|
635
|
-
case
|
|
641
|
+
case 14:
|
|
636
642
|
case "end":
|
|
637
643
|
return _context12.stop();
|
|
638
644
|
}
|
|
@@ -27,7 +27,7 @@ import { shouldFetchRemoteFileStates } from '../../utils/shouldFetchRemoteFileSt
|
|
|
27
27
|
import { PollingFunction } from '../../utils/polling';
|
|
28
28
|
import { isEmptyFile } from '../../utils/detectEmptyFile';
|
|
29
29
|
import { mediaStore } from '@atlaskit/media-state';
|
|
30
|
-
import {
|
|
30
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
31
31
|
export { isFileFetcherError, FileFetcherError } from './error';
|
|
32
32
|
export class FileFetcherImpl {
|
|
33
33
|
constructor(mediaApi, store = mediaStore) {
|
|
@@ -108,7 +108,7 @@ export class FileFetcherImpl {
|
|
|
108
108
|
if (content instanceof Blob) {
|
|
109
109
|
size = content.size;
|
|
110
110
|
mimeType = content.type;
|
|
111
|
-
if (isMimeTypeSupportedByBrowser(content.type) ||
|
|
111
|
+
if (isMimeTypeSupportedByBrowser(content.type) || fg('platform.media-svg-rendering')) {
|
|
112
112
|
preview = {
|
|
113
113
|
value: content,
|
|
114
114
|
origin: 'local'
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import { isClientBasedAuth } from '@atlaskit/media-core';
|
|
2
3
|
import { getRandomHex } from '@atlaskit/media-common';
|
|
3
4
|
import { FILE_CACHE_MAX_AGE, MAX_RESOLUTION } from '../../constants';
|
|
4
5
|
import { getArtifactUrl } from '../../models/artifacts';
|
|
@@ -259,7 +260,8 @@ export class MediaStore {
|
|
|
259
260
|
},
|
|
260
261
|
params: extendImageParams(params, fetchMaxRes),
|
|
261
262
|
headers,
|
|
262
|
-
traceContext
|
|
263
|
+
traceContext,
|
|
264
|
+
addMediaClientParam: fg('platform.media-card-performance-observer_lgc7b') && true
|
|
263
265
|
};
|
|
264
266
|
return this.request(`/file/${id}/${imageEndpoint}`, options, controller).then(createMapResponseToBlob(metadata));
|
|
265
267
|
}
|
|
@@ -350,9 +352,11 @@ export class MediaStore {
|
|
|
350
352
|
headers,
|
|
351
353
|
body,
|
|
352
354
|
clientOptions,
|
|
353
|
-
traceContext
|
|
355
|
+
traceContext,
|
|
356
|
+
addMediaClientParam
|
|
354
357
|
} = options;
|
|
355
358
|
const auth = await this.resolveAuth(authContext);
|
|
359
|
+
const clientId = isClientBasedAuth(auth) ? auth.clientId : undefined;
|
|
356
360
|
const extendedTraceContext = traceContext ? {
|
|
357
361
|
...traceContext,
|
|
358
362
|
spanId: (traceContext === null || traceContext === void 0 ? void 0 : traceContext.spanId) || getRandomHex(8)
|
|
@@ -361,7 +365,10 @@ export class MediaStore {
|
|
|
361
365
|
method,
|
|
362
366
|
endpoint,
|
|
363
367
|
auth,
|
|
364
|
-
params
|
|
368
|
+
params: addMediaClientParam ? {
|
|
369
|
+
...params,
|
|
370
|
+
clientId
|
|
371
|
+
} : params,
|
|
365
372
|
headers,
|
|
366
373
|
body,
|
|
367
374
|
clientOptions,
|
|
@@ -33,7 +33,7 @@ import { shouldFetchRemoteFileStates } from '../../utils/shouldFetchRemoteFileSt
|
|
|
33
33
|
import { PollingFunction } from '../../utils/polling';
|
|
34
34
|
import { isEmptyFile } from '../../utils/detectEmptyFile';
|
|
35
35
|
import { mediaStore } from '@atlaskit/media-state';
|
|
36
|
-
import {
|
|
36
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
37
37
|
export { isFileFetcherError, FileFetcherError } from './error';
|
|
38
38
|
export var FileFetcherImpl = /*#__PURE__*/function () {
|
|
39
39
|
function FileFetcherImpl(mediaApi) {
|
|
@@ -137,7 +137,7 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
|
|
|
137
137
|
if (content instanceof Blob) {
|
|
138
138
|
size = content.size;
|
|
139
139
|
mimeType = content.type;
|
|
140
|
-
if (isMimeTypeSupportedByBrowser(content.type) ||
|
|
140
|
+
if (isMimeTypeSupportedByBrowser(content.type) || fg('platform.media-svg-rendering')) {
|
|
141
141
|
preview = {
|
|
142
142
|
value: content,
|
|
143
143
|
origin: 'local'
|
|
@@ -5,6 +5,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
5
5
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
6
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
7
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
|
+
import { isClientBasedAuth } from '@atlaskit/media-core';
|
|
8
9
|
import { getRandomHex } from '@atlaskit/media-common';
|
|
9
10
|
import { FILE_CACHE_MAX_AGE, MAX_RESOLUTION } from '../../constants';
|
|
10
11
|
import { getArtifactUrl } from '../../models/artifacts';
|
|
@@ -434,7 +435,8 @@ export var MediaStore = /*#__PURE__*/function () {
|
|
|
434
435
|
},
|
|
435
436
|
params: extendImageParams(params, fetchMaxRes),
|
|
436
437
|
headers: headers,
|
|
437
|
-
traceContext: traceContext
|
|
438
|
+
traceContext: traceContext,
|
|
439
|
+
addMediaClientParam: fg('platform.media-card-performance-observer_lgc7b') && true
|
|
438
440
|
});
|
|
439
441
|
return _context8.abrupt("return", this.request("/file/".concat(id, "/").concat(imageEndpoint), options, controller).then(createMapResponseToBlob(metadata)));
|
|
440
442
|
case 7:
|
|
@@ -588,7 +590,9 @@ export var MediaStore = /*#__PURE__*/function () {
|
|
|
588
590
|
body,
|
|
589
591
|
clientOptions,
|
|
590
592
|
traceContext,
|
|
593
|
+
addMediaClientParam,
|
|
591
594
|
auth,
|
|
595
|
+
clientId,
|
|
592
596
|
extendedTraceContext,
|
|
593
597
|
response,
|
|
594
598
|
_args12 = arguments;
|
|
@@ -601,31 +605,34 @@ export var MediaStore = /*#__PURE__*/function () {
|
|
|
601
605
|
authContext: {}
|
|
602
606
|
};
|
|
603
607
|
controller = _args12.length > 2 ? _args12[2] : undefined;
|
|
604
|
-
method = options.method, endpoint = options.endpoint, authContext = options.authContext, params = options.params, headers = options.headers, body = options.body, clientOptions = options.clientOptions, traceContext = options.traceContext;
|
|
608
|
+
method = options.method, endpoint = options.endpoint, authContext = options.authContext, params = options.params, headers = options.headers, body = options.body, clientOptions = options.clientOptions, traceContext = options.traceContext, addMediaClientParam = options.addMediaClientParam;
|
|
605
609
|
_context12.next = 5;
|
|
606
610
|
return this.resolveAuth(authContext);
|
|
607
611
|
case 5:
|
|
608
612
|
auth = _context12.sent;
|
|
613
|
+
clientId = isClientBasedAuth(auth) ? auth.clientId : undefined;
|
|
609
614
|
extendedTraceContext = traceContext ? _objectSpread(_objectSpread({}, traceContext), {}, {
|
|
610
615
|
spanId: (traceContext === null || traceContext === void 0 ? void 0 : traceContext.spanId) || getRandomHex(8)
|
|
611
616
|
}) : undefined;
|
|
612
|
-
_context12.next =
|
|
617
|
+
_context12.next = 10;
|
|
613
618
|
return _request("".concat(auth.baseUrl).concat(path), {
|
|
614
619
|
method: method,
|
|
615
620
|
endpoint: endpoint,
|
|
616
621
|
auth: auth,
|
|
617
|
-
params: params,
|
|
622
|
+
params: addMediaClientParam ? _objectSpread(_objectSpread({}, params), {}, {
|
|
623
|
+
clientId: clientId
|
|
624
|
+
}) : params,
|
|
618
625
|
headers: headers,
|
|
619
626
|
body: body,
|
|
620
627
|
clientOptions: clientOptions,
|
|
621
628
|
traceContext: extendedTraceContext
|
|
622
629
|
}, controller);
|
|
623
|
-
case
|
|
630
|
+
case 10:
|
|
624
631
|
response = _context12.sent;
|
|
625
632
|
setKeyValueInSessionStorage(MEDIA_API_REGION, response.headers.get('x-media-region'));
|
|
626
633
|
setKeyValueInSessionStorage(MEDIA_API_ENVIRONMENT, response.headers.get('x-media-env'));
|
|
627
634
|
return _context12.abrupt("return", response);
|
|
628
|
-
case
|
|
635
|
+
case 14:
|
|
629
636
|
case "end":
|
|
630
637
|
return _context12.stop();
|
|
631
638
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Auth, type AsapBasedAuth, type AuthContext, type ClientAltBasedAuth } from '@atlaskit/media-core';
|
|
2
|
-
import { type MediaTraceContext } from '@atlaskit/media-common';
|
|
2
|
+
import { type SSR, type MediaTraceContext } from '@atlaskit/media-common';
|
|
3
3
|
import { type MediaFileArtifacts } from '@atlaskit/media-state';
|
|
4
4
|
import { type MediaItemDetails, type MediaFile, type MediaUpload } from '../../models/media';
|
|
5
5
|
import { type ClientOptions, type RequestHeaders, type RequestMethod, type RequestParams, type RequestMetadata } from '../../utils/request/types';
|
|
@@ -37,6 +37,7 @@ export type MediaStoreRequestOptions = RequestMetadata & {
|
|
|
37
37
|
readonly clientOptions?: ClientOptions;
|
|
38
38
|
readonly traceContext?: MediaTraceContext;
|
|
39
39
|
readonly ChunkhashAlgorithm?: ChunkHashAlgorithm;
|
|
40
|
+
readonly addMediaClientParam?: boolean;
|
|
40
41
|
};
|
|
41
42
|
export type MediaStoreCreateFileFromUploadParams = {
|
|
42
43
|
readonly collection?: string;
|
|
@@ -94,6 +95,8 @@ export type MediaStoreGetFileImageParams = {
|
|
|
94
95
|
readonly mode?: 'fit' | 'full-fit' | 'crop';
|
|
95
96
|
readonly upscale?: boolean;
|
|
96
97
|
readonly 'max-age'?: number;
|
|
98
|
+
readonly source?: string;
|
|
99
|
+
readonly ssr?: SSR;
|
|
97
100
|
};
|
|
98
101
|
export interface SourceFile {
|
|
99
102
|
id: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Auth, type AsapBasedAuth, type AuthContext, type ClientAltBasedAuth } from '@atlaskit/media-core';
|
|
2
|
-
import { type MediaTraceContext } from '@atlaskit/media-common';
|
|
2
|
+
import { type SSR, type MediaTraceContext } from '@atlaskit/media-common';
|
|
3
3
|
import { type MediaFileArtifacts } from '@atlaskit/media-state';
|
|
4
4
|
import { type MediaItemDetails, type MediaFile, type MediaUpload } from '../../models/media';
|
|
5
5
|
import { type ClientOptions, type RequestHeaders, type RequestMethod, type RequestParams, type RequestMetadata } from '../../utils/request/types';
|
|
@@ -37,6 +37,7 @@ export type MediaStoreRequestOptions = RequestMetadata & {
|
|
|
37
37
|
readonly clientOptions?: ClientOptions;
|
|
38
38
|
readonly traceContext?: MediaTraceContext;
|
|
39
39
|
readonly ChunkhashAlgorithm?: ChunkHashAlgorithm;
|
|
40
|
+
readonly addMediaClientParam?: boolean;
|
|
40
41
|
};
|
|
41
42
|
export type MediaStoreCreateFileFromUploadParams = {
|
|
42
43
|
readonly collection?: string;
|
|
@@ -94,6 +95,8 @@ export type MediaStoreGetFileImageParams = {
|
|
|
94
95
|
readonly mode?: 'fit' | 'full-fit' | 'crop';
|
|
95
96
|
readonly upscale?: boolean;
|
|
96
97
|
readonly 'max-age'?: number;
|
|
98
|
+
readonly source?: string;
|
|
99
|
+
readonly ssr?: SSR;
|
|
97
100
|
};
|
|
98
101
|
export interface SourceFile {
|
|
99
102
|
id: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/media-client",
|
|
3
|
-
"version": "27.
|
|
3
|
+
"version": "27.4.0",
|
|
4
4
|
"description": "Media API Web Client Library",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@atlaskit/chunkinator": "^6.0.0",
|
|
40
|
-
"@atlaskit/media-common": "^11.
|
|
40
|
+
"@atlaskit/media-common": "^11.4.0",
|
|
41
41
|
"@atlaskit/platform-feature-flags": "0.3.0",
|
|
42
42
|
"@babel/runtime": "^7.0.0",
|
|
43
43
|
"dataloader": "^2.0.0",
|
|
@@ -53,14 +53,14 @@
|
|
|
53
53
|
"xstate": "4.20.0"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"@atlaskit/media-core": "^34.
|
|
56
|
+
"@atlaskit/media-core": "^34.3.0",
|
|
57
57
|
"@atlaskit/media-state": "^1.0.0"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@atlaskit/media-core": "^34.
|
|
60
|
+
"@atlaskit/media-core": "^34.3.0",
|
|
61
61
|
"@atlaskit/media-state": "^1.1.0",
|
|
62
62
|
"@atlaskit/ssr": "*",
|
|
63
|
-
"@atlaskit/tokens": "^1.
|
|
63
|
+
"@atlaskit/tokens": "^1.59.0",
|
|
64
64
|
"@atlassian/feature-flags-test-utils": "0.2.3",
|
|
65
65
|
"@emotion/react": "^11.7.1",
|
|
66
66
|
"@types/deep-equal": "^1.0.1",
|
|
@@ -89,6 +89,9 @@
|
|
|
89
89
|
},
|
|
90
90
|
"platform.media-cdn-delivery": {
|
|
91
91
|
"type": "boolean"
|
|
92
|
+
},
|
|
93
|
+
"platform.media-card-performance-observer_lgc7b": {
|
|
94
|
+
"type": "boolean"
|
|
92
95
|
}
|
|
93
96
|
}
|
|
94
97
|
}
|