@atlaskit/media-client 15.1.0 → 16.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # @atlaskit/media-client
2
2
 
3
+ ## 16.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`12d0af77572`](https://bitbucket.org/atlassian/atlassian-frontend/commits/12d0af77572) - Store media environment in session storage
8
+ - [`325e210e59f`](https://bitbucket.org/atlassian/atlassian-frontend/commits/325e210e59f) - Revert changes made in MEX-1638-revert-update-media-store-class-with-new-endpoint-parameters
9
+ - [`b73f20ed703`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b73f20ed703) - EDM-3073: Fix collab for media inline and copy-paste regression
10
+ - [`c2ede50a80a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c2ede50a80a) - Add media region and environment returned from media API response into failed analytic events.
11
+ - Updated dependencies
12
+
13
+ ## 16.0.0
14
+
15
+ ### Major Changes
16
+
17
+ - [`b6d47de3fd9`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b6d47de3fd9) - [MEX-1417] remove access to media file streams cache
18
+
19
+ ### Minor Changes
20
+
21
+ - [`5e249d1ad05`](https://bitbucket.org/atlassian/atlassian-frontend/commits/5e249d1ad05) - Exposed media environment
22
+
23
+ ### Patch Changes
24
+
25
+ - [`bde94d1a336`](https://bitbucket.org/atlassian/atlassian-frontend/commits/bde94d1a336) - When chunkinator has multiple processing batches of chunks, file will only be finalised uploading for once.
26
+ - [`567b33b2eeb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/567b33b2eeb) - stripe out null and undefined params when calling media server
27
+ - [`c4c75f5a769`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c4c75f5a769) - Removed query string from media client
28
+ - Updated dependencies
29
+
30
+ ## 15.1.1
31
+
32
+ ### Patch Changes
33
+
34
+ - [`a424e62b264`](https://bitbucket.org/atlassian/atlassian-frontend/commits/a424e62b264) - Changes to support Node 16 Typescript definitions from `@types/node`.
35
+
3
36
  ## 15.1.0
4
37
 
5
38
  ### Minor Changes
@@ -3,5 +3,6 @@
3
3
  "main": "../dist/cjs/constants.js",
4
4
  "module": "../dist/esm/constants.js",
5
5
  "module:es2019": "../dist/es2019/constants.js",
6
+ "sideEffects": false,
6
7
  "types": "../dist/types/constants.d.ts"
7
8
  }
@@ -333,7 +333,6 @@ var FileFetcherImpl = /*#__PURE__*/function () {
333
333
  };
334
334
  mediaType = (0, _mediaTypeUtils.getMediaTypeFromMimeType)(type); // we emit a richer state after the blob is fetched
335
335
 
336
- // we emit a richer state after the blob is fetched
337
336
  subject.next({
338
337
  status: 'processing',
339
338
  name: name,
@@ -345,7 +344,6 @@ var FileFetcherImpl = /*#__PURE__*/function () {
345
344
  preview: preview
346
345
  }); // we don't want to wait for the file to be upload
347
346
 
348
- // we don't want to wait for the file to be upload
349
347
  _this3.upload(file, undefined, uploadableFileUpfrontIds);
350
348
 
351
349
  _context3.next = 12;
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "MediaStoreError", {
12
12
  return _error.MediaStoreError;
13
13
  }
14
14
  });
