@siteed/expo-audio-studio 2.18.6 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -297
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +7 -136
- package/CHANGELOG.md +0 -501
- package/LICENSE +0 -21
- package/android/build.gradle +0 -129
- package/android/src/androidTest/assets/chorus.wav +0 -0
- package/android/src/androidTest/assets/jfk.wav +0 -0
- package/android/src/androidTest/assets/osr_us_000_0010_8k.wav +0 -0
- package/android/src/androidTest/assets/recorder_hello_world.wav +0 -0
- package/android/src/androidTest/java/net/siteed/audiostream/AudioProcessorInstrumentedTest.kt +0 -197
- package/android/src/androidTest/java/net/siteed/audiostream/AudioRecorderInstrumentedTest.kt +0 -541
- package/android/src/androidTest/java/net/siteed/audiostream/AudioRecorderPerformanceInstrumentedTest.kt +0 -234
- package/android/src/androidTest/java/net/siteed/audiostream/integration/AudioFocusStrategyIntegrationTest.kt +0 -332
- package/android/src/androidTest/java/net/siteed/audiostream/integration/BufferDurationIntegrationTest.kt +0 -324
- package/android/src/androidTest/java/net/siteed/audiostream/integration/CompressedOnlyOutputTest.kt +0 -253
- package/android/src/androidTest/java/net/siteed/audiostream/integration/DeviceDisconnectionFallbackTest.kt +0 -218
- package/android/src/androidTest/java/net/siteed/audiostream/integration/EventEmissionIntervalTest.kt +0 -120
- package/android/src/androidTest/java/net/siteed/audiostream/integration/M4aFormatTest.kt +0 -345
- package/android/src/androidTest/java/net/siteed/audiostream/integration/OutputControlIntegrationTest.kt +0 -340
- package/android/src/androidTest/java/net/siteed/audiostream/integration/PcmStreamingDurationTest.kt +0 -252
- package/android/src/androidTest/java/net/siteed/audiostream/integration/README.md +0 -95
- package/android/src/androidTest/java/net/siteed/audiostream/integration/run_integration_tests.sh +0 -43
- package/android/src/main/AndroidManifest.xml +0 -30
- package/android/src/main/java/net/siteed/audiostream/AudioAnalysisData.kt +0 -188
- package/android/src/main/java/net/siteed/audiostream/AudioDataEncoder.kt +0 -9
- package/android/src/main/java/net/siteed/audiostream/AudioDeviceManager.kt +0 -1741
- package/android/src/main/java/net/siteed/audiostream/AudioFileHandler.kt +0 -136
- package/android/src/main/java/net/siteed/audiostream/AudioFormatUtils.kt +0 -354
- package/android/src/main/java/net/siteed/audiostream/AudioNotificationsManager.kt +0 -439
- package/android/src/main/java/net/siteed/audiostream/AudioProcessor.kt +0 -2237
- package/android/src/main/java/net/siteed/audiostream/AudioRecorderManager.kt +0 -2141
- package/android/src/main/java/net/siteed/audiostream/AudioRecordingService.kt +0 -167
- package/android/src/main/java/net/siteed/audiostream/AudioTrimmer.kt +0 -1099
- package/android/src/main/java/net/siteed/audiostream/Constants.kt +0 -37
- package/android/src/main/java/net/siteed/audiostream/EventSender.kt +0 -7
- package/android/src/main/java/net/siteed/audiostream/ExpoAudioStreamModule.kt +0 -1113
- package/android/src/main/java/net/siteed/audiostream/FFT.kt +0 -99
- package/android/src/main/java/net/siteed/audiostream/Features.kt +0 -98
- package/android/src/main/java/net/siteed/audiostream/LogUtils.kt +0 -93
- package/android/src/main/java/net/siteed/audiostream/NotificationConfig.kt +0 -72
- package/android/src/main/java/net/siteed/audiostream/PermissionUtils.kt +0 -68
- package/android/src/main/java/net/siteed/audiostream/RecordingActionReceiver.kt +0 -59
- package/android/src/main/java/net/siteed/audiostream/RecordingConfig.kt +0 -257
- package/android/src/main/java/net/siteed/audiostream/WaveformConfig.kt +0 -19
- package/android/src/main/java/net/siteed/audiostream/WaveformRenderer.kt +0 -159
- package/android/src/main/res/drawable/ic_default_action_icon.xml +0 -16
- package/android/src/main/res/drawable/ic_microphone.xml +0 -13
- package/android/src/main/res/drawable/ic_pause.xml +0 -10
- package/android/src/main/res/drawable/ic_play.xml +0 -10
- package/android/src/main/res/drawable/ic_stop.xml +0 -10
- package/android/src/main/res/layout/notification_recording.xml +0 -37
- package/android/src/test/java/net/siteed/audiostream/AudioFileHandlerTest.kt +0 -279
- package/android/src/test/java/net/siteed/audiostream/AudioFocusStrategyTest.kt +0 -249
- package/android/src/test/java/net/siteed/audiostream/AudioFormatTest.kt +0 -151
- package/android/src/test/java/net/siteed/audiostream/AudioFormatUtilsTest.kt +0 -273
- package/android/src/test/java/net/siteed/audiostream/DeviceDisconnectionFallbackUnitTest.kt +0 -140
- package/android/src/test/resources/chorus.wav +0 -0
- package/android/src/test/resources/generate_test_audio.py +0 -94
- package/android/src/test/resources/jfk.wav +0 -0
- package/android/src/test/resources/osr_us_000_0010_8k.wav +0 -0
- package/android/src/test/resources/recorder_hello_world.wav +0 -0
- package/app.plugin.js +0 -3
- package/build/cjs/AudioAnalysis/AudioAnalysis.types.js +0 -4
- package/build/cjs/AudioAnalysis/AudioAnalysis.types.js.map +0 -1
- package/build/cjs/AudioAnalysis/extractAudioAnalysis.js +0 -210
- package/build/cjs/AudioAnalysis/extractAudioAnalysis.js.map +0 -1
- package/build/cjs/AudioAnalysis/extractAudioData.js +0 -21
- package/build/cjs/AudioAnalysis/extractAudioData.js.map +0 -1
- package/build/cjs/AudioAnalysis/extractMelSpectrogram.js +0 -92
- package/build/cjs/AudioAnalysis/extractMelSpectrogram.js.map +0 -1
- package/build/cjs/AudioAnalysis/extractPreview.js +0 -28
- package/build/cjs/AudioAnalysis/extractPreview.js.map +0 -1
- package/build/cjs/AudioAnalysis/extractWaveform.js +0 -18
- package/build/cjs/AudioAnalysis/extractWaveform.js.map +0 -1
- package/build/cjs/AudioDeviceManager.js +0 -689
- package/build/cjs/AudioDeviceManager.js.map +0 -1
- package/build/cjs/AudioRecorder.provider.js +0 -78
- package/build/cjs/AudioRecorder.provider.js.map +0 -1
- package/build/cjs/ExpoAudioStream.native.js +0 -8
- package/build/cjs/ExpoAudioStream.native.js.map +0 -1
- package/build/cjs/ExpoAudioStream.types.js +0 -11
- package/build/cjs/ExpoAudioStream.types.js.map +0 -1
- package/build/cjs/ExpoAudioStream.web.js +0 -708
- package/build/cjs/ExpoAudioStream.web.js.map +0 -1
- package/build/cjs/ExpoAudioStreamModule.js +0 -718
- package/build/cjs/ExpoAudioStreamModule.js.map +0 -1
- package/build/cjs/WebRecorder.web.js +0 -777
- package/build/cjs/WebRecorder.web.js.map +0 -1
- package/build/cjs/constants/platformLimitations.js +0 -99
- package/build/cjs/constants/platformLimitations.js.map +0 -1
- package/build/cjs/constants.js +0 -17
- package/build/cjs/constants.js.map +0 -1
- package/build/cjs/events.js +0 -29
- package/build/cjs/events.js.map +0 -1
- package/build/cjs/hooks/useAudioDevices.js +0 -179
- package/build/cjs/hooks/useAudioDevices.js.map +0 -1
- package/build/cjs/index.js +0 -58
- package/build/cjs/index.js.map +0 -1
- package/build/cjs/trimAudio.js +0 -76
- package/build/cjs/trimAudio.js.map +0 -1
- package/build/cjs/useAudioRecorder.js +0 -518
- package/build/cjs/useAudioRecorder.js.map +0 -1
- package/build/cjs/utils/BlobFix.js +0 -502
- package/build/cjs/utils/BlobFix.js.map +0 -1
- package/build/cjs/utils/audioProcessing.js +0 -136
- package/build/cjs/utils/audioProcessing.js.map +0 -1
- package/build/cjs/utils/cleanNativeOptions.js +0 -22
- package/build/cjs/utils/cleanNativeOptions.js.map +0 -1
- package/build/cjs/utils/concatenateBuffers.js +0 -25
- package/build/cjs/utils/concatenateBuffers.js.map +0 -1
- package/build/cjs/utils/convertPCMToFloat32.js +0 -124
- package/build/cjs/utils/convertPCMToFloat32.js.map +0 -1
- package/build/cjs/utils/crc32.js +0 -52
- package/build/cjs/utils/crc32.js.map +0 -1
- package/build/cjs/utils/encodingToBitDepth.js +0 -17
- package/build/cjs/utils/encodingToBitDepth.js.map +0 -1
- package/build/cjs/utils/getWavFileInfo.js +0 -96
- package/build/cjs/utils/getWavFileInfo.js.map +0 -1
- package/build/cjs/utils/writeWavHeader.js +0 -88
- package/build/cjs/utils/writeWavHeader.js.map +0 -1
- package/build/cjs/workers/InlineFeaturesExtractor.web.js +0 -859
- package/build/cjs/workers/InlineFeaturesExtractor.web.js.map +0 -1
- package/build/cjs/workers/inlineAudioWebWorker.web.js +0 -184
- package/build/cjs/workers/inlineAudioWebWorker.web.js.map +0 -1
- package/build/esm/AudioAnalysis/AudioAnalysis.types.js +0 -3
- package/build/esm/AudioAnalysis/AudioAnalysis.types.js.map +0 -1
- package/build/esm/AudioAnalysis/extractAudioAnalysis.js +0 -202
- package/build/esm/AudioAnalysis/extractAudioAnalysis.js.map +0 -1
- package/build/esm/AudioAnalysis/extractAudioData.js +0 -14
- package/build/esm/AudioAnalysis/extractAudioData.js.map +0 -1
- package/build/esm/AudioAnalysis/extractMelSpectrogram.js +0 -89
- package/build/esm/AudioAnalysis/extractMelSpectrogram.js.map +0 -1
- package/build/esm/AudioAnalysis/extractPreview.js +0 -25
- package/build/esm/AudioAnalysis/extractPreview.js.map +0 -1
- package/build/esm/AudioAnalysis/extractWaveform.js +0 -11
- package/build/esm/AudioAnalysis/extractWaveform.js.map +0 -1
- package/build/esm/AudioDeviceManager.js +0 -682
- package/build/esm/AudioDeviceManager.js.map +0 -1
- package/build/esm/AudioRecorder.provider.js +0 -40
- package/build/esm/AudioRecorder.provider.js.map +0 -1
- package/build/esm/ExpoAudioStream.native.js +0 -6
- package/build/esm/ExpoAudioStream.native.js.map +0 -1
- package/build/esm/ExpoAudioStream.types.js +0 -8
- package/build/esm/ExpoAudioStream.types.js.map +0 -1
- package/build/esm/ExpoAudioStream.web.js +0 -704
- package/build/esm/ExpoAudioStream.web.js.map +0 -1
- package/build/esm/ExpoAudioStreamModule.js +0 -713
- package/build/esm/ExpoAudioStreamModule.js.map +0 -1
- package/build/esm/WebRecorder.web.js +0 -773
- package/build/esm/WebRecorder.web.js.map +0 -1
- package/build/esm/constants/platformLimitations.js +0 -90
- package/build/esm/constants/platformLimitations.js.map +0 -1
- package/build/esm/constants.js +0 -14
- package/build/esm/constants.js.map +0 -1
- package/build/esm/events.js +0 -21
- package/build/esm/events.js.map +0 -1
- package/build/esm/hooks/useAudioDevices.js +0 -176
- package/build/esm/hooks/useAudioDevices.js.map +0 -1
- package/build/esm/index.js +0 -20
- package/build/esm/index.js.map +0 -1
- package/build/esm/trimAudio.js +0 -69
- package/build/esm/trimAudio.js.map +0 -1
- package/build/esm/useAudioRecorder.js +0 -512
- package/build/esm/useAudioRecorder.js.map +0 -1
- package/build/esm/utils/BlobFix.js +0 -498
- package/build/esm/utils/BlobFix.js.map +0 -1
- package/build/esm/utils/audioProcessing.js +0 -133
- package/build/esm/utils/audioProcessing.js.map +0 -1
- package/build/esm/utils/cleanNativeOptions.js +0 -19
- package/build/esm/utils/cleanNativeOptions.js.map +0 -1
- package/build/esm/utils/concatenateBuffers.js +0 -21
- package/build/esm/utils/concatenateBuffers.js.map +0 -1
- package/build/esm/utils/convertPCMToFloat32.js +0 -120
- package/build/esm/utils/convertPCMToFloat32.js.map +0 -1
- package/build/esm/utils/crc32.js +0 -50
- package/build/esm/utils/crc32.js.map +0 -1
- package/build/esm/utils/encodingToBitDepth.js +0 -13
- package/build/esm/utils/encodingToBitDepth.js.map +0 -1
- package/build/esm/utils/getWavFileInfo.js +0 -92
- package/build/esm/utils/getWavFileInfo.js.map +0 -1
- package/build/esm/utils/writeWavHeader.js +0 -84
- package/build/esm/utils/writeWavHeader.js.map +0 -1
- package/build/esm/workers/InlineFeaturesExtractor.web.js +0 -856
- package/build/esm/workers/InlineFeaturesExtractor.web.js.map +0 -1
- package/build/esm/workers/inlineAudioWebWorker.web.js +0 -181
- package/build/esm/workers/inlineAudioWebWorker.web.js.map +0 -1
- package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts +0 -196
- package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts.map +0 -1
- package/build/types/AudioAnalysis/extractAudioAnalysis.d.ts +0 -74
- package/build/types/AudioAnalysis/extractAudioAnalysis.d.ts.map +0 -1
- package/build/types/AudioAnalysis/extractAudioData.d.ts +0 -3
- package/build/types/AudioAnalysis/extractAudioData.d.ts.map +0 -1
- package/build/types/AudioAnalysis/extractMelSpectrogram.d.ts +0 -14
- package/build/types/AudioAnalysis/extractMelSpectrogram.d.ts.map +0 -1
- package/build/types/AudioAnalysis/extractPreview.d.ts +0 -11
- package/build/types/AudioAnalysis/extractPreview.d.ts.map +0 -1
- package/build/types/AudioAnalysis/extractWaveform.d.ts +0 -8
- package/build/types/AudioAnalysis/extractWaveform.d.ts.map +0 -1
- package/build/types/AudioDeviceManager.d.ts +0 -187
- package/build/types/AudioDeviceManager.d.ts.map +0 -1
- package/build/types/AudioRecorder.provider.d.ts +0 -11
- package/build/types/AudioRecorder.provider.d.ts.map +0 -1
- package/build/types/ExpoAudioStream.native.d.ts +0 -3
- package/build/types/ExpoAudioStream.native.d.ts.map +0 -1
- package/build/types/ExpoAudioStream.types.d.ts +0 -738
- package/build/types/ExpoAudioStream.types.d.ts.map +0 -1
- package/build/types/ExpoAudioStream.web.d.ts +0 -96
- package/build/types/ExpoAudioStream.web.d.ts.map +0 -1
- package/build/types/ExpoAudioStreamModule.d.ts +0 -3
- package/build/types/ExpoAudioStreamModule.d.ts.map +0 -1
- package/build/types/WebRecorder.web.d.ts +0 -198
- package/build/types/WebRecorder.web.d.ts.map +0 -1
- package/build/types/constants/platformLimitations.d.ts +0 -40
- package/build/types/constants/platformLimitations.d.ts.map +0 -1
- package/build/types/constants.d.ts +0 -11
- package/build/types/constants.d.ts.map +0 -1
- package/build/types/events.d.ts +0 -26
- package/build/types/events.d.ts.map +0 -1
- package/build/types/hooks/useAudioDevices.d.ts +0 -15
- package/build/types/hooks/useAudioDevices.d.ts.map +0 -1
- package/build/types/index.d.ts +0 -18
- package/build/types/index.d.ts.map +0 -1
- package/build/types/trimAudio.d.ts +0 -25
- package/build/types/trimAudio.d.ts.map +0 -1
- package/build/types/useAudioRecorder.d.ts +0 -22
- package/build/types/useAudioRecorder.d.ts.map +0 -1
- package/build/types/utils/BlobFix.d.ts +0 -9
- package/build/types/utils/BlobFix.d.ts.map +0 -1
- package/build/types/utils/audioProcessing.d.ts +0 -24
- package/build/types/utils/audioProcessing.d.ts.map +0 -1
- package/build/types/utils/cleanNativeOptions.d.ts +0 -15
- package/build/types/utils/cleanNativeOptions.d.ts.map +0 -1
- package/build/types/utils/concatenateBuffers.d.ts +0 -8
- package/build/types/utils/concatenateBuffers.d.ts.map +0 -1
- package/build/types/utils/convertPCMToFloat32.d.ts +0 -13
- package/build/types/utils/convertPCMToFloat32.d.ts.map +0 -1
- package/build/types/utils/crc32.d.ts +0 -7
- package/build/types/utils/crc32.d.ts.map +0 -1
- package/build/types/utils/encodingToBitDepth.d.ts +0 -5
- package/build/types/utils/encodingToBitDepth.d.ts.map +0 -1
- package/build/types/utils/getWavFileInfo.d.ts +0 -26
- package/build/types/utils/getWavFileInfo.d.ts.map +0 -1
- package/build/types/utils/writeWavHeader.d.ts +0 -34
- package/build/types/utils/writeWavHeader.d.ts.map +0 -1
- package/build/types/workers/InlineFeaturesExtractor.web.d.ts +0 -2
- package/build/types/workers/InlineFeaturesExtractor.web.d.ts.map +0 -1
- package/build/types/workers/inlineAudioWebWorker.web.d.ts +0 -2
- package/build/types/workers/inlineAudioWebWorker.web.d.ts.map +0 -1
- package/expo-module.config.json +0 -10
- package/ios/AudioAnalysisData.swift +0 -74
- package/ios/AudioDeviceManager.swift +0 -670
- package/ios/AudioNotificationManager.swift +0 -154
- package/ios/AudioProcessingHelpers.swift +0 -743
- package/ios/AudioProcessor.swift +0 -1151
- package/ios/AudioStreamError.swift +0 -7
- package/ios/AudioStreamManager.swift +0 -2369
- package/ios/AudioStreamManagerDelegate.swift +0 -16
- package/ios/DataPoint.swift +0 -54
- package/ios/DecodingConfig.swift +0 -59
- package/ios/ExpoAudioStream.podspec +0 -33
- package/ios/ExpoAudioStreamModule.swift +0 -1019
- package/ios/ExpoAudioStudioTests/AudioFileHandlerTests.swift +0 -338
- package/ios/ExpoAudioStudioTests/AudioFormatUtilsTests.swift +0 -331
- package/ios/ExpoAudioStudioTests/AudioTestHelpers.swift +0 -130
- package/ios/ExpoAudioStudioTests/CompressedOnlyOutputTests.swift +0 -294
- package/ios/ExpoAudioStudioTests/EventEmissionIntervalTests.swift +0 -105
- package/ios/ExpoAudioStudioTests/Info.plist +0 -22
- package/ios/ExpoAudioStudioTests/README.md +0 -39
- package/ios/ExpoAudioStudioTests/SimpleAudioTest.swift +0 -98
- package/ios/ExpoAudioStudioTests/TestAudioGenerator.swift +0 -75
- package/ios/FFT.swift +0 -62
- package/ios/Features.swift +0 -95
- package/ios/ISSUE_IOS.md +0 -68
- package/ios/Logger.swift +0 -39
- package/ios/NotificationExtension.swift +0 -15
- package/ios/RecordingResult.swift +0 -22
- package/ios/RecordingSettings.swift +0 -308
- package/ios/WaveformExtractor.swift +0 -105
- package/ios/tests/README.md +0 -41
- package/ios/tests/integration/buffer_and_fallback_test.swift +0 -178
- package/ios/tests/integration/buffer_duration_test.swift +0 -185
- package/ios/tests/integration/compressed_only_output_test.swift +0 -271
- package/ios/tests/integration/output_control_test.swift +0 -322
- package/ios/tests/integration/run_integration_tests.sh +0 -37
- package/ios/tests/opus_support_test_macos.swift +0 -154
- package/ios/tests/standalone/audio_processing_test.swift +0 -144
- package/ios/tests/standalone/audio_recording_test.swift +0 -277
- package/ios/tests/standalone/audio_streaming_test.swift +0 -249
- package/ios/tests/standalone/standalone_test.swift +0 -144
- package/plugin/build/index.cjs +0 -194
- package/plugin/build/index.d.cts +0 -22
- package/plugin/build/index.js +0 -194
- package/plugin/src/index.ts +0 -285
- package/plugin/tsconfig.json +0 -10
- package/plugin/tsconfig.tsbuildinfo +0 -1
- package/src/AudioAnalysis/AudioAnalysis.types.ts +0 -224
- package/src/AudioAnalysis/extractAudioAnalysis.ts +0 -344
- package/src/AudioAnalysis/extractAudioData.ts +0 -17
- package/src/AudioAnalysis/extractMelSpectrogram.ts +0 -154
- package/src/AudioAnalysis/extractPreview.ts +0 -34
- package/src/AudioAnalysis/extractWaveform.ts +0 -22
- package/src/AudioDeviceManager.ts +0 -803
- package/src/AudioRecorder.provider.tsx +0 -57
- package/src/ExpoAudioStream.native.ts +0 -6
- package/src/ExpoAudioStream.types.ts +0 -874
- package/src/ExpoAudioStream.web.ts +0 -905
- package/src/ExpoAudioStreamModule.ts +0 -990
- package/src/WebRecorder.web.ts +0 -1005
- package/src/constants/platformLimitations.ts +0 -118
- package/src/constants.ts +0 -18
- package/src/events.ts +0 -60
- package/src/hooks/useAudioDevices.ts +0 -213
- package/src/index.ts +0 -54
- package/src/trimAudio.ts +0 -94
- package/src/types/crc-32.d.ts +0 -9
- package/src/useAudioRecorder.tsx +0 -766
- package/src/utils/BlobFix.ts +0 -561
- package/src/utils/audioProcessing.ts +0 -205
- package/src/utils/cleanNativeOptions.ts +0 -18
- package/src/utils/concatenateBuffers.ts +0 -24
- package/src/utils/convertPCMToFloat32.ts +0 -170
- package/src/utils/crc32.ts +0 -59
- package/src/utils/encodingToBitDepth.ts +0 -18
- package/src/utils/getWavFileInfo.ts +0 -132
- package/src/utils/writeWavHeader.ts +0 -115
- package/src/workers/InlineFeaturesExtractor.web.tsx +0 -855
- package/src/workers/inlineAudioWebWorker.web.tsx +0 -180
package/plugin/build/index.cjs
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const config_plugins_1 = require("@expo/config-plugins");
|
|
4
|
-
const MICROPHONE_USAGE = 'Allow $(PRODUCT_NAME) to access your microphone';
|
|
5
|
-
const NOTIFICATION_USAGE = 'Show recording notifications and controls';
|
|
6
|
-
const LOG_PREFIX = '[@siteed/expo-audio-studio]';
|
|
7
|
-
function debugLog(message, ...args) {
|
|
8
|
-
if (process.env.EXPO_DEBUG) {
|
|
9
|
-
console.log(`${LOG_PREFIX} ${message}`, ...args);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
const withRecordingPermission = (config, props) => {
|
|
13
|
-
const options = {
|
|
14
|
-
enablePhoneStateHandling: true, // Default to true for backward compatibility
|
|
15
|
-
enableNotifications: true,
|
|
16
|
-
enableBackgroundAudio: true,
|
|
17
|
-
enableDeviceDetection: true, // Default to true for backward compatibility
|
|
18
|
-
iosBackgroundModes: {
|
|
19
|
-
useVoIP: false,
|
|
20
|
-
useAudio: false,
|
|
21
|
-
useProcessing: false,
|
|
22
|
-
useLocation: false,
|
|
23
|
-
useExternalAccessory: false,
|
|
24
|
-
},
|
|
25
|
-
iosConfig: {
|
|
26
|
-
microphoneUsageDescription: MICROPHONE_USAGE,
|
|
27
|
-
notificationUsageDescription: NOTIFICATION_USAGE,
|
|
28
|
-
},
|
|
29
|
-
...(props || {}),
|
|
30
|
-
};
|
|
31
|
-
const { enablePhoneStateHandling, enableNotifications, enableBackgroundAudio, enableDeviceDetection, } = options;
|
|
32
|
-
debugLog('📱 Configuring Recording Permissions Plugin...', options);
|
|
33
|
-
// iOS Configuration
|
|
34
|
-
config = (0, config_plugins_1.withInfoPlist)(config, (config) => {
|
|
35
|
-
// Always set the microphone usage description from options first
|
|
36
|
-
config.modResults['NSMicrophoneUsageDescription'] =
|
|
37
|
-
options.iosConfig?.microphoneUsageDescription ||
|
|
38
|
-
config.modResults['NSMicrophoneUsageDescription'] ||
|
|
39
|
-
MICROPHONE_USAGE;
|
|
40
|
-
if (enableNotifications) {
|
|
41
|
-
config.modResults['NSUserNotificationsUsageDescription'] =
|
|
42
|
-
options.iosConfig?.notificationUsageDescription ||
|
|
43
|
-
config.modResults['NSUserNotificationsUsageDescription'] ||
|
|
44
|
-
NOTIFICATION_USAGE;
|
|
45
|
-
config.modResults['NSUserNotificationAlertStyle'] = 'alert';
|
|
46
|
-
}
|
|
47
|
-
const existingBackgroundModes = config.modResults.UIBackgroundModes || [];
|
|
48
|
-
// If background audio is enabled with useAudio, add the audio background mode
|
|
49
|
-
if (options.iosBackgroundModes?.useAudio === true &&
|
|
50
|
-
enableBackgroundAudio === true &&
|
|
51
|
-
!existingBackgroundModes.includes('audio')) {
|
|
52
|
-
// Add 'audio' background mode - REQUIRED for background recording
|
|
53
|
-
existingBackgroundModes.push('audio');
|
|
54
|
-
debugLog('✅ Added audio background mode for iOS background recording');
|
|
55
|
-
// Also ensure processing mode is recommended
|
|
56
|
-
if (options.iosBackgroundModes?.useProcessing !== true) {
|
|
57
|
-
console.warn(`${LOG_PREFIX} Warning: Background audio recording works best with both 'audio' and 'processing' background modes. Consider enabling 'useProcessing' in iosBackgroundModes.`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (options.iosBackgroundModes?.useVoIP === true &&
|
|
61
|
-
enablePhoneStateHandling === true) {
|
|
62
|
-
if (!existingBackgroundModes.includes('voip')) {
|
|
63
|
-
existingBackgroundModes.push('voip');
|
|
64
|
-
}
|
|
65
|
-
const existingCapabilities = (config.modResults
|
|
66
|
-
.UIRequiredDeviceCapabilities || []);
|
|
67
|
-
if (!existingCapabilities.includes('telephony')) {
|
|
68
|
-
existingCapabilities.push('telephony');
|
|
69
|
-
}
|
|
70
|
-
config.modResults.UIRequiredDeviceCapabilities =
|
|
71
|
-
existingCapabilities;
|
|
72
|
-
}
|
|
73
|
-
// Add additional background modes only if explicitly set to true
|
|
74
|
-
if (options.iosBackgroundModes?.useProcessing === true) {
|
|
75
|
-
if (!existingBackgroundModes.includes('processing')) {
|
|
76
|
-
existingBackgroundModes.push('processing');
|
|
77
|
-
}
|
|
78
|
-
// Add processing info if enabled
|
|
79
|
-
// Note: We keep the 'audiostream' namespace for native modules to maintain compatibility
|
|
80
|
-
config.modResults.BGTaskSchedulerPermittedIdentifiers = [
|
|
81
|
-
'com.siteed.audiostream.processing',
|
|
82
|
-
];
|
|
83
|
-
}
|
|
84
|
-
if (options.iosBackgroundModes?.useLocation === true) {
|
|
85
|
-
if (!existingBackgroundModes.includes('location')) {
|
|
86
|
-
existingBackgroundModes.push('location');
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (options.iosBackgroundModes?.useExternalAccessory === true) {
|
|
90
|
-
if (!existingBackgroundModes.includes('external-accessory')) {
|
|
91
|
-
existingBackgroundModes.push('external-accessory');
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
// Configure background processing info if enabled
|
|
95
|
-
if (options.iosConfig?.backgroundProcessingTitle) {
|
|
96
|
-
config.modResults.BGProcessingTaskTitle =
|
|
97
|
-
options.iosConfig.backgroundProcessingTitle;
|
|
98
|
-
}
|
|
99
|
-
// Configure audio session behavior
|
|
100
|
-
if (options.iosConfig?.allowBackgroundAudioControls) {
|
|
101
|
-
config.modResults.UIBackgroundModes = [
|
|
102
|
-
...existingBackgroundModes,
|
|
103
|
-
'remote-notification',
|
|
104
|
-
];
|
|
105
|
-
config.modResults.MPNowPlayingInfoPropertyPlaybackRate = true;
|
|
106
|
-
}
|
|
107
|
-
config.modResults.UIBackgroundModes = existingBackgroundModes;
|
|
108
|
-
return config;
|
|
109
|
-
});
|
|
110
|
-
// Android Configuration
|
|
111
|
-
config = (0, config_plugins_1.withAndroidManifest)(config, (config) => {
|
|
112
|
-
const basePermissions = ['android.permission.RECORD_AUDIO'];
|
|
113
|
-
const optionalPermissions = [
|
|
114
|
-
enableNotifications && 'android.permission.POST_NOTIFICATIONS',
|
|
115
|
-
enablePhoneStateHandling && 'android.permission.READ_PHONE_STATE', // Only add if enabled
|
|
116
|
-
enableBackgroundAudio && 'android.permission.FOREGROUND_SERVICE',
|
|
117
|
-
enableBackgroundAudio &&
|
|
118
|
-
'android.permission.FOREGROUND_SERVICE_MICROPHONE',
|
|
119
|
-
enableBackgroundAudio && 'android.permission.WAKE_LOCK', // Keep device awake during background recording
|
|
120
|
-
// Device detection permissions (only if enabled)
|
|
121
|
-
enableDeviceDetection && 'android.permission.BLUETOOTH',
|
|
122
|
-
enableDeviceDetection && 'android.permission.BLUETOOTH_ADMIN',
|
|
123
|
-
enableDeviceDetection && 'android.permission.BLUETOOTH_CONNECT',
|
|
124
|
-
enableDeviceDetection && 'android.permission.USB_PERMISSION',
|
|
125
|
-
].filter(Boolean);
|
|
126
|
-
const permissionsToAdd = [...basePermissions, ...optionalPermissions];
|
|
127
|
-
debugLog('📋 Existing Android permissions:', config.modResults.manifest['uses-permission']?.map((p) => p.$?.['android:name']) || []);
|
|
128
|
-
debugLog('➕ Adding Android permissions:', permissionsToAdd);
|
|
129
|
-
// Add each permission only if it doesn't exist
|
|
130
|
-
permissionsToAdd.forEach((permission) => {
|
|
131
|
-
config_plugins_1.AndroidConfig.Permissions.addPermission(config.modResults, permission);
|
|
132
|
-
});
|
|
133
|
-
// Get the main application node
|
|
134
|
-
const mainApplication = config.modResults.manifest.application?.[0];
|
|
135
|
-
if (mainApplication) {
|
|
136
|
-
debugLog('📱 Configuring Android application components...');
|
|
137
|
-
// Add RecordingActionReceiver
|
|
138
|
-
if (!mainApplication.receiver) {
|
|
139
|
-
mainApplication.receiver = [];
|
|
140
|
-
}
|
|
141
|
-
const receiverConfig = {
|
|
142
|
-
$: {
|
|
143
|
-
'android:name': '.RecordingActionReceiver',
|
|
144
|
-
'android:exported': 'false',
|
|
145
|
-
},
|
|
146
|
-
'intent-filter': [
|
|
147
|
-
{
|
|
148
|
-
action: [
|
|
149
|
-
{ $: { 'android:name': 'PAUSE_RECORDING' } },
|
|
150
|
-
{ $: { 'android:name': 'RESUME_RECORDING' } },
|
|
151
|
-
{ $: { 'android:name': 'STOP_RECORDING' } },
|
|
152
|
-
],
|
|
153
|
-
},
|
|
154
|
-
],
|
|
155
|
-
};
|
|
156
|
-
const receiverIndex = mainApplication.receiver.findIndex((receiver) => receiver.$?.['android:name'] === '.RecordingActionReceiver');
|
|
157
|
-
if (receiverIndex >= 0) {
|
|
158
|
-
mainApplication.receiver[receiverIndex] = receiverConfig;
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
mainApplication.receiver.push(receiverConfig);
|
|
162
|
-
}
|
|
163
|
-
debugLog('✅ RecordingActionReceiver configured');
|
|
164
|
-
// Add AudioRecordingService
|
|
165
|
-
if (!mainApplication.service) {
|
|
166
|
-
mainApplication.service = [];
|
|
167
|
-
}
|
|
168
|
-
const serviceConfig = {
|
|
169
|
-
$: {
|
|
170
|
-
'android:name': '.AudioRecordingService',
|
|
171
|
-
'android:enabled': 'true',
|
|
172
|
-
'android:exported': 'false',
|
|
173
|
-
'android:foregroundServiceType': 'microphone',
|
|
174
|
-
},
|
|
175
|
-
};
|
|
176
|
-
const serviceIndex = mainApplication.service.findIndex((service) => service.$?.['android:name'] === '.AudioRecordingService');
|
|
177
|
-
if (serviceIndex >= 0) {
|
|
178
|
-
mainApplication.service[serviceIndex] = serviceConfig;
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
mainApplication.service.push(serviceConfig);
|
|
182
|
-
}
|
|
183
|
-
debugLog('✅ AudioRecordingService configured');
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
console.error(`${LOG_PREFIX} ❌ Main application node not found in Android Manifest`);
|
|
187
|
-
}
|
|
188
|
-
return config;
|
|
189
|
-
});
|
|
190
|
-
debugLog('✨ Recording Permissions Plugin configuration completed');
|
|
191
|
-
return config;
|
|
192
|
-
};
|
|
193
|
-
// Export as default
|
|
194
|
-
exports.default = withRecordingPermission;
|
package/plugin/build/index.d.cts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ConfigPlugin } from '@expo/config-plugins';
|
|
2
|
-
interface AudioStreamPluginOptions {
|
|
3
|
-
enablePhoneStateHandling?: boolean;
|
|
4
|
-
enableNotifications?: boolean;
|
|
5
|
-
enableBackgroundAudio?: boolean;
|
|
6
|
-
enableDeviceDetection?: boolean;
|
|
7
|
-
iosBackgroundModes?: {
|
|
8
|
-
useVoIP?: boolean;
|
|
9
|
-
useAudio?: boolean;
|
|
10
|
-
useProcessing?: boolean;
|
|
11
|
-
useLocation?: boolean;
|
|
12
|
-
useExternalAccessory?: boolean;
|
|
13
|
-
};
|
|
14
|
-
iosConfig?: {
|
|
15
|
-
allowBackgroundAudioControls?: boolean;
|
|
16
|
-
backgroundProcessingTitle?: string;
|
|
17
|
-
microphoneUsageDescription?: string;
|
|
18
|
-
notificationUsageDescription?: string;
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
declare const withRecordingPermission: ConfigPlugin<AudioStreamPluginOptions>;
|
|
22
|
-
export default withRecordingPermission;
|
package/plugin/build/index.js
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const config_plugins_1 = require("@expo/config-plugins");
|
|
4
|
-
const MICROPHONE_USAGE = 'Allow $(PRODUCT_NAME) to access your microphone';
|
|
5
|
-
const NOTIFICATION_USAGE = 'Show recording notifications and controls';
|
|
6
|
-
const LOG_PREFIX = '[@siteed/expo-audio-studio]';
|
|
7
|
-
function debugLog(message, ...args) {
|
|
8
|
-
if (process.env.EXPO_DEBUG) {
|
|
9
|
-
console.log(`${LOG_PREFIX} ${message}`, ...args);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
const withRecordingPermission = (config, props) => {
|
|
13
|
-
const options = {
|
|
14
|
-
enablePhoneStateHandling: true, // Default to true for backward compatibility
|
|
15
|
-
enableNotifications: true,
|
|
16
|
-
enableBackgroundAudio: true,
|
|
17
|
-
enableDeviceDetection: true, // Default to true for backward compatibility
|
|
18
|
-
iosBackgroundModes: {
|
|
19
|
-
useVoIP: false,
|
|
20
|
-
useAudio: false,
|
|
21
|
-
useProcessing: false,
|
|
22
|
-
useLocation: false,
|
|
23
|
-
useExternalAccessory: false,
|
|
24
|
-
},
|
|
25
|
-
iosConfig: {
|
|
26
|
-
microphoneUsageDescription: MICROPHONE_USAGE,
|
|
27
|
-
notificationUsageDescription: NOTIFICATION_USAGE,
|
|
28
|
-
},
|
|
29
|
-
...(props || {}),
|
|
30
|
-
};
|
|
31
|
-
const { enablePhoneStateHandling, enableNotifications, enableBackgroundAudio, enableDeviceDetection, } = options;
|
|
32
|
-
debugLog('📱 Configuring Recording Permissions Plugin...', options);
|
|
33
|
-
// iOS Configuration
|
|
34
|
-
config = (0, config_plugins_1.withInfoPlist)(config, (config) => {
|
|
35
|
-
// Always set the microphone usage description from options first
|
|
36
|
-
config.modResults['NSMicrophoneUsageDescription'] =
|
|
37
|
-
options.iosConfig?.microphoneUsageDescription ||
|
|
38
|
-
config.modResults['NSMicrophoneUsageDescription'] ||
|
|
39
|
-
MICROPHONE_USAGE;
|
|
40
|
-
if (enableNotifications) {
|
|
41
|
-
config.modResults['NSUserNotificationsUsageDescription'] =
|
|
42
|
-
options.iosConfig?.notificationUsageDescription ||
|
|
43
|
-
config.modResults['NSUserNotificationsUsageDescription'] ||
|
|
44
|
-
NOTIFICATION_USAGE;
|
|
45
|
-
config.modResults['NSUserNotificationAlertStyle'] = 'alert';
|
|
46
|
-
}
|
|
47
|
-
const existingBackgroundModes = config.modResults.UIBackgroundModes || [];
|
|
48
|
-
// If background audio is enabled with useAudio, add the audio background mode
|
|
49
|
-
if (options.iosBackgroundModes?.useAudio === true &&
|
|
50
|
-
enableBackgroundAudio === true &&
|
|
51
|
-
!existingBackgroundModes.includes('audio')) {
|
|
52
|
-
// Add 'audio' background mode - REQUIRED for background recording
|
|
53
|
-
existingBackgroundModes.push('audio');
|
|
54
|
-
debugLog('✅ Added audio background mode for iOS background recording');
|
|
55
|
-
// Also ensure processing mode is recommended
|
|
56
|
-
if (options.iosBackgroundModes?.useProcessing !== true) {
|
|
57
|
-
console.warn(`${LOG_PREFIX} Warning: Background audio recording works best with both 'audio' and 'processing' background modes. Consider enabling 'useProcessing' in iosBackgroundModes.`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (options.iosBackgroundModes?.useVoIP === true &&
|
|
61
|
-
enablePhoneStateHandling === true) {
|
|
62
|
-
if (!existingBackgroundModes.includes('voip')) {
|
|
63
|
-
existingBackgroundModes.push('voip');
|
|
64
|
-
}
|
|
65
|
-
const existingCapabilities = (config.modResults
|
|
66
|
-
.UIRequiredDeviceCapabilities || []);
|
|
67
|
-
if (!existingCapabilities.includes('telephony')) {
|
|
68
|
-
existingCapabilities.push('telephony');
|
|
69
|
-
}
|
|
70
|
-
config.modResults.UIRequiredDeviceCapabilities =
|
|
71
|
-
existingCapabilities;
|
|
72
|
-
}
|
|
73
|
-
// Add additional background modes only if explicitly set to true
|
|
74
|
-
if (options.iosBackgroundModes?.useProcessing === true) {
|
|
75
|
-
if (!existingBackgroundModes.includes('processing')) {
|
|
76
|
-
existingBackgroundModes.push('processing');
|
|
77
|
-
}
|
|
78
|
-
// Add processing info if enabled
|
|
79
|
-
// Note: We keep the 'audiostream' namespace for native modules to maintain compatibility
|
|
80
|
-
config.modResults.BGTaskSchedulerPermittedIdentifiers = [
|
|
81
|
-
'com.siteed.audiostream.processing',
|
|
82
|
-
];
|
|
83
|
-
}
|
|
84
|
-
if (options.iosBackgroundModes?.useLocation === true) {
|
|
85
|
-
if (!existingBackgroundModes.includes('location')) {
|
|
86
|
-
existingBackgroundModes.push('location');
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (options.iosBackgroundModes?.useExternalAccessory === true) {
|
|
90
|
-
if (!existingBackgroundModes.includes('external-accessory')) {
|
|
91
|
-
existingBackgroundModes.push('external-accessory');
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
// Configure background processing info if enabled
|
|
95
|
-
if (options.iosConfig?.backgroundProcessingTitle) {
|
|
96
|
-
config.modResults.BGProcessingTaskTitle =
|
|
97
|
-
options.iosConfig.backgroundProcessingTitle;
|
|
98
|
-
}
|
|
99
|
-
// Configure audio session behavior
|
|
100
|
-
if (options.iosConfig?.allowBackgroundAudioControls) {
|
|
101
|
-
config.modResults.UIBackgroundModes = [
|
|
102
|
-
...existingBackgroundModes,
|
|
103
|
-
'remote-notification',
|
|
104
|
-
];
|
|
105
|
-
config.modResults.MPNowPlayingInfoPropertyPlaybackRate = true;
|
|
106
|
-
}
|
|
107
|
-
config.modResults.UIBackgroundModes = existingBackgroundModes;
|
|
108
|
-
return config;
|
|
109
|
-
});
|
|
110
|
-
// Android Configuration
|
|
111
|
-
config = (0, config_plugins_1.withAndroidManifest)(config, (config) => {
|
|
112
|
-
const basePermissions = ['android.permission.RECORD_AUDIO'];
|
|
113
|
-
const optionalPermissions = [
|
|
114
|
-
enableNotifications && 'android.permission.POST_NOTIFICATIONS',
|
|
115
|
-
enablePhoneStateHandling && 'android.permission.READ_PHONE_STATE', // Only add if enabled
|
|
116
|
-
enableBackgroundAudio && 'android.permission.FOREGROUND_SERVICE',
|
|
117
|
-
enableBackgroundAudio &&
|
|
118
|
-
'android.permission.FOREGROUND_SERVICE_MICROPHONE',
|
|
119
|
-
enableBackgroundAudio && 'android.permission.WAKE_LOCK', // Keep device awake during background recording
|
|
120
|
-
// Device detection permissions (only if enabled)
|
|
121
|
-
enableDeviceDetection && 'android.permission.BLUETOOTH',
|
|
122
|
-
enableDeviceDetection && 'android.permission.BLUETOOTH_ADMIN',
|
|
123
|
-
enableDeviceDetection && 'android.permission.BLUETOOTH_CONNECT',
|
|
124
|
-
enableDeviceDetection && 'android.permission.USB_PERMISSION',
|
|
125
|
-
].filter(Boolean);
|
|
126
|
-
const permissionsToAdd = [...basePermissions, ...optionalPermissions];
|
|
127
|
-
debugLog('📋 Existing Android permissions:', config.modResults.manifest['uses-permission']?.map((p) => p.$?.['android:name']) || []);
|
|
128
|
-
debugLog('➕ Adding Android permissions:', permissionsToAdd);
|
|
129
|
-
// Add each permission only if it doesn't exist
|
|
130
|
-
permissionsToAdd.forEach((permission) => {
|
|
131
|
-
config_plugins_1.AndroidConfig.Permissions.addPermission(config.modResults, permission);
|
|
132
|
-
});
|
|
133
|
-
// Get the main application node
|
|
134
|
-
const mainApplication = config.modResults.manifest.application?.[0];
|
|
135
|
-
if (mainApplication) {
|
|
136
|
-
debugLog('📱 Configuring Android application components...');
|
|
137
|
-
// Add RecordingActionReceiver
|
|
138
|
-
if (!mainApplication.receiver) {
|
|
139
|
-
mainApplication.receiver = [];
|
|
140
|
-
}
|
|
141
|
-
const receiverConfig = {
|
|
142
|
-
$: {
|
|
143
|
-
'android:name': '.RecordingActionReceiver',
|
|
144
|
-
'android:exported': 'false',
|
|
145
|
-
},
|
|
146
|
-
'intent-filter': [
|
|
147
|
-
{
|
|
148
|
-
action: [
|
|
149
|
-
{ $: { 'android:name': 'PAUSE_RECORDING' } },
|
|
150
|
-
{ $: { 'android:name': 'RESUME_RECORDING' } },
|
|
151
|
-
{ $: { 'android:name': 'STOP_RECORDING' } },
|
|
152
|
-
],
|
|
153
|
-
},
|
|
154
|
-
],
|
|
155
|
-
};
|
|
156
|
-
const receiverIndex = mainApplication.receiver.findIndex((receiver) => receiver.$?.['android:name'] === '.RecordingActionReceiver');
|
|
157
|
-
if (receiverIndex >= 0) {
|
|
158
|
-
mainApplication.receiver[receiverIndex] = receiverConfig;
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
mainApplication.receiver.push(receiverConfig);
|
|
162
|
-
}
|
|
163
|
-
debugLog('✅ RecordingActionReceiver configured');
|
|
164
|
-
// Add AudioRecordingService
|
|
165
|
-
if (!mainApplication.service) {
|
|
166
|
-
mainApplication.service = [];
|
|
167
|
-
}
|
|
168
|
-
const serviceConfig = {
|
|
169
|
-
$: {
|
|
170
|
-
'android:name': '.AudioRecordingService',
|
|
171
|
-
'android:enabled': 'true',
|
|
172
|
-
'android:exported': 'false',
|
|
173
|
-
'android:foregroundServiceType': 'microphone',
|
|
174
|
-
},
|
|
175
|
-
};
|
|
176
|
-
const serviceIndex = mainApplication.service.findIndex((service) => service.$?.['android:name'] === '.AudioRecordingService');
|
|
177
|
-
if (serviceIndex >= 0) {
|
|
178
|
-
mainApplication.service[serviceIndex] = serviceConfig;
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
mainApplication.service.push(serviceConfig);
|
|
182
|
-
}
|
|
183
|
-
debugLog('✅ AudioRecordingService configured');
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
console.error(`${LOG_PREFIX} ❌ Main application node not found in Android Manifest`);
|
|
187
|
-
}
|
|
188
|
-
return config;
|
|
189
|
-
});
|
|
190
|
-
debugLog('✨ Recording Permissions Plugin configuration completed');
|
|
191
|
-
return config;
|
|
192
|
-
};
|
|
193
|
-
// Export as default
|
|
194
|
-
exports.default = withRecordingPermission;
|