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,