-
Notifications
You must be signed in to change notification settings - Fork 243
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
Returning null from reference resolver results in "non-nullable field" error for nullable object #2374
Comments
Seeing the same thing in |
This align with what the router does, and allow to include post-processing error messages in the response without generating errors we weren't before and thus avoids backward compatibility headaches. Fixes apollographql#2374.
This align with what the router does, and allow to include post-processing error messages in the response without generating errors we weren't before and thus avoids backward compatibility headaches. Fixes apollographql#2374.
The short answer is that the change was kind of on purpose, but I didn't fully realized the concrete consequence of it. And I agree it's not great so I've created #2380 which (more or less) remove the error (more or less because in practice the error is moved into the response "extensions"; read on for the reasoning behind that). As for the longer answer, let me explain what's happening here, both for posterity and because that could be useful. As in fact, the error here is kind of correct, and to some extent it was previous versions that were incorrect of not including it. If you look at the error message, the issue is in fact not about In particular, the reason that What is happening inside of the gateway is that the 2nd subgraph is first queried and return some But So, technically speaking, it is more spec compliant to have an error than to not have it. And the reason previous versions of the gateway weren't including the error was that, for some historical reasons, errors generated during the processing of the final response (as the one here) were never included in said response. Meaning that a whole class of errors (any errors resulting of the post-processing of subgraph responses) was silently swallowing by the gateway. The intent of 2.3 was to fix that. But with all that said, I do understand why the prior behaviour of not having any error in this particular case was actually convenient: it ended up behaving "as if" returning And so, long story short, we're going to revert the change of including "post-processing errors" in the response errors, at least for now. We're just not going to fully revert to completely swallowing those errors, because while in this specific case those errors may feel undesirable, there is plenty of other case where other kinds of post-propcessing errors are genuinely a big help for debugging issues, so we'd like to surface them somehow. And so the attached PR puts those "post-processing errors" into the response "extensions" (under I hope this will solve your issue. |
@pcmanus Thanks for the quick turnaround. I had a feeling this was the underlying cause of the issue. Appreciate you taking the time to explain whats going on. |
This align with what the router does, and allow to include post-processing error messages in the response without generating errors we weren't before and thus avoids backward compatibility headaches. Fixes #2374.
For the record, we're going ahead with #2380 for now, which will be part of 2.3.2, but I do feel it's ultimately a bit of a hack (as explained above, this move all post-processing errors into response "extensions", and while it's strictly better that the older behaviour of not surfacing them at all, those error still ought to be "normal" errors in most cases). I think the underlying longer term issue is that we may be lacking flexibility in our rules around the handling of nullability: if there was a direct way for a subgraph to nullify an entity directly in the output, then one would be able to achieve the desired result here without having any error triggered internally. But how to improve that is a discussion for another time. |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | Type | Update | |---|---|---|---|---|---|---|---| | [@apollo/client](https://www.apollographql.com/docs/react/) ([source](https://togithub.com/apollographql/apollo-client)) | [`3.7.7` -> `3.7.8`](https://renovatebot.com/diffs/npm/@apollo%2fclient/3.7.7/3.7.8) | [![age](https://badges.renovateapi.com/packages/npm/@apollo%2fclient/3.7.8/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@apollo%2fclient/3.7.8/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@apollo%2fclient/3.7.8/compatibility-slim/3.7.7)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@apollo%2fclient/3.7.8/confidence-slim/3.7.7)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@apollo/gateway](https://togithub.com/apollographql/federation) | [`2.3.1` -> `2.3.2`](https://renovatebot.com/diffs/npm/@apollo%2fgateway/2.3.1/2.3.2) | [![age](https://badges.renovateapi.com/packages/npm/@apollo%2fgateway/2.3.2/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@apollo%2fgateway/2.3.2/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@apollo%2fgateway/2.3.2/compatibility-slim/2.3.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@apollo%2fgateway/2.3.2/confidence-slim/2.3.1)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@apollo/subgraph](https://togithub.com/apollographql/federation) | [`2.3.1` -> `2.3.2`](https://renovatebot.com/diffs/npm/@apollo%2fsubgraph/2.3.1/2.3.2) | [![age](https://badges.renovateapi.com/packages/npm/@apollo%2fsubgraph/2.3.2/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@apollo%2fsubgraph/2.3.2/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@apollo%2fsubgraph/2.3.2/compatibility-slim/2.3.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@apollo%2fsubgraph/2.3.2/confidence-slim/2.3.1)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/typescript-eslint) | [`5.51.0` -> `5.52.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/5.51.0/5.52.0) | [![age](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2feslint-plugin/5.52.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2feslint-plugin/5.52.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2feslint-plugin/5.52.0/compatibility-slim/5.51.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2feslint-plugin/5.52.0/confidence-slim/5.51.0)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [@typescript-eslint/parser](https://togithub.com/typescript-eslint/typescript-eslint) | [`5.51.0` -> `5.52.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/5.51.0/5.52.0) | [![age](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2fparser/5.52.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2fparser/5.52.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2fparser/5.52.0/compatibility-slim/5.51.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2fparser/5.52.0/confidence-slim/5.51.0)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [cspell](https://streetsidesoftware.github.io/cspell/) ([source](https://togithub.com/streetsidesoftware/cspell)) | [`6.22.0` -> `6.26.3`](https://renovatebot.com/diffs/npm/cspell/6.22.0/6.26.3) | [![age](https://badges.renovateapi.com/packages/npm/cspell/6.26.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/cspell/6.26.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/cspell/6.26.3/compatibility-slim/6.22.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/cspell/6.26.3/confidence-slim/6.22.0)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [eslint](https://eslint.org) ([source](https://togithub.com/eslint/eslint)) | [`8.33.0` -> `8.34.0`](https://renovatebot.com/diffs/npm/eslint/8.33.0/8.34.0) | [![age](https://badges.renovateapi.com/packages/npm/eslint/8.34.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/eslint/8.34.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/eslint/8.34.0/compatibility-slim/8.33.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/eslint/8.34.0/confidence-slim/8.33.0)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [jest](https://jestjs.io/) ([source](https://togithub.com/facebook/jest)) | [`29.4.2` -> `29.4.3`](https://renovatebot.com/diffs/npm/jest/29.4.2/29.4.3) | [![age](https://badges.renovateapi.com/packages/npm/jest/29.4.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/jest/29.4.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/jest/29.4.3/compatibility-slim/29.4.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/jest/29.4.3/confidence-slim/29.4.2)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [jest-config](https://togithub.com/facebook/jest) | [`29.4.2` -> `29.4.3`](https://renovatebot.com/diffs/npm/jest-config/29.4.2/29.4.3) | [![age](https://badges.renovateapi.com/packages/npm/jest-config/29.4.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/jest-config/29.4.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/jest-config/29.4.3/compatibility-slim/29.4.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/jest-config/29.4.3/confidence-slim/29.4.2)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [jest-mock](https://togithub.com/facebook/jest) | [`29.4.2` -> `29.4.3`](https://renovatebot.com/diffs/npm/jest-mock/29.4.2/29.4.3) | [![age](https://badges.renovateapi.com/packages/npm/jest-mock/29.4.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/jest-mock/29.4.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/jest-mock/29.4.3/compatibility-slim/29.4.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/jest-mock/29.4.3/confidence-slim/29.4.2)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [node](https://togithub.com/nodejs/node) | [`18.14.0` -> `18.14.1`](https://renovatebot.com/diffs/npm/node/18.14.0/v18.14.1) | [![age](https://badges.renovateapi.com/packages/github-tags/node/v18.14.1/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/github-tags/node/v18.14.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/github-tags/node/v18.14.1/compatibility-slim/18.14.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/github-tags/node/v18.14.1/confidence-slim/18.14.0)](https://docs.renovatebot.com/merge-confidence/) | volta | patch | | [npm](https://docs.npmjs.com/) ([source](https://togithub.com/npm/cli)) | [`9.4.2` -> `9.5.0`](https://renovatebot.com/diffs/npm/npm/9.4.2/9.5.0) | [![age](https://badges.renovateapi.com/packages/npm/npm/9.5.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/npm/9.5.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/npm/9.5.0/compatibility-slim/9.4.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/npm/9.5.0/confidence-slim/9.4.2)](https://docs.renovatebot.com/merge-confidence/) | volta | minor | | [rollup](https://rollupjs.org/) ([source](https://togithub.com/rollup/rollup)) | [`3.14.0` -> `3.15.0`](https://renovatebot.com/diffs/npm/rollup/3.14.0/3.15.0) | [![age](https://badges.renovateapi.com/packages/npm/rollup/3.15.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/rollup/3.15.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/rollup/3.15.0/compatibility-slim/3.14.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/rollup/3.15.0/confidence-slim/3.14.0)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | --- ### Release Notes <details> <summary>apollographql/apollo-client</summary> ### [`v3.7.8`](https://togithub.com/apollographql/apollo-client/blob/HEAD/CHANGELOG.md#​378) [Compare Source](https://togithub.com/apollographql/apollo-client/compare/v3.7.7...v3.7.8) ##### Patch Changes - [#​7555](https://togithub.com/apollographql/apollo-client/pull/7555) [`45562d6fa`](https://togithub.com/apollographql/apollo-client/commit/45562d6fa20eab658bd86d79d092862ace4e1225) Thanks [@​TheCeloReis](https://togithub.com/TheCeloReis)! - Adds `TVariables` generic to `GraphQLRequest` and `MockedResponse` interfaces. - [#​10526](https://togithub.com/apollographql/apollo-client/pull/10526) [`1d13de4f1`](https://togithub.com/apollographql/apollo-client/commit/1d13de4f190150e96d61a9e987274ee6c249dbef) Thanks [@​benjamn](https://togithub.com/benjamn)! - Tolerate undefined `concast.sources` if `complete` called earlier than `concast.start` - [#​10497](https://togithub.com/apollographql/apollo-client/pull/10497) [`8a883d8a1`](https://togithub.com/apollographql/apollo-client/commit/8a883d8a1c8899f94a3e2ae09cb2069bde2b2150) Thanks [@​nevir](https://togithub.com/nevir)! - Update `SingleExecutionResult` and `IncrementalPayload`'s `data` types such that they no longer include `undefined`, which was not a valid runtime value, to fix errors when TypeScript's `exactOptionalPropertyTypes` is enabled. </details> <details> <summary>apollographql/federation (@​apollo/gateway)</summary> ### [`v2.3.2`](https://togithub.com/apollographql/federation/blob/HEAD/gateway-js/CHANGELOG.md#​232) [Compare Source](https://togithub.com/apollographql/federation/compare/@apollo/gateway@2.3.1...@apollo/gateway@2.3.2) ##### Patch Changes - Move gateway post-processing errors from `errors` into `extensions.valueCompletion` of the response ([#​2380](https://togithub.com/apollographql/federation/pull/2380)) \[apollographql/federation#2335 [#​2335](https://togithub.com/apollographql/federation/issues/2335)) introduced a breaking change that broke existing usages with respect to nullability and gateway error handling. In response to \[apollographql/federation#2374 [#​2374](https://togithub.com/apollographql/federation/issues/2374)), we are reverting the breaking portion of this change by continuing to swallow post processing errors as the gateway did prior to v2.3.0. Instead, those errors will now be included on the `extensions.valueCompletion` object in the response object. Gateway v2.3.0 and v2.3.1 are both affected by this change in behavior. - Updated dependencies \[]: - [@​apollo/composition](https://togithub.com/apollo/composition)[@​2](https://togithub.com/2).3.2 - [@​apollo/federation-internals](https://togithub.com/apollo/federation-internals)[@​2](https://togithub.com/2).3.2 - [@​apollo/query-planner](https://togithub.com/apollo/query-planner)[@​2](https://togithub.com/2).3.2 </details> <details> <summary>apollographql/federation (@​apollo/subgraph)</summary> ### [`v2.3.2`](https://togithub.com/apollographql/federation/blob/HEAD/subgraph-js/CHANGELOG.md#​232) [Compare Source](https://togithub.com/apollographql/federation/compare/@apollo/subgraph@2.3.1...@apollo/subgraph@2.3.2) ##### Patch Changes - Updated dependencies \[]: - [@​apollo/federation-internals](https://togithub.com/apollo/federation-internals)[@​2](https://togithub.com/2).3.2 </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)</summary> ### [`v5.52.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#​5520-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5510v5520-2023-02-13) [Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v5.51.0...v5.52.0) ##### Bug Fixes - **eslint-plugin:** \[no-import-type-side-effects] correctly ignore zero-specifier imports ([#​6444](https://togithub.com/typescript-eslint/typescript-eslint/issues/6444)) ([d5a6688](https://togithub.com/typescript-eslint/typescript-eslint/commit/d5a6688a22ebaa2992e549f44c224fc8d0fc5cc7)) - **eslint-plugin:** \[no-unnecessary-condition] account for optional chaining on potentially void values ([#​6432](https://togithub.com/typescript-eslint/typescript-eslint/issues/6432)) ([e1d9c67](https://togithub.com/typescript-eslint/typescript-eslint/commit/e1d9c67981be53e091a4107f326b9bf097650c1f)), closes [#​5255](https://togithub.com/typescript-eslint/typescript-eslint/issues/5255) - **eslint-plugin:** \[no-unnecessary-condition] fix false positive when checking indexed access types ([#​6452](https://togithub.com/typescript-eslint/typescript-eslint/issues/6452)) ([d569924](https://togithub.com/typescript-eslint/typescript-eslint/commit/d569924cf3c223c185f6ba913390cd865cd33197)) - **eslint-plugin:** fix key-spacing when type starts on next line ([#​6412](https://togithub.com/typescript-eslint/typescript-eslint/issues/6412)) ([3eb2eed](https://togithub.com/typescript-eslint/typescript-eslint/commit/3eb2eed6167e2ffad6c44c0fcbd86be4b6202aeb)) ##### Features - **eslint-plugin:** \[block-spacing] extending base rule for TS related blocks ([#​6195](https://togithub.com/typescript-eslint/typescript-eslint/issues/6195)) ([b2db3f5](https://togithub.com/typescript-eslint/typescript-eslint/commit/b2db3f57d3b551e1159380c3d23edee14f133ac1)) - **eslint-plugin:** \[explicit-function-return-type] add allowFunctionsWithoutTypeParameters option ([#​6105](https://togithub.com/typescript-eslint/typescript-eslint/issues/6105)) ([113640e](https://togithub.com/typescript-eslint/typescript-eslint/commit/113640e9742acb3a193078e9704648517aebf1d8)) - **eslint-plugin:** \[explicit-function-return-type] add allowIIFEs option ([#​6237](https://togithub.com/typescript-eslint/typescript-eslint/issues/6237)) ([a1b3f7b](https://togithub.com/typescript-eslint/typescript-eslint/commit/a1b3f7b4d97154ac4b0d7934d12f1d5970cffe15)) </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/parser)</summary> ### [`v5.52.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#​5520-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5510v5520-2023-02-13) [Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v5.51.0...v5.52.0) **Note:** Version bump only for package [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) </details> <details> <summary>streetsidesoftware/cspell</summary> ### [`v6.26.3`](https://togithub.com/streetsidesoftware/cspell/blob/HEAD/CHANGELOG.md#​6263-2023-02-16) [Compare Source](https://togithub.com/streetsidesoftware/cspell/compare/v6.26.2...v6.26.3) ##### Bug Fixes - Be able to read cache format from config ([#​4190](https://togithub.com/streetsidesoftware/cspell/issues/4190)) ([6029893](https://togithub.com/streetsidesoftware/cspell/commit/60298938cd39669982ad1ca4293571242918761d)) ### [`v6.26.2`](https://togithub.com/streetsidesoftware/cspell/blob/HEAD/CHANGELOG.md#​6262-2023-02-16) [Compare Source](https://togithub.com/streetsidesoftware/cspell/compare/v6.26.1...v6.26.2) ##### Bug Fixes - `node:worker_threads` breaks on node 14 ([#​4185](https://togithub.com/streetsidesoftware/cspell/issues/4185)) ([8654ac7](https://togithub.com/streetsidesoftware/cspell/commit/8654ac7161b0ac558e864cfc116a9ad9ce6dc32e)) ### [`v6.26.1`](https://togithub.com/streetsidesoftware/cspell/blob/HEAD/CHANGELOG.md#​6261-2023-02-15) [Compare Source](https://togithub.com/streetsidesoftware/cspell/compare/v6.26.0...v6.26.1) ##### Bug Fixes - improve Dynamic Import README.md ([#​4178](https://togithub.com/streetsidesoftware/cspell/issues/4178)) ([4ad1133](https://togithub.com/streetsidesoftware/cspell/commit/4ad1133e6230969e9486d7e7a158cba5c3d75d7f)) ### [`v6.26.0`](https://togithub.com/streetsidesoftware/cspell/blob/HEAD/CHANGELOG.md#​6260-2023-02-15) [Compare Source](https://togithub.com/streetsidesoftware/cspell/compare/v6.25.0...v6.26.0) ##### Features - All `flagWords` and `suggestWords` suggestions are preferred. ([#​4176](https://togithub.com/streetsidesoftware/cspell/issues/4176)) ([abfb09c](https://togithub.com/streetsidesoftware/cspell/commit/abfb09c1fefe0b17aae332a23bb79017496c416a)) ### [`v6.25.0`](https://togithub.com/streetsidesoftware/cspell/blob/HEAD/CHANGELOG.md#​6250-2023-02-14) [Compare Source](https://togithub.com/streetsidesoftware/cspell/compare/v6.24.0...v6.25.0) ##### Bug Fixes - Add `.webm` to know file types ([#​4171](https://togithub.com/streetsidesoftware/cspell/issues/4171)) ([eeb9497](https://togithub.com/streetsidesoftware/cspell/commit/eeb9497143aa2215d857c8a872b94362c1ffe19e)) ### [`v6.24.0`](https://togithub.com/streetsidesoftware/cspell/blob/HEAD/CHANGELOG.md#​6240-2023-02-13) [Compare Source](https://togithub.com/streetsidesoftware/cspell/compare/v6.23.1...v6.24.0) **Note:** Version bump only for package cspell-monorepo #### 6.23.1 (2023-02-12) **Note:** Version bump only for package cspell-monorepo ### [`v6.23.1`](https://togithub.com/streetsidesoftware/cspell/blob/HEAD/CHANGELOG.md#​6231-2023-02-12) [Compare Source](https://togithub.com/streetsidesoftware/cspell/compare/v6.23.0...v6.23.1) **Note:** Version bump only for package cspell-monorepo ### [`v6.23.0`](https://togithub.com/streetsidesoftware/cspell/blob/HEAD/CHANGELOG.md#​6230-2023-02-11) [Compare Source](https://togithub.com/streetsidesoftware/cspell/compare/v6.22.0...v6.23.0) **Note:** Version bump only for package cspell-monorepo </details> <details> <summary>eslint/eslint</summary> ### [`v8.34.0`](https://togithub.com/eslint/eslint/releases/tag/v8.34.0) [Compare Source](https://togithub.com/eslint/eslint/compare/v8.33.0...v8.34.0) #### Features - [`9b2fcf7`](https://togithub.com/eslint/eslint/commit/9b2fcf7e928fc92ac6d43617bdee1bda250b7491) feat: `array-callback-return` supports `Array.prototype.toSorted` ([#​16845](https://togithub.com/eslint/eslint/issues/16845)) (SUZUKI Sosuke) #### Bug Fixes - [`923f61d`](https://togithub.com/eslint/eslint/commit/923f61d8fc82d83b912c6ba95abb5a509c4d7b52) fix: false positive with assignment in `no-extra-parens` ([#​16872](https://togithub.com/eslint/eslint/issues/16872)) (Francesco Trotta) #### Documentation - [`f0a9883`](https://togithub.com/eslint/eslint/commit/f0a988384ea1a262150e70d83abd8a5e50c46fa7) docs: split rules documentation ([#​16797](https://togithub.com/eslint/eslint/issues/16797)) (Ben Perlmutter) - [`67aa37b`](https://togithub.com/eslint/eslint/commit/67aa37b583f059226b9c959672400f04ed6a56b5) docs: fix typo in command-line-interface.md ([#​16871](https://togithub.com/eslint/eslint/issues/16871)) (Kevin Rouchut) - [`337f7ed`](https://togithub.com/eslint/eslint/commit/337f7ed96131d873be7ae6b010739476d0ad15e9) docs: fix width of language input ([#​16849](https://togithub.com/eslint/eslint/issues/16849)) (Tanuj Kanti) - [`71349a1`](https://togithub.com/eslint/eslint/commit/71349a1f709baa361bd656a7ce4a7d35d857a9a8) docs: Configure a Parser page ([#​16803](https://togithub.com/eslint/eslint/issues/16803)) (Ben Perlmutter) - [`de7e925`](https://togithub.com/eslint/eslint/commit/de7e925d03764f3681269b30bb60b92ee463c10f) docs: remove extra line numbers in example ([#​16848](https://togithub.com/eslint/eslint/issues/16848)) (jonz94) - [`ad38d77`](https://togithub.com/eslint/eslint/commit/ad38d77102d6fe30cfa92c831174f178bb35c88b) docs: Update README (GitHub Actions Bot) #### Chores - [`9dbe06d`](https://togithub.com/eslint/eslint/commit/9dbe06d0ad875e6d5964497e2975e8d789e763d0) chore: add `type` property to array-element-newline schema ([#​16877](https://togithub.com/eslint/eslint/issues/16877)) (MHO) - [`a061527`](https://togithub.com/eslint/eslint/commit/a061527a0332f0edf559acfc2902a327cae098d9) chore: Remove unused functions ([#​16868](https://togithub.com/eslint/eslint/issues/16868)) (Nicholas C. Zakas) </details> <details> <summary>facebook/jest</summary> ### [`v29.4.3`](https://togithub.com/facebook/jest/blob/HEAD/CHANGELOG.md#​2943) [Compare Source](https://togithub.com/facebook/jest/compare/v29.4.2...v29.4.3) ##### Features - `[expect]` Update `toThrow()` to be able to use error `cause`s ([#​13606](https://togithub.com/facebook/jest/pull/13606)) - `[jest-core]` allow to use `workerIdleMemoryLimit` with only 1 worker or `runInBand` option ([#​13846](https://togithub.com/facebook/jest/pull/13846)) - `[jest-message-util]` Add support for [error `cause`s](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause) ([#​13868](https://togithub.com/facebook/jest/pull/13868) & [#​13912](https://togithub.com/facebook/jest/pull/13912)) - `[jest-runtime]` Revert `import assertions` for JSON modules as it's been relegated to Stage 2 ([#​13911](https://togithub.com/facebook/jest/pull/13911)) ##### Fixes - `[@jest/expect-utils]` `subsetEquality` should consider also an object's inherited string keys ([#​13824](https://togithub.com/facebook/jest/pull/13824)) - `[jest-mock]` Clear mock state when `jest.restoreAllMocks()` is called ([#​13867](https://togithub.com/facebook/jest/pull/13867)) - `[jest-mock]` Prevent `mockImplementationOnce` and `mockReturnValueOnce` bleeding into `withImplementation` ([#​13888](https://togithub.com/facebook/jest/pull/13888)) - `[jest-mock]` Do not restore mocks when `jest.resetAllMocks()` is called ([#​13866](https://togithub.com/facebook/jest/pull/13866)) </details> <details> <summary>nodejs/node</summary> ### [`v18.14.1`](https://togithub.com/nodejs/node/releases/tag/v18.14.1): 2023-02-16, Version 18.14.1 'Hydrogen' (LTS), @​RafaelGSS prepared by @​juanarbol [Compare Source](https://togithub.com/nodejs/node/compare/v18.14.0...v18.14.1) This is a security release. ##### Notable Changes The following CVEs are fixed in this release: - **[CVE-2023-23918](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23918)**: Node.js Permissions policies can be bypassed via process.mainModule (High) - **[CVE-2023-23919](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23919)**: Node.js OpenSSL error handling issues in nodejs crypto library (Medium) - **[CVE-2023-23936](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23936)**: Fetch API in Node.js did not protect against CRLF injection in host headers (Medium) - **[CVE-2023-24807](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-24807)**: Regular Expression Denial of Service in Headers in Node.js fetch API (Low) - **[CVE-2023-23920](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23920)**: Node.js insecure loading of ICU data through ICU_DATA environment variable (Low) More detailed information on each of the vulnerabilities can be found in [February 2023 Security Releases](https://nodejs.org/en/blog/vulnerability/february-2023-security-releases/) blog post. This security release includes OpenSSL security updates as outlined in the recent [OpenSSL security advisory](https://www.openssl.org/news/secadv/20230207.txt). ##### Commits - \[[`8393ebc72d`](https://togithub.com/nodejs/node/commit/8393ebc72d)] - **build**: build ICU with ICU_NO_USER_DATA_OVERRIDE (RafaelGSS) [nodejs-private/node-private#​379](https://togithub.com/nodejs-private/node-private/pull/379) - \[[`004e34d046`](https://togithub.com/nodejs/node/commit/004e34d046)] - **crypto**: clear OpenSSL error on invalid ca cert (RafaelGSS) [#​46572](https://togithub.com/nodejs/node/pull/46572) - \[[`5e0142a852`](https://togithub.com/nodejs/node/commit/5e0142a852)] - **deps**: cherry-pick Windows ARM64 fix for openssl (Richard Lau) [#​46572](https://togithub.com/nodejs/node/pull/46572) - \[[`f71fe278a6`](https://togithub.com/nodejs/node/commit/f71fe278a6)] - **deps**: update archs files for quictls/openssl-3.0.8+quic (RafaelGSS) [#​46572](https://togithub.com/nodejs/node/pull/46572) - \[[`2c6817e42b`](https://togithub.com/nodejs/node/commit/2c6817e42b)] - **deps**: upgrade openssl sources to quictls/openssl-3.0.8+quic (RafaelGSS) [#​46572](https://togithub.com/nodejs/node/pull/46572) - \[[`f0afa0bfe5`](https://togithub.com/nodejs/node/commit/f0afa0bfe5)] - **deps**: update undici to 5.19.1 (Node.js GitHub Bot) [#​46634](https://togithub.com/nodejs/node/pull/46634) - \[[`c26a34c13e`](https://togithub.com/nodejs/node/commit/c26a34c13e)] - **deps**: update undici to 5.18.0 (Node.js GitHub Bot) [#​46634](https://togithub.com/nodejs/node/pull/46634) - \[[`db93ee4a15`](https://togithub.com/nodejs/node/commit/db93ee4a15)] - **deps**: update undici to 5.17.1 (Node.js GitHub Bot) [#​46634](https://togithub.com/nodejs/node/pull/46634) - \[[`b4e49fb02c`](https://togithub.com/nodejs/node/commit/b4e49fb02c)] - **deps**: update undici to 5.16.0 (Node.js GitHub Bot) [#​46634](https://togithub.com/nodejs/node/pull/46634) - \[[`90994e6a2c`](https://togithub.com/nodejs/node/commit/90994e6a2c)] - **deps**: update undici to 5.15.1 (Node.js GitHub Bot) [#​46634](https://togithub.com/nodejs/node/pull/46634) - \[[`00302fc7ac`](https://togithub.com/nodejs/node/commit/00302fc7ac)] - **deps**: update undici to 5.15.0 (Node.js GitHub Bot) [#​46634](https://togithub.com/nodejs/node/pull/46634) - \[[`0e3b796cc5`](https://togithub.com/nodejs/node/commit/0e3b796cc5)] - **lib**: makeRequireFunction patch when experimental policy (RafaelGSS) [nodejs-private/node-private#​371](https://togithub.com/nodejs-private/node-private/pull/371) - \[[`7cccd5565f`](https://togithub.com/nodejs/node/commit/7cccd5565f)] - **policy**: makeRequireFunction on mainModule.require (RafaelGSS) [nodejs-private/node-private#​371](https://togithub.com/nodejs-private/node-private/pull/371) </details> <details> <summary>npm/cli</summary> ### [`v9.5.0`](https://togithub.com/npm/cli/blob/HEAD/CHANGELOG.md#​950-httpsgithubcomnpmclicomparev942v950-2023-02-14) [Compare Source](https://togithub.com/npm/cli/compare/v9.4.2...v9.5.0) ##### Features - [`79bfd03`](https://togithub.com/npm/cli/commit/79bfd03947a25f4bfb67d1c54893be7c79ec77e2) [#​6153](https://togithub.com/npm/cli/pull/6153) audit signatures verifies attestations ([@​feelepxyz](https://togithub.com/feelepxyz)) - [`5fc6473`](https://togithub.com/npm/cli/commit/5fc647316cdc07d4337cdf1b75f73a0663822c7f) add provenance attestation ([@​bdehamer](https://togithub.com/bdehamer)) ##### Bug Fixes - [`53f75a4`](https://togithub.com/npm/cli/commit/53f75a4faeac02b97cfac91309a7f9f4efe553a0) [#​6158](https://togithub.com/npm/cli/pull/6158) gracefully fallback from auth-type=web ([#​6158](https://togithub.com/npm/cli/issues/6158)) ([@​MylesBorins](https://togithub.com/MylesBorins)) - [`ed59aae`](https://togithub.com/npm/cli/commit/ed59aae51cc55f57ee32d43e898ef05236005a09) [#​6162](https://togithub.com/npm/cli/pull/6162) refactor error reporting in audit command ([@​bdehamer](https://togithub.com/bdehamer)) ##### Dependencies - [`fad0473`](https://togithub.com/npm/cli/commit/fad04737d7b0d1e3a8cd3d3a651e90db6b185f7b) `minipass@4.0.3` - [`678c6bf`](https://togithub.com/npm/cli/commit/678c6bf716012fd834c06644ed1a82e10a5393ad) `minimatch@6.2.0` - [`9b4b366`](https://togithub.com/npm/cli/commit/9b4b366af5dac21b6db5d722d30b7e1fff064600) `ci-info@3.8.0` - [`d20ee2a`](https://togithub.com/npm/cli/commit/d20ee2afa0b9c97ed6822cb8e6838ba537dd76a9) `pacote@15.1.0` - [Workspace](https://togithub.com/npm/cli/releases/tag/libnpmpublish-v7.1.0): `libnpmpublish@7.1.0` - [Workspace](https://togithub.com/npm/cli/releases/tag/libnpmteam-v5.0.3): `libnpmteam@5.0.3` </details> <details> <summary>rollup/rollup</summary> ### [`v3.15.0`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#​3150) [Compare Source](https://togithub.com/rollup/rollup/compare/v3.14.0...v3.15.0) *2023-02-10* ##### Features - Do not consider instantiating a constructor a side effect if it adds properties to "this" and is instantiated elsewhere ([#​4842](https://togithub.com/rollup/rollup/issues/4842)) ##### Bug Fixes - Improve side effect detection in constructors ([#​4842](https://togithub.com/rollup/rollup/issues/4842)) ##### Pull Requests - [#​4842](https://togithub.com/rollup/rollup/pull/4842): fix: add this option to context.ignore ([@​TrickyPi](https://togithub.com/TrickyPi)) - [#​4843](https://togithub.com/rollup/rollup/pull/4843): fixed the logo link ([@​oMatheuss](https://togithub.com/oMatheuss)) - [#​4844](https://togithub.com/rollup/rollup/pull/4844): Update index.md ([@​cunzaizhuyi](https://togithub.com/cunzaizhuyi)) - [#​4845](https://togithub.com/rollup/rollup/pull/4845): docs: fix style ([@​TrickyPi](https://togithub.com/TrickyPi)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/apollographql/apollo-server). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4xNDIuMSIsInVwZGF0ZWRJblZlciI6IjM0LjE0Mi4xIn0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Starting with
@apollo/gateway: 2.3.0
, returningnull
from a__resolveReference
adds an error to the graphql response even when the type is declared to be nullable in the relevant subgraph.I've included a query and the error response.
Further down, I've included snippets of source code. Notably, notice that the field resolver for
"boundary"
declares it to be nullable.click to see query and error
Expected vs Actual
Expected Behavior
Graph shows
null
in response with no"errors"
.Works this way with
"@apollo/gateway": "2.2.2"
.Actual Behavior
Graph shows
null
in response with"errors"
.Works this way with
"@apollo/gateway": "2.3.0"
.Sample Code
My code examples are based on code-first federation using NestJS, but the issue clearly appears upon an upgrade to
@apollo/gateway
2.3.0
.click to expand
subgraph 1 (using
"@apollo/subgraph": "2.3.0"
MapboxBoundaryType (resolvable)
Reference resolver
subgraph 2 (using
"@apollo/subgraph": "2.3.0"
)MapboxBoundaryType (unresolvable)
field resolver
The text was updated successfully, but these errors were encountered: