@bigbinary/neeto-media-recorder 2.1.5 → 2.1.6-beta.3

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/constants.js CHANGED
@@ -20,7 +20,9 @@ var ONE_MINUTE_IN_MILLISECONDS = 60 * ONE_SECOND_IN_MILLISECONDS;
20
20
  var ONE_HOUR_IN_MILLISECONDS = 60 * ONE_MINUTE_IN_MILLISECONDS;
21
21
  var ONE_SECOND = 1;
22
22
  var UPLOAD_EVENT = {
23
- onComplete: "onComplete"
23
+ onComplete: "onComplete",
24
+ onError: "onError",
25
+ onProgress: "onProgress"
24
26
  };
25
27
  var UPLOAD_STATUS = {
26
28
  uploading: "uploading",
@@ -63,9 +65,10 @@ var SCREEN_RECORDER_EVENT = {
63
65
  onDiscard: "onDiscard",
64
66
  onDataAvailable: "onDataAvailable",
65
67
  onDiscardDuringCountdown: "onDiscardDuringCountdown",
66
- onRestart: "onRestart"
68
+ onRestart: "onRestart",
69
+ onReUpload: "onReUpload"
67
70
  };
68
- var TOTAL_RETRIES = 30;
71
+ var TOTAL_RETRIES = 15;
69
72
  var INITIAL_RETRY_DELAY = 4000;
70
73
  var MAX_RETRY_DELAY = 16000;
71
74
  var DEFAULT_RETRY_CONFIG = {
package/constants.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["node_modules/@babel/runtime/helpers/esm/typeof.js","src/constants.js"],"sourcesContent":["export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import platform from \"platform\";\nimport { isNotNil } from \"ramda\";\n\n// https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList\nexport const RETRIABLE_ERRORS = [500, 503];\n\nexport const ONE_SECOND_IN_MILLISECONDS = 1000;\nexport const HALF_A_SECOND_IN_MILLISECONDS = 500;\nexport const TWO_HUNDRED_MILLISECONDS = 200;\n\nexport const ONE_MINUTE_IN_MILLISECONDS = 60 * ONE_SECOND_IN_MILLISECONDS;\nexport const ONE_HOUR_IN_MILLISECONDS = 60 * ONE_MINUTE_IN_MILLISECONDS;\n\nexport const ONE_SECOND = 1;\n\nexport const UPLOAD_EVENT = { onComplete: \"onComplete\" };\n\nexport const UPLOAD_STATUS = {\n uploading: \"uploading\",\n completed: \"completed\",\n aborting: \"aborting\",\n insufficient_data: \"insufficient_data\",\n};\n\nexport const SCREEN_RECORDER_STATUS = {\n media_aborted: \"media_aborted\",\n permission_denied: \"permission_denied\",\n no_specified_media_found: \"no_specified_media_found\",\n media_in_use: \"media_in_use\",\n invalid_media_constraints: \"invalid_media_constraints\",\n no_chrome_flags_set: \"no_chrome_flags_set\",\n recorder_error: \"recorder_error\",\n idle: \"idle\",\n acquiring_media: \"acquiring_media\",\n media_acquired: \"media_acquired\",\n restarting: \"restarting\",\n recording: \"recording\",\n stopping: \"stopping\",\n stopped: \"stopped\",\n paused: \"paused\",\n};\n\nexport const SCREEN_RECORDER_ERROR = {\n MicPermissionDenied: \"mic_permission_denied\",\n AbortError: \"media_aborted\",\n NotAllowedError: \"permission_denied\",\n NotFoundError: \"no_specified_media_found\",\n NotReadableError: \"media_in_use\",\n OverconstrainedError: \"invalid_media_constraints\",\n TypeError: \"no_chrome_flags_set\",\n None: \"\",\n NoRecorder: \"recorder_error\",\n UnSupportedBrowser: \"unsupported_browser\",\n};\n\nexport const SCREEN_RECORDER_EVENT = {\n onStart: \"onStart\",\n onStop: \"onStop\",\n onDiscard: \"onDiscard\",\n onDataAvailable: \"onDataAvailable\",\n onDiscardDuringCountdown: \"onDiscardDuringCountdown\",\n onRestart: \"onRestart\",\n};\n\nexport const TOTAL_RETRIES = 30;\nexport const INITIAL_RETRY_DELAY = 4000;\nexport const MAX_RETRY_DELAY = 16000;\n\nexport const DEFAULT_RETRY_CONFIG = {\n retries: TOTAL_RETRIES,\n retryDelay: INITIAL_RETRY_DELAY,\n retryableStatuses: [],\n};\n\n// No need to localize this since it will only be used in the code\n// eslint-disable-next-line @bigbinary/neeto/hard-coded-strings-should-be-localized\nexport const NETWORK_ERROR = \"Network Error\";\nexport const TIMEOUT_ERROR = \"ECONNABORTED\";\n\nexport const HAS_CHROME_NAMESPACE = typeof chrome === \"object\";\n\nexport const IS_EXTENSION = HAS_CHROME_NAMESPACE && isNotNil(chrome.extension);\n\nexport const IS_SAFARI = platform.name === \"Safari\";\n\nexport const IS_SAFARI_EXTENSION = IS_SAFARI && IS_EXTENSION;\n\nexport const PERMISSIONS_HELP_DOC =\n \"https://neetorecordhelp.neetokb.com/p/a-10efcfd7\";\n\nexport const MIME_TYPE = {\n mp4: \"video/mp4\",\n webmH264: \"video/webm;codecs=h264\",\n};\n\nexport const START_RECORDING_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-start-sound-2.mp3\";\n\nexport const STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-end-sound.mp3\";\n\nexport const RECORDING_LIMIT_REACHED_WARNING_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-warning-sound.mp3\";\n\nexport const RECORDING_TIME_LIMIT_FREE_PLAN = 15 * ONE_MINUTE_IN_MILLISECONDS; // 15 minutes\nexport const RECORDING_TIME_LIMIT_PRO_PLAN = 2 * ONE_HOUR_IN_MILLISECONDS; // 2 hours\n"],"names":["RETRIABLE_ERRORS","ONE_SECOND_IN_MILLISECONDS","HALF_A_SECOND_IN_MILLISECONDS","TWO_HUNDRED_MILLISECONDS","ONE_MINUTE_IN_MILLISECONDS","ONE_HOUR_IN_MILLISECONDS","ONE_SECOND","UPLOAD_EVENT","onComplete","UPLOAD_STATUS","uploading","completed","aborting","insufficient_data","SCREEN_RECORDER_STATUS","media_aborted","permission_denied","no_specified_media_found","media_in_use","invalid_media_constraints","no_chrome_flags_set","recorder_error","idle","acquiring_media","media_acquired","restarting","recording","stopping","stopped","paused","SCREEN_RECORDER_ERROR","MicPermissionDenied","AbortError","NotAllowedError","NotFoundError","NotReadableError","OverconstrainedError","TypeError","None","NoRecorder","UnSupportedBrowser","SCREEN_RECORDER_EVENT","onStart","onStop","onDiscard","onDataAvailable","onDiscardDuringCountdown","onRestart","TOTAL_RETRIES","INITIAL_RETRY_DELAY","MAX_RETRY_DELAY","DEFAULT_RETRY_CONFIG","retries","retryDelay","retryableStatuses","NETWORK_ERROR","TIMEOUT_ERROR","HAS_CHROME_NAMESPACE","chrome","_typeof","IS_EXTENSION","isNotNil","extension","IS_SAFARI","platform","name","IS_SAFARI_EXTENSION","PERMISSIONS_HELP_DOC","MIME_TYPE","mp4","webmH264","START_RECORDING_SOUND","STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND","RECORDING_LIMIT_REACHED_WARNING_SOUND","RECORDING_TIME_LIMIT_FREE_PLAN","RECORDING_TIME_LIMIT_PRO_PLAN"],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sources":["node_modules/@babel/runtime/helpers/esm/typeof.js","src/constants.js"],"sourcesContent":["export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import platform from \"platform\";\nimport { isNotNil } from \"ramda\";\n\n// https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList\nexport const RETRIABLE_ERRORS = [500, 503];\n\nexport const ONE_SECOND_IN_MILLISECONDS = 1000;\nexport const HALF_A_SECOND_IN_MILLISECONDS = 500;\nexport const TWO_HUNDRED_MILLISECONDS = 200;\n\nexport const ONE_MINUTE_IN_MILLISECONDS = 60 * ONE_SECOND_IN_MILLISECONDS;\nexport const ONE_HOUR_IN_MILLISECONDS = 60 * ONE_MINUTE_IN_MILLISECONDS;\n\nexport const ONE_SECOND = 1;\n\nexport const UPLOAD_EVENT = {\n onComplete: \"onComplete\",\n onError: \"onError\",\n onProgress: \"onProgress\",\n};\n\nexport const UPLOAD_STATUS = {\n uploading: \"uploading\",\n completed: \"completed\",\n aborting: \"aborting\",\n insufficient_data: \"insufficient_data\",\n};\n\nexport const SCREEN_RECORDER_STATUS = {\n media_aborted: \"media_aborted\",\n permission_denied: \"permission_denied\",\n no_specified_media_found: \"no_specified_media_found\",\n media_in_use: \"media_in_use\",\n invalid_media_constraints: \"invalid_media_constraints\",\n no_chrome_flags_set: \"no_chrome_flags_set\",\n recorder_error: \"recorder_error\",\n idle: \"idle\",\n acquiring_media: \"acquiring_media\",\n media_acquired: \"media_acquired\",\n restarting: \"restarting\",\n recording: \"recording\",\n stopping: \"stopping\",\n stopped: \"stopped\",\n paused: \"paused\",\n};\n\nexport const SCREEN_RECORDER_ERROR = {\n MicPermissionDenied: \"mic_permission_denied\",\n AbortError: \"media_aborted\",\n NotAllowedError: \"permission_denied\",\n NotFoundError: \"no_specified_media_found\",\n NotReadableError: \"media_in_use\",\n OverconstrainedError: \"invalid_media_constraints\",\n TypeError: \"no_chrome_flags_set\",\n None: \"\",\n NoRecorder: \"recorder_error\",\n UnSupportedBrowser: \"unsupported_browser\",\n};\n\nexport const SCREEN_RECORDER_EVENT = {\n onStart: \"onStart\",\n onStop: \"onStop\",\n onDiscard: \"onDiscard\",\n onDataAvailable: \"onDataAvailable\",\n onDiscardDuringCountdown: \"onDiscardDuringCountdown\",\n onRestart: \"onRestart\",\n onReUpload: \"onReUpload\",\n};\n\nexport const TOTAL_RETRIES = 15;\nexport const INITIAL_RETRY_DELAY = 4000;\nexport const MAX_RETRY_DELAY = 16000;\n\nexport const DEFAULT_RETRY_CONFIG = {\n retries: TOTAL_RETRIES,\n retryDelay: INITIAL_RETRY_DELAY,\n retryableStatuses: [],\n};\n\n// No need to localize this since it will only be used in the code\n// eslint-disable-next-line @bigbinary/neeto/hard-coded-strings-should-be-localized\nexport const NETWORK_ERROR = \"Network Error\";\nexport const TIMEOUT_ERROR = \"ECONNABORTED\";\n\nexport const HAS_CHROME_NAMESPACE = typeof chrome === \"object\";\n\nexport const IS_EXTENSION = HAS_CHROME_NAMESPACE && isNotNil(chrome.extension);\n\nexport const IS_SAFARI = platform.name === \"Safari\";\n\nexport const IS_SAFARI_EXTENSION = IS_SAFARI && IS_EXTENSION;\n\nexport const PERMISSIONS_HELP_DOC =\n \"https://neetorecordhelp.neetokb.com/p/a-10efcfd7\";\n\nexport const MIME_TYPE = {\n mp4: \"video/mp4\",\n webmH264: \"video/webm;codecs=h264\",\n};\n\nexport const START_RECORDING_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-start-sound-2.mp3\";\n\nexport const STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-end-sound.mp3\";\n\nexport const RECORDING_LIMIT_REACHED_WARNING_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-warning-sound.mp3\";\n\nexport const RECORDING_TIME_LIMIT_FREE_PLAN = 15 * ONE_MINUTE_IN_MILLISECONDS; // 15 minutes\nexport const RECORDING_TIME_LIMIT_PRO_PLAN = 2 * ONE_HOUR_IN_MILLISECONDS; // 2 hours\n"],"names":["RETRIABLE_ERRORS","ONE_SECOND_IN_MILLISECONDS","HALF_A_SECOND_IN_MILLISECONDS","TWO_HUNDRED_MILLISECONDS","ONE_MINUTE_IN_MILLISECONDS","ONE_HOUR_IN_MILLISECONDS","ONE_SECOND","UPLOAD_EVENT","onComplete","onError","onProgress","UPLOAD_STATUS","uploading","completed","aborting","insufficient_data","SCREEN_RECORDER_STATUS","media_aborted","permission_denied","no_specified_media_found","media_in_use","invalid_media_constraints","no_chrome_flags_set","recorder_error","idle","acquiring_media","media_acquired","restarting","recording","stopping","stopped","paused","SCREEN_RECORDER_ERROR","MicPermissionDenied","AbortError","NotAllowedError","NotFoundError","NotReadableError","OverconstrainedError","TypeError","None","NoRecorder","UnSupportedBrowser","SCREEN_RECORDER_EVENT","onStart","onStop","onDiscard","onDataAvailable","onDiscardDuringCountdown","onRestart","onReUpload","TOTAL_RETRIES","INITIAL_RETRY_DELAY","MAX_RETRY_DELAY","DEFAULT_RETRY_CONFIG","retries","retryDelay","retryableStatuses","NETWORK_ERROR","TIMEOUT_ERROR","HAS_CHROME_NAMESPACE","chrome","_typeof","IS_EXTENSION","isNotNil","extension","IS_SAFARI","platform","name","IS_SAFARI_EXTENSION","PERMISSIONS_HELP_DOC","MIME_TYPE","mp4","webmH264","START_RECORDING_SOUND","STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND","RECORDING_LIMIT_REACHED_WARNING_SOUND","RECORDING_TIME_LIMIT_FREE_PLAN","RECORDING_TIME_LIMIT_PRO_PLAN"],"mappings":"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"}
package/core.js CHANGED
@@ -629,7 +629,7 @@ function _wrapNativeSuper(Class) {
629
629
  return _wrapNativeSuper(Class);
630
630
  }
631
631
 
632
- var TOTAL_RETRIES = 30;
632
+ var TOTAL_RETRIES = 15;
633
633
  var INITIAL_RETRY_DELAY = 4000;
634
634
  var MAX_RETRY_DELAY = 16000;
635
635
  var DEFAULT_RETRY_CONFIG = {
@@ -690,7 +690,7 @@ var buildRetryableApi = function buildRetryableApi(apiConnector) {
690
690
  });
691
691
  case 4:
692
692
  if (!(remainingAttempts-- && !shouldCancelRetries)) {
693
- _context.next = 24;
693
+ _context.next = 26;
694
694
  break;
695
695
  }
696
696
  _context.prev = 5;
@@ -701,26 +701,28 @@ var buildRetryableApi = function buildRetryableApi(apiConnector) {
701
701
  case 11:
702
702
  _context.prev = 11;
703
703
  _context.t0 = _context["catch"](5);
704
+ logger.error("buildRetryableApi -> Failed to connect, remainingAttempts:", remainingAttempts);
704
705
  isRetryableStatus = isPresent(retryableStatuses) && retryableStatuses.includes((_error$response = _context.t0.response) === null || _error$response === void 0 ? void 0 : _error$response.status);
705
706
  isRetryableError = isRetryableStatus || _context.t0.message === NETWORK_ERROR || _context.t0.code === TIMEOUT_ERROR;
706
707
  if (!(isRetryableError && remainingAttempts > 0)) {
707
- _context.next = 21;
708
+ _context.next = 23;
708
709
  break;
709
710
  }
710
- _context.next = 18;
711
+ logger.info("buildRetryableApi -> Failed to connect, retry in:", retryDelay);
712
+ _context.next = 20;
711
713
  return sleep(retryDelay);
712
- case 18:
714
+ case 20:
713
715
  retryDelay = min(retryDelay * 2, MAX_RETRY_DELAY);
714
- _context.next = 22;
716
+ _context.next = 24;
715
717
  break;
716
- case 21:
718
+ case 23:
717
719
  throw _context.t0;
718
- case 22:
720
+ case 24:
719
721
  _context.next = 4;
720
722
  break;
721
- case 24:
723
+ case 26:
722
724
  throw new RetryError("Request cancelled or request retries exhausted");
723
- case 25:
725
+ case 27:
724
726
  case "end":
725
727
  return _context.stop();
726
728
  }
@@ -806,6 +808,15 @@ var prepareStore$1 = function prepareStore() {
806
808
  var isNotCancelledRequest = function isNotCancelledRequest(resolvedResponse) {
807
809
  return typeof resolvedResponse !== "boolean";
808
810
  };
811
+ var calculateUploadProgress = function calculateUploadProgress(uploadProgress) {
812
+ var total = Object.values(uploadProgress).reduce(function (sum, part) {
813
+ return sum + part.total;
814
+ }, 0);
815
+ var uploaded = Object.values(uploadProgress).reduce(function (sum, part) {
816
+ return sum + part.uploaded;
817
+ }, 0);
818
+ return Math.round(uploaded * 100 / total);
819
+ };
809
820
 
810
821
  function ownKeys$2(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; }
811
822
  function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -821,6 +832,8 @@ var _store$1 = /*#__PURE__*/new WeakMap();
821
832
  var _abortController = /*#__PURE__*/new WeakMap();
822
833
  var _pendingS3ChunkUploads = /*#__PURE__*/new WeakMap();
823
834
  var _completeUploadPromise = /*#__PURE__*/new WeakMap();
835
+ var _failedUpload = /*#__PURE__*/new WeakMap();
836
+ var _uploadProgress = /*#__PURE__*/new WeakMap();
824
837
  var _fireCallbacks$1 = /*#__PURE__*/new WeakMap();
825
838
  var _uploadChunkToS = /*#__PURE__*/new WeakMap();
826
839
  var _getCurrentUnUploadedBlob = /*#__PURE__*/new WeakMap();
@@ -874,6 +887,14 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
874
887
  writable: true,
875
888
  value: void 0
876
889
  });
890
+ _classPrivateFieldInitSpec$1(this, _failedUpload, {
891
+ writable: true,
892
+ value: []
893
+ });
894
+ _classPrivateFieldInitSpec$1(this, _uploadProgress, {
895
+ writable: true,
896
+ value: {}
897
+ });
877
898
  _defineProperty(this, "initialize", function (recordingId, uploadId) {
878
899
  _classPrivateFieldSet(_this, _recordingId, recordingId);
879
900
  _classPrivateFieldSet(_this, _uploadId, uploadId);
@@ -908,6 +929,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
908
929
  case 4:
909
930
  // Upload last chunk; only if last chunk has data
910
931
  if (_classPrivateFieldGet(_this, _getCurrentUnUploadedBlob).call(_this).size > 0) {
932
+ logger.info("completeUpload -> need to upload last chunk");
911
933
  uploadChunkToS3Promise = _classPrivateFieldGet(_this, _uploadChunkToS).call(_this, _classPrivateFieldGet(_this, _unUploadedChunks));
912
934
  _classPrivateFieldGet(_this, _pendingS3ChunkUploads).push(uploadChunkToS3Promise);
913
935
  }
@@ -920,22 +942,36 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
920
942
  * adding the new presignedUrl part upload to s3PartUploadPromises.
921
943
  * This results in incorrect partNumbers.
922
944
  */
923
- _context.next = 7;
945
+ logger.info("completeUpload -> uploading all pending chunks...", _classPrivateFieldGet(_this, _pendingS3ChunkUploads).length);
946
+ _context.next = 8;
924
947
  return Promise.all(_classPrivateFieldGet(_this, _pendingS3ChunkUploads));
925
- case 7:
926
- _context.next = 9;
948
+ case 8:
949
+ logger.info("completeUpload -> finishing part uploads...");
950
+ _context.next = 11;
927
951
  return Promise.all(_classPrivateFieldGet(_this, _s3PartUploadPromises));
928
- case 9:
952
+ case 11:
929
953
  resolvedS3PartUploadPromises = _context.sent;
954
+ if (!isNotEmpty(_classPrivateFieldGet(_this, _failedUpload))) {
955
+ _context.next = 17;
956
+ break;
957
+ }
958
+ logger.info("completeUpload -> chunks with these partNumbers failed:", _classPrivateFieldGet(_this, _failedUpload));
959
+ _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onError);
960
+ _classPrivateFieldGet(_this, _store$1).setState({
961
+ status: UPLOAD_STATUS.error
962
+ });
963
+ return _context.abrupt("return");
964
+ case 17:
930
965
  if (!(resolvedS3PartUploadPromises.length === 0)) {
931
- _context.next = 13;
966
+ _context.next = 21;
932
967
  break;
933
968
  }
969
+ logger.info("completeUpload -> insufficient data");
934
970
  _classPrivateFieldGet(_this, _store$1).setState({
935
971
  status: UPLOAD_STATUS.insufficient_data
936
972
  });
937
973
  return _context.abrupt("return");
938
- case 13:
974
+ case 21:
939
975
  parts = resolvedS3PartUploadPromises.filter(isNotCancelledRequest).map(function (resolvedResponse) {
940
976
  return {
941
977
  etag: resolvedResponse.headers.etag,
@@ -944,6 +980,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
944
980
  }).toSorted(function (a, b) {
945
981
  return Number(a.partNumber) - Number(b.partNumber);
946
982
  });
983
+ logger.info("completeUpload -> uploaded parts: ", parts);
947
984
  _classPrivateFieldSet(_this, _completeUploadPromise, completeUploadApi.create({
948
985
  recordingId: _classPrivateFieldGet(_this, _recordingId),
949
986
  payload: {
@@ -954,34 +991,44 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
954
991
  signal: _classPrivateFieldGet(_this, _abortController).signal
955
992
  }
956
993
  }));
957
- _context.next = 17;
994
+ logger.info("completeUpload -> completing upload... ");
995
+ _context.next = 27;
958
996
  return _classPrivateFieldGet(_this, _completeUploadPromise);
959
- case 17:
997
+ case 27:
998
+ logger.info("completeUpload -> upload completed");
960
999
  if (!(_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.aborting)) {
961
- _context.next = 19;
1000
+ _context.next = 31;
962
1001
  break;
963
1002
  }
1003
+ logger.info("completeUpload -> upload was marked as aborted");
964
1004
  return _context.abrupt("return");
965
- case 19:
1005
+ case 31:
966
1006
  _classPrivateFieldGet(_this, _store$1).setState({
967
1007
  status: UPLOAD_STATUS.completed
968
1008
  });
969
1009
  _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onComplete);
970
- _context.next = 26;
1010
+ _context.next = 38;
971
1011
  break;
972
- case 23:
973
- _context.prev = 23;
1012
+ case 35:
1013
+ _context.prev = 35;
974
1014
  _context.t0 = _context["catch"](0);
975
- logger.error(_context.t0);
976
- case 26:
977
- _context.prev = 26;
1015
+ // ignore if aborted
1016
+ if (!axios.isCancel(_context.t0)) {
1017
+ _classPrivateFieldGet(_this, _store$1).setState({
1018
+ status: UPLOAD_STATUS.error
1019
+ });
1020
+ _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onError);
1021
+ logger.error(_context.t0);
1022
+ }
1023
+ case 38:
1024
+ _context.prev = 38;
978
1025
  _classPrivateFieldSet(_this, _completeUploadPromise, null);
979
- return _context.finish(26);
980
- case 29:
1026
+ return _context.finish(38);
1027
+ case 41:
981
1028
  case "end":
982
1029
  return _context.stop();
983
1030
  }
984
- }, _callee, null, [[0, 23, 26, 29]]);
1031
+ }, _callee, null, [[0, 35, 38, 41]]);
985
1032
  })));
986
1033
  _defineProperty(this, "abortUpload", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
987
1034
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
@@ -1035,6 +1082,8 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1035
1082
  _classPrivateFieldSet(_this, _partNumber, 1);
1036
1083
  _classPrivateFieldSet(_this, _s3PartUploadPromises, []);
1037
1084
  _classPrivateFieldSet(_this, _callbacks$1, {});
1085
+ _classPrivateFieldSet(_this, _failedUpload, []);
1086
+ _classPrivateFieldSet(_this, _uploadProgress, {});
1038
1087
  _classPrivateFieldGet(_this, _store$1).setState({
1039
1088
  status: ""
1040
1089
  });
@@ -1064,26 +1113,36 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1064
1113
  writable: true,
1065
1114
  value: function () {
1066
1115
  var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(chunks) {
1067
- var _this$partNumber, _this$partNumber2, _yield$partPresignedU, presignedUrl, s3PartUploadPromise;
1116
+ var _this$partNumber;
1117
+ var partNumber, _yield$partPresignedU, presignedUrl, s3PartUploadPromise;
1068
1118
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
1069
1119
  while (1) switch (_context3.prev = _context3.next) {
1070
1120
  case 0:
1071
1121
  logger.info("Part ready to be uploaded: ", _classPrivateFieldGet(_this, _partNumber));
1072
- _context3.prev = 1;
1073
- _context3.next = 4;
1122
+ partNumber = _classPrivateFieldGet(_this, _partNumber);
1123
+ _classPrivateFieldSet(_this, _partNumber, (_this$partNumber = _classPrivateFieldGet(_this, _partNumber), _this$partNumber++, _this$partNumber));
1124
+ _classPrivateFieldGet(_this, _uploadProgress)[partNumber] = {
1125
+ uploaded: 0,
1126
+ total: new Blob(chunks, {
1127
+ type: MIME_TYPE.webmH264
1128
+ }).size
1129
+ };
1130
+ _context3.prev = 4;
1131
+ _context3.next = 7;
1074
1132
  return partPresignedUrlApi.create({
1075
1133
  recordingId: _classPrivateFieldGet(_this, _recordingId),
1076
1134
  payload: {
1077
- partNumber: (_classPrivateFieldSet(_this, _partNumber, (_this$partNumber = _classPrivateFieldGet(_this, _partNumber), _this$partNumber2 = _this$partNumber++, _this$partNumber)), _this$partNumber2),
1135
+ partNumber: partNumber,
1078
1136
  uploadId: _classPrivateFieldGet(_this, _uploadId)
1079
1137
  },
1080
1138
  config: {
1081
1139
  signal: _classPrivateFieldGet(_this, _abortController).signal
1082
1140
  }
1083
1141
  });
1084
- case 4:
1142
+ case 7:
1085
1143
  _yield$partPresignedU = _context3.sent;
1086
1144
  presignedUrl = _yield$partPresignedU.presignedUrl;
1145
+ logger.info("Presigned url created for partNumber:", partNumber);
1087
1146
  s3PartUploadPromise = s3Api.presignedUpload({
1088
1147
  presignedUrl: presignedUrl,
1089
1148
  blob: new Blob(chunks, {
@@ -1091,21 +1150,40 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1091
1150
  }),
1092
1151
  config: {
1093
1152
  includeMetadataInResponse: true,
1094
- signal: _classPrivateFieldGet(_this, _abortController).signal
1153
+ signal: _classPrivateFieldGet(_this, _abortController).signal,
1154
+ onUploadProgress: function onUploadProgress(e) {
1155
+ _classPrivateFieldGet(_this, _uploadProgress)[partNumber] = {
1156
+ uploaded: e.loaded,
1157
+ total: e.total
1158
+ };
1159
+ if (_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.uploading) {
1160
+ var percentCompleted = calculateUploadProgress(_classPrivateFieldGet(_this, _uploadProgress));
1161
+ logger.info("Upload Progress: ".concat(percentCompleted, "%"));
1162
+ _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onProgress, [percentCompleted]);
1163
+ }
1164
+ }
1095
1165
  }
1096
1166
  });
1097
1167
  _classPrivateFieldGet(_this, _s3PartUploadPromises).push(s3PartUploadPromise);
1098
- _context3.next = 13;
1168
+ _context3.next = 17;
1099
1169
  break;
1100
- case 10:
1101
- _context3.prev = 10;
1102
- _context3.t0 = _context3["catch"](1);
1103
- if (!axios.isCancel(_context3.t0)) logger.error(_context3.t0);
1104
- case 13:
1170
+ case 14:
1171
+ _context3.prev = 14;
1172
+ _context3.t0 = _context3["catch"](4);
1173
+ // ignore if aborted
1174
+ if (!axios.isCancel(_context3.t0)) {
1175
+ logger.error("Failed to upload partNumber:", partNumber);
1176
+ if (_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.uploading) {
1177
+ _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onError);
1178
+ } else {
1179
+ _classPrivateFieldGet(_this, _failedUpload).push(partNumber);
1180
+ }
1181
+ }
1182
+ case 17:
1105
1183
  case "end":
1106
1184
  return _context3.stop();
1107
1185
  }
1108
- }, _callee3, null, [[1, 10]]);
1186
+ }, _callee3, null, [[4, 14]]);
1109
1187
  }));
1110
1188
  function value(_x) {
1111
1189
  return _value.apply(this, arguments);
@@ -1270,6 +1348,7 @@ var _recordingLimitWarningAudio = /*#__PURE__*/new WeakMap();
1270
1348
  var _stopRecordingDueToLimitReachedAudio = /*#__PURE__*/new WeakMap();
1271
1349
  var _stream = /*#__PURE__*/new WeakMap();
1272
1350
  var _audioStream = /*#__PURE__*/new WeakMap();
1351
+ var _audioContext = /*#__PURE__*/new WeakMap();
1273
1352
  var _timeLimit = /*#__PURE__*/new WeakMap();
1274
1353
  var _startRecordingTimeoutID = /*#__PURE__*/new WeakMap();
1275
1354
  var _enableNoiseCancellation = /*#__PURE__*/new WeakMap();
@@ -1347,6 +1426,10 @@ var ScreenRecorder = /*#__PURE__*/function () {
1347
1426
  writable: true,
1348
1427
  value: void 0
1349
1428
  });
1429
+ _classPrivateFieldInitSpec(this, _audioContext, {
1430
+ writable: true,
1431
+ value: void 0
1432
+ });
1350
1433
  _classPrivateFieldInitSpec(this, _timeLimit, {
1351
1434
  writable: true,
1352
1435
  value: RECORDING_TIME_LIMIT_FREE_PLAN
@@ -1576,56 +1659,56 @@ var ScreenRecorder = /*#__PURE__*/function () {
1576
1659
  writable: true,
1577
1660
  value: function () {
1578
1661
  var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
1579
- var stream, audioStream, workletUrl, audioContext, audioStreamSource, destinationStream, noiseSuppressorNode, finalStream, _audioContext, desktopAudio, microphoneAudio, combinedAudio;
1662
+ var isAudioWorkletLoaded, stream, workletUrl, audioStream, audioStreamSource, destinationStream, noiseSuppressorNode, finalStream, audioContext, desktopAudio, microphoneAudio, combinedAudio;
1580
1663
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
1581
1664
  while (1) switch (_context2.prev = _context2.next) {
1582
1665
  case 0:
1583
1666
  _classPrivateFieldGet(_this, _store).setState({
1584
1667
  status: SCREEN_RECORDER_STATUS.acquiring_media
1585
1668
  });
1586
- _context2.prev = 1;
1669
+ isAudioWorkletLoaded = false;
1670
+ _context2.prev = 2;
1587
1671
  if (!_classPrivateFieldGet(_this, _audio)) {
1588
- _context2.next = 24;
1672
+ _context2.next = 19;
1589
1673
  break;
1590
1674
  }
1591
- _context2.next = 5;
1675
+ _classPrivateFieldSet(_this, _audioContext, new AudioContext());
1676
+ _context2.prev = 5;
1677
+ workletUrl = IS_EXTENSION ? chrome.runtime.getURL("public/NoiseSuppressorWorklet.js") : "NoiseSuppressorWorklet.js";
1678
+ _context2.next = 9;
1679
+ return _classPrivateFieldGet(_this, _audioContext).audioWorklet.addModule(workletUrl);
1680
+ case 9:
1681
+ isAudioWorkletLoaded = true;
1682
+ _context2.next = 15;
1683
+ break;
1684
+ case 12:
1685
+ _context2.prev = 12;
1686
+ _context2.t0 = _context2["catch"](5);
1687
+ console.error("Failed to load audio worklet:", _context2.t0);
1688
+ case 15:
1689
+ _context2.next = 17;
1592
1690
  return window.navigator.mediaDevices.getUserMedia({
1593
- audio: _classPrivateFieldGet(_this, _audio) ? _objectSpread({
1594
- echoCancellation: false
1595
- }, _classPrivateFieldGet(_this, _audio)) : false
1691
+ audio: _classPrivateFieldGet(_this, _audio) ? _classPrivateFieldGet(_this, _audio) : false
1596
1692
  });
1597
- case 5:
1693
+ case 17:
1598
1694
  audioStream = _context2.sent;
1599
- _classPrivateFieldSet(_this, _audioStream, audioStream);
1600
- if (!_classPrivateFieldGet(_this, _enableNoiseCancellation)) {
1601
- _context2.next = 24;
1602
- break;
1695
+ if (isAudioWorkletLoaded && _classPrivateFieldGet(_this, _enableNoiseCancellation)) {
1696
+ audioStreamSource = _classPrivateFieldGet(_this, _audioContext).createMediaStreamSource(audioStream);
1697
+ destinationStream = _classPrivateFieldGet(_this, _audioContext).createMediaStreamDestination();
1698
+ noiseSuppressorNode = new AudioWorkletNode(_classPrivateFieldGet(_this, _audioContext), "nn-suppressor-processor");
1699
+ audioStreamSource.connect(noiseSuppressorNode);
1700
+ noiseSuppressorNode.connect(destinationStream);
1701
+ _classPrivateFieldSet(_this, _audioStream, destinationStream.stream);
1702
+ } else {
1703
+ _classPrivateFieldSet(_this, _audioStream, audioStream);
1603
1704
  }
1604
- _context2.prev = 8;
1605
- workletUrl = IS_EXTENSION ? chrome.runtime.getURL("public/NoiseSuppressorWorklet.js") : "NoiseSuppressorWorklet.js";
1606
- audioContext = new AudioContext();
1607
- _context2.next = 13;
1608
- return audioContext.audioWorklet.addModule(workletUrl);
1609
- case 13:
1610
- audioStreamSource = audioContext.createMediaStreamSource(audioStream);
1611
- destinationStream = audioContext.createMediaStreamDestination();
1612
- noiseSuppressorNode = new AudioWorkletNode(audioContext, "nn-suppressor-processor");
1613
- audioStreamSource.connect(noiseSuppressorNode);
1614
- noiseSuppressorNode.connect(destinationStream);
1615
- _classPrivateFieldSet(_this, _audioStream, destinationStream.stream);
1616
- _context2.next = 24;
1617
- break;
1618
- case 21:
1619
- _context2.prev = 21;
1620
- _context2.t0 = _context2["catch"](8);
1621
- console.error("Failed to load audio worklet:", _context2.t0);
1622
- case 24:
1623
- _context2.next = 26;
1705
+ case 19:
1706
+ _context2.next = 21;
1624
1707
  return window.navigator.mediaDevices.getDisplayMedia({
1625
1708
  video: _classPrivateFieldGet(_this, _video) || true,
1626
1709
  audio: true
1627
1710
  });
1628
- case 26:
1711
+ case 21:
1629
1712
  stream = _context2.sent;
1630
1713
  // Event triggered when the user clicks on the stop sharing overlay button
1631
1714
  stream.getVideoTracks()[0].addEventListener("ended", function () {
@@ -1634,10 +1717,10 @@ var ScreenRecorder = /*#__PURE__*/function () {
1634
1717
  finalStream = new MediaStream();
1635
1718
  if (_classPrivateFieldGet(_this, _audio) && _classPrivateFieldGet(_this, _audioStream)) {
1636
1719
  if (isNotEmpty(stream.getAudioTracks())) {
1637
- _audioContext = new AudioContext();
1638
- desktopAudio = _audioContext.createMediaStreamSource(stream);
1639
- microphoneAudio = _audioContext.createMediaStreamSource(_classPrivateFieldGet(_this, _audioStream));
1640
- combinedAudio = _audioContext.createMediaStreamDestination();
1720
+ audioContext = new AudioContext();
1721
+ desktopAudio = audioContext.createMediaStreamSource(stream);
1722
+ microphoneAudio = audioContext.createMediaStreamSource(_classPrivateFieldGet(_this, _audioStream));
1723
+ combinedAudio = audioContext.createMediaStreamDestination();
1641
1724
  desktopAudio.connect(combinedAudio);
1642
1725
  microphoneAudio.connect(combinedAudio);
1643
1726
  combinedAudio.stream.getAudioTracks().forEach(function (track) {
@@ -1657,11 +1740,11 @@ var ScreenRecorder = /*#__PURE__*/function () {
1657
1740
  _classPrivateFieldGet(_this, _store).setState({
1658
1741
  status: SCREEN_RECORDER_STATUS.media_acquired
1659
1742
  });
1660
- _context2.next = 39;
1743
+ _context2.next = 34;
1661
1744
  break;
1662
- case 36:
1663
- _context2.prev = 36;
1664
- _context2.t1 = _context2["catch"](1);
1745
+ case 31:
1746
+ _context2.prev = 31;
1747
+ _context2.t1 = _context2["catch"](2);
1665
1748
  if (_classPrivateFieldGet(_this, _audio) && !_classPrivateFieldGet(_this, _audioStream)) {
1666
1749
  _classPrivateFieldGet(_this, _store).setState({
1667
1750
  error: SCREEN_RECORDER_ERROR.MicPermissionDenied,
@@ -1673,11 +1756,11 @@ var ScreenRecorder = /*#__PURE__*/function () {
1673
1756
  status: SCREEN_RECORDER_STATUS.idle
1674
1757
  });
1675
1758
  }
1676
- case 39:
1759
+ case 34:
1677
1760
  case "end":
1678
1761
  return _context2.stop();
1679
1762
  }
1680
- }, _callee2, null, [[1, 36], [8, 21]]);
1763
+ }, _callee2, null, [[2, 31], [5, 12]]);
1681
1764
  }));
1682
1765
  function value() {
1683
1766
  return _value.apply(this, arguments);