From fd9ef3d78df1940d5a02f50255899b94b1cf3c49 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Tue, 6 Apr 2021 14:54:10 -0700 Subject: [PATCH] Fix formatResponse typings This typing was added in #3431; it looks like we put the `| null` in the wrong place. Fortunately, a function that's OK with accepting a null argument and will never return null can still typecheck with the new type. Fixes #5009. --- CHANGELOG.md | 1 + docs/source/api/apollo-server.md | 2 +- packages/apollo-server-core/src/graphqlOptions.ts | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e27b455a16..451a7d5c597 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The version headers in this history reflect the versions of Apollo Server itself - `apollo-server-core`: Add optional argument to `ApolloServer.executeOperation` allowing the caller to manually specify an argument to the `config` function analogous to that provided by integration packages. [PR #4166](https://github.com/apollographql/apollo-server/pull/4166) [Issue #2886](https://github.com/apollographql/apollo-server/issues/2886) - `apollo-server-cache-redis`: New `BaseRedisCache` class which takes an `ioredis`-compatible Redis client as an argument. The existing classes `RedisCache` and `RedisClusterCache` (which pass their arguments to `ioredis` constructors) are now implemented in terms of this class. This allows you to use any of the `ioredis` constructor forms rather than just the ones recognized by our classes. This also fixes a long-standing bug where the Redis cache implementations returned a number from `delete()`; it now returns a number, matching what the `KeyValueCache` interface and the TypeScript types expect. [PR #5034](https://github.com/apollographql/apollo-server/pull/5034) [PR #5088](https://github.com/apollographql/apollo-server/pull/5088) [Issue #4870](https://github.com/apollographql/apollo-server/issues/4870) [Issue #5006](https://github.com/apollographql/apollo-server/issues/5006) +- `apollo-server-core`: Fix type for `formatResponse` function. It never is called with a `null` argument, and is allowed to return `null`. [Issue #5009](https://github.com/apollographql/apollo-server/issues/5009) [PR #?](https://github.com/apollographql/apollo-server/pull/?) ## v2.22.2 diff --git a/docs/source/api/apollo-server.md b/docs/source/api/apollo-server.md index e8f20f45ca2..3306e8481aa 100644 --- a/docs/source/api/apollo-server.md +++ b/docs/source/api/apollo-server.md @@ -301,7 +301,7 @@ Provide this function to transform the structure of error objects before they're -Provide this function to transform the structure of GraphQL response objects before they're sent to a client. The function takes a [`GraphQLResponse`](https://github.com/apollographql/apollo-server/blob/main/packages/apollo-server-types/src/index.ts#L77-L82) object and a [`GraphQLRequestContext`](https://github.com/apollographql/apollo-server/blob/main/packages/apollo-server-types/src/index.ts#L95-L130) object, and it should return a `GraphQLResponse` object. +Provide this function to transform the structure of GraphQL response objects before they're sent to a client. The function takes a [`GraphQLResponse`](https://github.com/apollographql/apollo-server/blob/main/packages/apollo-server-types/src/index.ts#L77-L82) object and a [`GraphQLRequestContext`](https://github.com/apollographql/apollo-server/blob/main/packages/apollo-server-types/src/index.ts#L95-L130) object, and it should return a `GraphQLResponse` object, or null to preserve the existing structure. diff --git a/packages/apollo-server-core/src/graphqlOptions.ts b/packages/apollo-server-core/src/graphqlOptions.ts index 8b5d11b2ade..9af8e6bad89 100644 --- a/packages/apollo-server-core/src/graphqlOptions.ts +++ b/packages/apollo-server-core/src/graphqlOptions.ts @@ -50,9 +50,9 @@ export interface GraphQLServerOptions< validationRules?: Array<(context: ValidationContext) => any>; executor?: GraphQLExecutor; formatResponse?: ( - response: GraphQLResponse | null, + response: GraphQLResponse, requestContext: GraphQLRequestContext, - ) => GraphQLResponse + ) => GraphQLResponse | null; fieldResolver?: GraphQLFieldResolver; debug?: boolean; tracing?: boolean;