@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.
- package/CHANGELOG.md +16 -0
- package/dist/cjs/client/file-fetcher/error.js +11 -3
- package/dist/cjs/client/file-fetcher/index.js +29 -11
- package/dist/cjs/client/media-store/MediaStore.js +1 -1
- package/dist/cjs/models/artifacts.js +1 -1
- package/dist/cjs/models/media.js +4 -1
- package/dist/cjs/utils/createFileDataLoader.js +43 -10
- package/dist/cjs/utils/mediaCdn.js +1 -1
- package/dist/cjs/utils/mobileUpload/error.js +6 -2
- package/dist/cjs/utils/mobileUpload/helpers.js +6 -3
- package/dist/cjs/utils/request/errors.js +4 -0
- package/dist/es2019/client/file-fetcher/error.js +8 -2
- package/dist/es2019/client/file-fetcher/index.js +42 -17
- package/dist/es2019/client/media-store/MediaStore.js +1 -1
- package/dist/es2019/models/artifacts.js +1 -1
- package/dist/es2019/models/media.js +3 -0
- package/dist/es2019/utils/createFileDataLoader.js +34 -5
- package/dist/es2019/utils/mediaCdn.js +1 -1
- package/dist/es2019/utils/mobileUpload/error.js +6 -2
- package/dist/es2019/utils/mobileUpload/helpers.js +6 -3
- package/dist/es2019/utils/request/errors.js +5 -1
- package/dist/esm/client/file-fetcher/error.js +11 -3
- package/dist/esm/client/file-fetcher/index.js +30 -12
- package/dist/esm/client/media-store/MediaStore.js +1 -1
- package/dist/esm/models/artifacts.js +1 -1
- package/dist/esm/models/media.js +3 -0
- package/dist/esm/utils/createFileDataLoader.js +43 -10
- package/dist/esm/utils/mediaCdn.js +1 -1
- package/dist/esm/utils/mobileUpload/error.js +6 -2
- package/dist/esm/utils/mobileUpload/helpers.js +6 -3
- package/dist/esm/utils/request/errors.js +4 -0
- package/dist/types/client/file-fetcher/error.d.ts +7 -0
- package/dist/types/client/media-store/index.d.ts +1 -1
- package/dist/types/client/media-store/types.d.ts +6 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/models/media.d.ts +7 -0
- package/dist/types/utils/createFileDataLoader.d.ts +4 -4
- package/dist/types/utils/mobileUpload/error.d.ts +7 -0
- package/dist/types/utils/request/errors.d.ts +3 -0
- package/dist/types-ts4.5/client/file-fetcher/error.d.ts +7 -0
- package/dist/types-ts4.5/client/media-store/index.d.ts +1 -1
- package/dist/types-ts4.5/client/media-store/types.d.ts +6 -0
- package/dist/types-ts4.5/index.d.ts +1 -1
- package/dist/types-ts4.5/models/media.d.ts +7 -0
- package/dist/types-ts4.5/utils/createFileDataLoader.d.ts +4 -4
- package/dist/types-ts4.5/utils/mobileUpload/error.d.ts +7 -0
- package/dist/types-ts4.5/utils/request/errors.d.ts +3 -0
- 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 (
|
|
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 (
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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 (
|
|
218
|
-
var 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
|
|
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
|
|
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
|
|
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
|
|
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('
|
|
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() &&
|
|
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
|
}
|
package/dist/esm/models/media.js
CHANGED
|
@@ -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
|
-
|
|
22
|
-
|
|
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] ||
|
|
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
|
-
|
|
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
|
|
89
|
-
_context.prev =
|
|
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
|
|
131
|
+
case 17:
|
|
99
132
|
case "end":
|
|
100
133
|
return _context.stop();
|
|
101
134
|
}
|
|
102
|
-
}, _callee, null, [[3,
|
|
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 (
|
|
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
|
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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 |
|
|
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
|
}
|