@atlaskit/media-client 39.1.19 → 39.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/test-helpers/AuthParameter.js +1 -0
  3. package/dist/cjs/test-helpers/MediaHeaders.js +1 -0
  4. package/dist/cjs/test-helpers/MockedMediaApi/MockedMediaApi.js +615 -0
  5. package/dist/cjs/test-helpers/MockedMediaApi/assign.js +21 -0
  6. package/dist/cjs/test-helpers/MockedMediaApi/copy.js +18 -0
  7. package/dist/cjs/test-helpers/MockedMediaApi/createEmptyFileItem.js +29 -0
  8. package/dist/cjs/test-helpers/MockedMediaApi/createErrorFileState.js +14 -0
  9. package/dist/cjs/test-helpers/MockedMediaApi/createFileState.js +29 -0
  10. package/dist/cjs/test-helpers/MockedMediaApi/createProcessingFileItem.js +64 -0
  11. package/dist/cjs/test-helpers/MockedMediaApi/createUploadingFileState.js +30 -0
  12. package/dist/cjs/test-helpers/MockedMediaApi/getIdentifier.js +16 -0
  13. package/dist/cjs/test-helpers/MockedMediaApi/getMediaFile.js +18 -0
  14. package/dist/cjs/test-helpers/MockedMediaApi/helpers.js +82 -0
  15. package/dist/cjs/test-helpers/MockedMediaApi/merge.js +21 -0
  16. package/dist/cjs/test-helpers/MockedMediaApi/normaliseInput.js +12 -0
  17. package/dist/cjs/test-helpers/MockedMediaApi/types.js +5 -0
  18. package/dist/cjs/test-helpers/_numbers.js +9 -0
  19. package/dist/cjs/test-helpers/authProvider.js +69 -0
  20. package/dist/cjs/test-helpers/cachedAuths.js +7 -0
  21. package/dist/cjs/test-helpers/collectionNames.js +11 -0
  22. package/dist/cjs/test-helpers/createMediaStoreError.js +10 -0
  23. package/dist/cjs/test-helpers/createPollingMaxAttemptsError.js +13 -0
  24. package/dist/cjs/test-helpers/createRateLimitedError.js +18 -0
  25. package/dist/cjs/test-helpers/createServerUnauthorizedError.js +19 -0
  26. package/dist/cjs/test-helpers/createStorybookMediaClient.js +19 -0
  27. package/dist/cjs/test-helpers/createStorybookMediaClientConfig.js +24 -0
  28. package/dist/cjs/test-helpers/createUploadMediaClient.js +11 -0
  29. package/dist/cjs/test-helpers/createUploadMediaClientConfig.js +13 -0
  30. package/dist/cjs/test-helpers/defaultAuthParameter.js +9 -0
  31. package/dist/cjs/test-helpers/defaultMediaPickerAuthProvider.js +17 -0
  32. package/dist/cjs/test-helpers/defaultMetadata.js +16 -0
  33. package/dist/cjs/test-helpers/exampleMediaItems.js +298 -0
  34. package/dist/cjs/test-helpers/fakeMediaClient.js +78 -0
  35. package/dist/cjs/test-helpers/getDefaultMediaClientConfig.js +15 -0
  36. package/dist/cjs/test-helpers/index.js +582 -0
  37. package/dist/cjs/test-helpers/mediaClientErrors.js +40 -0
  38. package/dist/cjs/test-helpers/mediaClientProvider.js +73 -0
  39. package/dist/cjs/test-helpers/mediaPickerAuthProvider.js +56 -0
  40. package/dist/cjs/test-helpers/requestAuthProvider.js +48 -0
  41. package/dist/es2019/test-helpers/AuthParameter.js +0 -0
  42. package/dist/es2019/test-helpers/MediaHeaders.js +0 -0
  43. package/dist/es2019/test-helpers/MockedMediaApi/MockedMediaApi.js +205 -0
  44. package/dist/es2019/test-helpers/MockedMediaApi/assign.js +18 -0
  45. package/dist/es2019/test-helpers/MockedMediaApi/copy.js +8 -0
  46. package/dist/es2019/test-helpers/MockedMediaApi/createEmptyFileItem.js +23 -0
  47. package/dist/es2019/test-helpers/MockedMediaApi/createErrorFileState.js +6 -0
  48. package/dist/es2019/test-helpers/MockedMediaApi/createFileState.js +23 -0
  49. package/dist/es2019/test-helpers/MockedMediaApi/createProcessingFileItem.js +53 -0
  50. package/dist/es2019/test-helpers/MockedMediaApi/createUploadingFileState.js +24 -0
  51. package/dist/es2019/test-helpers/MockedMediaApi/getIdentifier.js +8 -0
  52. package/dist/es2019/test-helpers/MockedMediaApi/getMediaFile.js +7 -0
  53. package/dist/es2019/test-helpers/MockedMediaApi/helpers.js +47 -0
  54. package/dist/es2019/test-helpers/MockedMediaApi/merge.js +18 -0
  55. package/dist/es2019/test-helpers/MockedMediaApi/normaliseInput.js +4 -0
  56. package/dist/es2019/test-helpers/MockedMediaApi/types.js +1 -0
  57. package/dist/es2019/test-helpers/_numbers.js +3 -0
  58. package/dist/es2019/test-helpers/authProvider.js +34 -0
  59. package/dist/es2019/test-helpers/cachedAuths.js +1 -0
  60. package/dist/es2019/test-helpers/collectionNames.js +5 -0
  61. package/dist/es2019/test-helpers/createMediaStoreError.js +2 -0
  62. package/dist/es2019/test-helpers/createPollingMaxAttemptsError.js +4 -0
  63. package/dist/es2019/test-helpers/createRateLimitedError.js +6 -0
  64. package/dist/es2019/test-helpers/createServerUnauthorizedError.js +6 -0
  65. package/dist/es2019/test-helpers/createStorybookMediaClient.js +13 -0
  66. package/dist/es2019/test-helpers/createStorybookMediaClientConfig.js +17 -0
  67. package/dist/es2019/test-helpers/createUploadMediaClient.js +3 -0
  68. package/dist/es2019/test-helpers/createUploadMediaClientConfig.js +5 -0
  69. package/dist/es2019/test-helpers/defaultAuthParameter.js +3 -0
  70. package/dist/es2019/test-helpers/defaultMediaPickerAuthProvider.js +9 -0
  71. package/dist/es2019/test-helpers/defaultMetadata.js +10 -0
  72. package/dist/es2019/test-helpers/exampleMediaItems.js +292 -0
  73. package/dist/es2019/test-helpers/fakeMediaClient.js +63 -0
  74. package/dist/es2019/test-helpers/getDefaultMediaClientConfig.js +7 -0
  75. package/dist/es2019/test-helpers/index.js +103 -0
  76. package/dist/es2019/test-helpers/mediaClientErrors.js +26 -0
  77. package/dist/es2019/test-helpers/mediaClientProvider.js +33 -0
  78. package/dist/es2019/test-helpers/mediaPickerAuthProvider.js +39 -0
  79. package/dist/es2019/test-helpers/requestAuthProvider.js +18 -0
  80. package/dist/esm/test-helpers/AuthParameter.js +0 -0
  81. package/dist/esm/test-helpers/MediaHeaders.js +0 -0
  82. package/dist/esm/test-helpers/MockedMediaApi/MockedMediaApi.js +608 -0
  83. package/dist/esm/test-helpers/MockedMediaApi/assign.js +14 -0
  84. package/dist/esm/test-helpers/MockedMediaApi/copy.js +11 -0
  85. package/dist/esm/test-helpers/MockedMediaApi/createEmptyFileItem.js +23 -0
  86. package/dist/esm/test-helpers/MockedMediaApi/createErrorFileState.js +8 -0
  87. package/dist/esm/test-helpers/MockedMediaApi/createFileState.js +23 -0
  88. package/dist/esm/test-helpers/MockedMediaApi/createProcessingFileItem.js +57 -0
  89. package/dist/esm/test-helpers/MockedMediaApi/createUploadingFileState.js +24 -0
  90. package/dist/esm/test-helpers/MockedMediaApi/getIdentifier.js +10 -0
  91. package/dist/esm/test-helpers/MockedMediaApi/getMediaFile.js +11 -0
  92. package/dist/esm/test-helpers/MockedMediaApi/helpers.js +47 -0
  93. package/dist/esm/test-helpers/MockedMediaApi/merge.js +14 -0
  94. package/dist/esm/test-helpers/MockedMediaApi/normaliseInput.js +6 -0
  95. package/dist/esm/test-helpers/MockedMediaApi/types.js +1 -0
  96. package/dist/esm/test-helpers/_numbers.js +3 -0
  97. package/dist/esm/test-helpers/authProvider.js +62 -0
  98. package/dist/esm/test-helpers/cachedAuths.js +1 -0
  99. package/dist/esm/test-helpers/collectionNames.js +5 -0
  100. package/dist/esm/test-helpers/createMediaStoreError.js +4 -0
  101. package/dist/esm/test-helpers/createPollingMaxAttemptsError.js +7 -0
  102. package/dist/esm/test-helpers/createRateLimitedError.js +11 -0
  103. package/dist/esm/test-helpers/createServerUnauthorizedError.js +12 -0
  104. package/dist/esm/test-helpers/createStorybookMediaClient.js +14 -0
  105. package/dist/esm/test-helpers/createStorybookMediaClientConfig.js +18 -0
  106. package/dist/esm/test-helpers/createUploadMediaClient.js +5 -0
  107. package/dist/esm/test-helpers/createUploadMediaClientConfig.js +7 -0
  108. package/dist/esm/test-helpers/defaultAuthParameter.js +3 -0
  109. package/dist/esm/test-helpers/defaultMediaPickerAuthProvider.js +11 -0
  110. package/dist/esm/test-helpers/defaultMetadata.js +10 -0
  111. package/dist/esm/test-helpers/exampleMediaItems.js +292 -0
  112. package/dist/esm/test-helpers/fakeMediaClient.js +67 -0
  113. package/dist/esm/test-helpers/getDefaultMediaClientConfig.js +9 -0
  114. package/dist/esm/test-helpers/index.js +103 -0
  115. package/dist/esm/test-helpers/mediaClientErrors.js +26 -0
  116. package/dist/esm/test-helpers/mediaClientProvider.js +33 -0
  117. package/dist/esm/test-helpers/mediaPickerAuthProvider.js +43 -0
  118. package/dist/esm/test-helpers/requestAuthProvider.js +41 -0
  119. package/dist/types/test-helpers/AuthParameter.d.ts +3 -0
  120. package/dist/types/test-helpers/MediaHeaders.d.ts +4 -0
  121. package/dist/types/test-helpers/MockedMediaApi/MockedMediaApi.d.ts +16 -0
  122. package/dist/types/test-helpers/MockedMediaApi/assign.d.ts +6 -0
  123. package/dist/types/test-helpers/MockedMediaApi/copy.d.ts +5 -0
  124. package/dist/types/test-helpers/MockedMediaApi/createEmptyFileItem.d.ts +2 -0
  125. package/dist/types/test-helpers/MockedMediaApi/createErrorFileState.d.ts +4 -0
  126. package/dist/types/test-helpers/MockedMediaApi/createFileState.d.ts +3 -0
  127. package/dist/types/test-helpers/MockedMediaApi/createProcessingFileItem.d.ts +6 -0
  128. package/dist/types/test-helpers/MockedMediaApi/createUploadingFileState.d.ts +3 -0
  129. package/dist/types/test-helpers/MockedMediaApi/getIdentifier.d.ts +6 -0
  130. package/dist/types/test-helpers/MockedMediaApi/getMediaFile.d.ts +3 -0
  131. package/dist/types/test-helpers/MockedMediaApi/helpers.d.ts +44 -0
  132. package/dist/types/test-helpers/MockedMediaApi/merge.d.ts +5 -0
  133. package/dist/types/test-helpers/MockedMediaApi/normaliseInput.d.ts +1 -0
  134. package/dist/types/test-helpers/MockedMediaApi/types.d.ts +8 -0
  135. package/dist/types/test-helpers/_numbers.d.ts +1 -0
  136. package/dist/types/test-helpers/authProvider.d.ts +6 -0
  137. package/dist/types/test-helpers/cachedAuths.d.ts +4 -0
  138. package/dist/types/test-helpers/collectionNames.d.ts +5 -0
  139. package/dist/types/test-helpers/createMediaStoreError.d.ts +2 -0
  140. package/dist/types/test-helpers/createPollingMaxAttemptsError.d.ts +2 -0
  141. package/dist/types/test-helpers/createRateLimitedError.d.ts +8 -0
  142. package/dist/types/test-helpers/createServerUnauthorizedError.d.ts +8 -0
  143. package/dist/types/test-helpers/createStorybookMediaClient.d.ts +9 -0
  144. package/dist/types/test-helpers/createStorybookMediaClientConfig.d.ts +3 -0
  145. package/dist/types/test-helpers/createUploadMediaClient.d.ts +2 -0
  146. package/dist/types/test-helpers/createUploadMediaClientConfig.d.ts +3 -0
  147. package/dist/types/test-helpers/defaultAuthParameter.d.ts +2 -0
  148. package/dist/types/test-helpers/defaultMediaPickerAuthProvider.d.ts +1 -0
  149. package/dist/types/test-helpers/defaultMetadata.d.ts +3 -0
  150. package/dist/types/test-helpers/exampleMediaItems.d.ts +75 -0
  151. package/dist/types/test-helpers/fakeMediaClient.d.ts +7 -0
  152. package/dist/types/test-helpers/getDefaultMediaClientConfig.d.ts +2 -0
  153. package/dist/types/test-helpers/index.d.ts +103 -0
  154. package/dist/types/test-helpers/mediaClientErrors.d.ts +24 -0
  155. package/dist/types/test-helpers/mediaClientProvider.d.ts +30 -0
  156. package/dist/types/test-helpers/mediaPickerAuthProvider.d.ts +14 -0
  157. package/dist/types/test-helpers/requestAuthProvider.d.ts +3 -0
  158. package/package.json +4 -4
  159. 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,8 @@
1
+ /**
2
+ * Extracts the file identifier from the provided file item
3
+ */
4
+ export const getIdentifier = fileItem => ({
5
+ mediaItemType: 'file',
6
+ id: fileItem.id,
7
+ collectionName: fileItem.collection
8
+ });
@@ -0,0 +1,7 @@
1
+ // --------------------------------------------------------
2
+ // Utils for the main class
3
+ // --------------------------------------------------------
4
+ export const getMediaFile = fileItem => ({
5
+ id: fileItem.id,
6
+ ...fileItem.details
7
+ });
@@ -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,4 @@
1
+ // --------------------------------------------------------
2
+ // Factory Utils
3
+ // --------------------------------------------------------
4
+ export const normaliseInput = input => !input ? [] : input instanceof Array ? input : [input];
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export function numbers(count) {
2
+ return Array.from(Array(count).keys());
3
+ }
@@ -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,2 @@
1
+ import { MediaStoreError } from '../client/media-store/MediaStoreError';
2
+ export const createMediaStoreError = () => new MediaStoreError('missingInitialAuth');
@@ -0,0 +1,4 @@
1
+ import { PollingError } from '../utils/polling';
2
+ export const createPollingMaxAttemptsError = (attempts = 1) => new PollingError('pollingMaxAttemptsExceeded', {
3
+ attempts
4
+ });
@@ -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
+ };