@atlaskit/media-client 25.0.3 → 26.0.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 (37) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/client/media-store/MediaStore.js +0 -22
  3. package/dist/cjs/test-helpers/MockedMediaApi/MockedMediaApi.js +432 -0
  4. package/dist/cjs/test-helpers/MockedMediaApi/helpers.js +184 -0
  5. package/dist/cjs/test-helpers/MockedMediaApi/index.js +55 -0
  6. package/dist/cjs/test-helpers/index.js +49 -0
  7. package/dist/cjs/uploader/index.js +36 -72
  8. package/dist/es2019/client/media-store/MediaStore.js +0 -21
  9. package/dist/es2019/test-helpers/MockedMediaApi/MockedMediaApi.js +161 -0
  10. package/dist/es2019/test-helpers/MockedMediaApi/helpers.js +166 -0
  11. package/dist/es2019/test-helpers/MockedMediaApi/index.js +2 -0
  12. package/dist/es2019/test-helpers/index.js +2 -1
  13. package/dist/es2019/uploader/index.js +0 -7
  14. package/dist/esm/client/media-store/MediaStore.js +0 -22
  15. package/dist/esm/test-helpers/MockedMediaApi/MockedMediaApi.js +425 -0
  16. package/dist/esm/test-helpers/MockedMediaApi/helpers.js +176 -0
  17. package/dist/esm/test-helpers/MockedMediaApi/index.js +2 -0
  18. package/dist/esm/test-helpers/index.js +2 -1
  19. package/dist/esm/uploader/index.js +36 -72
  20. package/dist/types/client/media-store/MediaStore.d.ts +1 -2
  21. package/dist/types/client/media-store/types.d.ts +1 -2
  22. package/dist/types/index.d.ts +1 -1
  23. package/dist/types/models/media.d.ts +0 -7
  24. package/dist/types/test-helpers/MockedMediaApi/MockedMediaApi.d.ts +16 -0
  25. package/dist/types/test-helpers/MockedMediaApi/helpers.d.ts +23 -0
  26. package/dist/types/test-helpers/MockedMediaApi/index.d.ts +3 -0
  27. package/dist/types/test-helpers/index.d.ts +2 -0
  28. package/dist/types-ts4.5/client/media-store/MediaStore.d.ts +1 -2
  29. package/dist/types-ts4.5/client/media-store/types.d.ts +1 -2
  30. package/dist/types-ts4.5/index.d.ts +1 -1
  31. package/dist/types-ts4.5/models/media.d.ts +0 -7
  32. package/dist/types-ts4.5/test-helpers/MockedMediaApi/MockedMediaApi.d.ts +16 -0
  33. package/dist/types-ts4.5/test-helpers/MockedMediaApi/helpers.d.ts +23 -0
  34. package/dist/types-ts4.5/test-helpers/MockedMediaApi/index.d.ts +3 -0
  35. package/dist/types-ts4.5/test-helpers/index.d.ts +2 -0
  36. package/package.json +3 -3
  37. package/tmp/api-report-tmp.d.ts +0 -1199
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/media-client
2
2
 
3
+ ## 26.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#60352](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/60352) [`ff9488b450dd`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/ff9488b450dd) - WHAT: Media has removed the ability to probe for existing file chunks.
8
+ WHY: This is to support the work to deprecate SHA1 usage and make the Media Platform comply with FedRAMP moderate controls.
9
+ HOW: Remove any calls you have directly to probing, instead upload all files directly. If you upload files via MediaPicker no changes are required.
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies
14
+
15
+ ## 25.1.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [#43817](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/43817) [`048aca70499`](https://bitbucket.org/atlassian/atlassian-frontend/commits/048aca70499) - new Mocked Media Api utility for tests
20
+
3
21
  ## 25.0.3
4
22
 
5
23
  ### Patch Changes
@@ -154,28 +154,6 @@ var MediaStore = exports.MediaStore = /*#__PURE__*/function () {
154
154
  }
155
155
  return uploadChunk;
