Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

allow Request class to be provided in options (#1563) #1593

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

elliots
Copy link

@elliots elliots commented Mar 18, 2024

Changes

What does this PR change? Link to any related issue(s).

Allows you to provide the Request class to use.

see: #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)

Copy link

changeset-bot bot commented Mar 18, 2024

⚠️ No Changeset found

Latest commit: 94070f1

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

@@ -87,7 +89,7 @@ export default function createClient(clientOptions) {
request.params = params; // (re)attach params
const result = await m.onRequest(request, mergedOptions);
if (result) {
if (!(result instanceof Request)) {
if (!(result instanceof baseRequest)) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@drwpow
Copy link
Contributor

drwpow commented Mar 18, 2024

Yup this is looking great, and what I was thinking. This will need 2 things:

  1. A simple test (which proves the types and runtime work as-expected)
  2. A patch changeset (see comment). Patch is sufficient because pre 1.0, minor means “breaking change” which this shouldn’t be.

@depsimon
Copy link

depsimon commented Jun 5, 2024

I had issues with the Request & the fetch on Vercel's environment.

The fix we used was in two steps:

  1. Provide a custom fetch for the client
export const OpenAPI = createClient<paths>({
  baseUrl: env.API_URL,
  fetch(request) {
    return fetch(request.url, request);
  },
});
  1. 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

@kerwanp kerwanp requested a review from a team as a code owner June 23, 2024 10:16
@drwpow
Copy link
Contributor

drwpow commented Jun 24, 2024

Still open to this landing if this PR gets updated resolving the conflicts and passing CI! (the last commit still wasn’t mergeable).

@jscheffner
Copy link

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.

@kerwanp
Copy link
Contributor

kerwanp commented Aug 10, 2024

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.

@kerwanp kerwanp added the openapi-fetch Relevant to the openapi-fetch library label Aug 10, 2024
@tobiasdcl
Copy link
Contributor

tobiasdcl commented Sep 10, 2024

I just ran into this requirement as well - here is the PR to implement it

FYI @drwpow 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
openapi-fetch Relevant to the openapi-fetch library
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants