@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/README.md +39 -11
- package/constants.js +2 -3
- package/constants.js.map +1 -1
- package/core.js +204 -137
- package/core.js.map +1 -1
- package/index.js +151 -149
- package/index.js.map +1 -1
- package/package.json +1 -1
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
|
|
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,
|
|
916
|
-
get:
|
|
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
|
-
|
|
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,
|
|
978
|
-
|
|
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
|
-
|
|
992
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
1064
|
+
_context.next = 18;
|
|
1027
1065
|
break;
|
|
1028
1066
|
}
|
|
1029
|
-
|
|
1030
|
-
|
|
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
|
|
1071
|
+
case 18:
|
|
1039
1072
|
if (!(resolvedS3PartUploadPromises.length === 0)) {
|
|
1040
|
-
_context.next =
|
|
1073
|
+
_context.next = 22;
|
|
1041
1074
|
break;
|
|
1042
1075
|
}
|
|
1043
|
-
|
|
1044
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
1070
|
-
_context.next =
|
|
1100
|
+
_classPrivateFieldGet(_this, _logger5).info("completeUpload -> completing upload... ");
|
|
1101
|
+
_context.next = 28;
|
|
1071
1102
|
return _classPrivateFieldGet(_this, _completeUploadPromise);
|
|
1072
|
-
case
|
|
1073
|
-
|
|
1074
|
-
if (!(
|
|
1075
|
-
_context.next =
|
|
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
|
-
|
|
1109
|
+
_classPrivateFieldGet(_this, _logger5).info("completeUpload -> upload was marked as aborted");
|
|
1079
1110
|
return _context.abrupt("return");
|
|
1080
|
-
case
|
|
1081
|
-
|
|
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 =
|
|
1114
|
+
_context.next = 39;
|
|
1086
1115
|
break;
|
|
1087
|
-
case
|
|
1088
|
-
_context.prev =
|
|
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
|
-
|
|
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
|
-
|
|
1123
|
+
_classPrivateFieldGet(_this, _logger5).error(_context.t0);
|
|
1097
1124
|
}
|
|
1098
|
-
case
|
|
1099
|
-
_context.prev =
|
|
1125
|
+
case 39:
|
|
1126
|
+
_context.prev = 39;
|
|
1100
1127
|
_classPrivateFieldSet(_this, _completeUploadPromise, null);
|
|
1101
|
-
return _context.finish(
|
|
1102
|
-
case
|
|
1128
|
+
return _context.finish(39);
|
|
1129
|
+
case 42:
|
|
1103
1130
|
case "end":
|
|
1104
1131
|
return _context.stop();
|
|
1105
1132
|
}
|
|
1106
|
-
}, _callee, null, [[0,
|
|
1133
|
+
}, _callee, null, [[0, 36, 39, 42]]);
|
|
1107
1134
|
})));
|
|
1108
1135
|
_defineProperty(this, "abortUpload", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
1109
|
-
var
|
|
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
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
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
|
-
|
|
1149
|
+
_classPrivateFieldGet(_this, _logger5).info("abortUpload -> already aborting");
|
|
1119
1150
|
return _context2.abrupt("return");
|
|
1120
|
-
case
|
|
1121
|
-
|
|
1122
|
-
|
|
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
|
-
|
|
1157
|
+
_classPrivateFieldGet(_this, _logger5).info("abortUpload -> not initialized");
|
|
1129
1158
|
return _context2.abrupt("return");
|
|
1130
|
-
case
|
|
1159
|
+
case 9:
|
|
1131
1160
|
recordingId = _classPrivateFieldGet(_this, _recordingId);
|
|
1132
1161
|
uploadId = _classPrivateFieldGet(_this, _uploadId);
|
|
1133
|
-
_context2.next =
|
|
1162
|
+
_context2.next = 13;
|
|
1134
1163
|
return _classPrivateFieldGet(_this, _completeUploadPromise);
|
|
1135
|
-
case
|
|
1164
|
+
case 13:
|
|
1136
1165
|
_classPrivateFieldGet(_this, _abortController).abort();
|
|
1137
|
-
_context2.next =
|
|
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
|
|
1146
|
-
|
|
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
|
-
|
|
1151
|
-
status: ""
|
|
1152
|
-
});
|
|
1180
|
+
_classPrivateFieldSet(_this, _status2, "");
|
|
1153
1181
|
_classPrivateFieldSet(_this, _abortController, null);
|
|
1154
|
-
_context2.next =
|
|
1182
|
+
_context2.next = 28;
|
|
1155
1183
|
break;
|
|
1156
|
-
case
|
|
1157
|
-
_context2.prev =
|
|
1158
|
-
_context2.t0 = _context2["catch"](
|
|
1159
|
-
|
|
1160
|
-
case
|
|
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, [[
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
1276
|
+
if (_this.status === UPLOAD_STATUS.uploading) {
|
|
1251
1277
|
var percentCompleted = calculateUploadProgress(_classPrivateFieldGet(_this, _uploadProgress));
|
|
1252
|
-
|
|
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
|
-
|
|
1267
|
-
if (
|
|
1268
|
-
|
|
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
|
-
|
|
1320
|
+
_classPrivateFieldGet(this, _logger5).info("Uploader initialized");
|
|
1297
1321
|
}
|
|
1298
|
-
|
|
1299
|
-
/** @type {import("neetocommons/react-utils").ZustandStoreHook} */
|
|
1300
1322
|
_createClass(MultipartS3Uploader, [{
|
|
1301
|
-
key: "
|
|
1323
|
+
key: "status",
|
|
1302
1324
|
get: function get() {
|
|
1303
|
-
return _classPrivateFieldGet(this,
|
|
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
|
|
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
|
-
|
|
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
|
|
1920
|
+
error: SCREEN_RECORDER_ERROR.FailedToStart
|
|
1885
1921
|
});
|
|
1886
|
-
|
|
1922
|
+
|
|
1887
1923
|
// To prevent triggering #onRecordingStop when the mediaRecorder is failed to start.
|
|
1888
|
-
_classPrivateFieldGet(_this, _mediaRecorder)
|
|
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
|
-
|
|
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
|