@bigbinary/neeto-media-recorder 2.7.34 → 2.7.36
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 +215 -143
- package/core.js.map +1 -1
- package/index.js +293 -12
- 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);
|
|
@@ -755,54 +745,74 @@ var buildRetryableApi = function buildRetryableApi(apiConnector) {
|
|
|
755
745
|
retryDelay = _ref$retryDelay === void 0 ? INITIAL_RETRY_DELAY : _ref$retryDelay;
|
|
756
746
|
return /*#__PURE__*/function () {
|
|
757
747
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(apiConnectorArgs) {
|
|
758
|
-
var _config$signal;
|
|
748
|
+
var _config$signal, _config$signal2;
|
|
759
749
|
var _apiConnectorArgs$con, config, remainingAttempts, shouldCancelRetries, _error$config, _error$response, _error$response2;
|
|
760
750
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
761
751
|
while (1) switch (_context.prev = _context.next) {
|
|
762
752
|
case 0:
|
|
763
|
-
_apiConnectorArgs$con = apiConnectorArgs.config, config = _apiConnectorArgs$con === void 0 ? null : _apiConnectorArgs$con;
|
|
753
|
+
_apiConnectorArgs$con = apiConnectorArgs.config, config = _apiConnectorArgs$con === void 0 ? null : _apiConnectorArgs$con; // If the signal is already aborted before we start, addEventListener("abort")
|
|
754
|
+
// will never fire — so we'd otherwise run the full retry/backoff schedule
|
|
755
|
+
// against an aborted request.
|
|
756
|
+
if (!(config !== null && config !== void 0 && (_config$signal = config.signal) !== null && _config$signal !== void 0 && _config$signal.aborted)) {
|
|
757
|
+
_context.next = 3;
|
|
758
|
+
break;
|
|
759
|
+
}
|
|
760
|
+
throw new RetryError("Request cancelled or request retries exhausted");
|
|
761
|
+
case 3:
|
|
764
762
|
remainingAttempts = retries + 1;
|
|
765
763
|
shouldCancelRetries = false;
|
|
766
|
-
config === null || config === void 0 ? void 0 : (_config$
|
|
764
|
+
config === null || config === void 0 ? void 0 : (_config$signal2 = config.signal) === null || _config$signal2 === void 0 ? void 0 : _config$signal2.addEventListener("abort", function () {
|
|
767
765
|
shouldCancelRetries = true;
|
|
768
766
|
});
|
|
769
|
-
case
|
|
767
|
+
case 6:
|
|
770
768
|
if (!(remainingAttempts-- && !shouldCancelRetries)) {
|
|
771
|
-
_context.next =
|
|
769
|
+
_context.next = 30;
|
|
772
770
|
break;
|
|
773
771
|
}
|
|
774
|
-
_context.prev =
|
|
775
|
-
_context.next =
|
|
772
|
+
_context.prev = 7;
|
|
773
|
+
_context.next = 10;
|
|
776
774
|
return apiConnector(apiConnectorArgs);
|
|
777
|
-
case
|
|
775
|
+
case 10:
|
|
778
776
|
return _context.abrupt("return", _context.sent);
|
|
779
|
-
case
|
|
780
|
-
_context.prev =
|
|
781
|
-
_context.t0 = _context["catch"](
|
|
777
|
+
case 13:
|
|
778
|
+
_context.prev = 13;
|
|
779
|
+
_context.t0 = _context["catch"](7);
|
|
780
|
+
if (!axios.isCancel(_context.t0)) {
|
|
781
|
+
_context.next = 17;
|
|
782
|
+
break;
|
|
783
|
+
}
|
|
784
|
+
throw _context.t0;
|
|
785
|
+
case 17:
|
|
782
786
|
logger.error("buildRetryableApi -> Failed to connect, remainingAttempts:", _context.t0 === null || _context.t0 === void 0 ? void 0 : (_error$config = _context.t0.config) === null || _error$config === void 0 ? void 0 : _error$config.url, (_error$response = _context.t0.response) === null || _error$response === void 0 ? void 0 : _error$response.status, remainingAttempts);
|
|
783
787
|
if (!(((_error$response2 = _context.t0.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.status) !== 401 && remainingAttempts > 0)) {
|
|
784
|
-
_context.next =
|
|
788
|
+
_context.next = 27;
|
|
785
789
|
break;
|
|
786
790
|
}
|
|
787
791
|
logger.info("buildRetryableApi -> Failed to connect -> retry in:", retryDelay);
|
|
788
|
-
_context.next =
|
|
792
|
+
_context.next = 22;
|
|
789
793
|
return sleep(retryDelay);
|
|
790
|
-
case
|
|
794
|
+
case 22:
|
|
791
795
|
retryDelay = min(retryDelay * 2, MAX_RETRY_DELAY);
|
|
792
|
-
|
|
796
|
+
if (!shouldCancelRetries) {
|
|
797
|
+
_context.next = 25;
|
|
798
|
+
break;
|
|
799
|
+
}
|
|
800
|
+
throw _context.t0;
|
|
801
|
+
case 25:
|
|
802
|
+
_context.next = 28;
|
|
793
803
|
break;
|
|
794
|
-
case
|
|
804
|
+
case 27:
|
|
795
805
|
throw _context.t0;
|
|
796
|
-
case
|
|
797
|
-
_context.next =
|
|
806
|
+
case 28:
|
|
807
|
+
_context.next = 6;
|
|
798
808
|
break;
|
|
799
|
-
case
|
|
809
|
+
case 30:
|
|
800
810
|
throw new RetryError("Request cancelled or request retries exhausted");
|
|
801
|
-
case
|
|
811
|
+
case 31:
|
|
802
812
|
case "end":
|
|
803
813
|
return _context.stop();
|
|
804
814
|
}
|
|
805
|
-
}, _callee, null, [[
|
|
815
|
+
}, _callee, null, [[7, 13]]);
|
|
806
816
|
}));
|
|
807
817
|
return function (_x) {
|
|
808
818
|
return _ref2.apply(this, arguments);
|
|
@@ -810,6 +820,20 @@ var buildRetryableApi = function buildRetryableApi(apiConnector) {
|
|
|
810
820
|
}();
|
|
811
821
|
};
|
|
812
822
|
|
|
823
|
+
var create$2 = function create(_ref) {
|
|
824
|
+
var recordingId = _ref.recordingId,
|
|
825
|
+
payload = _ref.payload;
|
|
826
|
+
return axios.post("/api/v1/recordings/".concat(recordingId, "/abort_upload"), {
|
|
827
|
+
abortUpload: payload
|
|
828
|
+
});
|
|
829
|
+
};
|
|
830
|
+
var retryableCreate$2 = buildRetryableApi(create$2, {
|
|
831
|
+
retries: ABORT_UPLOAD_RETRIES
|
|
832
|
+
});
|
|
833
|
+
var abortUploadApi = {
|
|
834
|
+
create: retryableCreate$2
|
|
835
|
+
};
|
|
836
|
+
|
|
813
837
|
var create$1 = function create(_ref) {
|
|
814
838
|
var recordingId = _ref.recordingId,
|
|
815
839
|
payload = _ref.payload,
|
|
@@ -1003,10 +1027,15 @@ var _serializeUploadError = /*#__PURE__*/new WeakMap();
|
|
|
1003
1027
|
var _uploadChunkToS = /*#__PURE__*/new WeakMap();
|
|
1004
1028
|
var _getCurrentUnUploadedBlob = /*#__PURE__*/new WeakMap();
|
|
1005
1029
|
var _isRecordingNotSet = /*#__PURE__*/new WeakMap();
|
|
1030
|
+
var _isTerminalStatus = /*#__PURE__*/new WeakMap();
|
|
1006
1031
|
var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
1007
1032
|
function MultipartS3Uploader() {
|
|
1008
1033
|
var _this = this;
|
|
1009
1034
|
_classCallCheck(this, MultipartS3Uploader);
|
|
1035
|
+
_classPrivateFieldInitSpec$1(this, _isTerminalStatus, {
|
|
1036
|
+
get: _get_isTerminalStatus,
|
|
1037
|
+
set: void 0
|
|
1038
|
+
});
|
|
1010
1039
|
_classPrivateFieldInitSpec$1(this, _isRecordingNotSet, {
|
|
1011
1040
|
get: _get_isRecordingNotSet,
|
|
1012
1041
|
set: void 0
|
|
@@ -1093,6 +1122,19 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1093
1122
|
_classPrivateFieldSet(_this, _abortController, new AbortController());
|
|
1094
1123
|
});
|
|
1095
1124
|
_defineProperty(this, "push", function (data) {
|
|
1125
|
+
// Once an uploader has been aborted, any further chunks belong to a
|
|
1126
|
+
// recording that no longer exists server-side. Drop them so we don't
|
|
1127
|
+
// spawn new part uploads against an aborted multipart upload (which
|
|
1128
|
+
// would otherwise loop on retries until the network gives up).
|
|
1129
|
+
if (_classPrivateFieldGet(_this, _isTerminalStatus)) {
|
|
1130
|
+
_classPrivateFieldGet(_this, _logger$1).warn("push -> uploader is no longer active, dropping chunk", {
|
|
1131
|
+
chunkBytes: data === null || data === void 0 ? void 0 : data.size,
|
|
1132
|
+
status: _classPrivateFieldGet(_this, _status),
|
|
1133
|
+
recordingId: _classPrivateFieldGet(_this, _recordingId)
|
|
1134
|
+
});
|
|
1135
|
+
_classPrivateFieldSet(_this, _unUploadedChunks, []);
|
|
1136
|
+
return;
|
|
1137
|
+
}
|
|
1096
1138
|
if (data.size > 0) {
|
|
1097
1139
|
_classPrivateFieldGet(_this, _unUploadedChunks).push(data);
|
|
1098
1140
|
}
|
|
@@ -1276,6 +1318,8 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1276
1318
|
var forceAbort,
|
|
1277
1319
|
sessionLogs,
|
|
1278
1320
|
abortStartedAt,
|
|
1321
|
+
phase,
|
|
1322
|
+
_classPrivateFieldGet3,
|
|
1279
1323
|
recordingId,
|
|
1280
1324
|
uploadId,
|
|
1281
1325
|
_args2 = arguments;
|
|
@@ -1285,24 +1329,25 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1285
1329
|
forceAbort = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : false;
|
|
1286
1330
|
sessionLogs = _args2.length > 1 ? _args2[1] : undefined;
|
|
1287
1331
|
abortStartedAt = Date.now();
|
|
1288
|
-
|
|
1332
|
+
phase = "init";
|
|
1333
|
+
_context2.prev = 4;
|
|
1289
1334
|
if (!(_this.status === UPLOAD_STATUS.aborting && !forceAbort)) {
|
|
1290
|
-
_context2.next =
|
|
1335
|
+
_context2.next = 8;
|
|
1291
1336
|
break;
|
|
1292
1337
|
}
|
|
1293
1338
|
_classPrivateFieldGet(_this, _logger$1).info("abortUpload -> already aborting", {
|
|
1294
1339
|
forceAbort: forceAbort
|
|
1295
1340
|
});
|
|
1296
1341
|
return _context2.abrupt("return");
|
|
1297
|
-
case
|
|
1342
|
+
case 8:
|
|
1298
1343
|
_classPrivateFieldSet(_this, _status2, UPLOAD_STATUS.aborting);
|
|
1299
1344
|
if (!_classPrivateFieldGet(_this, _isRecordingNotSet)) {
|
|
1300
|
-
_context2.next =
|
|
1345
|
+
_context2.next = 12;
|
|
1301
1346
|
break;
|
|
1302
1347
|
}
|
|
1303
1348
|
_classPrivateFieldGet(_this, _logger$1).info("abortUpload -> not initialized");
|
|
1304
1349
|
return _context2.abrupt("return");
|
|
1305
|
-
case
|
|
1350
|
+
case 12:
|
|
1306
1351
|
recordingId = _classPrivateFieldGet(_this, _recordingId);
|
|
1307
1352
|
uploadId = _classPrivateFieldGet(_this, _uploadId);
|
|
1308
1353
|
_classPrivateFieldGet(_this, _logger$1).info("abortUpload -> begin", {
|
|
@@ -1310,17 +1355,25 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1310
1355
|
uploadId: uploadId,
|
|
1311
1356
|
forceAbort: forceAbort,
|
|
1312
1357
|
partsStarted: _classPrivateFieldGet(_this, _partNumber) - 1,
|
|
1313
|
-
pendingS3ChunkUploads: _classPrivateFieldGet(_this, _pendingS3ChunkUploads).length
|
|
1358
|
+
pendingS3ChunkUploads: _classPrivateFieldGet(_this, _pendingS3ChunkUploads).length,
|
|
1359
|
+
hasAbortController: Boolean(_classPrivateFieldGet(_this, _abortController))
|
|
1314
1360
|
});
|
|
1315
1361
|
|
|
1316
1362
|
// Don't let a rejected completeUpload stop us from issuing the abort API
|
|
1317
1363
|
// call below — we still need to release the upload server-side.
|
|
1364
|
+
phase = "awaitCompleteUploadPromise";
|
|
1318
1365
|
// eslint-disable-next-line promise/prefer-await-to-then
|
|
1319
|
-
_context2.next =
|
|
1366
|
+
_context2.next = 18;
|
|
1320
1367
|
return Promise.resolve(_classPrivateFieldGet(_this, _completeUploadPromise))["catch"](function () {});
|
|
1321
|
-
case
|
|
1322
|
-
|
|
1323
|
-
|
|
1368
|
+
case 18:
|
|
1369
|
+
// Guard against a missing AbortController. If abortUpload is somehow
|
|
1370
|
+
// invoked twice, the second call would hit a null #abortController and
|
|
1371
|
+
// throw a TypeError into the outer catch — masking the real failure.
|
|
1372
|
+
phase = "abortInflight";
|
|
1373
|
+
(_classPrivateFieldGet3 = _classPrivateFieldGet(_this, _abortController)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.abort();
|
|
1374
|
+
phase = "abortUploadApi";
|
|
1375
|
+
_context2.prev = 21;
|
|
1376
|
+
_context2.next = 24;
|
|
1324
1377
|
return abortUploadApi.create({
|
|
1325
1378
|
recordingId: recordingId,
|
|
1326
1379
|
payload: {
|
|
@@ -1329,29 +1382,45 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1329
1382
|
logs: sessionLogs
|
|
1330
1383
|
}
|
|
1331
1384
|
});
|
|
1332
|
-
case
|
|
1385
|
+
case 24:
|
|
1333
1386
|
_classPrivateFieldGet(_this, _logger$1).info("abortUpload -> success", {
|
|
1334
1387
|
durationMs: Date.now() - abortStartedAt
|
|
1335
1388
|
});
|
|
1389
|
+
_context2.next = 30;
|
|
1390
|
+
break;
|
|
1391
|
+
case 27:
|
|
1392
|
+
_context2.prev = 27;
|
|
1393
|
+
_context2.t0 = _context2["catch"](21);
|
|
1394
|
+
// After retries are exhausted, proceed with local cleanup so the
|
|
1395
|
+
// caller can navigate away / close tab. The server-side upload
|
|
1396
|
+
// will be cleaned up by S3 lifecycle rules.
|
|
1397
|
+
_classPrivateFieldGet(_this, _logger$1).error("abortUpload -> mark as discarded failed", _objectSpread$2(_objectSpread$2({}, _classPrivateFieldGet(_this, _serializeUploadError).call(_this, _context2.t0)), {}, {
|
|
1398
|
+
durationMs: Date.now() - abortStartedAt
|
|
1399
|
+
}));
|
|
1400
|
+
case 30:
|
|
1401
|
+
phase = "fireOnAbort";
|
|
1336
1402
|
_classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onAbort);
|
|
1403
|
+
phase = "cleanup";
|
|
1337
1404
|
_classPrivateFieldSet(_this, _unUploadedChunks, []);
|
|
1338
1405
|
_classPrivateFieldSet(_this, _partNumber, 1);
|
|
1339
1406
|
_classPrivateFieldSet(_this, _s3PartUploadPromises, []);
|
|
1340
1407
|
_classPrivateFieldSet(_this, _status2, "");
|
|
1341
1408
|
_classPrivateFieldSet(_this, _abortController, null);
|
|
1342
|
-
_context2.next =
|
|
1409
|
+
_context2.next = 43;
|
|
1343
1410
|
break;
|
|
1344
|
-
case
|
|
1345
|
-
_context2.prev =
|
|
1346
|
-
_context2.
|
|
1347
|
-
_classPrivateFieldGet(_this, _logger$1).error("abortUpload -> failed", _objectSpread$2(_objectSpread$2({
|
|
1411
|
+
case 40:
|
|
1412
|
+
_context2.prev = 40;
|
|
1413
|
+
_context2.t1 = _context2["catch"](4);
|
|
1414
|
+
_classPrivateFieldGet(_this, _logger$1).error("abortUpload -> failed", _objectSpread$2(_objectSpread$2({
|
|
1415
|
+
phase: phase
|
|
1416
|
+
}, _classPrivateFieldGet(_this, _serializeUploadError).call(_this, _context2.t1)), {}, {
|
|
1348
1417
|
durationMs: Date.now() - abortStartedAt
|
|
1349
1418
|
}));
|
|
1350
|
-
case
|
|
1419
|
+
case 43:
|
|
1351
1420
|
case "end":
|
|
1352
1421
|
return _context2.stop();
|
|
1353
1422
|
}
|
|
1354
|
-
}, _callee2, null, [[
|
|
1423
|
+
}, _callee2, null, [[4, 40], [21, 27]]);
|
|
1355
1424
|
})));
|
|
1356
1425
|
_defineProperty(this, "resetState", function () {
|
|
1357
1426
|
_classPrivateFieldSet(_this, _recordingId, "");
|
|
@@ -1367,22 +1436,22 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1367
1436
|
_classPrivateFieldSet(_this, _status2, "");
|
|
1368
1437
|
});
|
|
1369
1438
|
_defineProperty(this, "addCallback", function (event, callback) {
|
|
1370
|
-
var
|
|
1371
|
-
var existingCallbacks = (
|
|
1439
|
+
var _classPrivateFieldGet4;
|
|
1440
|
+
var existingCallbacks = (_classPrivateFieldGet4 = _classPrivateFieldGet(_this, _callbacks$1)[event]) !== null && _classPrivateFieldGet4 !== void 0 ? _classPrivateFieldGet4 : [];
|
|
1372
1441
|
_classPrivateFieldSet(_this, _callbacks$1, _objectSpread$2(_objectSpread$2({}, _classPrivateFieldGet(_this, _callbacks$1)), {}, _defineProperty({}, event, [].concat(_toConsumableArray(existingCallbacks), [callback]))));
|
|
1373
1442
|
});
|
|
1374
1443
|
_defineProperty(this, "removeCallback", function (event, callback) {
|
|
1375
|
-
var
|
|
1376
|
-
var registeredCallbacks = (
|
|
1444
|
+
var _classPrivateFieldGet5;
|
|
1445
|
+
var registeredCallbacks = (_classPrivateFieldGet5 = _classPrivateFieldGet(_this, _callbacks$1)[event]) !== null && _classPrivateFieldGet5 !== void 0 ? _classPrivateFieldGet5 : [];
|
|
1377
1446
|
var updatedCallbacks = registeredCallbacks.filter(isNot(callback));
|
|
1378
1447
|
_classPrivateFieldSet(_this, _callbacks$1, _objectSpread$2(_objectSpread$2({}, _classPrivateFieldGet(_this, _callbacks$1)), {}, _defineProperty({}, event, updatedCallbacks)));
|
|
1379
1448
|
});
|
|
1380
1449
|
_classPrivateFieldInitSpec$1(this, _fireCallbacks$1, {
|
|
1381
1450
|
writable: true,
|
|
1382
1451
|
value: function value(event) {
|
|
1383
|
-
var
|
|
1452
|
+
var _classPrivateFieldGet6;
|
|
1384
1453
|
var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
1385
|
-
(
|
|
1454
|
+
(_classPrivateFieldGet6 = _classPrivateFieldGet(_this, _callbacks$1)[event]) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.forEach(function (callback) {
|
|
1386
1455
|
callback.apply(void 0, _toConsumableArray(args));
|
|
1387
1456
|
});
|
|
1388
1457
|
}
|
|
@@ -1432,7 +1501,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1432
1501
|
}
|
|
1433
1502
|
});
|
|
1434
1503
|
_defineProperty(this, "generatePreSignedUrl", function (partNumber) {
|
|
1435
|
-
var
|
|
1504
|
+
var _classPrivateFieldGet7;
|
|
1436
1505
|
return partPresignedUrlApi.create({
|
|
1437
1506
|
recordingId: _classPrivateFieldGet(_this, _recordingId),
|
|
1438
1507
|
payload: {
|
|
@@ -1441,7 +1510,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1441
1510
|
isMp4: _classPrivateFieldGet(_this, _mimeType$1).includes(MIME_TYPE.mp4)
|
|
1442
1511
|
},
|
|
1443
1512
|
config: {
|
|
1444
|
-
signal: (
|
|
1513
|
+
signal: (_classPrivateFieldGet7 = _classPrivateFieldGet(_this, _abortController)) === null || _classPrivateFieldGet7 === void 0 ? void 0 : _classPrivateFieldGet7.signal
|
|
1445
1514
|
}
|
|
1446
1515
|
});
|
|
1447
1516
|
});
|
|
@@ -1449,7 +1518,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1449
1518
|
writable: true,
|
|
1450
1519
|
value: function () {
|
|
1451
1520
|
var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(chunks) {
|
|
1452
|
-
var _this$partNumber,
|
|
1521
|
+
var _this$partNumber, _classPrivateFieldGet8;
|
|
1453
1522
|
var partNumber, partBlob, partBytes, presignStartedAt, presignedUrl, _yield$_this$generate, uploadStartedAt, s3PartUploadPromise;
|
|
1454
1523
|
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
1455
1524
|
while (1) switch (_context3.prev = _context3.next) {
|
|
@@ -1503,7 +1572,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1503
1572
|
"Content-Type": _classPrivateFieldGet(_this, _mimeType$1)
|
|
1504
1573
|
},
|
|
1505
1574
|
includeMetadataInResponse: true,
|
|
1506
|
-
signal: (
|
|
1575
|
+
signal: (_classPrivateFieldGet8 = _classPrivateFieldGet(_this, _abortController)) === null || _classPrivateFieldGet8 === void 0 ? void 0 : _classPrivateFieldGet8.signal,
|
|
1507
1576
|
onUploadProgress: function onUploadProgress(e) {
|
|
1508
1577
|
_classPrivateFieldGet(_this, _uploadProgress)[partNumber] = {
|
|
1509
1578
|
uploaded: e.loaded,
|
|
@@ -1604,6 +1673,9 @@ function _set_status(status) {
|
|
|
1604
1673
|
function _get_isRecordingNotSet() {
|
|
1605
1674
|
return isEmpty(_classPrivateFieldGet(this, _uploadId) + _classPrivateFieldGet(this, _recordingId));
|
|
1606
1675
|
}
|
|
1676
|
+
function _get_isTerminalStatus() {
|
|
1677
|
+
return _classPrivateFieldGet(this, _status) === UPLOAD_STATUS.aborting || _classPrivateFieldGet(this, _status) === UPLOAD_STATUS.completed || _classPrivateFieldGet(this, _status) === UPLOAD_STATUS.error;
|
|
1678
|
+
}
|
|
1607
1679
|
var multipartS3Uploader = new MultipartS3Uploader();
|
|
1608
1680
|
var getMultipartS3Uploader = function getMultipartS3Uploader() {
|
|
1609
1681
|
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|