Skip to content

Commit

Permalink
refactor(#zimic): import File if not present globally
Browse files Browse the repository at this point in the history
  • Loading branch information
diego-aquino committed Nov 10, 2024
1 parent 3482233 commit 179c959
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 26 deletions.
29 changes: 3 additions & 26 deletions packages/zimic/src/interceptor/server/InterceptorServer.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { FetchAPI, normalizeNodeRequest, sendNodeResponse } from '@whatwg-node/server';
import { normalizeNodeRequest, sendNodeResponse } from '@whatwg-node/server';
import { createServer, Server as HttpServer, IncomingMessage, ServerResponse } from 'http';
import type { WebSocket as Socket } from 'isomorphic-ws';

Expand All @@ -18,30 +18,7 @@ import NotStartedInterceptorServerError from './errors/NotStartedInterceptorServ
import { InterceptorServerOptions } from './types/options';
import { InterceptorServer as PublicInterceptorServer } from './types/public';
import { HttpHandlerCommit, InterceptorServerWebSocketSchema } from './types/schema';

const fetchAPI: FetchAPI = {
fetch,
Request,
Response,
Headers,
FormData,
ReadableStream,
WritableStream,
TransformStream,
CompressionStream,
DecompressionStream,
TextDecoderStream,
TextEncoderStream,
Blob,
File,
crypto,
btoa,
TextEncoder,
TextDecoder,
URLPattern,
URL,
URLSearchParams,
};
import { getFetchAPI } from './utils/fetch';

interface HttpHandler {
id: string;
Expand Down Expand Up @@ -247,7 +224,7 @@ class InterceptorServer implements PublicInterceptorServer {
}

private handleHttpRequest = async (nodeRequest: IncomingMessage, nodeResponse: ServerResponse) => {
const request = normalizeNodeRequest(nodeRequest, fetchAPI);
const request = normalizeNodeRequest(nodeRequest, await getFetchAPI());

try {
const { response, matchedAnyInterceptor } = await this.createResponseForRequest(request);
Expand Down
29 changes: 29 additions & 0 deletions packages/zimic/src/interceptor/server/utils/fetch.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { FetchAPI } from '@whatwg-node/server';

import { importFile } from '@/utils/files';

export async function getFetchAPI(): Promise<FetchAPI> {
return {
fetch,
Request,
Response,
Headers,
FormData,
ReadableStream,
WritableStream,
TransformStream,
CompressionStream,
DecompressionStream,
TextDecoderStream,
TextEncoderStream,
Blob,
File: await importFile(),
crypto: globalThis.crypto,
btoa,
TextEncoder,
TextDecoder,
URLPattern,
URL,
URLSearchParams,
};
}

0 comments on commit 179c959

Please sign in to comment.