apollographql/apollo-server
### [`v2.14.2`](https://togithub.com/apollographql/apollo-server/blob/HEAD/CHANGELOG.md#v2142)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/2da65ef9204027e43baedf9ce385bb3794fd0c9b...a17f26bf3ee2892f5c3751713cf59920049cc73a)
> **Note:** This release is is related to a GitHub Security Advisory published by the Apollo Server team. Please read the attached advisory to understand the impact.
- ⚠️ **SECURITY:** Pass all schema validation rules to the subscription server, including validation rules that restrict introspection when introspection is meant to be disabled. **[Read the full GitHub Security Advisory for details](https://togithub.com/apollographql/apollo-server/security/advisories/GHSA-w42g-7vfc-xf37)**.
### [`v2.14.1`](https://togithub.com/apollographql/apollo-server/blob/HEAD/CHANGELOG.md#v2141)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/d159e320879f594ba2d04036e3e1aa0653ff164d...2da65ef9204027e43baedf9ce385bb3794fd0c9b)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/2da65ef9204027e43baedf9ce385bb3794fd0c9b)
- `apollo-server-testing`: Ensure that user-provided context is cloned when using `createTestClient`, per the instructions in the [integration testing]() section of the Apollo Server documentation. [Issue #4170](https://togithub.com/apollographql/apollo-server/issues/4170) [PR #4175](https://togithub.com/apollographql/apollo-server/pull/4175)
### [`v2.14.0`](https://togithub.com/apollographql/apollo-server/blob/HEAD/CHANGELOG.md#v2140)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/05df0790346facb64d7bf76d4520f4ba734b114c...d159e320879f594ba2d04036e3e1aa0653ff164d)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/d159e320879f594ba2d04036e3e1aa0653ff164d)
- `apollo-server-core` / `apollo-server-plugin-base`: Add support for `willResolveField` and corresponding end-handler within `executionDidStart`. This brings the remaining bit of functionality that was previously only available from `graphql-extensions` to the new plugin API. The `graphql-extensions` API (which was never documented) will be deprecated in Apollo Server 3.x. To see the documentation for the request pipeline API, see [its documentation](https://www.apollographql.com/docs/apollo-server/integrations/plugins/). For more details, see the attached PR. [PR #3988](https://togithub.com/apollographql/apollo-server/pull/3988)
- `apollo-server-core`: Deprecate `graphql-extensions`. All internal usages of the `graphql-extensions` API have been migrated to the request pipeline plugin API. For any implementor-supplied `extensions`, a deprecation warning will be printed once per-extension, per-server-startup, notifying of the intention to deprecate. Extensions should migrate to the plugin API, which is outlined in [its documentation](https://www.apollographql.com/docs/apollo-server/integrations/plugins/). [PR #4135](https://togithub.com/apollographql/apollo-server/pull/4135)
- `apollo-engine-reporting`: **Currently only for non-federated graphs.**
Added an *experimental* schema reporting option,
`experimental_schemaReporting`, for Apollo Graph Manager users. **During
this experiment, we'd appreciate testing and feedback from current and new
users of the schema registry!**
Prior to the introduction of this feature, the only way to get schemas into
the schema registry in Apollo Graph Manager was to use the CLI and run
`apollo schema:push`. *Apollo schema reporting protocol* is a *new*
specification for GraphQL servers to automatically report schemas to the
Apollo Graph Manager schema registry.
**To enable schema reporting,** provide a Graph Manager API key (available
free from [Apollo Graph Manager](https://engine.apollographql.com/)) in the
`APOLLO_KEY` environment variable *and* set the `experimental_schemaReporting`
option to `true` in the Apollo Server constructor options, like so:
```js
const server = new ApolloServer({
typeDefs,
resolvers,
engine: {
experimental_schemaReporting: true,
/* Other existing options can remain the same. */
},
});
```
> When enabled, a schema reporter is initiated by the `apollo-engine-reporting` agent. It will loop until the `ApolloServer` instance is stopped, periodically calling back to Apollo Graph Manager to send information. The life-cycle of this reporter is managed by the agent.
For more details on the implementation of this new protocol, see the PR which
introduced it to Apollo Server and the [preview documentation](https://togithub.com/apollographql/apollo-schema-reporting-preview-docs).
[PR #4084](https://togithub.com/apollographql/apollo-server/pull/4084)
- `apollo-engine-reporting`: The underlying integration of this plugin, which instruments and traces the graph's resolver performance and transmits these metrics to [Apollo Graph Manager](https://engine.apollographql.com/), has been changed from the (soon to be deprecated) `graphql-extensions` API to the new [request pipeline `plugins` API](https://www.apollographql.com/docs/apollo-server/integrations/plugins/). [PR #3998](https://togithub.com/apollographql/apollo-server/pull/3998)
*This change should be purely an implementation detail for a majority of users*. There are, however, some special considerations which are worth noting:
- The federated tracing plugin's `ftv1` response on `extensions` (which is present on the response from an implementing service to the gateway) is now placed on the `extensions` *after* the `formatResponse` hook. Anyone leveraging the `extensions`.`ftv1` data from the `formatResponse` hook will find that it is no longer present at that phase.
- `apollo-tracing`: This package's internal integration with Apollo Server has been switched from using the soon-to-be-deprecated `graphql-extensions` API to using [the request pipeline plugin API](https://www.apollographql.com/docs/apollo-server/integrations/plugins/). Behavior should remain otherwise the same. [PR #3991](https://togithub.com/apollographql/apollo-server/pull/3991)
- `apollo-cache-control`: This package's internal integration with Apollo Server has been switched from using the soon-to-be-deprecated `graphql-extensions` API to using [the request pipeline plugin API](https://www.apollographql.com/docs/apollo-server/integrations/plugins/). Behavior should remain otherwise the same. [PR #3997](https://togithub.com/apollographql/apollo-server/pull/3997)
### [`v2.13.1`](https://togithub.com/apollographql/apollo-server/compare/e37384a49b2bf474eed0de3e9f4a1bebaeee64c7...05df0790346facb64d7bf76d4520f4ba734b114c)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/e37384a49b2bf474eed0de3e9f4a1bebaeee64c7...05df0790346facb64d7bf76d4520f4ba734b114c)
### [`v2.13.0`](https://togithub.com/apollographql/apollo-server/blob/HEAD/CHANGELOG.md#v2130)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/71a3863f59f4ab2c9052c316479d94c6708c4309...e37384a49b2bf474eed0de3e9f4a1bebaeee64c7)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/e37384a49b2bf474eed0de3e9f4a1bebaeee64c7)
- Allow passing a `WebSocket.Server` to `ApolloServer.installSubscriptionHandlers`. [PR #2314](https://togithub.com/apollographql/apollo-server/pull/2314)
- `apollo-server-lambda`: Support file uploads on AWS Lambda [Issue #1419](https://togithub.com/apollographql/apollo-server/issues/1419) [Issue #1703](https://togithub.com/apollographql/apollo-server/issues/1703) [PR #3926](https://togithub.com/apollographql/apollo-server/pull/3926)
- `apollo-engine-reporting`: Fix inadvertent conditional formatting which prevented automated persisted query (APQ) hits and misses from being reported to Apollo Graph Manager. [PR #3986](https://togithub.com/apollographql/apollo-server/pull/3986)
- `apollo-engine-reporting`: Deprecate the `ENGINE_API_KEY` environment variable in favor of its new name, `APOLLO_KEY`. Continued use of `ENGINE_API_KEY` will result in deprecation warnings and support for it will be removed in a future major version. [#3923](https://togithub.com/apollographql/apollo-server/pull/3923)
- `apollo-engine-reporting`: Deprecated the `APOLLO_SCHEMA_TAG` environment variable in favor of its new name, `APOLLO_GRAPH_VARIANT`. Similarly, within the `engine` configuration object, the `schemaTag` property has been renamed `graphVariant`. The functionality remains otherwise unchanged, but their new names mirror the name used within Apollo Graph Manager. Continued use of the now-deprecated names will result in deprecation warnings and support will be dropped completely in the next "major" update. To avoid misconfiguration, a runtime error will be thrown if *both* new and deprecated names are set. [PR #3855](https://togithub.com/apollographql/apollo-server/pull/3855)
- `apollo-engine-reporting-protobuf`: **(This is a breaking change only if you directly depend on `apollo-engine-reporting-protobuf`.)** Drop legacy fields that were never used by `apollo-engine-reporting`. Added new fields `StatsContext` to allow `apollo-server` to send summary stats instead of full traces, and renamed `FullTracesReport` to `Report` and `Traces` to `TracesAndStats` since reports now can include stats as well as traces.
### [`v2.12.0`](https://togithub.com/apollographql/apollo-server/blob/HEAD/CHANGELOG.md#v2120)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/056f083ddaf116633e6f759a2b3d69248bb18f66...71a3863f59f4ab2c9052c316479d94c6708c4309)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/71a3863f59f4ab2c9052c316479d94c6708c4309)
- `apollo-server-core`: Support providing a custom logger implementation (e.g. [`winston`](https://npm.im/winston), [`bunyan`](https://npm.im/bunyan), etc.) to capture server console messages. Though there has historically been limited output from Apollo Server, some messages are important to capture in the larger context of production logging facilities or can benefit from using more advanced structure, like JSON-based logging. This also introduces a `logger` property to the `GraphQLRequestContext` that is exposed to plugins, making it possible for plugins to leverage the same server-level logger, and allowing implementors to create request-specific log contexts, if desired. When not provided, these will still output to `console`. [PR #3894](https://togithub.com/apollographql/apollo-server/pull/3894)
- `apollo-server-core`: When operating in gateway mode using the `gateway` property of the Apollo Server constructor options, the failure to initialize a schema during initial start-up, e.g. connectivity problems, will no longer result in the federated executor from being assigned when the schema eventually becomes available. This precludes a state where the gateway may never become available to serve federated requests, even when failure conditions are no longer present. [PR #3811](https://togithub.com/apollographql/apollo-server/pull/3811)
- `apollo-server-core`: Prevent a condition which prefixed an error message on each request when the initial gateway initialization resulted in a Promise-rejection which was memoized and re-prepended with `Invalid options provided to ApolloServer:` on each request. [PR #3811](https://togithub.com/apollographql/apollo-server/pull/3811)
- `apollo-server-express`: Disable the automatic inclusion of the `x-powered-by: express` header. [PR #3821](https://togithub.com/apollographql/apollo-server/pull/3821)
- `apollo-engine-reporting`: Avoid creating new arrays when building trace trees. [PR #3479](https://togithub.com/apollographql/apollo-server/pull/3479)
- `apollo-server-core`: Bump `graphql` `peerDependencies` range to include `^15.0.0`. [PR #3944](https://togithub.com/apollographql/apollo-server/pull/3944)
### [`v2.11.0`](https://togithub.com/apollographql/apollo-server/blob/HEAD/CHANGELOG.md#v2110)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/dba97895485d6444535a684d4646f1363954f698...056f083ddaf116633e6f759a2b3d69248bb18f66)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/056f083ddaf116633e6f759a2b3d69248bb18f66)
- The range of accepted `peerDependencies` 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/HEAD/CHANGELOG.md#v2101)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/9c0aa1e661ccc2c5a1471b781102637dd47e21b1...dba97895485d6444535a684d4646f1363954f698)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/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/HEAD/CHANGELOG.md#v2100)
[Compare Source](https://togithub.com/apollographql/apollo-server/compare/4d1a75e318897c335674c7ee046c0baec7df4a9b...9c0aa1e661ccc2c5a1471b781102637dd47e21b1)
> [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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)
[ ] If you want to rebase/retry this PR, click this checkbox.
This PR contains the following updates:
2.8.1
->2.14.2
By merging this PR, the issue #22 will be automatically resolved and closed:
Release Notes
apollographql/apollo-server
### [`v2.14.2`](https://togithub.com/apollographql/apollo-server/blob/HEAD/CHANGELOG.md#v2142) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/2da65ef9204027e43baedf9ce385bb3794fd0c9b...a17f26bf3ee2892f5c3751713cf59920049cc73a) > **Note:** This release is is related to a GitHub Security Advisory published by the Apollo Server team. Please read the attached advisory to understand the impact. - ⚠️ **SECURITY:** Pass all schema validation rules to the subscription server, including validation rules that restrict introspection when introspection is meant to be disabled. **[Read the full GitHub Security Advisory for details](https://togithub.com/apollographql/apollo-server/security/advisories/GHSA-w42g-7vfc-xf37)**. ### [`v2.14.1`](https://togithub.com/apollographql/apollo-server/blob/HEAD/CHANGELOG.md#v2141) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/d159e320879f594ba2d04036e3e1aa0653ff164d...2da65ef9204027e43baedf9ce385bb3794fd0c9b) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/2da65ef9204027e43baedf9ce385bb3794fd0c9b) - `apollo-server-testing`: Ensure that user-provided context is cloned when using `createTestClient`, per the instructions in the [integration testing]() section of the Apollo Server documentation. [Issue #4170](https://togithub.com/apollographql/apollo-server/issues/4170) [PR #4175](https://togithub.com/apollographql/apollo-server/pull/4175) ### [`v2.14.0`](https://togithub.com/apollographql/apollo-server/blob/HEAD/CHANGELOG.md#v2140) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/05df0790346facb64d7bf76d4520f4ba734b114c...d159e320879f594ba2d04036e3e1aa0653ff164d) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/d159e320879f594ba2d04036e3e1aa0653ff164d) - `apollo-server-core` / `apollo-server-plugin-base`: Add support for `willResolveField` and corresponding end-handler within `executionDidStart`. This brings the remaining bit of functionality that was previously only available from `graphql-extensions` to the new plugin API. The `graphql-extensions` API (which was never documented) will be deprecated in Apollo Server 3.x. To see the documentation for the request pipeline API, see [its documentation](https://www.apollographql.com/docs/apollo-server/integrations/plugins/). For more details, see the attached PR. [PR #3988](https://togithub.com/apollographql/apollo-server/pull/3988) - `apollo-server-core`: Deprecate `graphql-extensions`. All internal usages of the `graphql-extensions` API have been migrated to the request pipeline plugin API. For any implementor-supplied `extensions`, a deprecation warning will be printed once per-extension, per-server-startup, notifying of the intention to deprecate. Extensions should migrate to the plugin API, which is outlined in [its documentation](https://www.apollographql.com/docs/apollo-server/integrations/plugins/). [PR #4135](https://togithub.com/apollographql/apollo-server/pull/4135) - `apollo-engine-reporting`: **Currently only for non-federated graphs.** Added an *experimental* schema reporting option, `experimental_schemaReporting`, for Apollo Graph Manager users. **During this experiment, we'd appreciate testing and feedback from current and new users of the schema registry!** Prior to the introduction of this feature, the only way to get schemas into the schema registry in Apollo Graph Manager was to use the CLI and run `apollo schema:push`. *Apollo schema reporting protocol* is a *new* specification for GraphQL servers to automatically report schemas to the Apollo Graph Manager schema registry. **To enable schema reporting,** provide a Graph Manager API key (available free from [Apollo Graph Manager](https://engine.apollographql.com/)) in the `APOLLO_KEY` environment variable *and* set the `experimental_schemaReporting` option to `true` in the Apollo Server constructor options, like so: ```js const server = new ApolloServer({ typeDefs, resolvers, engine: { experimental_schemaReporting: true, /* Other existing options can remain the same. */ }, }); ``` > When enabled, a schema reporter is initiated by the `apollo-engine-reporting` agent. It will loop until the `ApolloServer` instance is stopped, periodically calling back to Apollo Graph Manager to send information. The life-cycle of this reporter is managed by the agent. For more details on the implementation of this new protocol, see the PR which introduced it to Apollo Server and the [preview documentation](https://togithub.com/apollographql/apollo-schema-reporting-preview-docs). [PR #4084](https://togithub.com/apollographql/apollo-server/pull/4084) - `apollo-engine-reporting`: The underlying integration of this plugin, which instruments and traces the graph's resolver performance and transmits these metrics to [Apollo Graph Manager](https://engine.apollographql.com/), has been changed from the (soon to be deprecated) `graphql-extensions` API to the new [request pipeline `plugins` API](https://www.apollographql.com/docs/apollo-server/integrations/plugins/). [PR #3998](https://togithub.com/apollographql/apollo-server/pull/3998) *This change should be purely an implementation detail for a majority of users*. There are, however, some special considerations which are worth noting: - The federated tracing plugin's `ftv1` response on `extensions` (which is present on the response from an implementing service to the gateway) is now placed on the `extensions` *after* the `formatResponse` hook. Anyone leveraging the `extensions`.`ftv1` data from the `formatResponse` hook will find that it is no longer present at that phase. - `apollo-tracing`: This package's internal integration with Apollo Server has been switched from using the soon-to-be-deprecated `graphql-extensions` API to using [the request pipeline plugin API](https://www.apollographql.com/docs/apollo-server/integrations/plugins/). Behavior should remain otherwise the same. [PR #3991](https://togithub.com/apollographql/apollo-server/pull/3991) - `apollo-cache-control`: This package's internal integration with Apollo Server has been switched from using the soon-to-be-deprecated `graphql-extensions` API to using [the request pipeline plugin API](https://www.apollographql.com/docs/apollo-server/integrations/plugins/). Behavior should remain otherwise the same. [PR #3997](https://togithub.com/apollographql/apollo-server/pull/3997) ### [`v2.13.1`](https://togithub.com/apollographql/apollo-server/compare/e37384a49b2bf474eed0de3e9f4a1bebaeee64c7...05df0790346facb64d7bf76d4520f4ba734b114c) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/e37384a49b2bf474eed0de3e9f4a1bebaeee64c7...05df0790346facb64d7bf76d4520f4ba734b114c) ### [`v2.13.0`](https://togithub.com/apollographql/apollo-server/blob/HEAD/CHANGELOG.md#v2130) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/71a3863f59f4ab2c9052c316479d94c6708c4309...e37384a49b2bf474eed0de3e9f4a1bebaeee64c7) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/e37384a49b2bf474eed0de3e9f4a1bebaeee64c7) - Allow passing a `WebSocket.Server` to `ApolloServer.installSubscriptionHandlers`. [PR #2314](https://togithub.com/apollographql/apollo-server/pull/2314) - `apollo-server-lambda`: Support file uploads on AWS Lambda [Issue #1419](https://togithub.com/apollographql/apollo-server/issues/1419) [Issue #1703](https://togithub.com/apollographql/apollo-server/issues/1703) [PR #3926](https://togithub.com/apollographql/apollo-server/pull/3926) - `apollo-engine-reporting`: Fix inadvertent conditional formatting which prevented automated persisted query (APQ) hits and misses from being reported to Apollo Graph Manager. [PR #3986](https://togithub.com/apollographql/apollo-server/pull/3986) - `apollo-engine-reporting`: Deprecate the `ENGINE_API_KEY` environment variable in favor of its new name, `APOLLO_KEY`. Continued use of `ENGINE_API_KEY` will result in deprecation warnings and support for it will be removed in a future major version. [#3923](https://togithub.com/apollographql/apollo-server/pull/3923) - `apollo-engine-reporting`: Deprecated the `APOLLO_SCHEMA_TAG` environment variable in favor of its new name, `APOLLO_GRAPH_VARIANT`. Similarly, within the `engine` configuration object, the `schemaTag` property has been renamed `graphVariant`. The functionality remains otherwise unchanged, but their new names mirror the name used within Apollo Graph Manager. Continued use of the now-deprecated names will result in deprecation warnings and support will be dropped completely in the next "major" update. To avoid misconfiguration, a runtime error will be thrown if *both* new and deprecated names are set. [PR #3855](https://togithub.com/apollographql/apollo-server/pull/3855) - `apollo-engine-reporting-protobuf`: **(This is a breaking change only if you directly depend on `apollo-engine-reporting-protobuf`.)** Drop legacy fields that were never used by `apollo-engine-reporting`. Added new fields `StatsContext` to allow `apollo-server` to send summary stats instead of full traces, and renamed `FullTracesReport` to `Report` and `Traces` to `TracesAndStats` since reports now can include stats as well as traces. ### [`v2.12.0`](https://togithub.com/apollographql/apollo-server/blob/HEAD/CHANGELOG.md#v2120) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/056f083ddaf116633e6f759a2b3d69248bb18f66...71a3863f59f4ab2c9052c316479d94c6708c4309) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/71a3863f59f4ab2c9052c316479d94c6708c4309) - `apollo-server-core`: Support providing a custom logger implementation (e.g. [`winston`](https://npm.im/winston), [`bunyan`](https://npm.im/bunyan), etc.) to capture server console messages. Though there has historically been limited output from Apollo Server, some messages are important to capture in the larger context of production logging facilities or can benefit from using more advanced structure, like JSON-based logging. This also introduces a `logger` property to the `GraphQLRequestContext` that is exposed to plugins, making it possible for plugins to leverage the same server-level logger, and allowing implementors to create request-specific log contexts, if desired. When not provided, these will still output to `console`. [PR #3894](https://togithub.com/apollographql/apollo-server/pull/3894) - `apollo-server-core`: When operating in gateway mode using the `gateway` property of the Apollo Server constructor options, the failure to initialize a schema during initial start-up, e.g. connectivity problems, will no longer result in the federated executor from being assigned when the schema eventually becomes available. This precludes a state where the gateway may never become available to serve federated requests, even when failure conditions are no longer present. [PR #3811](https://togithub.com/apollographql/apollo-server/pull/3811) - `apollo-server-core`: Prevent a condition which prefixed an error message on each request when the initial gateway initialization resulted in a Promise-rejection which was memoized and re-prepended with `Invalid options provided to ApolloServer:` on each request. [PR #3811](https://togithub.com/apollographql/apollo-server/pull/3811) - `apollo-server-express`: Disable the automatic inclusion of the `x-powered-by: express` header. [PR #3821](https://togithub.com/apollographql/apollo-server/pull/3821) - `apollo-engine-reporting`: Avoid creating new arrays when building trace trees. [PR #3479](https://togithub.com/apollographql/apollo-server/pull/3479) - `apollo-server-core`: Bump `graphql` `peerDependencies` range to include `^15.0.0`. [PR #3944](https://togithub.com/apollographql/apollo-server/pull/3944) ### [`v2.11.0`](https://togithub.com/apollographql/apollo-server/blob/HEAD/CHANGELOG.md#v2110) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/dba97895485d6444535a684d4646f1363954f698...056f083ddaf116633e6f759a2b3d69248bb18f66) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/056f083ddaf116633e6f759a2b3d69248bb18f66) - The range of accepted `peerDependencies` 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/HEAD/CHANGELOG.md#v2101) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/9c0aa1e661ccc2c5a1471b781102637dd47e21b1...dba97895485d6444535a684d4646f1363954f698) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/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/HEAD/CHANGELOG.md#v2100) [Compare Source](https://togithub.com/apollographql/apollo-server/compare/4d1a75e318897c335674c7ee046c0baec7df4a9b...9c0aa1e661ccc2c5a1471b781102637dd47e21b1) > [See complete versioning details.](https://togithub.com/apollographql/apollo-server/commit/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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/HEAD/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)