c3f04d050]:
f4c3cd9b6 Thanks @trevor-scheer! - Officially deprecate Playground plugin via README update5d3c45be9 Thanks @mayakoneval! - 🐛 Bug Fix for Apollo Server Landing Pages on Safari. A Content Security Policy was added to our landing page html so that Safari can run the inline scripts we use to call the Embedded Sandbox & Explorer.5d3c45be9]:
#7504 22a5be934 Thanks @mayakoneval! - In the Apollo Server Landing Page Local config, you can now opt out of the telemetry that Apollo Studio runs in the
embedded Sandbox & Explorer landing pages. This telemetry includes Google Analytics for event tracking and
Sentry for error tracking.
Example of the new config option:
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [
process.env.NODE_ENV === 'production'
? ApolloServerPluginLandingPageProductionDefault({
graphRef: 'my-graph-id@my-graph-variant',
embed: {
runTelemetry: false
},
})
: ApolloServerPluginLandingPageLocalDefault({
embed: {
runTelemetry: false
},
}),
],
});
#7465 1e808146a Thanks @trevor-scheer! - Introduce new opt-in configuration option to mitigate v4 status code regression
Apollo Server v4 accidentally started responding to requests with an invalid variables object with a 200 status code, where v3 previously responded with a 400. In order to not break current behavior (potentially breaking users who have creatively worked around this issue) and offer a mitigation, we've added the following configuration option which we recommend for all users.
new ApolloServer({
// ...
status400ForVariableCoercionErrors: true,
});
Specifically, this regression affects cases where input variable coercion fails. Variables of an incorrect type (i.e. String instead of Int) or unexpectedly null are examples that fail variable coercion. Additionally, missing or incorrect fields on input objects as well as custom scalars that throw during validation will also fail variable coercion. For more specifics on variable coercion, see the "Input Coercion" sections in the GraphQL spec.
This will become the default behavior in Apollo Server v5 and the configuration option will be ignored / no longer needed.
#7454 f6e3ae021 Thanks @trevor-scheer! - Start building packages with TS 5.x, which should have no effect for users
#7433 e0db95b96 Thanks @KGAdamCook! - Previously, when users provided their own documentStore, Apollo Server used a random prefix per schema in order to guarantee there was no shared state from one schema to the next. Now Apollo Server uses a hash of the schema, which enables the provided document store to be shared if you choose to do so.
f6e3ae021 Thanks @trevor-scheer! - Start building packages with TS 5.x, which should have no effect for users#7431 7cc163ac8 Thanks @mayakoneval! - In the Apollo Server Landing Page Local config, you can now automatically turn off autopolling on your endpoints as well as pass headers used to introspect your schema, embed an operation from a collection, and configure whether the endpoint input box is editable. In the Apollo Server Landing Page Prod config, you can embed an operation from a collection & we fixed a bug introduced in release 4.4.0
Example of all new config options:
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [
process.env.NODE_ENV === 'production'
? ApolloServerPluginLandingPageProductionDefault({
graphRef: 'my-graph-id@my-graph-variant',
collectionId: 'abcdef',
operationId: '12345'
embed: true,
footer: false,
})
: ApolloServerPluginLandingPageLocalDefault({
collectionId: 'abcdef',
operationId: '12345'
embed: {
initialState: {
pollForSchemaUpdates: false,
sharedHeaders: {
"HeaderNeededForIntrospection": "ValueForIntrospection"
},
},
endpointIsEditable: true,
},
footer: false,
}),
],
});
#7430 b694bb1dd Thanks @mayakoneval! - We now send your @apollo/server version to the embedded Explorer & Sandbox used in the landing pages for analytics.
#7432 8cbc61406 Thanks @mayakoneval! - Bug fix: TL;DR revert a previous change that stops passing includeCookies from the prod landing page config.
Who was affected?
Any Apollo Server instance that passes a graphRef to a production landing page with a non-default includeCookies value that does not match the Include cookies setting on your registered variant on studio.apollographql.com.
How were they affected?
From release 4.4.0 to this patch release, folks affected would have seen their Explorer requests being sent with cookies included only if they had set Include cookies on their variant. Cookies would not have been included by default.
021460e95]:
021460e95 Thanks @trevor-scheer! - Update protobuf which includes updates for supporting (notably) ConditionNode in the gatewayf2d433b4f]:
#7331 9de18b34c Thanks @trevor-scheer! - Unpin node-abort-controller and update to latest unbreaking patch
#7136 8c635d104 Thanks @trevor-scheer! - Errors reported by subgraphs (with no trace data in the response) are now accurately reflected in the numeric error stats.
Operations that receive errors from subgraphs (with no trace data in the response) are no longer sent as incomplete, error-less traces.
Note: in order for this fix to take effect, your @apollo/gateway version must be updated to v2.3.1 or later.
#7338 01bc39838 Thanks @trevor-scheer! - Update graphql-http to 1.13.0
Updated dependencies [9de18b34c, 8c635d104]:
#7314 f246ddb71 Thanks @trevor-scheer! - Add an __identity property to HeaderMap class to disallow standard Maps (in TypeScript).
This ensures that typechecking occurs on fields which are declared to accept a
HeaderMap (notably, the httpGraphQLRequest.headers option to
ApolloServer.executeHTTPGraphQLRequest and the http.headers option to
ApolloServer.executeOperation). This might be a breaking change for
integration authors, but should be easily fixed by switching from new Map<string, string>() to new HeaderMap().
#7326 e25cb58ff Thanks @trevor-scheer! - Pin node-abort-controller version to avoid breaking change. Apollo Server users can enter a broken state if they update their package-lock.json due to a breaking change in a minor release of the mentioned package.
Ref: https://github.com/southpolesteve/node-abort-controller/issues/39
Updated dependencies [e0f959a63]: