@atlaskit/media-client 28.0.7 → 28.1.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 (48) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/client/file-fetcher/error.js +11 -3
  3. package/dist/cjs/client/file-fetcher/index.js +29 -11
  4. package/dist/cjs/client/media-store/MediaStore.js +1 -1
  5. package/dist/cjs/models/artifacts.js +1 -1
  6. package/dist/cjs/models/media.js +4 -1
  7. package/dist/cjs/utils/createFileDataLoader.js +43 -10
  8. package/dist/cjs/utils/mediaCdn.js +1 -1
  9. package/dist/cjs/utils/mobileUpload/error.js +6 -2
  10. package/dist/cjs/utils/mobileUpload/helpers.js +6 -3
  11. package/dist/cjs/utils/request/errors.js +4 -0
  12. package/dist/es2019/client/file-fetcher/error.js +8 -2
  13. package/dist/es2019/client/file-fetcher/index.js +42 -17
  14. package/dist/es2019/client/media-store/MediaStore.js +1 -1
  15. package/dist/es2019/models/artifacts.js +1 -1
  16. package/dist/es2019/models/media.js +3 -0
  17. package/dist/es2019/utils/createFileDataLoader.js +34 -5
  18. package/dist/es2019/utils/mediaCdn.js +1 -1
  19. package/dist/es2019/utils/mobileUpload/error.js +6 -2
  20. package/dist/es2019/utils/mobileUpload/helpers.js +6 -3
  21. package/dist/es2019/utils/request/errors.js +5 -1
  22. package/dist/esm/client/file-fetcher/error.js +11 -3
  23. package/dist/esm/client/file-fetcher/index.js +30 -12
  24. package/dist/esm/client/media-store/MediaStore.js +1 -1
  25. package/dist/esm/models/artifacts.js +1 -1
  26. package/dist/esm/models/media.js +3 -0
  27. package/dist/esm/utils/createFileDataLoader.js +43 -10
  28. package/dist/esm/utils/mediaCdn.js +1 -1
  29. package/dist/esm/utils/mobileUpload/error.js +6 -2
  30. package/dist/esm/utils/mobileUpload/helpers.js +6 -3
  31. package/dist/esm/utils/request/errors.js +4 -0
  32. package/dist/types/client/file-fetcher/error.d.ts +7 -0
  33. package/dist/types/client/media-store/index.d.ts +1 -1
  34. package/dist/types/client/media-store/types.d.ts +6 -0
  35. package/dist/types/index.d.ts +1 -1
  36. package/dist/types/models/media.d.ts +7 -0
  37. package/dist/types/utils/createFileDataLoader.d.ts +4 -4
  38. package/dist/types/utils/mobileUpload/error.d.ts +7 -0
  39. package/dist/types/utils/request/errors.d.ts +3 -0
  40. package/dist/types-ts4.5/client/file-fetcher/error.d.ts +7 -0
  41. package/dist/types-ts4.5/client/media-store/index.d.ts +1 -1
  42. package/dist/types-ts4.5/client/media-store/types.d.ts +6 -0
  43. package/dist/types-ts4.5/index.d.ts +1 -1
  44. package/dist/types-ts4.5/models/media.d.ts +7 -0
  45. package/dist/types-ts4.5/utils/createFileDataLoader.d.ts +4 -4
  46. package/dist/types-ts4.5/utils/mobileUpload/error.d.ts +7 -0
  47. package/dist/types-ts4.5/utils/request/errors.d.ts +3 -0
  48. package/package.json +2 -8
@@ -16,7 +16,7 @@ export function mapToMediaCdnUrl(url, token) {
16
16
  return url;
17
17
  }
18
18
  // eslint-disable-next-line @atlaskit/platform/no-preconditioning
19
- if ((fg('platform.media-cdn-delivery') || fg('platform_media_cdn_delivery')) && (fg('platform.media-cdn-single-host') || fg('platform_media_cdn_single_host'))) {
19
+ if (fg('platform_media_cdn_delivery') && fg('platform_media_cdn_single_host')) {
20
20
  try {
21
21
  const parsedUrl = new URL(url);
22
22
  const cdnHost = MEDIA_CDN_MAP[parsedUrl.host];
@@ -12,14 +12,18 @@ export class MobileUploadError extends BaseMediaClientError {
12
12
  id,
13
13
  metadata: {
14
14
  collectionName,
15
- occurrenceKey
15
+ occurrenceKey,
16
+ traceContext
16
17
  } = {}
17
18
  } = this;
18
19
  return {
19
20
  reason,
20
21
  id,
21
22
  collectionName,
22
- occurrenceKey
23
+ occurrenceKey,
24
+ metadata: {
25
+ traceContext
26
+ }
23
27
  };
24
28
  }
25
29
  }
@@ -6,6 +6,7 @@ import { createMediaSubject } from '../createMediaSubject';
6
6
  import { isEmptyFile } from '../detectEmptyFile';
7
7
  import { PollingFunction } from '../polling';
8
8
  import { MobileUploadError } from './error';
9
+ import { isNotFoundMediaItemDetails } from '../../models/media';
9
10
  export const createMobileFileStateSubject = service => {
10
11
  const subject = new ReplaySubject(1);
11
12
  from(service.start()).pipe(map(state => state.context.currentFileState)).subscribe(subject);
@@ -22,16 +23,18 @@ export const createMobileDownloadFileStream = (dataloader, id, collectionName, o
22
23
  id,
23
24
  collectionName
24
25
  });
25
- if (!response) {
26
+ if (isNotFoundMediaItemDetails(response)) {
26
27
  throw new MobileUploadError('emptyItems', id, {
27
28
  collectionName,
28
- occurrenceKey
29
+ occurrenceKey,
30
+ traceContext: response.metadataTraceContext
29
31
  });
30
32
  }
31
33
  if (isEmptyFile(response)) {
32
34
  throw new MobileUploadError('zeroVersionFile', id, {
33
35
  collectionName,
34
- occurrenceKey
36
+ occurrenceKey,
37
+ traceContext: response.metadataTraceContext
35
38
  });
36
39
  }
37
40
  const fileState = mapMediaItemToFileState(id, response);
@@ -16,7 +16,8 @@ export class RequestError extends BaseMediaClientError {
16
16
  mediaEnv,
17
17
  attempts,
18
18
  clientExhaustedRetries,
19
- statusCode
19
+ statusCode,
20
+ traceContext
20
21
  } = {},
21
22
  innerError
22
23
  } = this;
@@ -29,6 +30,9 @@ export class RequestError extends BaseMediaClientError {
29
30
  attempts,
30
31
  clientExhaustedRetries,
31
32
  statusCode,
33
+ metadata: {
34
+ traceContext
35
+ },
32
36
  innerError
33
37
  };
34
38
  }
@@ -1,8 +1,11 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
1
2
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
3
  import _createClass from "@babel/runtime/helpers/createClass";
3
4
  import _inherits from "@babel/runtime/helpers/inherits";
4
5
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
5
6
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
+ 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; }
8
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
9
  function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = _getPrototypeOf(t); if (r) { var s = _getPrototypeOf(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return _possibleConstructorReturn(this, e); }; }
7
10
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
8
11
  import { BaseMediaClientError } from '../../models/errors';
@@ -26,13 +29,18 @@ export var FileFetcherError = /*#__PURE__*/function (_BaseMediaClientError) {
26
29
  _this$metadata = this.metadata,
27
30
  _this$metadata2 = _this$metadata === void 0 ? {} : _this$metadata,
28
31
  collectionName = _this$metadata2.collectionName,
29
- occurrenceKey = _this$metadata2.occurrenceKey;
30
- return {
32
+ occurrenceKey = _this$metadata2.occurrenceKey,
33
+ traceContext = _this$metadata2.traceContext;
34
+ return _objectSpread({
31
35
  reason: reason,
32
36
  id: id,
33
37
  collectionName: collectionName,
34
38
  occurrenceKey: occurrenceKey
35
- };
39
+ }, traceContext && {
40
+ metadata: {
41
+ traceContext: traceContext
42
+ }
43
+ });
36
44
  }
37
45
  }]);
38
46
  return FileFetcherError;
@@ -1,10 +1,13 @@
1
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
3
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
4
  import _createClass from "@babel/runtime/helpers/createClass";
4
5
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
6
+ var _excluded = ["metadata"],
7
+ _excluded2 = ["metadata"];
8
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
5
9
  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; }
6
10
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
- import _regeneratorRuntime from "@babel/runtime/regenerator";
8
11
  import { Subscription } from 'rxjs/Subscription';
9
12
  import { map } from 'rxjs/operators/map';
10
13
  import uuid from 'uuid/v4';
@@ -12,6 +15,7 @@ import { authToOwner } from '@atlaskit/media-core';
12
15
  import { downloadUrl } from '@atlaskit/media-common/downloadUrl';
13
16
  import { MediaStore as MediaApi } from '../media-store';
14
17
  import { isErrorFileState, isFinalFileState, isProcessingFileState, mapMediaFileToFileState, mapMediaItemToFileState } from '../../models/file-state';
18
+ import { isNotFoundMediaItemDetails } from '../../models/media';
15
19
  import { FileFetcherError } from './error';
16
20
  import { uploadFile } from '../../uploader';
17
21
  import { getFileStreamsCache } from '../../file-streams-cache';
@@ -37,6 +41,10 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
37
41
  var store = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : mediaStore;
38
42
  _classCallCheck(this, FileFetcherImpl);
39
43
  _defineProperty(this, "getErrorFileState", function (error, id, occurrenceKey) {
44
+ var _error$attributes;
45
+ var _ref = (_error$attributes = error === null || error === void 0 ? void 0 : error.attributes) !== null && _error$attributes !== void 0 ? _error$attributes : {},
46
+ metadata = _ref.metadata,
47
+ attributes = _objectWithoutProperties(_ref, _excluded);
40
48
  return typeof error === 'string' ? {
41
49
  status: 'error',
42
50
  id: id,
@@ -47,7 +55,9 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
47
55
  status: 'error',
48
56
  id: id,
49
57
  reason: error === null || error === void 0 ? void 0 : error.reason,
50
- details: error === null || error === void 0 ? void 0 : error.attributes,
58
+ details: _objectSpread(_objectSpread({}, attributes), (metadata === null || metadata === void 0 ? void 0 : metadata.traceContext) && {
59
+ metadata: metadata
60
+ }),
51
61
  occurrenceKey: occurrenceKey,
52
62
  message: error === null || error === void 0 ? void 0 : error.message
53
63
  };
@@ -78,13 +88,14 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
78
88
  });
79
89
  case 2:
80
90
  response = _context.sent;
81
- if (response) {
91
+ if (!isNotFoundMediaItemDetails(response)) {
82
92
  _context.next = 5;
83
93
  break;
84
94
  }
85
95
  throw new FileFetcherError('emptyItems', id, {
86
96
  collectionName: collectionName,
87
- occurrenceKey: occurrenceKey
97
+ occurrenceKey: occurrenceKey,
98
+ traceContext: response.metadataTraceContext
88
99
  });
89
100
  case 5:
90
101
  if (!isEmptyFile(response)) {
@@ -93,7 +104,8 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
93
104
  }
94
105
  throw new FileFetcherError('zeroVersionFile', id, {
95
106
  collectionName: collectionName,
96
- occurrenceKey: occurrenceKey
107
+ occurrenceKey: occurrenceKey,
108
+ traceContext: response.metadataTraceContext
97
109
  });
98
110
  case 7:
99
111
  fileState = mapMediaItemToFileState(id, response);
@@ -161,18 +173,24 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
161
173
  var collectionName = options.collectionName,
162
174
  occurrenceKey = options.occurrenceKey;
163
175
  if (!isValidId(id)) {
176
+ var _err$attributes;
164
177
  var subject = createMediaSubject();
165
178
  var err = new FileFetcherError('invalidFileId', id, {
166
179
  collectionName: collectionName,
167
180
  occurrenceKey: occurrenceKey
168
181
  });
182
+ var _ref3 = (_err$attributes = err === null || err === void 0 ? void 0 : err.attributes) !== null && _err$attributes !== void 0 ? _err$attributes : {},
183
+ metadata = _ref3.metadata,
184
+ attributes = _objectWithoutProperties(_ref3, _excluded2);
169
185
  var errorFileState = {
170
186
  status: 'error',
171
187
  id: id,
172
188
  reason: err === null || err === void 0 ? void 0 : err.reason,
173
189
  message: err === null || err === void 0 ? void 0 : err.message,
174
190
  occurrenceKey: occurrenceKey,
175
- details: err === null || err === void 0 ? void 0 : err.attributes
191
+ details: _objectSpread(_objectSpread({}, attributes), (metadata === null || metadata === void 0 ? void 0 : metadata.traceContext) && {
192
+ metadata: metadata
193
+ })
176
194
  };
177
195
  subject.error(err);
178
196
  this.setFileState(id, errorFileState);
@@ -214,8 +232,8 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
214
232
  descriptors: descriptors
215
233
  }, {
216
234
  collection: collection
217
- }, traceContext).then(function (_ref2) {
218
- var data = _ref2.data;
235
+ }, traceContext).then(function (_ref4) {
236
+ var data = _ref4.data;
219
237
  return data;
220
238
  });
221
239
  }
@@ -256,7 +274,7 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
256
274
  return undefined;
257
275
  });
258
276
  preview = new Promise( /*#__PURE__*/function () {
259
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(resolve, reject) {
277
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(resolve, reject) {
260
278
  var blob;
261
279
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
262
280
  while (1) switch (_context2.prev = _context2.next) {
@@ -279,7 +297,7 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
279
297
  }, _callee2);
280
298
  }));
281
299
  return function (_x4, _x5) {
282
- return _ref3.apply(this, arguments);
300
+ return _ref5.apply(this, arguments);
283
301
  };
284
302
  }());
285
303
  name = url.split('/').pop() || ''; // we create a initial fileState with the minimum info that we have at this point
@@ -298,7 +316,7 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
298
316
  getFileStreamsCache().set(id, subject);
299
317
  this.setFileState(id, fileState);
300
318
  return _context4.abrupt("return", new Promise( /*#__PURE__*/function () {
301
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(resolve, reject) {
319
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(resolve, reject) {
302
320
  var blob, type, size, file, mediaType, dimensions;
303
321
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
304
322
  while (1) switch (_context3.prev = _context3.next) {
@@ -359,7 +377,7 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
359
377
  }, _callee3, null, [[10, 16]]);
360
378
  }));
361
379
  return function (_x6, _x7) {
362
- return _ref4.apply(this, arguments);
380
+ return _ref6.apply(this, arguments);
363
381
  };
364
382
  }()));
365
383
  case 11:
@@ -36,7 +36,7 @@ var jsonHeaders = {
36
36
  };
37
37
  var cdnFeatureFlag = function cdnFeatureFlag(endpoint) {
38
38
  var result = endpoint;
39
- if (fg('platform.media-cdn-delivery') || fg('platform_media_cdn_delivery')) {
39
+ if (fg('platform_media_cdn_delivery')) {
40
40
  if (isCommercial()) {
41
41
  result += '/cdn';
42
42
  }
@@ -3,7 +3,7 @@ import { isCommercial } from '../utils/isCommercial';
3
3
  export var getArtifactUrl = function getArtifactUrl(artifacts, prop) {
4
4
  var _artifacts$prop, _artifacts$prop3;
5
5
  // eslint-disable-next-line @atlaskit/platform/no-preconditioning
6
- if (isCommercial() && (fg('platform.media-cdn-delivery') || fg('platform_media_cdn_delivery')) && (_artifacts$prop = artifacts[prop]) !== null && _artifacts$prop !== void 0 && _artifacts$prop.url) {
6
+ if (isCommercial() && fg('platform_media_cdn_delivery') && (_artifacts$prop = artifacts[prop]) !== null && _artifacts$prop !== void 0 && _artifacts$prop.url) {
7
7
  var _artifacts$prop2;
8
8
  return "".concat((_artifacts$prop2 = artifacts[prop]) === null || _artifacts$prop2 === void 0 ? void 0 : _artifacts$prop2.url, "/cdn");
9
9
  }
@@ -5,6 +5,9 @@ export var isPreviewableType = function isPreviewableType(type) {
5
5
  var defaultPreviewableTypes = ['audio', 'video', 'image', 'doc'];
6
6
  return defaultPreviewableTypes.indexOf(type) > -1;
7
7
  };
8
+ export var isNotFoundMediaItemDetails = function isNotFoundMediaItemDetails(itemDetails) {
9
+ return 'type' in itemDetails && itemDetails.type === 'not-found';
10
+ };
8
11
  export var DATA_UNIT = /*#__PURE__*/function (DATA_UNIT) {
9
12
  DATA_UNIT[DATA_UNIT["MB"] = 1048576] = "MB";
10
13
  DATA_UNIT[DATA_UNIT["GB"] = 1073741824] = "GB";
@@ -10,6 +10,9 @@ export var MAX_BATCH_SIZE = 100;
10
10
  var isBatchLoadingErrorResult = function isBatchLoadingErrorResult(result) {
11
11
  return result.error instanceof Error;
12
12
  };
13
+ var isResponseFileItem = function isResponseFileItem(fileItem) {
14
+ return 'details' in fileItem;
15
+ };
13
16
  var makeCacheKey = function makeCacheKey(id, collection) {
14
17
  return collection ? "".concat(id, "-").concat(collection) : id;
15
18
  };
@@ -18,16 +21,30 @@ export var getItemsFromKeys = function getItemsFromKeys(dataloaderKeys, fileItem
18
21
  var id = fileItem.id,
19
22
  collection = fileItem.collection;
20
23
  var key = makeCacheKey(id, collection);
21
- prev[key] = isBatchLoadingErrorResult(fileItem) ? fileItem.error : _objectSpread(_objectSpread({}, fileItem.details), {}, {
22
- metadataTraceContext: fileItem.metadataTraceContext
23
- });
24
+ if (isBatchLoadingErrorResult(fileItem)) {
25
+ prev[key] = fileItem.error;
26
+ } else if (isResponseFileItem(fileItem)) {
27
+ prev[key] = _objectSpread(_objectSpread({}, fileItem.details), {}, {
28
+ metadataTraceContext: fileItem.metadataTraceContext
29
+ });
30
+ } else {
31
+ prev[key] = {
32
+ id: id,
33
+ collection: collection,
34
+ type: 'not-found',
35
+ metadataTraceContext: fileItem.metadataTraceContext
36
+ };
37
+ }
24
38
  return prev;
25
39
  }, {});
26
40
  return dataloaderKeys.map(function (dataloaderKey) {
27
41
  var id = dataloaderKey.id,
28
42
  collectionName = dataloaderKey.collectionName;
29
43
  var key = makeCacheKey(id, collectionName);
30
- return itemsByKey[key] || null;
44
+ return itemsByKey[key] || {
45
+ id: id,
46
+ type: 'not-found'
47
+ };
31
48
  });
32
49
  };
33
50
  /**
@@ -62,7 +79,7 @@ export function createBatchLoadingFunc(mediaStore) {
62
79
  _context2.next = 5;
63
80
  return Promise.all(Object.keys(fileIdsByCollection).map( /*#__PURE__*/function () {
64
81
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(collectionNameKey) {
65
- var metadataTraceContext, fileIds, collectionName, response, itemsWithMetadataTraceContext;
82
+ var metadataTraceContext, fileIds, collectionName, response, itemsWithMetadataTraceContext, itemsIds, fileIdsNotFound;
66
83
  return _regeneratorRuntime.wrap(function _callee$(_context) {
67
84
  while (1) switch (_context.prev = _context.next) {
68
85
  case 0:
@@ -83,10 +100,26 @@ export function createBatchLoadingFunc(mediaStore) {
83
100
  });
84
101
  });
85
102
  items.push.apply(items, _toConsumableArray(itemsWithMetadataTraceContext));
86
- _context.next = 14;
103
+
104
+ // add EmptyResponseFileItem for each file ID not included in /items response
105
+ itemsIds = itemsWithMetadataTraceContext.map(function (item) {
106
+ return item.id;
107
+ });
108
+ fileIdsNotFound = fileIds.filter(function (id) {
109
+ return !itemsIds.includes(id);
110
+ });
111
+ fileIdsNotFound.forEach(function (fileId) {
112
+ items.push({
113
+ id: fileId,
114
+ collection: collectionName,
115
+ type: 'not-found',
116
+ metadataTraceContext: metadataTraceContext
117
+ });
118
+ });
119
+ _context.next = 17;
87
120
  break;
88
- case 11:
89
- _context.prev = 11;
121
+ case 14:
122
+ _context.prev = 14;
90
123
  _context.t0 = _context["catch"](3);
91
124
  fileIds.forEach(function (fileId) {
92
125
  items.push({
@@ -95,11 +128,11 @@ export function createBatchLoadingFunc(mediaStore) {
95
128
  error: _context.t0
96
129
  });
97
130
  });
98
- case 14:
131
+ case 17:
99
132
  case "end":
100
133
  return _context.stop();
101
134
  }
102
- }, _callee, null, [[3, 11]]);
135
+ }, _callee, null, [[3, 14]]);
103
136
  }));
