@atlaskit/media-client 39.1.20 → 39.2.1
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 +17 -0
- package/dist/cjs/test-helpers/AuthParameter.js +1 -0
- package/dist/cjs/test-helpers/MediaHeaders.js +1 -0
- package/dist/cjs/test-helpers/MockedMediaApi/MockedMediaApi.js +615 -0
- package/dist/cjs/test-helpers/MockedMediaApi/assign.js +21 -0
- package/dist/cjs/test-helpers/MockedMediaApi/copy.js +18 -0
- package/dist/cjs/test-helpers/MockedMediaApi/createEmptyFileItem.js +29 -0
- package/dist/cjs/test-helpers/MockedMediaApi/createErrorFileState.js +14 -0
- package/dist/cjs/test-helpers/MockedMediaApi/createFileState.js +29 -0
- package/dist/cjs/test-helpers/MockedMediaApi/createProcessingFileItem.js +64 -0
- package/dist/cjs/test-helpers/MockedMediaApi/createUploadingFileState.js +30 -0
- package/dist/cjs/test-helpers/MockedMediaApi/getIdentifier.js +16 -0
- package/dist/cjs/test-helpers/MockedMediaApi/getMediaFile.js +18 -0
- package/dist/cjs/test-helpers/MockedMediaApi/helpers.js +82 -0
- package/dist/cjs/test-helpers/MockedMediaApi/merge.js +21 -0
- package/dist/cjs/test-helpers/MockedMediaApi/normaliseInput.js +12 -0
- package/dist/cjs/test-helpers/MockedMediaApi/types.js +5 -0
- package/dist/cjs/test-helpers/_numbers.js +9 -0
- package/dist/cjs/test-helpers/authProvider.js +69 -0
- package/dist/cjs/test-helpers/cachedAuths.js +7 -0
- package/dist/cjs/test-helpers/collectionNames.js +11 -0
- package/dist/cjs/test-helpers/createMediaStoreError.js +10 -0
- package/dist/cjs/test-helpers/createPollingMaxAttemptsError.js +13 -0
- package/dist/cjs/test-helpers/createRateLimitedError.js +18 -0
- package/dist/cjs/test-helpers/createServerUnauthorizedError.js +19 -0
- package/dist/cjs/test-helpers/createStorybookMediaClient.js +19 -0
- package/dist/cjs/test-helpers/createStorybookMediaClientConfig.js +24 -0
- package/dist/cjs/test-helpers/createUploadMediaClient.js +11 -0
- package/dist/cjs/test-helpers/createUploadMediaClientConfig.js +13 -0
- package/dist/cjs/test-helpers/defaultAuthParameter.js +9 -0
- package/dist/cjs/test-helpers/defaultMediaPickerAuthProvider.js +17 -0
- package/dist/cjs/test-helpers/defaultMetadata.js +16 -0
- package/dist/cjs/test-helpers/exampleMediaItems.js +298 -0
- package/dist/cjs/test-helpers/fakeMediaClient.js +78 -0
- package/dist/cjs/test-helpers/getDefaultMediaClientConfig.js +15 -0
- package/dist/cjs/test-helpers/index.js +582 -0
- package/dist/cjs/test-helpers/mediaClientErrors.js +40 -0
- package/dist/cjs/test-helpers/mediaClientProvider.js +73 -0
- package/dist/cjs/test-helpers/mediaPickerAuthProvider.js +56 -0
- package/dist/cjs/test-helpers/requestAuthProvider.js +48 -0
- package/dist/es2019/test-helpers/AuthParameter.js +0 -0
- package/dist/es2019/test-helpers/MediaHeaders.js +0 -0
- package/dist/es2019/test-helpers/MockedMediaApi/MockedMediaApi.js +205 -0
- package/dist/es2019/test-helpers/MockedMediaApi/assign.js +18 -0
- package/dist/es2019/test-helpers/MockedMediaApi/copy.js +8 -0
- package/dist/es2019/test-helpers/MockedMediaApi/createEmptyFileItem.js +23 -0
- package/dist/es2019/test-helpers/MockedMediaApi/createErrorFileState.js +6 -0
- package/dist/es2019/test-helpers/MockedMediaApi/createFileState.js +23 -0
- package/dist/es2019/test-helpers/MockedMediaApi/createProcessingFileItem.js +53 -0
- package/dist/es2019/test-helpers/MockedMediaApi/createUploadingFileState.js +24 -0
- package/dist/es2019/test-helpers/MockedMediaApi/getIdentifier.js +8 -0
- package/dist/es2019/test-helpers/MockedMediaApi/getMediaFile.js +7 -0
- package/dist/es2019/test-helpers/MockedMediaApi/helpers.js +47 -0
- package/dist/es2019/test-helpers/MockedMediaApi/merge.js +18 -0
- package/dist/es2019/test-helpers/MockedMediaApi/normaliseInput.js +4 -0
- package/dist/es2019/test-helpers/MockedMediaApi/types.js +1 -0
- package/dist/es2019/test-helpers/_numbers.js +3 -0
- package/dist/es2019/test-helpers/authProvider.js +34 -0
- package/dist/es2019/test-helpers/cachedAuths.js +1 -0
- package/dist/es2019/test-helpers/collectionNames.js +5 -0
- package/dist/es2019/test-helpers/createMediaStoreError.js +2 -0
- package/dist/es2019/test-helpers/createPollingMaxAttemptsError.js +4 -0
- package/dist/es2019/test-helpers/createRateLimitedError.js +6 -0
- package/dist/es2019/test-helpers/createServerUnauthorizedError.js +6 -0
- package/dist/es2019/test-helpers/createStorybookMediaClient.js +13 -0
- package/dist/es2019/test-helpers/createStorybookMediaClientConfig.js +17 -0
- package/dist/es2019/test-helpers/createUploadMediaClient.js +3 -0
- package/dist/es2019/test-helpers/createUploadMediaClientConfig.js +5 -0
- package/dist/es2019/test-helpers/defaultAuthParameter.js +3 -0
- package/dist/es2019/test-helpers/defaultMediaPickerAuthProvider.js +9 -0
- package/dist/es2019/test-helpers/defaultMetadata.js +10 -0
- package/dist/es2019/test-helpers/exampleMediaItems.js +292 -0
- package/dist/es2019/test-helpers/fakeMediaClient.js +63 -0
- package/dist/es2019/test-helpers/getDefaultMediaClientConfig.js +7 -0
- package/dist/es2019/test-helpers/index.js +103 -0
- package/dist/es2019/test-helpers/mediaClientErrors.js +26 -0
- package/dist/es2019/test-helpers/mediaClientProvider.js +33 -0
- package/dist/es2019/test-helpers/mediaPickerAuthProvider.js +39 -0
- package/dist/es2019/test-helpers/requestAuthProvider.js +18 -0
- package/dist/esm/test-helpers/AuthParameter.js +0 -0
- package/dist/esm/test-helpers/MediaHeaders.js +0 -0
- package/dist/esm/test-helpers/MockedMediaApi/MockedMediaApi.js +608 -0
- package/dist/esm/test-helpers/MockedMediaApi/assign.js +14 -0
- package/dist/esm/test-helpers/MockedMediaApi/copy.js +11 -0
- package/dist/esm/test-helpers/MockedMediaApi/createEmptyFileItem.js +23 -0
- package/dist/esm/test-helpers/MockedMediaApi/createErrorFileState.js +8 -0
- package/dist/esm/test-helpers/MockedMediaApi/createFileState.js +23 -0
- package/dist/esm/test-helpers/MockedMediaApi/createProcessingFileItem.js +57 -0
- package/dist/esm/test-helpers/MockedMediaApi/createUploadingFileState.js +24 -0
- package/dist/esm/test-helpers/MockedMediaApi/getIdentifier.js +10 -0
- package/dist/esm/test-helpers/MockedMediaApi/getMediaFile.js +11 -0
- package/dist/esm/test-helpers/MockedMediaApi/helpers.js +47 -0
- package/dist/esm/test-helpers/MockedMediaApi/merge.js +14 -0
- package/dist/esm/test-helpers/MockedMediaApi/normaliseInput.js +6 -0
- package/dist/esm/test-helpers/MockedMediaApi/types.js +1 -0
- package/dist/esm/test-helpers/_numbers.js +3 -0
- package/dist/esm/test-helpers/authProvider.js +62 -0
- package/dist/esm/test-helpers/cachedAuths.js +1 -0
- package/dist/esm/test-helpers/collectionNames.js +5 -0
- package/dist/esm/test-helpers/createMediaStoreError.js +4 -0
- package/dist/esm/test-helpers/createPollingMaxAttemptsError.js +7 -0
- package/dist/esm/test-helpers/createRateLimitedError.js +11 -0
- package/dist/esm/test-helpers/createServerUnauthorizedError.js +12 -0
- package/dist/esm/test-helpers/createStorybookMediaClient.js +14 -0
- package/dist/esm/test-helpers/createStorybookMediaClientConfig.js +18 -0
- package/dist/esm/test-helpers/createUploadMediaClient.js +5 -0
- package/dist/esm/test-helpers/createUploadMediaClientConfig.js +7 -0
- package/dist/esm/test-helpers/defaultAuthParameter.js +3 -0
- package/dist/esm/test-helpers/defaultMediaPickerAuthProvider.js +11 -0
- package/dist/esm/test-helpers/defaultMetadata.js +10 -0
- package/dist/esm/test-helpers/exampleMediaItems.js +292 -0
- package/dist/esm/test-helpers/fakeMediaClient.js +67 -0
- package/dist/esm/test-helpers/getDefaultMediaClientConfig.js +9 -0
- package/dist/esm/test-helpers/index.js +103 -0
- package/dist/esm/test-helpers/mediaClientErrors.js +26 -0
- package/dist/esm/test-helpers/mediaClientProvider.js +33 -0
- package/dist/esm/test-helpers/mediaPickerAuthProvider.js +43 -0
- package/dist/esm/test-helpers/requestAuthProvider.js +41 -0
- package/dist/types/test-helpers/AuthParameter.d.ts +3 -0
- package/dist/types/test-helpers/MediaHeaders.d.ts +4 -0
- package/dist/types/test-helpers/MockedMediaApi/MockedMediaApi.d.ts +16 -0
- package/dist/types/test-helpers/MockedMediaApi/assign.d.ts +6 -0
- package/dist/types/test-helpers/MockedMediaApi/copy.d.ts +5 -0
- package/dist/types/test-helpers/MockedMediaApi/createEmptyFileItem.d.ts +2 -0
- package/dist/types/test-helpers/MockedMediaApi/createErrorFileState.d.ts +4 -0
- package/dist/types/test-helpers/MockedMediaApi/createFileState.d.ts +3 -0
- package/dist/types/test-helpers/MockedMediaApi/createProcessingFileItem.d.ts +6 -0
- package/dist/types/test-helpers/MockedMediaApi/createUploadingFileState.d.ts +3 -0
- package/dist/types/test-helpers/MockedMediaApi/getIdentifier.d.ts +6 -0
- package/dist/types/test-helpers/MockedMediaApi/getMediaFile.d.ts +3 -0
- package/dist/types/test-helpers/MockedMediaApi/helpers.d.ts +44 -0
- package/dist/types/test-helpers/MockedMediaApi/merge.d.ts +5 -0
- package/dist/types/test-helpers/MockedMediaApi/normaliseInput.d.ts +1 -0
- package/dist/types/test-helpers/MockedMediaApi/types.d.ts +8 -0
- package/dist/types/test-helpers/_numbers.d.ts +1 -0
- package/dist/types/test-helpers/authProvider.d.ts +6 -0
- package/dist/types/test-helpers/cachedAuths.d.ts +4 -0
- package/dist/types/test-helpers/collectionNames.d.ts +5 -0
- package/dist/types/test-helpers/createMediaStoreError.d.ts +2 -0
- package/dist/types/test-helpers/createPollingMaxAttemptsError.d.ts +2 -0
- package/dist/types/test-helpers/createRateLimitedError.d.ts +8 -0
- package/dist/types/test-helpers/createServerUnauthorizedError.d.ts +8 -0
- package/dist/types/test-helpers/createStorybookMediaClient.d.ts +9 -0
- package/dist/types/test-helpers/createStorybookMediaClientConfig.d.ts +3 -0
- package/dist/types/test-helpers/createUploadMediaClient.d.ts +2 -0
- package/dist/types/test-helpers/createUploadMediaClientConfig.d.ts +3 -0
- package/dist/types/test-helpers/defaultAuthParameter.d.ts +2 -0
- package/dist/types/test-helpers/defaultMediaPickerAuthProvider.d.ts +1 -0
- package/dist/types/test-helpers/defaultMetadata.d.ts +3 -0
- package/dist/types/test-helpers/exampleMediaItems.d.ts +75 -0
- package/dist/types/test-helpers/fakeMediaClient.d.ts +7 -0
- package/dist/types/test-helpers/getDefaultMediaClientConfig.d.ts +2 -0
- package/dist/types/test-helpers/index.d.ts +103 -0
- package/dist/types/test-helpers/mediaClientErrors.d.ts +24 -0
- package/dist/types/test-helpers/mediaClientProvider.d.ts +30 -0
- package/dist/types/test-helpers/mediaPickerAuthProvider.d.ts +14 -0
- package/dist/types/test-helpers/requestAuthProvider.d.ts +3 -0
- package/package.json +3 -3
- package/test-helpers/package.json +8 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.authProviderBaseURL = exports.accessUrns = void 0;
|
|
7
|
+
Object.defineProperty(exports, "defaultMediaPickerAuthProvider", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _defaultMediaPickerAuthProvider.defaultMediaPickerAuthProvider;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
exports.mediaPickerAuthProvider = void 0;
|
|
14
|
+
var _cachedAuths = require("./cachedAuths");
|
|
15
|
+
var _collectionNames = require("./collectionNames");
|
|
16
|
+
var _requestAuthProvider = require("./requestAuthProvider");
|
|
17
|
+
var _defaultMediaPickerAuthProvider = require("./defaultMediaPickerAuthProvider");
|
|
18
|
+
/* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
|
|
19
|
+
|
|
20
|
+
var authProviderBaseURL = exports.authProviderBaseURL = 'https://media.staging.atl-paas.net';
|
|
21
|
+
var accessUrns = exports.accessUrns = {
|
|
22
|
+
MediaServicesSample: {
|
|
23
|
+
'urn:filestore:collection:MediaServicesSample': ['read', 'insert'],
|
|
24
|
+
'urn:filestore:chunk:*': ['create', 'read'],
|
|
25
|
+
'urn:filestore:upload': ['create'],
|
|
26
|
+
'urn:filestore:upload:*': ['read', 'update'],
|
|
27
|
+
'urn:filestore:file': ['create'],
|
|
28
|
+
'urn:filestore:file:*': ['read', 'update']
|
|
29
|
+
},
|
|
30
|
+
'mediapicker-test': {
|
|
31
|
+
'urn:filestore:collection': ['create'],
|
|
32
|
+
'urn:filestore:collection:mediapicker-test': ['read', 'insert'],
|
|
33
|
+
'urn:filestore:chunk:*': ['create', 'read'],
|
|
34
|
+
'urn:filestore:upload': ['create'],
|
|
35
|
+
'urn:filestore:upload:*': ['read', 'update'],
|
|
36
|
+
'urn:filestore:file': ['create'],
|
|
37
|
+
'urn:filestore:file:*': ['read', 'update']
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
var mediaPickerAuthProvider = exports.mediaPickerAuthProvider = function mediaPickerAuthProvider() {
|
|
41
|
+
var authEnvironment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'asap';
|
|
42
|
+
var env = arguments.length > 1 ? arguments[1] : undefined;
|
|
43
|
+
return function (context) {
|
|
44
|
+
var collectionName = context && context.collectionName || _collectionNames.defaultCollectionName;
|
|
45
|
+
authEnvironment = authEnvironment === 'asap' ? 'asap' : '';
|
|
46
|
+
var cacheKey = "".concat(collectionName, ":").concat(authEnvironment);
|
|
47
|
+
if (!_cachedAuths.cachedAuths[cacheKey]) {
|
|
48
|
+
_cachedAuths.cachedAuths[cacheKey] = (0, _requestAuthProvider.requestAuthProvider)(authEnvironment, collectionName, env);
|
|
49
|
+
}
|
|
50
|
+
return _cachedAuths.cachedAuths[cacheKey];
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated Use `import { defaultMediaPickerAuthProvider } from '@atlaskit/media-client/test-helpers'` instead.
|
|
56
|
+
*/
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.requestAuthProvider = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _mediaPickerAuthProvider = require("./mediaPickerAuthProvider");
|
|
11
|
+
var requestAuthProvider = exports.requestAuthProvider = /*#__PURE__*/function () {
|
|
12
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(authEnvironment, collectionName) {
|
|
13
|
+
var env,
|
|
14
|
+
url,
|
|
15
|
+
body,
|
|
16
|
+
headers,
|
|
17
|
+
response,
|
|
18
|
+
_args = arguments;
|
|
19
|
+
return _regenerator.default.wrap(function (_context) {
|
|
20
|
+
while (1) switch (_context.prev = _context.next) {
|
|
21
|
+
case 0:
|
|
22
|
+
env = _args.length > 2 && _args[2] !== undefined ? _args[2] : 'staging';
|
|
23
|
+
url = "https://media-playground.".concat(env, ".atl-paas.net/token/tenant?environment=").concat(authEnvironment);
|
|
24
|
+
body = JSON.stringify({
|
|
25
|
+
access: _mediaPickerAuthProvider.accessUrns[collectionName] || {}
|
|
26
|
+
});
|
|
27
|
+
headers = new Headers();
|
|
28
|
+
headers.append('Content-Type', 'application/json; charset=utf-8');
|
|
29
|
+
headers.append('Accept', 'text/plain, */*; q=0.01');
|
|
30
|
+
_context.next = 1;
|
|
31
|
+
return fetch(url, {
|
|
32
|
+
method: 'POST',
|
|
33
|
+
body: body,
|
|
34
|
+
headers: headers
|
|
35
|
+
});
|
|
36
|
+
case 1:
|
|
37
|
+
response = _context.sent;
|
|
38
|
+
return _context.abrupt("return", response.json());
|
|
39
|
+
case 2:
|
|
40
|
+
case "end":
|
|
41
|
+
return _context.stop();
|
|
42
|
+
}
|
|
43
|
+
}, _callee);
|
|
44
|
+
}));
|
|
45
|
+
return function requestAuthProvider(_x, _x2) {
|
|
46
|
+
return _ref.apply(this, arguments);
|
|
47
|
+
};
|
|
48
|
+
}();
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { getMediaFile } from './getMediaFile';
|
|
2
|
+
import { normaliseInput } from './normaliseInput';
|
|
3
|
+
const getMediaApi = ({
|
|
4
|
+
getItem
|
|
5
|
+
}) => ({
|
|
6
|
+
// --------------------------------------------------------
|
|
7
|
+
// UPLOAD ENDPOINTS - None is supported
|
|
8
|
+
// --------------------------------------------------------
|
|
9
|
+
|
|
10
|
+
touchFiles: async ({
|
|
11
|
+
descriptors
|
|
12
|
+
}) => {
|
|
13
|
+
throw new Error('500 - MockedMediaApi.touchFiles: method not implemented');
|
|
14
|
+
},
|
|
15
|
+
uploadChunk: async (_etag, _blob, uploadId) => {
|
|
16
|
+
throw new Error('500 - MockedMediaApi.uploadChunk: method not implemented');
|
|
17
|
+
},
|
|
18
|
+
appendChunksToUpload: async () => {
|
|
19
|
+
throw new Error('500 - MockedMediaApi.appendChunksToUpload: method not implemented');
|
|
20
|
+
},
|
|
21
|
+
createFileFromUpload: async ({
|
|
22
|
+
uploadId
|
|
23
|
+
}, {
|
|
24
|
+
collection
|
|
25
|
+
}) => {
|
|
26
|
+
throw new Error('500 - MockedMediaApi.createFileFromUpload: method not implemented');
|
|
27
|
+
},
|
|
28
|
+
// Used by Media Picker as a fallback for conflicted file Ids
|
|
29
|
+
createUpload: async () => {
|
|
30
|
+
throw new Error('500 - MockedMediaApi.createUpload: method not implemented');
|
|
31
|
+
},
|
|
32
|
+
// For File size limits
|
|
33
|
+
getRejectedResponseFromDescriptor: () => {
|
|
34
|
+
throw new Error('500 - MockedMediaApi.getRejectedResponseFromDescriptor: method not implemented');
|
|
35
|
+
},
|
|
36
|
+
// --------------------------------------------------------
|
|
37
|
+
// METADATA ENDPOINTS
|
|
38
|
+
// --------------------------------------------------------
|
|
39
|
+
|
|
40
|
+
getFile: async fileId => {
|
|
41
|
+
const fileItem = getItem(fileId);
|
|
42
|
+
if (!fileItem) {
|
|
43
|
+
throw new Error('404 - MockedMediaApi.getFile: file not found');
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
data: getMediaFile(fileItem)
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
getItems: async ids => {
|
|
50
|
+
const items = ids.map(id => getItem(id)).filter(fileState => !!fileState);
|
|
51
|
+
return {
|
|
52
|
+
data: {
|
|
53
|
+
items
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
// TODO
|
|
58
|
+
getImageMetadata: async () => {
|
|
59
|
+
throw new Error('500 - MockedMediaApi.getImageMetadata: method not implemented');
|
|
60
|
+
},
|
|
61
|
+
// --------------------------------------------------------
|
|
62
|
+
// URL ENDPOINTS
|
|
63
|
+
// --------------------------------------------------------
|
|
64
|
+
|
|
65
|
+
getFileImageURL: async id => {
|
|
66
|
+
return `image-url-${id}`;
|
|
67
|
+
},
|
|
68
|
+
getFileImageURLSync: id => {
|
|
69
|
+
return `image-url-sync-${id}`;
|
|
70
|
+
},
|
|
71
|
+
getFileBinaryURL: async id => {
|
|
72
|
+
const fileItem = getItem(id);
|
|
73
|
+
if (!fileItem) {
|
|
74
|
+
throw new Error('404 - MockedMediaApi.getFileBinaryURL: file not found');
|
|
75
|
+
}
|
|
76
|
+
if (fileItem.details.size === 0) {
|
|
77
|
+
// TODO veryify if this is the correct answer for an uploading file
|
|
78
|
+
throw new Error('404 - MockedMediaApi.getFileBinaryURL: file is empty');
|
|
79
|
+
}
|
|
80
|
+
return `/file/${id}/binary`;
|
|
81
|
+
},
|
|
82
|
+
getArtifactURL: async (artifacts, artifactName) => {
|
|
83
|
+
var _artifacts$artifactNa;
|
|
84
|
+
const artifactUrl = (_artifacts$artifactNa = artifacts[artifactName]) === null || _artifacts$artifactNa === void 0 ? void 0 : _artifacts$artifactNa.url;
|
|
85
|
+
if (!artifactUrl) {
|
|
86
|
+
throw new Error(`404 - MockedMediaApi.getArtifactURL: artifact ${artifactName} not found`);
|
|
87
|
+
}
|
|
88
|
+
return artifactUrl;
|
|
89
|
+
},
|
|
90
|
+
getArtifactBinary: async (artifacts, artifactName) => {
|
|
91
|
+
var _artifacts$artifactNa2, _artifacts$artifactNa3;
|
|
92
|
+
const artifactUrl = ((_artifacts$artifactNa2 = artifacts[artifactName]) === null || _artifacts$artifactNa2 === void 0 ? void 0 : _artifacts$artifactNa2.url) || ((_artifacts$artifactNa3 = artifacts[artifactName]) === null || _artifacts$artifactNa3 === void 0 ? void 0 : _artifacts$artifactNa3.cdnUrl);
|
|
93
|
+
if (!artifactUrl) {
|
|
94
|
+
throw new Error(`404 - MockedMediaApi.getArtifactBinary: artifact ${artifactName} URL not found`);
|
|
95
|
+
}
|
|
96
|
+
return new Blob();
|
|
97
|
+
},
|
|
98
|
+
uploadArtifact: async id => {
|
|
99
|
+
const item = getItem(id);
|
|
100
|
+
if (!item) {
|
|
101
|
+
throw new Error('404 - MockedMediaApi.uploadArtifact: file not found');
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
data: item.details
|
|
105
|
+
};
|
|
106
|
+
},
|
|
107
|
+
deleteArtifact: async id => {
|
|
108
|
+
// OK!
|
|
109
|
+
// TODO: this should return the item details
|
|
110
|
+
},
|
|
111
|
+
// --------------------------------------------------------
|
|
112
|
+
// BINARY ENDPOINTS
|
|
113
|
+
// --------------------------------------------------------
|
|
114
|
+
getImage: async fileId => {
|
|
115
|
+
const fileItem = getItem(fileId);
|
|
116
|
+
if (!fileItem) {
|
|
117
|
+
throw new Error('404 - MockedMediaApi.getImage: file not found');
|
|
118
|
+
}
|
|
119
|
+
if (!fileItem.details.representations.image) {
|
|
120
|
+
throw new Error('404 - MockedMediaApi.getImage: image not found');
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Empty Blob. Might have to change for a real one if TLR loads the image
|
|
124
|
+
return new Blob();
|
|
125
|
+
},
|
|
126
|
+
getFileBinary: async fileId => {
|
|
127
|
+
const fileItem = getItem(fileId);
|
|
128
|
+
if (!fileItem) {
|
|
129
|
+
throw new Error('404 - MockedMediaApi.getFileBinary: file not found');
|
|
130
|
+
}
|
|
131
|
+
return new Blob();
|
|
132
|
+
},
|
|
133
|
+
// --------------------------------------------------------
|
|
134
|
+
// OTHER ENDPOINTS
|
|
135
|
+
// --------------------------------------------------------
|
|
136
|
+
|
|
137
|
+
// TODO
|
|
138
|
+
copyFileWithToken: async body => {
|
|
139
|
+
const fileId = body.sourceFile.id;
|
|
140
|
+
const fileItem = getItem(fileId);
|
|
141
|
+
if (!fileItem) {
|
|
142
|
+
throw new Error('404 - MockedMediaApi.copyFileWithToken: file not found');
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
data: getMediaFile(fileItem)
|
|
146
|
+
};
|
|
147
|
+
},
|
|
148
|
+
copyFile: async (fileId, params) => {
|
|
149
|
+
const fileItem = getItem(fileId);
|
|
150
|
+
if (!fileItem) {
|
|
151
|
+
throw new Error('404 - MockedMediaApi.copy: file not found');
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
data: getMediaFile(fileItem)
|
|
155
|
+
};
|
|
156
|
+
},
|
|
157
|
+
registerCopyIntents: async (ids, collectionName) => {},
|
|
158
|
+
// TODO
|
|
159
|
+
removeCollectionFile: async () => {},
|
|
160
|
+
// --------------------------------------------------------
|
|
161
|
+
// OTHER ENDPOINTS
|
|
162
|
+
// --------------------------------------------------------
|
|
163
|
+
request: async () => new Response(),
|
|
164
|
+
resolveAuth: async () => ({
|
|
165
|
+
asapIssuer: '',
|
|
166
|
+
token: '',
|
|
167
|
+
baseUrl: ''
|
|
168
|
+
}),
|
|
169
|
+
resolveInitialAuth: () => ({
|
|
170
|
+
asapIssuer: '',
|
|
171
|
+
token: '',
|
|
172
|
+
baseUrl: ''
|
|
173
|
+
}),
|
|
174
|
+
getDocumentContent: async () => {
|
|
175
|
+
throw new Error('500 - MockedMediaApi.getDocumentContent: method not implemented');
|
|
176
|
+
},
|
|
177
|
+
getDocumentPageImage: async () => {
|
|
178
|
+
throw new Error('500 - MockedMediaApi.getDocumentPageImage: method not implemented');
|
|
179
|
+
},
|
|
180
|
+
testUrl: async () => {}
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Mocked Media API
|
|
185
|
+
*/
|
|
186
|
+
export const createMockedMediaApi = initialFileItems => {
|
|
187
|
+
const storedFileItems = new Map();
|
|
188
|
+
const getItem = fileId => storedFileItems.get(fileId);
|
|
189
|
+
const setItems = fileItems => {
|
|
190
|
+
const normalised = normaliseInput(fileItems);
|
|
191
|
+
normalised.forEach(fileItem => storedFileItems.set(fileItem.id, fileItem));
|
|
192
|
+
};
|
|
193
|
+
if (initialFileItems) {
|
|
194
|
+
setItems(initialFileItems);
|
|
195
|
+
}
|
|
196
|
+
const mediaApi = getMediaApi({
|
|
197
|
+
setItems,
|
|
198
|
+
getItem
|
|
199
|
+
});
|
|
200
|
+
return {
|
|
201
|
+
setItems,
|
|
202
|
+
getItem,
|
|
203
|
+
mediaApi
|
|
204
|
+
};
|
|
205
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds/overrides the attributes from fileItemB into the fileItemA
|
|
3
|
+
* */
|
|
4
|
+
export const assign = (fileItemA, fileItemB) => {
|
|
5
|
+
var _fileItemA$details, _fileItemB$details;
|
|
6
|
+
return {
|
|
7
|
+
...fileItemA,
|
|
8
|
+
...fileItemB,
|
|
9
|
+
details: {
|
|
10
|
+
...fileItemA.details,
|
|
11
|
+
...(fileItemB === null || fileItemB === void 0 ? void 0 : fileItemB.details),
|
|
12
|
+
artifacts: {
|
|
13
|
+
...((_fileItemA$details = fileItemA.details) === null || _fileItemA$details === void 0 ? void 0 : _fileItemA$details.artifacts),
|
|
14
|
+
...(fileItemB === null || fileItemB === void 0 ? void 0 : (_fileItemB$details = fileItemB.details) === null || _fileItemB$details === void 0 ? void 0 : _fileItemB$details.artifacts)
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { v4 as uuid } from 'uuid'; // eslint-disable-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Makes a copy of the provided file item with a random file id
|
|
5
|
+
* */
|
|
6
|
+
export const copy = fileItem =>
|
|
7
|
+
// eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
|
|
8
|
+
JSON.parse(JSON.stringify(fileItem).replace(new RegExp(fileItem.id, 'g'), uuid()));
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// --------------------------------------------------------
|
|
2
|
+
// Utils for creating file descriptors for tests
|
|
3
|
+
// --------------------------------------------------------
|
|
4
|
+
export const createEmptyFileItem = (id, collection) => {
|
|
5
|
+
const emptyFileItem = {
|
|
6
|
+
type: 'file',
|
|
7
|
+
id,
|
|
8
|
+
details: {
|
|
9
|
+
mediaType: 'unknown',
|
|
10
|
+
mimeType: 'binary/octet-stream',
|
|
11
|
+
name: '',
|
|
12
|
+
size: 0,
|
|
13
|
+
processingStatus: 'pending',
|
|
14
|
+
artifacts: {},
|
|
15
|
+
representations: {},
|
|
16
|
+
createdAt: 1699488941974
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
if (collection) {
|
|
20
|
+
emptyFileItem.collection = collection;
|
|
21
|
+
}
|
|
22
|
+
return emptyFileItem;
|
|
23
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { fromCommonMediaClientError } from '../../models/errors/fromCommonMediaClientError';
|
|
2
|
+
import { createServerUnauthorizedError } from '../createServerUnauthorizedError';
|
|
3
|
+
const defaultErrorFileStateError = createServerUnauthorizedError();
|
|
4
|
+
export const createErrorFileState = ({
|
|
5
|
+
id
|
|
6
|
+
}, error = defaultErrorFileStateError) => fromCommonMediaClientError(id, undefined, error);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const createFileState = ({
|
|
2
|
+
id,
|
|
3
|
+
details: {
|
|
4
|
+
name,
|
|
5
|
+
size,
|
|
6
|
+
mediaType,
|
|
7
|
+
mimeType,
|
|
8
|
+
createdAt,
|
|
9
|
+
processingStatus,
|
|
10
|
+
artifacts,
|
|
11
|
+
representations
|
|
12
|
+
}
|
|
13
|
+
}) => ({
|
|
14
|
+
status: processingStatus === 'succeeded' ? 'processed' : 'processing',
|
|
15
|
+
id,
|
|
16
|
+
name,
|
|
17
|
+
size,
|
|
18
|
+
mediaType,
|
|
19
|
+
mimeType,
|
|
20
|
+
createdAt,
|
|
21
|
+
artifacts,
|
|
22
|
+
representations
|
|
23
|
+
});
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simulates the processing of the file by updating the processing status of the artifacts by a percentage
|
|
3
|
+
* Percent must be between 0 and 1
|
|
4
|
+
*/
|
|
5
|
+
export const createProcessingFileItem = (fileItem, percent) => {
|
|
6
|
+
if (percent < 0 || percent > 1) {
|
|
7
|
+
throw new Error('Error createProcessingFileItem: percent must be between 0 and 1');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* This behaviour has to be confirmed
|
|
12
|
+
* Artifacts show up immediately after processed or they have a
|
|
13
|
+
* "processing time"?
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
if (percent === 1) {
|
|
17
|
+
return fileItem;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// No artifacts for 0% processing
|
|
21
|
+
if (percent === 0) {
|
|
22
|
+
return {
|
|
23
|
+
...fileItem,
|
|
24
|
+
details: {
|
|
25
|
+
...fileItem.details,
|
|
26
|
+
processingStatus: 'pending',
|
|
27
|
+
artifacts: {},
|
|
28
|
+
// The preview will only be ready at 100% -> TODO verify against backend
|
|
29
|
+
representations: {}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const artifactsKeys = Object.keys(fileItem.details.artifacts);
|
|
34
|
+
const artifactsEntries = Object.entries(fileItem.details.artifacts);
|
|
35
|
+
|
|
36
|
+
// Get a % of the total artifacts to be set as processed
|
|
37
|
+
const processedArtifactKeys = artifactsKeys.slice(0, Math.ceil(artifactsKeys.length * percent));
|
|
38
|
+
const processedArtifactEntries = artifactsEntries.map(([key, artifact]) => [key, {
|
|
39
|
+
...artifact,
|
|
40
|
+
processingStatus: processedArtifactKeys.includes(key) ? 'succeeded' : 'pending'
|
|
41
|
+
}]);
|
|
42
|
+
const artifactsProcessingPercent = Object.fromEntries(processedArtifactEntries);
|
|
43
|
+
return {
|
|
44
|
+
...fileItem,
|
|
45
|
+
details: {
|
|
46
|
+
...fileItem.details,
|
|
47
|
+
processingStatus: 'pending',
|
|
48
|
+
artifacts: artifactsProcessingPercent,
|
|
49
|
+
// The preview will only be ready at 100% -> TODO verify against backend
|
|
50
|
+
representations: {}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const createUploadingFileState = ({
|
|
2
|
+
id,
|
|
3
|
+
details: {
|
|
4
|
+
name,
|
|
5
|
+
size,
|
|
6
|
+
mediaType,
|
|
7
|
+
mimeType,
|
|
8
|
+
createdAt
|
|
9
|
+
}
|
|
10
|
+
}, progress, binary) => ({
|
|
11
|
+
status: 'uploading',
|
|
12
|
+
progress,
|
|
13
|
+
id,
|
|
14
|
+
name,
|
|
15
|
+
size,
|
|
16
|
+
mediaType,
|
|
17
|
+
mimeType,
|
|
18
|
+
createdAt,
|
|
19
|
+
preview: {
|
|
20
|
+
value: binary || new Blob(['some-content'], {
|
|
21
|
+
type: mimeType
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated Use `import { normaliseInput } from '@atlaskit/media-client/test-helpers/mocked-media-api/helpers'` instead.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export { normaliseInput } from './normaliseInput';
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated Use `import { getMediaFile } from '@atlaskit/media-client/test-helpers/mocked-media-api/helpers'` instead.
|
|
10
|
+
*/
|
|
11
|
+
export { getMediaFile } from './getMediaFile';
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated Use `import { createEmptyFileItem } from '@atlaskit/media-client/test-helpers'` instead.
|
|
14
|
+
*/
|
|
15
|
+
export { createEmptyFileItem } from './createEmptyFileItem';
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated Use `import { createProcessingFileItem } from '@atlaskit/media-client/test-helpers'` instead.
|
|
18
|
+
*/
|
|
19
|
+
export { createProcessingFileItem } from './createProcessingFileItem';
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated Use `import { copy } from '@atlaskit/media-client/test-helpers'` instead.
|
|
22
|
+
*/
|
|
23
|
+
export { copy } from './copy';
|
|
24
|
+
/**
|
|
25
|
+
* @deprecated Use `import { merge } from '@atlaskit/media-client/test-helpers'` instead.
|
|
26
|
+
*/
|
|
27
|
+
export { merge } from './merge';
|
|
28
|
+
/**
|
|
29
|
+
* @deprecated Use `import { assign } from '@atlaskit/media-client/test-helpers'` instead.
|
|
30
|
+
*/
|
|
31
|
+
export { assign } from './assign';
|
|
32
|
+
/**
|
|
33
|
+
* @deprecated Use `import { getIdentifier } from '@atlaskit/media-client/test-helpers'` instead.
|
|
34
|
+
*/
|
|
35
|
+
export { getIdentifier } from './getIdentifier';
|
|
36
|
+
/**
|
|
37
|
+
* @deprecated Use `import { createFileState } from '@atlaskit/media-client/test-helpers'` instead.
|
|
38
|
+
*/
|
|
39
|
+
export { createFileState } from './createFileState';
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated Use `import { createUploadingFileState } from '@atlaskit/media-client/test-helpers'` instead.
|
|
42
|
+
*/
|
|
43
|
+
export { createUploadingFileState } from './createUploadingFileState';
|
|
44
|
+
/**
|
|
45
|
+
* @deprecated Use `import { createErrorFileState } from '@atlaskit/media-client/test-helpers'` instead.
|
|
46
|
+
*/
|
|
47
|
+
export { createErrorFileState } from './createErrorFileState';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds/overrides the attributes from fileItemB into the fileItemA
|
|
3
|
+
* */
|
|
4
|
+
export const merge = (fileItemA, fileItemB) => {
|
|
5
|
+
var _fileItemA$details, _fileItemB$details;
|
|
6
|
+
return {
|
|
7
|
+
...fileItemA,
|
|
8
|
+
...fileItemB,
|
|
9
|
+
details: {
|
|
10
|
+
...(fileItemA === null || fileItemA === void 0 ? void 0 : fileItemA.details),
|
|
11
|
+
...(fileItemB === null || fileItemB === void 0 ? void 0 : fileItemB.details),
|
|
12
|
+
artifacts: {
|
|
13
|
+
...(fileItemA === null || fileItemA === void 0 ? void 0 : (_fileItemA$details = fileItemA.details) === null || _fileItemA$details === void 0 ? void 0 : _fileItemA$details.artifacts),
|
|
14
|
+
...(fileItemB === null || fileItemB === void 0 ? void 0 : (_fileItemB$details = fileItemB.details) === null || _fileItemB$details === void 0 ? void 0 : _fileItemB$details.artifacts)
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { defaultCollectionName } from './collectionNames';
|
|
2
|
+
const cachedAuths = {};
|
|
3
|
+
const authProviderBaseURL = 'https://media-playground.dev.atl-paas.net/';
|
|
4
|
+
export class StoryBookAuthProvider {
|
|
5
|
+
static create(isAsapEnvironment, access) {
|
|
6
|
+
const loadTenatAuth = async collectionName => {
|
|
7
|
+
const environment = isAsapEnvironment ? 'asap' : '';
|
|
8
|
+
const headers = new Headers();
|
|
9
|
+
headers.append('Content-Type', 'application/json; charset=utf-8');
|
|
10
|
+
headers.append('Accept', 'text/plain, */*; q=0.01');
|
|
11
|
+
const config = {
|
|
12
|
+
method: 'POST',
|
|
13
|
+
headers,
|
|
14
|
+
body: access ? JSON.stringify({
|
|
15
|
+
access
|
|
16
|
+
}) : undefined
|
|
17
|
+
};
|
|
18
|
+
const url = `${authProviderBaseURL}/token/tenant?collection=${collectionName}&environment=${environment}`;
|
|
19
|
+
const response = fetch(url, config);
|
|
20
|
+
|
|
21
|
+
// We leverage the fact, that our internal /toke/tenant API returns data in the same format as Auth
|
|
22
|
+
return await (await response).json();
|
|
23
|
+
};
|
|
24
|
+
return authContext => {
|
|
25
|
+
const collectionName = authContext && authContext.collectionName || defaultCollectionName;
|
|
26
|
+
const accessStr = access ? JSON.stringify(access) : '';
|
|
27
|
+
const cacheKey = `${collectionName}-${accessStr}-${isAsapEnvironment}`;
|
|
28
|
+
if (!cachedAuths[cacheKey]) {
|
|
29
|
+
cachedAuths[cacheKey] = loadTenatAuth(collectionName);
|
|
30
|
+
}
|
|
31
|
+
return cachedAuths[cacheKey];
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const cachedAuths = {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const defaultCollectionName = 'MediaServicesSample';
|
|
2
|
+
export const onlyAnimatedGifsCollectionName = 'only-animated-gifs';
|
|
3
|
+
export const fileCollectionName = `${defaultCollectionName}Files`;
|
|
4
|
+
export const defaultMediaPickerCollectionName = 'mediapicker-test';
|
|
5
|
+
export const collectionNames = [defaultCollectionName, 'MediaServicesSampleAtlaskit', 'MediaServicesSampleHulk', 'MediaServicesSampleFabric', fileCollectionName, onlyAnimatedGifsCollectionName, defaultMediaPickerCollectionName];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { RequestError } from '../utils/request';
|
|
2
|
+
import { defaultMetadata } from './defaultMetadata';
|
|
3
|
+
export const createRateLimitedError = (metadataAndHeaders = defaultMetadata) => new RequestError('serverRateLimited', {
|
|
4
|
+
...metadataAndHeaders,
|
|
5
|
+
statusCode: 429
|
|
6
|
+
});
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { RequestError } from '../utils/request';
|
|
2
|
+
import { defaultMetadata } from './defaultMetadata';
|
|
3
|
+
export const createServerUnauthorizedError = (metadataAndHeaders = defaultMetadata, innerError) => new RequestError('serverUnauthorized', {
|
|
4
|
+
...metadataAndHeaders,
|
|
5
|
+
statusCode: 403
|
|
6
|
+
}, innerError || new Error('inner error message'));
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { MediaClient } from '..';
|
|
2
|
+
import { createStorybookMediaClientConfig } from './createStorybookMediaClientConfig';
|
|
3
|
+
import { defaultAuthParameter } from './defaultAuthParameter';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Creates and returns `MediaClient` (from `media-client`) based on the data provided in parameter object.
|
|
7
|
+
*
|
|
8
|
+
* @param {AuthParameter} authParameter specifies serviceName and whatever auth should be done with clientId or asapIssuer
|
|
9
|
+
* @returns {Context}
|
|
10
|
+
*/
|
|
11
|
+
export const createStorybookMediaClient = (authParameter = defaultAuthParameter) => {
|
|
12
|
+
return new MediaClient(createStorybookMediaClientConfig(authParameter));
|
|
13
|
+
};
|