1*8a424bebSJames Ideimport { createInspectorDeviceClass } from './device';
2*8a424bebSJames Ideimport { ExpoInspectorProxy } from './proxy';
303d43e7dSCedric van Puttenimport { MetroBundlerDevServer } from '../MetroBundlerDevServer';
45234fe38SCedric van Puttenimport {
55234fe38SCedric van Putten  importMetroInspectorDeviceFromProject,
65234fe38SCedric van Putten  importMetroInspectorProxyFromProject,
75234fe38SCedric van Putten} from '../resolveFromProject';
85234fe38SCedric van Putten
95234fe38SCedric van Puttenexport { ExpoInspectorProxy } from './proxy';
105234fe38SCedric van Putten
115234fe38SCedric van Puttenconst debug = require('debug')('expo:metro:inspector-proxy') as typeof console.log;
125234fe38SCedric van Putten
1303d43e7dSCedric van Puttenexport function createInspectorProxy(metroBundler: MetroBundlerDevServer, projectRoot: string) {
1433bd1a45SCedric van Putten  debug('Expo inspector proxy enabled');
155234fe38SCedric van Putten
165234fe38SCedric van Putten  // Import the installed `metro-inspector-proxy` from the project
175234fe38SCedric van Putten  // We use these base classes to extend functionality
185234fe38SCedric van Putten  const { InspectorProxy: MetroInspectorProxy } = importMetroInspectorProxyFromProject(projectRoot);
195234fe38SCedric van Putten  // The device is slightly more complicated, we need to extend that class
205234fe38SCedric van Putten  const ExpoInspectorDevice = createInspectorDeviceClass(
2103d43e7dSCedric van Putten    metroBundler,
225234fe38SCedric van Putten    importMetroInspectorDeviceFromProject(projectRoot)
235234fe38SCedric van Putten  );
245234fe38SCedric van Putten
255234fe38SCedric van Putten  const inspectorProxy = new ExpoInspectorProxy(
265234fe38SCedric van Putten    new MetroInspectorProxy(projectRoot),
275234fe38SCedric van Putten    ExpoInspectorDevice
285234fe38SCedric van Putten  );
295234fe38SCedric van Putten
305234fe38SCedric van Putten  return inspectorProxy;
315234fe38SCedric van Putten}
32