1import { MetroBundlerDevServer } from '../MetroBundlerDevServer'; 2import { 3 importMetroInspectorDeviceFromProject, 4 importMetroInspectorProxyFromProject, 5} from '../resolveFromProject'; 6import { createInspectorDeviceClass } from './device'; 7import { ExpoInspectorProxy } from './proxy'; 8 9export { ExpoInspectorProxy } from './proxy'; 10 11const debug = require('debug')('expo:metro:inspector-proxy') as typeof console.log; 12 13export function createInspectorProxy(metroBundler: MetroBundlerDevServer, projectRoot: string) { 14 debug('Expo inspector proxy enabled'); 15 16 // Import the installed `metro-inspector-proxy` from the project 17 // We use these base classes to extend functionality 18 const { InspectorProxy: MetroInspectorProxy } = importMetroInspectorProxyFromProject(projectRoot); 19 // The device is slightly more complicated, we need to extend that class 20 const ExpoInspectorDevice = createInspectorDeviceClass( 21 metroBundler, 22 importMetroInspectorDeviceFromProject(projectRoot) 23 ); 24 25 const inspectorProxy = new ExpoInspectorProxy( 26 new MetroInspectorProxy(projectRoot), 27 ExpoInspectorDevice 28 ); 29 30 return inspectorProxy; 31} 32