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

Make private fields protected in QueryManager #11013

Merged
merged 9 commits into from
Jul 5, 2023

Conversation

alessbell
Copy link
Contributor

This PR makes all private fields/methods on the QueryManager class protected, making them accessible to any class that extends QueryManager while remaining inaccessible externally.

The main benefit for our purposes is being able to access type information in the NextSSRApolloClient class which (unsafely) accesses QueryManager methods.

Without going so far as to make these fields public, protected seems like a reasonable middle ground so we can still benefit from TS types in this scenario.

Before

CleanShot 2023-06-26 at 11 53 51

After

Note the number annotation in the D.TS output for foo:
CleanShot 2023-06-26 at 11 53 58

Checklist:

  • If this PR contains changes to the library itself (not necessary for e.g. docs updates), please include a changeset (see CONTRIBUTING.md)
  • If this PR is a new feature, please reference an issue where a consensus about the design was reached (not necessary for small changes)
  • Make sure all of the significant new logic is covered by tests

@changeset-bot
Copy link

changeset-bot bot commented Jun 26, 2023

🦋 Changeset detected

Latest commit: c22ab96

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@apollo/client Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions
Copy link
Contributor

github-actions bot commented Jun 26, 2023

size-limit report 📦

Path Size
dist/apollo-client.min.cjs 36.84 KB (0%)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/main.cjs" 43.38 KB (0%)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/index.js" 32.56 KB (0%)
import { ApolloProvider } from "dist/react/index.js" 1.3 KB (0%)
import { useQuery } from "dist/react/index.js" 4.33 KB (0%)
import { useLazyQuery } from "dist/react/index.js" 4.65 KB (0%)
import { useMutation } from "dist/react/index.js" 2.56 KB (0%)
import { useSubscription } from "dist/react/index.js" 2.31 KB (0%)
import { useSuspenseQuery } from "dist/react/index.js" 3.71 KB (0%)
import { useBackgroundQuery } from "dist/react/index.js" 3.78 KB (0%)
import { useReadQuery } from "dist/react/index.js" 2.48 KB (0%)
import { useFragment } from "dist/react/index.js" 2.12 KB (0%)

@jerelmiller
Copy link
Member

Could we only move over the members that are accessed by NextSSRApolloClient? There is still a lot of QueryManager that will only ever need to be private, so I'd love to keep those that way as much as possible.

@alessbell
Copy link
Contributor Author

@jerelmiller sure, that works too - updated 👍

@@ -144,7 +146,7 @@ export class QueryManager<TStore> {
assumeImmutableResults?: boolean;
}) {
const defaultDocumentTransform = new DocumentTransform(
(document) => this.cache.transformDocument(document),
Copy link
Member

Choose a reason for hiding this comment

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

I really need to fix my editor so that it removes trailing whitespace 🤦‍♂️

Copy link
Member

Choose a reason for hiding this comment

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

Prettier will take care of that soon :)

Copy link
Member

@jerelmiller jerelmiller left a comment

Choose a reason for hiding this comment

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

Appreciate you scoping this down! LGTM

@phryneas
Copy link
Member

phryneas commented Jul 5, 2023

I'm gonna merge this since Alessia is OOO, and there's no good reason to let this sit around any longer :)

@phryneas phryneas merged commit 5ed2cfd into release-3.8 Jul 5, 2023
@phryneas phryneas deleted the make-private-fields-protected-in-QueryManager branch July 5, 2023 11:03
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 5, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants