openapi-typescript
openapi-typescript copied to clipboard
allow Request class to be provided in options (#1563)
Changes
What does this PR change? Link to any related issue(s).
Allows you to provide the Request class to use.
see: https://github.com/drwpow/openapi-typescript/issues/1563
Caused issues for us using node 20's fetch, unidici's fetch, and node-fetch in different places.
Providing back as a base for someone else to continue, I may not have time soon.
How to Review
How can a reviewer review your changes? What should be kept in mind for this review?
Checklist
- [ ] Unit tests updated
- [ ]
docs/
updated (if necessary) - [ ]
pnpm run update:examples
run (only applicable for openapi-typescript)
⚠️ No Changeset found
Latest commit: 94070f1688a73d9a87eb7e9fa534b0a649bcf6ce
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
Click here to learn what changesets are, and how to add one.
Click here if you're a maintainer who wants to add a changeset to this PR
Yup this is looking great, and what I was thinking. This will need 2 things:
- A simple test (which proves the types and runtime work as-expected)
- A
patch
changeset (see comment). Patch is sufficient because pre 1.0, minor means “breaking change” which this shouldn’t be.
I had issues with the Request & the fetch on Vercel's environment.
The fix we used was in two steps:
- Provide a custom fetch for the client
export const OpenAPI = createClient<paths>({
baseUrl: env.API_URL,
fetch(request) {
return fetch(request.url, request);
},
});
- Make middleware return a new Request with two arguments instead of just returning the received request
const authMiddleware: Middleware = {
onRequest(req) {
if (UNPROTECTED_ROUTES.some((pathname) => req.url.startsWith(pathname))) {
return undefined;
}
req.headers.set("Authorization", `Bearer ${accessToken}`);
return new Request(req.url, req);
},
};
We lost a few hours debugging this and I'm still unsure what was the cause but it was related to the fetch + Request
Still open to this landing if this PR gets updated resolving the conflicts and passing CI! (the last commit still wasn’t mergeable).
Hey, I would really like that change. Is there any way I can help to get this merged? Seems like it's only about some linting error that unfortunately I cannot see in the logs.
Hey, I would really like that change. Is there any way I can help to get this merged? Seems like it's only about some linting error that unfortunately I cannot see in the logs.
@jscheffner it seems that it is only about linting and some conflicts, feel free to open a new PR so we can merge this.