voicebot-react-native-expo
Version:
This is a voicebot-react-native package of Kipps AI voice bot for React Native Expo
91 lines (89 loc) • 2.78 kB
JavaScript
import { registerGlobals as webrtcRegisterGlobals } from '@livekit/react-native-webrtc';
import { setupURLPolyfill } from 'react-native-url-polyfill';
import './polyfills/EncoderDecoderTogether.min.js';
import AudioSession, { AndroidAudioTypePresets, getDefaultAppleAudioConfigurationForMode } from './audio/AudioSession';
import { PixelRatio, Platform } from 'react-native';
/**
* Registers the required globals needed for LiveKit to work.
*
* Must be called before using LiveKit.
*/
export function registerGlobals() {
webrtcRegisterGlobals();
iosCategoryEnforce();
livekitRegisterGlobals();
setupURLPolyfill();
fixWebrtcAdapter();
shimPromiseAllSettled();
shimArrayAt();
shimAsyncIterator();
shimIterator();
}
/**
* Enforces changing to playAndRecord category prior to obtaining microphone.
*/
function iosCategoryEnforce() {
if (Platform.OS === 'ios') {
// @ts-ignore
let getUserMediaFunc = global.navigator.mediaDevices.getUserMedia;
// @ts-ignore
global.navigator.mediaDevices.getUserMedia = async constraints => {
if (constraints.audio) {
await AudioSession.setAppleAudioConfiguration({
audioCategory: 'playAndRecord'
});
}
return await getUserMediaFunc(constraints);
};
}
}
function livekitRegisterGlobals() {
let lkGlobal = {
platform: Platform.OS,
devicePixelRatio: PixelRatio.get()
};
// @ts-ignore
global.LiveKitReactNativeGlobal = lkGlobal;
}
function fixWebrtcAdapter() {
var _window;
// @ts-ignore
if (((_window = window) === null || _window === void 0 ? void 0 : _window.navigator) !== undefined) {
// @ts-ignore
const {
navigator
} = window;
if (navigator.userAgent === undefined) {
navigator.userAgent = navigator.product ?? 'Unknown';
}
}
}
function shimPromiseAllSettled() {
var allSettled = require('promise.allsettled');
allSettled.shim();
}
function shimArrayAt() {
// Some versions of RN don't have Array.prototype.at, which is used by sdp-transform
if (!Array.prototype.at) {
var at = require('array.prototype.at');
at.shim();
}
}
function shimAsyncIterator() {
var shim = require('well-known-symbols/Symbol.asyncIterator/shim');
shim();
}
function shimIterator() {
var shim = require('well-known-symbols/Symbol.iterator/shim');
shim();
}
export * from './hooks';
export * from './components/LiveKitRoom';
export * from './components/VideoTrack';
export * from './components/VideoView'; // deprecated
export * from './useParticipant'; // deprecated
export * from './useRoom'; // deprecated
export * from './logger';
export * from './audio/AudioManager';
export { AudioSession, AndroidAudioTypePresets, getDefaultAppleAudioConfigurationForMode };
//# sourceMappingURL=index.js.map