From 2b29583b1a984d5ee8a9b457f7c00942dca24790 Mon Sep 17 00:00:00 2001 From: Phil Pluckthun Date: Fri, 30 Jan 2026 15:30:34 +0000 Subject: [PATCH] fix: Protect against `node --no-experimental-fetch` (#11) --- .changeset/ready-items-wear.md | 5 +++++ src/webstd.ts | 13 +++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 .changeset/ready-items-wear.md diff --git a/.changeset/ready-items-wear.md b/.changeset/ready-items-wear.md new file mode 100644 index 0000000..3fe7cff --- /dev/null +++ b/.changeset/ready-items-wear.md @@ -0,0 +1,5 @@ +--- +'fetch-nodeshim': patch +--- + +Prevent outright error when `--no-experimental-fetch` is set, which causes `Request`, `Response`, `FormData`, and `Headers` to not be available globally. diff --git a/src/webstd.ts b/src/webstd.ts index bf83cc6..c70eae6 100644 --- a/src/webstd.ts +++ b/src/webstd.ts @@ -81,20 +81,17 @@ interface RequestClass extends Or { init?: _RequestInit | Or ): _Request; } -const _Request: RequestClass = Request; interface _Response extends Or {} interface ResponseClass extends Or { new (body?: BodyInit, init?: _ResponseInit): _Response; } -const _Response: ResponseClass = Response; interface _Headers extends Or {} interface HeadersClass extends Or { new (init?: HeadersInit): _Headers; } -const _Headers: HeadersClass = Headers; interface _FormData extends Or< @@ -103,7 +100,15 @@ interface _FormData > {} interface FormDataClass extends Or {} -const _FormData: FormDataClass = FormData; + +let _Request: RequestClass; +let _Response: ResponseClass; +let _Headers: HeadersClass; +let _FormData: FormDataClass; +if (typeof Request !== 'undefined') _Request = Request; +if (typeof Response !== 'undefined') _Response = Response; +if (typeof Headers !== 'undefined') _Headers = Headers; +if (typeof FormData !== 'undefined') _FormData = FormData; export { type _RequestInit as RequestInit, -- 2.51.2