Skip to content

Commit

Permalink
Backport #2037: @apollo/subgraph: remove dependency on apollo-server-…
Browse files Browse the repository at this point in the history
…types (#2039)

(Note: as part of backporting, I put out another version
@apollo/cache-control-types@1.0.2 with
apollographql/apollo-utils#173 and will now
forward-port the dependency update.)

apollo-server-types is an Apollo Server 3 package that is going away in
Apollo Server 4, so we don't want `@apollo/subgraph` to depend on it.
This was a build-time-only dependency (it just imported a type and that
type isn't used in the generated .d.ts files) but it would still be
helpful to minimize dependencies so that AS4 users don't also end up
with pieces of AS3 installed.

The new package `@apollo/cache-control-types` also has a function that
implements the "does it look like it's the right cacheControl object?"
itself, and it does not rely on AS3's `declare module` to globally
monkeypatch `cacheControl` onto `GraphQLResolveInfo`'s type definition.

Part of apollographql/apollo-server#6057
  • Loading branch information
glasser committed Aug 4, 2022
1 parent f25a5cb commit d988a4c
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 52 deletions.
3 changes: 2 additions & 1 deletion federation-integration-testsuite-js/src/fixtures/product.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import gql from 'graphql-tag';
import { GraphQLResolverMap } from '../resolverMap';
import { maybeCacheControlFromInfo } from '@apollo/cache-control-types';

export const name = 'product';
export const url = `https://${name}.api.com`;
Expand Down Expand Up @@ -198,7 +199,7 @@ export const resolvers: GraphQLResolverMap<any> = {
__resolveReference(object, _context, info) {
// For testing dynamic cache control; use `?.` because we don't always run
// this fixture in a real ApolloServer.
info.cacheControl?.cacheHint?.restrict({ maxAge: 30 });
maybeCacheControlFromInfo(info)?.cacheHint.restrict({ maxAge: 30 });
if (object.isbn) {
const fetchedObject = products.find(
product => product.isbn === object.isbn,
Expand Down
Loading

0 comments on commit d988a4c

Please sign in to comment.