mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 12:37:53 +00:00
1 line
22 KiB
JSON
1 line
22 KiB
JSON
{"ast":null,"code":"import _asyncToGenerator from \"C:/Users/eudes.inacio/GabineteDigital/gabinete-digital-fo/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport getBlobDuration from 'get-blob-duration';\nimport { alreadyRecordingError, couldNotQueryPermissionStatusError, deviceCannotVoiceRecordError, emptyRecordingError, failedToFetchRecordingError, failedToRecordError, failureResponse, missingPermissionError, recordingHasNotStartedError, successResponse } from './predefined-web-responses';\n// these mime types will be checked one by one in order until one of them is found to be supported by the current browser\nconst possibleMimeTypes = ['audio/aac', 'audio/webm;codecs=opus', 'audio/mp4', 'audio/webm', 'audio/ogg;codecs=opus'];\nconst neverResolvingPromise = () => new Promise(() => undefined);\nexport class VoiceRecorderImpl {\n constructor() {\n this.mediaRecorder = null;\n this.chunks = [];\n this.pendingResult = neverResolvingPromise();\n }\n static canDeviceVoiceRecord() {\n return _asyncToGenerator(function* () {\n var _a;\n if (((_a = navigator === null || navigator === void 0 ? void 0 : navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia) == null || VoiceRecorderImpl.getSupportedMimeType() == null) {\n return failureResponse();\n } else {\n return successResponse();\n }\n })();\n }\n startRecording() {\n var _this = this;\n return _asyncToGenerator(function* () {\n if (_this.mediaRecorder != null) {\n throw alreadyRecordingError();\n }\n const deviceCanRecord = yield VoiceRecorderImpl.canDeviceVoiceRecord();\n if (!deviceCanRecord.value) {\n throw deviceCannotVoiceRecordError();\n }\n const havingPermission = yield VoiceRecorderImpl.hasAudioRecordingPermission().catch(() => successResponse());\n if (!havingPermission.value) {\n throw missingPermissionError();\n }\n navigator.mediaDevices.getUserMedia({\n audio: true\n }).then(_this.onSuccessfullyStartedRecording.bind(_this)).catch(_this.onFailedToStartRecording.bind(_this));\n return successResponse();\n })();\n }\n stopRecording() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n if (_this2.mediaRecorder == null) {\n throw recordingHasNotStartedError();\n }\n try {\n _this2.mediaRecorder.stop();\n _this2.mediaRecorder.stream.getTracks().forEach(track => track.stop());\n return _this2.pendingResult;\n } catch (ignore) {\n throw failedToFetchRecordingError();\n } finally {\n _this2.prepareInstanceForNextOperation();\n }\n })();\n }\n static hasAudioRecordingPermission() {\n return _asyncToGenerator(function* () {\n return navigator.permissions.query({\n name: 'microphone'\n }).then(result => ({\n value: result.state === 'granted'\n })).catch(() => {\n throw couldNotQueryPermissionStatusError();\n });\n })();\n }\n static requestAudioRecordingPermission() {\n return _asyncToGenerator(function* () {\n const havingPermission = yield VoiceRecorderImpl.hasAudioRecordingPermission().catch(() => failureResponse());\n if (havingPermission.value) {\n return successResponse();\n }\n return navigator.mediaDevices.getUserMedia({\n audio: true\n }).then(() => successResponse()).catch(() => failureResponse());\n })();\n }\n pauseRecording() {\n if (this.mediaRecorder == null) {\n throw recordingHasNotStartedError();\n } else if (this.mediaRecorder.state === 'recording') {\n this.mediaRecorder.pause();\n return Promise.resolve(successResponse());\n } else {\n return Promise.resolve(failureResponse());\n }\n }\n resumeRecording() {\n if (this.mediaRecorder == null) {\n throw recordingHasNotStartedError();\n } else if (this.mediaRecorder.state === 'paused') {\n this.mediaRecorder.resume();\n return Promise.resolve(successResponse());\n } else {\n return Promise.resolve(failureResponse());\n }\n }\n getCurrentStatus() {\n if (this.mediaRecorder == null) {\n return Promise.resolve({\n status: 'NONE'\n });\n } else if (this.mediaRecorder.state === 'recording') {\n return Promise.resolve({\n status: 'RECORDING'\n });\n } else if (this.mediaRecorder.state === 'paused') {\n return Promise.resolve({\n status: 'PAUSED'\n });\n } else {\n return Promise.resolve({\n status: 'NONE'\n });\n }\n }\n static getSupportedMimeType() {\n if ((MediaRecorder === null || MediaRecorder === void 0 ? void 0 : MediaRecorder.isTypeSupported) == null) return null;\n const foundSupportedType = possibleMimeTypes.find(type => MediaRecorder.isTypeSupported(type));\n return foundSupportedType !== null && foundSupportedType !== void 0 ? foundSupportedType : null;\n }\n onSuccessfullyStartedRecording(stream) {\n var _this3 = this;\n this.pendingResult = new Promise((resolve, reject) => {\n this.mediaRecorder = new MediaRecorder(stream);\n this.mediaRecorder.onerror = () => {\n this.prepareInstanceForNextOperation();\n reject(failedToRecordError());\n };\n this.mediaRecorder.onstop = /*#__PURE__*/_asyncToGenerator(function* () {\n const mimeType = VoiceRecorderImpl.getSupportedMimeType();\n if (mimeType == null) {\n _this3.prepareInstanceForNextOperation();\n reject(failedToFetchRecordingError());\n return;\n }\n const blobVoiceRecording = new Blob(_this3.chunks, {\n 'type': mimeType\n });\n if (blobVoiceRecording.size <= 0) {\n _this3.prepareInstanceForNextOperation();\n reject(emptyRecordingError());\n return;\n }\n const recordDataBase64 = yield VoiceRecorderImpl.blobToBase64(blobVoiceRecording);\n const recordingDuration = yield getBlobDuration(blobVoiceRecording);\n _this3.prepareInstanceForNextOperation();\n resolve({\n value: {\n recordDataBase64,\n mimeType,\n msDuration: recordingDuration * 1000\n }\n });\n });\n this.mediaRecorder.ondataavailable = event => this.chunks.push(event.data);\n this.mediaRecorder.start();\n });\n }\n onFailedToStartRecording() {\n this.prepareInstanceForNextOperation();\n throw failedToRecordError();\n }\n static blobToBase64(blob) {\n return new Promise(resolve => {\n const reader = new FileReader();\n reader.onloadend = () => {\n const recordingResult = String(reader.result);\n const splitResult = recordingResult.split('base64,');\n const toResolve = splitResult.length > 1 ? splitResult[1] : recordingResult;\n resolve(toResolve.trim());\n };\n reader.readAsDataURL(blob);\n });\n }\n prepareInstanceForNextOperation() {\n if (this.mediaRecorder != null && this.mediaRecorder.state === 'recording') {\n try {\n this.mediaRecorder.stop();\n } catch (ignore) {}\n }\n this.pendingResult = neverResolvingPromise();\n this.mediaRecorder = null;\n this.chunks = [];\n }\n}","map":{"version":3,"names":["getBlobDuration","alreadyRecordingError","couldNotQueryPermissionStatusError","deviceCannotVoiceRecordError","emptyRecordingError","failedToFetchRecordingError","failedToRecordError","failureResponse","missingPermissionError","recordingHasNotStartedError","successResponse","possibleMimeTypes","neverResolvingPromise","Promise","undefined","VoiceRecorderImpl","constructor","mediaRecorder","chunks","pendingResult","canDeviceVoiceRecord","_asyncToGenerator","_a","navigator","mediaDevices","getUserMedia","getSupportedMimeType","startRecording","_this","deviceCanRecord","value","havingPermission","hasAudioRecordingPermission","catch","audio","then","onSuccessfullyStartedRecording","bind","onFailedToStartRecording","stopRecording","_this2","stop","stream","getTracks","forEach","track","ignore","prepareInstanceForNextOperation","permissions","query","name","result","state","requestAudioRecordingPermission","pauseRecording","pause","resolve","resumeRecording","resume","getCurrentStatus","status","MediaRecorder","isTypeSupported","foundSupportedType","find","type","_this3","reject","onerror","onstop","mimeType","blobVoiceRecording","Blob","size","recordDataBase64","blobToBase64","recordingDuration","msDuration","ondataavailable","event","push","data","start","blob","reader","FileReader","onloadend","recordingResult","String","splitResult","split","toResolve","length","trim","readAsDataURL"],"sources":["C:/Users/eudes.inacio/GabineteDigital/gabinete-digital-fo/node_modules/capacitor-voice-recorder/dist/esm/VoiceRecorderImpl.js"],"sourcesContent":["import getBlobDuration from 'get-blob-duration';\nimport { alreadyRecordingError, couldNotQueryPermissionStatusError, deviceCannotVoiceRecordError, emptyRecordingError, failedToFetchRecordingError, failedToRecordError, failureResponse, missingPermissionError, recordingHasNotStartedError, successResponse, } from './predefined-web-responses';\n// these mime types will be checked one by one in order until one of them is found to be supported by the current browser\nconst possibleMimeTypes = ['audio/aac', 'audio/webm;codecs=opus', 'audio/mp4', 'audio/webm', 'audio/ogg;codecs=opus'];\nconst neverResolvingPromise = () => new Promise(() => undefined);\nexport class VoiceRecorderImpl {\n constructor() {\n this.mediaRecorder = null;\n this.chunks = [];\n this.pendingResult = neverResolvingPromise();\n }\n static async canDeviceVoiceRecord() {\n var _a;\n if (((_a = navigator === null || navigator === void 0 ? void 0 : navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia) == null || VoiceRecorderImpl.getSupportedMimeType() == null) {\n return failureResponse();\n }\n else {\n return successResponse();\n }\n }\n async startRecording() {\n if (this.mediaRecorder != null) {\n throw alreadyRecordingError();\n }\n const deviceCanRecord = await VoiceRecorderImpl.canDeviceVoiceRecord();\n if (!deviceCanRecord.value) {\n throw deviceCannotVoiceRecordError();\n }\n const havingPermission = await VoiceRecorderImpl.hasAudioRecordingPermission().catch(() => successResponse());\n if (!havingPermission.value) {\n throw missingPermissionError();\n }\n navigator.mediaDevices.getUserMedia({ audio: true })\n .then(this.onSuccessfullyStartedRecording.bind(this))\n .catch(this.onFailedToStartRecording.bind(this));\n return successResponse();\n }\n async stopRecording() {\n if (this.mediaRecorder == null) {\n throw recordingHasNotStartedError();\n }\n try {\n this.mediaRecorder.stop();\n this.mediaRecorder.stream.getTracks().forEach(track => track.stop());\n return this.pendingResult;\n }\n catch (ignore) {\n throw failedToFetchRecordingError();\n }\n finally {\n this.prepareInstanceForNextOperation();\n }\n }\n static async hasAudioRecordingPermission() {\n return navigator.permissions.query({ name: 'microphone' })\n .then(result => ({ value: result.state === 'granted' }))\n .catch(() => {\n throw couldNotQueryPermissionStatusError();\n });\n }\n static async requestAudioRecordingPermission() {\n const havingPermission = await VoiceRecorderImpl.hasAudioRecordingPermission().catch(() => failureResponse());\n if (havingPermission.value) {\n return successResponse();\n }\n return navigator.mediaDevices.getUserMedia({ audio: true })\n .then(() => successResponse())\n .catch(() => failureResponse());\n }\n pauseRecording() {\n if (this.mediaRecorder == null) {\n throw recordingHasNotStartedError();\n }\n else if (this.mediaRecorder.state === 'recording') {\n this.mediaRecorder.pause();\n return Promise.resolve(successResponse());\n }\n else {\n return Promise.resolve(failureResponse());\n }\n }\n resumeRecording() {\n if (this.mediaRecorder == null) {\n throw recordingHasNotStartedError();\n }\n else if (this.mediaRecorder.state === 'paused') {\n this.mediaRecorder.resume();\n return Promise.resolve(successResponse());\n }\n else {\n return Promise.resolve(failureResponse());\n }\n }\n getCurrentStatus() {\n if (this.mediaRecorder == null) {\n return Promise.resolve({ status: 'NONE' });\n }\n else if (this.mediaRecorder.state === 'recording') {\n return Promise.resolve({ status: 'RECORDING' });\n }\n else if (this.mediaRecorder.state === 'paused') {\n return Promise.resolve({ status: 'PAUSED' });\n }\n else {\n return Promise.resolve({ status: 'NONE' });\n }\n }\n static getSupportedMimeType() {\n if ((MediaRecorder === null || MediaRecorder === void 0 ? void 0 : MediaRecorder.isTypeSupported) == null)\n return null;\n const foundSupportedType = possibleMimeTypes.find(type => MediaRecorder.isTypeSupported(type));\n return foundSupportedType !== null && foundSupportedType !== void 0 ? foundSupportedType : null;\n }\n onSuccessfullyStartedRecording(stream) {\n this.pendingResult = new Promise((resolve, reject) => {\n this.mediaRecorder = new MediaRecorder(stream);\n this.mediaRecorder.onerror = () => {\n this.prepareInstanceForNextOperation();\n reject(failedToRecordError());\n };\n this.mediaRecorder.onstop = async () => {\n const mimeType = VoiceRecorderImpl.getSupportedMimeType();\n if (mimeType == null) {\n this.prepareInstanceForNextOperation();\n reject(failedToFetchRecordingError());\n return;\n }\n const blobVoiceRecording = new Blob(this.chunks, { 'type': mimeType });\n if (blobVoiceRecording.size <= 0) {\n this.prepareInstanceForNextOperation();\n reject(emptyRecordingError());\n return;\n }\n const recordDataBase64 = await VoiceRecorderImpl.blobToBase64(blobVoiceRecording);\n const recordingDuration = await getBlobDuration(blobVoiceRecording);\n this.prepareInstanceForNextOperation();\n resolve({ value: { recordDataBase64, mimeType, msDuration: recordingDuration * 1000 } });\n };\n this.mediaRecorder.ondataavailable = (event) => this.chunks.push(event.data);\n this.mediaRecorder.start();\n });\n }\n onFailedToStartRecording() {\n this.prepareInstanceForNextOperation();\n throw failedToRecordError();\n }\n static blobToBase64(blob) {\n return new Promise(resolve => {\n const reader = new FileReader();\n reader.onloadend = () => {\n const recordingResult = String(reader.result);\n const splitResult = recordingResult.split('base64,');\n const toResolve = (splitResult.length > 1) ? splitResult[1] : recordingResult;\n resolve(toResolve.trim());\n };\n reader.readAsDataURL(blob);\n });\n }\n prepareInstanceForNextOperation() {\n if (this.mediaRecorder != null && this.mediaRecorder.state === 'recording') {\n try {\n this.mediaRecorder.stop();\n }\n catch (ignore) {\n }\n }\n this.pendingResult = neverResolvingPromise();\n this.mediaRecorder = null;\n this.chunks = [];\n }\n}\n"],"mappings":"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"},"metadata":{},"sourceType":"module"} |