@trpc/client
Version:
28 lines (21 loc) • 739 B
text/typescript
import type { FetchEsque, NativeFetchEsque } from './internals/types';
type AnyFn = (...args: any[]) => unknown;
const isFunction = (fn: unknown): fn is AnyFn => typeof fn === 'function';
/**
* The `fetch` to use: `customFetchImpl` if given, or else the global one.
* Throws if there's none.
*/
export function getFetch(
customFetchImpl?: FetchEsque | NativeFetchEsque,
): FetchEsque {
if (customFetchImpl) {
return customFetchImpl as FetchEsque;
}
if (typeof window !== 'undefined' && isFunction(window.fetch)) {
return window.fetch.bind(window);
}
if (typeof globalThis !== 'undefined' && isFunction(globalThis.fetch)) {
return globalThis.fetch;
}
throw new Error('No fetch implementation found');
}