diff --git a/packages/graphql-anywhere/src/__tests__/utilities.ts b/packages/graphql-anywhere/src/__tests__/utilities.ts index a993a8edbaa..ab33030421c 100644 --- a/packages/graphql-anywhere/src/__tests__/utilities.ts +++ b/packages/graphql-anywhere/src/__tests__/utilities.ts @@ -108,7 +108,11 @@ describe('utilities', () => { expect(filter(doc, arrayData)).toEqual(filteredArrayData); }); - it('can filter data for fragments ', () => { + it('can short circuit when data is null', () => { + expect(filter(doc, null)).toEqual(null); + }); + + it('can filter data for fragments', () => { expect(filter(fragment, data)).toEqual(filteredData); }); diff --git a/packages/graphql-anywhere/src/utilities.ts b/packages/graphql-anywhere/src/utilities.ts index 732f7e92598..b71c1a0c49c 100644 --- a/packages/graphql-anywhere/src/utilities.ts +++ b/packages/graphql-anywhere/src/utilities.ts @@ -13,6 +13,8 @@ export function filter( data: D, variableValues: VariableMap = {}, ): FD { + if (data === null) return data; + const resolver = ( fieldName: string, root: any, @@ -63,7 +65,8 @@ function hasVariableInclusions( directives: ReadonlyArray, ): boolean { return getInclusionDirectives(directives).some( - ({ ifArgument }) => ifArgument.value && ifArgument.value.kind === 'Variable', + ({ ifArgument }) => + ifArgument.value && ifArgument.value.kind === 'Variable', ); }