@apollo/gateway 2.4.4 → 2.4.6

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.
Files changed (176) hide show
  1. package/dist/__generated__/graphqlTypes.d.ts +178 -0
  2. package/dist/__generated__/graphqlTypes.d.ts.map +1 -0
  3. package/dist/__generated__/graphqlTypes.js +31 -0
  4. package/dist/__generated__/graphqlTypes.js.map +1 -0
  5. package/dist/config.d.ts +138 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +60 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/dataRewrites.d.ts +5 -0
  10. package/dist/dataRewrites.d.ts.map +1 -0
  11. package/dist/dataRewrites.js +103 -0
  12. package/dist/dataRewrites.js.map +1 -0
  13. package/dist/datasources/LocalGraphQLDataSource.d.ts +10 -0
  14. package/dist/datasources/LocalGraphQLDataSource.d.ts.map +1 -0
  15. package/dist/datasources/LocalGraphQLDataSource.js +31 -0
  16. package/dist/datasources/LocalGraphQLDataSource.js.map +1 -0
  17. package/dist/datasources/RemoteGraphQLDataSource.d.ts +24 -0
  18. package/dist/datasources/RemoteGraphQLDataSource.d.ts.map +1 -0
  19. package/dist/datasources/RemoteGraphQLDataSource.js +180 -0
  20. package/dist/datasources/RemoteGraphQLDataSource.js.map +1 -0
  21. package/dist/datasources/index.d.ts +4 -0
  22. package/dist/datasources/index.d.ts.map +1 -0
  23. package/dist/datasources/index.js +8 -0
  24. package/dist/datasources/index.js.map +1 -0
  25. package/dist/datasources/parseCacheControlHeader.d.ts +2 -0
  26. package/dist/datasources/parseCacheControlHeader.d.ts.map +1 -0
  27. package/dist/datasources/parseCacheControlHeader.js +16 -0
  28. package/dist/datasources/parseCacheControlHeader.js.map +1 -0
  29. package/dist/datasources/types.d.ts +23 -0
  30. package/dist/datasources/types.d.ts.map +1 -0
  31. package/dist/datasources/types.js +10 -0
  32. package/dist/datasources/types.js.map +1 -0
  33. package/dist/executeQueryPlan.d.ts +15 -0
  34. package/dist/executeQueryPlan.d.ts.map +1 -0
  35. package/dist/executeQueryPlan.js +539 -0
  36. package/dist/executeQueryPlan.js.map +1 -0
  37. package/dist/index.d.ts +113 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +590 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/logger.d.ts +3 -0
  42. package/dist/logger.d.ts.map +1 -0
  43. package/dist/logger.js +15 -0
  44. package/dist/logger.js.map +1 -0
  45. package/dist/operationContext.d.ts +17 -0
  46. package/dist/operationContext.d.ts.map +1 -0
  47. package/dist/operationContext.js +38 -0
  48. package/dist/operationContext.js.map +1 -0
  49. package/dist/resultShaping.d.ts +12 -0
  50. package/dist/resultShaping.d.ts.map +1 -0
  51. package/dist/resultShaping.js +229 -0
  52. package/dist/resultShaping.js.map +1 -0
  53. package/dist/schema-helper/addExtensions.d.ts +3 -0
  54. package/dist/schema-helper/addExtensions.d.ts.map +1 -0
  55. package/dist/schema-helper/addExtensions.js +23 -0
  56. package/dist/schema-helper/addExtensions.js.map +1 -0
  57. package/dist/supergraphManagers/IntrospectAndCompose/index.d.ts +31 -0
  58. package/dist/supergraphManagers/IntrospectAndCompose/index.d.ts.map +1 -0
  59. package/dist/supergraphManagers/IntrospectAndCompose/index.js +112 -0
  60. package/dist/supergraphManagers/IntrospectAndCompose/index.js.map +1 -0
  61. package/dist/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.d.ts +12 -0
  62. package/dist/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.d.ts.map +1 -0
  63. package/dist/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.js +57 -0
  64. package/dist/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.js.map +1 -0
  65. package/dist/supergraphManagers/LegacyFetcher/index.d.ts +33 -0
  66. package/dist/supergraphManagers/LegacyFetcher/index.d.ts.map +1 -0
  67. package/dist/supergraphManagers/LegacyFetcher/index.js +149 -0
  68. package/dist/supergraphManagers/LegacyFetcher/index.js.map +1 -0
  69. package/dist/supergraphManagers/LocalCompose/index.d.ts +19 -0
  70. package/dist/supergraphManagers/LocalCompose/index.d.ts.map +1 -0
  71. package/dist/supergraphManagers/LocalCompose/index.js +55 -0
  72. package/dist/supergraphManagers/LocalCompose/index.js.map +1 -0
  73. package/dist/supergraphManagers/UplinkSupergraphManager/index.d.ts +63 -0
  74. package/dist/supergraphManagers/UplinkSupergraphManager/index.d.ts.map +1 -0
  75. package/dist/supergraphManagers/UplinkSupergraphManager/index.js +210 -0
  76. package/dist/supergraphManagers/UplinkSupergraphManager/index.js.map +1 -0
  77. package/dist/supergraphManagers/UplinkSupergraphManager/loadSupergraphSdlFromStorage.d.ts +30 -0
  78. package/dist/supergraphManagers/UplinkSupergraphManager/loadSupergraphSdlFromStorage.d.ts.map +1 -0
  79. package/dist/supergraphManagers/UplinkSupergraphManager/loadSupergraphSdlFromStorage.js +145 -0
  80. package/dist/supergraphManagers/UplinkSupergraphManager/loadSupergraphSdlFromStorage.js.map +1 -0
  81. package/dist/supergraphManagers/UplinkSupergraphManager/outOfBandReporter.d.ts +14 -0
  82. package/dist/supergraphManagers/UplinkSupergraphManager/outOfBandReporter.d.ts.map +1 -0
  83. package/dist/supergraphManagers/UplinkSupergraphManager/outOfBandReporter.js +85 -0
  84. package/dist/supergraphManagers/UplinkSupergraphManager/outOfBandReporter.js.map +1 -0
  85. package/dist/supergraphManagers/index.d.ts +6 -0
  86. package/dist/supergraphManagers/index.d.ts.map +1 -0
  87. package/dist/supergraphManagers/index.js +27 -0
  88. package/dist/supergraphManagers/index.js.map +1 -0
  89. package/dist/typings/graphql.d.ts +11 -0
  90. package/dist/typings/graphql.d.ts.map +1 -0
  91. package/dist/typings/graphql.js +3 -0
  92. package/dist/typings/graphql.js.map +1 -0
  93. package/dist/utilities/array.d.ts +5 -0
  94. package/dist/utilities/array.d.ts.map +1 -0
  95. package/dist/utilities/array.js +46 -0
  96. package/dist/utilities/array.js.map +1 -0
  97. package/dist/utilities/assert.d.ts +2 -0
  98. package/dist/utilities/assert.d.ts.map +1 -0
  99. package/dist/utilities/assert.js +10 -0
  100. package/dist/utilities/assert.js.map +1 -0
  101. package/dist/utilities/deepMerge.d.ts +2 -0
  102. package/dist/utilities/deepMerge.d.ts.map +1 -0
  103. package/dist/utilities/deepMerge.js +34 -0
  104. package/dist/utilities/deepMerge.js.map +1 -0
  105. package/dist/utilities/graphql.d.ts +5 -0
  106. package/dist/utilities/graphql.d.ts.map +1 -0
  107. package/dist/utilities/graphql.js +28 -0
  108. package/dist/utilities/graphql.js.map +1 -0
  109. package/dist/utilities/opentelemetry.d.ts +10 -0
  110. package/dist/utilities/opentelemetry.d.ts.map +1 -0
  111. package/dist/utilities/opentelemetry.js +19 -0
  112. package/dist/utilities/opentelemetry.js.map +1 -0
  113. package/dist/utilities/predicates.d.ts +2 -0
  114. package/dist/utilities/predicates.d.ts.map +1 -0
  115. package/dist/utilities/predicates.js +11 -0
  116. package/dist/utilities/predicates.js.map +1 -0
  117. package/package.json +4 -4
  118. package/src/__generated__/graphqlTypes.ts +33 -2
  119. package/src/__mocks__/tsconfig.json +0 -7
  120. package/src/__tests__/.gitkeep +0 -0
  121. package/src/__tests__/CucumberREADME.md +0 -96
  122. package/src/__tests__/build-query-plan.feature +0 -1471
  123. package/src/__tests__/buildQueryPlan.test.ts +0 -1225
  124. package/src/__tests__/executeQueryPlan.conditions.test.ts +0 -1488
  125. package/src/__tests__/executeQueryPlan.introspection.test.ts +0 -140
  126. package/src/__tests__/executeQueryPlan.test.ts +0 -6140
  127. package/src/__tests__/execution-utils.ts +0 -124
  128. package/src/__tests__/gateway/__snapshots__/opentelemetry.test.ts.snap +0 -195
  129. package/src/__tests__/gateway/buildService.test.ts +0 -249
  130. package/src/__tests__/gateway/endToEnd.test.ts +0 -486
  131. package/src/__tests__/gateway/executor.test.ts +0 -96
  132. package/src/__tests__/gateway/extensions.test.ts +0 -37
  133. package/src/__tests__/gateway/lifecycle-hooks.test.ts +0 -239
  134. package/src/__tests__/gateway/opentelemetry.test.ts +0 -123
  135. package/src/__tests__/gateway/queryPlanCache.test.ts +0 -231
  136. package/src/__tests__/gateway/queryPlannerConfig.test.ts +0 -101
  137. package/src/__tests__/gateway/reporting.test.ts +0 -616
  138. package/src/__tests__/gateway/supergraphSdl.test.ts +0 -396
  139. package/src/__tests__/gateway/testUtils.ts +0 -89
  140. package/src/__tests__/integration/abstract-types.test.ts +0 -1861
  141. package/src/__tests__/integration/aliases.test.ts +0 -180
  142. package/src/__tests__/integration/boolean.test.ts +0 -279
  143. package/src/__tests__/integration/complex-key.test.ts +0 -197
  144. package/src/__tests__/integration/configuration.test.ts +0 -404
  145. package/src/__tests__/integration/custom-directives.test.ts +0 -174
  146. package/src/__tests__/integration/execution-style.test.ts +0 -35
  147. package/src/__tests__/integration/fragments.test.ts +0 -237
  148. package/src/__tests__/integration/list-key.test.ts +0 -128
  149. package/src/__tests__/integration/logger.test.ts +0 -122
  150. package/src/__tests__/integration/managed.test.ts +0 -319
  151. package/src/__tests__/integration/merge-arrays.test.ts +0 -34
  152. package/src/__tests__/integration/multiple-key.test.ts +0 -327
  153. package/src/__tests__/integration/mutations.test.ts +0 -287
  154. package/src/__tests__/integration/networkRequests.test.ts +0 -542
  155. package/src/__tests__/integration/nockMocks.ts +0 -157
  156. package/src/__tests__/integration/provides.test.ts +0 -77
  157. package/src/__tests__/integration/requires.test.ts +0 -359
  158. package/src/__tests__/integration/scope.test.ts +0 -557
  159. package/src/__tests__/integration/single-service.test.ts +0 -119
  160. package/src/__tests__/integration/unions.test.ts +0 -79
  161. package/src/__tests__/integration/value-types.test.ts +0 -382
  162. package/src/__tests__/integration/variables.test.ts +0 -120
  163. package/src/__tests__/nockAssertions.ts +0 -20
  164. package/src/__tests__/queryPlanCucumber.test.ts +0 -55
  165. package/src/__tests__/resultShaping.test.ts +0 -605
  166. package/src/__tests__/testSetup.ts +0 -1
  167. package/src/__tests__/tsconfig.json +0 -8
  168. package/src/core/__tests__/core.test.ts +0 -412
  169. package/src/datasources/__tests__/LocalGraphQLDataSource.test.ts +0 -51
  170. package/src/datasources/__tests__/RemoteGraphQLDataSource.test.ts +0 -574
  171. package/src/schema-helper/__tests__/addExtensions.test.ts +0 -70
  172. package/src/supergraphManagers/IntrospectAndCompose/__tests__/IntrospectAndCompose.test.ts +0 -364
  173. package/src/supergraphManagers/IntrospectAndCompose/__tests__/loadServicesFromRemoteEndpoint.test.ts +0 -40
  174. package/src/supergraphManagers/UplinkSupergraphManager/__tests__/UplinkSupergraphManager.test.ts +0 -65
  175. package/src/supergraphManagers/UplinkSupergraphManager/__tests__/loadSupergraphSdlFromStorage.test.ts +0 -511
  176. package/src/utilities/__tests__/deepMerge.test.ts +0 -77
