Playground can either use external settings or its default settings (browser settings), in incompatible ways. The original implementation of default settings here would always provide 'settings' for Playground, in turn make its own settings mechanism disabled, with consequences such as altering settings in-browser cannot work as expect. Besides, once the default settings here go different with Playground provided, it would cause other problems.
The intention here is to use Playground setting as default, while explicit passing Playground settings in Apollo server would still work with defaults defined here merged.
* Switch to a fork of `apollo-upload-server` to fix missing `core-js` dependency.
As reported in https://github.com/apollographql/apollo-server/issues/1542,
the `apollo-upload-server` package (v5.0.0, which `apollo-server` relies on)
is no longer able to provide a `core-js` package because of change that was
outside of its control in a Babel release.
The problem is resolved in newer versions of `apollo-upload-server`,
however, regrettably, the newer versions of that package (notably, v6 and
v7) drop support for Node.js 6 — one of two versions of Node.js that are
currently under the terms of the Node.js Foundation's Long-Term-Support
(LTS) agreements.
Since Apollo Server aims to support versions of Node.js which are under LTS
(and will drop support for Node.js 6 in April 2019, per Node.js' schedule)
the current, immediate solution is to fork the `apollo-upload-server`
package as `@apollographql/apollo-upload-server`.
With the inclusion of
https://github.com/apollographql/apollo-upload-server/pull/1, we are able to
keep supporting Node.js 6. Without this change, every new installation
of `apollo-server`, which doesn't have a `package-lock.json` preventing
transitive dependency updates - specifically, the updates to
`@babel/runtime` versions newer than `-beta.56` - is broken.
* [squash] Update to `@apollographql/apollo-upload-server@5.0.2`.
* [squash] Update to `@apollographql/apollo-upload-server@5.0.3`.
* Fixed support for GraphQL Playground with custom configuration in production environments.
* Updated logic in `createPlaygroundOptions` to cast the `playground` option to a boolean
if it is defined. Fall back to `isDev` logic only if undefined.
* Updated unit test for partial graphql playground options to emulate a 'production'
environment, mimicking the scenario that was broken before.
* Add PR #1495 to CHANGELOG.
* Restore partial playground options test when no `NODE_ENV`
* Add a wider diversity of `gui` options
Although I know we want to remain less tied to the GraphQL Playground
GUI options, we definitely want to support a wider variety of options to
be passed in. This adds support for specifying partial options either
statically or dynamically for the gui, which can be extended to allow
for a wider array of guis than only GraphQL playground.
* Add boolean option and configuration for tabs
* move gui setting into ApolloServer Constructor
* document playground configuration in the constructor
* update playground types and fixed micro + koa integrations
* change gui to playground
* docs: change gui to playground
* fix logic for playground creation
* add cors option to apollo-server's constructor
* docs: add cors option to costructor for apollo-server
* expose CorsOptions from vanilla and express integrations
* Update apollo-server.md
* enable willSendResponse to return a modified response
* add formatError as an extension that wraps engine reporting
* ensure that formatError once on every error path
* move old formatError express tests into integration suite
* add error lifecycle with minimal engine reporting check
* increase granularity of formatError test
* return 400 error for GraphQL error created by context
* add check for internal server error for errors thrown in context
* comment about context error status code
* 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
* Enable declarationMap in tsconfig.json
See http://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-9.html
* Add apollo-server-caching package and improve typings
* Remove superfluous test steps
* Add .npmignore to apollo-server-caching
* Add apollo-server-env and apollo-datasource-rest packages
* Fix broken imports
* Use prepublish instead of prepare
* cache is now passed to data sources from ApolloServer constructor
* fix Object.values to use the object passed in rather than this
* add initial datasource test
* docs: initial data source documentation
* docs: initial data source documentation
* compiles and documentation now highlights code in data-sources.md
* Some changes to the data source docs
ApolloServer builds in graphql-playground rather than graphiql, so we no longer
provide middleware for serving GraphiQL.
If this turns out to be an unpopular choice, we can always add support for
graphiql instead of graphql-playground back in later.
We prefer graphql-playground because it allows you to enter HTTP request
headers, view query history, and explicitly supports graphql@0.13.
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.
* feat: ApolloServer is created and exported by all variants
* docs: add initial docs around exporting ApolloServer
* feat: export gql from integrations
* docs: change apollo-server examples to use express with registerServer
* server: remove registerExpressServer
* core, docs: comment functions, fix api reference, context creation more like middleware args
* docs: fix integrationed typo