diff --git a/package.json b/package.json index 5fc52c33e67..4a8836bd1bc 100644 --- a/package.json +++ b/package.json @@ -87,8 +87,6 @@ "@types/serialize-javascript": "^5.0.2", "@types/ssri": "^7.1.0", "@vanilla-extract/css": "^1.10.0", - "abort-controller": "^3.0.0", - "abortcontroller-polyfill": "^1.7.3", "babel-jest": "^27.5.1", "babel-plugin-transform-remove-console": "^6.9.4", "chalk": "^4.1.2", diff --git a/packages/remix-architect/package.json b/packages/remix-architect/package.json index f4d8735f58a..b7adda13ac2 100644 --- a/packages/remix-architect/package.json +++ b/packages/remix-architect/package.json @@ -20,6 +20,7 @@ }, "devDependencies": { "@types/lambda-tester": "^3.6.1", + "@types/node": "^18.17.1", "lambda-tester": "^4.0.1", "typescript": "^5.1.0" }, diff --git a/packages/remix-architect/server.ts b/packages/remix-architect/server.ts index 15ec86c157c..f90e89c336a 100644 --- a/packages/remix-architect/server.ts +++ b/packages/remix-architect/server.ts @@ -1,11 +1,9 @@ import type { AppLoadContext, ServerBuild, - RequestInit as NodeRequestInit, Response as NodeResponse, } from "@remix-run/node"; import { - AbortController as NodeAbortController, Headers as NodeHeaders, Request as NodeRequest, createRequestHandler as createRemixRequestHandler, @@ -67,15 +65,13 @@ export function createRemixRequest(event: APIGatewayProxyEventV2): NodeRequest { "multipart/form-data" ); // Note: No current way to abort these for Architect, but our router expects - // requests to contain a signal so it can detect aborted requests - let controller = new NodeAbortController(); + // requests to contain a signal, so it can detect aborted requests + let controller = new AbortController(); return new NodeRequest(url.href, { method: event.requestContext.http.method, headers: createRemixHeaders(event.headers, event.cookies), - // Cast until reason/throwIfAborted added - // https://github.com/mysticatea/abort-controller/issues/36 - signal: controller.signal as NodeRequestInit["signal"], + signal: controller.signal, body: event.body && event.isBase64Encoded ? isFormData diff --git a/packages/remix-express/package.json b/packages/remix-express/package.json index bad2d73a39b..0e81dfe3bd2 100644 --- a/packages/remix-express/package.json +++ b/packages/remix-express/package.json @@ -18,6 +18,7 @@ }, "devDependencies": { "@types/express": "^4.17.9", + "@types/node": "^18.17.1", "@types/supertest": "^2.0.10", "express": "^4.17.1", "node-mocks-http": "^1.10.1", diff --git a/packages/remix-express/server.ts b/packages/remix-express/server.ts index 76abf32c5ee..a775a006fe9 100644 --- a/packages/remix-express/server.ts +++ b/packages/remix-express/server.ts @@ -6,7 +6,6 @@ import type { Response as NodeResponse, } from "@remix-run/node"; import { - AbortController as NodeAbortController, createRequestHandler as createRemixRequestHandler, Headers as NodeHeaders, Request as NodeRequest, @@ -96,15 +95,13 @@ export function createRemixRequest( let url = new URL(`${req.protocol}://${req.get("host")}${req.url}`); // Abort action/loaders once we can no longer write a response - let controller = new NodeAbortController(); + let controller = new AbortController(); res.on("close", () => controller.abort()); let init: NodeRequestInit = { method: req.method, headers: createRemixHeaders(req.headers), - // Cast until reason/throwIfAborted added - // https://github.com/mysticatea/abort-controller/issues/36 - signal: controller.signal as NodeRequestInit["signal"], + signal: controller.signal, }; if (req.method !== "GET" && req.method !== "HEAD") { diff --git a/packages/remix-netlify/package.json b/packages/remix-netlify/package.json index 8445067cf08..d90ddf3e38a 100644 --- a/packages/remix-netlify/package.json +++ b/packages/remix-netlify/package.json @@ -18,6 +18,7 @@ }, "devDependencies": { "@netlify/functions": "^1.0.0", + "@types/node": "^18.17.1", "typescript": "^5.1.0" }, "peerDependencies": { diff --git a/packages/remix-netlify/server.ts b/packages/remix-netlify/server.ts index 4fe8e139cc1..b2fc98d2cfb 100644 --- a/packages/remix-netlify/server.ts +++ b/packages/remix-netlify/server.ts @@ -5,7 +5,6 @@ import type { Response as NodeResponse, } from "@remix-run/node"; import { - AbortController as NodeAbortController, createRequestHandler as createRemixRequestHandler, Headers as NodeHeaders, Request as NodeRequest, @@ -67,15 +66,13 @@ export function createRemixRequest(event: HandlerEvent): NodeRequest { } // Note: No current way to abort these for Netlify, but our router expects - // requests to contain a signal so it can detect aborted requests - let controller = new NodeAbortController(); + // requests to contain a signal, so it can detect aborted requests + let controller = new AbortController(); let init: NodeRequestInit = { method: event.httpMethod, headers: createRemixHeaders(event.multiValueHeaders), - // Cast until reason/throwIfAborted added - // https://github.com/mysticatea/abort-controller/issues/36 - signal: controller.signal as NodeRequestInit["signal"], + signal: controller.signal, }; if (event.httpMethod !== "GET" && event.httpMethod !== "HEAD" && event.body) { diff --git a/packages/remix-node/globals.ts b/packages/remix-node/globals.ts index f6bf526d43f..2732cbe17c4 100644 --- a/packages/remix-node/globals.ts +++ b/packages/remix-node/globals.ts @@ -2,7 +2,6 @@ import { ReadableStream as NodeReadableStream, WritableStream as NodeWritableStream, } from "@remix-run/web-stream"; -import { AbortController as NodeAbortController } from "abort-controller"; import { atob, btoa } from "./base64"; import { @@ -36,8 +35,6 @@ declare global { ReadableStream: typeof ReadableStream; WritableStream: typeof WritableStream; - - AbortController: typeof AbortController; } } } @@ -57,6 +54,4 @@ export function installGlobals() { global.ReadableStream = NodeReadableStream; global.WritableStream = NodeWritableStream; - - global.AbortController = global.AbortController || NodeAbortController; } diff --git a/packages/remix-node/index.ts b/packages/remix-node/index.ts index 7e0544c06b2..01505dad6e5 100644 --- a/packages/remix-node/index.ts +++ b/packages/remix-node/index.ts @@ -1,5 +1,3 @@ -export { AbortController } from "abort-controller"; - export type { HeadersInit, RequestInfo, diff --git a/packages/remix-node/package.json b/packages/remix-node/package.json index aa6a4c582c6..5e25f105acd 100644 --- a/packages/remix-node/package.json +++ b/packages/remix-node/package.json @@ -22,7 +22,6 @@ "@remix-run/web-file": "^3.0.3", "@remix-run/web-stream": "^1.0.4", "@web3-storage/multipart-parser": "^1.0.0", - "abort-controller": "^3.0.0", "cookie-signature": "^1.1.0", "source-map-support": "^0.5.21", "stream-slice": "^0.1.2" diff --git a/packages/remix-react/package.json b/packages/remix-react/package.json index ef5d77fec30..ef64c08b35e 100644 --- a/packages/remix-react/package.json +++ b/packages/remix-react/package.json @@ -24,7 +24,6 @@ "@testing-library/jest-dom": "^5.16.2", "@testing-library/react": "^13.3.0", "@types/react": "^18.0.15", - "abort-controller": "^3.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "typescript": "^5.1.0" diff --git a/packages/remix-vercel/package.json b/packages/remix-vercel/package.json index ad620e96118..b07830880a0 100644 --- a/packages/remix-vercel/package.json +++ b/packages/remix-vercel/package.json @@ -17,6 +17,7 @@ "@remix-run/node": "1.19.2" }, "devDependencies": { + "@types/node": "^18.17.1", "@types/supertest": "^2.0.10", "@vercel/node": "^2.12.0", "node-mocks-http": "^1.10.1", diff --git a/packages/remix-vercel/server.ts b/packages/remix-vercel/server.ts index ba32640e756..6380072eaeb 100644 --- a/packages/remix-vercel/server.ts +++ b/packages/remix-vercel/server.ts @@ -6,7 +6,6 @@ import type { Response as NodeResponse, } from "@remix-run/node"; import { - AbortController as NodeAbortController, createRequestHandler as createRemixRequestHandler, Headers as NodeHeaders, Request as NodeRequest, @@ -85,15 +84,13 @@ export function createRemixRequest( let url = new URL(`${protocol}://${host}${req.url}`); // Abort action/loaders once we can no longer write a response - let controller = new NodeAbortController(); + let controller = new AbortController(); res.on("close", () => controller.abort()); let init: NodeRequestInit = { method: req.method, headers: createRemixHeaders(req.headers), - // Cast until reason/throwIfAborted added - // https://github.com/mysticatea/abort-controller/issues/36 - signal: controller.signal as NodeRequestInit["signal"], + signal: controller.signal, }; if (req.method !== "GET" && req.method !== "HEAD") { diff --git a/yarn.lock b/yarn.lock index 64420465be4..f8d83b59222 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3233,7 +3233,7 @@ resolved "https://registry.npmjs.org/@types/node/-/node-14.18.16.tgz" integrity sha512-X3bUMdK/VmvrWdoTkz+VCn6nwKwrKCFTHtqwBIaQJNx4RUIBBUFXM00bqPz/DsDd+Icjmzm6/tyYZzeGVqb6/Q== -"@types/node@^18.17.1": +"@types/node@^18.17.1", "@types/node@^18.17.1": version "18.17.1" resolved "https://registry.npmjs.org/@types/node/-/node-18.17.1.tgz#84c32903bf3a09f7878c391d31ff08f6fe7d8335" integrity sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw== @@ -3788,11 +3788,6 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -abortcontroller-polyfill@^1.7.3: - version "1.7.3" - resolved "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz" - integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q== - accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz"