@atlaskit/media-client 36.3.3 → 36.4.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 (132) hide show
  1. package/AGENTS.md +18 -15
  2. package/CHANGELOG.md +15 -0
  3. package/artifacts/package.json +1 -8
  4. package/check-webp-support/package.json +1 -8
  5. package/constants/package.json +1 -8
  6. package/create-media-subject/package.json +1 -8
  7. package/dist/cjs/client/file-fetcher/index.js +7 -5
  8. package/dist/cjs/client/media-store/MediaStore.js +19 -7
  9. package/dist/cjs/uploader/index.js +3 -1
  10. package/dist/es2019/client/file-fetcher/index.js +7 -5
  11. package/dist/es2019/client/media-store/MediaStore.js +20 -8
  12. package/dist/es2019/uploader/index.js +3 -1
  13. package/dist/esm/client/file-fetcher/index.js +7 -5
  14. package/dist/esm/client/media-store/MediaStore.js +19 -7
  15. package/dist/esm/uploader/index.js +3 -1
  16. package/dist/types/client/file-fetcher/index.d.ts +2 -2
  17. package/dist/types/client/media-store/MediaStore.d.ts +6 -2
  18. package/dist/types/client/media-store/types.d.ts +6 -2
  19. package/error/package.json +1 -8
  20. package/errors/helpers/package.json +1 -8
  21. package/errors/package.json +1 -8
  22. package/errors/types/package.json +1 -8
  23. package/events/package.json +1 -8
  24. package/file-fetcher/error/package.json +1 -8
  25. package/file-fetcher/package.json +1 -8
  26. package/file-state/package.json +1 -8
  27. package/file-streams-cache/package.json +1 -8
  28. package/from-observable/package.json +1 -8
  29. package/get-dimensions-from-blob/package.json +1 -8
  30. package/global-media-event-emitter/package.json +1 -8
  31. package/identifier/package.json +1 -8
  32. package/image-resize-mode-to-file-image-mode/package.json +1 -8
  33. package/item/package.json +1 -8
  34. package/media/package.json +1 -8
  35. package/media-client/package.json +1 -8
  36. package/media-store/package.json +1 -8
  37. package/media-store/types/package.json +1 -8
  38. package/media-subscribable/types/package.json +1 -8
  39. package/mobile-upload/package.json +1 -8
  40. package/package.json +4 -4
  41. package/polling/errors/package.json +1 -8
  42. package/polling/package.json +1 -8
  43. package/polling/types/package.json +1 -8
  44. package/request/errors/package.json +1 -8
  45. package/request/helpers/package.json +1 -8
  46. package/request/package.json +1 -8
  47. package/request/types/package.json +1 -8
  48. package/stargate-client/package.json +1 -8
  49. package/upload-controller/package.json +1 -8
  50. package/uploader/package.json +1 -8
  51. package/url/package.json +1 -8
  52. package/dist/types-ts4.5/client/__mocks__/collection-fetcher.d.ts +0 -7
  53. package/dist/types-ts4.5/client/__mocks__/file-fetcher.d.ts +0 -9
  54. package/dist/types-ts4.5/client/__mocks__/media-client.d.ts +0 -10
  55. package/dist/types-ts4.5/client/events.d.ts +0 -29
  56. package/dist/types-ts4.5/client/file-fetcher/error.d.ts +0 -33
  57. package/dist/types-ts4.5/client/file-fetcher/index.d.ts +0 -86
  58. package/dist/types-ts4.5/client/media-client.d.ts +0 -34
  59. package/dist/types-ts4.5/client/media-store/MediaStore.d.ts +0 -56
  60. package/dist/types-ts4.5/client/media-store/error.d.ts +0 -15
  61. package/dist/types-ts4.5/client/media-store/index.d.ts +0 -4
  62. package/dist/types-ts4.5/client/media-store/resolveAuth.d.ts +0 -4
  63. package/dist/types-ts4.5/client/media-store/types.d.ts +0 -207
  64. package/dist/types-ts4.5/client/mobile-upload.d.ts +0 -15
  65. package/dist/types-ts4.5/client/stargate-client.d.ts +0 -15
  66. package/dist/types-ts4.5/constants.d.ts +0 -6
  67. package/dist/types-ts4.5/file-streams-cache.d.ts +0 -15
  68. package/dist/types-ts4.5/globalMediaEventEmitter.d.ts +0 -6
  69. package/dist/types-ts4.5/identifier.d.ts +0 -15
  70. package/dist/types-ts4.5/index.d.ts +0 -45
  71. package/dist/types-ts4.5/models/artifacts.d.ts +0 -2
  72. package/dist/types-ts4.5/models/auth-headers.d.ts +0 -11
  73. package/dist/types-ts4.5/models/auth-query-parameters.d.ts +0 -11
  74. package/dist/types-ts4.5/models/document.d.ts +0 -95
  75. package/dist/types-ts4.5/models/errors/helpers.d.ts +0 -6
  76. package/dist/types-ts4.5/models/errors/index.d.ts +0 -24
  77. package/dist/types-ts4.5/models/errors/types.d.ts +0 -22
  78. package/dist/types-ts4.5/models/file-state.d.ts +0 -32
  79. package/dist/types-ts4.5/models/item.d.ts +0 -27
  80. package/dist/types-ts4.5/models/media.d.ts +0 -65
  81. package/dist/types-ts4.5/models/mobile-upload.d.ts +0 -28
  82. package/dist/types-ts4.5/upload-controller.d.ts +0 -7
  83. package/dist/types-ts4.5/uploader/calculateChunkSize.d.ts +0 -11
  84. package/dist/types-ts4.5/uploader/error.d.ts +0 -27
  85. package/dist/types-ts4.5/uploader/index.d.ts +0 -23
  86. package/dist/types-ts4.5/utils/checkWebpSupport.d.ts +0 -1
  87. package/dist/types-ts4.5/utils/convertBase64ToBlob.d.ts +0 -1
  88. package/dist/types-ts4.5/utils/createCopyIntentRegisterationBatcher.d.ts +0 -20
  89. package/dist/types-ts4.5/utils/createFileDataLoader.d.ts +0 -30
  90. package/dist/types-ts4.5/utils/createMediaSubject.d.ts +0 -3
  91. package/dist/types-ts4.5/utils/detectEmptyFile.d.ts +0 -16
  92. package/dist/types-ts4.5/utils/getDimensionsFromBlob.d.ts +0 -6
  93. package/dist/types-ts4.5/utils/getDocument.d.ts +0 -2
  94. package/dist/types-ts4.5/utils/getImageDimensionsFromBlob.d.ts +0 -5
  95. package/dist/types-ts4.5/utils/getMediaTypeFromUploadableFile.d.ts +0 -3
  96. package/dist/types-ts4.5/utils/getNavigator.d.ts +0 -2
  97. package/dist/types-ts4.5/utils/getVideoDimensionsFromBlob.d.ts +0 -5
  98. package/dist/types-ts4.5/utils/hashing/hasher.d.ts +0 -3
  99. package/dist/types-ts4.5/utils/hashing/hasherCreator.d.ts +0 -4
  100. package/dist/types-ts4.5/utils/hashing/sha256SimpleHasher.d.ts +0 -4
  101. package/dist/types-ts4.5/utils/hashing/simpleHasher.d.ts +0 -4
  102. package/dist/types-ts4.5/utils/imageResizeModeToFileImageMode.d.ts +0 -3
  103. package/dist/types-ts4.5/utils/isCommercial.d.ts +0 -1
  104. package/dist/types-ts4.5/utils/mediaCdn.d.ts +0 -5
  105. package/dist/types-ts4.5/utils/mediaSubscribable/fromObservable.d.ts +0 -5
  106. package/dist/types-ts4.5/utils/mediaSubscribable/index.d.ts +0 -3
  107. package/dist/types-ts4.5/utils/mediaSubscribable/toPromise.d.ts +0 -10
  108. package/dist/types-ts4.5/utils/mediaSubscribable/types.d.ts +0 -17
  109. package/dist/types-ts4.5/utils/mobileUpload/error.d.ts +0 -33
  110. package/dist/types-ts4.5/utils/mobileUpload/helpers.d.ts +0 -8
  111. package/dist/types-ts4.5/utils/mobileUpload/index.d.ts +0 -5
  112. package/dist/types-ts4.5/utils/mobileUpload/servicesCache.d.ts +0 -4
  113. package/dist/types-ts4.5/utils/mobileUpload/stateMachine/index.d.ts +0 -7
  114. package/dist/types-ts4.5/utils/mobileUpload/stateMachine/states/error.d.ts +0 -3
  115. package/dist/types-ts4.5/utils/mobileUpload/stateMachine/states/processed.d.ts +0 -3
  116. package/dist/types-ts4.5/utils/mobileUpload/stateMachine/states/processing.d.ts +0 -3
  117. package/dist/types-ts4.5/utils/mobileUpload/stateMachine/states/processingFailed.d.ts +0 -3
  118. package/dist/types-ts4.5/utils/mobileUpload/stateMachine/states/uploading.d.ts +0 -3
  119. package/dist/types-ts4.5/utils/mobileUpload/stateMachine/types.d.ts +0 -69
  120. package/dist/types-ts4.5/utils/overrideMediaTypeIfUnknown.d.ts +0 -5
  121. package/dist/types-ts4.5/utils/pathBasedUrl.d.ts +0 -3
  122. package/dist/types-ts4.5/utils/polling/errors.d.ts +0 -11
  123. package/dist/types-ts4.5/utils/polling/index.d.ts +0 -34
  124. package/dist/types-ts4.5/utils/polling/types.d.ts +0 -10
  125. package/dist/types-ts4.5/utils/request/errors.d.ts +0 -22
  126. package/dist/types-ts4.5/utils/request/helpers.d.ts +0 -32
  127. package/dist/types-ts4.5/utils/request/index.d.ts +0 -5
  128. package/dist/types-ts4.5/utils/request/types.d.ts +0 -47
  129. package/dist/types-ts4.5/utils/setTimeoutPromise.d.ts +0 -2
  130. package/dist/types-ts4.5/utils/shouldFetchRemoteFileStates.d.ts +0 -14
  131. package/dist/types-ts4.5/utils/url.d.ts +0 -18
  132. package/dist/types-ts4.5/utils/watermarkVersion.d.ts +0 -10
package/AGENTS.md CHANGED
@@ -6,19 +6,19 @@
6
6
 
7
7
  ## Package identity
8
8
 
9
- | Field | Value |
10
- |---|---|
11
- | NPM name | `@atlaskit/media-client` |
12
- | Path | `media-client/` |
13
- | Owner | Media Exif |
14
- | Purpose | Media API Web Client Library — manages file state subscriptions, uploads, downloads, and communication with the Media backend API |
9
+ | Field | Value |
10
+ | -------- | --------------------------------------------------------------------------------------------------------------------------------- |
11
+ | NPM name | `@atlaskit/media-client` |
12
+ | Path | `media-client/` |
13
+ | Owner | Media Exif |
14
+ | Purpose | Media API Web Client Library — manages file state subscriptions, uploads, downloads, and communication with the Media backend API |
15
15
 
16
16
  ## Knowledge index
17
17
 
18
18
  > Read, search, edit, investigate, and validate the repository knowledge index at
19
- > `.agents/knowledge-index/`. ALWAYS use this skill before making ANY repo change, or when
20
- > exploring the codebase. The knowledge index is the canonical starting point for every coding task
21
- > in this repo, trigger this skill aggressively whenever the user mentions architecture, conventions,
19
+ > `.agents/knowledge-index/`. ALWAYS use this skill before making ANY repo change, or when exploring
20
+ > the codebase. The knowledge index is the canonical starting point for every coding task in this
21
+ > repo, trigger this skill aggressively whenever the user mentions architecture, conventions,
22
22
  > packages, modules, services, build, coding, writing code, APIs, feature flags, testing, or
23
23
  > anything similar. Also trigger when "is the knowledge index up to date?" / "update the knowledge
24
24
  > index" / "what does the knowledge index say about Y?" — even if they don't say the words
@@ -26,10 +26,11 @@
26
26
  > codebase and the docs after any code change. Use the `generate` subcommand to bootstrap the index
27
27
  > in a new repository.
28
28
 
29
- **Entry point:** `.agents/knowledge-index/INDEX.md`
30
- **Unit doc:** `.agents/knowledge-index/domains/media/units/atlaskit-media-client.md`
31
- **CLI:** `python3 .agents/skills/knowledge-index/scripts/kg.py {find,read,edit,investigate,validate,init,explore,generate} …`
32
- **Refresh protocol:** never silently bump `Last verified` — always re-read the listed `Sources` first, edit, then `kg.py edit <path> --message "<reason>"`.
29
+ **Entry point:** `.agents/knowledge-index/INDEX.md` **Unit doc:**
30
+ `.agents/knowledge-index/domains/media/units/atlaskit-media-client.md` **CLI:**
31
+ `python3 .agents/skills/knowledge-index/scripts/kg.py {find,read,edit,investigate,validate,init,explore,generate} …`
32
+ **Refresh protocol:** never silently bump `Last verified` — always re-read the listed `Sources`
33
+ first, edit, then `kg.py edit <path> --message "<reason>"`.
33
34
 
34
35
  ## Key source files
35
36
 
@@ -47,5 +48,7 @@
47
48
  - Peer dependencies: `@atlaskit/media-core`, `@atlaskit/media-state`
48
49
  - Key internal dependencies: `@atlaskit/chunkinator`, `@atlaskit/media-common`
49
50
  - 8 feature flags registered (see `package.json` → `platform-feature-flags`)
50
- - Notable flags: `platform_media_cdn_delivery`, `platform_media_cdn_single_host`, `platform_media_auth_provider_analytics`
51
- - All new behaviour changes must be behind a feature gate (`fg()` from `@atlaskit/platform-feature-flags`)
51
+ - Notable flags: `platform_media_cdn_delivery`, `platform_media_cdn_single_host`,
52
+ `platform_media_auth_provider_analytics`
53
+ - All new behaviour changes must be behind a feature gate (`fg()` from
54
+ `@atlaskit/platform-feature-flags`)
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @atlaskit/media-client
2
2
 
3
+ ## 36.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`7eee9ab1ef53b`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/7eee9ab1ef53b) -
8
+ Adds the `x-expected-size` header to the create-with-files (`POST /upload/createWithFiles`) and
9
+ create-file-from-upload (`POST /file/upload`) requests, gated by
10
+ `platform_media_upload_expected_size_header`. This propagates the expected file size to the upload
11
+
12
+ ## 36.3.4
13
+
14
+ ### Patch Changes
15
+
16
+ - Updated dependencies
17
+
3
18
  ## 36.3.3
4
19
 
5
20
  ### Patch Changes
@@ -4,12 +4,5 @@
4
4
  "module": "../dist/esm/models/artifacts.js",
5
5
  "module:es2019": "../dist/es2019/models/artifacts.js",
6
6
  "sideEffects": false,
7
- "types": "../dist/types/models/artifacts.d.ts",
8
- "typesVersions": {
9
- ">=4.5 <5.9": {
10
- "*": [
11
- "../dist/types-ts4.5/models/artifacts.d.ts"
12
- ]
13
- }
14
- }
7
+ "types": "../dist/types/models/artifacts.d.ts"
15
8
  }
@@ -4,12 +4,5 @@
4
4
  "module": "../dist/esm/utils/checkWebpSupport.js",
5
5
  "module:es2019": "../dist/es2019/utils/checkWebpSupport.js",
6
6
  "sideEffects": false,
7
- "types": "../dist/types/utils/checkWebpSupport.d.ts",
8
- "typesVersions": {
9
- ">=4.5 <5.9": {
10
- "*": [
11
- "../dist/types-ts4.5/utils/checkWebpSupport.d.ts"
12
- ]
13
- }
14
- }
7
+ "types": "../dist/types/utils/checkWebpSupport.d.ts"
15
8
  }
@@ -4,12 +4,5 @@
4
4
  "module": "../dist/esm/constants.js",
5
5
  "module:es2019": "../dist/es2019/constants.js",
6
6
  "sideEffects": false,
7
- "types": "../dist/types/constants.d.ts",
8
- "typesVersions": {
9
- ">=4.5 <5.9": {
10
- "*": [
11
- "../dist/types-ts4.5/constants.d.ts"
12
- ]
13
- }
14
- }
7
+ "types": "../dist/types/constants.d.ts"
15
8
  }
@@ -4,12 +4,5 @@
4
4
  "module": "../dist/esm/utils/createMediaSubject.js",
5
5
  "module:es2019": "../dist/es2019/utils/createMediaSubject.js",
6
6
  "sideEffects": false,
7
- "types": "../dist/types/utils/createMediaSubject.d.ts",
8
- "typesVersions": {
9
- ">=4.5 <5.9": {
10
- "*": [
11
- "../dist/types-ts4.5/utils/createMediaSubject.d.ts"
12
- ]
13
- }
14
- }
7
+ "types": "../dist/types/utils/createMediaSubject.d.ts"
15
8
  }
@@ -522,19 +522,21 @@ var FileFetcherImpl = exports.FileFetcherImpl = /*#__PURE__*/function () {
522
522
  }
523
523
  }, {
524
524
  key: "touchFiles",
525
- value: function touchFiles(descriptors, collection, traceContext) {
525
+ value: function touchFiles(descriptors, collection, traceContext, expectedFileSize) {
526
526
  return this.mediaApi.touchFiles({
527
527
  descriptors: descriptors
528
528
  }, {
529
529
  collection: collection
530
- }, traceContext).then(function (_ref9) {
530
+ }, traceContext, {
531
+ expectedFileSize: expectedFileSize
532
+ }).then(function (_ref9) {
531
533
  var data = _ref9.data;
532
534
  return data;
533
535
  });
534
536
  }
535
537
  }, {
536
538
  key: "generateUploadableFileUpfrontIds",
537
- value: function generateUploadableFileUpfrontIds(collection, traceContext) {
539
+ value: function generateUploadableFileUpfrontIds(collection, traceContext, expectedFileSize) {
538
540
  // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
539
541
  var id = (0, _v.default)();
540
542
  // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
@@ -544,7 +546,7 @@ var FileFetcherImpl = exports.FileFetcherImpl = /*#__PURE__*/function () {
544
546
  occurrenceKey: occurrenceKey,
545
547
  collection: collection
546
548
  };
547
- var deferredUploadId = this.touchFiles([touchFileDescriptor], collection, traceContext).then(function (touchedFiles) {
549
+ var deferredUploadId = this.touchFiles([touchFileDescriptor], collection, traceContext, expectedFileSize).then(function (touchedFiles) {
548
550
  return touchedFiles.created[0].uploadId;
549
551
  });
550
552
  return {
@@ -693,7 +695,7 @@ var FileFetcherImpl = exports.FileFetcherImpl = /*#__PURE__*/function () {
693
695
  value: function upload(file, controller, uploadableFileUpfrontIds, traceContext) {
694
696
  var _this4 = this;
695
697
  var collection = file.collection;
696
- var upfrontId = uploadableFileUpfrontIds || this.generateUploadableFileUpfrontIds(collection, traceContext);
698
+ var upfrontId = uploadableFileUpfrontIds || this.generateUploadableFileUpfrontIds(collection, traceContext, file.size);
697
699
  var id = upfrontId.id,
698
700
  occurrenceKey = upfrontId.occurrenceKey;
699
701
  var stateBase = this.getUploadingFileStateBase(file, upfrontId);
@@ -323,20 +323,25 @@ var MediaStore = exports.MediaStore = /*#__PURE__*/function () {
323
323
  value: function createFileFromUpload(body) {
324
324
  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
325
325
  var traceContext = arguments.length > 2 ? arguments[2] : undefined;
326
+ var options = arguments.length > 3 ? arguments[3] : undefined;
326
327
  var metadata = {
327
328
  method: 'POST',
328
329
  endpoint: '/file/upload'
329
330
  };
330
- var options = _objectSpread(_objectSpread({}, metadata), {}, {
331
+ var headers = _objectSpread({}, jsonHeaders);
332
+ if ((options === null || options === void 0 ? void 0 : options.expectedFileSize) !== undefined && (0, _platformFeatureFlags.fg)('platform_media_upload_expected_size_header')) {
333
+ headers['x-expected-size'] = options.expectedFileSize.toString();
334
+ }
335
+ var requestOptions = _objectSpread(_objectSpread({}, metadata), {}, {
331
336
  authContext: {
332
337
  collectionName: params.collection
333
338
  },
334
339
  params: params,
335
- headers: jsonHeaders,
340
+ headers: headers,
336
341
  body: JSON.stringify(body),
337
342
  traceContext: traceContext
338
343
  });
339
- return this.request('/file/upload', options).then((0, _helpers.createMapResponseToJson)(metadata));
344
+ return this.request('/file/upload', requestOptions).then((0, _helpers.createMapResponseToJson)(metadata));
340
345
  }
341
346
  }, {
342
347
  key: "getRejectedResponseFromDescriptor",
@@ -358,30 +363,37 @@ var MediaStore = exports.MediaStore = /*#__PURE__*/function () {
358
363
  var _touchFiles = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(body) {
359
364
  var params,
360
365
  traceContext,
361
- metadata,
362
366
  options,
367
+ metadata,
368
+ headers,
369
+ requestOptions,
363
370
  _args7 = arguments;
364
371
  return _regenerator.default.wrap(function (_context7) {
365
372
  while (1) switch (_context7.prev = _context7.next) {
366
373
  case 0:
367
374
  params = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : {};
368
375
  traceContext = _args7.length > 2 ? _args7[2] : undefined;
376
+ options = _args7.length > 3 ? _args7[3] : undefined;
369
377
  metadata = {
370
378
  method: 'POST',
371
379
  endpoint: '/upload/createWithFiles'
372
380
  };
373
- options = _objectSpread(_objectSpread({}, metadata), {}, {
381
+ headers = _objectSpread({}, jsonHeaders);
382
+ if ((options === null || options === void 0 ? void 0 : options.expectedFileSize) !== undefined && (0, _platformFeatureFlags.fg)('platform_media_upload_expected_size_header')) {
383
+ headers['x-expected-size'] = options.expectedFileSize.toString();
384
+ }
385
+ requestOptions = _objectSpread(_objectSpread({}, metadata), {}, {
374
386
  authContext: {
375
387
  collectionName: params.collection
376
388
  },
377
- headers: jsonHeaders,
389
+ headers: headers,
378
390
  body: JSON.stringify(body),
379
391
  traceContext: traceContext,
380
392
  params: {
381
393
  hashAlgorithm: this._chunkHashAlgorithm
382
394
  }
383
395
  });
384
- return _context7.abrupt("return", this.request('/upload/createWithFiles', options).then((0, _helpers.createMapResponseToJson)(metadata)));
396
+ return _context7.abrupt("return", this.request('/upload/createWithFiles', requestOptions).then((0, _helpers.createMapResponseToJson)(metadata)));
385
397
  case 1:
386
398
  case "end":
387
399
  return _context7.stop();
@@ -121,7 +121,9 @@ var createFileFromUpload = /*#__PURE__*/function () {
121
121
  occurrenceKey: occurrenceKey,
122
122
  collection: collection,
123
123
  replaceFileId: id
124
- }, traceContext));
124
+ }, traceContext, {
125
+ expectedFileSize: file.size
126
+ }));
125
127
  case 1:
126
128
  case "end":
127
129
  return _context4.stop();
@@ -323,16 +323,18 @@ export class FileFetcherImpl {
323
323
  getFileBinaryURL(id, collectionName, maxAge) {
324
324
  return this.mediaApi.getFileBinaryURL(id, collectionName, maxAge);
325
325
  }
326
- touchFiles(descriptors, collection, traceContext) {
326
+ touchFiles(descriptors, collection, traceContext, expectedFileSize) {
327
327
  return this.mediaApi.touchFiles({
328
328
  descriptors
329
329
  }, {
330
330
  collection
331
- }, traceContext).then(({
331
+ }, traceContext, {
332
+ expectedFileSize
333
+ }).then(({
332
334
  data
333
335
  }) => data);
334
336
  }
335
- generateUploadableFileUpfrontIds(collection, traceContext) {
337
+ generateUploadableFileUpfrontIds(collection, traceContext, expectedFileSize) {
336
338
  // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
337
339
  const id = uuid();
338
340
  // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
@@ -342,7 +344,7 @@ export class FileFetcherImpl {
342
344
  occurrenceKey,
343
345
  collection
344
346
  };
345
- const deferredUploadId = this.touchFiles([touchFileDescriptor], collection, traceContext).then(touchedFiles => touchedFiles.created[0].uploadId);
347
+ const deferredUploadId = this.touchFiles([touchFileDescriptor], collection, traceContext, expectedFileSize).then(touchedFiles => touchedFiles.created[0].uploadId);
346
348
  return {
347
349
  id,
348
350
  occurrenceKey,
@@ -432,7 +434,7 @@ export class FileFetcherImpl {
432
434
  const {
433
435
  collection
434
436
  } = file;
435
- const upfrontId = uploadableFileUpfrontIds || this.generateUploadableFileUpfrontIds(collection, traceContext);
437
+ const upfrontId = uploadableFileUpfrontIds || this.generateUploadableFileUpfrontIds(collection, traceContext, file.size);
436
438
  const {
437
439
  id,
438
440
  occurrenceKey
@@ -216,22 +216,28 @@ export class MediaStore {
216
216
  };
217
217
  await this.request(`/chunk/${etag}`, options);
218
218
  }
219
- createFileFromUpload(body, params = {}, traceContext) {
219
+ createFileFromUpload(body, params = {}, traceContext, options) {
220
220
  const metadata = {
221
221
  method: 'POST',
222
222
  endpoint: '/file/upload'
223
223
  };
224
- const options = {
224
+ const headers = {
225
+ ...jsonHeaders
226
+ };
227
+ if ((options === null || options === void 0 ? void 0 : options.expectedFileSize) !== undefined && fg('platform_media_upload_expected_size_header')) {
228
+ headers['x-expected-size'] = options.expectedFileSize.toString();
229
+ }
230
+ const requestOptions = {
225
231
  ...metadata,
226
232
  authContext: {
227
233
  collectionName: params.collection
228
234
  },
229
235
  params,
230
- headers: jsonHeaders,
236
+ headers,
231
237
  body: JSON.stringify(body),
232
238
  traceContext
233
239
  };
234
- return this.request('/file/upload', options).then(createMapResponseToJson(metadata));
240
+ return this.request('/file/upload', requestOptions).then(createMapResponseToJson(metadata));
235
241
  }
236
242
  getRejectedResponseFromDescriptor(descriptor, limit) {
237
243
  return {
@@ -245,24 +251,30 @@ export class MediaStore {
245
251
  }
246
252
  };
247
253
  }
248
- async touchFiles(body, params = {}, traceContext) {
254
+ async touchFiles(body, params = {}, traceContext, options) {
249
255
  const metadata = {
250
256
  method: 'POST',
251
257
  endpoint: '/upload/createWithFiles'
252
258
  };
253
- const options = {
259
+ const headers = {
260
+ ...jsonHeaders
261
+ };
262
+ if ((options === null || options === void 0 ? void 0 : options.expectedFileSize) !== undefined && fg('platform_media_upload_expected_size_header')) {
263
+ headers['x-expected-size'] = options.expectedFileSize.toString();
264
+ }
265
+ const requestOptions = {
254
266
  ...metadata,
255
267
  authContext: {
256
268
  collectionName: params.collection
257
269
  },
258
- headers: jsonHeaders,
270
+ headers,
259
271
  body: JSON.stringify(body),
260
272
  traceContext,
261
273
  params: {
262
274
  hashAlgorithm: this._chunkHashAlgorithm
263
275
  }
264
276
  };
265
- return this.request('/upload/createWithFiles', options).then(createMapResponseToJson(metadata));
277
+ return this.request('/upload/createWithFiles', requestOptions).then(createMapResponseToJson(metadata));
266
278
  }
267
279
  getFile(fileId, params = {}, traceContext) {
268
280
  const metadata = {
@@ -53,7 +53,9 @@ const createFileFromUpload = async (file, store, uploadableFileUpfrontIds, uploa
53
53
  occurrenceKey,
54
54
  collection,
55
55
  replaceFileId: id
56
- }, traceContext);
56
+ }, traceContext, {
57
+ expectedFileSize: file.size
58
+ });
57
59
  };
58
60
  export const uploadFile = (file, store, uploadableFileUpfrontIds, callbacks, traceContext) => {
59
61
  const {
@@ -505,19 +505,21 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
505
505
  }
506
506
  }, {
507
507
  key: "touchFiles",
508
- value: function touchFiles(descriptors, collection, traceContext) {
508
+ value: function touchFiles(descriptors, collection, traceContext, expectedFileSize) {
509
509
  return this.mediaApi.touchFiles({
510
510
  descriptors: descriptors
511
511
  }, {
512
512
  collection: collection
513
- }, traceContext).then(function (_ref9) {
513
+ }, traceContext, {
514
+ expectedFileSize: expectedFileSize
515
+ }).then(function (_ref9) {
514
516
  var data = _ref9.data;
515
517
  return data;
516
518
  });
517
519
  }
518
520
  }, {
519
521
  key: "generateUploadableFileUpfrontIds",
520
- value: function generateUploadableFileUpfrontIds(collection, traceContext) {
522
+ value: function generateUploadableFileUpfrontIds(collection, traceContext, expectedFileSize) {
521
523
  // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
522
524
  var id = uuid();
523
525
  // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
@@ -527,7 +529,7 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
527
529
  occurrenceKey: occurrenceKey,
528
530
  collection: collection
529
531
  };
530
- var deferredUploadId = this.touchFiles([touchFileDescriptor], collection, traceContext).then(function (touchedFiles) {
532
+ var deferredUploadId = this.touchFiles([touchFileDescriptor], collection, traceContext, expectedFileSize).then(function (touchedFiles) {
531
533
  return touchedFiles.created[0].uploadId;
532
534
  });
533
535
  return {
@@ -676,7 +678,7 @@ export var FileFetcherImpl = /*#__PURE__*/function () {
676
678
  value: function upload(file, controller, uploadableFileUpfrontIds, traceContext) {
677
679
  var _this4 = this;
678
680
  var collection = file.collection;
679
- var upfrontId = uploadableFileUpfrontIds || this.generateUploadableFileUpfrontIds(collection, traceContext);
681
+ var upfrontId = uploadableFileUpfrontIds || this.generateUploadableFileUpfrontIds(collection, traceContext, file.size);
680
682
  var id = upfrontId.id,
681
683
  occurrenceKey = upfrontId.occurrenceKey;
682
684
  var stateBase = this.getUploadingFileStateBase(file, upfrontId);
@@ -317,20 +317,25 @@ export var MediaStore = /*#__PURE__*/function () {
317
317
  value: function createFileFromUpload(body) {
318
318
  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
319
319
  var traceContext = arguments.length > 2 ? arguments[2] : undefined;
320
+ var options = arguments.length > 3 ? arguments[3] : undefined;
320
321
  var metadata = {
321
322
  method: 'POST',
322
323
  endpoint: '/file/upload'
323
324
  };
324
- var options = _objectSpread(_objectSpread({}, metadata), {}, {
325
+ var headers = _objectSpread({}, jsonHeaders);
326
+ if ((options === null || options === void 0 ? void 0 : options.expectedFileSize) !== undefined && fg('platform_media_upload_expected_size_header')) {
327
+ headers['x-expected-size'] = options.expectedFileSize.toString();
328
+ }
329
+ var requestOptions = _objectSpread(_objectSpread({}, metadata), {}, {
325
330
  authContext: {
326
331
  collectionName: params.collection
327
332
  },
328
333
  params: params,
329
- headers: jsonHeaders,
334
+ headers: headers,
330
335
  body: JSON.stringify(body),
331
336
  traceContext: traceContext
332
337
  });
333
- return this.request('/file/upload', options).then(createMapResponseToJson(metadata));
338
+ return this.request('/file/upload', requestOptions).then(createMapResponseToJson(metadata));
334
339
  }
335
340
  }, {
336
341
  key: "getRejectedResponseFromDescriptor",
@@ -352,30 +357,37 @@ export var MediaStore = /*#__PURE__*/function () {
352
357
  var _touchFiles = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7(body) {
353
358
  var params,
354
359
  traceContext,
355
- metadata,
356
360
  options,
361
+ metadata,
362
+ headers,
363
+ requestOptions,
357
364
  _args7 = arguments;
358
365
  return _regeneratorRuntime.wrap(function (_context7) {
359
366
  while (1) switch (_context7.prev = _context7.next) {
360
367
  case 0:
361
368
  params = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : {};
362
369
  traceContext = _args7.length > 2 ? _args7[2] : undefined;
370
+ options = _args7.length > 3 ? _args7[3] : undefined;
363
371
  metadata = {
364
372
  method: 'POST',
365
373
  endpoint: '/upload/createWithFiles'
366
374
  };
367
- options = _objectSpread(_objectSpread({}, metadata), {}, {
375
+ headers = _objectSpread({}, jsonHeaders);
376
+ if ((options === null || options === void 0 ? void 0 : options.expectedFileSize) !== undefined && fg('platform_media_upload_expected_size_header')) {
377
+ headers['x-expected-size'] = options.expectedFileSize.toString();
378
+ }
379
+ requestOptions = _objectSpread(_objectSpread({}, metadata), {}, {
368
380
  authContext: {
369
381
  collectionName: params.collection
370
382
  },
371
- headers: jsonHeaders,
383
+ headers: headers,
372
384
  body: JSON.stringify(body),
373
385
  traceContext: traceContext,
374
386
  params: {
375
387
  hashAlgorithm: this._chunkHashAlgorithm
376
388
  }
377
389
  });
378
- return _context7.abrupt("return", this.request('/upload/createWithFiles', options).then(createMapResponseToJson(metadata)));
390
+ return _context7.abrupt("return", this.request('/upload/createWithFiles', requestOptions).then(createMapResponseToJson(metadata)));
379
391
  case 1:
380
392
  case "end":
381
393
  return _context7.stop();
@@ -115,7 +115,9 @@ var createFileFromUpload = /*#__PURE__*/function () {
115
115
  occurrenceKey: occurrenceKey,
116
116
  collection: collection,
117
117
  replaceFileId: id
118
- }, traceContext));
118
+ }, traceContext, {
119
+ expectedFileSize: file.size
120
+ }));
119
121
  case 1:
120
122
  case "end":
121
123
  return _context4.stop();
@@ -34,7 +34,7 @@ export type ExternalUploadPayload = {
34
34
  export interface FileFetcher {
35
35
  getFileState(id: string, options?: GetFileOptions): MediaSubscribable;
36
36
  getArtifactURL(artifacts: MediaFileArtifacts, artifactName: keyof MediaFileArtifacts, collectionName?: string): Promise<string>;
37
- touchFiles(descriptors: TouchFileDescriptor[], collection?: string, traceContext?: MediaTraceContext): Promise<TouchedFiles>;
37
+ touchFiles(descriptors: TouchFileDescriptor[], collection?: string, traceContext?: MediaTraceContext, expectedFileSize?: number): Promise<TouchedFiles>;
38
38
  upload(file: UploadableFile, controller?: UploadController, uploadableFileUpfrontIds?: UploadableFileUpfrontIds, traceContext?: MediaTraceContext): MediaSubscribable;
39
39
  uploadExternal(url: string, collection?: string, traceContext?: MediaTraceContext, anonymizeFilename?: boolean): Promise<ExternalUploadPayload>;
40
40
  downloadBinary(id: string, name?: string, collectionName?: string, traceContext?: MediaTraceContext): Promise<void>;
@@ -65,7 +65,7 @@ export declare class FileFetcherImpl implements FileFetcher {
65
65
  getArtifactURL(artifacts: MediaFileArtifacts, artifactName: keyof MediaFileArtifacts, collectionName?: string): Promise<string>;
66
66
  getFileBinaryURL(id: string, collectionName?: string, maxAge?: number): Promise<string>;
67
67
  private createDownloadFileStream;
68
- touchFiles(descriptors: TouchFileDescriptor[], collection?: string, traceContext?: MediaTraceContext): Promise<TouchedFiles>;
68
+ touchFiles(descriptors: TouchFileDescriptor[], collection?: string, traceContext?: MediaTraceContext, expectedFileSize?: number): Promise<TouchedFiles>;
69
69
  private generateUploadableFileUpfrontIds;
70
70
  uploadExternal(url: string, collection?: string, traceContext?: MediaTraceContext, anonymizeFilename?: boolean): Promise<ExternalUploadPayload>;
71
71
  private getUploadingFileStateBase;
@@ -15,9 +15,13 @@ export declare class MediaStore implements MediaApi {
15
15
  removeCollectionFile(id: string, collectionName: string, occurrenceKey?: string, traceContext?: MediaTraceContext): Promise<void>;
16
16
  createUpload(createUpTo?: number, collectionName?: string, traceContext?: MediaTraceContext): Promise<MediaStoreResponse<MediaUpload[]>>;
17
17
  uploadChunk(etag: string, blob: Blob, uploadId: string, partNumber: number, collectionName?: string, traceContext?: MediaTraceContext): Promise<void>;
18
- createFileFromUpload(body: MediaStoreCreateFileFromUploadBody, params?: MediaStoreCreateFileFromUploadParams, traceContext?: MediaTraceContext): Promise<MediaStoreResponse<MediaFile>>;
18
+ createFileFromUpload(body: MediaStoreCreateFileFromUploadBody, params?: MediaStoreCreateFileFromUploadParams, traceContext?: MediaTraceContext, options?: {
19
+ expectedFileSize?: number;
20
+ }): Promise<MediaStoreResponse<MediaFile>>;
19
21
  getRejectedResponseFromDescriptor(descriptor: TouchFileDescriptor, limit: number): RejectedTouchFile;
20
- touchFiles(body: MediaStoreTouchFileBody, params?: MediaStoreTouchFileParams, traceContext?: MediaTraceContext): Promise<MediaStoreResponse<TouchedFiles>>;
22
+ touchFiles(body: MediaStoreTouchFileBody, params?: MediaStoreTouchFileParams, traceContext?: MediaTraceContext, options?: {
23
+ expectedFileSize?: number;
24
+ }): Promise<MediaStoreResponse<TouchedFiles>>;
21
25
  getFile(fileId: string, params?: MediaStoreGetFileParams, traceContext?: MediaTraceContext): Promise<MediaStoreResponse<MediaFile>>;
22
26
  getFileImageURL(id: string, params?: MediaStoreGetFileImageParams): Promise<string>;
23
27
  getFileImageURLSync(id: string, params?: MediaStoreGetFileImageParams): string;
@@ -168,9 +168,13 @@ export interface MediaApi {
168
168
  removeCollectionFile: (id: string, collectionName: string, occurrenceKey?: string, traceContext?: MediaTraceContext) => Promise<void>;
169
169
  createUpload: (createUpTo: number, collectionName?: string, traceContext?: MediaTraceContext, chunkChunkHashAlgorithm?: ChunkHashAlgorithm) => Promise<MediaStoreResponse<MediaUpload[]>>;
170
170
  uploadChunk: (etag: string, blob: Blob, uploadId: string, partNumber: number, collectionName?: string, traceContext?: MediaTraceContext) => Promise<void>;
171
- createFileFromUpload: (body: MediaStoreCreateFileFromUploadBody, params: MediaStoreCreateFileFromUploadParams, traceContext?: MediaTraceContext) => Promise<MediaStoreResponse<MediaFile>>;
171
+ createFileFromUpload: (body: MediaStoreCreateFileFromUploadBody, params: MediaStoreCreateFileFromUploadParams, traceContext?: MediaTraceContext, options?: {
172
+ expectedFileSize?: number;
173
+ }) => Promise<MediaStoreResponse<MediaFile>>;
172
174
  getRejectedResponseFromDescriptor: (descriptor: TouchFileDescriptor, limit: number) => RejectedTouchFile;
173
- touchFiles: (body: MediaStoreTouchFileBody, params: MediaStoreTouchFileParams, traceContext?: MediaTraceContext) => Promise<MediaStoreResponse<TouchedFiles>>;
175
+ touchFiles: (body: MediaStoreTouchFileBody, params: MediaStoreTouchFileParams, traceContext?: MediaTraceContext, options?: {
176
+ expectedFileSize?: number;
177
+ }) => Promise<MediaStoreResponse<TouchedFiles>>;
174
178
  getFile: (fileId: string, params: MediaStoreGetFileParams, traceContext?: MediaTraceContext) => Promise<MediaStoreResponse<MediaFile>>;
175
179
  getFileImageURL: (id: string, params?: MediaStoreGetFileImageParams) => Promise<string>;
176
180
  getFileImageURLSync: (id: string, params?: MediaStoreGetFileImageParams) => string;
@@ -4,12 +4,5 @@
4
4
  "module": "../dist/esm/client/media-store/error.js",
5
5
  "module:es2019": "../dist/es2019/client/media-store/error.js",
6
6
  "sideEffects": false,
7
- "types": "../dist/types/client/media-store/error.d.ts",
8
- "typesVersions": {
9
- ">=4.5 <5.9": {
10
- "*": [
11
- "../dist/types-ts4.5/client/media-store/error.d.ts"
12
- ]
13
- }
14
- }
7
+ "types": "../dist/types/client/media-store/error.d.ts"
15
8
  }
@@ -4,12 +4,5 @@
4
4
  "module": "../../dist/esm/models/errors/helpers.js",
5
5
  "module:es2019": "../../dist/es2019/models/errors/helpers.js",
6
6
  "sideEffects": false,
7
- "types": "../../dist/types/models/errors/helpers.d.ts",
8
- "typesVersions": {
9
- ">=4.5 <5.9": {
10
- "*": [
11
- "../../dist/types-ts4.5/models/errors/helpers.d.ts"
12
- ]
13
- }
14
- }
7
+ "types": "../../dist/types/models/errors/helpers.d.ts"
15
8
  }
@@ -4,12 +4,5 @@
4
4
  "module": "../dist/esm/models/errors/index.js",
5
5
  "module:es2019": "../dist/es2019/models/errors/index.js",
6
6
  "sideEffects": false,
7
- "types": "../dist/types/models/errors/index.d.ts",
8
- "typesVersions": {
9
- ">=4.5 <5.9": {
10
- "*": [
11
- "../dist/types-ts4.5/models/errors/index.d.ts"
12
- ]
13
- }
14
- }
7
+ "types": "../dist/types/models/errors/index.d.ts"
15
8
  }
@@ -4,12 +4,5 @@
4
4
  "module": "../../dist/esm/models/errors/types.js",
5
5
  "module:es2019": "../../dist/es2019/models/errors/types.js",
6
6
  "sideEffects": false,
7
- "types": "../../dist/types/models/errors/types.d.ts",
8
- "typesVersions": {
9
- ">=4.5 <5.9": {
10
- "*": [
11
- "../../dist/types-ts4.5/models/errors/types.d.ts"
12
- ]
13
- }
14
- }
7
+ "types": "../../dist/types/models/errors/types.d.ts"
15
8
  }
@@ -4,12 +4,5 @@
4
4
  "module": "../dist/esm/client/events.js",
5
5
  "module:es2019": "../dist/es2019/client/events.js",
6
6
  "sideEffects": false,
7
- "types": "../dist/types/client/events.d.ts",
8
- "typesVersions": {
9
- ">=4.5 <5.9": {
10
- "*": [
11
- "../dist/types-ts4.5/client/events.d.ts"
12
- ]
13
- }
14
- }
7
+ "types": "../dist/types/client/events.d.ts"
15
8
  }