From 261d97fe7d63cb7ea1d4cc99e23be4274b322cc4 Mon Sep 17 00:00:00 2001 From: Artem Zakharchenko Date: Thu, 30 Mar 2023 19:33:05 +0200 Subject: [PATCH] fix: migrate to ESM-friendly "@open-draft/until@2" (#367) --- package.json | 4 ++-- src/interceptors/ClientRequest/NodeClientRequest.ts | 10 ++++++---- src/interceptors/XMLHttpRequest/XMLHttpRequestProxy.ts | 10 ++++++---- src/interceptors/fetch/index.ts | 8 +++++--- yarn.lock | 5 ----- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index d7ce2dd1..de63c350 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ }, "dependencies": { "@open-draft/deferred-promise": "^2.1.0", - "@open-draft/until": "^1.0.3", + "@open-draft/until": "^2.0.0", "@types/debug": "^4.1.7", "debug": "^4.3.3", "headers-polyfill": "^3.1.0", @@ -166,4 +166,4 @@ "path": "./node_modules/cz-conventional-changelog" } } -} \ No newline at end of file +} diff --git a/src/interceptors/ClientRequest/NodeClientRequest.ts b/src/interceptors/ClientRequest/NodeClientRequest.ts index 658df250..c61acf08 100644 --- a/src/interceptors/ClientRequest/NodeClientRequest.ts +++ b/src/interceptors/ClientRequest/NodeClientRequest.ts @@ -174,7 +174,7 @@ export class NodeClientRequest extends ClientRequest { this.log('event.respondWith called with:', mockedResponse) return mockedResponse - }).then(([resolverException, mockedResponse]) => { + }).then((resolverResult) => { this.log('the listeners promise awaited!') /** @@ -192,17 +192,19 @@ export class NodeClientRequest extends ClientRequest { } // Halt the request whenever the resolver throws an exception. - if (resolverException) { + if (resolverResult.error) { this.log( 'encountered resolver exception, aborting request...', - resolverException + resolverResult.error ) - this.emit('error', resolverException) + this.emit('error', resolverResult.error) this.terminate() return this } + const mockedResponse = resolverResult.data + if (mockedResponse) { const responseClone = mockedResponse.clone() diff --git a/src/interceptors/XMLHttpRequest/XMLHttpRequestProxy.ts b/src/interceptors/XMLHttpRequest/XMLHttpRequestProxy.ts index ff19df58..101cb037 100644 --- a/src/interceptors/XMLHttpRequest/XMLHttpRequestProxy.ts +++ b/src/interceptors/XMLHttpRequest/XMLHttpRequestProxy.ts @@ -59,7 +59,7 @@ export function createXMLHttpRequestProxy({ this.log('awaiting mocked response...') - const [middlewareException, mockedResponse] = await until(async () => { + const resolverResult = await until(async () => { await emitter.untilIdle( 'request', ({ args: [, pendingRequestId] }) => { @@ -77,10 +77,10 @@ export function createXMLHttpRequestProxy({ return mockedResponse }) - if (middlewareException) { + if (resolverResult.error) { this.log( 'request listener threw an exception, aborting request...', - middlewareException + resolverResult.error ) /** @@ -88,10 +88,12 @@ export function createXMLHttpRequestProxy({ * since not all consumers are expecting to handle errors. * If they don't, this error will be swallowed. */ - requestController.errorWith(middlewareException) + requestController.errorWith(resolverResult.error) return } + const mockedResponse = resolverResult.data + if (typeof mockedResponse !== 'undefined') { this.log( 'received mocked response: %d %s', diff --git a/src/interceptors/fetch/index.ts b/src/interceptors/fetch/index.ts index a9ccafd5..2b2003d0 100644 --- a/src/interceptors/fetch/index.ts +++ b/src/interceptors/fetch/index.ts @@ -43,7 +43,7 @@ export class FetchInterceptor extends Interceptor { this.log('awaiting for the mocked response...') - const [middlewareException, mockedResponse] = await until(async () => { + const resolverResult = await until(async () => { await this.emitter.untilIdle( 'request', ({ args: [, pendingRequestId] }) => { @@ -58,14 +58,16 @@ export class FetchInterceptor extends Interceptor { return mockedResponse }) - if (middlewareException) { + if (resolverResult.error) { console.error(`${request.method} ${request.url} net::ERR_FAILED`) const error = Object.assign(new TypeError('Failed to fetch'), { - cause: middlewareException, + cause: resolverResult.error, }) return Promise.reject(error) } + const mockedResponse = resolverResult.data + if (mockedResponse) { this.log('received mocked response:', mockedResponse) const responseCloine = mockedResponse.clone() diff --git a/yarn.lock b/yarn.lock index cf9ce889..524ac980 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1017,11 +1017,6 @@ outvariant "^1.3.0" socket.io "^4.4.1" -"@open-draft/until@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-1.0.3.tgz#db9cc719191a62e7d9200f6e7bab21c5b848adca" - integrity sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q== - "@open-draft/until@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-2.0.0.tgz#13d79bb827eb1be21cea4d29cdc60ca3312ec02f"