@bigbinary/neeto-media-recorder 2.7.33 → 2.7.35
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 -1
- package/constants.js.map +1 -1
- package/core.js +225 -139
- package/core.js.map +1 -1
- package/index.js.map +1 -1
- package/package.json +1 -1
package/constants.js
CHANGED
|
@@ -81,6 +81,7 @@ var SCREEN_RECORDER_EVENT = {
|
|
|
81
81
|
onShareSelected: "onShareSelected"
|
|
82
82
|
};
|
|
83
83
|
var TOTAL_RETRIES = 15;
|
|
84
|
+
var ABORT_UPLOAD_RETRIES = 2;
|
|
84
85
|
var INITIAL_RETRY_DELAY = 4000;
|
|
85
86
|
var MAX_RETRY_DELAY = 16000;
|
|
86
87
|
var DEFAULT_RETRY_CONFIG = {
|
|
@@ -124,5 +125,5 @@ var RECORDING_TIME_LIMIT_PRO_PLAN = 2 * ONE_HOUR_IN_MILLISECONDS; // 2 hours
|
|
|
124
125
|
var MIC_NOT_WORKING_ALERT_TIME = 30;
|
|
125
126
|
var MIC_NOT_WORKING_SILENCE_TIMEOUT = MIC_NOT_WORKING_ALERT_TIME * 1000;
|
|
126
127
|
|
|
127
|
-
export { COUNTDOWN_TICK_SOUND, COUNTDOWN_TIME, DEFAULT_RETRY_CONFIG, HALF_A_SECOND_IN_MILLISECONDS, HAS_CHROME_NAMESPACE, INITIAL_RETRY_DELAY, IS_EXTENSION, IS_SAFARI, IS_SAFARI_EXTENSION, MAX_RETRY_DELAY, MIC_NOT_WORKING_ALERT_TIME, MIC_NOT_WORKING_SILENCE_TIMEOUT, 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 };
|
|
128
|
+
export { ABORT_UPLOAD_RETRIES, COUNTDOWN_TICK_SOUND, COUNTDOWN_TIME, DEFAULT_RETRY_CONFIG, HALF_A_SECOND_IN_MILLISECONDS, HAS_CHROME_NAMESPACE, INITIAL_RETRY_DELAY, IS_EXTENSION, IS_SAFARI, IS_SAFARI_EXTENSION, MAX_RETRY_DELAY, MIC_NOT_WORKING_ALERT_TIME, MIC_NOT_WORKING_SILENCE_TIMEOUT, 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 };
|
|
128
129
|
//# 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":["function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","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 COUNTDOWN_TIME = 3;\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 error: \"error\",\n};\n\nexport const SCREEN_RECORDER_STATUS = {\n media_aborted: \"media_aborted\",\n permission_denied: \"permission_denied\",\n no_specified_media_found: \"no_specified_media_found\",\n media_in_use: \"media_in_use\",\n invalid_media_constraints: \"invalid_media_constraints\",\n no_chrome_flags_set: \"no_chrome_flags_set\",\n recorder_error: \"recorder_error\",\n idle: \"idle\",\n acquiring_media: \"acquiring_media\",\n media_acquired: \"media_acquired\",\n restarting: \"restarting\",\n recording: \"recording\",\n stopping: \"stopping\",\n stopped: \"stopped\",\n paused: \"paused\",\n};\n\nexport const SCREEN_RECORDER_ERROR = {\n MicPermissionDenied: \"mic_permission_denied\",\n AbortError: \"media_aborted\",\n NotAllowedError: \"permission_denied\",\n NotFoundError: \"no_specified_media_found\",\n NotReadableError: \"media_in_use\",\n OverconstrainedError: \"invalid_media_constraints\",\n TypeError: \"no_chrome_flags_set\",\n None: \"\",\n NoRecorder: \"recorder_error\",\n UnSupportedBrowser: \"unsupported_browser\",\n FailedToStart: \"failed_to_start\",\n CreateRecordingError: \"create_recording_error\",\n InsufficientData: \"insufficient_data\",\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 onReUploadFromDisk: \"onReUploadFromDisk\",\n onPause: \"onPause\",\n onResume: \"onResume\",\n onCountdownStart: \"onCountdownStart\",\n onCountdown: \"onCountDown\",\n onCountdownEnd: \"onCountdownEnd\",\n onShareSelected: \"onShareSelected\",\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\n// Firefox refuses to start a MediaRecorder on a stream that has both audio and\n// video tracks unless the MIME string declares the audio codec too. Chromium\n// and Safari accept the video-only form and silently pick Opus/AAC. We keep\n// both variants and always prefer the codec-complete ones in\n// getSupportedMimeType so a single code path works across browsers.\nexport const MIME_TYPE = {\n mp4: \"video/mp4\",\n webmH264Opus: \"video/webm;codecs=h264,opus\",\n webmH264: \"video/webm;codecs=h264\",\n webmVp9Opus: \"video/webm;codecs=vp9,opus\",\n webmVp9: \"video/webm;codecs=vp9\",\n webmVp8Opus: \"video/webm;codecs=vp8,opus\",\n webmVp8: \"video/webm;codecs=vp8\",\n webm: \"video/webm\",\n};\n\nexport const START_RECORDING_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-start-sound-2.mp3\";\n\nexport const COUNTDOWN_TICK_SOUND =\n \"https://neeto-record-static-assets.s3.us-east-1.amazonaws.com/recording-tick-sound.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\nexport const MIC_NOT_WORKING_ALERT_TIME = 30;\nexport const MIC_NOT_WORKING_SILENCE_TIMEOUT =\n MIC_NOT_WORKING_ALERT_TIME * 1000;\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","COUNTDOWN_TIME","UPLOAD_EVENT","onComplete","onError","onProgress","UPLOAD_STATUS","uploading","completed","aborting","insufficient_data","error","SCREEN_RECORDER_STATUS","media_aborted","permission_denied","no_specified_media_found","media_in_use","invalid_media_constraints","no_chrome_flags_set","recorder_error","idle","acquiring_media","media_acquired","restarting","recording","stopping","stopped","paused","SCREEN_RECORDER_ERROR","MicPermissionDenied","AbortError","NotAllowedError","NotFoundError","NotReadableError","OverconstrainedError","TypeError","None","NoRecorder","UnSupportedBrowser","FailedToStart","CreateRecordingError","InsufficientData","SCREEN_RECORDER_EVENT","onStart","onStop","onDiscard","onDataAvailable","onDiscardDuringCountdown","onRestart","onReUpload","onReUploadFromDisk","onPause","onResume","onCountdownStart","onCountdown","onCountdownEnd","onShareSelected","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","webmH264Opus","webmH264","webmVp9Opus","webmVp9","webmVp8Opus","webmVp8","webm","START_RECORDING_SOUND","COUNTDOWN_TICK_SOUND","STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND","RECORDING_LIMIT_REACHED_WARNING_SOUND","RECORDING_TIME_LIMIT_FREE_PLAN","RECORDING_TIME_LIMIT_PRO_PLAN","MIC_NOT_WORKING_ALERT_TIME","MIC_NOT_WORKING_SILENCE_TIMEOUT"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["node_modules/@babel/runtime/helpers/esm/typeof.js","src/constants.js"],"sourcesContent":["function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","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 COUNTDOWN_TIME = 3;\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 error: \"error\",\n};\n\nexport const SCREEN_RECORDER_STATUS = {\n media_aborted: \"media_aborted\",\n permission_denied: \"permission_denied\",\n no_specified_media_found: \"no_specified_media_found\",\n media_in_use: \"media_in_use\",\n invalid_media_constraints: \"invalid_media_constraints\",\n no_chrome_flags_set: \"no_chrome_flags_set\",\n recorder_error: \"recorder_error\",\n idle: \"idle\",\n acquiring_media: \"acquiring_media\",\n media_acquired: \"media_acquired\",\n restarting: \"restarting\",\n recording: \"recording\",\n stopping: \"stopping\",\n stopped: \"stopped\",\n paused: \"paused\",\n};\n\nexport const SCREEN_RECORDER_ERROR = {\n MicPermissionDenied: \"mic_permission_denied\",\n AbortError: \"media_aborted\",\n NotAllowedError: \"permission_denied\",\n NotFoundError: \"no_specified_media_found\",\n NotReadableError: \"media_in_use\",\n OverconstrainedError: \"invalid_media_constraints\",\n TypeError: \"no_chrome_flags_set\",\n None: \"\",\n NoRecorder: \"recorder_error\",\n UnSupportedBrowser: \"unsupported_browser\",\n FailedToStart: \"failed_to_start\",\n CreateRecordingError: \"create_recording_error\",\n InsufficientData: \"insufficient_data\",\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 onReUploadFromDisk: \"onReUploadFromDisk\",\n onPause: \"onPause\",\n onResume: \"onResume\",\n onCountdownStart: \"onCountdownStart\",\n onCountdown: \"onCountDown\",\n onCountdownEnd: \"onCountdownEnd\",\n onShareSelected: \"onShareSelected\",\n};\n\nexport const TOTAL_RETRIES = 15;\nexport const ABORT_UPLOAD_RETRIES = 2;\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\n// Firefox refuses to start a MediaRecorder on a stream that has both audio and\n// video tracks unless the MIME string declares the audio codec too. Chromium\n// and Safari accept the video-only form and silently pick Opus/AAC. We keep\n// both variants and always prefer the codec-complete ones in\n// getSupportedMimeType so a single code path works across browsers.\nexport const MIME_TYPE = {\n mp4: \"video/mp4\",\n webmH264Opus: \"video/webm;codecs=h264,opus\",\n webmH264: \"video/webm;codecs=h264\",\n webmVp9Opus: \"video/webm;codecs=vp9,opus\",\n webmVp9: \"video/webm;codecs=vp9\",\n webmVp8Opus: \"video/webm;codecs=vp8,opus\",\n webmVp8: \"video/webm;codecs=vp8\",\n webm: \"video/webm\",\n};\n\nexport const START_RECORDING_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-start-sound-2.mp3\";\n\nexport const COUNTDOWN_TICK_SOUND =\n \"https://neeto-record-static-assets.s3.us-east-1.amazonaws.com/recording-tick-sound.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\nexport const MIC_NOT_WORKING_ALERT_TIME = 30;\nexport const MIC_NOT_WORKING_SILENCE_TIMEOUT =\n MIC_NOT_WORKING_ALERT_TIME * 1000;\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","COUNTDOWN_TIME","UPLOAD_EVENT","onComplete","onError","onProgress","UPLOAD_STATUS","uploading","completed","aborting","insufficient_data","error","SCREEN_RECORDER_STATUS","media_aborted","permission_denied","no_specified_media_found","media_in_use","invalid_media_constraints","no_chrome_flags_set","recorder_error","idle","acquiring_media","media_acquired","restarting","recording","stopping","stopped","paused","SCREEN_RECORDER_ERROR","MicPermissionDenied","AbortError","NotAllowedError","NotFoundError","NotReadableError","OverconstrainedError","TypeError","None","NoRecorder","UnSupportedBrowser","FailedToStart","CreateRecordingError","InsufficientData","SCREEN_RECORDER_EVENT","onStart","onStop","onDiscard","onDataAvailable","onDiscardDuringCountdown","onRestart","onReUpload","onReUploadFromDisk","onPause","onResume","onCountdownStart","onCountdown","onCountdownEnd","onShareSelected","TOTAL_RETRIES","ABORT_UPLOAD_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","webmH264Opus","webmH264","webmVp9Opus","webmVp9","webmVp8Opus","webmVp8","webm","START_RECORDING_SOUND","COUNTDOWN_TICK_SOUND","STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND","RECORDING_LIMIT_REACHED_WARNING_SOUND","RECORDING_TIME_LIMIT_FREE_PLAN","RECORDING_TIME_LIMIT_PRO_PLAN","MIC_NOT_WORKING_ALERT_TIME","MIC_NOT_WORKING_SILENCE_TIMEOUT"],"mappings":"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","x_google_ignoreList":[0]}
|
package/core.js
CHANGED
|
@@ -549,16 +549,92 @@ function v4(options, buf, offset) {
|
|
|
549
549
|
return unsafeStringify(rnds);
|
|
550
550
|
}
|
|
551
551
|
|
|
552
|
-
var
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
552
|
+
var ONE_SECOND_IN_MILLISECONDS = 1000;
|
|
553
|
+
var HALF_A_SECOND_IN_MILLISECONDS = 500;
|
|
554
|
+
var TWO_HUNDRED_MILLISECONDS = 200;
|
|
555
|
+
var ONE_MINUTE_IN_MILLISECONDS = 60 * ONE_SECOND_IN_MILLISECONDS;
|
|
556
|
+
var ONE_SECOND = 1;
|
|
557
|
+
var SCREEN_RECORDER_STATUS = {
|
|
558
|
+
media_aborted: "media_aborted",
|
|
559
|
+
permission_denied: "permission_denied",
|
|
560
|
+
no_specified_media_found: "no_specified_media_found",
|
|
561
|
+
media_in_use: "media_in_use",
|
|
562
|
+
invalid_media_constraints: "invalid_media_constraints",
|
|
563
|
+
no_chrome_flags_set: "no_chrome_flags_set",
|
|
564
|
+
recorder_error: "recorder_error",
|
|
565
|
+
idle: "idle",
|
|
566
|
+
acquiring_media: "acquiring_media",
|
|
567
|
+
media_acquired: "media_acquired",
|
|
568
|
+
restarting: "restarting",
|
|
569
|
+
recording: "recording",
|
|
570
|
+
stopping: "stopping",
|
|
571
|
+
stopped: "stopped",
|
|
572
|
+
paused: "paused"
|
|
558
573
|
};
|
|
559
|
-
var
|
|
560
|
-
|
|
574
|
+
var SCREEN_RECORDER_ERROR = {
|
|
575
|
+
MicPermissionDenied: "mic_permission_denied",
|
|
576
|
+
AbortError: "media_aborted",
|
|
577
|
+
NotAllowedError: "permission_denied",
|
|
578
|
+
NotFoundError: "no_specified_media_found",
|
|
579
|
+
NotReadableError: "media_in_use",
|
|
580
|
+
OverconstrainedError: "invalid_media_constraints",
|
|
581
|
+
TypeError: "no_chrome_flags_set",
|
|
582
|
+
None: "",
|
|
583
|
+
NoRecorder: "recorder_error",
|
|
584
|
+
UnSupportedBrowser: "unsupported_browser",
|
|
585
|
+
FailedToStart: "failed_to_start",
|
|
586
|
+
CreateRecordingError: "create_recording_error",
|
|
587
|
+
InsufficientData: "insufficient_data"
|
|
561
588
|
};
|
|
589
|
+
var SCREEN_RECORDER_EVENT = {
|
|
590
|
+
onStart: "onStart",
|
|
591
|
+
onStop: "onStop",
|
|
592
|
+
onDiscard: "onDiscard",
|
|
593
|
+
onDataAvailable: "onDataAvailable",
|
|
594
|
+
onDiscardDuringCountdown: "onDiscardDuringCountdown",
|
|
595
|
+
onRestart: "onRestart",
|
|
596
|
+
onReUpload: "onReUpload",
|
|
597
|
+
onReUploadFromDisk: "onReUploadFromDisk",
|
|
598
|
+
onPause: "onPause",
|
|
599
|
+
onResume: "onResume",
|
|
600
|
+
onCountdownStart: "onCountdownStart",
|
|
601
|
+
onCountdown: "onCountDown",
|
|
602
|
+
onCountdownEnd: "onCountdownEnd",
|
|
603
|
+
onShareSelected: "onShareSelected"
|
|
604
|
+
};
|
|
605
|
+
var TOTAL_RETRIES = 15;
|
|
606
|
+
var ABORT_UPLOAD_RETRIES = 2;
|
|
607
|
+
var INITIAL_RETRY_DELAY = 4000;
|
|
608
|
+
var MAX_RETRY_DELAY = 16000;
|
|
609
|
+
var DEFAULT_RETRY_CONFIG = {
|
|
610
|
+
retries: TOTAL_RETRIES,
|
|
611
|
+
retryDelay: INITIAL_RETRY_DELAY,
|
|
612
|
+
retryableStatuses: []
|
|
613
|
+
};
|
|
614
|
+
var HAS_CHROME_NAMESPACE = (typeof chrome === "undefined" ? "undefined" : _typeof$1(chrome)) === "object";
|
|
615
|
+
var IS_EXTENSION = HAS_CHROME_NAMESPACE && isNotNil(chrome.extension);
|
|
616
|
+
var IS_SAFARI = platform.name === "Safari";
|
|
617
|
+
|
|
618
|
+
// Firefox refuses to start a MediaRecorder on a stream that has both audio and
|
|
619
|
+
// video tracks unless the MIME string declares the audio codec too. Chromium
|
|
620
|
+
// and Safari accept the video-only form and silently pick Opus/AAC. We keep
|
|
621
|
+
// both variants and always prefer the codec-complete ones in
|
|
622
|
+
// getSupportedMimeType so a single code path works across browsers.
|
|
623
|
+
var MIME_TYPE = {
|
|
624
|
+
mp4: "video/mp4",
|
|
625
|
+
webmH264Opus: "video/webm;codecs=h264,opus",
|
|
626
|
+
webmH264: "video/webm;codecs=h264",
|
|
627
|
+
webmVp9Opus: "video/webm;codecs=vp9,opus",
|
|
628
|
+
webmVp9: "video/webm;codecs=vp9",
|
|
629
|
+
webmVp8Opus: "video/webm;codecs=vp8,opus",
|
|
630
|
+
webmVp8: "video/webm;codecs=vp8",
|
|
631
|
+
webm: "video/webm"
|
|
632
|
+
};
|
|
633
|
+
var START_RECORDING_SOUND = "https://neeto-record-static-assets.s3.amazonaws.com/recording-start-sound-2.mp3";
|
|
634
|
+
var COUNTDOWN_TICK_SOUND = "https://neeto-record-static-assets.s3.us-east-1.amazonaws.com/recording-tick-sound.mp3";
|
|
635
|
+
var STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND = "https://neeto-record-static-assets.s3.amazonaws.com/recording-end-sound.mp3";
|
|
636
|
+
var RECORDING_LIMIT_REACHED_WARNING_SOUND = "https://neeto-record-static-assets.s3.amazonaws.com/recording-warning-sound.mp3";
|
|
637
|
+
var RECORDING_TIME_LIMIT_FREE_PLAN = 15 * ONE_MINUTE_IN_MILLISECONDS; // 15 minutes
|
|
562
638
|
|
|
563
639
|
function _setPrototypeOf(t, e) {
|
|
564
640
|
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
|
|
@@ -644,92 +720,6 @@ function _wrapNativeSuper(t) {
|
|
|
644
720
|
}, _wrapNativeSuper(t);
|
|
645
721
|
}
|
|
646
722
|
|
|
647
|
-
var ONE_SECOND_IN_MILLISECONDS = 1000;
|
|
648
|
-
var HALF_A_SECOND_IN_MILLISECONDS = 500;
|
|
649
|
-
var TWO_HUNDRED_MILLISECONDS = 200;
|
|
650
|
-
var ONE_MINUTE_IN_MILLISECONDS = 60 * ONE_SECOND_IN_MILLISECONDS;
|
|
651
|
-
var ONE_SECOND = 1;
|
|
652
|
-
var SCREEN_RECORDER_STATUS = {
|
|
653
|
-
media_aborted: "media_aborted",
|
|
654
|
-
permission_denied: "permission_denied",
|
|
655
|
-
no_specified_media_found: "no_specified_media_found",
|
|
656
|
-
media_in_use: "media_in_use",
|
|
657
|
-
invalid_media_constraints: "invalid_media_constraints",
|
|
658
|
-
no_chrome_flags_set: "no_chrome_flags_set",
|
|
659
|
-
recorder_error: "recorder_error",
|
|
660
|
-
idle: "idle",
|
|
661
|
-
acquiring_media: "acquiring_media",
|
|
662
|
-
media_acquired: "media_acquired",
|
|
663
|
-
restarting: "restarting",
|
|
664
|
-
recording: "recording",
|
|
665
|
-
stopping: "stopping",
|
|
666
|
-
stopped: "stopped",
|
|
667
|
-
paused: "paused"
|
|
668
|
-
};
|
|
669
|
-
var SCREEN_RECORDER_ERROR = {
|
|
670
|
-
MicPermissionDenied: "mic_permission_denied",
|
|
671
|
-
AbortError: "media_aborted",
|
|
672
|
-
NotAllowedError: "permission_denied",
|
|
673
|
-
NotFoundError: "no_specified_media_found",
|
|
674
|
-
NotReadableError: "media_in_use",
|
|
675
|
-
OverconstrainedError: "invalid_media_constraints",
|
|
676
|
-
TypeError: "no_chrome_flags_set",
|
|
677
|
-
None: "",
|
|
678
|
-
NoRecorder: "recorder_error",
|
|
679
|
-
UnSupportedBrowser: "unsupported_browser",
|
|
680
|
-
FailedToStart: "failed_to_start",
|
|
681
|
-
CreateRecordingError: "create_recording_error",
|
|
682
|
-
InsufficientData: "insufficient_data"
|
|
683
|
-
};
|
|
684
|
-
var SCREEN_RECORDER_EVENT = {
|
|
685
|
-
onStart: "onStart",
|
|
686
|
-
onStop: "onStop",
|
|
687
|
-
onDiscard: "onDiscard",
|
|
688
|
-
onDataAvailable: "onDataAvailable",
|
|
689
|
-
onDiscardDuringCountdown: "onDiscardDuringCountdown",
|
|
690
|
-
onRestart: "onRestart",
|
|
691
|
-
onReUpload: "onReUpload",
|
|
692
|
-
onReUploadFromDisk: "onReUploadFromDisk",
|
|
693
|
-
onPause: "onPause",
|
|
694
|
-
onResume: "onResume",
|
|
695
|
-
onCountdownStart: "onCountdownStart",
|
|
696
|
-
onCountdown: "onCountDown",
|
|
697
|
-
onCountdownEnd: "onCountdownEnd",
|
|
698
|
-
onShareSelected: "onShareSelected"
|
|
699
|
-
};
|
|
700
|
-
var TOTAL_RETRIES = 15;
|
|
701
|
-
var INITIAL_RETRY_DELAY = 4000;
|
|
702
|
-
var MAX_RETRY_DELAY = 16000;
|
|
703
|
-
var DEFAULT_RETRY_CONFIG = {
|
|
704
|
-
retries: TOTAL_RETRIES,
|
|
705
|
-
retryDelay: INITIAL_RETRY_DELAY,
|
|
706
|
-
retryableStatuses: []
|
|
707
|
-
};
|
|
708
|
-
var HAS_CHROME_NAMESPACE = (typeof chrome === "undefined" ? "undefined" : _typeof$1(chrome)) === "object";
|
|
709
|
-
var IS_EXTENSION = HAS_CHROME_NAMESPACE && isNotNil(chrome.extension);
|
|
710
|
-
var IS_SAFARI = platform.name === "Safari";
|
|
711
|
-
|
|
712
|
-
// Firefox refuses to start a MediaRecorder on a stream that has both audio and
|
|
713
|
-
// video tracks unless the MIME string declares the audio codec too. Chromium
|
|
714
|
-
// and Safari accept the video-only form and silently pick Opus/AAC. We keep
|
|
715
|
-
// both variants and always prefer the codec-complete ones in
|
|
716
|
-
// getSupportedMimeType so a single code path works across browsers.
|
|
717
|
-
var MIME_TYPE = {
|
|
718
|
-
mp4: "video/mp4",
|
|
719
|
-
webmH264Opus: "video/webm;codecs=h264,opus",
|
|
720
|
-
webmH264: "video/webm;codecs=h264",
|
|
721
|
-
webmVp9Opus: "video/webm;codecs=vp9,opus",
|
|
722
|
-
webmVp9: "video/webm;codecs=vp9",
|
|
723
|
-
webmVp8Opus: "video/webm;codecs=vp8,opus",
|
|
724
|
-
webmVp8: "video/webm;codecs=vp8",
|
|
725
|
-
webm: "video/webm"
|
|
726
|
-
};
|
|
727
|
-
var START_RECORDING_SOUND = "https://neeto-record-static-assets.s3.amazonaws.com/recording-start-sound-2.mp3";
|
|
728
|
-
var COUNTDOWN_TICK_SOUND = "https://neeto-record-static-assets.s3.us-east-1.amazonaws.com/recording-tick-sound.mp3";
|
|
729
|
-
var STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND = "https://neeto-record-static-assets.s3.amazonaws.com/recording-end-sound.mp3";
|
|
730
|
-
var RECORDING_LIMIT_REACHED_WARNING_SOUND = "https://neeto-record-static-assets.s3.amazonaws.com/recording-warning-sound.mp3";
|
|
731
|
-
var RECORDING_TIME_LIMIT_FREE_PLAN = 15 * ONE_MINUTE_IN_MILLISECONDS; // 15 minutes
|
|
732
|
-
|
|
733
723
|
var sleep = function sleep(delay) {
|
|
734
724
|
return new Promise(function (resolve) {
|
|
735
725
|
return setTimeout(resolve, delay);
|
|
@@ -810,6 +800,20 @@ var buildRetryableApi = function buildRetryableApi(apiConnector) {
|
|
|
810
800
|
}();
|
|
811
801
|
};
|
|
812
802
|
|
|
803
|
+
var create$2 = function create(_ref) {
|
|
804
|
+
var recordingId = _ref.recordingId,
|
|
805
|
+
payload = _ref.payload;
|
|
806
|
+
return axios.post("/api/v1/recordings/".concat(recordingId, "/abort_upload"), {
|
|
807
|
+
abortUpload: payload
|
|
808
|
+
});
|
|
809
|
+
};
|
|
810
|
+
var retryableCreate$2 = buildRetryableApi(create$2, {
|
|
811
|
+
retries: ABORT_UPLOAD_RETRIES
|
|
812
|
+
});
|
|
813
|
+
var abortUploadApi = {
|
|
814
|
+
create: retryableCreate$2
|
|
815
|
+
};
|
|
816
|
+
|
|
813
817
|
var create$1 = function create(_ref) {
|
|
814
818
|
var recordingId = _ref.recordingId,
|
|
815
819
|
payload = _ref.payload,
|
|
@@ -1320,7 +1324,8 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1320
1324
|
return Promise.resolve(_classPrivateFieldGet(_this, _completeUploadPromise))["catch"](function () {});
|
|
1321
1325
|
case 16:
|
|
1322
1326
|
_classPrivateFieldGet(_this, _abortController).abort();
|
|
1323
|
-
_context2.
|
|
1327
|
+
_context2.prev = 17;
|
|
1328
|
+
_context2.next = 20;
|
|
1324
1329
|
return abortUploadApi.create({
|
|
1325
1330
|
recordingId: recordingId,
|
|
1326
1331
|
payload: {
|
|
@@ -1329,29 +1334,41 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1329
1334
|
logs: sessionLogs
|
|
1330
1335
|
}
|
|
1331
1336
|
});
|
|
1332
|
-
case
|
|
1337
|
+
case 20:
|
|
1333
1338
|
_classPrivateFieldGet(_this, _logger$1).info("abortUpload -> success", {
|
|
1334
1339
|
durationMs: Date.now() - abortStartedAt
|
|
1335
1340
|
});
|
|
1341
|
+
_context2.next = 26;
|
|
1342
|
+
break;
|
|
1343
|
+
case 23:
|
|
1344
|
+
_context2.prev = 23;
|
|
1345
|
+
_context2.t0 = _context2["catch"](17);
|
|
1346
|
+
// After retries are exhausted, proceed with local cleanup so the
|
|
1347
|
+
// caller can navigate away / close tab. The server-side upload
|
|
1348
|
+
// will be cleaned up by S3 lifecycle rules.
|
|
1349
|
+
_classPrivateFieldGet(_this, _logger$1).error("abortUpload -> mark as discarded failed", _objectSpread$2(_objectSpread$2({}, _classPrivateFieldGet(_this, _serializeUploadError).call(_this, _context2.t0)), {}, {
|
|
1350
|
+
durationMs: Date.now() - abortStartedAt
|
|
1351
|
+
}));
|
|
1352
|
+
case 26:
|
|
1336
1353
|
_classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onAbort);
|
|
1337
1354
|
_classPrivateFieldSet(_this, _unUploadedChunks, []);
|
|
1338
1355
|
_classPrivateFieldSet(_this, _partNumber, 1);
|
|
1339
1356
|
_classPrivateFieldSet(_this, _s3PartUploadPromises, []);
|
|
1340
1357
|
_classPrivateFieldSet(_this, _status2, "");
|
|
1341
1358
|
_classPrivateFieldSet(_this, _abortController, null);
|
|
1342
|
-
_context2.next =
|
|
1359
|
+
_context2.next = 37;
|
|
1343
1360
|
break;
|
|
1344
|
-
case
|
|
1345
|
-
_context2.prev =
|
|
1346
|
-
_context2.
|
|
1347
|
-
_classPrivateFieldGet(_this, _logger$1).error("abortUpload -> failed", _objectSpread$2(_objectSpread$2({}, _classPrivateFieldGet(_this, _serializeUploadError).call(_this, _context2.
|
|
1361
|
+
case 34:
|
|
1362
|
+
_context2.prev = 34;
|
|
1363
|
+
_context2.t1 = _context2["catch"](3);
|
|
1364
|
+
_classPrivateFieldGet(_this, _logger$1).error("abortUpload -> failed", _objectSpread$2(_objectSpread$2({}, _classPrivateFieldGet(_this, _serializeUploadError).call(_this, _context2.t1)), {}, {
|
|
1348
1365
|
durationMs: Date.now() - abortStartedAt
|
|
1349
1366
|
}));
|
|
1350
|
-
case
|
|
1367
|
+
case 37:
|
|
1351
1368
|
case "end":
|
|
1352
1369
|
return _context2.stop();
|
|
1353
1370
|
}
|
|
1354
|
-
}, _callee2, null, [[3,
|
|
1371
|
+
}, _callee2, null, [[3, 34], [17, 23]]);
|
|
1355
1372
|
})));
|
|
1356
1373
|
_defineProperty(this, "resetState", function () {
|
|
1357
1374
|
_classPrivateFieldSet(_this, _recordingId, "");
|
|
@@ -1719,6 +1736,7 @@ var _fireCallbacks = /*#__PURE__*/new WeakMap();
|
|
|
1719
1736
|
var _onRecordingStart = /*#__PURE__*/new WeakMap();
|
|
1720
1737
|
var _onRecordingActive = /*#__PURE__*/new WeakMap();
|
|
1721
1738
|
var _onRecordingStop = /*#__PURE__*/new WeakMap();
|
|
1739
|
+
var _queryMicPermissionState = /*#__PURE__*/new WeakMap();
|
|
1722
1740
|
var _serializeError = /*#__PURE__*/new WeakMap();
|
|
1723
1741
|
var _summarizeStream = /*#__PURE__*/new WeakMap();
|
|
1724
1742
|
var _summarizeRecorderState = /*#__PURE__*/new WeakMap();
|
|
@@ -2171,7 +2189,7 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
2171
2189
|
writable: true,
|
|
2172
2190
|
value: function () {
|
|
2173
2191
|
var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
2174
|
-
var acquireStartedAt, stream, constraints, displayMediaStartedAt, audioConfig, micStartedAt, audioStream, workletUrl, workletStartedAt, audioContext, audioStreamSource, destinationStream, noiseSuppressorNode, finalStream, _audioContext, desktopAudio, microphoneAudio, combinedAudio;
|
|
2192
|
+
var acquireStartedAt, micState, stream, constraints, displayMediaStartedAt, audioConfig, micStartedAt, audioStream, workletUrl, workletStartedAt, audioContext, audioStreamSource, destinationStream, noiseSuppressorNode, finalStream, _audioContext, desktopAudio, microphoneAudio, combinedAudio;
|
|
2175
2193
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
2176
2194
|
while (1) switch (_context2.prev = _context2.next) {
|
|
2177
2195
|
case 0:
|
|
@@ -2185,37 +2203,58 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
2185
2203
|
_classPrivateFieldGet(_this, _store).setState({
|
|
2186
2204
|
status: SCREEN_RECORDER_STATUS.acquiring_media
|
|
2187
2205
|
});
|
|
2188
|
-
|
|
2206
|
+
if (!(_classPrivateFieldGet(_this, _audio) && !_classPrivateFieldGet(_this, _videoStream))) {
|
|
2207
|
+
_context2.next = 11;
|
|
2208
|
+
break;
|
|
2209
|
+
}
|
|
2210
|
+
_context2.next = 6;
|
|
2211
|
+
return _classPrivateFieldGet(_this, _queryMicPermissionState).call(_this);
|
|
2212
|
+
case 6:
|
|
2213
|
+
micState = _context2.sent;
|
|
2214
|
+
if (!(micState === "denied")) {
|
|
2215
|
+
_context2.next = 11;
|
|
2216
|
+
break;
|
|
2217
|
+
}
|
|
2218
|
+
_classPrivateFieldGet(_this, _logger).warn("acquireMediaStream -> mic permission denied, skipping screen prompt", {
|
|
2219
|
+
micState: micState
|
|
2220
|
+
});
|
|
2221
|
+
_classPrivateFieldGet(_this, _store).setState({
|
|
2222
|
+
error: SCREEN_RECORDER_ERROR.MicPermissionDenied,
|
|
2223
|
+
status: SCREEN_RECORDER_STATUS.idle
|
|
2224
|
+
});
|
|
2225
|
+
return _context2.abrupt("return");
|
|
2226
|
+
case 11:
|
|
2227
|
+
_context2.prev = 11;
|
|
2189
2228
|
if (!_classPrivateFieldGet(_this, _videoStream)) {
|
|
2190
|
-
_context2.next =
|
|
2229
|
+
_context2.next = 17;
|
|
2191
2230
|
break;
|
|
2192
2231
|
}
|
|
2193
2232
|
_classPrivateFieldGet(_this, _logger).info("acquireMediaStream -> using injected videoStream", _classPrivateFieldGet(_this, _summarizeStream).call(_this, _classPrivateFieldGet(_this, _videoStream)));
|
|
2194
2233
|
stream = _classPrivateFieldGet(_this, _videoStream);
|
|
2195
|
-
_context2.next =
|
|
2234
|
+
_context2.next = 25;
|
|
2196
2235
|
break;
|
|
2197
|
-
case
|
|
2236
|
+
case 17:
|
|
2198
2237
|
constraints = {
|
|
2199
2238
|
video: _classPrivateFieldGet(_this, _video),
|
|
2200
2239
|
audio: _classPrivateFieldGet(_this, _recordSystemAudio)
|
|
2201
2240
|
};
|
|
2202
2241
|
_classPrivateFieldGet(_this, _logger).info("acquireMediaStream -> getDisplayMedia constraints", constraints);
|
|
2203
2242
|
displayMediaStartedAt = Date.now();
|
|
2204
|
-
_context2.next =
|
|
2243
|
+
_context2.next = 22;
|
|
2205
2244
|
return window.navigator.mediaDevices.getDisplayMedia(constraints);
|
|
2206
|
-
case
|
|
2245
|
+
case 22:
|
|
2207
2246
|
stream = _context2.sent;
|
|
2208
2247
|
_classPrivateFieldGet(_this, _logger).info("acquireMediaStream -> getDisplayMedia resolved", {
|
|
2209
2248
|
durationMs: Date.now() - displayMediaStartedAt,
|
|
2210
2249
|
stream: _classPrivateFieldGet(_this, _summarizeStream).call(_this, stream)
|
|
2211
2250
|
});
|
|
2212
2251
|
_classPrivateFieldGet(_this, _fireCallbacks).call(_this, SCREEN_RECORDER_EVENT.onShareSelected);
|
|
2213
|
-
case
|
|
2252
|
+
case 25:
|
|
2214
2253
|
if (!_classPrivateFieldGet(_this, _audio)) {
|
|
2215
|
-
_context2.next =
|
|
2254
|
+
_context2.next = 68;
|
|
2216
2255
|
break;
|
|
2217
2256
|
}
|
|
2218
|
-
_context2.prev =
|
|
2257
|
+
_context2.prev = 26;
|
|
2219
2258
|
audioConfig = {
|
|
2220
2259
|
audio: _objectSpread(_objectSpread({
|
|
2221
2260
|
echoCancellation: false
|
|
@@ -2230,9 +2269,9 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
2230
2269
|
_context2.t0 = _classPrivateFieldSet;
|
|
2231
2270
|
_context2.t1 = _this;
|
|
2232
2271
|
_context2.t2 = _micAudioStream;
|
|
2233
|
-
_context2.next =
|
|
2272
|
+
_context2.next = 35;
|
|
2234
2273
|
return window.navigator.mediaDevices.getUserMedia(audioConfig);
|
|
2235
|
-
case
|
|
2274
|
+
case 35:
|
|
2236
2275
|
_context2.t3 = _context2.sent;
|
|
2237
2276
|
(0, _context2.t0)(_context2.t1, _context2.t2, _context2.t3);
|
|
2238
2277
|
_classPrivateFieldGet(_this, _logger).info("acquireMediaStream -> mic acquired", {
|
|
@@ -2242,10 +2281,10 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
2242
2281
|
audioStream = addGainNode(_classPrivateFieldGet(_this, _micAudioStream), 1.75); // Increase volume by 50%
|
|
2243
2282
|
_classPrivateFieldSet(_this, _audioStream, audioStream);
|
|
2244
2283
|
if (!_classPrivateFieldGet(_this, _enableNoiseCancellation)) {
|
|
2245
|
-
_context2.next =
|
|
2284
|
+
_context2.next = 60;
|
|
2246
2285
|
break;
|
|
2247
2286
|
}
|
|
2248
|
-
_context2.prev =
|
|
2287
|
+
_context2.prev = 41;
|
|
2249
2288
|
workletUrl = IS_EXTENSION ?
|
|
2250
2289
|
// eslint-disable-next-line no-undef
|
|
2251
2290
|
chrome.runtime.getURL("public/NoiseSuppressorWorklet.js") : "NoiseSuppressorWorklet.js";
|
|
@@ -2254,9 +2293,9 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
2254
2293
|
});
|
|
2255
2294
|
workletStartedAt = Date.now();
|
|
2256
2295
|
audioContext = new AudioContext();
|
|
2257
|
-
_context2.next =
|
|
2296
|
+
_context2.next = 48;
|
|
2258
2297
|
return audioContext.audioWorklet.addModule(workletUrl);
|
|
2259
|
-
case
|
|
2298
|
+
case 48:
|
|
2260
2299
|
audioStreamSource = audioContext.createMediaStreamSource(audioStream);
|
|
2261
2300
|
destinationStream = audioContext.createMediaStreamDestination();
|
|
2262
2301
|
noiseSuppressorNode = new AudioWorkletNode(audioContext, "nn-suppressor-processor");
|
|
@@ -2266,26 +2305,38 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
2266
2305
|
_classPrivateFieldGet(_this, _logger).info("acquireMediaStream -> noise suppressor wired up", {
|
|
2267
2306
|
durationMs: Date.now() - workletStartedAt
|
|
2268
2307
|
});
|
|
2269
|
-
_context2.next =
|
|
2308
|
+
_context2.next = 60;
|
|
2270
2309
|
break;
|
|
2271
|
-
case
|
|
2272
|
-
_context2.prev =
|
|
2273
|
-
_context2.t4 = _context2["catch"](
|
|
2310
|
+
case 57:
|
|
2311
|
+
_context2.prev = 57;
|
|
2312
|
+
_context2.t4 = _context2["catch"](41);
|
|
2274
2313
|
_classPrivateFieldGet(_this, _logger).error("acquireMediaStream -> failed to load audio worklet", _classPrivateFieldGet(_this, _serializeError).call(_this, _context2.t4));
|
|
2275
|
-
case
|
|
2276
|
-
_context2.next =
|
|
2314
|
+
case 60:
|
|
2315
|
+
_context2.next = 68;
|
|
2277
2316
|
break;
|
|
2278
|
-
case
|
|
2279
|
-
_context2.prev =
|
|
2280
|
-
_context2.t5 = _context2["catch"](
|
|
2317
|
+
case 62:
|
|
2318
|
+
_context2.prev = 62;
|
|
2319
|
+
_context2.t5 = _context2["catch"](26);
|
|
2281
2320
|
// Mic access can fail independently of screen capture (OS-level
|
|
2282
|
-
// block, no device, deviceId mismatch).
|
|
2283
|
-
//
|
|
2284
|
-
//
|
|
2285
|
-
|
|
2321
|
+
// block, no device, deviceId mismatch). Stop the screen stream and
|
|
2322
|
+
// surface a mic-only error so the user sees the proper callout
|
|
2323
|
+
// ("doesn't have access to your microphone" with Grant / I don't
|
|
2324
|
+
// need audio actions) instead of being misrouted to the screen
|
|
2325
|
+
// permission denied flow.
|
|
2326
|
+
_classPrivateFieldGet(_this, _logger).warn("acquireMediaStream -> mic unavailable", _classPrivateFieldGet(_this, _serializeError).call(_this, _context2.t5), {
|
|
2286
2327
|
audioConfigRequested: _classPrivateFieldGet(_this, _audio)
|
|
2287
2328
|
});
|
|
2288
|
-
|
|
2329
|
+
if (!_classPrivateFieldGet(_this, _videoStream)) {
|
|
2330
|
+
stream.getTracks().forEach(function (track) {
|
|
2331
|
+
return track.stop();
|
|
2332
|
+
});
|
|
2333
|
+
}
|
|
2334
|
+
_classPrivateFieldGet(_this, _store).setState({
|
|
2335
|
+
error: SCREEN_RECORDER_ERROR.MicPermissionDenied,
|
|
2336
|
+
status: SCREEN_RECORDER_STATUS.idle
|
|
2337
|
+
});
|
|
2338
|
+
return _context2.abrupt("return");
|
|
2339
|
+
case 68:
|
|
2289
2340
|
// Event triggered when the user clicks on the stop sharing overlay button
|
|
2290
2341
|
stream.getVideoTracks()[0].addEventListener("ended", function () {
|
|
2291
2342
|
var _classPrivateFieldGet15;
|
|
@@ -2335,11 +2386,11 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
2335
2386
|
totalDurationMs: Date.now() - acquireStartedAt,
|
|
2336
2387
|
finalStream: _classPrivateFieldGet(_this, _summarizeStream).call(_this, _classPrivateFieldGet(_this, _mediaStream))
|
|
2337
2388
|
});
|
|
2338
|
-
_context2.next =
|
|
2389
|
+
_context2.next = 82;
|
|
2339
2390
|
break;
|
|
2340
|
-
case
|
|
2341
|
-
_context2.prev =
|
|
2342
|
-
_context2.t6 = _context2["catch"](
|
|
2391
|
+
case 78:
|
|
2392
|
+
_context2.prev = 78;
|
|
2393
|
+
_context2.t6 = _context2["catch"](11);
|
|
2343
2394
|
_classPrivateFieldGet(_this, _logger).error("acquireMediaStream -> error", _classPrivateFieldGet(_this, _serializeError).call(_this, _context2.t6), {
|
|
2344
2395
|
totalDurationMs: Date.now() - acquireStartedAt,
|
|
2345
2396
|
hasAudio: Boolean(_classPrivateFieldGet(_this, _audio)),
|
|
@@ -2362,11 +2413,11 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
2362
2413
|
status: SCREEN_RECORDER_STATUS.idle
|
|
2363
2414
|
});
|
|
2364
2415
|
}
|
|
2365
|
-
case
|
|
2416
|
+
case 82:
|
|
2366
2417
|
case "end":
|
|
2367
2418
|
return _context2.stop();
|
|
2368
2419
|
}
|
|
2369
|
-
}, _callee2, null, [[
|
|
2420
|
+
}, _callee2, null, [[11, 78], [26, 62], [41, 57]]);
|
|
2370
2421
|
}));
|
|
2371
2422
|
function value() {
|
|
2372
2423
|
return _value.apply(this, arguments);
|
|
@@ -2445,6 +2496,41 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
2445
2496
|
}
|
|
2446
2497
|
}
|
|
2447
2498
|
});
|
|
2499
|
+
_classPrivateFieldInitSpec(this, _queryMicPermissionState, {
|
|
2500
|
+
writable: true,
|
|
2501
|
+
value: function () {
|
|
2502
|
+
var _value2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
2503
|
+
var result;
|
|
2504
|
+
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
2505
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
2506
|
+
case 0:
|
|
2507
|
+
_context3.prev = 0;
|
|
2508
|
+
_context3.next = 3;
|
|
2509
|
+
return window.navigator.permissions.query({
|
|
2510
|
+
name: "microphone"
|
|
2511
|
+
});
|
|
2512
|
+
case 3:
|
|
2513
|
+
result = _context3.sent;
|
|
2514
|
+
return _context3.abrupt("return", result.state);
|
|
2515
|
+
case 7:
|
|
2516
|
+
_context3.prev = 7;
|
|
2517
|
+
_context3.t0 = _context3["catch"](0);
|
|
2518
|
+
// Permissions API or the "microphone" descriptor is unsupported
|
|
2519
|
+
// (e.g. Safari). Fall through to the live getUserMedia attempt.
|
|
2520
|
+
_classPrivateFieldGet(_this, _logger).info("queryMicPermissionState -> unsupported", _classPrivateFieldGet(_this, _serializeError).call(_this, _context3.t0));
|
|
2521
|
+
return _context3.abrupt("return", "prompt");
|
|
2522
|
+
case 11:
|
|
2523
|
+
case "end":
|
|
2524
|
+
return _context3.stop();
|
|
2525
|
+
}
|
|
2526
|
+
}, _callee3, null, [[0, 7]]);
|
|
2527
|
+
}));
|
|
2528
|
+
function value() {
|
|
2529
|
+
return _value2.apply(this, arguments);
|
|
2530
|
+
}
|
|
2531
|
+
return value;
|
|
2532
|
+
}()
|
|
2533
|
+
});
|
|
2448
2534
|
_classPrivateFieldInitSpec(this, _serializeError, {
|
|
2449
2535
|
writable: true,
|
|
2450
2536
|
value: function value(error) {
|