@apollo/gateway 0.300.0-alpha.2 → 2.0.0-alpha.2

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 (198) hide show
  1. package/LICENSE +95 -0
  2. package/README.md +1 -1
  3. package/dist/__generated__/graphqlTypes.d.ts +130 -0
  4. package/dist/__generated__/graphqlTypes.d.ts.map +1 -0
  5. package/dist/__generated__/graphqlTypes.js +25 -0
  6. package/dist/__generated__/graphqlTypes.js.map +1 -0
  7. package/dist/config.d.ts +104 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +47 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/datasources/LocalGraphQLDataSource.d.ts +3 -3
  12. package/dist/datasources/LocalGraphQLDataSource.d.ts.map +1 -1
  13. package/dist/datasources/LocalGraphQLDataSource.js +5 -5
  14. package/dist/datasources/LocalGraphQLDataSource.js.map +1 -1
  15. package/dist/datasources/RemoteGraphQLDataSource.d.ts +6 -4
  16. package/dist/datasources/RemoteGraphQLDataSource.d.ts.map +1 -1
  17. package/dist/datasources/RemoteGraphQLDataSource.js +60 -17
  18. package/dist/datasources/RemoteGraphQLDataSource.js.map +1 -1
  19. package/dist/datasources/index.d.ts +1 -1
  20. package/dist/datasources/index.d.ts.map +1 -1
  21. package/dist/datasources/index.js +1 -0
  22. package/dist/datasources/index.js.map +1 -1
  23. package/dist/datasources/parseCacheControlHeader.d.ts +2 -0
  24. package/dist/datasources/parseCacheControlHeader.d.ts.map +1 -0
  25. package/dist/datasources/parseCacheControlHeader.js +16 -0
  26. package/dist/datasources/parseCacheControlHeader.js.map +1 -0
  27. package/dist/datasources/types.d.ts +16 -1
  28. package/dist/datasources/types.d.ts.map +1 -1
  29. package/dist/datasources/types.js +7 -0
  30. package/dist/datasources/types.js.map +1 -1
  31. package/dist/executeQueryPlan.d.ts +2 -1
  32. package/dist/executeQueryPlan.d.ts.map +1 -1
  33. package/dist/executeQueryPlan.js +199 -112
  34. package/dist/executeQueryPlan.js.map +1 -1
  35. package/dist/index.d.ts +62 -80
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +543 -234
  38. package/dist/index.js.map +1 -1
  39. package/dist/loadServicesFromRemoteEndpoint.d.ts +9 -9
  40. package/dist/loadServicesFromRemoteEndpoint.d.ts.map +1 -1
  41. package/dist/loadServicesFromRemoteEndpoint.js +13 -8
  42. package/dist/loadServicesFromRemoteEndpoint.js.map +1 -1
  43. package/dist/loadSupergraphSdlFromStorage.d.ts +13 -0
  44. package/dist/loadSupergraphSdlFromStorage.d.ts.map +1 -0
  45. package/dist/loadSupergraphSdlFromStorage.js +101 -0
  46. package/dist/loadSupergraphSdlFromStorage.js.map +1 -0
  47. package/dist/operationContext.d.ts +17 -0
  48. package/dist/operationContext.d.ts.map +1 -0
  49. package/dist/operationContext.js +42 -0
  50. package/dist/operationContext.js.map +1 -0
  51. package/dist/outOfBandReporter.d.ts +15 -0
  52. package/dist/outOfBandReporter.d.ts.map +1 -0
  53. package/dist/outOfBandReporter.js +88 -0
  54. package/dist/outOfBandReporter.js.map +1 -0
  55. package/dist/utilities/array.d.ts +1 -2
  56. package/dist/utilities/array.d.ts.map +1 -1
  57. package/dist/utilities/array.js +7 -14
  58. package/dist/utilities/array.js.map +1 -1
  59. package/dist/utilities/assert.d.ts +2 -0
  60. package/dist/utilities/assert.d.ts.map +1 -0
  61. package/dist/utilities/assert.js +10 -0
  62. package/dist/utilities/assert.js.map +1 -0
  63. package/dist/utilities/cleanErrorOfInaccessibleNames.d.ts +3 -0
  64. package/dist/utilities/cleanErrorOfInaccessibleNames.d.ts.map +1 -0
  65. package/dist/utilities/cleanErrorOfInaccessibleNames.js +27 -0
  66. package/dist/utilities/cleanErrorOfInaccessibleNames.js.map +1 -0
  67. package/dist/utilities/deepMerge.js +2 -2
  68. package/dist/utilities/deepMerge.js.map +1 -1
  69. package/dist/utilities/graphql.d.ts +1 -4
  70. package/dist/utilities/graphql.d.ts.map +1 -1
  71. package/dist/utilities/graphql.js +3 -36
  72. package/dist/utilities/graphql.js.map +1 -1
  73. package/dist/utilities/opentelemetry.d.ts +10 -0
  74. package/dist/utilities/opentelemetry.d.ts.map +1 -0
  75. package/dist/utilities/opentelemetry.js +19 -0
  76. package/dist/utilities/opentelemetry.js.map +1 -0
  77. package/package.json +30 -21
  78. package/src/__generated__/graphqlTypes.ts +140 -0
  79. package/src/__mocks__/apollo-server-env.ts +56 -0
  80. package/src/__mocks__/make-fetch-happen-fetcher.ts +55 -0
  81. package/src/__mocks__/tsconfig.json +7 -0
  82. package/src/__tests__/build-query-plan.feature +40 -311
  83. package/src/__tests__/buildQueryPlan.test.ts +246 -426
  84. package/src/__tests__/executeQueryPlan.test.ts +1691 -194
  85. package/src/__tests__/execution-utils.ts +33 -26
  86. package/src/__tests__/gateway/__snapshots__/opentelemetry.test.ts.snap +195 -0
  87. package/src/__tests__/gateway/buildService.test.ts +16 -19
  88. package/src/__tests__/gateway/composedSdl.test.ts +44 -0
  89. package/src/__tests__/gateway/endToEnd.test.ts +166 -0
  90. package/src/__tests__/gateway/executor.test.ts +49 -43
  91. package/src/__tests__/gateway/lifecycle-hooks.test.ts +58 -29
  92. package/src/__tests__/gateway/opentelemetry.test.ts +123 -0
  93. package/src/__tests__/gateway/queryPlanCache.test.ts +19 -20
  94. package/src/__tests__/gateway/reporting.test.ts +76 -55
  95. package/src/__tests__/integration/abstract-types.test.ts +1086 -22
  96. package/src/__tests__/integration/aliases.test.ts +5 -6
  97. package/src/__tests__/integration/boolean.test.ts +40 -38
  98. package/src/__tests__/integration/complex-key.test.ts +41 -56
  99. package/src/__tests__/integration/configuration.test.ts +321 -0
  100. package/src/__tests__/integration/custom-directives.test.ts +61 -46
  101. package/src/__tests__/integration/fragments.test.ts +8 -2
  102. package/src/__tests__/integration/list-key.test.ts +2 -2
  103. package/src/__tests__/integration/logger.test.ts +2 -2
  104. package/src/__tests__/integration/multiple-key.test.ts +11 -12
  105. package/src/__tests__/integration/mutations.test.ts +8 -5
  106. package/src/__tests__/integration/networkRequests.test.ts +447 -289
  107. package/src/__tests__/integration/nockMocks.ts +95 -66
  108. package/src/__tests__/integration/provides.test.ts +9 -6
  109. package/src/__tests__/integration/requires.test.ts +17 -15
  110. package/src/__tests__/integration/scope.test.ts +557 -0
  111. package/src/__tests__/integration/unions.test.ts +1 -1
  112. package/src/__tests__/integration/value-types.test.ts +35 -32
  113. package/src/__tests__/integration/variables.test.ts +8 -2
  114. package/src/__tests__/loadServicesFromRemoteEndpoint.test.ts +6 -2
  115. package/src/__tests__/loadSupergraphSdlFromStorage.test.ts +694 -0
  116. package/src/__tests__/queryPlanCucumber.test.ts +11 -61
  117. package/src/__tests__/testSetup.ts +1 -4
  118. package/src/__tests__/tsconfig.json +2 -1
  119. package/src/config.ts +225 -0
  120. package/src/core/__tests__/core.test.ts +412 -0
  121. package/src/datasources/LocalGraphQLDataSource.ts +9 -10
  122. package/src/datasources/RemoteGraphQLDataSource.ts +117 -43
  123. package/src/datasources/__tests__/LocalGraphQLDataSource.test.ts +11 -4
  124. package/src/datasources/__tests__/RemoteGraphQLDataSource.test.ts +148 -79
  125. package/src/datasources/__tests__/tsconfig.json +4 -2
  126. package/src/datasources/index.ts +1 -1
  127. package/src/datasources/parseCacheControlHeader.ts +43 -0
  128. package/src/datasources/types.ts +47 -2
  129. package/src/executeQueryPlan.ts +264 -153
  130. package/src/index.ts +925 -480
  131. package/src/loadServicesFromRemoteEndpoint.ts +24 -17
  132. package/src/loadSupergraphSdlFromStorage.ts +140 -0
  133. package/src/make-fetch-happen.d.ts +2 -2
  134. package/src/operationContext.ts +70 -0
  135. package/src/outOfBandReporter.ts +128 -0
  136. package/src/utilities/__tests__/cleanErrorOfInaccessibleElements.test.ts +104 -0
  137. package/src/utilities/__tests__/tsconfig.json +8 -0
  138. package/src/utilities/array.ts +6 -28
  139. package/src/utilities/assert.ts +14 -0
  140. package/src/utilities/cleanErrorOfInaccessibleNames.ts +29 -0
  141. package/src/utilities/graphql.ts +0 -64
  142. package/src/utilities/opentelemetry.ts +13 -0
  143. package/CHANGELOG.md +0 -226
  144. package/LICENSE.md +0 -20
  145. package/dist/FieldSet.d.ts +0 -18
  146. package/dist/FieldSet.d.ts.map +0 -1
  147. package/dist/FieldSet.js +0 -96
  148. package/dist/FieldSet.js.map +0 -1
  149. package/dist/QueryPlan.d.ts +0 -41
  150. package/dist/QueryPlan.d.ts.map +0 -1
  151. package/dist/QueryPlan.js +0 -15
  152. package/dist/QueryPlan.js.map +0 -1
  153. package/dist/buildQueryPlan.d.ts +0 -44
  154. package/dist/buildQueryPlan.d.ts.map +0 -1
  155. package/dist/buildQueryPlan.js +0 -670
  156. package/dist/buildQueryPlan.js.map +0 -1
  157. package/dist/loadServicesFromStorage.d.ts +0 -21
  158. package/dist/loadServicesFromStorage.d.ts.map +0 -1
  159. package/dist/loadServicesFromStorage.js +0 -64
  160. package/dist/loadServicesFromStorage.js.map +0 -1
  161. package/dist/snapshotSerializers/astSerializer.d.ts +0 -3
  162. package/dist/snapshotSerializers/astSerializer.d.ts.map +0 -1
  163. package/dist/snapshotSerializers/astSerializer.js +0 -14
  164. package/dist/snapshotSerializers/astSerializer.js.map +0 -1
  165. package/dist/snapshotSerializers/index.d.ts +0 -13
  166. package/dist/snapshotSerializers/index.d.ts.map +0 -1
  167. package/dist/snapshotSerializers/index.js +0 -15
  168. package/dist/snapshotSerializers/index.js.map +0 -1
  169. package/dist/snapshotSerializers/queryPlanSerializer.d.ts +0 -3
  170. package/dist/snapshotSerializers/queryPlanSerializer.d.ts.map +0 -1
  171. package/dist/snapshotSerializers/queryPlanSerializer.js +0 -78
  172. package/dist/snapshotSerializers/queryPlanSerializer.js.map +0 -1
  173. package/dist/snapshotSerializers/selectionSetSerializer.d.ts +0 -3
  174. package/dist/snapshotSerializers/selectionSetSerializer.d.ts.map +0 -1
  175. package/dist/snapshotSerializers/selectionSetSerializer.js +0 -12
  176. package/dist/snapshotSerializers/selectionSetSerializer.js.map +0 -1
  177. package/dist/snapshotSerializers/typeSerializer.d.ts +0 -3
  178. package/dist/snapshotSerializers/typeSerializer.d.ts.map +0 -1
  179. package/dist/snapshotSerializers/typeSerializer.js +0 -12
  180. package/dist/snapshotSerializers/typeSerializer.js.map +0 -1
  181. package/dist/utilities/MultiMap.d.ts +0 -4
  182. package/dist/utilities/MultiMap.d.ts.map +0 -1
  183. package/dist/utilities/MultiMap.js +0 -17
  184. package/dist/utilities/MultiMap.js.map +0 -1
  185. package/src/FieldSet.ts +0 -169
  186. package/src/QueryPlan.ts +0 -57
  187. package/src/__tests__/matchers/toCallService.ts +0 -105
  188. package/src/__tests__/matchers/toHaveBeenCalledBefore.ts +0 -40
  189. package/src/__tests__/matchers/toHaveFetched.ts +0 -81
  190. package/src/__tests__/matchers/toMatchAST.ts +0 -64
  191. package/src/buildQueryPlan.ts +0 -1190
  192. package/src/loadServicesFromStorage.ts +0 -170
  193. package/src/snapshotSerializers/astSerializer.ts +0 -21
  194. package/src/snapshotSerializers/index.ts +0 -21
  195. package/src/snapshotSerializers/queryPlanSerializer.ts +0 -144
  196. package/src/snapshotSerializers/selectionSetSerializer.ts +0 -13
  197. package/src/snapshotSerializers/typeSerializer.ts +0 -11
  198. package/src/utilities/MultiMap.ts +0 -11
@@ -3,79 +3,126 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.defaultFieldResolverWithAliasSupport = exports.executeQueryPlan = void 0;
4
4
  const apollo_server_env_1 = require("apollo-server-env");
5
5
  const graphql_1 = require("graphql");
6
- const apollo_engine_reporting_protobuf_1 = require("apollo-engine-reporting-protobuf");
7
- const federation_1 = require("@apollo/federation");
6
+ const apollo_reporting_protobuf_1 = require("apollo-reporting-protobuf");
7
+ const types_1 = require("./datasources/types");
8
+ const query_planner_1 = require("@apollo/query-planner");
8
9
  const deepMerge_1 = require("./utilities/deepMerge");
9
- const graphql_2 = require("./utilities/graphql");
10
+ const array_1 = require("./utilities/array");
11
+ const api_1 = require("@opentelemetry/api");
12
+ const opentelemetry_1 = require("./utilities/opentelemetry");
13
+ const federation_internals_1 = require("@apollo/federation-internals");
10
14
  async function executeQueryPlan(queryPlan, serviceMap, requestContext, operationContext) {
11
- const errors = [];
12
- const context = {
13
- queryPlan,
14
- operationContext,
15
- serviceMap,
16
- requestContext,
17
- errors,
18
- };
19
- let data = Object.create(null);
20
- const captureTraces = !!(requestContext.metrics && requestContext.metrics.captureTraces);
21
- if (queryPlan.node) {
22
- const traceNode = await executeNode(context, queryPlan.node, data, [], captureTraces);
23
- if (captureTraces) {
24
- requestContext.metrics.queryPlanTrace = traceNode;
15
+ const logger = requestContext.logger || console;
16
+ return opentelemetry_1.tracer.startActiveSpan(opentelemetry_1.OpenTelemetrySpanNames.EXECUTE, async (span) => {
17
+ try {
18
+ const errors = [];
19
+ const context = {
20
+ queryPlan,
21
+ operationContext,
22
+ serviceMap,
23
+ requestContext,
24
+ errors,
25
+ };
26
+ let data = Object.create(null);
27
+ const captureTraces = !!(requestContext.metrics && requestContext.metrics.captureTraces);
28
+ if (queryPlan.node) {
29
+ const traceNode = await executeNode(context, queryPlan.node, data, [], captureTraces);
30
+ if (captureTraces) {
31
+ requestContext.metrics.queryPlanTrace = traceNode;
32
+ }
33
+ }
34
+ const result = await opentelemetry_1.tracer.startActiveSpan(opentelemetry_1.OpenTelemetrySpanNames.POST_PROCESSING, async (span) => {
35
+ try {
36
+ const schema = operationContext.schema;
37
+ ({ data } = await (0, graphql_1.execute)({
38
+ schema,
39
+ document: {
40
+ kind: graphql_1.Kind.DOCUMENT,
41
+ definitions: [
42
+ operationContext.operation,
43
+ ...Object.values(operationContext.fragments),
44
+ ],
45
+ },
46
+ rootValue: data,
47
+ variableValues: requestContext.request.variables,
48
+ fieldResolver: exports.defaultFieldResolverWithAliasSupport,
49
+ }));
50
+ }
51
+ catch (error) {
52
+ span.setStatus({ code: api_1.SpanStatusCode.ERROR });
53
+ if (error instanceof graphql_1.GraphQLError) {
54
+ return { errors: [error] };
55
+ }
56
+ else if (error instanceof Error) {
57
+ return {
58
+ errors: [
59
+ new graphql_1.GraphQLError(error.message, undefined, undefined, undefined, undefined, error)
60
+ ]
61
+ };
62
+ }
63
+ else {
64
+ logger.error("Unexpected error during query plan execution: " + error);
65
+ return {
66
+ errors: [
67
+ new graphql_1.GraphQLError("Unexpected error during query plan execution")
68
+ ]
69
+ };
70
+ }
71
+ }
72
+ finally {
73
+ span.end();
74
+ }
75
+ if (errors.length > 0) {
76
+ span.setStatus({ code: api_1.SpanStatusCode.ERROR });
77
+ }
78
+ return errors.length === 0 ? { data } : { errors, data };
79
+ });
80
+ if (result.errors) {
81
+ span.setStatus({ code: api_1.SpanStatusCode.ERROR });
82
+ }
83
+ return result;
25
84
  }
26
- }
27
- try {
28
- ({ data } = await graphql_1.execute({
29
- schema: operationContext.schema,
30
- document: {
31
- kind: graphql_1.Kind.DOCUMENT,
32
- definitions: [
33
- operationContext.operation,
34
- ...Object.values(operationContext.fragments),
35
- ],
36
- },
37
- rootValue: data,
38
- variableValues: requestContext.request.variables,
39
- fieldResolver: exports.defaultFieldResolverWithAliasSupport,
40
- }));
41
- }
42
- catch (error) {
43
- return { errors: [error] };
44
- }
45
- return errors.length === 0 ? { data } : { errors, data };
85
+ catch (err) {
86
+ span.setStatus({ code: api_1.SpanStatusCode.ERROR });
87
+ throw err;
88
+ }
89
+ finally {
90
+ span.end();
91
+ }
92
+ });
46
93
  }
47
94
  exports.executeQueryPlan = executeQueryPlan;
48
95
  async function executeNode(context, node, results, path, captureTraces) {
49
96
  if (!results) {
50
- return new apollo_engine_reporting_protobuf_1.Trace.QueryPlanNode();
97
+ return new apollo_reporting_protobuf_1.Trace.QueryPlanNode();
51
98
  }
52
99
  switch (node.kind) {
53
100
  case 'Sequence': {
54
- const traceNode = new apollo_engine_reporting_protobuf_1.Trace.QueryPlanNode.SequenceNode();
101
+ const traceNode = new apollo_reporting_protobuf_1.Trace.QueryPlanNode.SequenceNode();
55
102
  for (const childNode of node.nodes) {
56
103
  const childTraceNode = await executeNode(context, childNode, results, path, captureTraces);
57
104
  traceNode.nodes.push(childTraceNode);
58
105
  }
59
- return new apollo_engine_reporting_protobuf_1.Trace.QueryPlanNode({ sequence: traceNode });
106
+ return new apollo_reporting_protobuf_1.Trace.QueryPlanNode({ sequence: traceNode });
60
107
  }
61
108
  case 'Parallel': {
62
109
  const childTraceNodes = await Promise.all(node.nodes.map(async (childNode) => executeNode(context, childNode, results, path, captureTraces)));
63
- return new apollo_engine_reporting_protobuf_1.Trace.QueryPlanNode({
64
- parallel: new apollo_engine_reporting_protobuf_1.Trace.QueryPlanNode.ParallelNode({
110
+ return new apollo_reporting_protobuf_1.Trace.QueryPlanNode({
111
+ parallel: new apollo_reporting_protobuf_1.Trace.QueryPlanNode.ParallelNode({
65
112
  nodes: childTraceNodes,
66
113
  }),
67
114
  });
68
115
  }
69
116
  case 'Flatten': {
70
- return new apollo_engine_reporting_protobuf_1.Trace.QueryPlanNode({
71
- flatten: new apollo_engine_reporting_protobuf_1.Trace.QueryPlanNode.FlattenNode({
72
- responsePath: node.path.map(id => new apollo_engine_reporting_protobuf_1.Trace.QueryPlanNode.ResponsePathElement(typeof id === 'string' ? { fieldName: id } : { index: id })),
117
+ return new apollo_reporting_protobuf_1.Trace.QueryPlanNode({
118
+ flatten: new apollo_reporting_protobuf_1.Trace.QueryPlanNode.FlattenNode({
119
+ responsePath: node.path.map(id => new apollo_reporting_protobuf_1.Trace.QueryPlanNode.ResponsePathElement(typeof id === 'string' ? { fieldName: id } : { index: id })),
73
120
  node: await executeNode(context, node.node, flattenResultsAtPath(results, node.path), [...path, ...node.path], captureTraces),
74
121
  }),
75
122
  });
76
123
  }
77
124
  case 'Fetch': {
78
- const traceNode = new apollo_engine_reporting_protobuf_1.Trace.QueryPlanNode.FetchNode({
125
+ const traceNode = new apollo_reporting_protobuf_1.Trace.QueryPlanNode.FetchNode({
79
126
  serviceName: node.serviceName,
80
127
  });
81
128
  try {
@@ -84,65 +131,84 @@ async function executeNode(context, node, results, path, captureTraces) {
84
131
  catch (error) {
85
132
  context.errors.push(error);
86
133
  }
87
- return new apollo_engine_reporting_protobuf_1.Trace.QueryPlanNode({ fetch: traceNode });
134
+ return new apollo_reporting_protobuf_1.Trace.QueryPlanNode({ fetch: traceNode });
88
135
  }
89
136
  }
90
137
  }
91
138
  async function executeFetch(context, fetch, results, _path, traceNode) {
92
139
  const logger = context.requestContext.logger || console;
93
140
  const service = context.serviceMap[fetch.serviceName];
94
- if (!service) {
95
- throw new Error(`Couldn't find service with name "${fetch.serviceName}"`);
96
- }
97
- const entities = Array.isArray(results) ? results : [results];
98
- if (entities.length < 1)
99
- return;
100
- let variables = Object.create(null);
101
- if (fetch.variableUsages) {
102
- for (const variableName of Object.keys(fetch.variableUsages)) {
103
- const providedVariables = context.requestContext.request.variables;
104
- if (providedVariables &&
105
- typeof providedVariables[variableName] !== 'undefined') {
106
- variables[variableName] = providedVariables[variableName];
141
+ return opentelemetry_1.tracer.startActiveSpan(opentelemetry_1.OpenTelemetrySpanNames.FETCH, { attributes: { service: fetch.serviceName } }, async (span) => {
142
+ try {
143
+ if (!service) {
144
+ throw new Error(`Couldn't find service with name "${fetch.serviceName}"`);
107
145
  }
108
- }
109
- }
110
- if (!fetch.requires) {
111
- const dataReceivedFromService = await sendOperation(context, fetch.source, variables);
112
- for (const entity of entities) {
113
- deepMerge_1.deepMerge(entity, dataReceivedFromService);
114
- }
115
- }
116
- else {
117
- const requires = fetch.requires;
118
- const representations = [];
119
- const representationToEntity = [];
120
- entities.forEach((entity, index) => {
121
- const representation = executeSelectionSet(entity, requires);
122
- if (representation && representation[graphql_1.TypeNameMetaFieldDef.name]) {
123
- representations.push(representation);
124
- representationToEntity.push(index);
146
+ let entities;
147
+ if (Array.isArray(results)) {
148
+ entities = results.filter(array_1.isNotNullOrUndefined);
149
+ }
150
+ else {
151
+ entities = [results];
152
+ }
153
+ if (entities.length < 1)
154
+ return;
155
+ const variables = Object.create(null);
156
+ if (fetch.variableUsages) {
157
+ for (const variableName of fetch.variableUsages) {
158
+ const providedVariables = context.requestContext.request.variables;
159
+ if (providedVariables &&
160
+ typeof providedVariables[variableName] !== 'undefined') {
161
+ variables[variableName] = providedVariables[variableName];
162
+ }
163
+ }
164
+ }
165
+ if (!fetch.requires) {
166
+ const dataReceivedFromService = await sendOperation(context, fetch.operation, variables);
167
+ for (const entity of entities) {
168
+ (0, deepMerge_1.deepMerge)(entity, dataReceivedFromService);
169
+ }
170
+ }
171
+ else {
172
+ const requires = fetch.requires;
173
+ const representations = [];
174
+ const representationToEntity = [];
175
+ entities.forEach((entity, index) => {
176
+ const representation = executeSelectionSet(context.operationContext, entity, requires);
177
+ if (representation && representation[graphql_1.TypeNameMetaFieldDef.name]) {
178
+ representations.push(representation);
179
+ representationToEntity.push(index);
180
+ }
181
+ });
182
+ if (representations.length < 1)
183
+ return;
184
+ if ('representations' in variables) {
185
+ throw new Error(`Variables cannot contain key "representations"`);
186
+ }
187
+ const dataReceivedFromService = await sendOperation(context, fetch.operation, { ...variables, representations });
188
+ if (!dataReceivedFromService) {
189
+ return;
190
+ }
191
+ if (!(dataReceivedFromService._entities &&
192
+ Array.isArray(dataReceivedFromService._entities))) {
193
+ throw new Error(`Expected "data._entities" in response to be an array`);
194
+ }
195
+ const receivedEntities = dataReceivedFromService._entities;
196
+ if (receivedEntities.length !== representations.length) {
197
+ throw new Error(`Expected "data._entities" to contain ${representations.length} elements`);
198
+ }
199
+ for (let i = 0; i < entities.length; i++) {
200
+ (0, deepMerge_1.deepMerge)(entities[representationToEntity[i]], receivedEntities[i]);
201
+ }
125
202
  }
126
- });
127
- if ('representations' in variables) {
128
- throw new Error(`Variables cannot contain key "representations"`);
129
- }
130
- const dataReceivedFromService = await sendOperation(context, fetch.source, { ...variables, representations });
131
- if (!dataReceivedFromService) {
132
- return;
133
- }
134
- if (!(dataReceivedFromService._entities &&
135
- Array.isArray(dataReceivedFromService._entities))) {
136
- throw new Error(`Expected "data._entities" in response to be an array`);
137
203
  }
138
- const receivedEntities = dataReceivedFromService._entities;
139
- if (receivedEntities.length !== representations.length) {
140
- throw new Error(`Expected "data._entities" to contain ${representations.length} elements`);
204
+ catch (err) {
205
+ span.setStatus({ code: api_1.SpanStatusCode.ERROR });
206
+ throw err;
141
207
  }
142
- for (let i = 0; i < entities.length; i++) {
143
- deepMerge_1.deepMerge(entities[representationToEntity[i]], receivedEntities[i]);
208
+ finally {
209
+ span.end();
144
210
  }
145
- }
211
+ });
146
212
  async function sendOperation(context, source, variables) {
147
213
  var _a, _b;
148
214
  let http;
@@ -157,15 +223,17 @@ async function executeFetch(context, fetch, results, _path, traceNode) {
157
223
  traceNode.sentTime = dateToProtoTimestamp(new Date());
158
224
  }
159
225
  const response = await service.process({
226
+ kind: types_1.GraphQLDataSourceRequestKind.INCOMING_OPERATION,
160
227
  request: {
161
228
  query: source,
162
229
  variables,
163
230
  http,
164
231
  },
232
+ incomingRequestContext: context.requestContext,
165
233
  context: context.requestContext.context,
166
234
  });
167
235
  if (response.errors) {
168
- const errors = response.errors.map(error => downstreamServiceError(error.message, fetch.serviceName, source, variables, error.extensions, error.path));
236
+ const errors = response.errors.map((error) => downstreamServiceError(error, fetch.serviceName));
169
237
  context.errors.push(...errors);
170
238
  }
171
239
  if (traceNode) {
@@ -183,7 +251,7 @@ async function executeFetch(context, fetch, results, _path, traceNode) {
183
251
  }
184
252
  if (traceBuffer) {
185
253
  try {
186
- const trace = apollo_engine_reporting_protobuf_1.Trace.decode(traceBuffer);
254
+ const trace = apollo_reporting_protobuf_1.Trace.decode(traceBuffer);
187
255
  traceNode.trace = trace;
188
256
  }
189
257
  catch (err) {
@@ -192,7 +260,7 @@ async function executeFetch(context, fetch, results, _path, traceNode) {
192
260
  }
193
261
  }
194
262
  if (traceNode.trace) {
195
- const rootTypeName = federation_1.defaultRootOperationNameLookup[context.operationContext.operation.operation];
263
+ const rootTypeName = (0, federation_internals_1.defaultRootName)(context.operationContext.operation.operation);
196
264
  (_b = (_a = traceNode.trace.root) === null || _a === void 0 ? void 0 : _a.child) === null || _b === void 0 ? void 0 : _b.forEach((child) => {
197
265
  child.parentType = rootTypeName;
198
266
  });
@@ -203,24 +271,26 @@ async function executeFetch(context, fetch, results, _path, traceNode) {
203
271
  return response.data;
204
272
  }
205
273
  }
206
- function executeSelectionSet(source, selectionSet) {
274
+ function executeSelectionSet(operationContext, source, selections) {
207
275
  if (source === null) {
208
276
  return null;
209
277
  }
210
278
  const result = Object.create(null);
211
- for (const selection of selectionSet.selections) {
279
+ for (const selection of selections) {
212
280
  switch (selection.kind) {
213
281
  case graphql_1.Kind.FIELD:
214
- const responseName = graphql_2.getResponseName(selection);
215
- const selectionSet = selection.selectionSet;
282
+ const responseName = (0, query_planner_1.getResponseName)(selection);
283
+ const selections = selection.selections;
216
284
  if (typeof source[responseName] === 'undefined') {
217
285
  throw new Error(`Field "${responseName}" was not found in response.`);
218
286
  }
219
287
  if (Array.isArray(source[responseName])) {
220
- result[responseName] = source[responseName].map((value) => selectionSet ? executeSelectionSet(value, selectionSet) : value);
288
+ result[responseName] = source[responseName].map((value) => selections
289
+ ? executeSelectionSet(operationContext, value, selections)
290
+ : value);
221
291
  }
222
- else if (selectionSet) {
223
- result[responseName] = executeSelectionSet(source[responseName], selectionSet);
292
+ else if (selections) {
293
+ result[responseName] = executeSelectionSet(operationContext, source[responseName], selections);
224
294
  }
225
295
  else {
226
296
  result[responseName] = source[responseName];
@@ -232,14 +302,31 @@ function executeSelectionSet(source, selectionSet) {
232
302
  const typename = source && source['__typename'];
233
303
  if (!typename)
234
304
  continue;
235
- if (typename === selection.typeCondition.name.value) {
236
- deepMerge_1.deepMerge(result, executeSelectionSet(source, selection.selectionSet));
305
+ if (doesTypeConditionMatch(operationContext.schema, selection.typeCondition, typename)) {
306
+ (0, deepMerge_1.deepMerge)(result, executeSelectionSet(operationContext, source, selection.selections));
237
307
  }
238
308
  break;
239
309
  }
240
310
  }
241
311
  return result;
242
312
  }
313
+ function doesTypeConditionMatch(schema, typeCondition, typename) {
314
+ if (typeCondition === typename) {
315
+ return true;
316
+ }
317
+ const type = schema.getType(typename);
318
+ if (!type) {
319
+ return false;
320
+ }
321
+ const conditionalType = schema.getType(typeCondition);
322
+ if (!conditionalType) {
323
+ return false;
324
+ }
325
+ if ((0, graphql_1.isAbstractType)(conditionalType)) {
326
+ return schema.isSubType(conditionalType, type);
327
+ }
328
+ return false;
329
+ }
243
330
  function flattenResultsAtPath(value, path) {
244
331
  if (path.length === 0)
245
332
  return value;
@@ -253,20 +340,19 @@ function flattenResultsAtPath(value, path) {
253
340
  return flattenResultsAtPath(value[current], rest);
254
341
  }
255
342
  }
256
- function downstreamServiceError(message, serviceName, query, variables, extensions, path) {
343
+ function downstreamServiceError(originalError, serviceName) {
344
+ let { message, extensions } = originalError;
257
345
  if (!message) {
258
346
  message = `Error while fetching subquery from service "${serviceName}"`;
259
347
  }
260
348
  extensions = {
261
349
  code: 'DOWNSTREAM_SERVICE_ERROR',
262
350
  serviceName,
263
- query,
264
- variables,
265
351
  ...extensions,
266
352
  };
267
- return new graphql_1.GraphQLError(message, undefined, undefined, undefined, path, undefined, extensions);
353
+ return new graphql_1.GraphQLError(message, undefined, undefined, undefined, undefined, originalError, extensions);
268
354
  }
269
- exports.defaultFieldResolverWithAliasSupport = function (source, args, contextValue, info) {
355
+ const defaultFieldResolverWithAliasSupport = function (source, args, contextValue, info) {
270
356
  if (typeof source === 'object' || typeof source === 'function') {
271
357
  const property = source[info.path.key];
272
358
  if (typeof property === 'function') {
@@ -275,13 +361,14 @@ exports.defaultFieldResolverWithAliasSupport = function (source, args, contextVa
275
361
  return property;
276
362
  }
277
363
  };
364
+ exports.defaultFieldResolverWithAliasSupport = defaultFieldResolverWithAliasSupport;
278
365
  function durationHrTimeToNanos(hrtime) {
279
366
  return hrtime[0] * 1e9 + hrtime[1];
280
367
  }
281
368
  function dateToProtoTimestamp(date) {
282
369
  const totalMillis = +date;
283
370
  const millis = totalMillis % 1000;
284
- return new apollo_engine_reporting_protobuf_1.google.protobuf.Timestamp({
371
+ return new apollo_reporting_protobuf_1.google.protobuf.Timestamp({
285
372
  seconds: (totalMillis - millis) / 1000,
286
373
  nanos: millis * 1e6,
287
374
  });
@@ -1 +1 @@
1
- {"version":3,"file":"executeQueryPlan.js","sourceRoot":"","sources":["../src/executeQueryPlan.ts"],"names":[],"mappings":";;;AAIA,yDAA4C;AAC5C,qCAOiB;AACjB,uFAAiE;AACjE,mDAAoE;AASpE,qDAAkD;AAClD,iDAAsD;AAgB/C,KAAK,UAAU,gBAAgB,CACpC,SAAoB,EACpB,UAAsB,EACtB,cAA+C,EAC/C,gBAAkC;IAElC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,MAAM,OAAO,GAA+B;QAC1C,SAAS;QACT,gBAAgB;QAChB,UAAU;QACV,cAAc;QACd,MAAM;KACP,CAAC;IAEF,IAAI,IAAI,GAAiC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,aAAa,GAAG,CAAC,CAAC,CACtB,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,aAAa,CAC/D,CAAC;IAEF,IAAI,SAAS,CAAC,IAAI,EAAE;QAClB,MAAM,SAAS,GAAG,MAAM,WAAW,CACjC,OAAO,EACP,SAAS,CAAC,IAAI,EACd,IAAK,EACL,EAAE,EACF,aAAa,CACd,CAAC;QACF,IAAI,aAAa,EAAE;YACjB,cAAc,CAAC,OAAQ,CAAC,cAAc,GAAG,SAAS,CAAC;SACpD;KACF;IAMD,IAAI;QACF,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,iBAAO,CAAC;YACxB,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,QAAQ,EAAE;gBACR,IAAI,EAAE,cAAI,CAAC,QAAQ;gBACnB,WAAW,EAAE;oBACX,gBAAgB,CAAC,SAAS;oBAC1B,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC;iBAC7C;aACF;YACD,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;YAChD,aAAa,EAAE,4CAAoC;SACpD,CAAC,CAAC,CAAC;KACL;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KAC5B;IAED,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC3D,CAAC;AA1DD,4CA0DC;AAMD,KAAK,UAAU,WAAW,CACxB,OAAmC,EACnC,IAAc,EACd,OAAgC,EAChC,IAAkB,EAClB,aAAsB;IAEtB,IAAI,CAAC,OAAO,EAAE;QAOZ,OAAO,IAAI,wCAAK,CAAC,aAAa,EAAE,CAAC;KAClC;IAED,QAAQ,IAAI,CAAC,IAAI,EAAE;QACjB,KAAK,UAAU,CAAC,CAAC;YACf,MAAM,SAAS,GAAG,IAAI,wCAAK,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;YACzD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE;gBAClC,MAAM,cAAc,GAAG,MAAM,WAAW,CACtC,OAAO,EACP,SAAS,EACT,OAAO,EACP,IAAI,EACJ,aAAa,CACd,CAAC;gBACF,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,cAAe,CAAC,CAAC;aACvC;YACD,OAAO,IAAI,wCAAK,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;SACzD;QACD,KAAK,UAAU,CAAC,CAAC;YACf,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE,CAC/B,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,CAC9D,CACF,CAAC;YACF,OAAO,IAAI,wCAAK,CAAC,aAAa,CAAC;gBAC7B,QAAQ,EAAE,IAAI,wCAAK,CAAC,aAAa,CAAC,YAAY,CAAC;oBAC7C,KAAK,EAAE,eAAe;iBACvB,CAAC;aACH,CAAC,CAAC;SACJ;QACD,KAAK,SAAS,CAAC,CAAC;YACd,OAAO,IAAI,wCAAK,CAAC,aAAa,CAAC;gBAC7B,OAAO,EAAE,IAAI,wCAAK,CAAC,aAAa,CAAC,WAAW,CAAC;oBAC3C,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CACzB,EAAE,CAAC,EAAE,CACH,IAAI,wCAAK,CAAC,aAAa,CAAC,mBAAmB,CACzC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3D,CACJ;oBACD,IAAI,EAAE,MAAM,WAAW,CACrB,OAAO,EACP,IAAI,CAAC,IAAI,EACT,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EACxC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EACvB,aAAa,CACd;iBACF,CAAC;aACH,CAAC,CAAC;SACJ;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,MAAM,SAAS,GAAG,IAAI,wCAAK,CAAC,aAAa,CAAC,SAAS,CAAC;gBAClD,WAAW,EAAE,IAAI,CAAC,WAAW;aAE9B,CAAC,CAAC;YACH,IAAI;gBACF,MAAM,YAAY,CAChB,OAAO,EACP,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACjC,CAAC;aACH;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5B;YACD,OAAO,IAAI,wCAAK,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;SACtD;KACF;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,OAAmC,EACnC,KAAgB,EAChB,OAAgC,EAChC,KAAmB,EACnB,SAA+C;IAE/C,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,IAAI,OAAO,CAAC;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;KAC3E;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO;IAEhC,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,cAAc,EAAE;QACxB,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;YAC5D,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC;YACnE,IACE,iBAAiB;gBACjB,OAAO,iBAAiB,CAAC,YAAY,CAAC,KAAK,WAAW,EACtD;gBACA,SAAS,CAAC,YAAY,CAAC,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;aAC3D;SACF;KACF;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QACnB,MAAM,uBAAuB,GAAG,MAAM,aAAa,CACjD,OAAO,EACP,KAAK,CAAC,MAAM,EACZ,SAAS,CACV,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;YAC7B,qBAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;SAC5C;KACF;SAAM;QACL,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEhC,MAAM,eAAe,GAAgB,EAAE,CAAC;QACxC,MAAM,sBAAsB,GAAa,EAAE,CAAC;QAE5C,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACjC,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7D,IAAI,cAAc,IAAI,cAAc,CAAC,8BAAoB,CAAC,IAAI,CAAC,EAAE;gBAC/D,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACrC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,iBAAiB,IAAI,SAAS,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACnE;QAED,MAAM,uBAAuB,GAAG,MAAM,aAAa,CACjD,OAAO,EACP,KAAK,CAAC,MAAM,EACZ,EAAE,GAAG,SAAS,EAAE,eAAe,EAAE,CAClC,CAAC;QAEF,IAAI,CAAC,uBAAuB,EAAE;YAC5B,OAAO;SACR;QAED,IACE,CAAC,CACC,uBAAuB,CAAC,SAAS;YACjC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,SAAS,CAAC,CACjD,EACD;YACA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACzE;QAED,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,SAAS,CAAC;QAE3D,IAAI,gBAAgB,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,EAAE;YACtD,MAAM,IAAI,KAAK,CACb,wCAAwC,eAAe,CAAC,MAAM,WAAW,CAC1E,CAAC;SACH;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,qBAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;SACrE;KACF;IAED,KAAK,UAAU,aAAa,CAC1B,OAAmC,EACnC,MAAc,EACd,SAA8B;;QAI9B,IAAI,IAAS,CAAC;QAKd,IAAI,SAAS,EAAE;YACb,IAAI,GAAG;gBACL,OAAO,EAAE,IAAI,2BAAO,CAAC,EAAE,iCAAiC,EAAE,MAAM,EAAE,CAAC;aACpE,CAAC;YACF,IACE,OAAO,CAAC,cAAc,CAAC,OAAO;gBAC9B,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,EAC1C;gBACA,SAAS,CAAC,cAAc,GAAG,qBAAqB,CAC9C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAC3D,CAAC;aACH;YACD,SAAS,CAAC,QAAQ,GAAG,oBAAoB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SACvD;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YACrC,OAAO,EAAE;gBACP,KAAK,EAAE,MAAM;gBACb,SAAS;gBACT,IAAI;aACL;YACD,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,OAAO;SACxC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACzC,sBAAsB,CACpB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,WAAW,EACjB,MAAM,EACN,SAAS,EACT,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,IAAI,CACX,CACF,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;SAChC;QAID,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,YAAY,GAAG,oBAAoB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAE1D,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE;gBACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;gBAE7C,IAAI,WAA+B,CAAC;gBACpC,IAAI,kBAAkB,GAAG,KAAK,CAAC;gBAC/B,IAAI;oBAGF,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;iBAClD;gBAAC,OAAO,GAAG,EAAE;oBACZ,MAAM,CAAC,KAAK,CACV,kDAAkD,KAAK,CAAC,WAAW,KAAK,GAAG,EAAE,CAC9E,CAAC;oBACF,kBAAkB,GAAG,IAAI,CAAC;iBAC3B;gBAED,IAAI,WAAW,EAAE;oBACf,IAAI;wBACF,MAAM,KAAK,GAAG,wCAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;wBACxC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;qBACzB;oBAAC,OAAO,GAAG,EAAE;wBACZ,MAAM,CAAC,KAAK,CACV,oDAAoD,KAAK,CAAC,WAAW,KAAK,GAAG,EAAE,CAChF,CAAC;wBACF,kBAAkB,GAAG,IAAI,CAAC;qBAC3B;iBACF;gBACD,IAAI,SAAS,CAAC,KAAK,EAAE;oBAKnB,MAAM,YAAY,GAChB,2CAA8B,CAC5B,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAC7C,CAAC;oBACJ,YAAA,SAAS,CAAC,KAAK,CAAC,IAAI,0CAAE,KAAK,0CAAE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC7C,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC;oBAClC,CAAC,EAAE;iBACJ;gBACD,SAAS,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;aACnD;SACF;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAOD,SAAS,mBAAmB,CAC1B,MAAkC,EAClC,YAA8B;IAK9B,IAAI,MAAM,KAAK,IAAI,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,MAAM,GAAwB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAExD,KAAK,MAAM,SAAS,IAAI,YAAY,CAAC,UAAU,EAAE;QAC/C,QAAQ,SAAS,CAAC,IAAI,EAAE;YACtB,KAAK,cAAI,CAAC,KAAK;gBACb,MAAM,YAAY,GAAG,yBAAe,CAAC,SAAS,CAAC,CAAC;gBAChD,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;gBAE5C,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,WAAW,EAAE;oBAC/C,MAAM,IAAI,KAAK,CAAC,UAAU,YAAY,8BAA8B,CAAC,CAAC;iBACvE;gBACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE;oBACvC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAC7D,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAChE,CAAC;iBACH;qBAAM,IAAI,YAAY,EAAE;oBACvB,MAAM,CAAC,YAAY,CAAC,GAAG,mBAAmB,CACxC,MAAM,CAAC,YAAY,CAAC,EACpB,YAAY,CACb,CAAC;iBACH;qBAAM;oBACL,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;iBAC7C;gBACD,MAAM;YACR,KAAK,cAAI,CAAC,eAAe;gBACvB,IAAI,CAAC,SAAS,CAAC,aAAa;oBAAE,SAAS;gBAEvC,MAAM,QAAQ,GAAG,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;gBAChD,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBAExB,IAAI,QAAQ,KAAK,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE;oBACnD,qBAAS,CACP,MAAM,EACN,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CACpD,CAAC;iBACH;gBACD,MAAM;SACT;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAU,EAAE,IAAkB;IAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAExD,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,IAAI,OAAO,KAAK,GAAG,EAAE;QACnB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;KAC7E;SAAM;QACL,OAAO,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;KACnD;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAA2B,EAC3B,WAAmB,EACnB,KAAa,EACb,SAA+B,EAC/B,UAAgC,EAChC,IAAiD;IAEjD,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,GAAG,+CAA+C,WAAW,GAAG,CAAC;KACzE;IACD,UAAU,GAAG;QACX,IAAI,EAAE,0BAA0B;QAGhC,WAAW;QACX,KAAK;QACL,SAAS;QACT,GAAG,UAAU;KACd,CAAC;IACF,OAAO,IAAI,sBAAY,CACrB,OAAO,EACP,SAAS,EACT,SAAS,EACT,SAAS,EACT,IAAI,EACJ,SAAS,EACT,UAAU,CACX,CAAC;AACJ,CAAC;AAEY,QAAA,oCAAoC,GAG7C,UAAS,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI;IAE3C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;QAG9D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;YAClC,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;SACzD;QACD,OAAO,QAAQ,CAAC;KACjB;AACH,CAAC,CAAC;AAgBF,SAAS,qBAAqB,CAAC,MAAwB;IACrD,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAGD,SAAS,oBAAoB,CAAC,IAAU;IACtC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC;IAC1B,MAAM,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IAClC,OAAO,IAAI,yCAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QACnC,OAAO,EAAE,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,IAAI;QACtC,KAAK,EAAE,MAAM,GAAG,GAAG;KACpB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"executeQueryPlan.js","sourceRoot":"","sources":["../src/executeQueryPlan.ts"],"names":[],"mappings":"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"}