104
137
  return function (_x2) {
105
138
  return _ref2.apply(this, arguments);
@@ -16,7 +16,7 @@ export function mapToMediaCdnUrl(url, token) {
16
16
  return url;
17
17
  }
18
18
  // eslint-disable-next-line @atlaskit/platform/no-preconditioning
19
- if ((fg('platform.media-cdn-delivery') || fg('platform_media_cdn_delivery')) && (fg('platform.media-cdn-single-host') || fg('platform_media_cdn_single_host'))) {
19
+ if (fg('platform_media_cdn_delivery') && fg('platform_media_cdn_single_host')) {
20
20
  try {
21
21
  var parsedUrl = new URL(url);
22
22
  var cdnHost = MEDIA_CDN_MAP[parsedUrl.host];
@@ -26,12 +26,16 @@ export var MobileUploadError = /*#__PURE__*/function (_BaseMediaClientError) {
26
26
  _this$metadata = this.metadata,
27
27
  _this$metadata2 = _this$metadata === void 0 ? {} : _this$metadata,
28
28
  collectionName = _this$metadata2.collectionName,
29
- occurrenceKey = _this$metadata2.occurrenceKey;
29
+ occurrenceKey = _this$metadata2.occurrenceKey,
30
+ traceContext = _this$metadata2.traceContext;
30
31
  return {
31
32
  reason: reason,
32
33
  id: id,
33
34
  collectionName: collectionName,
34
- occurrenceKey: occurrenceKey
35
+ occurrenceKey: occurrenceKey,
36
+ metadata: {
37
+ traceContext: traceContext
38
+ }
35
39
  };
36
40
  }
37
41
  }]);
@@ -8,6 +8,7 @@ import { createMediaSubject } from '../createMediaSubject';
8
8
  import { isEmptyFile } from '../detectEmptyFile';
9
9
  import { PollingFunction } from '../polling';
10
10
  import { MobileUploadError } from './error';
11
+ import { isNotFoundMediaItemDetails } from '../../models/media';
11
12
  export var createMobileFileStateSubject = function createMobileFileStateSubject(service) {
12
13
  var subject = new ReplaySubject(1);
13
14
  from(service.start()).pipe(map(function (state) {
@@ -35,13 +36,14 @@ export var createMobileDownloadFileStream = function createMobileDownloadFileStr
35
36
  });
36
37
  case 2:
37
38
  response = _context.sent;
38
- if (response) {
39
+ if (!isNotFoundMediaItemDetails(response)) {
39
40
  _context.next = 5;
40
41
  break;
41
42
  }
42
43
  throw new MobileUploadError('emptyItems', id, {
43
44
  collectionName: collectionName,
44
- occurrenceKey: occurrenceKey
45
+ occurrenceKey: occurrenceKey,
46
+ traceContext: response.metadataTraceContext
45
47
  });
46
48
  case 5:
47
49
  if (!isEmptyFile(response)) {
@@ -50,7 +52,8 @@ export var createMobileDownloadFileStream = function createMobileDownloadFileStr
50
52
  }
51
53
  throw new MobileUploadError('zeroVersionFile', id, {
52
54
  collectionName: collectionName,
53
- occurrenceKey: occurrenceKey
55
+ occurrenceKey: occurrenceKey,
56
+ traceContext: response.metadataTraceContext
54
57
  });
55
58
  case 7:
56
59
  fileState = mapMediaItemToFileState(id, response);
@@ -31,6 +31,7 @@ export var RequestError = /*#__PURE__*/function (_BaseMediaClientError) {
31
31
  attempts = _this$metadata2.attempts,
32
32
  clientExhaustedRetries = _this$metadata2.clientExhaustedRetries,
33
33
  statusCode = _this$metadata2.statusCode,
34
+ traceContext = _this$metadata2.traceContext,
34
35
  innerError = this.innerError;
35
36
  return {
36
37
  reason: reason,
@@ -41,6 +42,9 @@ export var RequestError = /*#__PURE__*/function (_BaseMediaClientError) {
41
42
  attempts: attempts,
42
43
  clientExhaustedRetries: clientExhaustedRetries,
43
44
  statusCode: statusCode,
45
+ metadata: {
46
+ traceContext: traceContext
47
+ },
44
48
  innerError: innerError
45
49
  };
46
50
  }
@@ -1,4 +1,5 @@
1
1
  import { BaseMediaClientError } from '../../models/errors';
2
+ import { type MediaTraceContext } from '@atlaskit/media-common';
2
3
  export type FileFetcherErrorReason = 'invalidFileId' | 'emptyItems' | 'zeroVersionFile' | 'emptyFileName';
3
4
  export type FileFetcherErrorAttributes = {
4
5
  readonly reason: FileFetcherErrorReason;
@@ -6,6 +7,7 @@ export type FileFetcherErrorAttributes = {
6
7
  readonly metadata?: {
7
8
  readonly collectionName?: string;
8
9
  readonly occurrenceKey?: string;
10
+ readonly traceContext?: MediaTraceContext;
9
11
  };
10
12
  };
11
13
  export declare class FileFetcherError extends BaseMediaClientError<FileFetcherErrorAttributes> {
@@ -14,12 +16,17 @@ export declare class FileFetcherError extends BaseMediaClientError<FileFetcherEr
14
16
  readonly metadata?: {
15
17
  readonly collectionName?: string | undefined;
16
18
  readonly occurrenceKey?: string | undefined;
19
+ readonly traceContext?: MediaTraceContext | undefined;
17
20
  } | undefined;
18
21
  constructor(reason: FileFetcherErrorReason, id: string, metadata?: {
19
22
  readonly collectionName?: string | undefined;
20
23
  readonly occurrenceKey?: string | undefined;
24
+ readonly traceContext?: MediaTraceContext | undefined;
21
25
  } | undefined);
22
26
  get attributes(): {
27
+ metadata?: {
28
+ traceContext: MediaTraceContext;
29
+ } | undefined;
23
30
  reason: FileFetcherErrorReason;
24
31
  id: string;
25
32
  collectionName: string | undefined;
@@ -1,4 +1,4 @@
1
1
  export type { MediaStoreErrorReason, MediaStoreErrorAttributes } from './error';
2
2
  export { MediaStoreError, isMediaStoreError } from './error';
3
3
  export { MediaStore, getMediaEnvironment, getMediaRegion } from './MediaStore';
4
- export type { ResponseFileItem, ItemsPayload, ImageMetadataArtifact, ImageMetadata, MediaStoreResponse, MediaStoreRequestOptions, MediaStoreCreateFileFromUploadParams, MediaStoreCreateFileParams, MediaStoreTouchFileParams, TouchFileDescriptor, MediaStoreTouchFileBody, MediaStoreCreateFileFromBinaryParams, MediaStoreCreateFileFromUploadConditions, MediaStoreCreateFileFromUploadBody, MediaStoreGetFileParams, MediaStoreGetFileImageParams, SourceFile, MediaStoreCopyFileWithTokenBody, MediaStoreCopyFileWithTokenParams, AppendChunksToUploadRequestBody, CreatedTouchedFile, RejectedTouchFile, RejectionError, TouchedFiles, EmptyFile, MediaApi, } from './types';
4
+ export type { ResponseFileItem, EmptyResponseFileItem, ItemsPayload, ImageMetadataArtifact, ImageMetadata, MediaStoreResponse, MediaStoreRequestOptions, MediaStoreCreateFileFromUploadParams, MediaStoreCreateFileParams, MediaStoreTouchFileParams, TouchFileDescriptor, MediaStoreTouchFileBody, MediaStoreCreateFileFromBinaryParams, MediaStoreCreateFileFromUploadConditions, MediaStoreCreateFileFromUploadBody, MediaStoreGetFileParams, MediaStoreGetFileImageParams, SourceFile, MediaStoreCopyFileWithTokenBody, MediaStoreCopyFileWithTokenParams, AppendChunksToUploadRequestBody, CreatedTouchedFile, RejectedTouchFile, RejectionError, TouchedFiles, EmptyFile, MediaApi, } from './types';
@@ -11,6 +11,12 @@ export interface ResponseFileItem {
11
11
  collection?: string;
12
12
  metadataTraceContext?: MediaTraceContext;
13
13
  }
14
+ export interface EmptyResponseFileItem {
15
+ id: string;
16
+ type: 'not-found';
17
+ collection?: string;
18
+ metadataTraceContext?: MediaTraceContext;
19
+ }
14
20
  export interface ItemsPayload {
15
21
  items: ResponseFileItem[];
16
22
  }
@@ -1,5 +1,5 @@
1
1
  export { MediaStore, MediaStoreError, isMediaStoreError, getMediaEnvironment, getMediaRegion, } from './client/media-store';
2
- export type { ResponseFileItem, ItemsPayload, ImageMetadataArtifact, ImageMetadata, MediaStoreResponse, MediaStoreRequestOptions, MediaStoreCreateFileFromUploadParams, MediaStoreCreateFileParams, MediaStoreTouchFileParams, TouchFileDescriptor, MediaStoreTouchFileBody, MediaStoreCreateFileFromBinaryParams, MediaStoreCreateFileFromUploadConditions, MediaStoreCreateFileFromUploadBody, MediaStoreGetFileParams, MediaStoreGetFileImageParams, SourceFile, MediaStoreCopyFileWithTokenBody, MediaStoreCopyFileWithTokenParams, AppendChunksToUploadRequestBody, CreatedTouchedFile, TouchedFiles, EmptyFile, MediaStoreErrorReason, MediaStoreErrorAttributes, MediaApi, } from './client/media-store';
2
+ export type { ResponseFileItem, EmptyResponseFileItem, ItemsPayload, ImageMetadataArtifact, ImageMetadata, MediaStoreResponse, MediaStoreRequestOptions, MediaStoreCreateFileFromUploadParams, MediaStoreCreateFileParams, MediaStoreTouchFileParams, TouchFileDescriptor, MediaStoreTouchFileBody, MediaStoreCreateFileFromBinaryParams, MediaStoreCreateFileFromUploadConditions, MediaStoreCreateFileFromUploadBody, MediaStoreGetFileParams, MediaStoreGetFileImageParams, SourceFile, MediaStoreCopyFileWithTokenBody, MediaStoreCopyFileWithTokenParams, AppendChunksToUploadRequestBody, CreatedTouchedFile, TouchedFiles, EmptyFile, MediaStoreErrorReason, MediaStoreErrorAttributes, MediaApi, } from './client/media-store';
3
3
  export { UploadController } from './upload-controller';
4
4
  export type { AbortFunction } from './upload-controller';
5
5
  export type { MediaItemType, FileItem, FileProcessingStatus, MediaArtifact, Artifacts, FileDetails, } from './models/item';
@@ -26,6 +26,13 @@ export type MediaItemDetails = {
26
26
  readonly createdAt?: number;
27
27
  readonly metadataTraceContext?: MediaTraceContext;
28
28
  };
29
+ export type NotFoundMediaItemDetails = {
30
+ readonly id: string;
31
+ readonly collection?: string;
32
+ readonly type: 'not-found';
33
+ readonly metadataTraceContext?: MediaTraceContext;
34
+ };
35
+ export declare const isNotFoundMediaItemDetails: (itemDetails: any) => itemDetails is NotFoundMediaItemDetails;
29
36
  export type MediaRepresentations = {
30
37
  image?: Object;
31
38
  };
@@ -1,18 +1,18 @@
1
1
  import Dataloader from 'dataloader';
2
- import { type MediaStore, type ResponseFileItem } from '../client/media-store';
3
- import { type MediaItemDetails } from '../models/media';
2
+ import { type MediaStore, type ResponseFileItem, type EmptyResponseFileItem } from '../client/media-store';
3
+ import { type NotFoundMediaItemDetails, type MediaItemDetails } from '../models/media';
4
4
  export declare const MAX_BATCH_SIZE = 100;
5
5
  export type DataloaderKey = {
6
6
  readonly id: string;
7
7
  readonly collectionName?: string;
8
8
  };
9
- export type DataloaderResult = MediaItemDetails | null;
9
+ export type DataloaderResult = MediaItemDetails | NotFoundMediaItemDetails;
10
10
  export type BatchLoadingErrorResult = {
11
11
  readonly id: string;
12
12
  readonly collection?: string;
13
13
  readonly error: Error;
14
14
  };
15
- export declare const getItemsFromKeys: (dataloaderKeys: ReadonlyArray<DataloaderKey>, fileItems: Array<ResponseFileItem | BatchLoadingErrorResult>) => Array<DataloaderResult | Error>;
15
+ export declare const getItemsFromKeys: (dataloaderKeys: ReadonlyArray<DataloaderKey>, fileItems: Array<ResponseFileItem | BatchLoadingErrorResult | EmptyResponseFileItem>) => Array<DataloaderResult | Error>;
16
16
  export type FileIdsByCollection = {
17
17
  [collectionName: string]: string[];
18
18
  };
@@ -1,3 +1,4 @@
1
+ import { type MediaTraceContext } from '@atlaskit/media-common';
1
2
  import { BaseMediaClientError } from '../../models/errors';
2
3
  export type MobileUploadErrorReason = 'emptyItems' | 'zeroVersionFile';
3
4
  export type MobileUploadErrorAttributes = {
@@ -6,6 +7,7 @@ export type MobileUploadErrorAttributes = {
6
7
  readonly metadata?: {
7
8
  readonly collectionName?: string;
8
9
  readonly occurrenceKey?: string;
10
+ readonly traceContext?: MediaTraceContext;
9
11
  };
10
12
  };
11
13
  export declare class MobileUploadError extends BaseMediaClientError<MobileUploadErrorAttributes> {
@@ -14,16 +16,21 @@ export declare class MobileUploadError extends BaseMediaClientError<MobileUpload
14
16
  readonly metadata?: {
15
17
  readonly collectionName?: string | undefined;
16
18
  readonly occurrenceKey?: string | undefined;
19
+ readonly traceContext?: MediaTraceContext | undefined;
17
20
  } | undefined;
18
21
  constructor(reason: MobileUploadErrorReason, id: string, metadata?: {
19
22
  readonly collectionName?: string | undefined;
20
23
  readonly occurrenceKey?: string | undefined;
24
+ readonly traceContext?: MediaTraceContext | undefined;
21
25
  } | undefined);
22
26
  get attributes(): {
23
27
  reason: MobileUploadErrorReason;
24
28
  id: string;
25
29
  collectionName: string | undefined;
26
30
  occurrenceKey: string | undefined;
31
+ metadata: {
32
+ traceContext: MediaTraceContext | undefined;
33
+ };
27
34
  };
28
35
  }
29
36
  export declare function isMobileUploadError(err: Error): err is MobileUploadError;
@@ -14,6 +14,9 @@ export declare class RequestError extends BaseMediaClientError<RequestErrorAttri
14
14
  attempts: number | undefined;
15
15
  clientExhaustedRetries: boolean | undefined;
16
16
  statusCode: number | undefined;
17
+ metadata: {
18
+ traceContext: import("@atlaskit/media-common").MediaTraceContext | undefined;
19
+ };
17
20
  innerError: Error | undefined;
18
21
  };
19
22
  }