156
156
  }()
157
- }, {
158
- key: "probeChunks",
159
- value: function probeChunks(chunks, uploadId, collectionName, traceContext) {
160
- var metadata = {
161
- method: 'POST',
162
- endpoint: '/chunk/probe'
163
- };
164
- var options = _objectSpread(_objectSpread({}, metadata), {}, {
165
- params: {
166
- uploadId: uploadId
167
- },
168
- authContext: {
169
- collectionName: collectionName
170
- },
171
- headers: jsonHeaders,
172
- body: JSON.stringify({
173
- chunks: chunks
174
- }),
175
- traceContext: traceContext
176
- });
177
- return this.request("/chunk/probe", options).then((0, _helpers.createMapResponseToJson)(metadata));
178
- }
179
157
  }, {
180
158
  key: "createFileFromUpload",
181
159
  value: function createFileFromUpload(body) {
@@ -0,0 +1,432 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createMockedMediaApi = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _helpers = require("./helpers");
11
+ var getMediaApi = function getMediaApi(_ref) {
12
+ var getFileItem = _ref.getFileItem;
13
+ return {
14
+ // --------------------------------------------------------
15
+ // UPLOAD ENDPOINTS - None is supported
16
+ // --------------------------------------------------------
17
+
18
+ touchFiles: function () {
19
+ var _touchFiles = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref2) {
20
+ var descriptors;
21
+ return _regenerator.default.wrap(function _callee$(_context) {
22
+ while (1) switch (_context.prev = _context.next) {
23
+ case 0:
24
+ descriptors = _ref2.descriptors;
25
+ throw new Error('500 - MockedMediaApi.touchFiles: method not implemented');
26
+ case 2:
27
+ case "end":
28
+ return _context.stop();
29
+ }
30
+ }, _callee);
31
+ }));
32
+ function touchFiles(_x) {
33
+ return _touchFiles.apply(this, arguments);
34
+ }
35
+ return touchFiles;
36
+ }(),
37
+ uploadChunk: function () {
38
+ var _uploadChunk = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_etag, _blob, uploadId) {
39
+ return _regenerator.default.wrap(function _callee2$(_context2) {
40
+ while (1) switch (_context2.prev = _context2.next) {
41
+ case 0:
42
+ throw new Error('500 - MockedMediaApi.uploadChunk: method not implemented');
43
+ case 1:
44
+ case "end":
45
+ return _context2.stop();
46
+ }
47
+ }, _callee2);
48
+ }));
49
+ function uploadChunk(_x2, _x3, _x4) {
50
+ return _uploadChunk.apply(this, arguments);
51
+ }
52
+ return uploadChunk;
53
+ }(),
54
+ appendChunksToUpload: function () {
55
+ var _appendChunksToUpload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
56
+ return _regenerator.default.wrap(function _callee3$(_context3) {
57
+ while (1) switch (_context3.prev = _context3.next) {
58
+ case 0:
59
+ throw new Error('500 - MockedMediaApi.appendChunksToUpload: method not implemented');
60
+ case 1:
61
+ case "end":
62
+ return _context3.stop();
63
+ }
64
+ }, _callee3);
65
+ }));
66
+ function appendChunksToUpload() {
67
+ return _appendChunksToUpload.apply(this, arguments);
68
+ }
69
+ return appendChunksToUpload;
70
+ }(),
71
+ createFileFromUpload: function () {
72
+ var _createFileFromUpload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(_ref3, _ref4) {
73
+ var uploadId, collection;
74
+ return _regenerator.default.wrap(function _callee4$(_context4) {
75
+ while (1) switch (_context4.prev = _context4.next) {
76
+ case 0:
77
+ uploadId = _ref3.uploadId;
78
+ collection = _ref4.collection;
79
+ throw new Error('500 - MockedMediaApi.createFileFromUpload: method not implemented');
80
+ case 3:
81
+ case "end":
82
+ return _context4.stop();
83
+ }
84
+ }, _callee4);
85
+ }));
86
+ function createFileFromUpload(_x5, _x6) {
87
+ return _createFileFromUpload.apply(this, arguments);
88
+ }
89
+ return createFileFromUpload;
90
+ }(),
91
+ // Used by Media Picker as a fallback for conflicted file Ids
92
+ createUpload: function () {
93
+ var _createUpload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
94
+ return _regenerator.default.wrap(function _callee5$(_context5) {
95
+ while (1) switch (_context5.prev = _context5.next) {
96
+ case 0:
97
+ throw new Error('500 - MockedMediaApi.createUpload: method not implemented');
98
+ case 1:
99
+ case "end":
100
+ return _context5.stop();
101
+ }
102
+ }, _callee5);
103
+ }));
104
+ function createUpload() {
105
+ return _createUpload.apply(this, arguments);
106
+ }
107
+ return createUpload;
108
+ }(),
109
+ // For File size limits
110
+ getRejectedResponseFromDescriptor: function getRejectedResponseFromDescriptor() {
111
+ throw new Error('500 - MockedMediaApi.getRejectedResponseFromDescriptor: method not implemented');
112
+ },
113
+ // --------------------------------------------------------
114
+ // METADATA ENDPOINTS
115
+ // --------------------------------------------------------
116
+
117
+ getFile: function () {
118
+ var _getFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(fileId) {
119
+ var fileItem;
120
+ return _regenerator.default.wrap(function _callee6$(_context6) {
121
+ while (1) switch (_context6.prev = _context6.next) {
122
+ case 0:
123
+ fileItem = getFileItem(fileId);
124
+ if (fileItem) {
125
+ _context6.next = 3;
126
+ break;
127
+ }
128
+ throw new Error('404 - MockedMediaApi.getFile: file not found');
129
+ case 3:
130
+ return _context6.abrupt("return", {
131
+ data: (0, _helpers.getMediaFile)(fileItem)
132
+ });
133
+ case 4:
134
+ case "end":
135
+ return _context6.stop();
136
+ }
137
+ }, _callee6);
138
+ }));
139
+ function getFile(_x7) {
140
+ return _getFile.apply(this, arguments);
141
+ }
142
+ return getFile;
143
+ }(),
144
+ getItems: function () {
145
+ var _getItems = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(ids) {
146
+ var items;
147
+ return _regenerator.default.wrap(function _callee7$(_context7) {
148
+ while (1) switch (_context7.prev = _context7.next) {
149
+ case 0:
150
+ items = ids.map(function (id) {
151
+ return getFileItem(id);
152
+ }).filter(function (fileState) {
153
+ return !!fileState;
154
+ });
155
+ return _context7.abrupt("return", {
156
+ data: {
157
+ items: items
158
+ }
159
+ });
160
+ case 2:
161
+ case "end":
162
+ return _context7.stop();
163
+ }
164
+ }, _callee7);
165
+ }));
166
+ function getItems(_x8) {
167
+ return _getItems.apply(this, arguments);
168
+ }
169
+ return getItems;
170
+ }(),
171
+ // TODO
172
+ getImageMetadata: function () {
173
+ var _getImageMetadata = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {
174
+ return _regenerator.default.wrap(function _callee8$(_context8) {
175
+ while (1) switch (_context8.prev = _context8.next) {
176
+ case 0:
177
+ throw new Error('500 - MockedMediaApi.getImageMetadata: method not implemented');
178
+ case 1:
179
+ case "end":
180
+ return _context8.stop();
181
+ }
182
+ }, _callee8);
183
+ }));
184
+ function getImageMetadata() {
185
+ return _getImageMetadata.apply(this, arguments);
186
+ }
187
+ return getImageMetadata;
188
+ }(),
189
+ // --------------------------------------------------------
190
+ // URL ENDPOINTS
191
+ // --------------------------------------------------------
192
+
193
+ // TODO
194
+ getFileImageURL: function () {
195
+ var _getFileImageURL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {
196
+ return _regenerator.default.wrap(function _callee9$(_context9) {
197
+ while (1) switch (_context9.prev = _context9.next) {
198
+ case 0:
199
+ throw new Error('500 - MockedMediaApi.getFileImageURL: method not implemented');
200
+ case 1:
201
+ case "end":
202
+ return _context9.stop();
203
+ }
204
+ }, _callee9);
205
+ }));
206
+ function getFileImageURL() {
207
+ return _getFileImageURL.apply(this, arguments);
208
+ }
209
+ return getFileImageURL;
210
+ }(),
211
+ // TODO
212
+ getFileImageURLSync: function getFileImageURLSync() {
213
+ throw new Error('500 - MockedMediaApi.getFileImageURLSync: method not implemented');
214
+ },
215
+ getFileBinaryURL: function () {
216
+ var _getFileBinaryURL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(id) {
217
+ var fileItem;
218
+ return _regenerator.default.wrap(function _callee10$(_context10) {
219
+ while (1) switch (_context10.prev = _context10.next) {
220
+ case 0:
221
+ fileItem = getFileItem(id);
222
+ if (fileItem) {
223
+ _context10.next = 3;
224
+ break;
225
+ }
226
+ throw new Error('404 - MockedMediaApi.getFileBinaryURL: file not found');
227
+ case 3:
228
+ if (!(fileItem.details.size === 0)) {
229
+ _context10.next = 5;
230
+ break;
231
+ }
232
+ throw new Error('404 - MockedMediaApi.getFileBinaryURL: file is empty');
233
+ case 5:
234
+ return _context10.abrupt("return", "/file/".concat(id, "/binary"));
235
+ case 6:
236
+ case "end":
237
+ return _context10.stop();
238
+ }
239
+ }, _callee10);
240
+ }));
241
+ function getFileBinaryURL(_x9) {
242
+ return _getFileBinaryURL.apply(this, arguments);
243
+ }
244
+ return getFileBinaryURL;
245
+ }(),
246
+ getArtifactURL: function () {
247
+ var _getArtifactURL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(artifacts, artifactName) {
248
+ var _artifacts$artifactNa;
249
+ var artifactUrl;
250
+ return _regenerator.default.wrap(function _callee11$(_context11) {
251
+ while (1) switch (_context11.prev = _context11.next) {
252
+ case 0:
253
+ artifactUrl = (_artifacts$artifactNa = artifacts[artifactName]) === null || _artifacts$artifactNa === void 0 ? void 0 : _artifacts$artifactNa.url;
254
+ if (artifactUrl) {
255
+ _context11.next = 3;
256
+ break;
257
+ }
258
+ throw new Error("404 - MockedMediaApi.getArtifactURL: artifact ".concat(artifactName, " not found"));
259
+ case 3:
260
+ return _context11.abrupt("return", artifactUrl);
261
+ case 4:
262
+ case "end":
263
+ return _context11.stop();
264
+ }
265
+ }, _callee11);
266
+ }));
267
+ function getArtifactURL(_x10, _x11) {
268
+ return _getArtifactURL.apply(this, arguments);
269
+ }
270
+ return getArtifactURL;
271
+ }(),
272
+ // --------------------------------------------------------
273
+ // BINARY ENDPOINTS
274
+ // --------------------------------------------------------
275
+ getImage: function () {
276
+ var _getImage = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(fileId) {
277
+ var fileItem;
278
+ return _regenerator.default.wrap(function _callee12$(_context12) {
279
+ while (1) switch (_context12.prev = _context12.next) {
280
+ case 0:
281
+ fileItem = getFileItem(fileId);
282
+ if (fileItem) {
283
+ _context12.next = 3;
284
+ break;
285
+ }
286
+ throw new Error('404 - MockedMediaApi.getImage: file not found');
287
+ case 3:
288
+ if (fileItem.details.representations.image) {
289
+ _context12.next = 5;
290
+ break;
291
+ }
292
+ throw new Error('404 - MockedMediaApi.getImage: image not found');
293
+ case 5:
294
+ return _context12.abrupt("return", new Blob());
295
+ case 6:
296
+ case "end":
297
+ return _context12.stop();
298
+ }
299
+ }, _callee12);
300
+ }));
301
+ function getImage(_x12) {
302
+ return _getImage.apply(this, arguments);
303
+ }
304
+ return getImage;
305
+ }(),
306
+ // --------------------------------------------------------
307
+ // OTHER ENDPOINTS
308
+ // --------------------------------------------------------
309
+
310
+ // TODO
311
+ copyFileWithToken: function () {
312
+ var _copyFileWithToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(body) {
313
+ var fileId, fileItem;
314
+ return _regenerator.default.wrap(function _callee13$(_context13) {
315
+ while (1) switch (_context13.prev = _context13.next) {
316
+ case 0:
317
+ fileId = body.sourceFile.id;
318
+ fileItem = getFileItem(fileId);
319
+ if (fileItem) {
320
+ _context13.next = 4;
321
+ break;
322
+ }
323
+ throw new Error('404 - MockedMediaApi.copyFileWithToken: file not found');
324
+ case 4:
325
+ return _context13.abrupt("return", {
326
+ data: (0, _helpers.getMediaFile)(fileItem)
327
+ });
328
+ case 5:
329
+ case "end":
330
+ return _context13.stop();
331
+ }
332
+ }, _callee13);
333
+ }));
334
+ function copyFileWithToken(_x13) {
335
+ return _copyFileWithToken.apply(this, arguments);
336
+ }
337
+ return copyFileWithToken;
338
+ }(),
339
+ // TODO
340
+ removeCollectionFile: function () {
341
+ var _removeCollectionFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14() {
342
+ return _regenerator.default.wrap(function _callee14$(_context14) {
343
+ while (1) switch (_context14.prev = _context14.next) {
344
+ case 0:
345
+ case "end":
346
+ return _context14.stop();
347
+ }
348
+ }, _callee14);
349
+ }));
350
+ function removeCollectionFile() {
351
+ return _removeCollectionFile.apply(this, arguments);
352
+ }
353
+ return removeCollectionFile;
354
+ }(),
355
+ // --------------------------------------------------------
356
+ // OTHER ENDPOINTS
357
+ // --------------------------------------------------------
358
+ request: function () {
359
+ var _request = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
360
+ return _regenerator.default.wrap(function _callee15$(_context15) {
361
+ while (1) switch (_context15.prev = _context15.next) {
362
+ case 0:
363
+ return _context15.abrupt("return", new Response());
364
+ case 1:
365
+ case "end":
366
+ return _context15.stop();
367
+ }
368
+ }, _callee15);
369
+ }));
370
+ function request() {
371
+ return _request.apply(this, arguments);
372
+ }
373
+ return request;
374
+ }(),
375
+ resolveAuth: function () {
376
+ var _resolveAuth = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
377
+ return _regenerator.default.wrap(function _callee16$(_context16) {
378
+ while (1) switch (_context16.prev = _context16.next) {
379
+ case 0:
380
+ return _context16.abrupt("return", {
381
+ asapIssuer: '',
382
+ token: '',
383
+ baseUrl: ''
384
+ });
385
+ case 1:
386
+ case "end":
387
+ return _context16.stop();
388
+ }
389
+ }, _callee16);
390
+ }));
391
+ function resolveAuth() {
392
+ return _resolveAuth.apply(this, arguments);
393
+ }
394
+ return resolveAuth;
395
+ }(),
396
+ resolveInitialAuth: function resolveInitialAuth() {
397
+ return {
398
+ asapIssuer: '',
399
+ token: '',
400
+ baseUrl: ''
401
+ };
402
+ }
403
+ };
404
+ };
405
+
406
+ /**
407
+ * Mocked Media API
408
+ */
409
+ var createMockedMediaApi = exports.createMockedMediaApi = function createMockedMediaApi(initialFileItems) {
410
+ var storedFileItems = new Map();
411
+ var getFileItem = function getFileItem(fileId) {
412
+ return storedFileItems.get(fileId);
413
+ };
414
+ var setFileItems = function setFileItems(fileItems) {
415
+ var normalised = (0, _helpers.normaliseInput)(fileItems);
416
+ normalised.forEach(function (fileItem) {
417
+ return storedFileItems.set(fileItem.id, fileItem);
418
+ });
419
+ };
420
+ if (initialFileItems) {
421
+ setFileItems(initialFileItems);
422
+ }
423
+ var mediaApi = getMediaApi({
424
+ setFileItems: setFileItems,
425
+ getFileItem: getFileItem
426
+ });
427
+ return {
428
+ setFileItems: setFileItems,
429
+ getFileItem: getFileItem,
430
+ mediaApi: mediaApi
431
+ };
432
+ };
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.normaliseInput = exports.getMediaFile = exports.getIdentifier = exports.createUploadingFileState = exports.createProcessingFileItem = exports.createFileState = exports.createErrorFileState = exports.createEmptyFileItem = exports.copy = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _v = _interopRequireDefault(require("uuid/v4"));
11
+ 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; }
12
+ 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; }
13
+ // --------------------------------------------------------
14
+ // Factory Utils
15
+ // --------------------------------------------------------
16
+
17
+ var normaliseInput = exports.normaliseInput = function normaliseInput(input) {
18
+ return !input ? [] : input instanceof Array ? input : [input];
19
+ };
20
+
21
+ // --------------------------------------------------------
22
+ // Utils for the main class
23
+ // --------------------------------------------------------
24
+
25
+ var getMediaFile = exports.getMediaFile = function getMediaFile(fileItem) {
26
+ return _objectSpread({
27
+ id: fileItem.id
28
+ }, fileItem.details);
29
+ };
30
+
31
+ // --------------------------------------------------------
32
+ // Utils for creating file descriptors for tests
33
+ // --------------------------------------------------------
34
+
35
+ var createEmptyFileItem = exports.createEmptyFileItem = function createEmptyFileItem(id, collection) {
36
+ var emptyFileItem = {
37
+ type: 'file',
38
+ id: id,
39
+ details: {
40
+ mediaType: 'unknown',
41
+ mimeType: 'binary/octet-stream',
42
+ name: '',
43
+ size: 0,
44
+ processingStatus: 'pending',
45
+ artifacts: {},
46
+ representations: {},
47
+ createdAt: 1699488941974
48
+ }
49
+ };
50
+ if (collection) {
51
+ emptyFileItem.collection = collection;
52
+ }
53
+ return emptyFileItem;
54
+ };
55
+
56
+ /**
57
+ * Simulates the processing of the file by updating the processing status of the artifacts by a percentage
58
+ * Percent must be between 0 and 1
59
+ */
60
+ var createProcessingFileItem = exports.createProcessingFileItem = function createProcessingFileItem(fileItem, percent) {
61
+ if (percent < 0 || percent > 1) {
62
+ throw new Error('Error createProcessingFileItem: percent must be between 0 and 1');
63
+ }
64
+
65
+ /**
66
+ * This behaviour has to be confirmed
67
+ * Artifacts show up immediately after processed or they have a
68
+ * "processing time"?
69
+ */
70
+
71
+ if (percent === 1) {
72
+ return fileItem;
73
+ }
74
+
75
+ // No artifacts for 0% processing
76
+ if (percent === 0) {
77
+ return _objectSpread(_objectSpread({}, fileItem), {}, {
78
+ details: _objectSpread(_objectSpread({}, fileItem.details), {}, {
79
+ processingStatus: 'pending',
80
+ artifacts: {},
81
+ // The preview will only be ready at 100% -> TODO verify against backend
82
+ representations: {}
83
+ })
84
+ });
85
+ }
86
+ var artifactsKeys = Object.keys(fileItem.details.artifacts);
87
+ var artifactsEntries = Object.entries(_objectSpread({}, fileItem.details.artifacts));
88
+
89
+ // Get a % of the total artifacts to be set as processed
90
+ var processedArtifactKeys = artifactsKeys.slice(0, Math.ceil(artifactsKeys.length * percent));
91
+ var processedArtifactEntries = artifactsEntries.map(function (_ref) {
92
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
93
+ key = _ref2[0],
94
+ artifact = _ref2[1];
95
+ return [key, _objectSpread(_objectSpread({}, artifact), {}, {
96
+ processingStatus: processedArtifactKeys.includes(key) ? 'succeeded' : 'pending'
97
+ })];
98
+ });
99
+ var artifactsProcessingPercent = Object.fromEntries(processedArtifactEntries);
100
+ return _objectSpread(_objectSpread({}, fileItem), {}, {
101
+ details: _objectSpread(_objectSpread({}, fileItem.details), {}, {
102
+ processingStatus: 'pending',
103
+ artifacts: artifactsProcessingPercent,
104
+ // The preview will only be ready at 100% -> TODO verify against backend
105
+ representations: {}
106
+ })
107
+ });
108
+ };
109
+
110
+ /**
111
+ * Makes a copy of the provided file item with a random file id
112
+ * */
113
+ var copy = exports.copy = function copy(fileItem) {
114
+ return JSON.parse(JSON.stringify(fileItem).replace(new RegExp(fileItem.id, 'g'), (0, _v.default)()));
115
+ };
116
+ /**
117
+ * Extracts the file identifier from the provided file item
118
+ */
119
+ var getIdentifier = exports.getIdentifier = function getIdentifier(fileItem) {
120
+ return {
121
+ mediaItemType: 'file',
122
+ id: fileItem.id,
123
+ collectionName: fileItem.collection
124
+ };
125
+ };
126
+ var createFileState = exports.createFileState = function createFileState(_ref3) {
127
+ var id = _ref3.id,
128
+ _ref3$details = _ref3.details,
129
+ name = _ref3$details.name,
130
+ size = _ref3$details.size,
131
+ mediaType = _ref3$details.mediaType,
132
+ mimeType = _ref3$details.mimeType,
133
+ createdAt = _ref3$details.createdAt,
134
+ processingStatus = _ref3$details.processingStatus,
135
+ artifacts = _ref3$details.artifacts,
136
+ representations = _ref3$details.representations;
137
+ return {
138
+ status: processingStatus === 'succeeded' ? 'processed' : 'processing',
139
+ id: id,
140
+ name: name,
141
+ size: size,
142
+ mediaType: mediaType,
143
+ mimeType: mimeType,
144
+ createdAt: createdAt,
145
+ artifacts: artifacts,
146
+ representations: representations
147
+ };
148
+ };
149
+ var createUploadingFileState = exports.createUploadingFileState = function createUploadingFileState(_ref4, progress) {
150
+ var id = _ref4.id,
151
+ _ref4$details = _ref4.details,
152
+ name = _ref4$details.name,
153
+ size = _ref4$details.size,
154
+ mediaType = _ref4$details.mediaType,
155
+ mimeType = _ref4$details.mimeType,
156
+ createdAt = _ref4$details.createdAt;
157
+ return {
158
+ status: 'uploading',
159
+ progress: progress,
160
+ id: id,
161
+ name: name,
162
+ size: size,
163
+ mediaType: mediaType,
164
+ mimeType: mimeType,
165
+ createdAt: createdAt,
166
+ preview: {
167
+ value: new Blob(['some-content'], {
168
+ type: mimeType
169
+ })
170
+ }
171
+ };
172
+ };
173
+ var createErrorFileState = exports.createErrorFileState = function createErrorFileState(_ref5) {
174
+ var id = _ref5.id;
175
+ return {
176
+ status: 'error',
177
+ id: id,
178
+ reason: 'a random error',
179
+ message: 'a random error message',
180
+ details: {
181
+ some: 'mocked error detail'
182
+ }
183
+ };
184
+ };