@@ -1,287 +0,0 @@
1
- import { execute } from '../execution-utils';
2
- import {
3
- astSerializer,
4
- queryPlanSerializer,
5
- } from 'apollo-federation-integration-testsuite';
6
- import { accounts, reviews } from 'apollo-federation-integration-testsuite';
7
-
8
- expect.addSnapshotSerializer(astSerializer);
9
- expect.addSnapshotSerializer(queryPlanSerializer);
10
-
11
- function spyOnResolver<T extends string>(resolverMap: any, resolverName: T) {
12
- return jest.spyOn<any, T>(resolverMap, resolverName).mockName(resolverName);
13
- }
14
-
15
- it('supports mutations', async () => {
16
- const query = `#graphql
17
- mutation Login($username: String!, $password: String!) {
18
- login(username: $username, password: $password) {
19
- reviews {
20
- product {
21
- upc
22
- }
23
- }
24
- }
25
- }
26
- `;
27
-
28
- const variables = { username: '@complete', password: 'css_completes_me' };
29
- const { data, queryPlan } = await execute({
30
- query,
31
- variables,
32
- });
33
-
34
- expect(data).toEqual({
35
- login: {
36
- reviews: [
37
- { product: { upc: '3' } },
38
- { product: { upc: '1' } },
39
- { product: { upc: '0262510871' } },
40
- { product: { upc: '0136291554' } },
41
- ],
42
- },
43
- });
44
-
45
- expect(queryPlan).toCallService('accounts');
46
- expect(queryPlan).toCallService('reviews');
47
- expect(queryPlan).toCallService('product');
48
- });
49
-
50
- it('returning across service boundaries', async () => {
51
- const query = `#graphql
52
- mutation Review($upc: String!, $body: String!) {
53
- reviewProduct(input: { upc: $upc, body: $body }) {
54
- ... on Furniture {
55
- name
56
- }
57
- }
58
- }
59
- `;
60
-
61
- const variables = { upc: '1', body: 'A great table' };
62
- const { data, queryPlan } = await execute({
63
- query,
64
- variables,
65
- });
66
-
67
- expect(data).toEqual({
68
- reviewProduct: {
69
- name: 'Table',
70
- },
71
- });
72
-
73
- expect(queryPlan).toCallService('reviews');
74
- expect(queryPlan).toCallService('product');
75
- });
76
-
77
- it('multiple root mutations', async () => {
78
- const login = spyOnResolver(accounts.resolvers.Mutation, 'login');
79
- const reviewProduct = spyOnResolver(
80
- reviews.resolvers.Mutation,
81
- 'reviewProduct',
82
- );
83
-
84
- const query = `#graphql
85
- mutation LoginAndReview(
86
- $username: String!
87
- $password: String!
88
- $upc: String!
89
- $body: String!
90
- ) {
91
- login(username: $username, password: $password) {
92
- reviews {
93
- product {
94
- upc
95
- }
96
- }
97
- }
98
- reviewProduct(input: { upc: $upc, body: $body }) {
99
- ... on Furniture {
100
- name
101
- }
102
- }
103
- }
104
- `;
105
-
106
- const variables = {
107
- username: '@complete',
108
- password: 'css_completes_me',
109
- upc: '1',
110
- body: 'A great table.',
111
- };
112
- const { data, queryPlan } = await execute({
113
- query,
114
- variables,
115
- });
116
-
117
- expect(data).toEqual({
118
- login: {
119
- reviews: [
120
- { product: { upc: '3' } },
121
- { product: { upc: '1' } },
122
- { product: { upc: '0262510871' } },
123
- { product: { upc: '0136291554' } },
124
- ],
125
- },
126
- reviewProduct: {
127
- name: 'Table',
128
- },
129
- });
130
-
131
- expect(queryPlan).toCallService('accounts');
132
- expect(queryPlan).toCallService('reviews');
133
- expect(queryPlan).toCallService('product');
134
-
135
- expect(login).toHaveBeenCalledBefore(reviewProduct);
136
- });
137
-
138
- it('multiple root mutations with correct service order', async () => {
139
- const reviewsMutations = reviews.resolvers.Mutation;
140
- const reviewProduct = spyOnResolver(reviewsMutations, 'reviewProduct');
141
- const login = spyOnResolver(accounts.resolvers.Mutation, 'login');
142
- const updateReview = spyOnResolver(reviewsMutations, 'updateReview');
143
- const deleteReview = spyOnResolver(reviewsMutations, 'deleteReview');
144
-
145
- const query = `#graphql
146
- mutation LoginAndReview(
147
- $upc: String!
148
- $body: String!
149
- $updatedReview: UpdateReviewInput!
150
- $username: String!
151
- $password: String!
152
- $reviewId: ID!
153
- ) {
154
- reviewProduct(input: { upc: $upc, body: $body }) {
155
- ... on Furniture {
156
- upc
157
- }
158
- }
159
- updateReview(review: $updatedReview) {
160
- id
161
- body
162
- }
163
- login(username: $username, password: $password) {
164
- reviews {
165
- product {
166
- upc
167
- }
168
- }
169
- }
170
- deleteReview(id: $reviewId)
171
- }
172
- `;
173
-
174
- const variables = {
175
- upc: '1',
176
- body: 'A great table.',
177
- updatedReview: {
178
- id: '1',
179
- body: 'An excellent table.',
180
- },
181
- username: '@complete',
182
- password: 'css_completes_me',
183
- reviewId: '6',
184
- };
185
- const { data, queryPlan } = await execute({
186
- query,
187
- variables,
188
- });
189
-
190
- expect(data).toEqual({
191
- deleteReview: true,
192
- login: {
193
- reviews: [
194
- { product: { upc: '3' } },
195
- { product: { upc: '1' } },
196
- { product: { upc: '0262510871' } },
197
- { product: { upc: '0136291554' } },
198
- ],
199
- },
200
- reviewProduct: {
201
- upc: '1',
202
- },
203
- updateReview: {
204
- body: 'An excellent table.',
205
- id: '1',
206
- },
207
- });
208
-
209
- expect(queryPlan).toMatchInlineSnapshot(`
210
- QueryPlan {
211
- Sequence {
212
- Fetch(service: "reviews") {
213
- {
214
- reviewProduct(input: {upc: $upc, body: $body}) {
215
- __typename
216
- ... on Furniture {
217
- upc
218
- }
219
- }
220
- updateReview(review: $updatedReview) {
221
- id
222
- body
223
- }
224
- }
225
- },
226
- Fetch(service: "accounts") {
227
- {
228
- login(username: $username, password: $password) {
229
- __typename
230
- id
231
- }
232
- }
233
- },
234
- Flatten(path: "login") {
235
- Fetch(service: "reviews") {
236
- {
237
- ... on User {
238
- __typename
239
- id
240
- }
241
- } =>
242
- {
243
- ... on User {
244
- reviews {
245
- product {
246
- __typename
247
- ... on Book {
248
- __typename
249
- isbn
250
- }
251
- ... on Furniture {
252
- upc
253
- }
254
- }
255
- }
256
- }
257
- }
258
- },
259
- },
260
- Flatten(path: "login.reviews.@.product") {
261
- Fetch(service: "product") {
262
- {
263
- ... on Book {
264
- __typename
265
- isbn
266
- }
267
- } =>
268
- {
269
- ... on Book {
270
- upc
271
- }
272
- }
273
- },
274
- },
275
- Fetch(service: "reviews") {
276
- {
277
- deleteReview(id: $reviewId)
278
- }
279
- },
280
- },
281
- }
282
- `);
283
-
284
- expect(reviewProduct).toHaveBeenCalledBefore(updateReview);
285
- expect(updateReview).toHaveBeenCalledBefore(login);
286
- expect(login).toHaveBeenCalledBefore(deleteReview);
287
- });