@callstack/repack-dev-server
Version:
A bundler-agnostic development server for React Native applications as part of @callstack/repack.
48 lines (47 loc) • 2.17 kB
JavaScript
import fastifyPlugin from 'fastify-plugin';
import { WebSocketRouter } from './WebSocketRouter.js';
import { WebSocketServerAdapter } from './WebSocketServerAdapter.js';
import { WebSocketApiServer } from './servers/WebSocketApiServer.js';
import { WebSocketDevClientServer } from './servers/WebSocketDevClientServer.js';
import { WebSocketEventsServer } from './servers/WebSocketEventsServer.js';
import { WebSocketHMRServer } from './servers/WebSocketHMRServer.js';
import { WebSocketMessageServer } from './servers/WebSocketMessageServer.js';
/**
* Defined in @react-native/dev-middleware
* Reference: https://github.com/facebook/react-native/blob/main/packages/dev-middleware/src/inspector-proxy/InspectorProxy.js
*/
const WS_DEVICE_URL = '/inspector/device';
const WS_DEBUGGER_URL = '/inspector/debug';
async function wssPlugin(instance, { endpoints, }) {
const router = new WebSocketRouter(instance);
const devClientServer = new WebSocketDevClientServer(instance);
const messageServer = new WebSocketMessageServer(instance);
const eventsServer = new WebSocketEventsServer(instance, {
webSocketMessageServer: messageServer,
});
const apiServer = new WebSocketApiServer(instance);
const hmrServer = new WebSocketHMRServer(instance);
// @react-native/dev-middleware servers
const deviceConnectionServer = new WebSocketServerAdapter(instance, WS_DEVICE_URL, endpoints?.[WS_DEVICE_URL]);
const debuggerConnectionServer = new WebSocketServerAdapter(instance, WS_DEBUGGER_URL, endpoints?.[WS_DEBUGGER_URL]);
router.registerServer(devClientServer);
router.registerServer(messageServer);
router.registerServer(eventsServer);
router.registerServer(apiServer);
router.registerServer(hmrServer);
router.registerServer(deviceConnectionServer);
router.registerServer(debuggerConnectionServer);
instance.decorate('wss', {
devClientServer,
messageServer,
eventsServer,
apiServer,
hmrServer,
deviceConnectionServer,
debuggerConnectionServer,
router,
});
}
export default fastifyPlugin(wssPlugin, {
name: 'wss-plugin',
});