@bigbinary/neeto-media-recorder 2.2.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/constants.js +2 -2
- package/constants.js.map +1 -1
- package/core.js +72 -61
- package/core.js.map +1 -1
- package/index.js +132 -115
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/src/translations/en.json +1 -0
package/constants.js
CHANGED
|
@@ -12,7 +12,7 @@ function _typeof(obj) {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
// https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList
|
|
15
|
-
var
|
|
15
|
+
var RETRYABLE_ERRORS = [500, 503];
|
|
16
16
|
var ONE_SECOND_IN_MILLISECONDS = 1000;
|
|
17
17
|
var HALF_A_SECOND_IN_MILLISECONDS = 500;
|
|
18
18
|
var TWO_HUNDRED_MILLISECONDS = 200;
|
|
@@ -98,5 +98,5 @@ var RECORDING_LIMIT_REACHED_WARNING_SOUND = "https://neeto-record-static-assets.
|
|
|
98
98
|
var RECORDING_TIME_LIMIT_FREE_PLAN = 15 * ONE_MINUTE_IN_MILLISECONDS; // 15 minutes
|
|
99
99
|
var RECORDING_TIME_LIMIT_PRO_PLAN = 2 * ONE_HOUR_IN_MILLISECONDS; // 2 hours
|
|
100
100
|
|
|
101
|
-
export { DEFAULT_RETRY_CONFIG, HALF_A_SECOND_IN_MILLISECONDS, HAS_CHROME_NAMESPACE, INITIAL_RETRY_DELAY, IS_EXTENSION, IS_SAFARI, IS_SAFARI_EXTENSION, MAX_RETRY_DELAY, MIME_TYPE, NETWORK_ERROR, ONE_HOUR_IN_MILLISECONDS, ONE_MINUTE_IN_MILLISECONDS, ONE_SECOND, ONE_SECOND_IN_MILLISECONDS, PERMISSIONS_HELP_DOC, RECORDING_LIMIT_REACHED_WARNING_SOUND, RECORDING_TIME_LIMIT_FREE_PLAN, RECORDING_TIME_LIMIT_PRO_PLAN,
|
|
101
|
+
export { DEFAULT_RETRY_CONFIG, HALF_A_SECOND_IN_MILLISECONDS, HAS_CHROME_NAMESPACE, INITIAL_RETRY_DELAY, IS_EXTENSION, IS_SAFARI, IS_SAFARI_EXTENSION, MAX_RETRY_DELAY, MIME_TYPE, NETWORK_ERROR, ONE_HOUR_IN_MILLISECONDS, ONE_MINUTE_IN_MILLISECONDS, ONE_SECOND, ONE_SECOND_IN_MILLISECONDS, PERMISSIONS_HELP_DOC, RECORDING_LIMIT_REACHED_WARNING_SOUND, RECORDING_TIME_LIMIT_FREE_PLAN, RECORDING_TIME_LIMIT_PRO_PLAN, RETRYABLE_ERRORS, SCREEN_RECORDER_ERROR, SCREEN_RECORDER_EVENT, SCREEN_RECORDER_STATUS, START_RECORDING_SOUND, STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND, TIMEOUT_ERROR, TOTAL_RETRIES, TWO_HUNDRED_MILLISECONDS, UPLOAD_EVENT, UPLOAD_STATUS };
|
|
102
102
|
//# sourceMappingURL=constants.js.map
|
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
|
|
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 RETRYABLE_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 NotSupportedError: \"not_supported_error\",\n InvalidStateError: \"invalid_state_error\",\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":["RETRYABLE_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","NotSupportedError","InvalidStateError","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
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
-
import { isPresent, isNotEmpty, isNot
|
|
3
|
-
import {
|
|
4
|
-
import { isNotNil, min, identity, isEmpty,
|
|
2
|
+
import { isPresent, existsBy, isNotEmpty, isNot } from '@bigbinary/neeto-cist';
|
|
3
|
+
import { MIME_TYPE as MIME_TYPE$1, RETRYABLE_ERRORS, 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 { isNotNil, min, isNil, identity, isEmpty, pick, equals, not } from 'ramda';
|
|
5
5
|
import platform from 'platform';
|
|
6
|
+
import '@bigbinary/neeto-media-recorder/core';
|
|
6
7
|
import withImmutableActions from '@bigbinary/neeto-commons-frontend/react-utils/withImmutableActions';
|
|
7
8
|
import { create as create$3 } from 'zustand';
|
|
8
9
|
|
|
@@ -772,9 +773,53 @@ var partPresignedUrlApi = {
|
|
|
772
773
|
create: retryableCreate
|
|
773
774
|
};
|
|
774
775
|
|
|
776
|
+
var getUnSupportedConstraints = function getUnSupportedConstraints(mediaType) {
|
|
777
|
+
var supportedMediaConstraints = navigator.mediaDevices.getSupportedConstraints();
|
|
778
|
+
return Object.keys(mediaType).filter(function (constraint) {
|
|
779
|
+
return !supportedMediaConstraints[constraint];
|
|
780
|
+
});
|
|
781
|
+
};
|
|
782
|
+
var checkConstraints = function checkConstraints() {
|
|
783
|
+
if (isNil(navigator.mediaDevices)) {
|
|
784
|
+
return;
|
|
785
|
+
}
|
|
786
|
+
for (var _len = arguments.length, mediaTypes = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
787
|
+
mediaTypes[_key] = arguments[_key];
|
|
788
|
+
}
|
|
789
|
+
var unSupportedConstraints = mediaTypes.filter(function (mediaType) {
|
|
790
|
+
return _typeof$1(mediaType) === "object";
|
|
791
|
+
}).map(getUnSupportedConstraints).flat();
|
|
792
|
+
if (isNotEmpty(unSupportedConstraints)) {
|
|
793
|
+
// eslint-disable-next-line no-console
|
|
794
|
+
console.error("The constraints ".concat(unSupportedConstraints.join(","), " doesn't support on this browser."));
|
|
795
|
+
}
|
|
796
|
+
};
|
|
797
|
+
var isStreamEnded = function isStreamEnded(mediaStream) {
|
|
798
|
+
return existsBy({
|
|
799
|
+
readyState: "ended"
|
|
800
|
+
}, mediaStream.getTracks());
|
|
801
|
+
};
|
|
802
|
+
var getSupportedMimeType = function getSupportedMimeType(fallback) {
|
|
803
|
+
if (MediaRecorder.isTypeSupported(MIME_TYPE.mp4)) {
|
|
804
|
+
return MIME_TYPE.mp4;
|
|
805
|
+
} else if (MediaRecorder.isTypeSupported(MIME_TYPE.webmH264)) {
|
|
806
|
+
return MIME_TYPE.webmH264;
|
|
807
|
+
}
|
|
808
|
+
return fallback;
|
|
809
|
+
};
|
|
810
|
+
|
|
811
|
+
// TODO: Support for mp4 in chrome version 126
|
|
812
|
+
var getMediaRecorderOptions = function getMediaRecorderOptions() {
|
|
813
|
+
var mimeType = getSupportedMimeType();
|
|
814
|
+
if (!mimeType) return {};
|
|
815
|
+
return {
|
|
816
|
+
mimeType: mimeType
|
|
817
|
+
};
|
|
818
|
+
};
|
|
819
|
+
|
|
775
820
|
var s3AxiosInstance = axios.create({
|
|
776
821
|
headers: {
|
|
777
|
-
"Content-Type": MIME_TYPE.webmH264
|
|
822
|
+
"Content-Type": getSupportedMimeType(MIME_TYPE$1.webmH264)
|
|
778
823
|
}
|
|
779
824
|
});
|
|
780
825
|
s3AxiosInstance.interceptors.response.use(identity, function (error) {
|
|
@@ -787,12 +832,16 @@ var presignedUpload = function presignedUpload(_ref) {
|
|
|
787
832
|
return s3AxiosInstance.put(presignedUrl, blob, config);
|
|
788
833
|
};
|
|
789
834
|
var retryablePresignedUpload = buildRetryableApi(presignedUpload, {
|
|
790
|
-
retryableStatuses:
|
|
835
|
+
retryableStatuses: RETRYABLE_ERRORS
|
|
791
836
|
});
|
|
792
837
|
var s3Api = {
|
|
793
838
|
presignedUpload: retryablePresignedUpload
|
|
794
839
|
};
|
|
795
840
|
|
|
841
|
+
var isMp4Supported = function isMp4Supported() {
|
|
842
|
+
return getSupportedMimeType() === MIME_TYPE$1.mp4;
|
|
843
|
+
};
|
|
844
|
+
|
|
796
845
|
var prepareStore$1 = function prepareStore() {
|
|
797
846
|
return create$3(withImmutableActions(function () {
|
|
798
847
|
return {
|
|
@@ -985,7 +1034,8 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
985
1034
|
recordingId: _classPrivateFieldGet(_this, _recordingId),
|
|
986
1035
|
payload: {
|
|
987
1036
|
parts: parts,
|
|
988
|
-
uploadId: _classPrivateFieldGet(_this, _uploadId)
|
|
1037
|
+
uploadId: _classPrivateFieldGet(_this, _uploadId),
|
|
1038
|
+
isMp4: isMp4Supported()
|
|
989
1039
|
},
|
|
990
1040
|
config: {
|
|
991
1041
|
signal: _classPrivateFieldGet(_this, _abortController).signal
|
|
@@ -1052,7 +1102,8 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1052
1102
|
return abortUploadApi.create({
|
|
1053
1103
|
recordingId: _classPrivateFieldGet(_this, _recordingId),
|
|
1054
1104
|
payload: {
|
|
1055
|
-
uploadId: _classPrivateFieldGet(_this, _uploadId)
|
|
1105
|
+
uploadId: _classPrivateFieldGet(_this, _uploadId),
|
|
1106
|
+
isMp4: isMp4Supported()
|
|
1056
1107
|
}
|
|
1057
1108
|
});
|
|
1058
1109
|
case 9:
|
|
@@ -1114,7 +1165,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1114
1165
|
value: function () {
|
|
1115
1166
|
var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(chunks) {
|
|
1116
1167
|
var _this$partNumber;
|
|
1117
|
-
var partNumber, _yield$partPresignedU, presignedUrl, s3PartUploadPromise;
|
|
1168
|
+
var partNumber, mimeType, _yield$partPresignedU, presignedUrl, s3PartUploadPromise;
|
|
1118
1169
|
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
1119
1170
|
while (1) switch (_context3.prev = _context3.next) {
|
|
1120
1171
|
case 0:
|
|
@@ -1128,25 +1179,27 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1128
1179
|
}).size
|
|
1129
1180
|
};
|
|
1130
1181
|
_context3.prev = 4;
|
|
1131
|
-
|
|
1182
|
+
mimeType = getSupportedMimeType(MIME_TYPE.webmH264);
|
|
1183
|
+
_context3.next = 8;
|
|
1132
1184
|
return partPresignedUrlApi.create({
|
|
1133
1185
|
recordingId: _classPrivateFieldGet(_this, _recordingId),
|
|
1134
1186
|
payload: {
|
|
1135
1187
|
partNumber: partNumber,
|
|
1136
|
-
uploadId: _classPrivateFieldGet(_this, _uploadId)
|
|
1188
|
+
uploadId: _classPrivateFieldGet(_this, _uploadId),
|
|
1189
|
+
isMp4: mimeType === MIME_TYPE.mp4
|
|
1137
1190
|
},
|
|
1138
1191
|
config: {
|
|
1139
1192
|
signal: _classPrivateFieldGet(_this, _abortController).signal
|
|
1140
1193
|
}
|
|
1141
1194
|
});
|
|
1142
|
-
case
|
|
1195
|
+
case 8:
|
|
1143
1196
|
_yield$partPresignedU = _context3.sent;
|
|
1144
1197
|
presignedUrl = _yield$partPresignedU.presignedUrl;
|
|
1145
1198
|
logger.info("Presigned url created for partNumber:", partNumber);
|
|
1146
1199
|
s3PartUploadPromise = s3Api.presignedUpload({
|
|
1147
1200
|
presignedUrl: presignedUrl,
|
|
1148
1201
|
blob: new Blob(chunks, {
|
|
1149
|
-
type:
|
|
1202
|
+
type: mimeType
|
|
1150
1203
|
}),
|
|
1151
1204
|
config: {
|
|
1152
1205
|
includeMetadataInResponse: true,
|
|
@@ -1165,10 +1218,10 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1165
1218
|
}
|
|
1166
1219
|
});
|
|
1167
1220
|
_classPrivateFieldGet(_this, _s3PartUploadPromises).push(s3PartUploadPromise);
|
|
1168
|
-
_context3.next =
|
|
1221
|
+
_context3.next = 18;
|
|
1169
1222
|
break;
|
|
1170
|
-
case
|
|
1171
|
-
_context3.prev =
|
|
1223
|
+
case 15:
|
|
1224
|
+
_context3.prev = 15;
|
|
1172
1225
|
_context3.t0 = _context3["catch"](4);
|
|
1173
1226
|
// ignore if aborted
|
|
1174
1227
|
if (!axios.isCancel(_context3.t0)) {
|
|
@@ -1179,11 +1232,11 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1179
1232
|
_classPrivateFieldGet(_this, _failedUpload).push(partNumber);
|
|
1180
1233
|
}
|
|
1181
1234
|
}
|
|
1182
|
-
case
|
|
1235
|
+
case 18:
|
|
1183
1236
|
case "end":
|
|
1184
1237
|
return _context3.stop();
|
|
1185
1238
|
}
|
|
1186
|
-
}, _callee3, null, [[4,
|
|
1239
|
+
}, _callee3, null, [[4, 15]]);
|
|
1187
1240
|
}));
|
|
1188
1241
|
function value(_x) {
|
|
1189
1242
|
return _value.apply(this, arguments);
|
|
@@ -1195,7 +1248,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1195
1248
|
writable: true,
|
|
1196
1249
|
value: function value() {
|
|
1197
1250
|
return new Blob(_classPrivateFieldGet(_this, _unUploadedChunks), {
|
|
1198
|
-
type: MIME_TYPE.webmH264
|
|
1251
|
+
type: getSupportedMimeType(MIME_TYPE.webmH264)
|
|
1199
1252
|
});
|
|
1200
1253
|
}
|
|
1201
1254
|
});
|
|
@@ -1288,47 +1341,6 @@ var prepareStore = function prepareStore() {
|
|
|
1288
1341
|
}));
|
|
1289
1342
|
};
|
|
1290
1343
|
|
|
1291
|
-
var getUnSupportedConstraints = function getUnSupportedConstraints(mediaType) {
|
|
1292
|
-
var supportedMediaConstraints = navigator.mediaDevices.getSupportedConstraints();
|
|
1293
|
-
return Object.keys(mediaType).filter(function (constraint) {
|
|
1294
|
-
return !supportedMediaConstraints[constraint];
|
|
1295
|
-
});
|
|
1296
|
-
};
|
|
1297
|
-
var checkConstraints = function checkConstraints() {
|
|
1298
|
-
if (isNil(navigator.mediaDevices)) {
|
|
1299
|
-
return;
|
|
1300
|
-
}
|
|
1301
|
-
for (var _len = arguments.length, mediaTypes = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
1302
|
-
mediaTypes[_key] = arguments[_key];
|
|
1303
|
-
}
|
|
1304
|
-
var unSupportedConstraints = mediaTypes.filter(function (mediaType) {
|
|
1305
|
-
return _typeof$1(mediaType) === "object";
|
|
1306
|
-
}).map(getUnSupportedConstraints).flat();
|
|
1307
|
-
if (isNotEmpty(unSupportedConstraints)) {
|
|
1308
|
-
// eslint-disable-next-line no-console
|
|
1309
|
-
console.error("The constraints ".concat(unSupportedConstraints.join(","), " doesn't support on this browser."));
|
|
1310
|
-
}
|
|
1311
|
-
};
|
|
1312
|
-
var isStreamEnded = function isStreamEnded(mediaStream) {
|
|
1313
|
-
return existsBy({
|
|
1314
|
-
readyState: "ended"
|
|
1315
|
-
}, mediaStream.getTracks());
|
|
1316
|
-
};
|
|
1317
|
-
|
|
1318
|
-
// TODO: Support for mp4 in chrome version 126
|
|
1319
|
-
var getMediaRecorderOptions = function getMediaRecorderOptions() {
|
|
1320
|
-
return {
|
|
1321
|
-
mimeType: MIME_TYPE.webmH264
|
|
1322
|
-
};
|
|
1323
|
-
};
|
|
1324
|
-
// Required for safari
|
|
1325
|
-
// if (MediaRecorder.isTypeSupported(MIME_TYPE.mp4)) {
|
|
1326
|
-
// return { mimeType: MIME_TYPE.mp4 };
|
|
1327
|
-
// } else if (MediaRecorder.isTypeSupported(MIME_TYPE.webmH264)) {
|
|
1328
|
-
// return { mimeType: MIME_TYPE.webmH264 };
|
|
1329
|
-
// }
|
|
1330
|
-
// return {};
|
|
1331
|
-
|
|
1332
1344
|
function ownKeys(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; }
|
|
1333
1345
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1334
1346
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
|
@@ -1448,9 +1460,8 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
1448
1460
|
return _classPrivateFieldSet(_this, _timeLimit, timeLimit);
|
|
1449
1461
|
});
|
|
1450
1462
|
_defineProperty(this, "getWebmMediaBlob", function () {
|
|
1451
|
-
var _getMediaRecorderOpti, _getMediaRecorderOpti2;
|
|
1452
1463
|
return new Blob(_classPrivateFieldGet(_this, _mediaChunks), {
|
|
1453
|
-
type: (
|
|
1464
|
+
type: getSupportedMimeType(MIME_TYPE$1.webmH264)
|
|
1454
1465
|
});
|
|
1455
1466
|
});
|
|
1456
1467
|
_defineProperty(this, "addCallback", function (event, callback) {
|