Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Preserve the extensions property when pre-execution errors occur. #3394

Conversation

abernix
Copy link
Member

@abernix abernix commented Oct 9, 2019

Without this change, any extensions that are present on the response are not returned to the client when an error occurs in pre-execution stages, despite the fact that extensions are a perfectly acceptable property to be present when pre-execution errors occur1. (Note that data is not!)

For example, if a user had added their own extensions property in the willSendResponse hook of a request pipeline API, it would have been removed by the previous implementation of throwHttpGraphQLError which did not receive, or accept extensions, since it explicitly only passed the errors property.

This will all be greatly improved when we abstract this transport out!

Without this change, any `extensions` that are present on the `response` are
not returned to the client when an error occurs in pre-execution stages,
despite the fact that `extensions` are a perfectly acceptable property to be
present when pre-execution errors occur[1].  (Note that `data` is not!)

For example, if a user had added their own `extensions` property in the
`willSendResponse` hook of a request pipeline API, it would have been
removed by the previous implementation of `throwHttpGraphQLError` which did
not receive, or accept `extensions`, since it explicitly only passed the
`errors` property.

This will all be greatly improved when we abstract this transport out!

[1]: https://graphql.github.io/graphql-spec/June2018/#sec-Response-Format
@abernix abernix requested a review from trevor-scheer October 9, 2019 20:04
@abernix abernix added this to the Release 2.9.4 milestone Oct 10, 2019
@abernix abernix merged commit fdaebaa into master Oct 10, 2019
@abernix abernix deleted the abernix/preserve-user-response-extensions-in-pre-execution-errors branch October 10, 2019 11:52
mkai added a commit to spring-media/themis-graphql that referenced this pull request Feb 17, 2020
mkai added a commit to spring-media/themis-graphql that referenced this pull request Feb 18, 2020
* Update dev dependencies

* Update dependencies (minor and patch updates)

* Adjust test assertion to account for Apollo Server bugfix

apollographql/apollo-server#3394

* Prepend ./ if needed when loading local strategy file

This is required due to changed behaviour in `require.resolve` in Node
12.

* Update dependencies (major releases)

* Migrate to mkdirp v1.0 Promise API

* Migrate to @hapi/joi v15

Postponing the upgrade to the latest version until the new extensions
API (breaking change) is properly documented
(hapijs/joi#2011).

* Bump version
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Apr 22, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants