- Allow
GraphQLRequestListener
callbacks in plugins to depend onthis
. PR #2470
- No functional changes in this version. The patch version has been bumped to fix the
README.md
displayed on the npm package forapollo-server
as a result of a broken publish. Apologies for the additional noise!
- Fix typings which incorrectly included
cors
as part of the constructor options forapollo-server-express
(it should be defined viaapplyMiddleware
) but, conversely, inadvertently omitted the perfectly validcors
option from theapollo-server
constructor (whereapplyMiddleware
is not used/available). PR #2373 Issue #1882
- Allow Node.js-like runtimes to identify as Node.js as well. PR #2357 Issue #2356
apollo-server-express
: ExportExpressContext
PR #2352
- Fix typing for ContextFunction incorrectly requiring the context object the function produces to match the parameters of the function PR #2350
apollo-server-lambda
: Fix typings which triggered "Module has no default export" errors. PR #2230apollo-server-koa
: Support OPTIONS requests PR #2288- Add
req
andres
typings to theContextFunction
argument for apollo-server and apollo-server-express. UpdateContextFunction
return type to allow returning a value syncronously. PR #2330 - Type the
formatError
function to accept an GraphQLError as an argument and return a GraphQLFormattedError PR #2343
apollo-server-fastify
is now on Apollo Server and lives within theapollo-server
repository. This is being introduced in a patch version, however it's a major version bump from the last timeapollo-server-fastify
was published under1.0.2
. PR #1971- Move
apollo-graphql
package to theapollo-tooling
repository PR #2316
- Fix inaccurate total duration in apollo-tracing PR #2298
- Avoid importing entire
crypto
dependency tree if not in Node.js. PR #2304 - Allow passing
parseOptions
toApolloServerBase
constructor. PR #2289 - Rename
azureFunctions.d.ts
toazureFunctions.ts
. PR #2287 - Require
apollo-engine-reporting
only ifEngineReportingAgent
used. PR #2305
- 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 (
>=2.4.0-alpha.0
) - Fix: Serialize arrays as JSON on fetch in
RESTDataSource
. PR #2219 - Fix: The
privateHeaders
configuration forapollo-engine-reporting
now allows headers to be specified using any case and lower-cases them prior to comparison. PR #2276 - Fix broken
apollo-server-azure-functions
TypeScript definitions. PR #2287
apollo-server
(only): Stop double-invocation ofserverWillStart
life-cycle event. (More specific integrations - e.g. Express, Koa, Hapi, etc. - were unaffected.) PR #2239- Avoid traversing
graphql-upload
module tree in run-time environments which aren't Node.js. PR #2235
- Switch from
json-stable-stringify
tofast-json-stable-stringify
. PR #2065 - Fix cache hints of
maxAge: 0
to mean "uncachable". #2197 - Apply
defaultMaxAge
to scalar fields on the root object. #2210 - Don't write to the persisted query cache until execution will begin. PR #2227
- Provide types for
graphql-upload
in a location where they can be accessed by TypeScript consumers ofapollo-server
packages. ccf935f9 Issue #2092
-
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 theApolloServer
constructor options. Without explicitly disabling file-uploads, the server willthrow
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. Bythrow
-ing whenuploads
is not explicitly set tofalse
, 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 until April 2019, there are substantial performance (e.g. V8 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 and our documentation.
apollo-engine-reporting
: When multiple instances ofapollo-engine-reporting
are loaded (an uncommon edge case), ensure thatencodedTraces
are handled only once rather than once per loaded instance. PR #2040
apollo-server-micro
: Set theContent-type
totext/html
for GraphQL Playground. PR #2026
- Follow-up on the update to
graphql-playground-html
in previous release by also bumping the minor version of thegraphql-playground-react
dependency to1.7.10
— which is the version requested from the from the CDN bundle bygraphql-playground-html
. PR #2037
- Fix GraphQL Playground documentation scrolling bug in Safari by updating to latest (rebased) fork of
graphql-playground-html
. PR #2037
- 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
andapollographql-client-version
respectively). As a last resort, when those headers are not set, the query extensions'clientInfo
values will be used. PR #1960
- Fixed TypeScript 2.2 compatibility via updated
apollo-tooling
dependency. Issue #195126d6c739
- Throw a more specific error when asynchronous introspection query behavior is detected. PR #1955
- Added support for an array of
modules
on theApolloServer
constructor options. Each element of themodules
can point to a module which exportstypeDefs
andresolvers
. These modules can be used in lieu of, or in combination with, directly specifyingschema
ortypeDefs
/resolvers
on the constructor options. This provides greater modularity and improved organization for logic which might be limited to a specific service.8f6481e6
. - Added
resolveObject
support to query execution.bb67584
. - 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
- New request pipeline, including support for plugins which can implement lifecycle hooks at various stages of a request. PR #1795.
- Introduce new
apollo-server-testing
utilities. PR #1909 - Fix mocks configuration to allow disabling of mocks by using
mocks: false
, even ifmockEntireSchema
istrue
. PR #1835 - Update
graphql-playground-html
to 1.7.8. PR #1855 - Bring back Azure functions support Issue #1752 PR #1753
- Allow an optional function to resolve the
rootValue
, passing theDocumentNode
AST to determine the value. PR #1555 - Follow-up on the work in PR #1516 to also fix missing insertion cursor/caret when a custom GraphQL configuration is specified which doesn't specify its own
cursorShape
property. PR #1607 - Azure functions support Issue #1752 PR #1753 PR #1948
- Allow JSON parsing in
RESTDataSource
of Content Typeapplication/hal+json
. PR #185 - Add support for a
requestAgent
configuration parameter within theengine
configuration. This can be utilized when a proxy is necessary to transmit tracing and metrics data to Apollo Engine. It accepts either anhttp.Agent
orhttps.Agent
and behaves the same as theagent
parameter to Node.js'http.request
. PR #1879
- Updated the google-cloud-functions package to handle null paths PR #1674
- Update link inside Authentication Docs PR #1682
- Fix making sure all headers are getting reported to Engine properly when using
privateHeaders
PR #1689 - (experimental, subject to change/removal) Provide ability to specify client info in traces #1631
- Reporting: Catch Error if JSON.Stringify Fails for Engine Trace PR #1668
- Core: Allow context to be passed to all GraphQLExtension methods. PR #1547
- Fix #1581
apollo-server-micro
top level error response #1619 - Switch
ApolloServerBase.schema
from private access to protected access. #1610 - Add toggle for including error messages in reports #1615
- Fix
apollo-server-cloud-functions
tests #1611
- Update
graphql-playground-html
to 1.7.4 #1586 - Add support for
graphql-js
v14 by augmenting typeDefs with the@cacheControl
directive so SDL validation doesn't fail #1595 - Add
node-fetch
extensions typing toRequestInit
#1602
- Google Cloud Function support #1402 #1446
- Switch to a fork of
apollo-upload-server
to fix missingcore-js
dependency. #1556
- apollo-server: Release due to failed build and install
- apollo-server: failed publish
- pass payload into context function for subscriptions #1513
- Add option to mock the entire schema(i.e. sets preserveResolvers) PR #1546
- Release with Lerna 3 due
- Hapi: Allow additional route options to be passed to Hapi.js plugin. PR #1384
- express, koa: remove next after playground #1436
- Hapi: Pass the response toolkit to the context function. #1407
- update apollo-engine-reporting-protobuf to non-beta #1429
- playground would use its own settings as default #1516
- Lambda: Look in event.path first when picking endpoint for GraphQL Playground #1527
- Fix to allow enabling GraphQL Playground in production with custom config #1495
- This version failed to publish fully/correctly and should not be used.
- This version failed to publish fully/correctly and should not be used.
- export GraphQLUpload from integrations #1322
- add
cors
to vanilla #1335 - export
bodyParser.Options
to koa #1334 - add and use playground in ApolloServer constructor #1297
- breaking: remove calculate headers as function #1337
- breaking: remove
formatParams
#1331
- enable engine reporting from lambda #1313
- remove flattening of errors #1288
- dynamic url in datasourece (#1277)
- BREAKING: errors are passed to user extensions, then engine reporting, and finally
formatError
(#1272) formatError
only called once on validation errors (#1272)- BREAKING: apollo-server-env does place types in global namespace (#1259)
- export Request from apollo-datasource-rest and graphql-extensions (53d7a75 c525818)
- Use scoped graphql-playground and centralize version (8ea36d8, 84233d2)
- fix dependencies + exports (#1257)
- fix data source + context cloning (7e35305)
- use fetch instead of Node request for engine-reporting (#1274)
- fix formatError to keep prototype of Error (#1235)
- Add trailing slash to data source
- allow body passed to data source
- new apollo-engine-reporting agent
- Missing apollo-upload-server dependency (#1221)
- encode trace report over each request in apollo-engine-reporting
- BREAKING: remove logFunction (71a403d), see this commit for an implementation
- move upload option to constructor (#1204)
- fixed hapi gui bugs (#1211)
- remove requirement for exModuleInterop (#1210)
- change BadUserInputError to UserInputError (#1208)
- add cache-control headers for CDN integration (#1138)
- Lambda support (thanks to @adnsio, @bwlt, and @gragio #1138)
Data sources
- Breaking:
registerServer
changed toserver.applyMiddleware
(3279991) - Breaking: subscriptions enabled with
installSubscriptionHandlers
- Add Data Sources (#1163)
- Bug fix to allow async context (#1129)
- logFunction is now an extension (#1128)
- Allow user defined extensions and include engine reporting (#1105)
- remove registerServer configuration from
apollo-server
's listen (#1090) - move healthcheck into variants (#1086)
- Add file uploads, breaking requires removing
scalar Upload
from the typeDefs (#1071) - Add reporting to Engine as apollo-engine-reporting (#1105)
- Allow users to define extensions (#1105)
ListenOptions:
-
engine
->engineProxy
-
port
,host
, and other http options moved underhttp
key (#1080) -
subscriptions
moved toserver.listen
(#1059) -
Add mocks to server constructor (#1017)
-
Add
bodyParserConfig
parameter toregisterServer
in apollo-server (#1059) commit -
Remove tests and guaranteed support for Node 4 PR #1024
-
Cleanup docs PR #1233
- [Issue #626] Integrate apollo-fastify plugin. PR #1013
- add hapi 16 next() invocation PR #743
- Add skipValidation option PR #839
apollo-server-module-graphiql
: adds an option to the constructor to disable url rewriting when editing a query PR #1047- Upgrade
subscription-transport-ws
to 0.9.9 for Graphiql
- Recognize requests with Apollo Persisted Queries and return
PersistedQueryNotSupported
to the client instead of a confusing error. PR #982
apollo-server-adonis
: TheContent-type
of an operation response will now be correctly set toapplication/json
. PR #842 PR #910apollo-server-azure-functions
: Fix non-functional Azure Functions implementation and update examples in Azure Functions'README.md
. PR #753 Issue #684- Fix
TypeError
on GET requests with missingquery
parameter. PR #964 - The typing on the context of
GraphQLServerOptions
now matches the equivilent type used bygraphql-tools
. PR #919 - Middleware handlers now used named (rather than anonymous) functions to enable easier identification during debugging/profiling. PR #827
- The
npm-check-updates
package has been removed as a "dev dependency" which was resulting in an older version ofnpm
being used during testing. PR #959 - The typing on
HttpQueryRequest
'squery
attribute now enforces that its object properties' keys beString
s. PR #834 - TypeScript types have been updated via updates to
@types/node
,@types/connect
,@types/koa
and@types/aws-lambda
.
- Upgrade to
[email protected]
and allow you to specify options to it (such as the newdefaultMaxAge
) by passingcacheControl: {defaultMaxAge: 5}
instead ofcacheControl: true
.
- Updated peer dependencies to support
[email protected]
. apollo-server-express
: TheGraphQLOptions
type is now exported fromapollo-server-express
in order to facilitate type checking when utilizinggraphqlExpress
,graphiqlExpress
,graphqlConnect
andgraphiqlConnect
. PR #871- Update GraphiQL version to 0.11.11. PR #914
- Updated peer dependencies and tests to support
[email protected]
. - Fix issue where the core
runQuery
method broke the ability to use the Nodeasync_hooks
feature's call stack. PR #733 - Hoist declarations of rarely used functions out of
doRunQuery
to improve performance. PR# 821
- Fixed a fatal execution error with the new
[email protected]
.
- Breaking:
apollo-server-hapi
: now supports Hapi v17, and no longer supports Hapi v16. For information on running Apollo Server 1.x with Hapi v16, check this documentation. - New package:
apollo-server-adonis
supporting the Adonis framework! - The
graphqlOptions
parameter to server GraphQL integration functions now accepts context as a function and as an object with a prototype. PR #679 apollo-server-express
: Send Content-Length header.apollo-server-micro
: Allow Micro 9 inpeerDependencies
. PR #671- GraphiQL integration:
- Recognize Websocket endpoints with secure
wss://
URLs. - Only include truthy values in GraphiQL URL.
- Recognize Websocket endpoints with secure
- New feature: Add support for Apollo Cache Control. Enable
apollo-cache-control
by passingcacheControl: true
to your server's GraphQL integration function. - Include README.md in published npm packages.
- Added support for the vhost option for Hapi PR #611
- Fix dependency on
apollo-tracing
to be less strict.
(v1.1.4 had a major bug and was immediately unpublished. v1.1.5 was identical to v1.1.6.)
- GraphiQL integration: Fixes bug where CORS would not allow
Access-Control-Allow-Origin: *
with credential 'include', changed to 'same-origin' Issue #514 - Updated peer dependencies to support
[email protected]
.
- Fixed bug with no URL query params with GraphiQL on Lambda Issue #504 PR #512
- Added support for Azure Functions #503
- Added ability to provide custom default field resolvers #482
- Add
tracing
option to collect and expose trace data in the Apollo Tracing format - Add support for GraphiQL editor themes in #484 as requested in #444
- Add support for full websocket using GraphiQL #491
- Updated restify lib (@yucun) in #472
- Updated package apollo-server-micro, updated micro in devDependencies and peerDependencies to ^8.0.1
- Revert #463, because it's a breaking change that shouldn't have been a patch update.
- Rename packages from graphql-server- to apollo-server- #465. We'll continue to publish
graphql-server-
packages that depend on the renamedapollo-server-
packages for the time being, to ensure backwards compatibility.
- Add package readmes for Express, Hapi, Koa, Restify (@helfer) in #442
- Updated & fixed typescript typings (@helfer) in #440
- Fix: graphql-server-micro now properly returns response promises #401
- Fix issue with auto-updating dependencies that caused fibers to update accidentally (@helfer) on #425
- Persist
window.location.hash
on URL updates #386 - Added support for
graphql-js
> 0.10.0 #407 - Updated
subscriptions-transport-ws
for GraphiQL with subscriptions #407
- Fix include passHeader field that was accidentally removed
- Fix graphiql fetcher to use endpointURL parameter instead of hardcoded URI.#365
- Add Zeit Micro Integration #324
- add support for subscriptionURL to GraphiQL (@urigo on #320
- Restify: Fix for calling next() (@jadkap) on #285
- Breaking: Update all dependencies #329
- Add AWS Lambda Integration PR #247
- Update GraphiQL to version 0.9.1 (@ephemer) on #293
- Restify integration (@joelgriffith) on #189
- run batched requests in parallel (@DxCx) on #273
- Fix GraphiQL options variables. Issue #193. (@alanchristensen) on PR #255
- Allow [email protected] as peerDependency (@Chris-R3) on PR #278
- Switch graphql typings for typescript to @types/graphql #260
- Restructure Apollo Server into 6 new packages, and rename to GraphQL Server (@DxCx) and (@stubailo) in #183 and #164.
- There are now 6 packages that make up the GraphQL server family:
graphql-server-core
graphql-module-graphiql
graphql-module-operation-store
graphql-server-express
graphql-server-hapi
graphql-server-koa
- Exports have been renamed. Everything that used to export
apollo*
now exportsgraphql*
, for exampleapolloExpress
has becomegraphqlExpress
. - The repository is now managed using Lerna.
- Fix passHeader option in GraphiQL (Both Hapi and Koa)
- Pass
ctx
instead ofctx.request
to options function in Koa integration (@HriBB) in PR #154 - Manage TypeScript declaration files using npm. (@od1k in #162)
- Fix connect example in readme. (@conrad-vanl in #165)
- Add try/catch to formatError. (@nicolaslopezj in #174)
- Clone context object for each query in a batch.
- Refactor Hapi integration to improve the API and make the plugins more idiomatic. (@nnance) in PR #127
- Fixed query batching with Hapi integration. Issue #123 (@nnance) in PR #127
- Add support for route options in Hapi integration. Issue #97. (@nnance) in PR #127
- Camelcase Hapi. Issue #129. (@nnance) in PR #132
- Fix error handling when parsing variables parameter. Issue #130. (@nnance) in PR #131
- Improve logging function. Issue #79. (@nnance) in PR #136
- Output stack trace for errors in debug mode. Issue #111. (@nnance) in PR #137
- Allow to pass custom headers in GraphiQL (@nicolaslopezj in #133).
- Expose the OperationStore as part of the public API. (@nnance)
- Support adding parsed operations to the OperationStore. (@nnance)
- Expose ApolloOptions as part of the public API.
- Complete refactor of Apollo Server using TypeScript. PR #41
- Added Hapi integration (@nnance in #46)
- Added Koa integration (@HriBB in #59)
- Changed express integration to support connect as well (@helfer in #58)
- Dropped express-graphql dependency
- Dropped support for GET requests, only POST requests are allowed now
- Split GraphiQL into a separate middleware
- Factored out core to support Hapi, Koa and connect implementations
- Added support for query batching
- Added support for query whitelisting / stored queries
- Removed body parsing from express integration. Body must be parsed outside of apollo now
- Added
formatRequest
andformatResponse
functions to apollo options. - Removed support for shorthand schema definitions, connectors and mocks (use
graphql-tools
instead)
- BUG: Fixed a bug with tracer mocks that would throw a TypeError when using Ava #26
- Updated graphql dependency to 0.6.0