Skip to content

Commit

Permalink
fix: lib.fetch types using experimental ts-graft discover mode (#100)
Browse files Browse the repository at this point in the history
lib.fetch.d.ts includes all type definitions from the dom and
dom.iterable libs which were reachable from the original cross-fetch
index.d.ts file:

```
git checkout 7b19cda -- index.d.ts
```

lib.fetch.d.ts was generated with the following command:

```
cat <<EOF > .ts-graftrc.yaml \
&& npx ts-graft@2.0.0-1 \
&& rm .ts-graftrc.yaml \
grafts:
  - source: index.d.ts
    output: lib.fetch.d.ts
    include:
      - dom
      - dom.iterable
EOF
```

index.d.ts was then updated to its new state and verified with the
following command:

```
npx tsc --lib ES6 index.d.ts
```

Issue #95 was validated as follows:

```
cat <<EOF > test.ts \
&& npx tsc --target ES6 --moduleResolution node --noEmit  test.ts \
&& rm test.ts
import fetch from "./";
export const customFetch = (
  input: RequestInfo,
  init: RequestInit,
): Promise<Response> => {
  let url = "";
  url += input;
  return fetch(url, init);
};
EOF
```

n.b. consumers must include the dom.iterable lib, which is implied by
the ES6 target, lest their globals lack the required members defined
by dom.iterable.
  • Loading branch information
jstewmon committed Mar 27, 2021
1 parent d46e33f commit d1a6cee
Show file tree
Hide file tree
Showing 4 changed files with 278 additions and 248 deletions.
36 changes: 5 additions & 31 deletions index.d.ts
@@ -1,33 +1,7 @@
import type {
BodyInit,
Headers as BaseHeaders,
HeadersInit,
Request,
RequestInfo,
RequestInit,
Response,
ResponseInit,
} from "./lib.fetch"
import type { Headers as IterHeaders } from "./lib.fetch.iterable";
type Headers = BaseHeaders & IterHeaders;

export const fetch: (input: RequestInfo, init?: RequestInit) => Promise<Response>;

export const Request: {
prototype: Request;
new(input: RequestInfo, init?: RequestInit): Request;
};

export const Response: {
prototype: Response;
new(body?: BodyInit | null, init?: ResponseInit): Response;
error(): Response;
redirect(url: string, status?: number): Response;
};

export const Headers: {
prototype: Headers;
new(init?: HeadersInit): Headers;
};
import * as libFetch from "./lib.fetch";

export const fetch: typeof libFetch.fetch;
export const Request: typeof libFetch.Request;
export const Response: typeof libFetch.Response;
export const Headers: typeof libFetch.Headers;
export default fetch;

0 comments on commit d1a6cee

Please sign in to comment.