From 72f0b2516bc2fd0372cd62fc54fcf1f4e0b46b7f Mon Sep 17 00:00:00 2001 From: Artem Zakharchenko Date: Tue, 21 Jun 2022 16:41:33 +0200 Subject: [PATCH] fix(setupServer): reference interceptors to support fast refresh (#1299) --- src/native/index.ts | 2 +- src/node/createSetupServer.ts | 4 ++-- src/node/setupServer.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/native/index.ts b/src/native/index.ts index d6504aae7..5f0b13776 100644 --- a/src/native/index.ts +++ b/src/native/index.ts @@ -3,4 +3,4 @@ import { createSetupServer } from '../node/createSetupServer' // Provision request interception via patching the `XMLHttpRequest` class only // in React Native. There is no `http`/`https` modules in that environment. -export const setupServer = createSetupServer(new XMLHttpRequestInterceptor()) +export const setupServer = createSetupServer(XMLHttpRequestInterceptor) diff --git a/src/node/createSetupServer.ts b/src/node/createSetupServer.ts index 4b376a5cc..35060985b 100644 --- a/src/node/createSetupServer.ts +++ b/src/node/createSetupServer.ts @@ -27,7 +27,7 @@ const DEFAULT_LISTEN_OPTIONS: RequiredDeep = { * Useful to generate identical API using different patches to request issuing modules. */ export function createSetupServer( - ...interceptors: Interceptor[] + ...interceptors: { new (): Interceptor }[] ) { const emitter = new StrictEventEmitter() const publicEmitter = new StrictEventEmitter() @@ -62,7 +62,7 @@ export function createSetupServer( const interceptor = new BatchInterceptor({ name: 'setup-server', - interceptors, + interceptors: interceptors.map((Interceptor) => new Interceptor()), }) interceptor.on('request', async function setupServerListener(request) { diff --git a/src/node/setupServer.ts b/src/node/setupServer.ts index 5185cbb30..b8de95938 100644 --- a/src/node/setupServer.ts +++ b/src/node/setupServer.ts @@ -10,6 +10,6 @@ import { createSetupServer } from './createSetupServer' export const setupServer = createSetupServer( // List each interceptor separately instead of using the "node" preset // so that MSW wouldn't bundle the unnecessary classes (i.e. "SocketPolyfill"). - new ClientRequestInterceptor(), - new XMLHttpRequestInterceptor(), + ClientRequestInterceptor, + XMLHttpRequestInterceptor, )