* core: return response object from runHttpQuery
* core: change gqlResponse to graphqlResponse and add custom RequestInit type
* core: add cache-control headers based on the calcualted maxAge
* core: add extensions check during cache-control header creation
* core: create headers when cacheControl is not enabled otherwise pass through extensions
* express: initial tests of CDN cach-contol headers
* core: fixed tests with applyMiddleware and pass cacheControl config
* core: cache hint fixes, ignore when no maxAge, and check for rootKeys
* core: check for hints of length 0
* core: node 10 fails file upload test for some stream reason
* docs: add cdn caching section to features
* add space after // in comments
* fix feedback: proxy alignment and response creation
Adds cache-control toggles for http header calculation and stripping out
the cache control extensions from the respose.
Brings the default calculation of headers in line with the proxy.
* fix links in comments
* fix tests with null dereference
* update cdn docs and migration guide to include latest cdn configuration
* add not for engine migration to set engine to false
* add engine set to false in migration guide
* express: fixed tests
* address feedback to use omit and documentation
* docs: cdn caching is alternative to full response caching
* add back epipe check in upload tests
We recommend the use of apollo-engine-reporting and the other built-in features
of AS 2.0 rather than engineProxy. You can still use the apollo-engine npm
module manually with AS 2.0, or stay on AS 1.0.
This requires a slightly newer graphql-extensions beta which has more arguments
to requestDidStart.
Also make it ok to not pass logFunction to formatApolloErrors, and make sure
custom fieldResolvers continue to work with extensions (by upgrading the
dependency and fixing a logic bug).
The custom fieldResolvers fix means that we now unconditionally put the
extension stack on the GraphQL context, which means that the context can no
longer be (say) a string. I changed a test that expected string contexts to
work. You couldn't use a string for a context when using extensions before, so
this isn't that big of a change.
- Actually call validationDidStart and parsingDidStart.
- Use new graphql-extensions API which:
- replaces fooDidEnd with a handler returned by fooDidStart
- adds options to various methods
- has a new willSendResponse method
- requires you to construct the extension objects yourself (but make
the external API for specifying extensions to ApolloServer be
factories, because extensions are per request)
- Make a better effort at consistently calling end handlers even on error
runQuery currently takes a `query` argument that is either a string or a
DocumentNode. This means that it's possible to accidentally support syntax we
don't mean to. For example, if you happen to send a JSON-serialized DocumentNode
over the wire, we'll happily execute that, and you'll believe you're using
GraphQL even though you really aren't --- until you try to use some other
GraphQL tool that expects to see the GraphQL query language rather than
graphql-js ASTs.
Additionally, GET requests parse their queries in runHttpQuery rather than
runQuery, leading to inconsistent error handling semantics on parse failures.
Simplify the runQuery API (which is technically exported though intended to be
mostly internal) to take in either a parsedQuery or a queryString argument. The
main use case for knowing about these parameters is if you're using formatParams
with OperationStore; its docs and tests have been updated to reflect this.
Stop parsing queries in runHttpQuery; instead, ensure we throw the right error
for mutations-over-GET by passing the error to throw into runQuery.
Stop accidentally supporting graphql-js ASTs on the wire --- but throw an
informative error when you do so.
This backwards-incompatible change is intended for apollo-server-core 2.0.
This fixes executing a query if all fields it encounters have synchronous resolvers, for which behavior changed in 0.12.x due to graphql/graphql-js#1115.
Closes#718, closes#720