apollographql/apollo-server
### [`v2.11.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2110)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/dba97895485d6444535a684d4646f1363954f698...056f083ddaf116633e6f759a2b3d69248bb18f66)
- The range of accepted `peerDepedencies` versions for `graphql` has been widened to include `graphql@^15.0.0-rc.2` so as to accommodate the latest release-candidate of the `graphql@15` package, and an intention to support it when it is finally released on the `latest` npm tag. While this change will subdue peer dependency warnings for Apollo Server packages, many dependencies from outside of this repository will continue to raise similar warnings until those packages own `peerDependencies` are updated. It is unlikely that all of those packages will update their ranges prior to the final version of `graphql@15` being released, but if everything is working as expected, the warnings can be safely ignored. [PR #3825](https://togithub.com/apollographql/apollo-server/pull/3825)
### [`v2.10.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2101)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/9c0aa1e661ccc2c5a1471b781102637dd47e21b1...dba97895485d6444535a684d4646f1363954f698)
- `apollo-server-core`: Update GraphQL Playground to latest version to remove a rogue curly-brace appearing in the top-right corner of the interface under certain conditions. [PR #3702](https://togithub.com/apollographql/apollo-server/pull/3702) [Playground PR](https://togithub.com/apollographql/graphql-playground/pull/21)
- `apollo-server-core`: Typings: Allow the `cache` property inside `persistedQueries` to be optional. This was already optional at runtime where it defaults to the top-level global cache when unspecified, but with the introduction of the `ttl` property, it now makes sense that one may be provided without the other. [#3671](https://togithub.com/apollographql/apollo-server/pull/3671)
### [`v2.10.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2100)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/4d1a75e318897c335674c7ee046c0baec7df4a9b...9c0aa1e661ccc2c5a1471b781102637dd47e21b1)
- `apollo-server-express`: Support `CorsOptionsDelegate` type on `cors` parameter to `applyMiddleware`, to align with the supported type of the underlying [`cors`](https://npm.im/cors) middleware [itself](https://togithub.com/DefinitelyTyped/DefinitelyTyped/blob/31483b781ac30f98bdf4d40a517e921f2fc2ce37/types/cors/index.d.ts#L32). [#3613](https://togithub.com/apollographql/apollo-server/pull/3613)
- `apollo-server-core`: Allow asynchronous initialization of datasources: the `initialize` method on datasources may now return a Promise, which will be settled before any resolvers are called. [#3639](https://togithub.com/apollographql/apollo-server/pull/3639)
- `apollo-server-core`: experimental: Allow configuration of the parsed/validated document store by introducing an `experimental_approximateDocumentStoreMiB` property to the `ApolloServer` constructor options which overrides the default cache size of 30MiB. [#3755](https://togithub.com/apollographql/apollo-server/pull/3755)
### [`v2.9.16`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2916)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/0743d6b2f1737758cf09e80d2086917772bc00c9...4d1a75e318897c335674c7ee046c0baec7df4a9b)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/4d1a75e318897c335674c7ee046c0baec7df4a9b)
- `apollo-server-core`: Update apollo-tooling dependencies, resolve TS build error (missing types for node-fetch) [#3662](https://togithub.com/apollographql/apollo-server/pull/3662)
### [`v2.9.15`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2915)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/ad5eac5ea1741142122e4cb8fd34a9748be31e89...0743d6b2f1737758cf09e80d2086917772bc00c9)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/0743d6b2f1737758cf09e80d2086917772bc00c9)
- `apollo-engine-reporting`: Fix regression introduced by [#3614](https://togithub.com/apollographql/apollo-server/pull/3614) which caused `PersistedQueryNotFoundError`, `PersistedQueryNotSupportedError` and `InvalidGraphQLRequestError` errors to be triggered before the `requestDidStart` handler triggered `treeBuilder`'s `startTiming` method. This fix preserves the existing behavior by special-casing these specific errors. [#3638](https://togithub.com/apollographql/apollo-server/pull/3638) fixes [#3627](https://togithub.com/apollographql/apollo-server/issues/3627)
- `apollo-server-cloud-functions`: Transmit CORS headers on `OPTIONS` request. [#3557](https://togithub.com/apollographql/apollo-server/pull/3557)
- `apollo-server-caching`: De-compose options interface for `KeyValueCache.prototype.set` to accommodate better TSDoc annotations for its properties (e.g. to specify that `ttl` is defined in _seconds_). [#3619](https://togithub.com/apollographql/apollo-server/pull/3619)
- `apollo-server-core`, `apollo-server-caching`: Introduce a `ttl` property, specified in seconds, on the options for automated persisted queries (APQ) which applies specific TTL settings to the cache `set`s during APQ registration. Previously, all APQ cache records were set to 300 seconds. Additionally, this adds support (to the underlying `apollo-server-caching` mechanisms) for a time-to-live (TTL) value of `null` which, when supported by the cache implementation, skips the assignment of a TTL value altogether. This allows the cache's controller to determine when eviction happens (e.g. cache forever, and purge least recently used when the cache is full), which may be desireable for network cache stores (e.g. Memcached, Redis). [#3623](https://togithub.com/apollographql/apollo-server/pull/3623)
- `apollo-server-core`: Upgrade TS to 3.7.3 [#3618](https://togithub.com/apollographql/apollo-server/pull/3618)
### [`v2.9.14`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2914)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/a0a60e73e04e913d388de8324f7d17e4406deea2...ad5eac5ea1741142122e4cb8fd34a9748be31e89)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/ad5eac5ea1741142122e4cb8fd34a9748be31e89)
- `apollo-server-core`: Ensure that plugin's `didEncounterErrors` hooks are invoked for known automated persisted query (APQ) errors. [#3614](https://togithub.com/apollographql/apollo-server/pull/3614)
- `apollo-server-plugin-base`: Move `TContext` generic from `requestDidStart` method to `ApolloServerPlugin` Interface. [#3525](https://togithub.com/apollographql/apollo-server/pull/3525)
### [`v2.9.13`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2913)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/8d065d8b8b7f35f814695e74f5c685b7d68d5e00...a0a60e73e04e913d388de8324f7d17e4406deea2)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/a0a60e73e04e913d388de8324f7d17e4406deea2)
- `@apollo/gateway`: Add `@types/node-fetch` as a regular dependency to avoid missing dependency for TypeScript consumers. [#3546](https://togithub.com/apollographql/apollo-server/pull/3546) fixes [#3471](https://togithub.com/apollographql/apollo-server/issues/3471)
- `apollo-engine-reporting`: Declare acceptable `graphql` versions ranges in `peerDependencies` rather than allowing it to occur implicitly (and less ideally) via its consumers (e.g. most `apollo-server-*` packages). [#3496](https://togithub.com/apollographql/apollo-server/pull/3496)
### [`v2.9.12`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2912)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/d49e4d2038df4f5aae824a98ddb21dca909051a9...8d065d8b8b7f35f814695e74f5c685b7d68d5e00)
- Reinstate [#3530](https://togithub.com/apollographql/apollo-server/pull/3530) via [#3539](https://togithub.com/apollographql/apollo-server/pull/3539) - after a patch release of the `@apollo/protobufjs` fork, the build issue for consumers should be resolved.
### [`v2.9.11`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2911)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/2a4c654986a158aaccf947ee56a4bfc48a3173c7...d49e4d2038df4f5aae824a98ddb21dca909051a9)
- Revert [#3530](https://togithub.com/apollographql/apollo-server/pull/3530) via [#3535](https://togithub.com/apollographql/apollo-server/pull/3535)- the introduction of the `@apollo/protobufjs` fork is causing TS errors in consumer projects. Reverting this change for now, and will reintroduce it after the issue is resolved within the forked package.
### [`v2.9.10`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2910)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/93002737d53dd9a50b473ab9cef14849b3e539aa...2a4c654986a158aaccf947ee56a4bfc48a3173c7)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/2a4c654986a158aaccf947ee56a4bfc48a3173c7)
- `apollo-engine-reporting`: Swap usage of `protobufjs` for a newly published fork located at [`@apollo/protobufjs`](https://npm.im/@apollo/protobufjs). This is to account for the [relative uncertainty](https://togithub.com/protobufjs/protobuf.js/issues/1199) into the continued on-going maintenance of the official `protobuf.js` project. This should immediately resolve a bug that affected `Long` types in `apollo-engine-reporting` and other non-Apollo projects that rely on `protobuf.js`'s `Long` type. [#3530](https://togithub.com/apollographql/apollo-server/pull/3530)
### [`v2.9.9`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v299)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/3cdde1b7a71ace6411fbacf82a1a61bf737444a6...93002737d53dd9a50b473ab9cef14849b3e539aa)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/93002737d53dd9a50b473ab9cef14849b3e539aa)
- `apollo-server-core`: Don't try parsing `variables` and `extensions` as JSON if they are defined but empty strings. [#3501](https://togithub.com/apollographql/apollo-server/pull/3501)
- `apollo-server-lambda`: Introduce `onHealthCheck` on `createHandler` in the same fashion as implemented in other integrations. [#3458](https://togithub.com/apollographql/apollo-server/pull/3458)
- `apollo-server-core`: Use `graphql`'s `isSchema` to more defensively check the user-specified schema's type at runtime and prevent unexpected errors. [#3462](https://togithub.com/apollographql/apollo-server/pull/3462)
### [`v2.9.8`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v298)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/5d94e986f04457ec17114791ee6db3ece4213dd8...3cdde1b7a71ace6411fbacf82a1a61bf737444a6)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/3cdde1b7a71ace6411fbacf82a1a61bf737444a6)
- `apollo-server-core`: Provide accurate type for `formatResponse` rather than generic `Function` type. [#3431](https://togithub.com/apollographql/apollo-server/pull/3431)
- `apollo-server-core`: Pass complete request context to `formatResponse`, rather than just `context`. [#3431](https://togithub.com/apollographql/apollo-server/pull/3431)
### [`v2.9.7`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v297)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/fc7462ec5f8604bd6cba99aa9a377a9b8e045566...5d94e986f04457ec17114791ee6db3ece4213dd8)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/5d94e986f04457ec17114791ee6db3ece4213dd8)
- `apollo-server-errors`: Fix `ApolloError` bug and `GraphQLError` spec compliance [#3408](https://togithub.com/apollographql/apollo-server/pull/3408)
### [`v2.9.6`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v296)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/aa200ce24b834320fc79d2605dac340b37d3e434...fc7462ec5f8604bd6cba99aa9a377a9b8e045566)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/fc7462ec5f8604bd6cba99aa9a377a9b8e045566)
- `@apollo/gateway`, `@apollo/federation`, `apollo-engine-reporting`: Update `apollo-graphql` dependency to bring in [`apollo-tooling`'s #1551](https://togithub.com/apollographql/apollo-tooling/pull/1551) which resolve runtime errors when its source is minified. While this fixes a particular minification bug when Apollo Server packages are minified, we _do not_ recommend minification of server code in most cases. [#3387](https://togithub.com/apollographql/apollo-server/pull/3387) fixes [#3335](https://togithub.com/apollographql/apollo-server/issues/3335)
- `apollo-server-koa`: Correctly declare dependency on `koa-compose`. [#3356](https://togithub.com/apollographql/apollo-server/pull/3356)
- `apollo-server-core`: Preserve any `extensions` that have been placed on the response when pre-execution errors occur. [#3394](https://togithub.com/apollographql/apollo-server/pull/3394)
### [`v2.9.5`](https://togithub.com/apollographql/apollo-server/compare/6100fb5e0797cd1f578ded7cb77b60fac47e58e3...aa200ce24b834320fc79d2605dac340b37d3e434)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/6100fb5e0797cd1f578ded7cb77b60fac47e58e3...aa200ce24b834320fc79d2605dac340b37d3e434)
### [`v2.9.4`](https://togithub.com/apollographql/apollo-server/compare/a1fbf95fc01739d5cbaa59919149bb85c563fdaa...6100fb5e0797cd1f578ded7cb77b60fac47e58e3)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/a1fbf95fc01739d5cbaa59919149bb85c563fdaa...6100fb5e0797cd1f578ded7cb77b60fac47e58e3)
### [`v2.9.3`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v293)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/92ea402a90bf9817c9b887707abbd77dcf5edcb4...a1fbf95fc01739d5cbaa59919149bb85c563fdaa)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/a1fbf95fc01739d5cbaa59919149bb85c563fdaa)
- `apollo-server-express`: Add direct dependency on `express` to allow for usage of `express.Router` for `getMiddleware` functionality (from [#2435](https://togithub.com/apollographql/apollo-server/pull/2435)). Previously, unlike other server integration packages, `apollo-server-express` did not directly need `express` as a dependency since it only relied on `express` for TypeScript typings. [#3239](https://togithub.com/apollographql/apollo-server/pull/3239) fixes [#3238](https://togithub.com/apollographql/apollo-server/issues/3238)
- `apollo-server-lambda`: Add `@types/aws-lambda` as a direct dependency to `apollo-server-express` to allow usage of its typings without needing to separately install it. [#3242](https://togithub.com/apollographql/apollo-server/pull/3242) fixes [#2351](https://togithub.com/apollographql/apollo-server/issue/2351)
### [`v2.9.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v292)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/029c8dca3af812ee70589cdb6de749df3d2843d8...92ea402a90bf9817c9b887707abbd77dcf5edcb4)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/92ea402a90bf9817c9b887707abbd77dcf5edcb4)
- `apollo-server-koa`: **Drop support for Node.js v6 within the Apollo Server Koa integration in order to update `koa-bodyparser` dependency from `v3.0.0` to `v4.2.1`.** [#3229](https://togithub.com/apollographql/apollo-server/pull/3229) fixes [#3050](https://togithub.com/apollographql/apollo-server/issues/3050)
- `apollo-server-express`: Use explicit return type for new `getMiddleware` method. [#3230](https://togithub.com/apollographql/apollo-server/pull/3230) (hopefully) fixes [#3222](https://togithub.com/apollographql/apollo-server/issues/3222)
### [`v2.9.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2916)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/6037f6e80fdaa53b50b99ae94d93c724c382c23c...029c8dca3af812ee70589cdb6de749df3d2843d8)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/4d1a75e318897c335674c7ee046c0baec7df4a9b)
- `apollo-server-core`: Update apollo-tooling dependencies, resolve TS build error (missing types for node-fetch) [#3662](https://togithub.com/apollographql/apollo-server/pull/3662)
### [`v2.9.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v290)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/99f78c6782bce170186ba6ef311182a8c9f281b7...6037f6e80fdaa53b50b99ae94d93c724c382c23c)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/6037f6e80fdaa53b50b99ae94d93c724c382c23c)
- `apollo-server-express`, `apollo-server-koa`: A new `getMiddleware` method has been introduced, which accepts the same parameters as `applyMiddleware` with the exception of the `app` property. This allows implementors to obtain the middleware directly and "`use`" it within an existing `app`. In the near-term, this should ease some of the pain points with the previous technique. Longer-term, we are exploring what we consider to be a much more natural approach by introducing an "HTTP transport" in Apollo Server 3.x. See [this proposal issue](https://togithub.com/apollographql/apollo-server/issues/3184) for more information. [#2435](https://togithub.com/apollographql/apollo-server/pull/2435)
- `@apollo/federation`: `buildFederatedSchema`'s `typeDefs` parameter now accepts arrays of `DocumentNode`s (i.e. type definitions wrapped in `gql`) and `resolvers` to make the migration from a single service into a federated service easier for teams previously utilizing this pattern. [#3188](https://togithub.com/apollographql/apollo-server/pull/3188)
### [`v2.8.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v282)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/84d80eba10d87663dab60af4a1cd46bccf30513f...99f78c6782bce170186ba6ef311182a8c9f281b7)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/99f78c6782bce170186ba6ef311182a8c9f281b7)
- `apollo-server-koa`: Update dependency koa to v2.8.1. [PR #3175](https://togithub.com/apollographql/apollo-server/pull/3175)
- `apollo-server-express`: Update types exported by the ASE package. [PR #3173](https://togithub.com/apollographql/apollo-server/pull/3175) [PR #3172](https://togithub.com/apollographql/apollo-server/pull/3172)
### [`v2.8.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v281)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/ddeb71f8d6a0f3c91646aa0c7c99d2003b5bf73f...84d80eba10d87663dab60af4a1cd46bccf30513f)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/84d80eba10d87663dab60af4a1cd46bccf30513f)
- `apollo-engine-reporting`: Fix reporting errors which have non-array `path` fields (eg, non-GraphQLError errors). [PR #3112](https://togithub.com/apollographql/apollo-server/pull/3112)
- `apollo-engine-reporting`: Add missing `apollo-server-caching` dependency. [PR #3054](https://togithub.com/apollographql/apollo-server/pull/3054)
- `apollo-server-hapi`: Revert switch from `accept` and `boom` which took place in v2.8.0. [PR #3089](https://togithub.com/apollographql/apollo-server/pull/3089)
- `@apollo/gateway`: Change the `setInterval` timer, which is used to continuously check for updates to a federated graph from the Apollo Graph Manager, to be an `unref`'d timer. Without this change, the server wouldn't terminate properly once polling had started since the event-loop would continue to have unprocessed events on it. [PR #3105](https://togithub.com/apollographql/apollo-server/pull/3105)
- Switch to using community `@types/graphql-upload` types.
- `apollo-server-fastify`: Change the typing of the HTTP `response` from `OutgoingMessage` to `ServerResponse`. [Commit](https://togithub.com/apollographql/apollo-server/commit/7638f643fa0445f5f8151ef884da779d85fb954c)
- `apollo-server-hapi`: Pass the `raw` request and response objects to `graphql-upload`s `processRequest` method to align on the same TypeScript types. [Commit](https://togithub.com/apollographql/apollo-server/commit/8e49b288a6aecd0e134637e64ef4ed751aa8d304)
### [`v2.8.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v280)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/d0b33f20ba4731c071d6fd8cfaeca1a1f3d83e4b...ddeb71f8d6a0f3c91646aa0c7c99d2003b5bf73f)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/ddeb71f8d6a0f3c91646aa0c7c99d2003b5bf73f)
- `@apollo/federation`: Add support for "value types", which are type definitions which live on multiple services' types, inputs, unions or interfaces. These common types must be identical by name, kind and field across all services. [PR #3063](https://togithub.com/apollographql/apollo-server/pull/3063)
- `apollo-server-express`: Use the Express `send` method, rather than calling `net.Socket.prototype.end`. [PR #2842](https://togithub.com/apollographql/apollo-server/pull/2842)
- `apollo-server-hapi`: Update internal dependencies to use scoped packages `@hapi/accept` and `@hapi/boom`, in place of `accept` and `boom` respectively. [PR #3089](https://togithub.com/apollographql/apollo-server/pull/3089)
### [`v2.7.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v272)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/2f87e4af9a6f1e3c8f4c51b4f77860bd3150c8c6...d0b33f20ba4731c071d6fd8cfaeca1a1f3d83e4b)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/d0b33f20ba4731c071d6fd8cfaeca1a1f3d83e4b)
- `apollo-engine-reporting`: Fix reporting errors from backend. (The support for federated metrics introduced in v2.7.0 did not properly handle GraphQL errors from the backend; all users of federated metrics should upgrade to this version.) [PR #3056](https://togithub.com/apollographql/apollo-server/pull/3056) [Issue #3052](https://togithub.com/apollographql/apollo-server/issues/3052)
- `apollo-engine-reporting`: Clean up `SIGINT` and `SIGTERM` handlers when `EngineReportingAgent` is stopped; fixes 'Possible EventEmitter memory leak detected' log. [PR #3090](https://togithub.com/apollographql/apollo-server/pull/3090)
### [`v2.7.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v271)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/1d44f3d4756d43123eb01bf293e65f4a3c2e64c8...2f87e4af9a6f1e3c8f4c51b4f77860bd3150c8c6)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/2f87e4af9a6f1e3c8f4c51b4f77860bd3150c8c6)
- `apollo-engine-reporting`: If an error is thrown by a custom variable transform function passed into the reporting option `sendVariableValues: { transform: ... }`, all variable values will be replaced with the string `[PREDICATE_FUNCTION_ERROR]`.
- `apollo-server-express`: Typing fix for the `connection` property, which was missing from the `ExpressContext` interface. [PR #2959](https://togithub.com/apollographql/apollo-server/pull/2959)
- `@apollo/gateway`: Ensure execution of correct document within multi-operation documents by including the `operationName` in the cache key used when caching query plans used in federated execution. [PR #3084](https://togithub.com/apollographql/apollo-server/pull/3084)
### [`v2.7.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v270)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/57210129cda034b095d3f227298021feddda03f7...1d44f3d4756d43123eb01bf293e65f4a3c2e64c8)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/1d44f3d4756d43123eb01bf293e65f4a3c2e64c8)
- `apollo-engine-reporting`: **Behavior change**: By default, send no GraphQL variable values to Apollo's servers instead of sending all variable values. Adding the new EngineReportingOption `sendVariableValues` to send some or all variable values, possibly after transforming them. This replaces the `privateVariables` option, which is now deprecated. [PR #2931](https://togithub.com/apollographql/apollo-server/pull/2931)
To maintain the previous behavior of transmitting **all** GraphQL variable values, unfiltered, to Apollo Engine, configure `engine`.`sendVariableValues` as follows:
```js
engine: {
sendVariableValues: { all: true }
}
```
- `apollo-engine-reporting`: **Behavior change**: By default, send no GraphQL request headers and values to Apollo's servers instead of sending all. Adding the new EngineReportingOption `sendHeaders` to send some or all header values. This replaces the `privateHeaders` option, which is now deprecated. [PR #2931](https://togithub.com/apollographql/apollo-server/pull/2931)
To maintain the previous behavior of transmitting **all** GraphQL request headers and values, configure `engine`.`sendHeaders` as following:
```js
engine: {
sendHeaders: { all: true }
}
```
- `apollo-engine-reporting`: **Behavior change**: If the error returned from the `engine.rewriteError` hook has an `extensions` property, that property will be used instead of the original error's extensions. Document that changes to most other `GraphQLError` fields by `engine.rewriteError` are ignored. [PR #2932](https://togithub.com/apollographql/apollo-server/pull/2932)
- `apollo-engine-reporting`: **Behavior change**: The `engine.maskErrorDetails` option, deprecated by `engine.rewriteError` in v2.5.0, now behaves a bit more like the new option: while all error messages will be redacted, they will still show up on the appropriate nodes in a trace. [PR #2932](https://togithub.com/apollographql/apollo-server/pull/2932)
- `apollo-server-core`, `@apollo/gateway`: **Introduced managed federation support**. For more information on managed federation, see [the blog post](https://blog.apollographql.com/announcing-managed-federation-265c9f0bc88e) or jump to the [documentation for managed federation](https://www.apollographql.com/docs/platform/federation/).
- `@apollo/gateway@0.7.1`: Don't print a warning about an unspecified "graph variant" (previously, and in many ways still, known as "schema tag") every few seconds. We do highly recommend specifying one when using the Apollo Platform features though! [PR #3043](https://togithub.com/apollographql/apollo-server/pull/3043)
- `graphql-playground`: Update to resolve incorrect background color on tabs when using the `light` theme. [PR #2989](https://togithub.com/apollographql/apollo-server/pull/2989) [Issue #2979](https://togithub.com/apollographql/apollo-server/issues/2979)
- `graphql-playground`: Fix "Query Planner" and "Tracing" panels which were off the edge of the viewport.
- `apollo-server-plugin-base`: Fix `GraphQLRequestListener` type definitions to allow `return void`. [PR #2368](https://togithub.com/apollographql/apollo-server/pull/2368)
### [`v2.6.9`](https://togithub.com/apollographql/apollo-server/compare/a06594117dbbf1e8abdb7b366b69a94ab808b065...57210129cda034b095d3f227298021feddda03f7)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/a06594117dbbf1e8abdb7b366b69a94ab808b065...57210129cda034b095d3f227298021feddda03f7)
### [`v2.6.8`](https://togithub.com/apollographql/apollo-server/compare/183de5f112324def375a45c239955e1bf1608fae...a06594117dbbf1e8abdb7b366b69a94ab808b065)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/183de5f112324def375a45c239955e1bf1608fae...a06594117dbbf1e8abdb7b366b69a94ab808b065)
### [`v2.6.7`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v267)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/26db63cbd5adf54b07a5b67c0e0fbff8e61c79aa...183de5f112324def375a45c239955e1bf1608fae)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/183de5f112324def375a45c239955e1bf1608fae)
- `apollo-server-core`: Guard against undefined property access in `isDirectiveDefined` which resulted in "Cannot read property 'some' of undefined" error. [PR #2924](https://togithub.com/apollographql/apollo-server/pull/2924) [Issue #2921](https://togithub.com/apollographql/apollo-server/issues/2921)
### [`v2.6.6`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v266)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/a2b2a0d8f013826d08433129a69834035e04f1d5...26db63cbd5adf54b07a5b67c0e0fbff8e61c79aa)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/26db63cbd5adf54b07a5b67c0e0fbff8e61c79aa)
- `apollo-server-core`: Avoid duplicate `cacheControl` directives being added via `isDirectiveDefined`, re-landing the implementation reverted in v2.6.1 which first surfaced in v2.6.0. [PR #2762](https://togithub.com/apollographql/apollo-server/pull/2762) [Reversion PR #2754](https://togithub.com/apollographql/apollo-server/pull/2754) [Original PR #2428](https://togithub.com/apollographql/apollo-server/pull/2428)
- `apollo-server-testing`: Add TypeScript types for `apollo-server-testing` client. [PR #2871](https://togithub.com/apollographql/apollo-server/pull/2871)
- `apollo-server-plugin-response-cache`: Fix undefined property access attempt which occurred when an incomplete operation was received. [PR #2792](https://togithub.com/apollographql/apollo-server/pull/2792) [Issue #2745](https://togithub.com/apollographql/apollo-server/issues/2745)
### [`v2.6.5`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v265)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/e6929134939c653fc817ed2b8172b4ee42406bcc...a2b2a0d8f013826d08433129a69834035e04f1d5)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/a2b2a0d8f013826d08433129a69834035e04f1d5)
- `apollo-engine-reporting`: Simplify the technique for capturing `operationName`. [PR #2899](https://togithub.com/apollographql/apollo-server/pull/2899)
- `apollo-server-core`: Fix regression in 2.6.0 which caused `engine: false` not to disable Engine when the `ENGINE_API_KEY` environment variable was set. [PR #2850](https://togithub.com/apollographql/apollo-server/pull/2850)
- `@apollo/federation`: Introduced a `README.md`. [PR #2883](https://togithub.com/apollographql/apollo-server/pull/2883)
- `@apollo/gateway`: Introduced a `README.md`. [PR #2883](https://togithub.com/apollographql/apollo-server/pull/2883)
### [`v2.6.4`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v264)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/9af8063d7c2fdd56dad5144604aef78781ed5727...e6929134939c653fc817ed2b8172b4ee42406bcc)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/596e2f20e090d2f860d238058118d860a72b3be4)
- `@apollo/gateway`: Pass `context` through to the `graphql` command in `LocalGraphQLDataSource`'s `process` method. [PR #2821](https://togithub.com/apollographql/apollo-server/pull/2821)
- `@apollo/gateway`: Fix gateway not sending needed variables for subqueries not at the root level. [PR #2867](https://togithub.com/apollographql/apollo-server/pull/2867)
- `@apollo/federation`: Allow matching enums/scalars in separate services and validate that enums have matching values. [PR #2829](https://togithub.com/apollographql/apollo-server/pull/2829).
- `@apollo/federation`: Strip `@external` fields from interface extensions. [PR #2848](https://togithub.com/apollographql/apollo-server/pull/2848)
- `@apollo/federation`: Add support for list type keys in federation. [PR #2841](https://togithub.com/apollographql/apollo-server/pull/2841)
- `@apollo/federation`: Deduplicate variable definitions for sub-queries. [PR #2840](https://togithub.com/apollographql/apollo-server/pull/2840)
### [`v2.6.3`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v263)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/4fdf6f2aa2f14854b54b0d6de7d477afc7702916...9af8063d7c2fdd56dad5144604aef78781ed5727)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/bdf634d4884774fa81fb22475aa4bd8178025762)
- `apollo-engine-reporting`: Set `forbiddenOperation` and `registeredOperation` later in the request lifecycle. [PR #2828](https://togithub.com/apollographql/apollo-server/pull/2828)
- `apollo-server-core`: Add `queryHash` to `GraphQLExecutor` for federation. [PR #2822](https://togithub.com/apollographql/apollo-server/pull/2822)
- `@apollo/federation`: Preserve descriptions from SDL of federated services. [PR #2830](https://togithub.com/apollographql/apollo-server/pull/2830)
### [`v2.6.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v262)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/77b044169d61dd50f8426a1ba87710cf38fefd36...4fdf6f2aa2f14854b54b0d6de7d477afc7702916)
- `apollo-engine-reporting-protobuf`: Update protobuf to include `forbiddenOperations` and `registeredOperations`. [PR #2768](https://togithub.com/apollographql/apollo-server/pull/2768)
- `apollo-server-core`: Add `forbiddenOperation` and `registeredOperation` to `GraphQLRequestMetrics` type. [PR #2768](https://togithub.com/apollographql/apollo-server/pull/2768)
- `apollo-engine-reporting`: Set `forbiddenOperation` and `registeredOperation` on trace if the field is true on `requestContext.metrics`. [PR #2768](https://togithub.com/apollographql/apollo-server/pull/2768)
- `apollo-server-lambda`: Remove `Object.fromEntries` usage. [PR #2787](https://togithub.com/apollographql/apollo-server/pull/2787)
### [`v2.6.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v261)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/dcab64689dec2d00a9c6d302c7c05c5ab847e855...77b044169d61dd50f8426a1ba87710cf38fefd36)
- Revert: Don't add `cacheControl` directive if one has already been defined. Presently, although the TypeScript don't suggest it, passing a `String` as `typeDefs` to `ApolloServer` is supported and this would be a breaking change for non-TypeScript users. [PR #2428](https://togithub.com/apollographql/apollo-server/pull/2428)
### [`v2.6.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v260)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/5814f0a9f53cfff131f0b127301866f9242ce196...dcab64689dec2d00a9c6d302c7c05c5ab847e855)
- `apollo-server-core`: Introduce new `didEncounterErrors` life-cycle hook which has access to unformatted `errors` property on the `requestContext`, which is the first positional parameter that this new request life-cycle receives. [PR #2719](https://togithub.com/apollographql/apollo-server/pull/2719)
- `apollo-server-core`: Allow request pipeline life-cycle hooks (i.e. plugins) to modify the response's `http.status` code (an integer) in the event of an error. When combined with the new `didEncounterErrors` life-cycle hook (see above), this will allow modifying the HTTP status code in the event of an error. [PR #2714](https://togithub.com/apollographql/apollo-server/pull/2714)
- `apollo-server-lambda`: Set `callbackWaitsForEmptyEventLoop` to `false` for `OPTIONS` requests to return as soon as the `callback` is triggered instead of waiting for the event loop to empty. [PR #2638](https://togithub.com/apollographql/apollo-server/pull/2638)
- `apollo-server`: Support `onHealthCheck` in the `ApolloServer` constructor in the same way as `cors` is supported. This contrasts with the `-express`, `-hapi`, etc. variations which accept this parameter via their `applyMiddleware` methods and will remain as-is. [PR #2672](https://togithub.com/apollographql/apollo-server/pull/2672)
- core: Expose SHA-512 hex hash digest of the Engine API key to plugins, when available, as `engine.apiKeyHash`. [PR #2685](https://togithub.com/apollographql/apollo-server/pull/2685) [PR #2736](https://togithub.com/apollographql/apollo-server/pull/2736)
- `apollo-datasource-rest`: If another `Content-type` is already set on the response, don't overwrite it with `application/json`, allowing the user's initial `Content-type` to prevail. [PR #2520](https://togithub.com/apollographql/apollo-server/issues/2035)
- Don't add `cacheControl` directive if one has already been defined. [PR #2428](https://togithub.com/apollographql/apollo-server/pull/2428)
- `apollo-cache-control`: Do not respond with `Cache-control` headers if the HTTP response contains `errors`. [PR #2715](https://togithub.com/apollographql/apollo-server/pull/2715)
- `apollo-server-core`: Skip loading `util.promisify` polyfill in Node.js engines >= 8.0 [PR #2278](https://togithub.com/apollographql/apollo-server/pull/2278)
- `apollo-server-core`: Lazy load `subscriptions-transport-ws` in core [PR #2278](https://togithub.com/apollographql/apollo-server/pull/2278)
- `apollo-server-cache-redis`: **BREAKING FOR USERS OF `apollo-server-cache-redis`** (This is a package that must be updated separately but shares the same `CHANGELOG.md` with Apollo Server itself.) A new **major** version of this package has been published and updated to support Redis Standalone, Cluster and Sentinel modes. This is a breaking change since it is now based on [`ioredis`](https://togithub.com/luin/ioredis) instead of [`node_redis`](https://togithub.com/NodeRedis/node_redis). Although this update is compatible with the most common uses of `apollo-server-cache-redis`, please check the [options supported by `ioredis`](https://togithub.com/luin/ioredis/blob/master/API.md#new-redisport-host-options) while updating to this version. The constructor options are passed directly from `RedisCache` to the new Redis adapter. The pre-1.0 versions should continue to work with Apollo Server without modification. [PR #1770](https://togithub.com/apollographql/apollo-server/pull/1770)
### [`v2.5.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v251)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/f7e8ea067d6421fbc8ef41f91d1e673cd20f08d8...5814f0a9f53cfff131f0b127301866f9242ce196)
- Upgrade GraphQL Playground to the latest upstream release. This release also includes a new "Query Plan" panel for displaying the query planning results when running the Apollo Gateway.
### [`v2.5.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v250)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/046327068b5cbb2d80c3865cdb2566654ea988c9...f7e8ea067d6421fbc8ef41f91d1e673cd20f08d8)
##### New
- New plugin package `apollo-server-plugin-response-cache` implementing a full query response cache based on `apollo-cache-control` hints. The implementation added a few hooks and context fields; see the PR for details. There is a slight change to `cacheControl` object: previously, `cacheControl.stripFormattedExtensions` defaulted to false if you did not provide a `cacheControl` option object, but defaulted to true if you provided (eg) `cacheControl: {defaultMaxAge: 10}`. Now `stripFormattedExtensions` defaults to false unless explicitly provided as `true`, or if you use the legacy boolean `cacheControl: true`. For more information, [read the documentation](https://www.apollographql.com/docs/apollo-server/features/caching). [PR #2437](https://togithub.com/apollographql/apollo-server/pull/2437)
- Add `rewriteError` option to `EngineReportingOptions` (i.e. the `engine` property of the `ApolloServer` constructor). When defined as a `function`, it will receive an `err` property as its first argument which can be used to manipulate (e.g. redaction) an error prior to sending it to Apollo Engine by modifying, e.g., its `message` property. The error can also be suppressed from reporting entirely by returning an explicit `null` value. For more information, [read the documentation](https://www.apollographql.com/docs/apollo-server/features/errors#for-apollo-engine-reporting) and the [`EngineReportingOptions` API reference](https://www.apollographql.com/docs/apollo-server/api/apollo-server#enginereportingoptions). `maskErrorDetails` is now deprecated. [PR #1639](https://togithub.com/apollographql/apollo-server/pull/1639)
- `apollo-server-azure-functions`: Support `@azure/functions` to enable Apollo Server [Typescript development in Azure Functions](https://azure.microsoft.com/en-us/blog/improving-the-typescript-support-in-azure-functions/). [PR #2487](https://togithub.com/apollographql/apollo-server/pull/2487)
- Allow `GraphQLRequestListener` callbacks in plugins to depend on `this`. [PR #2470](https://togithub.com/apollographql/apollo-server/pull/2470)
- `apollo-server-testing`: Add `variables` and `operationName` to `Query` and `Mutation` types. [PR #2307](https://togithub.com/apollographql/apollo-server/pull/2307) [Issue #2172](https://togithub.com/apollographql/apollo-server/issue/2172)
##### Bug fixes
- Add `cache-control: no-cache` header to both `PersistedQueryNotSupportedError` and `PersistedQueryNotFoundError` responses as these should never be cached. [PR #2452](https://togithub.com/apollographql/apollo-server/pull/2452)
- `apollo-datasource-rest`: Don't attempt to parse "204 No Content" responses as JSON. [PR #2446](https://togithub.com/apollographql/apollo-server/pull/2446)
- `apollo-server-express`: Fix Playground URL when Apollo Server is mounted inside of another Express app by utilizing `req.originalUrl`. [PR #2451](https://togithub.com/apollographql/apollo-server/pull/2451)
- `apollo-datasource-rest`: Correctly allow a TTL value of `0` to represent "not-cacheable". [PR #2588](https://togithub.com/apollographql/apollo-server/pull/2588)
- `apollo-datasource-rest`: Fix `Invalid argument` in IE11, when `this.headers` is `undefined`. [PR #2607](https://togithub.com/apollographql/apollo-server/pull/2607)
### [`v2.4.8`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v248)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/a95421f19bbb6c3e1d92b0a02dcdf64069a2ab76...046327068b5cbb2d80c3865cdb2566654ea988c9)
- No functional changes in this version. The patch version has been bumped to fix the `README.md` displayed on the [npm package for `apollo-server`](https://npm.im/apollo-server) as a result of a broken publish. Apologies for the additional noise!
### [`v2.4.7`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v247)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/62587e037bc60778432093eb69bfe9b662105a83...a95421f19bbb6c3e1d92b0a02dcdf64069a2ab76)
- Fix typings which incorrectly included `cors` as part of the constructor options for `apollo-server-express` (it should be defined via `applyMiddleware`) but, conversely, inadvertently omitted the perfectly valid `cors` option from the `apollo-server` constructor (where `applyMiddleware` is not used/available). [PR #2373](https://togithub.com/apollographql/apollo-server/pull/2373) [Issue #1882](https://togithub.com/apollographql/apollo-server/issues/1882)
### [`v2.4.6`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v246)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/879ed190349eded2221e5b9827281a4f6ae86660...62587e037bc60778432093eb69bfe9b662105a83)
- Allow Node.js-like runtimes to identify as Node.js as well. [PR #2357](https://togithub.com/apollographql/apollo-server/pull/2357) [Issue #2356](https://togithub.com/apollographql/apollo-server/issue/2356)
### [`v2.4.4`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v244)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/e1d7078817222f125d4e96269e22f66ef0a8ea0f...879ed190349eded2221e5b9827281a4f6ae86660)
- Fix typing for ContextFunction incorrectly requiring the context object the function produces to match the parameters of the function [PR #2350](https://togithub.com/apollographql/apollo-server/pull/2350)
### [`v2.4.3`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v243)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/c1669c3d74ae44088bf3bb23cdd9132270b26ee6...e1d7078817222f125d4e96269e22f66ef0a8ea0f)
- `apollo-server-lambda`: Fix typings which triggered "Module has no default export" errors. [PR #2230](https://togithub.com/apollographql/apollo-server/pull/2230)
- `apollo-server-koa`: Support OPTIONS requests [PR #2288](https://togithub.com/apollographql/apollo-server/pull/2288)
- Add `req` and `res` typings to the `ContextFunction` argument for apollo-server and apollo-server-express. Update `ContextFunction` return type to allow returning a value syncronously. [PR #2330](https://togithub.com/apollographql/apollo-server/pull/2330)
- Type the `formatError` function to accept an GraphQLError as an argument and return a GraphQLFormattedError [PR #2343](https://togithub.com/apollographql/apollo-server/pull/2343)
### [`v2.4.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v242)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/4116b2ff4a410049e1fd39eb2203ff691cb1077f...c1669c3d74ae44088bf3bb23cdd9132270b26ee6)
- `apollo-server-fastify` is now on Apollo Server and lives within the `apollo-server` repository. This is being introduced in a _patch_ version, however it's a _major_ version bump from the last time `apollo-server-fastify` was published under `1.0.2`. [PR #1971](https://togithub.com/apollostack/apollo-server/pull/1971)
- Move `apollo-graphql` package to the `apollo-tooling` repository [PR #2316](https://togithub.com/apollographql/apollo-server/pull/2316)
### [`v2.4.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v241)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/a3222ece11f04ada75ce9c592efcf337396951ec...4116b2ff4a410049e1fd39eb2203ff691cb1077f)
- Fix inaccurate total duration in apollo-tracing [PR #2298](https://togithub.com/apollographql/apollo-server/pull/2298)
- Avoid importing entire `crypto` dependency tree if not in Node.js. [PR #2304](https://togithub.com/apollographql/apollo-server/pull/2304)
- Allow passing `parseOptions` to `ApolloServerBase` constructor. [PR #2289](https://togithub.com/apollographql/apollo-server/pull/2289)
- Rename `azureFunctions.d.ts` to `azureFunctions.ts`. [PR #2287](https://togithub.com/apollographql/apollo-server/pull/2287)
- Require `apollo-engine-reporting` only if `EngineReportingAgent` used. [PR #2305](https://togithub.com/apollographql/apollo-server/pull/2305)
### [`v2.4.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v240)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/5939327edd7f455cf1d621f761c01c55161639fb...a3222ece11f04ada75ce9c592efcf337396951ec)
- Implement an in-memory cache store to save parsed and validated documents and provide performance benefits for repeat executions of the same document. [PR #2111](https://togithub.com/apollographql/apollo-server/pull/2111) (`>=2.4.0-alpha.0`)
- Fix: Serialize arrays as JSON on fetch in `RESTDataSource`. [PR #2219](https://togithub.com/apollographql/apollo-server/pull/2219)
- Fix: The `privateHeaders` configuration for `apollo-engine-reporting` now allows headers to be specified using any case and lower-cases them prior to comparison. [PR #2276](https://togithub.com/apollographql/apollo-server/pull/2276)
- Fix broken `apollo-server-azure-functions` TypeScript definitions. [PR #2287](https://togithub.com/apollographql/apollo-server/pull/2287)
### [`v2.3.3`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v233)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/d48d0972c5730ea63969daa892f58a34aa1db543...5939327edd7f455cf1d621f761c01c55161639fb)
- `apollo-server` (only): Stop double-invocation of `serverWillStart` life-cycle event. (More specific integrations - e.g. Express, Koa, Hapi, etc. - were unaffected.) [PR #2239](https://togithub.com/apollographql/apollo-server/pull/2239)
- Avoid traversing `graphql-upload` module tree in run-time environments which aren't Node.js. [PR #2235](https://togithub.com/apollographql/apollo-server/pull/2235)
### [`v2.3.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v232)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/cf95cf7881c12b150c632a5e020a1ff81127da59...d48d0972c5730ea63969daa892f58a34aa1db543)
- Switch from `json-stable-stringify` to `fast-json-stable-stringify`. [PR #2065](https://togithub.com/apollographql/apollo-server/pull/2065)
- Fix cache hints of `maxAge: 0` to mean "uncachable". [#2197](https://togithub.com/apollographql/apollo-server/pull/2197)
- Apply `defaultMaxAge` to scalar fields on the root object. [#2210](https://togithub.com/apollographql/apollo-server/pull/2210)
- Don't write to the persisted query cache until execution will begin. [PR #2227](https://togithub.com/apollographql/apollo-server/pull/2227)
- `apollo-server-azure-functions`: Added Azure Functions documentation and deployment examples [PR #2131](https://togithub.com/apollographql/apollo-server/pull/2131),
[Issue #2092](https://togithub.com/apollographql/apollo-server/issues/2092)
### [`v2.3.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v231)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/3545c32e2a93ba3de03cbf2751db8e055835a392...cf95cf7881c12b150c632a5e020a1ff81127da59)
- Provide types for `graphql-upload` in a location where they can be accessed by TypeScript consumers of `apollo-server` packages. [ccf935f9](https://togithub.com/apollographql/apollo-server/commit/ccf935f9) [Issue #2092](https://togithub.com/apollographql/apollo-server/issues/2092)
### [`v2.3.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v230)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/d7e7834633ea9f703473aa432247a3523c86c597...3545c32e2a93ba3de03cbf2751db8e055835a392)
- **BREAKING FOR NODE.JS <= 8.5.0 ONLY**: To continue using Apollo Server 2.x in versions of Node.js prior to v8.5.0, file uploads must be disabled by setting `uploads: false` on the `ApolloServer` constructor options. Without explicitly disabling file-uploads, the server will `throw` at launch (with instructions and a link to our documentation).
This early deprecation is due to changes in the third-party `graphql-upload` package which Apollo Server utilizes to implement out-of-the-box file upload functionality. While, in general, Apollo Server 2.x aims to support all Node.js versions which were under an LTS policy at the time of its release, we felt this required an exception. By `throw`-ing when `uploads` is not explicitly set to `false`, we aim to make it clear immediately (rather than surprisingly) that this deprecation has taken effect.
While Node.js 6.x is covered by a [Long Term Support agreement by the Node.js Foundation](https://togithub.com/nodejs/Release#release-schedule) until April 2019, there are substantial performance (e.g. [V8](https://v8.dev/) improvements) and language changes (e.g. "modern" ECMAScript support) offered by newer Node.js engines (e.g. 8.x, 10.x). We encourage _all users_ of Apollo Server to update to newer LTS versions of Node.js prior to the "end-of-life" dates for their current server version.
**We intend to drop support for Node.js 6.x in the next major version of Apollo Server.**
For more information, see [PR #2054](https://togithub.com/apollographql/apollo-server/pull/2054) and [our documentation](https://www.apollographql.com/docs/apollo-server/v2/migration-file-uploads.html).
### [`v2.2.7`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v227)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/1e5cdc63975132004390a2138fd01e85b6f8ae32...d7e7834633ea9f703473aa432247a3523c86c597)
- `apollo-engine-reporting`: When multiple instances of `apollo-engine-reporting` are loaded (an uncommon edge case), ensure that `encodedTraces` are handled only once rather than once per loaded instance. [PR #2040](https://togithub.com/apollographql/apollo-server/pull/2040)
### [`v2.2.6`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v226)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/85e9094f6ce531aa25a42dad93c98ab37ef6e9f8...1e5cdc63975132004390a2138fd01e85b6f8ae32)
- `apollo-server-micro`: Set the `Content-type` to `text/html` for GraphQL Playground. [PR #2026](https://togithub.com/apollographql/apollo-server/pull/2026)
### [`v2.2.5`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v225)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/ee44bdb71642f3b07b6816a51b3256074209f354...85e9094f6ce531aa25a42dad93c98ab37ef6e9f8)
- Follow-up on the update to `graphql-playground-html` in previous release by also bumping the minor version of the `graphql-playground-react` dependency to `1.7.10` — which is the version requested from the from the CDN bundle by `graphql-playground-html`. [PR #2037](https://togithub.com/apollographql/apollo-server/pull/2037)
### [`v2.2.4`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v224)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/1f3801c94967941f539e4bf925c92134b56478e7...ee44bdb71642f3b07b6816a51b3256074209f354)
- Fix GraphQL Playground documentation scrolling bug in Safari by updating to latest (rebased) fork of `graphql-playground-html`. [PR #2037](https://togithub.com/apollographql/apollo-server/pull/2037)
### [`v2.2.3`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v223)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/47676e0cd965515554e171ea7d2a99573125ae58...1f3801c94967941f539e4bf925c92134b56478e7)
- When `generateClientInfo` is not used to define the client name, client version and
client reference ID, Apollo Server will now default to the values present in the HTTP headers
of the request (`apollographql-client-name`, `apollographql-client-reference-id` and
`apollographql-client-version` respectively). As a last resort, when those headers are not set,
the query extensions' `clientInfo` values will be used. [PR #1960](https://togithub.com/apollographql/apollo-server/pull/1960)
### [`v2.2.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v222)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/20eb2e9e0353b58c0e445cc8e9b56f3a93d64db2...47676e0cd965515554e171ea7d2a99573125ae58)
- Fixed TypeScript 2.2 compatibility via updated `apollo-tooling` dependency. [Issue #1951](https://togithub.com/apollographql/apollo-server/issues/1951) [`26d6c739`](https://togithub.com/apollographql/apollo-server/commit/26d6c739505b3112694e641c272c748ce38ba86b)
- Throw a more specific error when asynchronous introspection query behavior is detected. [PR #1955](https://togithub.com/apollographql/apollo-server/pull/1955)
### [`v2.2.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v221)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/6bd73b175ff628a5e9858e2a5da1aa9dab5ed348...20eb2e9e0353b58c0e445cc8e9b56f3a93d64db2)
- Added support for an array of `modules` on the `ApolloServer` constructor options. Each element of the `modules` can point to a module which exports `typeDefs` and `resolvers`. These modules can be used in lieu of, or in combination with, directly specifying `schema` or `typeDefs`/`resolvers` on the constructor options. This provides greater modularity and improved organization for logic which might be limited to a specific service. [`8f6481e6`](https://togithub.com/apollographql/apollo-server/commit/8f6481e60f8418738f9ebbe9d5ab5e7e2ce4d319).
- Added `resolveObject` support to query execution. [`bb67584`](https://togithub.com/apollographql/apollo-server/commit/bb67584a224843a5b2509c2ebdd94e616fe6227c).
- Fix broken `apollo-server-cloud-functions` in 2.2.0 caused by missing TypeScript project references which resulted in the package not being published to npm in compiled form. [PR #1948](https://togithub.com/apollographql/apollo-server/pull/1948)
### [`v2.2.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v220)
[Compare Source](https://togithub.com/apollo
Renovate configuration
:date: Schedule: "after 10pm every weekday,before 5am every weekday" in timezone Europe/London.
:vertical_traffic_light: Automerge: Disabled by config. Please merge this manually once you are satisfied.
:recycle: Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
:no_bell: Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
1.4.0
->2.11.0
Release Notes
apollographql/apollo-server
### [`v2.11.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2110) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/dba97895485d6444535a684d4646f1363954f698...056f083ddaf116633e6f759a2b3d69248bb18f66) - The range of accepted `peerDepedencies` versions for `graphql` has been widened to include `graphql@^15.0.0-rc.2` so as to accommodate the latest release-candidate of the `graphql@15` package, and an intention to support it when it is finally released on the `latest` npm tag. While this change will subdue peer dependency warnings for Apollo Server packages, many dependencies from outside of this repository will continue to raise similar warnings until those packages own `peerDependencies` are updated. It is unlikely that all of those packages will update their ranges prior to the final version of `graphql@15` being released, but if everything is working as expected, the warnings can be safely ignored. [PR #3825](https://togithub.com/apollographql/apollo-server/pull/3825) ### [`v2.10.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2101) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/9c0aa1e661ccc2c5a1471b781102637dd47e21b1...dba97895485d6444535a684d4646f1363954f698) - `apollo-server-core`: Update GraphQL Playground to latest version to remove a rogue curly-brace appearing in the top-right corner of the interface under certain conditions. [PR #3702](https://togithub.com/apollographql/apollo-server/pull/3702) [Playground PR](https://togithub.com/apollographql/graphql-playground/pull/21) - `apollo-server-core`: Typings: Allow the `cache` property inside `persistedQueries` to be optional. This was already optional at runtime where it defaults to the top-level global cache when unspecified, but with the introduction of the `ttl` property, it now makes sense that one may be provided without the other. [#3671](https://togithub.com/apollographql/apollo-server/pull/3671) ### [`v2.10.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2100) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/4d1a75e318897c335674c7ee046c0baec7df4a9b...9c0aa1e661ccc2c5a1471b781102637dd47e21b1) - `apollo-server-express`: Support `CorsOptionsDelegate` type on `cors` parameter to `applyMiddleware`, to align with the supported type of the underlying [`cors`](https://npm.im/cors) middleware [itself](https://togithub.com/DefinitelyTyped/DefinitelyTyped/blob/31483b781ac30f98bdf4d40a517e921f2fc2ce37/types/cors/index.d.ts#L32). [#3613](https://togithub.com/apollographql/apollo-server/pull/3613) - `apollo-server-core`: Allow asynchronous initialization of datasources: the `initialize` method on datasources may now return a Promise, which will be settled before any resolvers are called. [#3639](https://togithub.com/apollographql/apollo-server/pull/3639) - `apollo-server-core`: experimental: Allow configuration of the parsed/validated document store by introducing an `experimental_approximateDocumentStoreMiB` property to the `ApolloServer` constructor options which overrides the default cache size of 30MiB. [#3755](https://togithub.com/apollographql/apollo-server/pull/3755) ### [`v2.9.16`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2916) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/0743d6b2f1737758cf09e80d2086917772bc00c9...4d1a75e318897c335674c7ee046c0baec7df4a9b) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/4d1a75e318897c335674c7ee046c0baec7df4a9b) - `apollo-server-core`: Update apollo-tooling dependencies, resolve TS build error (missing types for node-fetch) [#3662](https://togithub.com/apollographql/apollo-server/pull/3662) ### [`v2.9.15`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2915) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/ad5eac5ea1741142122e4cb8fd34a9748be31e89...0743d6b2f1737758cf09e80d2086917772bc00c9) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/0743d6b2f1737758cf09e80d2086917772bc00c9) - `apollo-engine-reporting`: Fix regression introduced by [#3614](https://togithub.com/apollographql/apollo-server/pull/3614) which caused `PersistedQueryNotFoundError`, `PersistedQueryNotSupportedError` and `InvalidGraphQLRequestError` errors to be triggered before the `requestDidStart` handler triggered `treeBuilder`'s `startTiming` method. This fix preserves the existing behavior by special-casing these specific errors. [#3638](https://togithub.com/apollographql/apollo-server/pull/3638) fixes [#3627](https://togithub.com/apollographql/apollo-server/issues/3627) - `apollo-server-cloud-functions`: Transmit CORS headers on `OPTIONS` request. [#3557](https://togithub.com/apollographql/apollo-server/pull/3557) - `apollo-server-caching`: De-compose options interface for `KeyValueCache.prototype.set` to accommodate better TSDoc annotations for its properties (e.g. to specify that `ttl` is defined in _seconds_). [#3619](https://togithub.com/apollographql/apollo-server/pull/3619) - `apollo-server-core`, `apollo-server-caching`: Introduce a `ttl` property, specified in seconds, on the options for automated persisted queries (APQ) which applies specific TTL settings to the cache `set`s during APQ registration. Previously, all APQ cache records were set to 300 seconds. Additionally, this adds support (to the underlying `apollo-server-caching` mechanisms) for a time-to-live (TTL) value of `null` which, when supported by the cache implementation, skips the assignment of a TTL value altogether. This allows the cache's controller to determine when eviction happens (e.g. cache forever, and purge least recently used when the cache is full), which may be desireable for network cache stores (e.g. Memcached, Redis). [#3623](https://togithub.com/apollographql/apollo-server/pull/3623) - `apollo-server-core`: Upgrade TS to 3.7.3 [#3618](https://togithub.com/apollographql/apollo-server/pull/3618) ### [`v2.9.14`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2914) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/a0a60e73e04e913d388de8324f7d17e4406deea2...ad5eac5ea1741142122e4cb8fd34a9748be31e89) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/ad5eac5ea1741142122e4cb8fd34a9748be31e89) - `apollo-server-core`: Ensure that plugin's `didEncounterErrors` hooks are invoked for known automated persisted query (APQ) errors. [#3614](https://togithub.com/apollographql/apollo-server/pull/3614) - `apollo-server-plugin-base`: Move `TContext` generic from `requestDidStart` method to `ApolloServerPlugin` Interface. [#3525](https://togithub.com/apollographql/apollo-server/pull/3525) ### [`v2.9.13`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2913) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/8d065d8b8b7f35f814695e74f5c685b7d68d5e00...a0a60e73e04e913d388de8324f7d17e4406deea2) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/a0a60e73e04e913d388de8324f7d17e4406deea2) - `@apollo/gateway`: Add `@types/node-fetch` as a regular dependency to avoid missing dependency for TypeScript consumers. [#3546](https://togithub.com/apollographql/apollo-server/pull/3546) fixes [#3471](https://togithub.com/apollographql/apollo-server/issues/3471) - `apollo-engine-reporting`: Declare acceptable `graphql` versions ranges in `peerDependencies` rather than allowing it to occur implicitly (and less ideally) via its consumers (e.g. most `apollo-server-*` packages). [#3496](https://togithub.com/apollographql/apollo-server/pull/3496) ### [`v2.9.12`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2912) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/d49e4d2038df4f5aae824a98ddb21dca909051a9...8d065d8b8b7f35f814695e74f5c685b7d68d5e00) - Reinstate [#3530](https://togithub.com/apollographql/apollo-server/pull/3530) via [#3539](https://togithub.com/apollographql/apollo-server/pull/3539) - after a patch release of the `@apollo/protobufjs` fork, the build issue for consumers should be resolved. ### [`v2.9.11`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2911) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/2a4c654986a158aaccf947ee56a4bfc48a3173c7...d49e4d2038df4f5aae824a98ddb21dca909051a9) - Revert [#3530](https://togithub.com/apollographql/apollo-server/pull/3530) via [#3535](https://togithub.com/apollographql/apollo-server/pull/3535)- the introduction of the `@apollo/protobufjs` fork is causing TS errors in consumer projects. Reverting this change for now, and will reintroduce it after the issue is resolved within the forked package. ### [`v2.9.10`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2910) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/93002737d53dd9a50b473ab9cef14849b3e539aa...2a4c654986a158aaccf947ee56a4bfc48a3173c7) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/2a4c654986a158aaccf947ee56a4bfc48a3173c7) - `apollo-engine-reporting`: Swap usage of `protobufjs` for a newly published fork located at [`@apollo/protobufjs`](https://npm.im/@apollo/protobufjs). This is to account for the [relative uncertainty](https://togithub.com/protobufjs/protobuf.js/issues/1199) into the continued on-going maintenance of the official `protobuf.js` project. This should immediately resolve a bug that affected `Long` types in `apollo-engine-reporting` and other non-Apollo projects that rely on `protobuf.js`'s `Long` type. [#3530](https://togithub.com/apollographql/apollo-server/pull/3530) ### [`v2.9.9`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v299) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/3cdde1b7a71ace6411fbacf82a1a61bf737444a6...93002737d53dd9a50b473ab9cef14849b3e539aa) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/93002737d53dd9a50b473ab9cef14849b3e539aa) - `apollo-server-core`: Don't try parsing `variables` and `extensions` as JSON if they are defined but empty strings. [#3501](https://togithub.com/apollographql/apollo-server/pull/3501) - `apollo-server-lambda`: Introduce `onHealthCheck` on `createHandler` in the same fashion as implemented in other integrations. [#3458](https://togithub.com/apollographql/apollo-server/pull/3458) - `apollo-server-core`: Use `graphql`'s `isSchema` to more defensively check the user-specified schema's type at runtime and prevent unexpected errors. [#3462](https://togithub.com/apollographql/apollo-server/pull/3462) ### [`v2.9.8`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v298) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/5d94e986f04457ec17114791ee6db3ece4213dd8...3cdde1b7a71ace6411fbacf82a1a61bf737444a6) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/3cdde1b7a71ace6411fbacf82a1a61bf737444a6) - `apollo-server-core`: Provide accurate type for `formatResponse` rather than generic `Function` type. [#3431](https://togithub.com/apollographql/apollo-server/pull/3431) - `apollo-server-core`: Pass complete request context to `formatResponse`, rather than just `context`. [#3431](https://togithub.com/apollographql/apollo-server/pull/3431) ### [`v2.9.7`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v297) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/fc7462ec5f8604bd6cba99aa9a377a9b8e045566...5d94e986f04457ec17114791ee6db3ece4213dd8) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/5d94e986f04457ec17114791ee6db3ece4213dd8) - `apollo-server-errors`: Fix `ApolloError` bug and `GraphQLError` spec compliance [#3408](https://togithub.com/apollographql/apollo-server/pull/3408) ### [`v2.9.6`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v296) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/aa200ce24b834320fc79d2605dac340b37d3e434...fc7462ec5f8604bd6cba99aa9a377a9b8e045566) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/fc7462ec5f8604bd6cba99aa9a377a9b8e045566) - `@apollo/gateway`, `@apollo/federation`, `apollo-engine-reporting`: Update `apollo-graphql` dependency to bring in [`apollo-tooling`'s #1551](https://togithub.com/apollographql/apollo-tooling/pull/1551) which resolve runtime errors when its source is minified. While this fixes a particular minification bug when Apollo Server packages are minified, we _do not_ recommend minification of server code in most cases. [#3387](https://togithub.com/apollographql/apollo-server/pull/3387) fixes [#3335](https://togithub.com/apollographql/apollo-server/issues/3335) - `apollo-server-koa`: Correctly declare dependency on `koa-compose`. [#3356](https://togithub.com/apollographql/apollo-server/pull/3356) - `apollo-server-core`: Preserve any `extensions` that have been placed on the response when pre-execution errors occur. [#3394](https://togithub.com/apollographql/apollo-server/pull/3394) ### [`v2.9.5`](https://togithub.com/apollographql/apollo-server/compare/6100fb5e0797cd1f578ded7cb77b60fac47e58e3...aa200ce24b834320fc79d2605dac340b37d3e434) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/6100fb5e0797cd1f578ded7cb77b60fac47e58e3...aa200ce24b834320fc79d2605dac340b37d3e434) ### [`v2.9.4`](https://togithub.com/apollographql/apollo-server/compare/a1fbf95fc01739d5cbaa59919149bb85c563fdaa...6100fb5e0797cd1f578ded7cb77b60fac47e58e3) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/a1fbf95fc01739d5cbaa59919149bb85c563fdaa...6100fb5e0797cd1f578ded7cb77b60fac47e58e3) ### [`v2.9.3`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v293) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/92ea402a90bf9817c9b887707abbd77dcf5edcb4...a1fbf95fc01739d5cbaa59919149bb85c563fdaa) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/a1fbf95fc01739d5cbaa59919149bb85c563fdaa) - `apollo-server-express`: Add direct dependency on `express` to allow for usage of `express.Router` for `getMiddleware` functionality (from [#2435](https://togithub.com/apollographql/apollo-server/pull/2435)). Previously, unlike other server integration packages, `apollo-server-express` did not directly need `express` as a dependency since it only relied on `express` for TypeScript typings. [#3239](https://togithub.com/apollographql/apollo-server/pull/3239) fixes [#3238](https://togithub.com/apollographql/apollo-server/issues/3238) - `apollo-server-lambda`: Add `@types/aws-lambda` as a direct dependency to `apollo-server-express` to allow usage of its typings without needing to separately install it. [#3242](https://togithub.com/apollographql/apollo-server/pull/3242) fixes [#2351](https://togithub.com/apollographql/apollo-server/issue/2351) ### [`v2.9.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v292) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/029c8dca3af812ee70589cdb6de749df3d2843d8...92ea402a90bf9817c9b887707abbd77dcf5edcb4) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/92ea402a90bf9817c9b887707abbd77dcf5edcb4) - `apollo-server-koa`: **Drop support for Node.js v6 within the Apollo Server Koa integration in order to update `koa-bodyparser` dependency from `v3.0.0` to `v4.2.1`.** [#3229](https://togithub.com/apollographql/apollo-server/pull/3229) fixes [#3050](https://togithub.com/apollographql/apollo-server/issues/3050) - `apollo-server-express`: Use explicit return type for new `getMiddleware` method. [#3230](https://togithub.com/apollographql/apollo-server/pull/3230) (hopefully) fixes [#3222](https://togithub.com/apollographql/apollo-server/issues/3222) ### [`v2.9.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v2916) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/6037f6e80fdaa53b50b99ae94d93c724c382c23c...029c8dca3af812ee70589cdb6de749df3d2843d8) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/4d1a75e318897c335674c7ee046c0baec7df4a9b) - `apollo-server-core`: Update apollo-tooling dependencies, resolve TS build error (missing types for node-fetch) [#3662](https://togithub.com/apollographql/apollo-server/pull/3662) ### [`v2.9.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v290) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/99f78c6782bce170186ba6ef311182a8c9f281b7...6037f6e80fdaa53b50b99ae94d93c724c382c23c) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/6037f6e80fdaa53b50b99ae94d93c724c382c23c) - `apollo-server-express`, `apollo-server-koa`: A new `getMiddleware` method has been introduced, which accepts the same parameters as `applyMiddleware` with the exception of the `app` property. This allows implementors to obtain the middleware directly and "`use`" it within an existing `app`. In the near-term, this should ease some of the pain points with the previous technique. Longer-term, we are exploring what we consider to be a much more natural approach by introducing an "HTTP transport" in Apollo Server 3.x. See [this proposal issue](https://togithub.com/apollographql/apollo-server/issues/3184) for more information. [#2435](https://togithub.com/apollographql/apollo-server/pull/2435) - `@apollo/federation`: `buildFederatedSchema`'s `typeDefs` parameter now accepts arrays of `DocumentNode`s (i.e. type definitions wrapped in `gql`) and `resolvers` to make the migration from a single service into a federated service easier for teams previously utilizing this pattern. [#3188](https://togithub.com/apollographql/apollo-server/pull/3188) ### [`v2.8.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v282) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/84d80eba10d87663dab60af4a1cd46bccf30513f...99f78c6782bce170186ba6ef311182a8c9f281b7) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/99f78c6782bce170186ba6ef311182a8c9f281b7) - `apollo-server-koa`: Update dependency koa to v2.8.1. [PR #3175](https://togithub.com/apollographql/apollo-server/pull/3175) - `apollo-server-express`: Update types exported by the ASE package. [PR #3173](https://togithub.com/apollographql/apollo-server/pull/3175) [PR #3172](https://togithub.com/apollographql/apollo-server/pull/3172) ### [`v2.8.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v281) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/ddeb71f8d6a0f3c91646aa0c7c99d2003b5bf73f...84d80eba10d87663dab60af4a1cd46bccf30513f) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/84d80eba10d87663dab60af4a1cd46bccf30513f) - `apollo-engine-reporting`: Fix reporting errors which have non-array `path` fields (eg, non-GraphQLError errors). [PR #3112](https://togithub.com/apollographql/apollo-server/pull/3112) - `apollo-engine-reporting`: Add missing `apollo-server-caching` dependency. [PR #3054](https://togithub.com/apollographql/apollo-server/pull/3054) - `apollo-server-hapi`: Revert switch from `accept` and `boom` which took place in v2.8.0. [PR #3089](https://togithub.com/apollographql/apollo-server/pull/3089) - `@apollo/gateway`: Change the `setInterval` timer, which is used to continuously check for updates to a federated graph from the Apollo Graph Manager, to be an `unref`'d timer. Without this change, the server wouldn't terminate properly once polling had started since the event-loop would continue to have unprocessed events on it. [PR #3105](https://togithub.com/apollographql/apollo-server/pull/3105) - Switch to using community `@types/graphql-upload` types. - `apollo-server-fastify`: Change the typing of the HTTP `response` from `OutgoingMessage` to `ServerResponse`. [Commit](https://togithub.com/apollographql/apollo-server/commit/7638f643fa0445f5f8151ef884da779d85fb954c) - `apollo-server-hapi`: Pass the `raw` request and response objects to `graphql-upload`s `processRequest` method to align on the same TypeScript types. [Commit](https://togithub.com/apollographql/apollo-server/commit/8e49b288a6aecd0e134637e64ef4ed751aa8d304) ### [`v2.8.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v280) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/d0b33f20ba4731c071d6fd8cfaeca1a1f3d83e4b...ddeb71f8d6a0f3c91646aa0c7c99d2003b5bf73f) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/ddeb71f8d6a0f3c91646aa0c7c99d2003b5bf73f) - `@apollo/federation`: Add support for "value types", which are type definitions which live on multiple services' types, inputs, unions or interfaces. These common types must be identical by name, kind and field across all services. [PR #3063](https://togithub.com/apollographql/apollo-server/pull/3063) - `apollo-server-express`: Use the Express `send` method, rather than calling `net.Socket.prototype.end`. [PR #2842](https://togithub.com/apollographql/apollo-server/pull/2842) - `apollo-server-hapi`: Update internal dependencies to use scoped packages `@hapi/accept` and `@hapi/boom`, in place of `accept` and `boom` respectively. [PR #3089](https://togithub.com/apollographql/apollo-server/pull/3089) ### [`v2.7.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v272) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/2f87e4af9a6f1e3c8f4c51b4f77860bd3150c8c6...d0b33f20ba4731c071d6fd8cfaeca1a1f3d83e4b) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/d0b33f20ba4731c071d6fd8cfaeca1a1f3d83e4b) - `apollo-engine-reporting`: Fix reporting errors from backend. (The support for federated metrics introduced in v2.7.0 did not properly handle GraphQL errors from the backend; all users of federated metrics should upgrade to this version.) [PR #3056](https://togithub.com/apollographql/apollo-server/pull/3056) [Issue #3052](https://togithub.com/apollographql/apollo-server/issues/3052) - `apollo-engine-reporting`: Clean up `SIGINT` and `SIGTERM` handlers when `EngineReportingAgent` is stopped; fixes 'Possible EventEmitter memory leak detected' log. [PR #3090](https://togithub.com/apollographql/apollo-server/pull/3090) ### [`v2.7.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v271) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/1d44f3d4756d43123eb01bf293e65f4a3c2e64c8...2f87e4af9a6f1e3c8f4c51b4f77860bd3150c8c6) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/2f87e4af9a6f1e3c8f4c51b4f77860bd3150c8c6) - `apollo-engine-reporting`: If an error is thrown by a custom variable transform function passed into the reporting option `sendVariableValues: { transform: ... }`, all variable values will be replaced with the string `[PREDICATE_FUNCTION_ERROR]`. - `apollo-server-express`: Typing fix for the `connection` property, which was missing from the `ExpressContext` interface. [PR #2959](https://togithub.com/apollographql/apollo-server/pull/2959) - `@apollo/gateway`: Ensure execution of correct document within multi-operation documents by including the `operationName` in the cache key used when caching query plans used in federated execution. [PR #3084](https://togithub.com/apollographql/apollo-server/pull/3084) ### [`v2.7.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v270) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/57210129cda034b095d3f227298021feddda03f7...1d44f3d4756d43123eb01bf293e65f4a3c2e64c8) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/1d44f3d4756d43123eb01bf293e65f4a3c2e64c8) - `apollo-engine-reporting`: **Behavior change**: By default, send no GraphQL variable values to Apollo's servers instead of sending all variable values. Adding the new EngineReportingOption `sendVariableValues` to send some or all variable values, possibly after transforming them. This replaces the `privateVariables` option, which is now deprecated. [PR #2931](https://togithub.com/apollographql/apollo-server/pull/2931) To maintain the previous behavior of transmitting **all** GraphQL variable values, unfiltered, to Apollo Engine, configure `engine`.`sendVariableValues` as follows: ```js engine: { sendVariableValues: { all: true } } ``` - `apollo-engine-reporting`: **Behavior change**: By default, send no GraphQL request headers and values to Apollo's servers instead of sending all. Adding the new EngineReportingOption `sendHeaders` to send some or all header values. This replaces the `privateHeaders` option, which is now deprecated. [PR #2931](https://togithub.com/apollographql/apollo-server/pull/2931) To maintain the previous behavior of transmitting **all** GraphQL request headers and values, configure `engine`.`sendHeaders` as following: ```js engine: { sendHeaders: { all: true } } ``` - `apollo-engine-reporting`: **Behavior change**: If the error returned from the `engine.rewriteError` hook has an `extensions` property, that property will be used instead of the original error's extensions. Document that changes to most other `GraphQLError` fields by `engine.rewriteError` are ignored. [PR #2932](https://togithub.com/apollographql/apollo-server/pull/2932) - `apollo-engine-reporting`: **Behavior change**: The `engine.maskErrorDetails` option, deprecated by `engine.rewriteError` in v2.5.0, now behaves a bit more like the new option: while all error messages will be redacted, they will still show up on the appropriate nodes in a trace. [PR #2932](https://togithub.com/apollographql/apollo-server/pull/2932) - `apollo-server-core`, `@apollo/gateway`: **Introduced managed federation support**. For more information on managed federation, see [the blog post](https://blog.apollographql.com/announcing-managed-federation-265c9f0bc88e) or jump to the [documentation for managed federation](https://www.apollographql.com/docs/platform/federation/). - `@apollo/gateway@0.7.1`: Don't print a warning about an unspecified "graph variant" (previously, and in many ways still, known as "schema tag") every few seconds. We do highly recommend specifying one when using the Apollo Platform features though! [PR #3043](https://togithub.com/apollographql/apollo-server/pull/3043) - `graphql-playground`: Update to resolve incorrect background color on tabs when using the `light` theme. [PR #2989](https://togithub.com/apollographql/apollo-server/pull/2989) [Issue #2979](https://togithub.com/apollographql/apollo-server/issues/2979) - `graphql-playground`: Fix "Query Planner" and "Tracing" panels which were off the edge of the viewport. - `apollo-server-plugin-base`: Fix `GraphQLRequestListener` type definitions to allow `return void`. [PR #2368](https://togithub.com/apollographql/apollo-server/pull/2368) ### [`v2.6.9`](https://togithub.com/apollographql/apollo-server/compare/a06594117dbbf1e8abdb7b366b69a94ab808b065...57210129cda034b095d3f227298021feddda03f7) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/a06594117dbbf1e8abdb7b366b69a94ab808b065...57210129cda034b095d3f227298021feddda03f7) ### [`v2.6.8`](https://togithub.com/apollographql/apollo-server/compare/183de5f112324def375a45c239955e1bf1608fae...a06594117dbbf1e8abdb7b366b69a94ab808b065) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/183de5f112324def375a45c239955e1bf1608fae...a06594117dbbf1e8abdb7b366b69a94ab808b065) ### [`v2.6.7`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v267) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/26db63cbd5adf54b07a5b67c0e0fbff8e61c79aa...183de5f112324def375a45c239955e1bf1608fae) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/183de5f112324def375a45c239955e1bf1608fae) - `apollo-server-core`: Guard against undefined property access in `isDirectiveDefined` which resulted in "Cannot read property 'some' of undefined" error. [PR #2924](https://togithub.com/apollographql/apollo-server/pull/2924) [Issue #2921](https://togithub.com/apollographql/apollo-server/issues/2921) ### [`v2.6.6`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v266) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/a2b2a0d8f013826d08433129a69834035e04f1d5...26db63cbd5adf54b07a5b67c0e0fbff8e61c79aa) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/26db63cbd5adf54b07a5b67c0e0fbff8e61c79aa) - `apollo-server-core`: Avoid duplicate `cacheControl` directives being added via `isDirectiveDefined`, re-landing the implementation reverted in v2.6.1 which first surfaced in v2.6.0. [PR #2762](https://togithub.com/apollographql/apollo-server/pull/2762) [Reversion PR #2754](https://togithub.com/apollographql/apollo-server/pull/2754) [Original PR #2428](https://togithub.com/apollographql/apollo-server/pull/2428) - `apollo-server-testing`: Add TypeScript types for `apollo-server-testing` client. [PR #2871](https://togithub.com/apollographql/apollo-server/pull/2871) - `apollo-server-plugin-response-cache`: Fix undefined property access attempt which occurred when an incomplete operation was received. [PR #2792](https://togithub.com/apollographql/apollo-server/pull/2792) [Issue #2745](https://togithub.com/apollographql/apollo-server/issues/2745) ### [`v2.6.5`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v265) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/e6929134939c653fc817ed2b8172b4ee42406bcc...a2b2a0d8f013826d08433129a69834035e04f1d5) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/a2b2a0d8f013826d08433129a69834035e04f1d5) - `apollo-engine-reporting`: Simplify the technique for capturing `operationName`. [PR #2899](https://togithub.com/apollographql/apollo-server/pull/2899) - `apollo-server-core`: Fix regression in 2.6.0 which caused `engine: false` not to disable Engine when the `ENGINE_API_KEY` environment variable was set. [PR #2850](https://togithub.com/apollographql/apollo-server/pull/2850) - `@apollo/federation`: Introduced a `README.md`. [PR #2883](https://togithub.com/apollographql/apollo-server/pull/2883) - `@apollo/gateway`: Introduced a `README.md`. [PR #2883](https://togithub.com/apollographql/apollo-server/pull/2883) ### [`v2.6.4`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v264) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/9af8063d7c2fdd56dad5144604aef78781ed5727...e6929134939c653fc817ed2b8172b4ee42406bcc) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/596e2f20e090d2f860d238058118d860a72b3be4) - `@apollo/gateway`: Pass `context` through to the `graphql` command in `LocalGraphQLDataSource`'s `process` method. [PR #2821](https://togithub.com/apollographql/apollo-server/pull/2821) - `@apollo/gateway`: Fix gateway not sending needed variables for subqueries not at the root level. [PR #2867](https://togithub.com/apollographql/apollo-server/pull/2867) - `@apollo/federation`: Allow matching enums/scalars in separate services and validate that enums have matching values. [PR #2829](https://togithub.com/apollographql/apollo-server/pull/2829). - `@apollo/federation`: Strip `@external` fields from interface extensions. [PR #2848](https://togithub.com/apollographql/apollo-server/pull/2848) - `@apollo/federation`: Add support for list type keys in federation. [PR #2841](https://togithub.com/apollographql/apollo-server/pull/2841) - `@apollo/federation`: Deduplicate variable definitions for sub-queries. [PR #2840](https://togithub.com/apollographql/apollo-server/pull/2840) ### [`v2.6.3`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v263) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/4fdf6f2aa2f14854b54b0d6de7d477afc7702916...9af8063d7c2fdd56dad5144604aef78781ed5727) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/bdf634d4884774fa81fb22475aa4bd8178025762) - `apollo-engine-reporting`: Set `forbiddenOperation` and `registeredOperation` later in the request lifecycle. [PR #2828](https://togithub.com/apollographql/apollo-server/pull/2828) - `apollo-server-core`: Add `queryHash` to `GraphQLExecutor` for federation. [PR #2822](https://togithub.com/apollographql/apollo-server/pull/2822) - `@apollo/federation`: Preserve descriptions from SDL of federated services. [PR #2830](https://togithub.com/apollographql/apollo-server/pull/2830) ### [`v2.6.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v262) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/77b044169d61dd50f8426a1ba87710cf38fefd36...4fdf6f2aa2f14854b54b0d6de7d477afc7702916) - `apollo-engine-reporting-protobuf`: Update protobuf to include `forbiddenOperations` and `registeredOperations`. [PR #2768](https://togithub.com/apollographql/apollo-server/pull/2768) - `apollo-server-core`: Add `forbiddenOperation` and `registeredOperation` to `GraphQLRequestMetrics` type. [PR #2768](https://togithub.com/apollographql/apollo-server/pull/2768) - `apollo-engine-reporting`: Set `forbiddenOperation` and `registeredOperation` on trace if the field is true on `requestContext.metrics`. [PR #2768](https://togithub.com/apollographql/apollo-server/pull/2768) - `apollo-server-lambda`: Remove `Object.fromEntries` usage. [PR #2787](https://togithub.com/apollographql/apollo-server/pull/2787) ### [`v2.6.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v261) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/dcab64689dec2d00a9c6d302c7c05c5ab847e855...77b044169d61dd50f8426a1ba87710cf38fefd36) - Revert: Don't add `cacheControl` directive if one has already been defined. Presently, although the TypeScript don't suggest it, passing a `String` as `typeDefs` to `ApolloServer` is supported and this would be a breaking change for non-TypeScript users. [PR #2428](https://togithub.com/apollographql/apollo-server/pull/2428) ### [`v2.6.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v260) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/5814f0a9f53cfff131f0b127301866f9242ce196...dcab64689dec2d00a9c6d302c7c05c5ab847e855) - `apollo-server-core`: Introduce new `didEncounterErrors` life-cycle hook which has access to unformatted `errors` property on the `requestContext`, which is the first positional parameter that this new request life-cycle receives. [PR #2719](https://togithub.com/apollographql/apollo-server/pull/2719) - `apollo-server-core`: Allow request pipeline life-cycle hooks (i.e. plugins) to modify the response's `http.status` code (an integer) in the event of an error. When combined with the new `didEncounterErrors` life-cycle hook (see above), this will allow modifying the HTTP status code in the event of an error. [PR #2714](https://togithub.com/apollographql/apollo-server/pull/2714) - `apollo-server-lambda`: Set `callbackWaitsForEmptyEventLoop` to `false` for `OPTIONS` requests to return as soon as the `callback` is triggered instead of waiting for the event loop to empty. [PR #2638](https://togithub.com/apollographql/apollo-server/pull/2638) - `apollo-server`: Support `onHealthCheck` in the `ApolloServer` constructor in the same way as `cors` is supported. This contrasts with the `-express`, `-hapi`, etc. variations which accept this parameter via their `applyMiddleware` methods and will remain as-is. [PR #2672](https://togithub.com/apollographql/apollo-server/pull/2672) - core: Expose SHA-512 hex hash digest of the Engine API key to plugins, when available, as `engine.apiKeyHash`. [PR #2685](https://togithub.com/apollographql/apollo-server/pull/2685) [PR #2736](https://togithub.com/apollographql/apollo-server/pull/2736) - `apollo-datasource-rest`: If another `Content-type` is already set on the response, don't overwrite it with `application/json`, allowing the user's initial `Content-type` to prevail. [PR #2520](https://togithub.com/apollographql/apollo-server/issues/2035) - Don't add `cacheControl` directive if one has already been defined. [PR #2428](https://togithub.com/apollographql/apollo-server/pull/2428) - `apollo-cache-control`: Do not respond with `Cache-control` headers if the HTTP response contains `errors`. [PR #2715](https://togithub.com/apollographql/apollo-server/pull/2715) - `apollo-server-core`: Skip loading `util.promisify` polyfill in Node.js engines >= 8.0 [PR #2278](https://togithub.com/apollographql/apollo-server/pull/2278) - `apollo-server-core`: Lazy load `subscriptions-transport-ws` in core [PR #2278](https://togithub.com/apollographql/apollo-server/pull/2278) - `apollo-server-cache-redis`: **BREAKING FOR USERS OF `apollo-server-cache-redis`** (This is a package that must be updated separately but shares the same `CHANGELOG.md` with Apollo Server itself.) A new **major** version of this package has been published and updated to support Redis Standalone, Cluster and Sentinel modes. This is a breaking change since it is now based on [`ioredis`](https://togithub.com/luin/ioredis) instead of [`node_redis`](https://togithub.com/NodeRedis/node_redis). Although this update is compatible with the most common uses of `apollo-server-cache-redis`, please check the [options supported by `ioredis`](https://togithub.com/luin/ioredis/blob/master/API.md#new-redisport-host-options) while updating to this version. The constructor options are passed directly from `RedisCache` to the new Redis adapter. The pre-1.0 versions should continue to work with Apollo Server without modification. [PR #1770](https://togithub.com/apollographql/apollo-server/pull/1770) ### [`v2.5.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v251) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/f7e8ea067d6421fbc8ef41f91d1e673cd20f08d8...5814f0a9f53cfff131f0b127301866f9242ce196) - Upgrade GraphQL Playground to the latest upstream release. This release also includes a new "Query Plan" panel for displaying the query planning results when running the Apollo Gateway. ### [`v2.5.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v250) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/046327068b5cbb2d80c3865cdb2566654ea988c9...f7e8ea067d6421fbc8ef41f91d1e673cd20f08d8) ##### New - New plugin package `apollo-server-plugin-response-cache` implementing a full query response cache based on `apollo-cache-control` hints. The implementation added a few hooks and context fields; see the PR for details. There is a slight change to `cacheControl` object: previously, `cacheControl.stripFormattedExtensions` defaulted to false if you did not provide a `cacheControl` option object, but defaulted to true if you provided (eg) `cacheControl: {defaultMaxAge: 10}`. Now `stripFormattedExtensions` defaults to false unless explicitly provided as `true`, or if you use the legacy boolean `cacheControl: true`. For more information, [read the documentation](https://www.apollographql.com/docs/apollo-server/features/caching). [PR #2437](https://togithub.com/apollographql/apollo-server/pull/2437) - Add `rewriteError` option to `EngineReportingOptions` (i.e. the `engine` property of the `ApolloServer` constructor). When defined as a `function`, it will receive an `err` property as its first argument which can be used to manipulate (e.g. redaction) an error prior to sending it to Apollo Engine by modifying, e.g., its `message` property. The error can also be suppressed from reporting entirely by returning an explicit `null` value. For more information, [read the documentation](https://www.apollographql.com/docs/apollo-server/features/errors#for-apollo-engine-reporting) and the [`EngineReportingOptions` API reference](https://www.apollographql.com/docs/apollo-server/api/apollo-server#enginereportingoptions). `maskErrorDetails` is now deprecated. [PR #1639](https://togithub.com/apollographql/apollo-server/pull/1639) - `apollo-server-azure-functions`: Support `@azure/functions` to enable Apollo Server [Typescript development in Azure Functions](https://azure.microsoft.com/en-us/blog/improving-the-typescript-support-in-azure-functions/). [PR #2487](https://togithub.com/apollographql/apollo-server/pull/2487) - Allow `GraphQLRequestListener` callbacks in plugins to depend on `this`. [PR #2470](https://togithub.com/apollographql/apollo-server/pull/2470) - `apollo-server-testing`: Add `variables` and `operationName` to `Query` and `Mutation` types. [PR #2307](https://togithub.com/apollographql/apollo-server/pull/2307) [Issue #2172](https://togithub.com/apollographql/apollo-server/issue/2172) ##### Bug fixes - Add `cache-control: no-cache` header to both `PersistedQueryNotSupportedError` and `PersistedQueryNotFoundError` responses as these should never be cached. [PR #2452](https://togithub.com/apollographql/apollo-server/pull/2452) - `apollo-datasource-rest`: Don't attempt to parse "204 No Content" responses as JSON. [PR #2446](https://togithub.com/apollographql/apollo-server/pull/2446) - `apollo-server-express`: Fix Playground URL when Apollo Server is mounted inside of another Express app by utilizing `req.originalUrl`. [PR #2451](https://togithub.com/apollographql/apollo-server/pull/2451) - `apollo-datasource-rest`: Correctly allow a TTL value of `0` to represent "not-cacheable". [PR #2588](https://togithub.com/apollographql/apollo-server/pull/2588) - `apollo-datasource-rest`: Fix `Invalid argument` in IE11, when `this.headers` is `undefined`. [PR #2607](https://togithub.com/apollographql/apollo-server/pull/2607) ### [`v2.4.8`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v248) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/a95421f19bbb6c3e1d92b0a02dcdf64069a2ab76...046327068b5cbb2d80c3865cdb2566654ea988c9) - No functional changes in this version. The patch version has been bumped to fix the `README.md` displayed on the [npm package for `apollo-server`](https://npm.im/apollo-server) as a result of a broken publish. Apologies for the additional noise! ### [`v2.4.7`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v247) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/62587e037bc60778432093eb69bfe9b662105a83...a95421f19bbb6c3e1d92b0a02dcdf64069a2ab76) - Fix typings which incorrectly included `cors` as part of the constructor options for `apollo-server-express` (it should be defined via `applyMiddleware`) but, conversely, inadvertently omitted the perfectly valid `cors` option from the `apollo-server` constructor (where `applyMiddleware` is not used/available). [PR #2373](https://togithub.com/apollographql/apollo-server/pull/2373) [Issue #1882](https://togithub.com/apollographql/apollo-server/issues/1882) ### [`v2.4.6`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v246) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/879ed190349eded2221e5b9827281a4f6ae86660...62587e037bc60778432093eb69bfe9b662105a83) - Allow Node.js-like runtimes to identify as Node.js as well. [PR #2357](https://togithub.com/apollographql/apollo-server/pull/2357) [Issue #2356](https://togithub.com/apollographql/apollo-server/issue/2356) ### [`v2.4.4`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v244) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/e1d7078817222f125d4e96269e22f66ef0a8ea0f...879ed190349eded2221e5b9827281a4f6ae86660) - Fix typing for ContextFunction incorrectly requiring the context object the function produces to match the parameters of the function [PR #2350](https://togithub.com/apollographql/apollo-server/pull/2350) ### [`v2.4.3`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v243) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/c1669c3d74ae44088bf3bb23cdd9132270b26ee6...e1d7078817222f125d4e96269e22f66ef0a8ea0f) - `apollo-server-lambda`: Fix typings which triggered "Module has no default export" errors. [PR #2230](https://togithub.com/apollographql/apollo-server/pull/2230) - `apollo-server-koa`: Support OPTIONS requests [PR #2288](https://togithub.com/apollographql/apollo-server/pull/2288) - Add `req` and `res` typings to the `ContextFunction` argument for apollo-server and apollo-server-express. Update `ContextFunction` return type to allow returning a value syncronously. [PR #2330](https://togithub.com/apollographql/apollo-server/pull/2330) - Type the `formatError` function to accept an GraphQLError as an argument and return a GraphQLFormattedError [PR #2343](https://togithub.com/apollographql/apollo-server/pull/2343) ### [`v2.4.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v242) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/4116b2ff4a410049e1fd39eb2203ff691cb1077f...c1669c3d74ae44088bf3bb23cdd9132270b26ee6) - `apollo-server-fastify` is now on Apollo Server and lives within the `apollo-server` repository. This is being introduced in a _patch_ version, however it's a _major_ version bump from the last time `apollo-server-fastify` was published under `1.0.2`. [PR #1971](https://togithub.com/apollostack/apollo-server/pull/1971) - Move `apollo-graphql` package to the `apollo-tooling` repository [PR #2316](https://togithub.com/apollographql/apollo-server/pull/2316) ### [`v2.4.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v241) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/a3222ece11f04ada75ce9c592efcf337396951ec...4116b2ff4a410049e1fd39eb2203ff691cb1077f) - Fix inaccurate total duration in apollo-tracing [PR #2298](https://togithub.com/apollographql/apollo-server/pull/2298) - Avoid importing entire `crypto` dependency tree if not in Node.js. [PR #2304](https://togithub.com/apollographql/apollo-server/pull/2304) - Allow passing `parseOptions` to `ApolloServerBase` constructor. [PR #2289](https://togithub.com/apollographql/apollo-server/pull/2289) - Rename `azureFunctions.d.ts` to `azureFunctions.ts`. [PR #2287](https://togithub.com/apollographql/apollo-server/pull/2287) - Require `apollo-engine-reporting` only if `EngineReportingAgent` used. [PR #2305](https://togithub.com/apollographql/apollo-server/pull/2305) ### [`v2.4.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v240) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/5939327edd7f455cf1d621f761c01c55161639fb...a3222ece11f04ada75ce9c592efcf337396951ec) - Implement an in-memory cache store to save parsed and validated documents and provide performance benefits for repeat executions of the same document. [PR #2111](https://togithub.com/apollographql/apollo-server/pull/2111) (`>=2.4.0-alpha.0`) - Fix: Serialize arrays as JSON on fetch in `RESTDataSource`. [PR #2219](https://togithub.com/apollographql/apollo-server/pull/2219) - Fix: The `privateHeaders` configuration for `apollo-engine-reporting` now allows headers to be specified using any case and lower-cases them prior to comparison. [PR #2276](https://togithub.com/apollographql/apollo-server/pull/2276) - Fix broken `apollo-server-azure-functions` TypeScript definitions. [PR #2287](https://togithub.com/apollographql/apollo-server/pull/2287) ### [`v2.3.3`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v233) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/d48d0972c5730ea63969daa892f58a34aa1db543...5939327edd7f455cf1d621f761c01c55161639fb) - `apollo-server` (only): Stop double-invocation of `serverWillStart` life-cycle event. (More specific integrations - e.g. Express, Koa, Hapi, etc. - were unaffected.) [PR #2239](https://togithub.com/apollographql/apollo-server/pull/2239) - Avoid traversing `graphql-upload` module tree in run-time environments which aren't Node.js. [PR #2235](https://togithub.com/apollographql/apollo-server/pull/2235) ### [`v2.3.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v232) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/cf95cf7881c12b150c632a5e020a1ff81127da59...d48d0972c5730ea63969daa892f58a34aa1db543) - Switch from `json-stable-stringify` to `fast-json-stable-stringify`. [PR #2065](https://togithub.com/apollographql/apollo-server/pull/2065) - Fix cache hints of `maxAge: 0` to mean "uncachable". [#2197](https://togithub.com/apollographql/apollo-server/pull/2197) - Apply `defaultMaxAge` to scalar fields on the root object. [#2210](https://togithub.com/apollographql/apollo-server/pull/2210) - Don't write to the persisted query cache until execution will begin. [PR #2227](https://togithub.com/apollographql/apollo-server/pull/2227) - `apollo-server-azure-functions`: Added Azure Functions documentation and deployment examples [PR #2131](https://togithub.com/apollographql/apollo-server/pull/2131), [Issue #2092](https://togithub.com/apollographql/apollo-server/issues/2092) ### [`v2.3.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v231) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/3545c32e2a93ba3de03cbf2751db8e055835a392...cf95cf7881c12b150c632a5e020a1ff81127da59) - Provide types for `graphql-upload` in a location where they can be accessed by TypeScript consumers of `apollo-server` packages. [ccf935f9](https://togithub.com/apollographql/apollo-server/commit/ccf935f9) [Issue #2092](https://togithub.com/apollographql/apollo-server/issues/2092) ### [`v2.3.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v230) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/d7e7834633ea9f703473aa432247a3523c86c597...3545c32e2a93ba3de03cbf2751db8e055835a392) - **BREAKING FOR NODE.JS <= 8.5.0 ONLY**: To continue using Apollo Server 2.x in versions of Node.js prior to v8.5.0, file uploads must be disabled by setting `uploads: false` on the `ApolloServer` constructor options. Without explicitly disabling file-uploads, the server will `throw` at launch (with instructions and a link to our documentation). This early deprecation is due to changes in the third-party `graphql-upload` package which Apollo Server utilizes to implement out-of-the-box file upload functionality. While, in general, Apollo Server 2.x aims to support all Node.js versions which were under an LTS policy at the time of its release, we felt this required an exception. By `throw`-ing when `uploads` is not explicitly set to `false`, we aim to make it clear immediately (rather than surprisingly) that this deprecation has taken effect. While Node.js 6.x is covered by a [Long Term Support agreement by the Node.js Foundation](https://togithub.com/nodejs/Release#release-schedule) until April 2019, there are substantial performance (e.g. [V8](https://v8.dev/) improvements) and language changes (e.g. "modern" ECMAScript support) offered by newer Node.js engines (e.g. 8.x, 10.x). We encourage _all users_ of Apollo Server to update to newer LTS versions of Node.js prior to the "end-of-life" dates for their current server version. **We intend to drop support for Node.js 6.x in the next major version of Apollo Server.** For more information, see [PR #2054](https://togithub.com/apollographql/apollo-server/pull/2054) and [our documentation](https://www.apollographql.com/docs/apollo-server/v2/migration-file-uploads.html). ### [`v2.2.7`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v227) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/1e5cdc63975132004390a2138fd01e85b6f8ae32...d7e7834633ea9f703473aa432247a3523c86c597) - `apollo-engine-reporting`: When multiple instances of `apollo-engine-reporting` are loaded (an uncommon edge case), ensure that `encodedTraces` are handled only once rather than once per loaded instance. [PR #2040](https://togithub.com/apollographql/apollo-server/pull/2040) ### [`v2.2.6`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v226) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/85e9094f6ce531aa25a42dad93c98ab37ef6e9f8...1e5cdc63975132004390a2138fd01e85b6f8ae32) - `apollo-server-micro`: Set the `Content-type` to `text/html` for GraphQL Playground. [PR #2026](https://togithub.com/apollographql/apollo-server/pull/2026) ### [`v2.2.5`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v225) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/ee44bdb71642f3b07b6816a51b3256074209f354...85e9094f6ce531aa25a42dad93c98ab37ef6e9f8) - Follow-up on the update to `graphql-playground-html` in previous release by also bumping the minor version of the `graphql-playground-react` dependency to `1.7.10` — which is the version requested from the from the CDN bundle by `graphql-playground-html`. [PR #2037](https://togithub.com/apollographql/apollo-server/pull/2037) ### [`v2.2.4`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v224) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/1f3801c94967941f539e4bf925c92134b56478e7...ee44bdb71642f3b07b6816a51b3256074209f354) - Fix GraphQL Playground documentation scrolling bug in Safari by updating to latest (rebased) fork of `graphql-playground-html`. [PR #2037](https://togithub.com/apollographql/apollo-server/pull/2037) ### [`v2.2.3`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v223) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/47676e0cd965515554e171ea7d2a99573125ae58...1f3801c94967941f539e4bf925c92134b56478e7) - When `generateClientInfo` is not used to define the client name, client version and client reference ID, Apollo Server will now default to the values present in the HTTP headers of the request (`apollographql-client-name`, `apollographql-client-reference-id` and `apollographql-client-version` respectively). As a last resort, when those headers are not set, the query extensions' `clientInfo` values will be used. [PR #1960](https://togithub.com/apollographql/apollo-server/pull/1960) ### [`v2.2.2`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v222) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/20eb2e9e0353b58c0e445cc8e9b56f3a93d64db2...47676e0cd965515554e171ea7d2a99573125ae58) - Fixed TypeScript 2.2 compatibility via updated `apollo-tooling` dependency. [Issue #1951](https://togithub.com/apollographql/apollo-server/issues/1951) [`26d6c739`](https://togithub.com/apollographql/apollo-server/commit/26d6c739505b3112694e641c272c748ce38ba86b) - Throw a more specific error when asynchronous introspection query behavior is detected. [PR #1955](https://togithub.com/apollographql/apollo-server/pull/1955) ### [`v2.2.1`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v221) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/6bd73b175ff628a5e9858e2a5da1aa9dab5ed348...20eb2e9e0353b58c0e445cc8e9b56f3a93d64db2) - Added support for an array of `modules` on the `ApolloServer` constructor options. Each element of the `modules` can point to a module which exports `typeDefs` and `resolvers`. These modules can be used in lieu of, or in combination with, directly specifying `schema` or `typeDefs`/`resolvers` on the constructor options. This provides greater modularity and improved organization for logic which might be limited to a specific service. [`8f6481e6`](https://togithub.com/apollographql/apollo-server/commit/8f6481e60f8418738f9ebbe9d5ab5e7e2ce4d319). - Added `resolveObject` support to query execution. [`bb67584`](https://togithub.com/apollographql/apollo-server/commit/bb67584a224843a5b2509c2ebdd94e616fe6227c). - Fix broken `apollo-server-cloud-functions` in 2.2.0 caused by missing TypeScript project references which resulted in the package not being published to npm in compiled form. [PR #1948](https://togithub.com/apollographql/apollo-server/pull/1948) ### [`v2.2.0`](https://togithub.com/apollographql/apollo-server/blob/master/CHANGELOG.md#v220) [Compare Source](https://togithub.com/apolloRenovate configuration
:date: Schedule: "after 10pm every weekday,before 5am every weekday" in timezone Europe/London.
:vertical_traffic_light: Automerge: Disabled by config. Please merge this manually once you are satisfied.
:recycle: Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
:no_bell: Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by WhiteSource Renovate. View repository job log here.