15
+ exports.getMediaRegion = exports.getMediaEnvironment = void 0;
15
16
  Object.defineProperty(exports, "isMediaStoreError", {
16
17
  enumerable: true,
17
18
  get: function get() {
@@ -45,6 +46,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
45
46
 
46
47
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
47
48
 
49
+ var MEDIA_API_REGION = 'media-api-region';
50
+ var MEDIA_API_ENVIRONMENT = 'media-api-environment';
48
51
  var defaultImageOptions = {
49
52
  'max-age': _constants.FILE_CACHE_MAX_AGE,
50
53
  allowAnimated: true,
@@ -699,10 +702,11 @@ var MediaStore = /*#__PURE__*/function () {
699
702
 
700
703
  case 8:
701
704
  response = _context11.sent;
702
- updateMediaRegion(response.headers.get('x-media-region'));
705
+ setKeyValueInSessionStorage(MEDIA_API_REGION, response.headers.get('x-media-region'));
706
+ setKeyValueInSessionStorage(MEDIA_API_ENVIRONMENT, response.headers.get('x-media-env'));
703
707
  return _context11.abrupt("return", response);
704
708
 
705
- case 11:
709
+ case 12:
706
710
  case "end":
707
711
  return _context11.stop();
708
712
  }
@@ -722,14 +726,30 @@ var MediaStore = /*#__PURE__*/function () {
722
726
 
723
727
  exports.MediaStore = MediaStore;
724
728
 
725
- function updateMediaRegion(region) {
726
- if (!region || !(window && window.sessionStorage)) {
729
+ var getValueFromSessionStorage = function getValueFromSessionStorage(key) {
730
+ return window && window.sessionStorage && window.sessionStorage.getItem(key) || undefined;
731
+ };
732
+
733
+ var setKeyValueInSessionStorage = function setKeyValueInSessionStorage(key, value) {
734
+ if (!value || !(window && window.sessionStorage)) {
727
735
  return;
728
736
  }
729
737
 
730
- var currentRegion = window.sessionStorage.getItem('media-api-region');
738
+ var currentValue = window.sessionStorage.getItem(key);
731
739
 
732
- if (currentRegion !== region) {
733
- window.sessionStorage.setItem('media-api-region', region);
740
+ if (currentValue !== value) {
741
+ window.sessionStorage.setItem(key, value);
734
742
  }
735
- }
743
+ };
744
+
745
+ var getMediaEnvironment = function getMediaEnvironment() {
746
+ return getValueFromSessionStorage(MEDIA_API_ENVIRONMENT);
747
+ };
748
+
749
+ exports.getMediaEnvironment = getMediaEnvironment;
750
+
751
+ var getMediaRegion = function getMediaRegion() {
752
+ return getValueFromSessionStorage(MEDIA_API_REGION);
753
+ };
754
+
755
+ exports.getMediaRegion = getMediaRegion;
package/dist/cjs/index.js CHANGED
@@ -135,12 +135,6 @@ Object.defineProperty(exports, "getDimensionsFromBlob", {
135
135
  return _getDimensionsFromBlob.getDimensionsFromBlob;
136
136
  }
137
137
  });
138
- Object.defineProperty(exports, "getFileStreamsCache", {
139
- enumerable: true,
140
- get: function get() {
141
- return _fileStreamsCache.getFileStreamsCache;
142
- }
143
- });
144
138
  Object.defineProperty(exports, "getMediaClient", {
145
139
  enumerable: true,
146
140
  get: function get() {
@@ -153,6 +147,18 @@ Object.defineProperty(exports, "getMediaClientErrorReason", {
153
147
  return _errors.getMediaClientErrorReason;
154
148
  }
155
149
  });
150
+ Object.defineProperty(exports, "getMediaEnvironment", {
151
+ enumerable: true,
152
+ get: function get() {
153
+ return _mediaStore.getMediaEnvironment;
154
+ }
155
+ });
156
+ Object.defineProperty(exports, "getMediaRegion", {
157
+ enumerable: true,
158
+ get: function get() {
159
+ return _mediaStore.getMediaRegion;
160
+ }
161
+ });
156
162
  exports.getMediaTypeFromMimeType = void 0;
157
163
  Object.defineProperty(exports, "globalMediaEventEmitter", {
158
164
  enumerable: true,
@@ -156,6 +156,8 @@ var createFileFromUpload = /*#__PURE__*/function () {
156
156
  }();
157
157
 
158
158
  var uploadFile = function uploadFile(file, store, uploadableFileUpfrontIds, callbacks) {
159
+ var chunkSize = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 4 * 1024 * 1024;
160
+ var processingBatchSize = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1000;
159
161
  var content = file.content,
160
162
  collection = file.collection;
161
163
  var deferredUploadId = uploadableFileUpfrontIds.deferredUploadId;
@@ -163,11 +165,11 @@ var uploadFile = function uploadFile(file, store, uploadableFileUpfrontIds, call
163
165
  hashingFunction: hashingFunction,
164
166
  hashingConcurrency: 5,
165
167
  probingBatchSize: 100,
166
- chunkSize: 4 * 1024 * 1024,
168
+ chunkSize: chunkSize,
167
169
  uploadingConcurrency: 3,
168
170
  uploadingFunction: createUploadingFunction(store, collection),
169
171
  probingFunction: createProbingFunction(store, collection),
170
- processingBatchSize: 1000,
172
+ processingBatchSize: processingBatchSize,
171
173
  processingFunction: createProcessingFunction(store, deferredUploadId, collection)
172
174
  }, {
173
175
  onProgress: function onProgress(progress) {
@@ -48,6 +48,8 @@ var RequestError = /*#__PURE__*/function (_BaseMediaClientError) {
48
48
  _this$metadata = _this$metadata === void 0 ? {} : _this$metadata;
49
49
  var method = _this$metadata.method,
50
50
  endpoint = _this$metadata.endpoint,
51
+ mediaRegion = _this$metadata.mediaRegion,
52
+ mediaEnv = _this$metadata.mediaEnv,
51
53
  attempts = _this$metadata.attempts,
52
54
  clientExhaustedRetries = _this$metadata.clientExhaustedRetries,
53
55
  statusCode = _this$metadata.statusCode,
@@ -56,6 +58,8 @@ var RequestError = /*#__PURE__*/function (_BaseMediaClientError) {
56
58
  reason: reason,
57
59
  method: method,
58
60
  endpoint: endpoint,
61
+ mediaRegion: mediaRegion,
62
+ mediaEnv: mediaEnv,
59
63
  attempts: attempts,
60
64
  clientExhaustedRetries: clientExhaustedRetries,
61
65
  statusCode: statusCode,
@@ -14,7 +14,7 @@ exports.createProcessFetchResponse = createProcessFetchResponse;
14
14
  exports.createRequestErrorFromResponse = createRequestErrorFromResponse;
15
15
  exports.createRequestErrorReason = createRequestErrorReason;
16
16
  exports.createUrl = createUrl;
17
- exports.extract = extract;
17
+ exports.extractMediaHeaders = extractMediaHeaders;
18
18
  exports.fetchRetry = fetchRetry;
19
19
  exports.isAbortedRequestError = isAbortedRequestError;
20
20
  exports.isFetchNetworkError = isFetchNetworkError;
@@ -30,12 +30,14 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
30
30
 
31
31
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
32
32
 
33
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
34
+
35
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
36
+
33
37
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
34
38
 
35
39
  var _mediaCore = require("@atlaskit/media-core");
36
40
 
37
- var _queryString = require("query-string");
38
-
39
41
  var _authQueryParameters = require("../../models/auth-query-parameters");
40
42
 
41
43
  var _errors = require("./errors");
@@ -69,21 +71,6 @@ function isRateLimitedError(error) {
69
71
  return !!error && (0, _errors.isRequestError)(error) && error.attributes.statusCode === 429 || !!error && !!error.message && error.message.includes('429');
70
72
  }
71
73
 
72
- function extract(url) {
73
- var index = url.indexOf('?');
74
-
75
- if (index > 0) {
76
- return {
77
- baseUrl: url.substring(0, index),
78
- queryParams: (0, _queryString.parse)(url.substring(index + 1, url.length))
79
- };
80
- } else {
81
- return {
82
- baseUrl: url
83
- };
84
- }
85
- }
86
-
87
74
  function mapAuthToRequestHeaders(auth) {
88
75
  if ((0, _mediaCore.isClientBasedAuth)(auth)) {
89
76
  return {
@@ -101,15 +88,24 @@ function mapAuthToRequestHeaders(auth) {
101
88
  function createUrl(url, _ref) {
102
89
  var params = _ref.params,
103
90
  auth = _ref.auth;
91
+ var parsedUrl = new URL(url);
92
+ var authParams = auth && (0, _authQueryParameters.mapAuthToQueryParameters)(auth) || {};
93
+
94
+ var paramsToAppend = _objectSpread(_objectSpread({}, params), authParams);
104
95
 
105
- var _extract = extract(url),
106
- baseUrl = _extract.baseUrl,
107
- queryParams = _extract.queryParams;
96
+ Object.entries(paramsToAppend).filter(function (_ref2) {
97
+ var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
98
+ _ = _ref3[0],
99
+ value = _ref3[1];
108
100
 
109
- var authParams = auth && (0, _authQueryParameters.mapAuthToQueryParameters)(auth);
110
- var queryString = (0, _queryString.stringify)(_objectSpread(_objectSpread(_objectSpread({}, queryParams), params), authParams));
111
- var shouldAppendQueryString = queryString.length > 0;
112
- return "".concat(baseUrl).concat(shouldAppendQueryString ? "?".concat(queryString) : '');
101
+ return value != null;
102
+ }).forEach(function (pair) {
103
+ var _parsedUrl$searchPara;
104
+
105
+ (_parsedUrl$searchPara = parsedUrl.searchParams).append.apply(_parsedUrl$searchPara, (0, _toConsumableArray2.default)(pair));
106
+ });
107
+ parsedUrl.searchParams.sort();
108
+ return parsedUrl.toString();
113
109
  }
114
110
 
115
111
  function withAuth(auth) {
@@ -217,7 +213,7 @@ function mapResponseToVoid() {
217
213
 
218
214
  function createMapResponseToJson(metadata) {
219
215
  return /*#__PURE__*/function () {
220
- var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(response) {
216
+ var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(response) {
221
217
  return _regenerator.default.wrap(function _callee$(_context) {
222
218
  while (1) {
223
219
  switch (_context.prev = _context.next) {
@@ -232,7 +228,7 @@ function createMapResponseToJson(metadata) {
232
228
  case 6:
233
229
  _context.prev = 6;
234
230
  _context.t0 = _context["catch"](0);
235
- throw new _errors.RequestError('serverInvalidBody', _objectSpread(_objectSpread({}, metadata), {}, {
231
+ throw new _errors.RequestError('serverInvalidBody', _objectSpread(_objectSpread(_objectSpread({}, metadata), extractMediaHeaders(response)), {}, {
236
232
  statusCode: response.status
237
233
  }), _context.t0);
238
234
 
@@ -245,14 +241,14 @@ function createMapResponseToJson(metadata) {
245
241
  }));
246
242
 
247
243
  return function (_x3) {
248
- return _ref2.apply(this, arguments);
244
+ return _ref4.apply(this, arguments);
249
245
  };
250
246
  }();
251
247
  }
252
248
 
253
249
  function createMapResponseToBlob(metadata) {
254
250
  return /*#__PURE__*/function () {
255
- var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(response) {
251
+ var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(response) {
256
252
  return _regenerator.default.wrap(function _callee2$(_context2) {
257
253
  while (1) {
258
254
  switch (_context2.prev = _context2.next) {
@@ -267,7 +263,7 @@ function createMapResponseToBlob(metadata) {
267
263
  case 6:
268
264
  _context2.prev = 6;
269
265
  _context2.t0 = _context2["catch"](0);
270
- throw new _errors.RequestError('serverInvalidBody', _objectSpread(_objectSpread({}, metadata), {}, {
266
+ throw new _errors.RequestError('serverInvalidBody', _objectSpread(_objectSpread(_objectSpread({}, metadata), extractMediaHeaders(response)), {}, {
271
267
  statusCode: response.status
272
268
  }), _context2.t0);
273
269
 
@@ -280,7 +276,7 @@ function createMapResponseToBlob(metadata) {
280
276
  }));
281
277
 
282
278
  return function (_x4) {
283
- return _ref3.apply(this, arguments);
279
+ return _ref5.apply(this, arguments);
284
280
  };
285
281
  }();
286
282
  }
@@ -329,7 +325,7 @@ function _fetchRetry() {
329
325
  timeoutInMs = startTimeoutInMs;
330
326
 
331
327
  waitAndBumpTimeout = /*#__PURE__*/function () {
332
- var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
328
+ var _ref6 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
333
329
  return _regenerator.default.wrap(function _callee5$(_context5) {
334
330
  while (1) {
335
331
  switch (_context5.prev = _context5.next) {
@@ -350,7 +346,7 @@ function _fetchRetry() {
350
346
  }));
351
347
 
352
348
  return function waitAndBumpTimeout() {
353
- return _ref4.apply(this, arguments);
349
+ return _ref6.apply(this, arguments);
354
350
  };
355
351
  }();
356
352
 
@@ -453,7 +449,7 @@ function createRequestErrorReason(statusCode) {
453
449
  function createRequestErrorFromResponse(metadata, response) {
454
450
  var statusCode = response.status;
455
451
  var reason = createRequestErrorReason(statusCode);
456
- return new _errors.RequestError(reason, _objectSpread(_objectSpread({}, metadata), {}, {
452
+ return new _errors.RequestError(reason, _objectSpread(_objectSpread(_objectSpread({}, metadata), extractMediaHeaders(response)), {}, {
457
453
  statusCode: statusCode
458
454
  }));
459
455
  }
@@ -467,4 +463,14 @@ function createProcessFetchResponse(metadata) {
467
463
  var requestError = createRequestErrorFromResponse(metadata, response);
468
464
  throw requestError;
469
465
  };
466
+ }
467
+
468
+ function extractMediaHeaders(response) {
469
+ var headers = response.headers;
470
+ var mediaRegion = headers.get('x-media-region') || 'unknown';
471
+ var mediaEnv = headers.get('x-media-env') || 'unknown';
472
+ return {
473
+ mediaRegion: mediaRegion,
474
+ mediaEnv: mediaEnv
475
+ };
470
476
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-client",
3
- "version": "15.1.0",
3
+ "version": "16.0.1",
4
4
  "sideEffects": false
5
5
  }
@@ -5,6 +5,8 @@ import { request } from '../../utils/request';
5
5
  import { createUrl, createMapResponseToJson, createMapResponseToBlob } from '../../utils/request/helpers';
6
6
  import { resolveAuth, resolveInitialAuth } from './resolveAuth';
7
7
  export { MediaStoreError, isMediaStoreError } from './error';
8
+ const MEDIA_API_REGION = 'media-api-region';
9
+ const MEDIA_API_ENVIRONMENT = 'media-api-environment';
8
10
  const defaultImageOptions = {
9
11
  'max-age': FILE_CACHE_MAX_AGE,
10
12
  allowAnimated: true,
@@ -373,20 +375,32 @@ export class MediaStore {
373
375
  body,
374
376
  clientOptions
375
377
  }, controller);
376
- updateMediaRegion(response.headers.get('x-media-region'));
378
+ setKeyValueInSessionStorage(MEDIA_API_REGION, response.headers.get('x-media-region'));
379
+ setKeyValueInSessionStorage(MEDIA_API_ENVIRONMENT, response.headers.get('x-media-env'));
377
380
  return response;
378
381
  }
379
382
 
380
383
  }
381
384
 
382
- function updateMediaRegion(region) {
383
- if (!region || !(window && window.sessionStorage)) {
385
+ const getValueFromSessionStorage = key => {
386
+ return window && window.sessionStorage && window.sessionStorage.getItem(key) || undefined;
387
+ };
388
+
389
+ const setKeyValueInSessionStorage = (key, value) => {
390
+ if (!value || !(window && window.sessionStorage)) {
384
391
  return;
385
392
  }
386
393
 
387
- const currentRegion = window.sessionStorage.getItem('media-api-region');
394
+ const currentValue = window.sessionStorage.getItem(key);
388
395
 
389
- if (currentRegion !== region) {
390
- window.sessionStorage.setItem('media-api-region', region);
396
+ if (currentValue !== value) {
397
+ window.sessionStorage.setItem(key, value);
391
398
  }
392
- }
399
+ };
400
+
401
+ export const getMediaEnvironment = () => {
402
+ return getValueFromSessionStorage(MEDIA_API_ENVIRONMENT);
403
+ };
404
+ export const getMediaRegion = () => {
405
+ return getValueFromSessionStorage(MEDIA_API_REGION);
406
+ };
@@ -1,11 +1,11 @@
1
- export { MediaStore, MediaStoreError, isMediaStoreError } from './client/media-store';
1
+ export { MediaStore, MediaStoreError, isMediaStoreError, getMediaEnvironment, getMediaRegion } from './client/media-store';
2
2
  export { UploadController } from './upload-controller';
3
3
  export { isPreviewableType, isMediaCollectionItemFullDetails } from './models/media';
4
4
  export { getArtifactUrl } from './models/artifacts';
5
5
  export { isMediaClientError, getMediaClientErrorReason } from './models/errors';
6
6
  export { isUploadingFileState, isProcessingFileState, isProcessedFileState, isErrorFileState, isPreviewableFileState, isFinalFileState, isImageRepresentationReady, mapMediaFileToFileState, mapMediaItemToFileState } from './models/file-state';
7
7
  // TODO: remove access to media file stream cache https://product-fabric.atlassian.net/browse/MEX-1417
8
- export { getFileStreamsCache, StreamsCache } from './file-streams-cache';
8
+ export { StreamsCache } from './file-streams-cache';
9
9
  export { uploadFile } from './uploader';
10
10
  export { request, RequestError, isRequestError, isRateLimitedError } from './utils/request';
11
11
  export { isAbortedRequestError, mapResponseToJson, mapResponseToBlob, mapResponseToVoid, createUrl } from './utils/request/helpers';
@@ -50,7 +50,7 @@ const createFileFromUpload = async (file, store, uploadableFileUpfrontIds, uploa
50
50
  });
51
51
  };
52
52
 
53
- export const uploadFile = (file, store, uploadableFileUpfrontIds, callbacks) => {
53
+ export const uploadFile = (file, store, uploadableFileUpfrontIds, callbacks, chunkSize = 4 * 1024 * 1024, processingBatchSize = 1000) => {
54
54
  const {
55
55
  content,
56
56
  collection
@@ -62,11 +62,11 @@ export const uploadFile = (file, store, uploadableFileUpfrontIds, callbacks) =>
62
62
  hashingFunction,
63
63
  hashingConcurrency: 5,
64
64
  probingBatchSize: 100,
65
- chunkSize: 4 * 1024 * 1024,
65
+ chunkSize,
66
66
  uploadingConcurrency: 3,
67
67
  uploadingFunction: createUploadingFunction(store, collection),
68
68
  probingFunction: createProbingFunction(store, collection),
69
- processingBatchSize: 1000,
69
+ processingBatchSize,
70
70
  processingFunction: createProcessingFunction(store, deferredUploadId, collection)
71
71
  }, {
72
72
  onProgress(progress) {
@@ -13,6 +13,8 @@ export class RequestError extends BaseMediaClientError {
13
13
  metadata: {
14
14
  method,
15
15
  endpoint,
16
+ mediaRegion,
17
+ mediaEnv,
16
18
  attempts,
17
19
  clientExhaustedRetries,
18
20
  statusCode
@@ -23,6 +25,8 @@ export class RequestError extends BaseMediaClientError {
23
25
  reason,
24
26
  method,
25
27
  endpoint,
28
+ mediaRegion,
29
+ mediaEnv,
26
30
  attempts,
27
31
  clientExhaustedRetries,
28
32
  statusCode,
@@ -1,5 +1,4 @@
1
1
  import { isClientBasedAuth } from '@atlaskit/media-core';
2
- import { parse, stringify } from 'query-string';
3
2
  import { mapAuthToQueryParameters } from '../../models/auth-query-parameters';
4
3
  import { RequestError, isRequestError } from './errors';
5
4
  export function clientTimeoutPromise(timeout) {
@@ -20,20 +19,6 @@ export function isFetchNetworkError(err) {
20
19
  export function isRateLimitedError(error) {
21
20
  return !!error && isRequestError(error) && error.attributes.statusCode === 429 || !!error && !!error.message && error.message.includes('429');
22
21
  }
23
- export function extract(url) {
24
- const index = url.indexOf('?');
25
-
26
- if (index > 0) {
27
- return {
28
- baseUrl: url.substring(0, index),
29
- queryParams: parse(url.substring(index + 1, url.length))
30
- };
31
- } else {
32
- return {
33
- baseUrl: url
34
- };
35
- }
36
- }
37
22
  export function mapAuthToRequestHeaders(auth) {
38
23
  if (isClientBasedAuth(auth)) {
39
24
  return {
@@ -51,17 +36,16 @@ export function createUrl(url, {
51
36
  params,
52
37
  auth
53
38
  }) {
54
- const {
55
- baseUrl,
56
- queryParams
57
- } = extract(url);
58
- const authParams = auth && mapAuthToQueryParameters(auth);
59
- const queryString = stringify({ ...queryParams,
60
- ...params,
39
+ const parsedUrl = new URL(url);
40
+ const authParams = auth && mapAuthToQueryParameters(auth) || {};
41
+ const paramsToAppend = { ...params,
61
42
  ...authParams
43
+ };
44
+ Object.entries(paramsToAppend).filter(([_, value]) => value != null).forEach(pair => {
45
+ parsedUrl.searchParams.append(...pair);
62
46
  });
63
- const shouldAppendQueryString = queryString.length > 0;
64
- return `${baseUrl}${shouldAppendQueryString ? `?${queryString}` : ''}`;
47
+ parsedUrl.searchParams.sort();
48
+ return parsedUrl.toString();
65
49
  }
66
50
  export function withAuth(auth) {
67
51
  return headers => {
@@ -124,6 +108,7 @@ export function createMapResponseToJson(metadata) {
124
108
  return await response.json();
125
109
  } catch (err) {
126
110
  throw new RequestError('serverInvalidBody', { ...metadata,
111
+ ...extractMediaHeaders(response),
127
112
  statusCode: response.status
128
113
  }, err);
129
114
  }
@@ -135,6 +120,7 @@ export function createMapResponseToBlob(metadata) {
135
120
  return await response.blob();
136
121
  } catch (err) {
137
122
  throw new RequestError('serverInvalidBody', { ...metadata,
123
+ ...extractMediaHeaders(response),
138
124
  statusCode: response.status
139
125
  }, err);
140
126
  }
@@ -240,6 +226,7 @@ export function createRequestErrorFromResponse(metadata, response) {
240
226
  } = response;
241
227
  const reason = createRequestErrorReason(statusCode);
242
228
  return new RequestError(reason, { ...metadata,
229
+ ...extractMediaHeaders(response),
243
230
  statusCode
244
231
  });
245
232
  }
@@ -252,4 +239,15 @@ export function createProcessFetchResponse(metadata) {
252
239
  const requestError = createRequestErrorFromResponse(metadata, response);
253
240
  throw requestError;
254
241
  };
242
+ }
243
+ export function extractMediaHeaders(response) {
244
+ const {
245
+ headers
246
+ } = response;
247
+ const mediaRegion = headers.get('x-media-region') || 'unknown';
248
+ const mediaEnv = headers.get('x-media-env') || 'unknown';
249
+ return {
250
+ mediaRegion,
251
+ mediaEnv
252
+ };
255
253
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-client",
3
- "version": "15.1.0",
3
+ "version": "16.0.1",
4
4
  "sideEffects": false
5
5
  }
@@ -285,7 +285,6 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
285
285
  };
286
286
  mediaType = getMediaTypeFromMimeType(type); // we emit a richer state after the blob is fetched
287
287
 
288
- // we emit a richer state after the blob is fetched
289
288
  subject.next({
290
289
  status: 'processing',
291
290
  name: name,
@@ -297,7 +296,6 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
297
296
  preview: preview
298
297
  }); // we don't want to wait for the file to be upload
299
298
 
300
- // we don't want to wait for the file to be upload
301
299
  _this3.upload(file, undefined, uploadableFileUpfrontIds);
302
300
 
303
301
  _context3.next = 12;
@@ -14,6 +14,8 @@ import { request as _request } from '../../utils/request';
14
14
  import { createUrl, createMapResponseToJson, createMapResponseToBlob } from '../../utils/request/helpers';
15
15
  import { resolveAuth, resolveInitialAuth } from './resolveAuth';
16
16
  export { MediaStoreError, isMediaStoreError } from './error';
17
+ var MEDIA_API_REGION = 'media-api-region';
18
+ var MEDIA_API_ENVIRONMENT = 'media-api-environment';
17
19
  var defaultImageOptions = {
18
20
  'max-age': FILE_CACHE_MAX_AGE,
19
21
  allowAnimated: true,
@@ -670,10 +672,11 @@ export var MediaStore = /*#__PURE__*/function () {
670
672
 
671
673
  case 8:
672
674
  response = _context11.sent;
673
- updateMediaRegion(response.headers.get('x-media-region'));
675
+ setKeyValueInSessionStorage(MEDIA_API_REGION, response.headers.get('x-media-region'));
676
+ setKeyValueInSessionStorage(MEDIA_API_ENVIRONMENT, response.headers.get('x-media-env'));
674
677
  return _context11.abrupt("return", response);
675
678
 
676
- case 11:
679
+ case 12:
677
680
  case "end":
678
681
  return _context11.stop();
679
682
  }
@@ -692,14 +695,25 @@ export var MediaStore = /*#__PURE__*/function () {
692
695
  return MediaStore;
693
696
  }();
694
697
 
695
- function updateMediaRegion(region) {
696
- if (!region || !(window && window.sessionStorage)) {
698
+ var getValueFromSessionStorage = function getValueFromSessionStorage(key) {
699
+ return window && window.sessionStorage && window.sessionStorage.getItem(key) || undefined;
700
+ };
701
+
702
+ var setKeyValueInSessionStorage = function setKeyValueInSessionStorage(key, value) {
703
+ if (!value || !(window && window.sessionStorage)) {
697
704
  return;
698
705
  }
699
706
 
700
- var currentRegion = window.sessionStorage.getItem('media-api-region');
707
+ var currentValue = window.sessionStorage.getItem(key);
701
708
 
702
- if (currentRegion !== region) {
703
- window.sessionStorage.setItem('media-api-region', region);
709
+ if (currentValue !== value) {
710
+ window.sessionStorage.setItem(key, value);
704
711
  }
705
- }
712
+ };
713
+
714
+ export var getMediaEnvironment = function getMediaEnvironment() {
715
+ return getValueFromSessionStorage(MEDIA_API_ENVIRONMENT);
716
+ };
717
+ export var getMediaRegion = function getMediaRegion() {
718
+ return getValueFromSessionStorage(MEDIA_API_REGION);
719
+ };
package/dist/esm/index.js CHANGED
@@ -1,11 +1,11 @@
1
- export { MediaStore, MediaStoreError, isMediaStoreError } from './client/media-store';
1
+ export { MediaStore, MediaStoreError, isMediaStoreError, getMediaEnvironment, getMediaRegion } from './client/media-store';
2
2
  export { UploadController } from './upload-controller';
3
3
  export { isPreviewableType, isMediaCollectionItemFullDetails } from './models/media';
4
4
  export { getArtifactUrl } from './models/artifacts';
5
5
  export { isMediaClientError, getMediaClientErrorReason } from './models/errors';
6
6
  export { isUploadingFileState, isProcessingFileState, isProcessedFileState, isErrorFileState, isPreviewableFileState, isFinalFileState, isImageRepresentationReady, mapMediaFileToFileState, mapMediaItemToFileState } from './models/file-state';
7
7
  // TODO: remove access to media file stream cache https://product-fabric.atlassian.net/browse/MEX-1417
8
- export { getFileStreamsCache, StreamsCache } from './file-streams-cache';
8
+ export { StreamsCache } from './file-streams-cache';
9
9
  export { uploadFile } from './uploader';
10
10
  export { request, RequestError, isRequestError, isRateLimitedError } from './utils/request';
11
11
  export { isAbortedRequestError, mapResponseToJson, mapResponseToBlob, mapResponseToVoid, createUrl } from './utils/request/helpers';
@@ -142,6 +142,8 @@ var createFileFromUpload = /*#__PURE__*/function () {
142
142
  }();
143
143
 
144
144
  export var uploadFile = function uploadFile(file, store, uploadableFileUpfrontIds, callbacks) {
145
+ var chunkSize = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 4 * 1024 * 1024;
146
+ var processingBatchSize = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1000;
145
147
  var content = file.content,
146
148
  collection = file.collection;
147
149
  var deferredUploadId = uploadableFileUpfrontIds.deferredUploadId;
@@ -149,11 +151,11 @@ export var uploadFile = function uploadFile(file, store, uploadableFileUpfrontId
149
151
  hashingFunction: hashingFunction,
150
152
  hashingConcurrency: 5,
151
153
  probingBatchSize: 100,
152
- chunkSize: 4 * 1024 * 1024,
154
+ chunkSize: chunkSize,
153
155
  uploadingConcurrency: 3,
154
156
  uploadingFunction: createUploadingFunction(store, collection),
155
157
  probingFunction: createProbingFunction(store, collection),
156
- processingBatchSize: 1000,
158
+ processingBatchSize: processingBatchSize,
157
159
  processingFunction: createProcessingFunction(store, deferredUploadId, collection)
158
160
  }, {
159
161
  onProgress: function onProgress(progress) {
@@ -34,6 +34,8 @@ export var RequestError = /*#__PURE__*/function (_BaseMediaClientError) {
34
34
  _this$metadata = _this$metadata === void 0 ? {} : _this$metadata;
35
35
  var method = _this$metadata.method,
36
36
  endpoint = _this$metadata.endpoint,
37
+ mediaRegion = _this$metadata.mediaRegion,
38
+ mediaEnv = _this$metadata.mediaEnv,
37
39
  attempts = _this$metadata.attempts,
38
40
  clientExhaustedRetries = _this$metadata.clientExhaustedRetries,
39
41
  statusCode = _this$metadata.statusCode,
@@ -42,6 +44,8 @@ export var RequestError = /*#__PURE__*/function (_BaseMediaClientError) {
42
44
  reason: reason,
43
45
  method: method,
44
46
  endpoint: endpoint,
47
+ mediaRegion: mediaRegion,
48
+ mediaEnv: mediaEnv,
45
49
  attempts: attempts,
46
50
  clientExhaustedRetries: clientExhaustedRetries,
47
51
  statusCode: statusCode,
@@ -1,5 +1,7 @@
1
1
  import _regeneratorRuntime from "@babel/runtime/regenerator";
2
2
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
5
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
6
 
5
7
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -7,7 +9,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
7
9
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
10
 
9
11
  import { isClientBasedAuth } from '@atlaskit/media-core';
10
- import { parse, stringify } from 'query-string';
11
12
  import { mapAuthToQueryParameters } from '../../models/auth-query-parameters';
12
13
  import { RequestError, isRequestError } from './errors';
13
14
  export function clientTimeoutPromise(timeout) {
@@ -30,20 +31,6 @@ export function isFetchNetworkError(err) {
30
31
  export function isRateLimitedError(error) {
31
32
  return !!error && isRequestError(error) && error.attributes.statusCode === 429 || !!error && !!error.message && error.message.includes('429');
32
33
  }
33
- export function extract(url) {
34
- var index = url.indexOf('?');
35
-
36
- if (index > 0) {
37
- return {
38
- baseUrl: url.substring(0, index),
39
- queryParams: parse(url.substring(index + 1, url.length))
40
- };
41
- } else {
42
- return {
43
- baseUrl: url
44
- };
45
- }
46
- }
47
34
  export function mapAuthToRequestHeaders(auth) {
48
35
  if (isClientBasedAuth(auth)) {
49
36
  return {
@@ -60,15 +47,24 @@ export function mapAuthToRequestHeaders(auth) {
60
47
  export function createUrl(url, _ref) {
61
48
  var params = _ref.params,
62
49
  auth = _ref.auth;
50
+ var parsedUrl = new URL(url);
51
+ var authParams = auth && mapAuthToQueryParameters(auth) || {};
63
52
 
64
- var _extract = extract(url),
65
- baseUrl = _extract.baseUrl,
66
- queryParams = _extract.queryParams;
53
+ var paramsToAppend = _objectSpread(_objectSpread({}, params), authParams);
67
54
 
68
- var authParams = auth && mapAuthToQueryParameters(auth);
69
- var queryString = stringify(_objectSpread(_objectSpread(_objectSpread({}, queryParams), params), authParams));
70
- var shouldAppendQueryString = queryString.length > 0;
71
- return "".concat(baseUrl).concat(shouldAppendQueryString ? "?".concat(queryString) : '');
55
+ Object.entries(paramsToAppend).filter(function (_ref2) {
56
+ var _ref3 = _slicedToArray(_ref2, 2),
57
+ _ = _ref3[0],
58
+ value = _ref3[1];
59
+
60
+ return value != null;
61
+ }).forEach(function (pair) {
62
+ var _parsedUrl$searchPara;
63
+
64
+ (_parsedUrl$searchPara = parsedUrl.searchParams).append.apply(_parsedUrl$searchPara, _toConsumableArray(pair));
65
+ });
66
+ parsedUrl.searchParams.sort();
67
+ return parsedUrl.toString();
72
68
  }
73
69
  export function withAuth(auth) {
74
70
  return function (headers) {
@@ -171,7 +167,7 @@ export function mapResponseToVoid() {
171
167
  }
172
168
  export function createMapResponseToJson(metadata) {
173
169
  return /*#__PURE__*/function () {
174
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(response) {
170
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(response) {
175
171
  return _regeneratorRuntime.wrap(function _callee$(_context) {
176
172
  while (1) {
177
173
  switch (_context.prev = _context.next) {
@@ -186,7 +182,7 @@ export function createMapResponseToJson(metadata) {
186
182
  case 6:
187
183
  _context.prev = 6;
188
184
  _context.t0 = _context["catch"](0);
189
- throw new RequestError('serverInvalidBody', _objectSpread(_objectSpread({}, metadata), {}, {
185
+ throw new RequestError('serverInvalidBody', _objectSpread(_objectSpread(_objectSpread({}, metadata), extractMediaHeaders(response)), {}, {
190
186
  statusCode: response.status
191
187
  }), _context.t0);
192
188
 
@@ -199,13 +195,13 @@ export function createMapResponseToJson(metadata) {
199
195
  }));
200
196
 
201
197
  return function (_x3) {
202
- return _ref2.apply(this, arguments);
198
+ return _ref4.apply(this, arguments);
203
199
  };
204
200
  }();
205
201
  }
206
202
  export function createMapResponseToBlob(metadata) {
207
203
  return /*#__PURE__*/function () {
208
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(response) {
204
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(response) {
209
205
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
210
206
  while (1) {
211
207
  switch (_context2.prev = _context2.next) {
@@ -220,7 +216,7 @@ export function createMapResponseToBlob(metadata) {
220
216
  case 6:
221
217
  _context2.prev = 6;
222
218
  _context2.t0 = _context2["catch"](0);
223
- throw new RequestError('serverInvalidBody', _objectSpread(_objectSpread({}, metadata), {}, {
219
+ throw new RequestError('serverInvalidBody', _objectSpread(_objectSpread(_objectSpread({}, metadata), extractMediaHeaders(response)), {}, {
224
220
  statusCode: response.status
225
221
  }), _context2.t0);
226
222
 
@@ -233,7 +229,7 @@ export function createMapResponseToBlob(metadata) {
233
229
  }));
234
230
 
235
231
  return function (_x4) {
236
- return _ref3.apply(this, arguments);
232
+ return _ref5.apply(this, arguments);
237
233
  };
238
234
  }();
239
235
  }
@@ -278,7 +274,7 @@ function _fetchRetry() {
278
274
  timeoutInMs = startTimeoutInMs;
279
275
 
280
276
  waitAndBumpTimeout = /*#__PURE__*/function () {
281
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
277
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
282
278
  return _regeneratorRuntime.wrap(function _callee5$(_context5) {
283
279
  while (1) {
284
280
  switch (_context5.prev = _context5.next) {
@@ -299,7 +295,7 @@ function _fetchRetry() {
299
295
  }));
300
296
 
301
297
  return function waitAndBumpTimeout() {
302
- return _ref4.apply(this, arguments);
298
+ return _ref6.apply(this, arguments);
303
299
  };
304
300
  }();
305
301
 
@@ -401,7 +397,7 @@ export function createRequestErrorReason(statusCode) {
401
397
  export function createRequestErrorFromResponse(metadata, response) {
402
398
  var statusCode = response.status;
403
399
  var reason = createRequestErrorReason(statusCode);
404
- return new RequestError(reason, _objectSpread(_objectSpread({}, metadata), {}, {
400
+ return new RequestError(reason, _objectSpread(_objectSpread(_objectSpread({}, metadata), extractMediaHeaders(response)), {}, {
405
401
  statusCode: statusCode
406
402
  }));
407
403
  }
@@ -414,4 +410,13 @@ export function createProcessFetchResponse(metadata) {
414
410
  var requestError = createRequestErrorFromResponse(metadata, response);
415
411
  throw requestError;
416
412
  };
413
+ }
414
+ export function extractMediaHeaders(response) {
415
+ var headers = response.headers;
416
+ var mediaRegion = headers.get('x-media-region') || 'unknown';
417
+ var mediaEnv = headers.get('x-media-env') || 'unknown';
418
+ return {
419
+ mediaRegion: mediaRegion,
420
+ mediaEnv: mediaEnv
421
+ };
417
422
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-client",
3
- "version": "15.1.0",
3
+ "version": "16.0.1",
4
4
  "sideEffects": false
5
5
  }
@@ -33,6 +33,8 @@ export declare class MediaStore {
33
33
  resolveAuth: (authContext?: AuthContext | undefined) => Promise<Auth>;
34
34
  resolveInitialAuth: () => Auth;
35
35
  }
36
+ export declare const getMediaEnvironment: () => string | undefined;
37
+ export declare const getMediaRegion: () => string | undefined;
36
38
  export interface ResponseFileItem {
37
39
  id: string;
38
40
  type: 'file';
@@ -1,4 +1,4 @@
1
- export { MediaStore, MediaStoreError, isMediaStoreError, } from './client/media-store';
1
+ export { MediaStore, MediaStoreError, isMediaStoreError, getMediaEnvironment, getMediaRegion, } from './client/media-store';
2
2
  export type { ResponseFileItem, ItemsPayload, ImageMetadataArtifact, ImageMetadata, MediaStoreResponse, MediaStoreRequestOptions, MediaStoreCreateFileFromUploadParams, MediaStoreCreateFileParams, MediaStoreTouchFileParams, TouchFileDescriptor, MediaStoreTouchFileBody, MediaStoreCreateFileFromBinaryParams, MediaStoreCreateFileFromUploadConditions, MediaStoreCreateFileFromUploadBody, MediaStoreGetFileParams, MediaStoreGetFileImageParams, MediaStoreGetCollectionItemsParams, SourceFile, MediaStoreCopyFileWithTokenBody, MediaStoreCopyFileWithTokenParams, AppendChunksToUploadRequestBody, CreatedTouchedFile, TouchedFiles, EmptyFile, MediaStoreErrorReason, MediaStoreErrorAttributes, } from './client/media-store';
3
3
  export { UploadController } from './upload-controller';
4
4
  export type { AbortFunction } from './upload-controller';
@@ -13,7 +13,7 @@ export type { MediaClientError, MediaClientErrorReason, MediaClientErrorAttribut
13
13
  export { isUploadingFileState, isProcessingFileState, isProcessedFileState, isErrorFileState, isPreviewableFileState, isFinalFileState, isImageRepresentationReady, mapMediaFileToFileState, mapMediaItemToFileState, } from './models/file-state';
14
14
  export type { FileStatus, FilePreview, PreviewOptions, GetFileOptions, UploadingFileState, ProcessingFileState, ProcessedFileState, ProcessingFailedState, ErrorFileState, NonErrorFileState, PreviewableFileState, FileState, } from './models/file-state';
15
15
  export type { MobileUploadStartEvent, MobileUploadProgressEvent, MobileUploadEndEvent, MobileUploadErrorEvent, } from './models/mobile-upload';
16
- export { getFileStreamsCache, StreamsCache } from './file-streams-cache';
16
+ export { StreamsCache } from './file-streams-cache';
17
17
  export { uploadFile } from './uploader';
18
18
  export type { UploadableFile, UploadableFileUpfrontIds, UploadFileCallbacks, UploadFileResult, } from './uploader';
19
19
  export { request, RequestError, isRequestError, isRateLimitedError, } from './utils/request';
@@ -18,4 +18,4 @@ export declare type UploadFileCallbacks = {
18
18
  export interface UploadFileResult {
19
19
  cancel: () => void;
20
20
  }
21
- export declare const uploadFile: (file: UploadableFile, store: MediaStore, uploadableFileUpfrontIds: UploadableFileUpfrontIds, callbacks?: UploadFileCallbacks | undefined) => UploadFileResult;
21
+ export declare const uploadFile: (file: UploadableFile, store: MediaStore, uploadableFileUpfrontIds: UploadableFileUpfrontIds, callbacks?: UploadFileCallbacks | undefined, chunkSize?: number, processingBatchSize?: number) => UploadFileResult;
@@ -9,6 +9,8 @@ export declare class RequestError extends BaseMediaClientError<RequestErrorAttri
9
9
  reason: RequestErrorReason;
10
10
  method: import("./types").RequestMethod | undefined;
11
11
  endpoint: string | undefined;
12
+ mediaRegion: string | undefined;
13
+ mediaEnv: string | undefined;
12
14
  attempts: number | undefined;
13
15
  clientExhaustedRetries: boolean | undefined;
14
16
  statusCode: number | undefined;
@@ -6,10 +6,6 @@ export declare function waitPromise(timeout: number): Promise<void>;
6
6
  export declare function isAbortedRequestError(err: any): boolean;
7
7
  export declare function isFetchNetworkError(err: any): err is TypeError;
8
8
  export declare function isRateLimitedError(error: Error | undefined): boolean;
9
- export declare function extract(url: string): {
10
- baseUrl: string;
11
- queryParams?: any;
12
- };
13
9
  export declare function mapAuthToRequestHeaders(auth: Auth): RequestHeaders;
14
10
  export declare function createUrl(url: string, { params, auth }: CreateUrlOptions): string;
15
11
  export declare function withAuth(auth?: Auth): (headers?: RequestHeaders | undefined) => RequestHeaders | undefined;
@@ -36,3 +32,7 @@ export declare function fetchRetry(functionToRetry: () => Promise<Response>, met
36
32
  export declare function createRequestErrorReason(statusCode: number): RequestErrorReason;
37
33
  export declare function createRequestErrorFromResponse(metadata: RequestErrorMetadata, response: Response): RequestError;
38
34
  export declare function createProcessFetchResponse(metadata: RequestMetadata): (response: Response) => Response;
35
+ export declare function extractMediaHeaders(response: Response): {
36
+ mediaRegion: string;
37
+ mediaEnv: string;
38
+ };
@@ -18,6 +18,8 @@ export declare type ClientOptions = {
18
18
  export declare type RequestMetadata = {
19
19
  readonly method?: RequestMethod;
20
20
  readonly endpoint?: string;
21
+ readonly mediaRegion?: string;
22
+ readonly mediaEnv?: string;
21
23
  };
22
24
  export declare type RequestOptions = RequestMetadata & {
23
25
  readonly auth?: Auth;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/media-client",
3
- "version": "15.1.0",
3
+ "version": "16.0.1",
4
4
  "description": "Media API Web Client Library",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -27,14 +27,13 @@
27
27
  }
28
28
  },
29
29
  "dependencies": {
30
- "@atlaskit/chunkinator": "^3.1.0",
31
- "@atlaskit/media-common": "^2.12.0",
30
+ "@atlaskit/chunkinator": "^4.0.0",
31
+ "@atlaskit/media-common": "^2.14.0",
32
32
  "@babel/runtime": "^7.0.0",
33
33
  "dataloader": "^2.0.0",
34
34
  "deep-equal": "^1.0.1",
35
35
  "eventemitter2": "^4.1.0",
36
36
  "lru-fast": "^0.2.2",
37
- "query-string": "^6.14.1",
38
37
  "rusha": "^0.8.13",
39
38
  "rxjs": "^5.5.0",
40
39
  "setimmediate": "^1.0.5",
@@ -44,23 +43,21 @@
44
43
  "xstate": "^4.20.0"
45
44
  },
46
45
  "peerDependencies": {
47
- "@atlaskit/media-core": "^32.3.1",
46
+ "@atlaskit/media-core": "^33.0.0",
48
47
  "react": "^16.8.0"
49
48
  },
50
49
  "devDependencies": {
51
50
  "@atlaskit/button": "^16.3.0",
52
51
  "@atlaskit/docs": "*",
53
- "@atlaskit/media-card": "^73.5.0",
54
- "@atlaskit/media-core": "^32.3.0",
55
- "@atlaskit/media-test-helpers": "^29.4.0",
52
+ "@atlaskit/media-card": "^73.7.0",
53
+ "@atlaskit/media-core": "^33.0.0",
54
+ "@atlaskit/media-test-helpers": "^30.0.0",
56
55
  "@atlaskit/ssr": "*",
57
56
  "@atlassian/atlassian-frontend-prettier-config-1.0.1": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.1",
58
57
  "@types/deep-equal": "^1.0.1",
59
- "@types/query-string": "^4.3.1",
60
58
  "@types/uuid-validate": "^0.0.0",
61
59
  "enzyme": "^3.10.0",
62
60
  "fetch-mock": "^8.0.0",
63
- "jest-fetch-mock": "^3.0.3",
64
61
  "react": "^16.8.0",
65
62
  "react-dom": "^16.8.0",
66
63
  "styled-components": "^3.2.6",