@bigbinary/neeto-media-recorder 2.5.8 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/core.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import axios from 'axios';
2
2
  import { isPresent, existsBy, isNotEmpty, isNot, noop } from '@bigbinary/neeto-cist';
3
3
  import { RETRYABLE_ERRORS, MIME_TYPE as MIME_TYPE$1, UPLOAD_STATUS, UPLOAD_EVENT, SCREEN_RECORDER_STATUS, START_RECORDING_SOUND, RECORDING_LIMIT_REACHED_WARNING_SOUND, SCREEN_RECORDER_ERROR, SCREEN_RECORDER_EVENT, RECORDING_TIME_LIMIT_FREE_PLAN, ONE_SECOND, HALF_A_SECOND_IN_MILLISECONDS, ONE_SECOND_IN_MILLISECONDS, TWO_HUNDRED_MILLISECONDS, ONE_MINUTE_IN_MILLISECONDS, STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND, IS_EXTENSION } from '@bigbinary/neeto-media-recorder/constants';
4
+ import { useMultipartS3UploadStatus as useMultipartS3UploadStatus$1, getMultipartS3Uploader as getMultipartS3Uploader$1 } from '@bigbinary/neeto-media-recorder/core';
4
5
  import { isNotNil, min, isNil, identity, isEmpty, pick, equals, not } from 'ramda';
5
6
  import platform from 'platform';
6
- import '@bigbinary/neeto-media-recorder/core';
7
7
  import withImmutableActions from '@bigbinary/neeto-commons-frontend/react-utils/withImmutableActions';
8
8
  import { create as create$3 } from 'zustand';
9
+ import { useSyncExternalStore } from 'react';
9
10
 
10
11
  function _arrayLikeToArray(arr, len) {
11
12
  if (len == null || len > arr.length) len = arr.length;
@@ -133,25 +134,6 @@ function _defineProperty(obj, key, value) {
133
134
  return obj;
134
135
  }
135
136
 
136
- function _classApplyDescriptorGet(receiver, descriptor) {
137
- if (descriptor.get) {
138
- return descriptor.get.call(receiver);
139
- }
140
- return descriptor.value;
141
- }
142
-
143
- function _classExtractFieldDescriptor(receiver, privateMap, action) {
144
- if (!privateMap.has(receiver)) {
145
- throw new TypeError("attempted to " + action + " private field on non-instance");
146
- }
147
- return privateMap.get(receiver);
148
- }
149
-
150
- function _classPrivateFieldGet(receiver, privateMap) {
151
- var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get");
152
- return _classApplyDescriptorGet(receiver, descriptor);
153
- }
154
-
155
137
  function _classApplyDescriptorSet(receiver, descriptor, value) {
156
138
  if (descriptor.set) {
157
139
  descriptor.set.call(receiver, value);
@@ -163,12 +145,31 @@ function _classApplyDescriptorSet(receiver, descriptor, value) {
163
145
  }
164
146
  }
165
147
 
148
+ function _classExtractFieldDescriptor(receiver, privateMap, action) {
149
+ if (!privateMap.has(receiver)) {
150
+ throw new TypeError("attempted to " + action + " private field on non-instance");
151
+ }
152
+ return privateMap.get(receiver);
153
+ }
154
+
166
155
  function _classPrivateFieldSet(receiver, privateMap, value) {
167
156
  var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set");
168
157
  _classApplyDescriptorSet(receiver, descriptor, value);
169
158
  return value;
170
159
  }
171
160
 
161
+ function _classApplyDescriptorGet(receiver, descriptor) {
162
+ if (descriptor.get) {
163
+ return descriptor.get.call(receiver);
164
+ }
165
+ return descriptor.value;
166
+ }
167
+
168
+ function _classPrivateFieldGet(receiver, privateMap) {
169
+ var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get");
170
+ return _classApplyDescriptorGet(receiver, descriptor);
171
+ }
172
+
172
173
  function getDefaultExportFromCjs (x) {
173
174
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
174
175
  }
@@ -863,14 +864,6 @@ var isMp4Supported = function isMp4Supported() {
863
864
  return getSupportedMimeType() === MIME_TYPE$1.mp4;
864
865
  };
865
866
 
866
- var prepareStore$1 = function prepareStore() {
867
- return create$3(withImmutableActions(function () {
868
- return {
869
- status: ""
870
- };
871
- }));
872
- };
873
-
874
867
  /**
875
868
  * Due to the custom axios interceptor for s3Api,
876
869
  * it'll return false for cancelled requests instead of a cancelled error object.
@@ -892,30 +885,69 @@ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if
892
885
  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; }
893
886
  function _classPrivateFieldInitSpec$1(obj, privateMap, value) { _checkPrivateRedeclaration$1(obj, privateMap); privateMap.set(obj, value); }
894
887
  function _checkPrivateRedeclaration$1(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
888
+ var createPrefixedLogger = function createPrefixedLogger(prefix) {
889
+ return {
890
+ info: function info() {
891
+ var _logger;
892
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
893
+ args[_key] = arguments[_key];
894
+ }
895
+ return (_logger = logger).info.apply(_logger, [prefix].concat(args));
896
+ },
897
+ error: function error() {
898
+ var _logger2;
899
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
900
+ args[_key2] = arguments[_key2];
901
+ }
902
+ return (_logger2 = logger).error.apply(_logger2, [prefix].concat(args));
903
+ },
904
+ warn: function warn() {
905
+ var _logger3;
906
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
907
+ args[_key3] = arguments[_key3];
908
+ }
909
+ return (_logger3 = logger).warn.apply(_logger3, [prefix].concat(args));
910
+ },
911
+ debug: function debug() {
912
+ var _logger4;
913
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
914
+ args[_key4] = arguments[_key4];
915
+ }
916
+ return (_logger4 = logger).debug.apply(_logger4, [prefix].concat(args));
917
+ }
918
+ };
919
+ };
895
920
  var _recordingId = /*#__PURE__*/new WeakMap();
896
921
  var _uploadId = /*#__PURE__*/new WeakMap();
897
922
  var _unUploadedChunks = /*#__PURE__*/new WeakMap();
898
923
  var _partNumber = /*#__PURE__*/new WeakMap();
899
924
  var _s3PartUploadPromises = /*#__PURE__*/new WeakMap();
900
925
  var _callbacks$1 = /*#__PURE__*/new WeakMap();
901
- var _store$1 = /*#__PURE__*/new WeakMap();
902
926
  var _abortController = /*#__PURE__*/new WeakMap();
903
927
  var _pendingS3ChunkUploads = /*#__PURE__*/new WeakMap();
904
928
  var _completeUploadPromise = /*#__PURE__*/new WeakMap();
905
929
  var _failedUpload = /*#__PURE__*/new WeakMap();
906
930
  var _uploadProgress = /*#__PURE__*/new WeakMap();
931
+ var _status = /*#__PURE__*/new WeakMap();
932
+ var _id = /*#__PURE__*/new WeakMap();
933
+ var _logger5 = /*#__PURE__*/new WeakMap();
934
+ var _status2 = /*#__PURE__*/new WeakMap();
907
935
  var _fireCallbacks$1 = /*#__PURE__*/new WeakMap();
908
936
  var _uploadChunkToS = /*#__PURE__*/new WeakMap();
909
937
  var _getCurrentUnUploadedBlob = /*#__PURE__*/new WeakMap();
910
- var _isNotInitialized = /*#__PURE__*/new WeakMap();
938
+ var _isRecordingSet = /*#__PURE__*/new WeakMap();
911
939
  var MultipartS3Uploader = /*#__PURE__*/function () {
912
940
  function MultipartS3Uploader() {
913
941
  var _this = this;
914
942
  _classCallCheck(this, MultipartS3Uploader);
915
- _classPrivateFieldInitSpec$1(this, _isNotInitialized, {
916
- get: _get_isNotInitialized,
943
+ _classPrivateFieldInitSpec$1(this, _isRecordingSet, {
944
+ get: _get_isRecordingSet,
917
945
  set: void 0
918
946
  });
947
+ _classPrivateFieldInitSpec$1(this, _status2, {
948
+ get: void 0,
949
+ set: _set_status
950
+ });
919
951
  _defineProperty(this, "MIN_UPLOAD_CHUNK_SIZE", 5 * 1024 * 1024);
920
952
  _classPrivateFieldInitSpec$1(this, _recordingId, {
921
953
  writable: true,
@@ -941,10 +973,6 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
941
973
  writable: true,
942
974
  value: {}
943
975
  });
944
- _classPrivateFieldInitSpec$1(this, _store$1, {
945
- writable: true,
946
- value: void 0
947
- });
948
976
  _classPrivateFieldInitSpec$1(this, _abortController, {
949
977
  writable: true,
950
978
  value: void 0
@@ -965,7 +993,19 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
965
993
  writable: true,
966
994
  value: {}
967
995
  });
968
- _defineProperty(this, "initialize", function (recordingId, uploadId) {
996
+ _classPrivateFieldInitSpec$1(this, _status, {
997
+ writable: true,
998
+ value: ""
999
+ });
1000
+ _classPrivateFieldInitSpec$1(this, _id, {
1001
+ writable: true,
1002
+ value: crypto.randomUUID()
1003
+ });
1004
+ _classPrivateFieldInitSpec$1(this, _logger5, {
1005
+ writable: true,
1006
+ value: createPrefixedLogger("[".concat(_classPrivateFieldGet(this, _id), "]"))
1007
+ });
1008
+ _defineProperty(this, "setRecording", function (recordingId, uploadId) {
969
1009
  _classPrivateFieldSet(_this, _recordingId, recordingId);
970
1010
  _classPrivateFieldSet(_this, _uploadId, uploadId);
971
1011
  _classPrivateFieldSet(_this, _abortController, new AbortController());
@@ -974,8 +1014,8 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
974
1014
  if (data.size > 0) {
975
1015
  _classPrivateFieldGet(_this, _unUploadedChunks).push(data);
976
1016
  }
977
- if (_classPrivateFieldGet(_this, _isNotInitialized)) return;
978
- logger.info("Current unuploaded data size is ", _classPrivateFieldGet(_this, _getCurrentUnUploadedBlob).call(_this).size / 1024 / 1024, "MB");
1017
+ if (_classPrivateFieldGet(_this, _isRecordingSet)) return;
1018
+ _classPrivateFieldGet(_this, _logger5).info("Current unuploaded data size is ", _classPrivateFieldGet(_this, _getCurrentUnUploadedBlob).call(_this).size / 1024 / 1024, "MB");
979
1019
  if (_classPrivateFieldGet(_this, _getCurrentUnUploadedBlob).call(_this).size > _this.MIN_UPLOAD_CHUNK_SIZE) {
980
1020
  var uploadChunkToS3Promise = _classPrivateFieldGet(_this, _uploadChunkToS).call(_this, _classPrivateFieldGet(_this, _unUploadedChunks));
981
1021
  _classPrivateFieldGet(_this, _pendingS3ChunkUploads).push(uploadChunkToS3Promise);
@@ -988,19 +1028,17 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
988
1028
  while (1) switch (_context.prev = _context.next) {
989
1029
  case 0:
990
1030
  _context.prev = 0;
991
- _classPrivateFieldGet(_this, _store$1).setState({
992
- status: UPLOAD_STATUS.uploading
993
- });
994
- if (!_classPrivateFieldGet(_this, _isNotInitialized)) {
1031
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.uploading);
1032
+ if (!_classPrivateFieldGet(_this, _isRecordingSet)) {
995
1033
  _context.next = 5;
996
1034
  break;
997
1035
  }
998
- logger.error("completeUpload -> not initialized");
1036
+ _classPrivateFieldGet(_this, _logger5).error("completeUpload -> not initialized");
999
1037
  return _context.abrupt("return");
1000
1038
  case 5:
1001
1039
  // Upload last chunk; only if last chunk has data
1002
1040
  if (_classPrivateFieldGet(_this, _getCurrentUnUploadedBlob).call(_this).size > 0) {
1003
- logger.info("completeUpload -> need to upload last chunk");
1041
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> need to upload last chunk");
1004
1042
  uploadChunkToS3Promise = _classPrivateFieldGet(_this, _uploadChunkToS).call(_this, _classPrivateFieldGet(_this, _unUploadedChunks));
1005
1043
  _classPrivateFieldGet(_this, _pendingS3ChunkUploads).push(uploadChunkToS3Promise);
1006
1044
  }
@@ -1013,39 +1051,32 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1013
1051
  * adding the new presignedUrl part upload to s3PartUploadPromises.
1014
1052
  * This results in incorrect partNumbers.
1015
1053
  */
1016
- logger.info("completeUpload -> uploading all pending chunks...", _classPrivateFieldGet(_this, _pendingS3ChunkUploads).length);
1054
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> uploading all pending chunks...", _classPrivateFieldGet(_this, _pendingS3ChunkUploads).length);
1017
1055
  _context.next = 9;
1018
1056
  return Promise.all(_classPrivateFieldGet(_this, _pendingS3ChunkUploads));
1019
1057
  case 9:
1020
- logger.info("completeUpload -> finishing part uploads...");
1058
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> finishing part uploads...");
1021
1059
  _context.next = 12;
1022
1060
  return Promise.all(_classPrivateFieldGet(_this, _s3PartUploadPromises));
1023
1061
  case 12:
1024
1062
  resolvedS3PartUploadPromises = _context.sent;
1025
1063
  if (!isNotEmpty(_classPrivateFieldGet(_this, _failedUpload))) {
1026
- _context.next = 19;
1064
+ _context.next = 18;
1027
1065
  break;
1028
1066
  }
1029
- logger.info("completeUpload -> chunks with these partNumbers failed:", _classPrivateFieldGet(_this, _failedUpload));
1030
- _classPrivateFieldGet(_this, _store$1).setState({
1031
- status: UPLOAD_STATUS.error
1032
- });
1067
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> chunks with these partNumbers failed:", _classPrivateFieldGet(_this, _failedUpload));
1068
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.error);
1033
1069
  _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onError);
1034
- _classPrivateFieldGet(_this, _store$1).setState({
1035
- status: UPLOAD_STATUS.error
1036
- });
1037
1070
  return _context.abrupt("return");
1038
- case 19:
1071
+ case 18:
1039
1072
  if (!(resolvedS3PartUploadPromises.length === 0)) {
1040
- _context.next = 23;
1073
+ _context.next = 22;
1041
1074
  break;
1042
1075
  }
1043
- logger.info("completeUpload -> insufficient data");
1044
- _classPrivateFieldGet(_this, _store$1).setState({
1045
- status: UPLOAD_STATUS.insufficient_data
1046
- });
1076
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> insufficient data");
1077
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.insufficient_data);
1047
1078
  return _context.abrupt("return");
1048
- case 23:
1079
+ case 22:
1049
1080
  parts = resolvedS3PartUploadPromises.filter(isNotCancelledRequest).map(function (resolvedResponse) {
1050
1081
  return {
1051
1082
  etag: resolvedResponse.headers.etag,
@@ -1054,7 +1085,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1054
1085
  }).toSorted(function (a, b) {
1055
1086
  return Number(a.partNumber) - Number(b.partNumber);
1056
1087
  });
1057
- logger.info("completeUpload -> uploaded parts: ", parts);
1088
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> uploaded parts: ", parts);
1058
1089
  _classPrivateFieldSet(_this, _completeUploadPromise, completeUploadApi.create({
1059
1090
  recordingId: _classPrivateFieldGet(_this, _recordingId),
1060
1091
  payload: {
@@ -1066,75 +1097,73 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1066
1097
  signal: _classPrivateFieldGet(_this, _abortController).signal
1067
1098
  }
1068
1099
  }));
1069
- logger.info("completeUpload -> completing upload... ");
1070
- _context.next = 29;
1100
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> completing upload... ");
1101
+ _context.next = 28;
1071
1102
  return _classPrivateFieldGet(_this, _completeUploadPromise);
1072
- case 29:
1073
- logger.info("completeUpload -> upload completed");
1074
- if (!(_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.aborting)) {
1075
- _context.next = 33;
1103
+ case 28:
1104
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> upload completed");
1105
+ if (!(_this.status === UPLOAD_STATUS.aborting)) {
1106
+ _context.next = 32;
1076
1107
  break;
1077
1108
  }
1078
- logger.info("completeUpload -> upload was marked as aborted");
1109
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> upload was marked as aborted");
1079
1110
  return _context.abrupt("return");
1080
- case 33:
1081
- _classPrivateFieldGet(_this, _store$1).setState({
1082
- status: UPLOAD_STATUS.completed
1083
- });
1111
+ case 32:
1112
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.completed);
1084
1113
  _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onComplete);
1085
- _context.next = 40;
1114
+ _context.next = 39;
1086
1115
  break;
1087
- case 37:
1088
- _context.prev = 37;
1116
+ case 36:
1117
+ _context.prev = 36;
1089
1118
  _context.t0 = _context["catch"](0);
1090
1119
  // ignore if aborted
1091
1120
  if (!axios.isCancel(_context.t0)) {
1092
- _classPrivateFieldGet(_this, _store$1).setState({
1093
- status: UPLOAD_STATUS.error
1094
- });
1121
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.error);
1095
1122
  _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onError);
1096
- logger.error(_context.t0);
1123
+ _classPrivateFieldGet(_this, _logger5).error(_context.t0);
1097
1124
  }
1098
- case 40:
1099
- _context.prev = 40;
1125
+ case 39:
1126
+ _context.prev = 39;
1100
1127
  _classPrivateFieldSet(_this, _completeUploadPromise, null);
1101
- return _context.finish(40);
1102
- case 43:
1128
+ return _context.finish(39);
1129
+ case 42:
1103
1130
  case "end":
1104
1131
  return _context.stop();
1105
1132
  }
1106
- }, _callee, null, [[0, 37, 40, 43]]);
1133
+ }, _callee, null, [[0, 36, 39, 42]]);
1107
1134
  })));
1108
1135
  _defineProperty(this, "abortUpload", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
1109
- var recordingId, uploadId;
1136
+ var forceAbort,
1137
+ recordingId,
1138
+ uploadId,
1139
+ _args2 = arguments;
1110
1140
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
1111
1141
  while (1) switch (_context2.prev = _context2.next) {
1112
1142
  case 0:
1113
- _context2.prev = 0;
1114
- if (!(_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.aborting)) {
1115
- _context2.next = 4;
1143
+ forceAbort = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : false;
1144
+ _context2.prev = 1;
1145
+ if (!(_this.status === UPLOAD_STATUS.aborting && !forceAbort)) {
1146
+ _context2.next = 5;
1116
1147
  break;
1117
1148
  }
1118
- logger.info("abortUpload -> already aborting");
1149
+ _classPrivateFieldGet(_this, _logger5).info("abortUpload -> already aborting");
1119
1150
  return _context2.abrupt("return");
1120
- case 4:
1121
- _classPrivateFieldGet(_this, _store$1).setState({
1122
- status: UPLOAD_STATUS.aborting
1123
- });
1124
- if (!_classPrivateFieldGet(_this, _isNotInitialized)) {
1125
- _context2.next = 8;
1151
+ case 5:
1152
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.aborting);
1153
+ if (!_classPrivateFieldGet(_this, _isRecordingSet)) {
1154
+ _context2.next = 9;
1126
1155
  break;
1127
1156
  }
1128
- logger.info("abortUpload -> not initialized");
1157
+ _classPrivateFieldGet(_this, _logger5).info("abortUpload -> not initialized");
1129
1158
  return _context2.abrupt("return");
1130
- case 8:
1159
+ case 9:
1131
1160
  recordingId = _classPrivateFieldGet(_this, _recordingId);
1132
1161
  uploadId = _classPrivateFieldGet(_this, _uploadId);
1133
- _context2.next = 12;
1162
+ _context2.next = 13;
1134
1163
  return _classPrivateFieldGet(_this, _completeUploadPromise);
1135
- case 12:
1164
+ case 13:
1136
1165
  _classPrivateFieldGet(_this, _abortController).abort();
1137
- _context2.next = 15;
1166
+ _context2.next = 16;
1138
1167
  return abortUploadApi.create({
1139
1168
  recordingId: recordingId,
1140
1169
  payload: {
@@ -1142,26 +1171,25 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1142
1171
  isMp4: isMp4Supported()
1143
1172
  }
1144
1173
  });
1145
- case 15:
1146
- logger.info("abortUpload -> abort successful");
1174
+ case 16:
1175
+ _classPrivateFieldGet(_this, _logger5).info("abortUpload -> abort successful");
1176
+ _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onAbort);
1147
1177
  _classPrivateFieldSet(_this, _unUploadedChunks, []);
1148
1178
  _classPrivateFieldSet(_this, _partNumber, 1);
1149
1179
  _classPrivateFieldSet(_this, _s3PartUploadPromises, []);
1150
- _classPrivateFieldGet(_this, _store$1).setState({
1151
- status: ""
1152
- });
1180
+ _classPrivateFieldSet(_this, _status2, "");
1153
1181
  _classPrivateFieldSet(_this, _abortController, null);
1154
- _context2.next = 26;
1182
+ _context2.next = 28;
1155
1183
  break;
1156
- case 23:
1157
- _context2.prev = 23;
1158
- _context2.t0 = _context2["catch"](0);
1159
- logger.error(_context2.t0);
1160
- case 26:
1184
+ case 25:
1185
+ _context2.prev = 25;
1186
+ _context2.t0 = _context2["catch"](1);
1187
+ _classPrivateFieldGet(_this, _logger5).error(_context2.t0);
1188
+ case 28:
1161
1189
  case "end":
1162
1190
  return _context2.stop();
1163
1191
  }
1164
- }, _callee2, null, [[0, 23]]);
1192
+ }, _callee2, null, [[1, 25]]);
1165
1193
  })));
1166
1194
  _defineProperty(this, "resetState", function () {
1167
1195
  _classPrivateFieldSet(_this, _recordingId, "");
@@ -1173,9 +1201,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1173
1201
  _classPrivateFieldSet(_this, _callbacks$1, {});
1174
1202
  _classPrivateFieldSet(_this, _failedUpload, []);
1175
1203
  _classPrivateFieldSet(_this, _uploadProgress, {});
1176
- _classPrivateFieldGet(_this, _store$1).setState({
1177
- status: ""
1178
- });
1204
+ _classPrivateFieldSet(_this, _status2, "");
1179
1205
  });
1180
1206
  _defineProperty(this, "addCallback", function (event, callback) {
1181
1207
  var _classPrivateFieldGet2;
@@ -1207,7 +1233,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1207
1233
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
1208
1234
  while (1) switch (_context3.prev = _context3.next) {
1209
1235
  case 0:
1210
- logger.info("Part ready to be uploaded: ", _classPrivateFieldGet(_this, _partNumber));
1236
+ _classPrivateFieldGet(_this, _logger5).info("Part ready to be uploaded: ", _classPrivateFieldGet(_this, _partNumber));
1211
1237
  partNumber = _classPrivateFieldGet(_this, _partNumber);
1212
1238
  mimeType = getSupportedMimeType();
1213
1239
  _classPrivateFieldSet(_this, _partNumber, (_this$partNumber = _classPrivateFieldGet(_this, _partNumber), _this$partNumber++, _this$partNumber));
@@ -1233,7 +1259,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1233
1259
  case 8:
1234
1260
  _yield$partPresignedU = _context3.sent;
1235
1261
  presignedUrl = _yield$partPresignedU.presignedUrl;
1236
- logger.info("Presigned url created for partNumber:", partNumber);
1262
+ _classPrivateFieldGet(_this, _logger5).info("Presigned url created for partNumber:", partNumber);
1237
1263
  s3PartUploadPromise = s3Api.presignedUpload({
1238
1264
  presignedUrl: presignedUrl,
1239
1265
  blob: new Blob(chunks, {
@@ -1247,9 +1273,9 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1247
1273
  uploaded: e.loaded,
1248
1274
  total: e.total
1249
1275
  };
1250
- if (_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.uploading) {
1276
+ if (_this.status === UPLOAD_STATUS.uploading) {
1251
1277
  var percentCompleted = calculateUploadProgress(_classPrivateFieldGet(_this, _uploadProgress));
1252
- logger.info("Upload Progress: ".concat(percentCompleted, "%"));
1278
+ _classPrivateFieldGet(_this, _logger5).info("Upload Progress: ".concat(percentCompleted, "%"));
1253
1279
  _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onProgress, [percentCompleted]);
1254
1280
  }
1255
1281
  }
@@ -1263,11 +1289,9 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1263
1289
  _context3.t0 = _context3["catch"](5);
1264
1290
  // ignore if aborted
1265
1291
  if (!axios.isCancel(_context3.t0)) {
1266
- logger.error("Failed to upload partNumber:", partNumber);
1267
- if (_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.uploading) {
1268
- _classPrivateFieldGet(_this, _store$1).setState({
1269
- status: UPLOAD_STATUS.error
1270
- });
1292
+ _classPrivateFieldGet(_this, _logger5).error("Failed to upload partNumber:", partNumber);
1293
+ if (_this.status === UPLOAD_STATUS.uploading) {
1294
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.error);
1271
1295
  _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onError);
1272
1296
  } else {
1273
1297
  _classPrivateFieldGet(_this, _failedUpload).push(partNumber);
@@ -1293,14 +1317,12 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1293
1317
  });
1294
1318
  }
1295
1319
  });
1296
- _classPrivateFieldSet(this, _store$1, prepareStore$1());
1320
+ _classPrivateFieldGet(this, _logger5).info("Uploader initialized");
1297
1321
  }
1298
-
1299
- /** @type {import("neetocommons/react-utils").ZustandStoreHook} */
1300
1322
  _createClass(MultipartS3Uploader, [{
1301
- key: "useMultipartS3UploadStore",
1323
+ key: "status",
1302
1324
  get: function get() {
1303
- return _classPrivateFieldGet(this, _store$1);
1325
+ return _classPrivateFieldGet(this, _status);
1304
1326
  }
1305
1327
  }, {
1306
1328
  key: "hasSufficientData",
@@ -1310,10 +1332,24 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1310
1332
  }]);
1311
1333
  return MultipartS3Uploader;
1312
1334
  }();
1313
- function _get_isNotInitialized() {
1335
+ function _set_status(status) {
1336
+ _classPrivateFieldSet(this, _status, status);
1337
+ useMultipartS3UploadStatus$1.triggerStatusChange();
1338
+ }
1339
+ function _get_isRecordingSet() {
1314
1340
  return isEmpty(_classPrivateFieldGet(this, _uploadId) + _classPrivateFieldGet(this, _recordingId));
1315
1341
  }
1316
1342
  var multipartS3Uploader = new MultipartS3Uploader();
1343
+ var getMultipartS3Uploader = function getMultipartS3Uploader() {
1344
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1345
+ _ref3$initialize = _ref3.initialize,
1346
+ initialize = _ref3$initialize === void 0 ? false : _ref3$initialize;
1347
+ if (!multipartS3Uploader || initialize) {
1348
+ multipartS3Uploader = new MultipartS3Uploader();
1349
+ useMultipartS3UploadStatus$1.triggerStatusChange();
1350
+ }
1351
+ return multipartS3Uploader;
1352
+ };
1317
1353
 
1318
1354
  function _arrayWithHoles(arr) {
1319
1355
  if (Array.isArray(arr)) return arr;
@@ -1878,14 +1914,16 @@ var ScreenRecorder = /*#__PURE__*/function () {
1878
1914
  _classPrivateFieldGet(_this, _mediaRecorder).start(5000);
1879
1915
  _classPrivateFieldGet(_this, _startTimer).call(_this);
1880
1916
  } catch (error) {
1881
- clearInterval(_classPrivateFieldGet(_this, _timerId));
1917
+ logger.info("Failed to start mediaRecorder", error);
1882
1918
  _classPrivateFieldGet(_this, _store).setState({
1883
1919
  status: SCREEN_RECORDER_STATUS.idle,
1884
- error: SCREEN_RECORDER_ERROR[error.name]
1920
+ error: SCREEN_RECORDER_ERROR.FailedToStart
1885
1921
  });
1886
- _classPrivateFieldGet(_this, _fireCallbacks).call(_this, SCREEN_RECORDER_EVENT.onError, [error]);
1922
+
1887
1923
  // To prevent triggering #onRecordingStop when the mediaRecorder is failed to start.
1888
- _classPrivateFieldGet(_this, _mediaRecorder).onstop = noop;
1924
+ if (_classPrivateFieldGet(_this, _mediaRecorder)) {
1925
+ _classPrivateFieldGet(_this, _mediaRecorder).onstop = noop;
1926
+ }
1889
1927
  if (_classPrivateFieldGet(_this, _mediaStream)) {
1890
1928
  _classPrivateFieldGet(_this, _mediaStream).getTracks().forEach(function (track) {
1891
1929
  return track.stop();
@@ -1991,5 +2029,34 @@ var screenRecorder = new ScreenRecorder(true, {
1991
2029
  displaySurface: DISPLAY_SURFACE.monitor
1992
2030
  });
1993
2031
 
1994
- export { multipartS3Uploader, screenRecorder };
2032
+ var listeners = new Set();
2033
+ var subscribe = function subscribe(listener) {
2034
+ listeners.add(listener);
2035
+ return function () {
2036
+ return listeners["delete"](listener);
2037
+ };
2038
+ };
2039
+ var triggerStatusChange = function triggerStatusChange() {
2040
+ listeners.forEach(function (listener) {
2041
+ return listener();
2042
+ });
2043
+ };
2044
+ var getSnapshot = function getSnapshot() {
2045
+ return getMultipartS3Uploader$1().status;
2046
+ };
2047
+ var useMultipartS3UploadStatus = function useMultipartS3UploadStatus() {
2048
+ var status = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
2049
+ return {
2050
+ status: status,
2051
+ isStatus: function isStatus() {
2052
+ for (var _len = arguments.length, statuses = new Array(_len), _key = 0; _key < _len; _key++) {
2053
+ statuses[_key] = arguments[_key];
2054
+ }
2055
+ return statuses.includes(status);
2056
+ }
2057
+ };
2058
+ };
2059
+ useMultipartS3UploadStatus.triggerStatusChange = triggerStatusChange;
2060
+
2061
+ export { getMultipartS3Uploader, screenRecorder, useMultipartS3UploadStatus };
1995
2062
  //# sourceMappingURL=core.js.map