@bigbinary/neeto-media-recorder 2.5.7 → 2.5.8-beta

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;
@@ -89,11 +90,11 @@ function _toPrimitive(input, hint) {
89
90
  if (_typeof$1(input) !== "object" || input === null) return input;
90
91
  var prim = input[Symbol.toPrimitive];
91
92
  if (prim !== undefined) {
92
- var res = prim.call(input, hint || "default");
93
+ var res = prim.call(input, hint);
93
94
  if (_typeof$1(res) !== "object") return res;
94
95
  throw new TypeError("@@toPrimitive must return a primitive value.");
95
96
  }
96
- return (hint === "string" ? String : Number)(input);
97
+ return (String )(input);
97
98
  }
98
99
 
99
100
  function _toPropertyKey(arg) {
@@ -112,7 +113,6 @@ function _defineProperties(target, props) {
112
113
  }
113
114
  function _createClass(Constructor, protoProps, staticProps) {
114
115
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
115
- if (staticProps) _defineProperties(Constructor, staticProps);
116
116
  Object.defineProperty(Constructor, "prototype", {
117
117
  writable: false
118
118
  });
@@ -134,25 +134,6 @@ function _defineProperty(obj, key, value) {
134
134
  return obj;
135
135
  }
136
136
 
137
- function _classApplyDescriptorGet(receiver, descriptor) {
138
- if (descriptor.get) {
139
- return descriptor.get.call(receiver);
140
- }
141
- return descriptor.value;
142
- }
143
-
144
- function _classExtractFieldDescriptor(receiver, privateMap, action) {
145
- if (!privateMap.has(receiver)) {
146
- throw new TypeError("attempted to " + action + " private field on non-instance");
147
- }
148
- return privateMap.get(receiver);
149
- }
150
-
151
- function _classPrivateFieldGet(receiver, privateMap) {
152
- var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get");
153
- return _classApplyDescriptorGet(receiver, descriptor);
154
- }
155
-
156
137
  function _classApplyDescriptorSet(receiver, descriptor, value) {
157
138
  if (descriptor.set) {
158
139
  descriptor.set.call(receiver, value);
@@ -164,12 +145,31 @@ function _classApplyDescriptorSet(receiver, descriptor, value) {
164
145
  }
165
146
  }
166
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
+
167
155
  function _classPrivateFieldSet(receiver, privateMap, value) {
168
156
  var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set");
169
157
  _classApplyDescriptorSet(receiver, descriptor, value);
170
158
  return value;
171
159
  }
172
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
+
173
173
  function getDefaultExportFromCjs (x) {
174
174
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
175
175
  }
@@ -178,8 +178,6 @@ var regeneratorRuntime$1 = {exports: {}};
178
178
 
179
179
  var _typeof = {exports: {}};
180
180
 
181
- _typeof.exports;
182
-
183
181
  (function (module) {
184
182
  function _typeof(obj) {
185
183
  "@babel/helpers - typeof";
@@ -195,8 +193,6 @@ _typeof.exports;
195
193
 
196
194
  var _typeofExports = _typeof.exports;
197
195
 
198
- regeneratorRuntime$1.exports;
199
-
200
196
  (function (module) {
201
197
  var _typeof = _typeofExports["default"];
202
198
  function _regeneratorRuntime() {
@@ -868,14 +864,6 @@ var isMp4Supported = function isMp4Supported() {
868
864
  return getSupportedMimeType() === MIME_TYPE$1.mp4;
869
865
  };
870
866
 
871
- var prepareStore$1 = function prepareStore() {
872
- return create$3(withImmutableActions(function () {
873
- return {
874
- status: ""
875
- };
876
- }));
877
- };
878
-
879
867
  /**
880
868
  * Due to the custom axios interceptor for s3Api,
881
869
  * it'll return false for cancelled requests instead of a cancelled error object.
@@ -897,18 +885,53 @@ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if
897
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; }
898
886
  function _classPrivateFieldInitSpec$1(obj, privateMap, value) { _checkPrivateRedeclaration$1(obj, privateMap); privateMap.set(obj, value); }
899
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
+ };
900
920
  var _recordingId = /*#__PURE__*/new WeakMap();
901
921
  var _uploadId = /*#__PURE__*/new WeakMap();
902
922
  var _unUploadedChunks = /*#__PURE__*/new WeakMap();
903
923
  var _partNumber = /*#__PURE__*/new WeakMap();
904
924
  var _s3PartUploadPromises = /*#__PURE__*/new WeakMap();
905
925
  var _callbacks$1 = /*#__PURE__*/new WeakMap();
906
- var _store$1 = /*#__PURE__*/new WeakMap();
907
926
  var _abortController = /*#__PURE__*/new WeakMap();
908
927
  var _pendingS3ChunkUploads = /*#__PURE__*/new WeakMap();
909
928
  var _completeUploadPromise = /*#__PURE__*/new WeakMap();
910
929
  var _failedUpload = /*#__PURE__*/new WeakMap();
911
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();
912
935
  var _fireCallbacks$1 = /*#__PURE__*/new WeakMap();
913
936
  var _uploadChunkToS = /*#__PURE__*/new WeakMap();
914
937
  var _getCurrentUnUploadedBlob = /*#__PURE__*/new WeakMap();
@@ -921,6 +944,10 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
921
944
  get: _get_isNotInitialized,
922
945
  set: void 0
923
946
  });
947
+ _classPrivateFieldInitSpec$1(this, _status2, {
948
+ get: void 0,
949
+ set: _set_status
950
+ });
924
951
  _defineProperty(this, "MIN_UPLOAD_CHUNK_SIZE", 5 * 1024 * 1024);
925
952
  _classPrivateFieldInitSpec$1(this, _recordingId, {
926
953
  writable: true,
@@ -946,10 +973,6 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
946
973
  writable: true,
947
974
  value: {}
948
975
  });
949
- _classPrivateFieldInitSpec$1(this, _store$1, {
950
- writable: true,
951
- value: void 0
952
- });
953
976
  _classPrivateFieldInitSpec$1(this, _abortController, {
954
977
  writable: true,
955
978
  value: void 0
@@ -970,6 +993,18 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
970
993
  writable: true,
971
994
  value: {}
972
995
  });
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
+ });
973
1008
  _defineProperty(this, "initialize", function (recordingId, uploadId) {
974
1009
  _classPrivateFieldSet(_this, _recordingId, recordingId);
975
1010
  _classPrivateFieldSet(_this, _uploadId, uploadId);
@@ -980,7 +1015,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
980
1015
  _classPrivateFieldGet(_this, _unUploadedChunks).push(data);
981
1016
  }
982
1017
  if (_classPrivateFieldGet(_this, _isNotInitialized)) return;
983
- logger.info("Current unuploaded data size is ", _classPrivateFieldGet(_this, _getCurrentUnUploadedBlob).call(_this).size / 1024 / 1024, "MB");
1018
+ _classPrivateFieldGet(_this, _logger5).info("Current unuploaded data size is ", _classPrivateFieldGet(_this, _getCurrentUnUploadedBlob).call(_this).size / 1024 / 1024, "MB");
984
1019
  if (_classPrivateFieldGet(_this, _getCurrentUnUploadedBlob).call(_this).size > _this.MIN_UPLOAD_CHUNK_SIZE) {
985
1020
  var uploadChunkToS3Promise = _classPrivateFieldGet(_this, _uploadChunkToS).call(_this, _classPrivateFieldGet(_this, _unUploadedChunks));
986
1021
  _classPrivateFieldGet(_this, _pendingS3ChunkUploads).push(uploadChunkToS3Promise);
@@ -993,19 +1028,17 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
993
1028
  while (1) switch (_context.prev = _context.next) {
994
1029
  case 0:
995
1030
  _context.prev = 0;
996
- _classPrivateFieldGet(_this, _store$1).setState({
997
- status: UPLOAD_STATUS.uploading
998
- });
1031
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.uploading);
999
1032
  if (!_classPrivateFieldGet(_this, _isNotInitialized)) {
1000
1033
  _context.next = 5;
1001
1034
  break;
1002
1035
  }
1003
- logger.error("completeUpload -> not initialized");
1036
+ _classPrivateFieldGet(_this, _logger5).error("completeUpload -> not initialized");
1004
1037
  return _context.abrupt("return");
1005
1038
  case 5:
1006
1039
  // Upload last chunk; only if last chunk has data
1007
1040
  if (_classPrivateFieldGet(_this, _getCurrentUnUploadedBlob).call(_this).size > 0) {
1008
- logger.info("completeUpload -> need to upload last chunk");
1041
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> need to upload last chunk");
1009
1042
  uploadChunkToS3Promise = _classPrivateFieldGet(_this, _uploadChunkToS).call(_this, _classPrivateFieldGet(_this, _unUploadedChunks));
1010
1043
  _classPrivateFieldGet(_this, _pendingS3ChunkUploads).push(uploadChunkToS3Promise);
1011
1044
  }
@@ -1018,39 +1051,32 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1018
1051
  * adding the new presignedUrl part upload to s3PartUploadPromises.
1019
1052
  * This results in incorrect partNumbers.
1020
1053
  */
1021
- 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);
1022
1055
  _context.next = 9;
1023
1056
  return Promise.all(_classPrivateFieldGet(_this, _pendingS3ChunkUploads));
1024
1057
  case 9:
1025
- logger.info("completeUpload -> finishing part uploads...");
1058
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> finishing part uploads...");
1026
1059
  _context.next = 12;
1027
1060
  return Promise.all(_classPrivateFieldGet(_this, _s3PartUploadPromises));
1028
1061
  case 12:
1029
1062
  resolvedS3PartUploadPromises = _context.sent;
1030
1063
  if (!isNotEmpty(_classPrivateFieldGet(_this, _failedUpload))) {
1031
- _context.next = 19;
1064
+ _context.next = 18;
1032
1065
  break;
1033
1066
  }
1034
- logger.info("completeUpload -> chunks with these partNumbers failed:", _classPrivateFieldGet(_this, _failedUpload));
1035
- _classPrivateFieldGet(_this, _store$1).setState({
1036
- status: UPLOAD_STATUS.error
1037
- });
1067
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> chunks with these partNumbers failed:", _classPrivateFieldGet(_this, _failedUpload));
1068
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.error);
1038
1069
  _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onError);
1039
- _classPrivateFieldGet(_this, _store$1).setState({
1040
- status: UPLOAD_STATUS.error
1041
- });
1042
1070
  return _context.abrupt("return");
1043
- case 19:
1071
+ case 18:
1044
1072
  if (!(resolvedS3PartUploadPromises.length === 0)) {
1045
- _context.next = 23;
1073
+ _context.next = 22;
1046
1074
  break;
1047
1075
  }
1048
- logger.info("completeUpload -> insufficient data");
1049
- _classPrivateFieldGet(_this, _store$1).setState({
1050
- status: UPLOAD_STATUS.insufficient_data
1051
- });
1076
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> insufficient data");
1077
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.insufficient_data);
1052
1078
  return _context.abrupt("return");
1053
- case 23:
1079
+ case 22:
1054
1080
  parts = resolvedS3PartUploadPromises.filter(isNotCancelledRequest).map(function (resolvedResponse) {
1055
1081
  return {
1056
1082
  etag: resolvedResponse.headers.etag,
@@ -1059,7 +1085,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1059
1085
  }).toSorted(function (a, b) {
1060
1086
  return Number(a.partNumber) - Number(b.partNumber);
1061
1087
  });
1062
- logger.info("completeUpload -> uploaded parts: ", parts);
1088
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> uploaded parts: ", parts);
1063
1089
  _classPrivateFieldSet(_this, _completeUploadPromise, completeUploadApi.create({
1064
1090
  recordingId: _classPrivateFieldGet(_this, _recordingId),
1065
1091
  payload: {
@@ -1071,75 +1097,73 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1071
1097
  signal: _classPrivateFieldGet(_this, _abortController).signal
1072
1098
  }
1073
1099
  }));
1074
- logger.info("completeUpload -> completing upload... ");
1075
- _context.next = 29;
1100
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> completing upload... ");
1101
+ _context.next = 28;
1076
1102
  return _classPrivateFieldGet(_this, _completeUploadPromise);
1077
- case 29:
1078
- logger.info("completeUpload -> upload completed");
1079
- if (!(_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.aborting)) {
1080
- _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;
1081
1107
  break;
1082
1108
  }
1083
- logger.info("completeUpload -> upload was marked as aborted");
1109
+ _classPrivateFieldGet(_this, _logger5).info("completeUpload -> upload was marked as aborted");
1084
1110
  return _context.abrupt("return");
1085
- case 33:
1086
- _classPrivateFieldGet(_this, _store$1).setState({
1087
- status: UPLOAD_STATUS.completed
1088
- });
1111
+ case 32:
1112
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.completed);
1089
1113
  _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onComplete);
1090
- _context.next = 40;
1114
+ _context.next = 39;
1091
1115
  break;
1092
- case 37:
1093
- _context.prev = 37;
1116
+ case 36:
1117
+ _context.prev = 36;
1094
1118
  _context.t0 = _context["catch"](0);
1095
1119
  // ignore if aborted
1096
1120
  if (!axios.isCancel(_context.t0)) {
1097
- _classPrivateFieldGet(_this, _store$1).setState({
1098
- status: UPLOAD_STATUS.error
1099
- });
1121
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.error);
1100
1122
  _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onError);
1101
- logger.error(_context.t0);
1123
+ _classPrivateFieldGet(_this, _logger5).error(_context.t0);
1102
1124
  }
1103
- case 40:
1104
- _context.prev = 40;
1125
+ case 39:
1126
+ _context.prev = 39;
1105
1127
  _classPrivateFieldSet(_this, _completeUploadPromise, null);
1106
- return _context.finish(40);
1107
- case 43:
1128
+ return _context.finish(39);
1129
+ case 42:
1108
1130
  case "end":
1109
1131
  return _context.stop();
1110
1132
  }
1111
- }, _callee, null, [[0, 37, 40, 43]]);
1133
+ }, _callee, null, [[0, 36, 39, 42]]);
1112
1134
  })));
1113
1135
  _defineProperty(this, "abortUpload", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
1114
- var recordingId, uploadId;
1136
+ var forceAbort,
1137
+ recordingId,
1138
+ uploadId,
1139
+ _args2 = arguments;
1115
1140
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
1116
1141
  while (1) switch (_context2.prev = _context2.next) {
1117
1142
  case 0:
1118
- _context2.prev = 0;
1119
- if (!(_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.aborting)) {
1120
- _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;
1121
1147
  break;
1122
1148
  }
1123
- logger.info("abortUpload -> already aborting");
1149
+ _classPrivateFieldGet(_this, _logger5).info("abortUpload -> already aborting");
1124
1150
  return _context2.abrupt("return");
1125
- case 4:
1126
- _classPrivateFieldGet(_this, _store$1).setState({
1127
- status: UPLOAD_STATUS.aborting
1128
- });
1151
+ case 5:
1152
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.aborting);
1129
1153
  if (!_classPrivateFieldGet(_this, _isNotInitialized)) {
1130
- _context2.next = 8;
1154
+ _context2.next = 9;
1131
1155
  break;
1132
1156
  }
1133
- logger.info("abortUpload -> not initialized");
1157
+ _classPrivateFieldGet(_this, _logger5).info("abortUpload -> not initialized");
1134
1158
  return _context2.abrupt("return");
1135
- case 8:
1159
+ case 9:
1136
1160
  recordingId = _classPrivateFieldGet(_this, _recordingId);
1137
1161
  uploadId = _classPrivateFieldGet(_this, _uploadId);
1138
- _context2.next = 12;
1162
+ _context2.next = 13;
1139
1163
  return _classPrivateFieldGet(_this, _completeUploadPromise);
1140
- case 12:
1164
+ case 13:
1141
1165
  _classPrivateFieldGet(_this, _abortController).abort();
1142
- _context2.next = 15;
1166
+ _context2.next = 16;
1143
1167
  return abortUploadApi.create({
1144
1168
  recordingId: recordingId,
1145
1169
  payload: {
@@ -1147,26 +1171,25 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1147
1171
  isMp4: isMp4Supported()
1148
1172
  }
1149
1173
  });
1150
- case 15:
1151
- 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);
1152
1177
  _classPrivateFieldSet(_this, _unUploadedChunks, []);
1153
1178
  _classPrivateFieldSet(_this, _partNumber, 1);
1154
1179
  _classPrivateFieldSet(_this, _s3PartUploadPromises, []);
1155
- _classPrivateFieldGet(_this, _store$1).setState({
1156
- status: ""
1157
- });
1180
+ _classPrivateFieldSet(_this, _status2, "");
1158
1181
  _classPrivateFieldSet(_this, _abortController, null);
1159
- _context2.next = 26;
1182
+ _context2.next = 28;
1160
1183
  break;
1161
- case 23:
1162
- _context2.prev = 23;
1163
- _context2.t0 = _context2["catch"](0);
1164
- logger.error(_context2.t0);
1165
- 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:
1166
1189
  case "end":
1167
1190
  return _context2.stop();
1168
1191
  }
1169
- }, _callee2, null, [[0, 23]]);
1192
+ }, _callee2, null, [[1, 25]]);
1170
1193
  })));
1171
1194
  _defineProperty(this, "resetState", function () {
1172
1195
  _classPrivateFieldSet(_this, _recordingId, "");
@@ -1178,9 +1201,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1178
1201
  _classPrivateFieldSet(_this, _callbacks$1, {});
1179
1202
  _classPrivateFieldSet(_this, _failedUpload, []);
1180
1203
  _classPrivateFieldSet(_this, _uploadProgress, {});
1181
- _classPrivateFieldGet(_this, _store$1).setState({
1182
- status: ""
1183
- });
1204
+ _classPrivateFieldSet(_this, _status2, "");
1184
1205
  });
1185
1206
  _defineProperty(this, "addCallback", function (event, callback) {
1186
1207
  var _classPrivateFieldGet2;
@@ -1212,7 +1233,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1212
1233
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
1213
1234
  while (1) switch (_context3.prev = _context3.next) {
1214
1235
  case 0:
1215
- logger.info("Part ready to be uploaded: ", _classPrivateFieldGet(_this, _partNumber));
1236
+ _classPrivateFieldGet(_this, _logger5).info("Part ready to be uploaded: ", _classPrivateFieldGet(_this, _partNumber));
1216
1237
  partNumber = _classPrivateFieldGet(_this, _partNumber);
1217
1238
  mimeType = getSupportedMimeType();
1218
1239
  _classPrivateFieldSet(_this, _partNumber, (_this$partNumber = _classPrivateFieldGet(_this, _partNumber), _this$partNumber++, _this$partNumber));
@@ -1238,7 +1259,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1238
1259
  case 8:
1239
1260
  _yield$partPresignedU = _context3.sent;
1240
1261
  presignedUrl = _yield$partPresignedU.presignedUrl;
1241
- logger.info("Presigned url created for partNumber:", partNumber);
1262
+ _classPrivateFieldGet(_this, _logger5).info("Presigned url created for partNumber:", partNumber);
1242
1263
  s3PartUploadPromise = s3Api.presignedUpload({
1243
1264
  presignedUrl: presignedUrl,
1244
1265
  blob: new Blob(chunks, {
@@ -1252,9 +1273,9 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1252
1273
  uploaded: e.loaded,
1253
1274
  total: e.total
1254
1275
  };
1255
- if (_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.uploading) {
1276
+ if (_this.status === UPLOAD_STATUS.uploading) {
1256
1277
  var percentCompleted = calculateUploadProgress(_classPrivateFieldGet(_this, _uploadProgress));
1257
- logger.info("Upload Progress: ".concat(percentCompleted, "%"));
1278
+ _classPrivateFieldGet(_this, _logger5).info("Upload Progress: ".concat(percentCompleted, "%"));
1258
1279
  _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onProgress, [percentCompleted]);
1259
1280
  }
1260
1281
  }
@@ -1268,11 +1289,9 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1268
1289
  _context3.t0 = _context3["catch"](5);
1269
1290
  // ignore if aborted
1270
1291
  if (!axios.isCancel(_context3.t0)) {
1271
- logger.error("Failed to upload partNumber:", partNumber);
1272
- if (_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.uploading) {
1273
- _classPrivateFieldGet(_this, _store$1).setState({
1274
- status: UPLOAD_STATUS.error
1275
- });
1292
+ _classPrivateFieldGet(_this, _logger5).error("Failed to upload partNumber:", partNumber);
1293
+ if (_this.status === UPLOAD_STATUS.uploading) {
1294
+ _classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.error);
1276
1295
  _classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onError);
1277
1296
  } else {
1278
1297
  _classPrivateFieldGet(_this, _failedUpload).push(partNumber);
@@ -1298,14 +1317,12 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1298
1317
  });
1299
1318
  }
1300
1319
  });
1301
- _classPrivateFieldSet(this, _store$1, prepareStore$1());
1320
+ _classPrivateFieldGet(this, _logger5).info("Uploader initialized");
1302
1321
  }
1303
-
1304
- /** @type {import("neetocommons/react-utils").ZustandStoreHook} */
1305
1322
  _createClass(MultipartS3Uploader, [{
1306
- key: "useMultipartS3UploadStore",
1323
+ key: "status",
1307
1324
  get: function get() {
1308
- return _classPrivateFieldGet(this, _store$1);
1325
+ return _classPrivateFieldGet(this, _status);
1309
1326
  }
1310
1327
  }, {
1311
1328
  key: "hasSufficientData",
@@ -1315,10 +1332,24 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1315
1332
  }]);
1316
1333
  return MultipartS3Uploader;
1317
1334
  }();
1335
+ function _set_status(status) {
1336
+ _classPrivateFieldSet(this, _status, status);
1337
+ useMultipartS3UploadStatus$1.triggerStatusChange();
1338
+ }
1318
1339
  function _get_isNotInitialized() {
1319
1340
  return isEmpty(_classPrivateFieldGet(this, _uploadId) + _classPrivateFieldGet(this, _recordingId));
1320
1341
  }
1321
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
+ };
1322
1353
 
1323
1354
  function _arrayWithHoles(arr) {
1324
1355
  if (Array.isArray(arr)) return arr;
@@ -1335,10 +1366,7 @@ function _iterableToArrayLimit(arr, i) {
1335
1366
  _n = !0,
1336
1367
  _d = !1;
1337
1368
  try {
1338
- if (_x = (_i = _i.call(arr)).next, 0 === i) {
1339
- if (Object(_i) !== _i) return;
1340
- _n = !1;
1341
- } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
1369
+ if (_x = (_i = _i.call(arr)).next, 0 === i) ; else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
1342
1370
  } catch (err) {
1343
1371
  _d = !0, _e = err;
1344
1372
  } finally {
@@ -1886,14 +1914,16 @@ var ScreenRecorder = /*#__PURE__*/function () {
1886
1914
  _classPrivateFieldGet(_this, _mediaRecorder).start(5000);
1887
1915
  _classPrivateFieldGet(_this, _startTimer).call(_this);
1888
1916
  } catch (error) {
1889
- clearInterval(_classPrivateFieldGet(_this, _timerId));
1917
+ logger.info("Failed to start mediaRecorder", error);
1890
1918
  _classPrivateFieldGet(_this, _store).setState({
1891
1919
  status: SCREEN_RECORDER_STATUS.idle,
1892
- error: SCREEN_RECORDER_ERROR[error.name]
1920
+ error: SCREEN_RECORDER_ERROR.FailedToStart
1893
1921
  });
1894
- _classPrivateFieldGet(_this, _fireCallbacks).call(_this, SCREEN_RECORDER_EVENT.onError, [error]);
1922
+
1895
1923
  // To prevent triggering #onRecordingStop when the mediaRecorder is failed to start.
1896
- _classPrivateFieldGet(_this, _mediaRecorder).onstop = noop;
1924
+ if (_classPrivateFieldGet(_this, _mediaRecorder)) {
1925
+ _classPrivateFieldGet(_this, _mediaRecorder).onstop = noop;
1926
+ }
1897
1927
  if (_classPrivateFieldGet(_this, _mediaStream)) {
1898
1928
  _classPrivateFieldGet(_this, _mediaStream).getTracks().forEach(function (track) {
1899
1929
  return track.stop();
@@ -1999,5 +2029,34 @@ var screenRecorder = new ScreenRecorder(true, {
1999
2029
  displaySurface: DISPLAY_SURFACE.monitor
2000
2030
  });
2001
2031
 
2002
- 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 };
2003
2062
  //# sourceMappingURL=core.js.map