@apollo/gateway 0.45.0 → 0.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,7 +4,11 @@
4
4
 
5
5
  > The changes noted within this `vNEXT` section have not been released yet. New PRs and commits which introduce changes should include an entry in this `vNEXT` section as part of their development. When a release is being prepared, a new header will be (manually) created below and the appropriate changes within that release will be moved into the new section.
6
6
 
7
- - _Nothing to see here. Stay tuned._
7
+ - _Nothing yet! Stay tuned._
8
+
9
+ ## v0.45.1
10
+
11
+ - Continue resolving when an `@external` reference cannot be resolved. [#376](https://github.com/apollographql/federation/issues/376)
8
12
 
9
13
  ## v0.45.0
10
14
 
@@ -1 +1 @@
1
- {"version":3,"file":"executeQueryPlan.d.ts","sourceRoot":"","sources":["../src/executeQueryPlan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAKL,oBAAoB,EAIrB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,iBAAiB,EAAgC,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,SAAS,EAET,SAAS,EAMV,MAAM,uBAAuB,CAAC;AAM/B,oBAAY,UAAU,GAAG;IACvB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAAC;CAC1C,CAAC;AAYF,wBAAsB,gBAAgB,CAAC,QAAQ,EAC7C,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAC/C,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,sBAAsB,CAAC,CA+GjC;AA8FD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,cAAmB,WAqB/B;AAyVD,eAAO,MAAM,oCAAoC,EAAE,oBAAoB,CACrE,GAAG,EACH,GAAG,CAYJ,CAAC"}
1
+ {"version":3,"file":"executeQueryPlan.d.ts","sourceRoot":"","sources":["../src/executeQueryPlan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAKL,oBAAoB,EAIrB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,iBAAiB,EAAgC,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,SAAS,EAET,SAAS,EAMV,MAAM,uBAAuB,CAAC;AAM/B,oBAAY,UAAU,GAAG;IACvB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAAC;CAC1C,CAAC;AAYF,wBAAsB,gBAAgB,CAAC,QAAQ,EAC7C,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAC/C,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,sBAAsB,CAAC,CA+GjC;AA8FD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,cAAmB,WAqB/B;AAmWD,eAAO,MAAM,oCAAoC,EAAE,oBAAoB,CACrE,GAAG,EACH,GAAG,CAYJ,CAAC"}
@@ -307,7 +307,7 @@ function executeSelectionSet(operationContext, source, selections) {
307
307
  const responseName = (0, query_planner_1.getResponseName)(selection);
308
308
  const selections = selection.selections;
309
309
  if (typeof source[responseName] === 'undefined') {
310
- throw new Error(`Field "${responseName}" was not found in response.`);
310
+ return null;
311
311
  }
312
312
  if (Array.isArray(source[responseName])) {
313
313
  result[responseName] = source[responseName].map((value) => selections
@@ -1 +1 @@
1
- {"version":3,"file":"executeQueryPlan.js","sourceRoot":"","sources":["../src/executeQueryPlan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executeQueryPlan.js","sourceRoot":"","sources":["../src/executeQueryPlan.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apollo/gateway",
3
- "version": "0.45.0",
3
+ "version": "0.45.1",
4
4
  "description": "Apollo Gateway",
5
5
  "author": "Apollo <packages@apollographql.com>",
6
6
  "main": "dist/index.js",
@@ -44,5 +44,5 @@
44
44
  "peerDependencies": {
45
45
  "graphql": "^15.7.2"
46
46
  },
47
- "gitHead": "6da531f786edaee9cde8e12064bac6934caa13bc"
47
+ "gitHead": "9839faec4505baba5c1ee72bd8981fdeb92a8b3a"
48
48
  }
@@ -1636,4 +1636,640 @@ describe('executeQueryPlan', () => {
1636
1636
  });
1637
1637
  });
1638
1638
  });
1639
+
1640
+ describe('@requires', () => {
1641
+ test('handles null in required field correctly (with nullable fields)', async () => {
1642
+ const s1 = {
1643
+ name: 'S1',
1644
+ typeDefs: gql`
1645
+ type T1 @key(fields: "id") {
1646
+ id: Int!
1647
+ f1: String
1648
+ }
1649
+ `
1650
+ }
1651
+
1652
+ const s2 = {
1653
+ name: 'S2',
1654
+ typeDefs: gql`
1655
+ type Query {
1656
+ getT1s: [T1]
1657
+ }
1658
+
1659
+ extend type T1 @key(fields: "id") {
1660
+ id: Int! @external
1661
+ f1: String @external
1662
+ f2: T2 @requires(fields: "f1")
1663
+ }
1664
+
1665
+ type T2 {
1666
+ a: String
1667
+ }
1668
+ `
1669
+ }
1670
+
1671
+ const { serviceMap, schema, queryPlanner} = getFederatedTestingSchema([ s1, s2 ]);
1672
+
1673
+ const s1_data = [
1674
+ { id: 0, f1: "foo" },
1675
+ { id: 1, f1: null },
1676
+ { id: 2, f1: "bar" },
1677
+ ];
1678
+
1679
+ addResolversToSchema(serviceMap['S1'].schema, {
1680
+ T1: {
1681
+ __resolveReference(ref) {
1682
+ return s1_data[ref.id];
1683
+ },
1684
+ },
1685
+ });
1686
+
1687
+ addResolversToSchema(serviceMap['S2'].schema, {
1688
+ Query: {
1689
+ getT1s() {
1690
+ return [{id: 0}, {id: 1}, {id: 2}];
1691
+ },
1692
+ },
1693
+ T1: {
1694
+ __resolveReference(ref) {
1695
+ // the ref has already the id and f1 is a require is triggered, and we resolve f2 below
1696
+ return ref;
1697
+ },
1698
+ f2(o) {
1699
+ return o.f1 === null ? null : { a: `t1:${o.f1}` };
1700
+ }
1701
+ }
1702
+ });
1703
+
1704
+ const operationDocument = gql`
1705
+ query {
1706
+ getT1s {
1707
+ id
1708
+ f1
1709
+ f2 {
1710
+ a
1711
+ }
1712
+ }
1713
+ }
1714
+ `;
1715
+
1716
+ const operationContext = buildOperationContext({
1717
+ schema,
1718
+ operationDocument,
1719
+ });
1720
+
1721
+ const queryPlan = queryPlanner.buildQueryPlan(operationContext);
1722
+ expect(queryPlan).toMatchInlineSnapshot(`
1723
+ QueryPlan {
1724
+ Sequence {
1725
+ Fetch(service: "S2") {
1726
+ {
1727
+ getT1s {
1728
+ id
1729
+ __typename
1730
+ }
1731
+ }
1732
+ },
1733
+ Flatten(path: "getT1s.@") {
1734
+ Fetch(service: "S1") {
1735
+ {
1736
+ ... on T1 {
1737
+ __typename
1738
+ id
1739
+ }
1740
+ } =>
1741
+ {
1742
+ ... on T1 {
1743
+ f1
1744
+ __typename
1745
+ id
1746
+ }
1747
+ }
1748
+ },
1749
+ },
1750
+ Flatten(path: "getT1s.@") {
1751
+ Fetch(service: "S2") {
1752
+ {
1753
+ ... on T1 {
1754
+ __typename
1755
+ id
1756
+ f1
1757
+ }
1758
+ } =>
1759
+ {
1760
+ ... on T1 {
1761
+ f2 {
1762
+ a
1763
+ }
1764
+ }
1765
+ }
1766
+ },
1767
+ },
1768
+ },
1769
+ }
1770
+ `);
1771
+ const response = await executeQueryPlan(queryPlan, serviceMap, buildRequestContext(), operationContext);
1772
+ expect(response.data).toMatchInlineSnapshot(`
1773
+ Object {
1774
+ "getT1s": Array [
1775
+ Object {
1776
+ "f1": "foo",
1777
+ "f2": Object {
1778
+ "a": "t1:foo",
1779
+ },
1780
+ "id": 0,
1781
+ },
1782
+ Object {
1783
+ "f1": null,
1784
+ "f2": null,
1785
+ "id": 1,
1786
+ },
1787
+ Object {
1788
+ "f1": "bar",
1789
+ "f2": Object {
1790
+ "a": "t1:bar",
1791
+ },
1792
+ "id": 2,
1793
+ },
1794
+ ],
1795
+ }
1796
+ `);
1797
+ expect(response.errors).toBeUndefined();
1798
+ });
1799
+
1800
+ test('handles null in required field correctly (with @require field non-nullable)', async () => {
1801
+ const s1 = {
1802
+ name: 'S1',
1803
+ typeDefs: gql`
1804
+ type T1 @key(fields: "id") {
1805
+ id: Int!
1806
+ f1: String
1807
+ }
1808
+ `
1809
+ }
1810
+
1811
+ const s2 = {
1812
+ name: 'S2',
1813
+ typeDefs: gql`
1814
+ type Query {
1815
+ getT1s: [T1]
1816
+ }
1817
+
1818
+ extend type T1 @key(fields: "id") {
1819
+ id: Int! @external
1820
+ f1: String @external
1821
+ f2: T2! @requires(fields: "f1")
1822
+ }
1823
+
1824
+ type T2 {
1825
+ a: String
1826
+ }
1827
+ `
1828
+ }
1829
+
1830
+ const { serviceMap, schema, queryPlanner} = getFederatedTestingSchema([ s1, s2 ]);
1831
+
1832
+ const s1_data = [
1833
+ { id: 0, f1: "foo" },
1834
+ { id: 1, f1: null },
1835
+ { id: 2, f1: "bar" },
1836
+ ];
1837
+
1838
+ addResolversToSchema(serviceMap['S1'].schema, {
1839
+ T1: {
1840
+ __resolveReference(ref) {
1841
+ return s1_data[ref.id];
1842
+ },
1843
+ },
1844
+ });
1845
+
1846
+ addResolversToSchema(serviceMap['S2'].schema, {
1847
+ Query: {
1848
+ getT1s() {
1849
+ return [{id: 0}, {id: 1}, {id: 2}];
1850
+ },
1851
+ },
1852
+ T1: {
1853
+ __resolveReference(ref) {
1854
+ // the ref has already the id and f1 is a require is triggered, and we resolve f2 below
1855
+ return ref;
1856
+ },
1857
+ f2(o) {
1858
+ return o.f1 === null ? null : { a: `t1:${o.f1}` };
1859
+ }
1860
+ }
1861
+ });
1862
+
1863
+ const operationDocument = gql`
1864
+ query {
1865
+ getT1s {
1866
+ id
1867
+ f1
1868
+ f2 {
1869
+ a
1870
+ }
1871
+ }
1872
+ }
1873
+ `;
1874
+
1875
+ const operationContext = buildOperationContext({
1876
+ schema,
1877
+ operationDocument,
1878
+ });
1879
+
1880
+ const queryPlan = queryPlanner.buildQueryPlan(operationContext);
1881
+ expect(queryPlan).toMatchInlineSnapshot(`
1882
+ QueryPlan {
1883
+ Sequence {
1884
+ Fetch(service: "S2") {
1885
+ {
1886
+ getT1s {
1887
+ id
1888
+ __typename
1889
+ }
1890
+ }
1891
+ },
1892
+ Flatten(path: "getT1s.@") {
1893
+ Fetch(service: "S1") {
1894
+ {
1895
+ ... on T1 {
1896
+ __typename
1897
+ id
1898
+ }
1899
+ } =>
1900
+ {
1901
+ ... on T1 {
1902
+ f1
1903
+ __typename
1904
+ id
1905
+ }
1906
+ }
1907
+ },
1908
+ },
1909
+ Flatten(path: "getT1s.@") {
1910
+ Fetch(service: "S2") {
1911
+ {
1912
+ ... on T1 {
1913
+ __typename
1914
+ id
1915
+ f1
1916
+ }
1917
+ } =>
1918
+ {
1919
+ ... on T1 {
1920
+ f2 {
1921
+ a
1922
+ }
1923
+ }
1924
+ }
1925
+ },
1926
+ },
1927
+ },
1928
+ }
1929
+ `);
1930
+
1931
+ const response = await executeQueryPlan(queryPlan, serviceMap, buildRequestContext(), operationContext);
1932
+ // `null` should bubble up since `f2` is now non-nullable. But we should still get the `id: 0` response.
1933
+ expect(response.data).toMatchInlineSnapshot(`
1934
+ Object {
1935
+ "getT1s": Array [
1936
+ Object {
1937
+ "f1": "foo",
1938
+ "f2": Object {
1939
+ "a": "t1:foo",
1940
+ },
1941
+ "id": 0,
1942
+ },
1943
+ null,
1944
+ Object {
1945
+ "f1": "bar",
1946
+ "f2": Object {
1947
+ "a": "t1:bar",
1948
+ },
1949
+ "id": 2,
1950
+ },
1951
+ ],
1952
+ }
1953
+ `);
1954
+
1955
+ // We returning `null` for f2 which isn't nullable, so it bubbled up and we should have an error
1956
+ expect(response.errors?.map((e) => e.message)).toStrictEqual(['Cannot return null for non-nullable field T1.f2.']);
1957
+ });
1958
+
1959
+ test('handles null in required field correctly (with non-nullable required field)', async () => {
1960
+ const s1 = {
1961
+ name: 'S1',
1962
+ typeDefs: gql`
1963
+ type T1 @key(fields: "id") {
1964
+ id: Int!
1965
+ f1: String!
1966
+ }
1967
+ `
1968
+ }
1969
+
1970
+ const s2 = {
1971
+ name: 'S2',
1972
+ typeDefs: gql`
1973
+ type Query {
1974
+ getT1s: [T1]
1975
+ }
1976
+
1977
+ extend type T1 @key(fields: "id") {
1978
+ id: Int! @external
1979
+ f1: String! @external
1980
+ f2: T2 @requires(fields: "f1")
1981
+ }
1982
+
1983
+ type T2 {
1984
+ a: String
1985
+ }
1986
+ `
1987
+ }
1988
+
1989
+ const { serviceMap, schema, queryPlanner} = getFederatedTestingSchema([ s1, s2 ]);
1990
+
1991
+ const s1_data = [
1992
+ { id: 0, f1: "foo" },
1993
+ { id: 1, f1: null },
1994
+ { id: 2, f1: "bar" },
1995
+ ];
1996
+
1997
+ addResolversToSchema(serviceMap['S1'].schema, {
1998
+ T1: {
1999
+ __resolveReference(ref) {
2000
+ return s1_data[ref.id];
2001
+ },
2002
+ },
2003
+ });
2004
+
2005
+ addResolversToSchema(serviceMap['S2'].schema, {
2006
+ Query: {
2007
+ getT1s() {
2008
+ return [{id: 0}, {id: 1}, {id: 2}];
2009
+ },
2010
+ },
2011
+ T1: {
2012
+ __resolveReference(ref) {
2013
+ // the ref has already the id and f1 is a require is triggered, and we resolve f2 below
2014
+ return ref;
2015
+ },
2016
+ f2(o) {
2017
+ return o.f1 === null ? null : { a: `t1:${o.f1}` };
2018
+ }
2019
+ }
2020
+ });
2021
+
2022
+ const operationDocument = gql`
2023
+ query {
2024
+ getT1s {
2025
+ id
2026
+ f1
2027
+ f2 {
2028
+ a
2029
+ }
2030
+ }
2031
+ }
2032
+ `;
2033
+ const operationContext = buildOperationContext({
2034
+ schema,
2035
+ operationDocument,
2036
+ });
2037
+
2038
+ const queryPlan = queryPlanner.buildQueryPlan(operationContext);
2039
+ expect(queryPlan).toMatchInlineSnapshot(`
2040
+ QueryPlan {
2041
+ Sequence {
2042
+ Fetch(service: "S2") {
2043
+ {
2044
+ getT1s {
2045
+ id
2046
+ __typename
2047
+ }
2048
+ }
2049
+ },
2050
+ Flatten(path: "getT1s.@") {
2051
+ Fetch(service: "S1") {
2052
+ {
2053
+ ... on T1 {
2054
+ __typename
2055
+ id
2056
+ }
2057
+ } =>
2058
+ {
2059
+ ... on T1 {
2060
+ f1
2061
+ __typename
2062
+ id
2063
+ }
2064
+ }
2065
+ },
2066
+ },
2067
+ Flatten(path: "getT1s.@") {
2068
+ Fetch(service: "S2") {
2069
+ {
2070
+ ... on T1 {
2071
+ __typename
2072
+ id
2073
+ f1
2074
+ }
2075
+ } =>
2076
+ {
2077
+ ... on T1 {
2078
+ f2 {
2079
+ a
2080
+ }
2081
+ }
2082
+ }
2083
+ },
2084
+ },
2085
+ },
2086
+ }
2087
+ `);
2088
+
2089
+ const response = await executeQueryPlan(queryPlan, serviceMap, buildRequestContext(), operationContext);
2090
+ // `null` should bubble up since `f2` is now non-nullable. But we should still get the `id: 0` response.
2091
+ expect(response.data).toMatchInlineSnapshot(`
2092
+ Object {
2093
+ "getT1s": Array [
2094
+ Object {
2095
+ "f1": "foo",
2096
+ "f2": Object {
2097
+ "a": "t1:foo",
2098
+ },
2099
+ "id": 0,
2100
+ },
2101
+ null,
2102
+ Object {
2103
+ "f1": "bar",
2104
+ "f2": Object {
2105
+ "a": "t1:bar",
2106
+ },
2107
+ "id": 2,
2108
+ },
2109
+ ],
2110
+ }
2111
+ `);
2112
+ expect(response.errors?.map((e) => e.message)).toStrictEqual(['Cannot return null for non-nullable field T1.f1.']);
2113
+ });
2114
+
2115
+ test('handles errors in required field correctly (with nullable fields)', async () => {
2116
+ const s1 = {
2117
+ name: 'S1',
2118
+ typeDefs: gql`
2119
+ type T1 @key(fields: "id") {
2120
+ id: Int!
2121
+ f1: String
2122
+ }
2123
+ `
2124
+ }
2125
+
2126
+ const s2 = {
2127
+ name: 'S2',
2128
+ typeDefs: gql`
2129
+ type Query {
2130
+ getT1s: [T1]
2131
+ }
2132
+
2133
+ extend type T1 @key(fields: "id") {
2134
+ id: Int! @external
2135
+ f1: String @external
2136
+ f2: T2 @requires(fields: "f1")
2137
+ }
2138
+
2139
+ type T2 {
2140
+ a: String
2141
+ }
2142
+ `
2143
+ }
2144
+
2145
+ const { serviceMap, schema, queryPlanner} = getFederatedTestingSchema([ s1, s2 ]);
2146
+
2147
+ addResolversToSchema(serviceMap['S1'].schema, {
2148
+ T1: {
2149
+ __resolveReference(ref) {
2150
+ return ref;
2151
+ },
2152
+ f1(o) {
2153
+ switch (o.id) {
2154
+ case 0: return "foo";
2155
+ case 1: return [ "invalid" ]; // This will effectively throw
2156
+ case 2: return "bar";
2157
+ default: throw new Error('Not handled');
2158
+ }
2159
+ }
2160
+ },
2161
+ });
2162
+
2163
+ addResolversToSchema(serviceMap['S2'].schema, {
2164
+ Query: {
2165
+ getT1s() {
2166
+ return [{id: 0}, {id: 1}, {id: 2}];
2167
+ },
2168
+ },
2169
+ T1: {
2170
+ __resolveReference(ref) {
2171
+ // the ref has already the id and f1 is a require is triggered, and we resolve f2 below
2172
+ return ref;
2173
+ },
2174
+ f2(o) {
2175
+ return o.f1 === null ? null : { a: `t1:${o.f1}` };
2176
+ }
2177
+ }
2178
+ });
2179
+
2180
+ const operationDocument = gql`
2181
+ query {
2182
+ getT1s {
2183
+ id
2184
+ f1
2185
+ f2 {
2186
+ a
2187
+ }
2188
+ }
2189
+ }
2190
+ `;
2191
+ const operationContext = buildOperationContext({
2192
+ schema,
2193
+ operationDocument,
2194
+ });
2195
+
2196
+ const queryPlan = queryPlanner.buildQueryPlan(operationContext);
2197
+ expect(queryPlan).toMatchInlineSnapshot(`
2198
+ QueryPlan {
2199
+ Sequence {
2200
+ Fetch(service: "S2") {
2201
+ {
2202
+ getT1s {
2203
+ id
2204
+ __typename
2205
+ }
2206
+ }
2207
+ },
2208
+ Flatten(path: "getT1s.@") {
2209
+ Fetch(service: "S1") {
2210
+ {
2211
+ ... on T1 {
2212
+ __typename
2213
+ id
2214
+ }
2215
+ } =>
2216
+ {
2217
+ ... on T1 {
2218
+ f1
2219
+ __typename
2220
+ id
2221
+ }
2222
+ }
2223
+ },
2224
+ },
2225
+ Flatten(path: "getT1s.@") {
2226
+ Fetch(service: "S2") {
2227
+ {
2228
+ ... on T1 {
2229
+ __typename
2230
+ id
2231
+ f1
2232
+ }
2233
+ } =>
2234
+ {
2235
+ ... on T1 {
2236
+ f2 {
2237
+ a
2238
+ }
2239
+ }
2240
+ }
2241
+ },
2242
+ },
2243
+ },
2244
+ }
2245
+ `);
2246
+ const response = await executeQueryPlan(queryPlan, serviceMap, buildRequestContext(), operationContext);
2247
+ expect(response.data).toMatchInlineSnapshot(`
2248
+ Object {
2249
+ "getT1s": Array [
2250
+ Object {
2251
+ "f1": "foo",
2252
+ "f2": Object {
2253
+ "a": "t1:foo",
2254
+ },
2255
+ "id": 0,
2256
+ },
2257
+ Object {
2258
+ "f1": null,
2259
+ "f2": null,
2260
+ "id": 1,
2261
+ },
2262
+ Object {
2263
+ "f1": "bar",
2264
+ "f2": Object {
2265
+ "a": "t1:bar",
2266
+ },
2267
+ "id": 2,
2268
+ },
2269
+ ],
2270
+ }
2271
+ `);
2272
+ expect(response.errors?.map((e) => e.message)).toStrictEqual(['String cannot represent value: ["invalid"]']);
2273
+ });
2274
+ });
1639
2275
  });
@@ -523,7 +523,17 @@ function executeSelectionSet(
523
523
  const selections = (selection as QueryPlanFieldNode).selections;
524
524
 
525
525
  if (typeof source[responseName] === 'undefined') {
526
- throw new Error(`Field "${responseName}" was not found in response.`);
526
+ // This method is called to collect the inputs/requires of a fetch. So, assuming query plans are correct
527
+ // (and we have not reason to assume otherwise here), all inputs should be fetched beforehand and the
528
+ // only reason for not finding one of the inputs is that we had an error fetching it _and_ that field
529
+ // is non-nullable (it it was nullable, error fetching the input would have make that input `null`; not
530
+ // having the input means the field is non-nullable so the whole entity had to be nullified/ignored,
531
+ // leading use to not have the field at all).
532
+ // In any case, we don't have all the necessary inputs for this particular entity and should ignore it.
533
+ // Note that an error has already been logged for whichever issue happen while fetching the inputs we're
534
+ // missing here, and that error had much more context, so no reason to log a duplicate (less useful) error
535
+ // here.
536
+ return null;
527
537
  }
528
538
  if (Array.isArray(source[responseName])) {
529
539
  result[responseName] = source[responseName].map((value: any) =>