@wundergraph/composition 0.46.0 → 0.46.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.
Files changed (58) hide show
  1. package/dist/errors/errors.d.ts +1 -1
  2. package/dist/index.d.ts +4 -1
  3. package/dist/index.js +4 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/resolvability-graph/constants/string-constants.d.ts +8 -0
  6. package/dist/resolvability-graph/constants/string-constants.js +12 -0
  7. package/dist/resolvability-graph/constants/string-constants.js.map +1 -0
  8. package/dist/resolvability-graph/graph-nodes.d.ts +15 -14
  9. package/dist/resolvability-graph/graph-nodes.js +8 -8
  10. package/dist/resolvability-graph/graph-nodes.js.map +1 -1
  11. package/dist/resolvability-graph/graph.d.ts +27 -21
  12. package/dist/resolvability-graph/graph.js +284 -286
  13. package/dist/resolvability-graph/graph.js.map +1 -1
  14. package/dist/resolvability-graph/node-resolution-data/node-resolution-data.d.ts +16 -0
  15. package/dist/resolvability-graph/node-resolution-data/node-resolution-data.js +62 -0
  16. package/dist/resolvability-graph/node-resolution-data/node-resolution-data.js.map +1 -0
  17. package/dist/resolvability-graph/node-resolution-data/types/params.d.ts +9 -0
  18. package/dist/resolvability-graph/node-resolution-data/types/params.js +3 -0
  19. package/dist/resolvability-graph/node-resolution-data/types/params.js.map +1 -0
  20. package/dist/resolvability-graph/types/params.d.ts +22 -0
  21. package/dist/resolvability-graph/types/params.js +3 -0
  22. package/dist/resolvability-graph/types/params.js.map +1 -0
  23. package/dist/resolvability-graph/types/types.d.ts +23 -0
  24. package/dist/resolvability-graph/types/types.js +3 -0
  25. package/dist/resolvability-graph/types/types.js.map +1 -0
  26. package/dist/resolvability-graph/utils/types/params.d.ts +50 -0
  27. package/dist/resolvability-graph/utils/types/params.js +3 -0
  28. package/dist/resolvability-graph/utils/types/params.js.map +1 -0
  29. package/dist/resolvability-graph/utils/types/types.d.ts +16 -0
  30. package/dist/resolvability-graph/utils/types/types.js +3 -0
  31. package/dist/resolvability-graph/utils/types/types.js.map +1 -0
  32. package/dist/resolvability-graph/utils/utils.d.ts +19 -0
  33. package/dist/resolvability-graph/utils/utils.js +230 -0
  34. package/dist/resolvability-graph/utils/utils.js.map +1 -0
  35. package/dist/resolvability-graph/walker/entity-walker/entity-walker.d.ts +21 -0
  36. package/dist/resolvability-graph/walker/entity-walker/entity-walker.js +194 -0
  37. package/dist/resolvability-graph/walker/entity-walker/entity-walker.js.map +1 -0
  38. package/dist/resolvability-graph/walker/entity-walker/types/params.d.ts +40 -0
  39. package/dist/resolvability-graph/walker/entity-walker/types/params.js +3 -0
  40. package/dist/resolvability-graph/walker/entity-walker/types/params.js.map +1 -0
  41. package/dist/resolvability-graph/walker/root-field-walkers/root-field-walker.d.ts +23 -0
  42. package/dist/resolvability-graph/walker/root-field-walkers/root-field-walker.js +250 -0
  43. package/dist/resolvability-graph/walker/root-field-walkers/root-field-walker.js.map +1 -0
  44. package/dist/resolvability-graph/walker/root-field-walkers/types/params.d.ts +38 -0
  45. package/dist/resolvability-graph/walker/root-field-walkers/types/params.js +3 -0
  46. package/dist/resolvability-graph/walker/root-field-walkers/types/params.js.map +1 -0
  47. package/dist/tsconfig.tsbuildinfo +1 -1
  48. package/dist/utils/composition-version.js +1 -1
  49. package/dist/utils/utils.d.ts +1 -1
  50. package/dist/utils/utils.js +2 -2
  51. package/dist/utils/utils.js.map +1 -1
  52. package/dist/v1/federation/federation-factory.js +4 -4
  53. package/dist/v1/federation/federation-factory.js.map +1 -1
  54. package/dist/v1/normalization/normalization-factory.js +1 -1
  55. package/package.json +2 -2
  56. package/dist/resolvability-graph/utils.d.ts +0 -65
  57. package/dist/resolvability-graph/utils.js +0 -143
  58. package/dist/resolvability-graph/utils.js.map +0 -1
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityWalker = void 0;
4
+ const node_resolution_data_1 = require("../../node-resolution-data/node-resolution-data");
5
+ const utils_1 = require("../../../utils/utils");
6
+ class EntityWalker {
7
+ // Prevents registering the same entity node before there has been a chance to validate it.
8
+ encounteredEntityNodeNames;
9
+ index;
10
+ resDataByNodeName;
11
+ resDataByRelativeOriginPath;
12
+ selectionPathByEntityNodeName = new Map();
13
+ // The subgraph name is so the propagated errors accurately reflect which subgraph cannot reach the node.
14
+ subgraphNameByUnresolvablePath;
15
+ visitedEntities;
16
+ relativeOriginPaths;
17
+ constructor({ encounteredEntityNodeNames, index, relativeOriginPaths, resDataByNodeName, resDataByRelativeOriginPath, subgraphNameByUnresolvablePath, visitedEntities, }) {
18
+ this.encounteredEntityNodeNames = encounteredEntityNodeNames;
19
+ this.index = index;
20
+ this.relativeOriginPaths = relativeOriginPaths;
21
+ this.resDataByNodeName = resDataByNodeName;
22
+ this.resDataByRelativeOriginPath = resDataByRelativeOriginPath;
23
+ this.visitedEntities = visitedEntities;
24
+ this.subgraphNameByUnresolvablePath = subgraphNameByUnresolvablePath;
25
+ }
26
+ getNodeResolutionData({ node: { fieldDataByName, nodeName, typeName }, selectionPath, }) {
27
+ const dataByNodeName = (0, utils_1.getValueOrDefault)(this.resDataByNodeName, nodeName, () => new node_resolution_data_1.NodeResolutionData({ fieldDataByName, typeName }));
28
+ if (!this.relativeOriginPaths || this.relativeOriginPaths.size < 1) {
29
+ return (0, utils_1.getValueOrDefault)(this.resDataByRelativeOriginPath, selectionPath, () => dataByNodeName.copy());
30
+ }
31
+ let returnData = undefined;
32
+ for (const path of this.relativeOriginPaths) {
33
+ const data = (0, utils_1.getValueOrDefault)(this.resDataByRelativeOriginPath, `${path}${selectionPath}`, () => dataByNodeName.copy());
34
+ returnData ??= data;
35
+ }
36
+ return returnData;
37
+ }
38
+ visitEntityDescendantEdge({ edge, selectionPath }) {
39
+ if (edge.isInaccessible || edge.node.isInaccessible) {
40
+ return { visited: false, areDescendantsResolved: false };
41
+ }
42
+ if (edge.node.isLeaf) {
43
+ return { visited: true, areDescendantsResolved: true };
44
+ }
45
+ if (!(0, utils_1.add)(edge.visitedIndices, this.index)) {
46
+ /* This check is necessary to avoid infinite loops inexpensively.
47
+ * If the edge has been visited before, any unresolvable will be propagated by the first instance.
48
+ * Descendant paths need to be cleaned up to avoid false positives.
49
+ */
50
+ this.removeUnresolvablePaths({
51
+ selectionPath: `${selectionPath}.${edge.edgeName}`,
52
+ removeDescendantPaths: true,
53
+ });
54
+ return { visited: true, areDescendantsResolved: true, isRevisitedNode: true };
55
+ }
56
+ if (edge.node.hasEntitySiblings) {
57
+ /* This check prevents infinite loops.
58
+ * The entity is only propagated into this map after it has been assessed for resolvability.
59
+ * Consequently, only a valid node would appear here.
60
+ * */
61
+ if (this.visitedEntities.has(edge.node.nodeName) || this.encounteredEntityNodeNames.has(edge.node.nodeName)) {
62
+ return { visited: true, areDescendantsResolved: true };
63
+ }
64
+ this.encounteredEntityNodeNames.add(edge.node.nodeName);
65
+ (0, utils_1.getValueOrDefault)(this.selectionPathByEntityNodeName, edge.node.nodeName, () => `${selectionPath}.${edge.edgeName}`);
66
+ return { visited: true, areDescendantsResolved: false };
67
+ }
68
+ if (edge.node.isAbstract) {
69
+ return this.visitEntityDescendantAbstractNode({
70
+ node: edge.node,
71
+ selectionPath: `${selectionPath}.${edge.edgeName}`,
72
+ });
73
+ }
74
+ return this.visitEntityDescendantConcreteNode({
75
+ node: edge.node,
76
+ selectionPath: `${selectionPath}.${edge.edgeName}`,
77
+ });
78
+ }
79
+ visitEntityDescendantConcreteNode({ node, selectionPath }) {
80
+ if (node.headToTailEdges.size < 1) {
81
+ node.isLeaf = true;
82
+ return { visited: true, areDescendantsResolved: true };
83
+ }
84
+ const data = this.getNodeResolutionData({ node, selectionPath });
85
+ if (data.isResolved()) {
86
+ if (data.areDescendantsResolved()) {
87
+ return { visited: true, areDescendantsResolved: true };
88
+ }
89
+ }
90
+ let removeDescendantPaths = undefined;
91
+ for (const [fieldName, edge] of node.headToTailEdges) {
92
+ const { visited, areDescendantsResolved, isRevisitedNode } = this.visitEntityDescendantEdge({
93
+ edge,
94
+ selectionPath,
95
+ });
96
+ removeDescendantPaths ??= isRevisitedNode;
97
+ this.propagateVisitedField({
98
+ areDescendantsResolved,
99
+ fieldName,
100
+ data,
101
+ nodeName: node.nodeName,
102
+ selectionPath,
103
+ visited,
104
+ });
105
+ }
106
+ if (data.isResolved()) {
107
+ this.removeUnresolvablePaths({ removeDescendantPaths, selectionPath });
108
+ }
109
+ else {
110
+ this.addUnresolvablePaths({ selectionPath, subgraphName: node.subgraphName });
111
+ }
112
+ return {
113
+ visited: true,
114
+ areDescendantsResolved: data.areDescendantsResolved(),
115
+ };
116
+ }
117
+ visitEntityDescendantAbstractNode({ node, selectionPath }) {
118
+ if (node.headToTailEdges.size < 1) {
119
+ return { visited: true, areDescendantsResolved: true };
120
+ }
121
+ let resolvedDescendants = 0;
122
+ for (const edge of node.headToTailEdges.values()) {
123
+ // Propagate any one of the abstract path failures.
124
+ if (this.visitEntityDescendantEdge({ edge, selectionPath }).areDescendantsResolved) {
125
+ resolvedDescendants += 1;
126
+ }
127
+ }
128
+ return { visited: true, areDescendantsResolved: resolvedDescendants === node.headToTailEdges.size };
129
+ }
130
+ propagateVisitedField({ areDescendantsResolved, data, fieldName, nodeName, selectionPath, visited, }) {
131
+ if (!visited) {
132
+ return;
133
+ }
134
+ const dataByNodeName = (0, utils_1.getValueOrDefault)(this.resDataByNodeName, nodeName, () => data.copy());
135
+ data.addResolvedFieldName(fieldName);
136
+ dataByNodeName.addResolvedFieldName(fieldName);
137
+ if (areDescendantsResolved) {
138
+ /* Cannot propagate`areDescendantsResolved` to `dataByNodeName` because the context
139
+ * of `data` is not isolated to the graph being walked only.
140
+ */
141
+ data.resolvedDescendantNames.add(fieldName);
142
+ }
143
+ if (this.relativeOriginPaths) {
144
+ for (const originPath of this.relativeOriginPaths) {
145
+ const originData = (0, utils_1.getValueOrDefault)(this.resDataByRelativeOriginPath, `${originPath}${selectionPath}`, () => data.copy());
146
+ originData.addResolvedFieldName(fieldName);
147
+ if (areDescendantsResolved) {
148
+ originData.resolvedDescendantNames.add(fieldName);
149
+ }
150
+ }
151
+ return;
152
+ }
153
+ const originData = (0, utils_1.getValueOrDefault)(this.resDataByRelativeOriginPath, selectionPath, () => data.copy());
154
+ originData.addResolvedFieldName(fieldName);
155
+ if (areDescendantsResolved) {
156
+ originData.resolvedDescendantNames.add(fieldName);
157
+ }
158
+ }
159
+ addUnresolvablePaths({ selectionPath, subgraphName }) {
160
+ if (!this.relativeOriginPaths) {
161
+ (0, utils_1.getValueOrDefault)(this.subgraphNameByUnresolvablePath, selectionPath, () => subgraphName);
162
+ return;
163
+ }
164
+ for (const path of this.relativeOriginPaths) {
165
+ (0, utils_1.getValueOrDefault)(this.subgraphNameByUnresolvablePath, `${path}${selectionPath}`, () => subgraphName);
166
+ }
167
+ }
168
+ removeUnresolvablePaths({ selectionPath, removeDescendantPaths }) {
169
+ if (!this.relativeOriginPaths) {
170
+ this.subgraphNameByUnresolvablePath.delete(selectionPath);
171
+ if (removeDescendantPaths) {
172
+ for (const unresolvablePath of this.subgraphNameByUnresolvablePath.keys()) {
173
+ if (unresolvablePath.startsWith(selectionPath)) {
174
+ this.subgraphNameByUnresolvablePath.delete(unresolvablePath);
175
+ }
176
+ }
177
+ }
178
+ return;
179
+ }
180
+ for (const originPath of this.relativeOriginPaths) {
181
+ const fullPath = `${originPath}${selectionPath}`;
182
+ this.subgraphNameByUnresolvablePath.delete(fullPath);
183
+ if (removeDescendantPaths) {
184
+ for (const unresolvablePath of this.subgraphNameByUnresolvablePath.keys()) {
185
+ if (unresolvablePath.startsWith(fullPath)) {
186
+ this.subgraphNameByUnresolvablePath.delete(unresolvablePath);
187
+ }
188
+ }
189
+ }
190
+ }
191
+ }
192
+ }
193
+ exports.EntityWalker = EntityWalker;
194
+ //# sourceMappingURL=entity-walker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-walker.js","sourceRoot":"","sources":["../../../../src/resolvability-graph/walker/entity-walker/entity-walker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { FieldName, NodeName, SelectionPath, SubgraphName } from '../../../types/types';
2
+ import { Edge, GraphNode } from '../../../graph-nodes';
3
+ import { NodeResolutionData } from '../../../node-resolution-data/node-resolution-data';
4
+ export type EntityWalkerParams = {
5
+ encounteredEntityNodeNames: Set<NodeName>;
6
+ index: number;
7
+ resDataByNodeName: Map<NodeName, NodeResolutionData>;
8
+ resDataByRelativeOriginPath: Map<SelectionPath, NodeResolutionData>;
9
+ relativeOriginPaths?: Set<SelectionPath>;
10
+ subgraphNameByUnresolvablePath: Map<SelectionPath, SubgraphName>;
11
+ visitedEntities: Set<NodeName>;
12
+ };
13
+ export type VisitEntityDescendantEdgeParams = {
14
+ edge: Edge;
15
+ selectionPath: SelectionPath;
16
+ };
17
+ export type VisitEntityDescendantNodeParams = {
18
+ node: GraphNode;
19
+ selectionPath: SelectionPath;
20
+ };
21
+ export type PropagateVisitedFieldParams = {
22
+ areDescendantsResolved: boolean;
23
+ data: NodeResolutionData;
24
+ fieldName: FieldName;
25
+ nodeName: NodeName;
26
+ selectionPath: SelectionPath;
27
+ visited: boolean;
28
+ };
29
+ export type GetNodeResolutionDataParams = {
30
+ node: GraphNode;
31
+ selectionPath: SelectionPath;
32
+ };
33
+ export type AddUnresolvablePathsParams = {
34
+ selectionPath: SelectionPath;
35
+ subgraphName: SubgraphName;
36
+ };
37
+ export type RemoveUnresolvablePathsParams = {
38
+ selectionPath: SelectionPath;
39
+ removeDescendantPaths?: boolean;
40
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.js","sourceRoot":"","sources":["../../../../../src/resolvability-graph/walker/entity-walker/types/params.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { GetNodeResolutionDataParams, PropagateVisitedFieldParams, PropagateVisitedSharedFieldParams, RootFieldWalkerParams, VisitEdgeParams, VisitNodeParams, VisitRootFieldEdgesParams } from './types/params';
2
+ import { NodeName, VisitNodeResult } from '../../types/types';
3
+ import { NodeResolutionData } from '../../node-resolution-data/node-resolution-data';
4
+ export declare class RootFieldWalker {
5
+ index: number;
6
+ resDataByNodeName: Map<NodeName, NodeResolutionData>;
7
+ resDataByPath: Map<string, NodeResolutionData>;
8
+ entityNodeNamesByPath: Map<string, Set<`${string}.${string}`>>;
9
+ pathsByEntityNodeName: Map<`${string}.${string}`, Set<string>>;
10
+ unresolvablePaths: Set<string>;
11
+ constructor({ index, nodeResolutionDataByNodeName }: RootFieldWalkerParams);
12
+ visitEdge({ edge, selectionPath }: VisitEdgeParams): VisitNodeResult;
13
+ visitAbstractNode({ node, selectionPath }: VisitNodeParams): VisitNodeResult;
14
+ visitConcreteNode({ node, selectionPath }: VisitNodeParams): VisitNodeResult;
15
+ visitSharedEdge({ edge, selectionPath }: VisitEdgeParams): VisitNodeResult;
16
+ visitSharedAbstractNode({ node, selectionPath }: VisitNodeParams): VisitNodeResult;
17
+ visitSharedConcreteNode({ node, selectionPath }: VisitNodeParams): VisitNodeResult;
18
+ getNodeResolutionData({ node, selectionPath }: GetNodeResolutionDataParams): NodeResolutionData;
19
+ getSharedNodeResolutionData({ node, selectionPath }: GetNodeResolutionDataParams): NodeResolutionData;
20
+ propagateVisitedField({ areDescendantsResolved, data, fieldName, node, selectionPath, visited, }: PropagateVisitedFieldParams): void;
21
+ propagateSharedVisitedField({ areDescendantsResolved, data, fieldName, node, visited, }: PropagateVisitedSharedFieldParams): void;
22
+ visitRootFieldEdges({ edges, rootTypeName }: VisitRootFieldEdgesParams): VisitNodeResult;
23
+ }
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RootFieldWalker = void 0;
4
+ const utils_1 = require("../../../utils/utils");
5
+ const node_resolution_data_1 = require("../../node-resolution-data/node-resolution-data");
6
+ class RootFieldWalker {
7
+ index;
8
+ resDataByNodeName;
9
+ resDataByPath = new Map();
10
+ // Used by shared root fields.
11
+ entityNodeNamesByPath = new Map();
12
+ // Used by unshared root fields.
13
+ pathsByEntityNodeName = new Map();
14
+ unresolvablePaths = new Set();
15
+ constructor({ index, nodeResolutionDataByNodeName }) {
16
+ this.index = index;
17
+ this.resDataByNodeName = nodeResolutionDataByNodeName;
18
+ }
19
+ visitEdge({ edge, selectionPath }) {
20
+ if (edge.isInaccessible || edge.node.isInaccessible) {
21
+ return { visited: false, areDescendantsResolved: true };
22
+ }
23
+ if (edge.node.isLeaf) {
24
+ return { visited: true, areDescendantsResolved: true };
25
+ }
26
+ if (!(0, utils_1.add)(edge.visitedIndices, this.index)) {
27
+ return { visited: true, areDescendantsResolved: true };
28
+ }
29
+ /* Check for siblings rather than entity edges.
30
+ * This is because resolvable: false and unsatisfied edges are not propagated.
31
+ * In these cases, the error message explains the specific reason the jump cannot happen.
32
+ */
33
+ if (edge.node.hasEntitySiblings) {
34
+ /* This check prevents infinite loops.
35
+ * The entity is only propagated into this map after it has been assessed for resolvability.
36
+ * Consequently, only a valid node would appear here.
37
+ * */
38
+ if (this.resDataByNodeName.has(edge.node.nodeName)) {
39
+ return { visited: true, areDescendantsResolved: true };
40
+ }
41
+ (0, utils_1.getValueOrDefault)(this.pathsByEntityNodeName, edge.node.nodeName, () => new Set()).add(`${selectionPath}.${edge.edgeName}`);
42
+ return { visited: true, areDescendantsResolved: false };
43
+ }
44
+ if (edge.node.isAbstract) {
45
+ return this.visitAbstractNode({
46
+ node: edge.node,
47
+ selectionPath: `${selectionPath}.${edge.edgeName}`,
48
+ });
49
+ }
50
+ return this.visitConcreteNode({
51
+ node: edge.node,
52
+ selectionPath: `${selectionPath}.${edge.edgeName}`,
53
+ });
54
+ }
55
+ visitAbstractNode({ node, selectionPath }) {
56
+ if (node.headToTailEdges.size < 1) {
57
+ return { visited: true, areDescendantsResolved: true };
58
+ }
59
+ let resolvedDescendants = 0;
60
+ for (const edge of node.headToTailEdges.values()) {
61
+ // Propagate any one of the abstract path failures.
62
+ if (this.visitEdge({ edge, selectionPath }).areDescendantsResolved) {
63
+ resolvedDescendants += 1;
64
+ }
65
+ }
66
+ return {
67
+ visited: true,
68
+ areDescendantsResolved: resolvedDescendants === node.headToTailEdges.size,
69
+ };
70
+ }
71
+ visitConcreteNode({ node, selectionPath }) {
72
+ if (node.headToTailEdges.size < 1) {
73
+ node.isLeaf = true;
74
+ return { visited: true, areDescendantsResolved: true };
75
+ }
76
+ const existingData = this.resDataByNodeName.get(node.nodeName);
77
+ if (existingData) {
78
+ return { visited: true, areDescendantsResolved: existingData.areDescendantsResolved() };
79
+ }
80
+ const data = this.getNodeResolutionData({ node, selectionPath });
81
+ if (data.isResolved() && data.areDescendantsResolved()) {
82
+ return {
83
+ visited: true,
84
+ areDescendantsResolved: true,
85
+ };
86
+ }
87
+ for (const [fieldName, edge] of node.headToTailEdges) {
88
+ const { visited, areDescendantsResolved } = this.visitEdge({ edge, selectionPath });
89
+ this.propagateVisitedField({
90
+ areDescendantsResolved,
91
+ fieldName,
92
+ data,
93
+ node,
94
+ selectionPath,
95
+ visited,
96
+ });
97
+ }
98
+ if (data.isResolved()) {
99
+ this.unresolvablePaths.delete(selectionPath);
100
+ }
101
+ else {
102
+ this.unresolvablePaths.add(selectionPath);
103
+ }
104
+ return {
105
+ visited: true,
106
+ areDescendantsResolved: data.areDescendantsResolved(),
107
+ };
108
+ }
109
+ visitSharedEdge({ edge, selectionPath }) {
110
+ if (edge.isInaccessible || edge.node.isInaccessible) {
111
+ return { visited: false, areDescendantsResolved: true };
112
+ }
113
+ if (edge.node.isLeaf) {
114
+ return { visited: true, areDescendantsResolved: true };
115
+ }
116
+ if (!(0, utils_1.add)(edge.visitedIndices, this.index)) {
117
+ return { visited: true, areDescendantsResolved: true };
118
+ }
119
+ /* Check for siblings rather than entity edges.
120
+ * This is because resolvable: false and unsatisfied edges are not propagated.
121
+ * In these cases, the error message explains the specific reason the jump cannot happen.
122
+ */
123
+ if (edge.node.hasEntitySiblings) {
124
+ (0, utils_1.getValueOrDefault)(this.entityNodeNamesByPath, `${selectionPath}.${edge.edgeName}`, () => new Set()).add(edge.node.nodeName);
125
+ }
126
+ if (edge.node.isAbstract) {
127
+ return this.visitSharedAbstractNode({
128
+ node: edge.node,
129
+ selectionPath: `${selectionPath}.${edge.edgeName}`,
130
+ });
131
+ }
132
+ return this.visitSharedConcreteNode({
133
+ node: edge.node,
134
+ selectionPath: `${selectionPath}.${edge.edgeName}`,
135
+ });
136
+ }
137
+ visitSharedAbstractNode({ node, selectionPath }) {
138
+ if (node.headToTailEdges.size < 1) {
139
+ return { visited: true, areDescendantsResolved: true };
140
+ }
141
+ let resolvedDescendants = 0;
142
+ for (const edge of node.headToTailEdges.values()) {
143
+ // Propagate any one of the abstract path failures.
144
+ if (this.visitSharedEdge({ edge, selectionPath }).areDescendantsResolved) {
145
+ resolvedDescendants += 1;
146
+ }
147
+ }
148
+ return {
149
+ visited: true,
150
+ areDescendantsResolved: resolvedDescendants === node.headToTailEdges.size,
151
+ };
152
+ }
153
+ visitSharedConcreteNode({ node, selectionPath }) {
154
+ if (node.headToTailEdges.size < 1) {
155
+ node.isLeaf = true;
156
+ return { visited: true, areDescendantsResolved: true };
157
+ }
158
+ const data = this.getSharedNodeResolutionData({ node, selectionPath });
159
+ if (data.isResolved() && data.areDescendantsResolved()) {
160
+ return {
161
+ visited: true,
162
+ areDescendantsResolved: true,
163
+ };
164
+ }
165
+ for (const [fieldName, edge] of node.headToTailEdges) {
166
+ const { visited, areDescendantsResolved } = this.visitSharedEdge({ edge, selectionPath });
167
+ this.propagateSharedVisitedField({
168
+ areDescendantsResolved,
169
+ data,
170
+ fieldName,
171
+ node,
172
+ visited,
173
+ });
174
+ }
175
+ if (data.isResolved()) {
176
+ this.unresolvablePaths.delete(selectionPath);
177
+ }
178
+ else {
179
+ this.unresolvablePaths.add(selectionPath);
180
+ }
181
+ return {
182
+ visited: true,
183
+ areDescendantsResolved: data.areDescendantsResolved(),
184
+ };
185
+ }
186
+ getNodeResolutionData({ node, selectionPath }) {
187
+ const data = (0, utils_1.getValueOrDefault)(this.resDataByNodeName, node.nodeName, () => new node_resolution_data_1.NodeResolutionData({
188
+ fieldDataByName: node.fieldDataByName,
189
+ typeName: node.typeName,
190
+ }));
191
+ (0, utils_1.getValueOrDefault)(this.resDataByPath, selectionPath, () => data.copy());
192
+ return data;
193
+ }
194
+ getSharedNodeResolutionData({ node, selectionPath }) {
195
+ const dataByNodeName = (0, utils_1.getValueOrDefault)(this.resDataByNodeName, node.nodeName, () => new node_resolution_data_1.NodeResolutionData({
196
+ fieldDataByName: node.fieldDataByName,
197
+ typeName: node.typeName,
198
+ }));
199
+ return (0, utils_1.getValueOrDefault)(this.resDataByPath, selectionPath, () => dataByNodeName.copy());
200
+ }
201
+ propagateVisitedField({ areDescendantsResolved, data, fieldName, node, selectionPath, visited, }) {
202
+ if (!visited) {
203
+ return;
204
+ }
205
+ data.addResolvedFieldName(fieldName);
206
+ const dataBySelectionPath = (0, utils_1.getValueOrDefault)(this.resDataByPath, selectionPath, () => new node_resolution_data_1.NodeResolutionData({
207
+ fieldDataByName: node.fieldDataByName,
208
+ typeName: node.typeName,
209
+ }));
210
+ dataBySelectionPath.addResolvedFieldName(fieldName);
211
+ if (!areDescendantsResolved) {
212
+ return;
213
+ }
214
+ data.resolvedDescendantNames.add(fieldName);
215
+ dataBySelectionPath.resolvedDescendantNames.add(fieldName);
216
+ }
217
+ propagateSharedVisitedField({ areDescendantsResolved, data, fieldName, node, visited, }) {
218
+ if (!visited) {
219
+ return;
220
+ }
221
+ data.addResolvedFieldName(fieldName);
222
+ const dataByNodeName = (0, utils_1.getValueOrDefault)(this.resDataByNodeName, node.nodeName, () => new node_resolution_data_1.NodeResolutionData({
223
+ fieldDataByName: node.fieldDataByName,
224
+ typeName: node.typeName,
225
+ }));
226
+ dataByNodeName.addResolvedFieldName(fieldName);
227
+ if (!areDescendantsResolved) {
228
+ return;
229
+ }
230
+ data.resolvedDescendantNames.add(fieldName);
231
+ dataByNodeName.resolvedDescendantNames.add(fieldName);
232
+ }
233
+ visitRootFieldEdges({ edges, rootTypeName }) {
234
+ const isShared = edges.length > 1;
235
+ for (const edge of edges) {
236
+ if (edge.isInaccessible) {
237
+ return { visited: false, areDescendantsResolved: false };
238
+ }
239
+ const result = isShared
240
+ ? this.visitSharedEdge({ edge, selectionPath: rootTypeName })
241
+ : this.visitEdge({ edge, selectionPath: rootTypeName });
242
+ if (result.areDescendantsResolved) {
243
+ return result;
244
+ }
245
+ }
246
+ return { visited: true, areDescendantsResolved: false };
247
+ }
248
+ }
249
+ exports.RootFieldWalker = RootFieldWalker;
250
+ //# sourceMappingURL=root-field-walker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root-field-walker.js","sourceRoot":"","sources":["../../../../src/resolvability-graph/walker/root-field-walkers/root-field-walker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { Edge, GraphNode } from '../../../graph-nodes';
2
+ import { FieldName, NodeName, SelectionPath, TypeName } from '../../../types/types';
3
+ import { NodeResolutionData } from '../../../node-resolution-data/node-resolution-data';
4
+ export type RootFieldWalkerParams = {
5
+ index: number;
6
+ nodeResolutionDataByNodeName: Map<NodeName, NodeResolutionData>;
7
+ };
8
+ export type VisitEdgeParams = {
9
+ edge: Edge;
10
+ selectionPath: SelectionPath;
11
+ };
12
+ export type VisitNodeParams = {
13
+ node: GraphNode;
14
+ selectionPath: SelectionPath;
15
+ };
16
+ export type PropagateVisitedFieldParams = {
17
+ areDescendantsResolved: boolean;
18
+ data: NodeResolutionData;
19
+ fieldName: FieldName;
20
+ node: GraphNode;
21
+ selectionPath: SelectionPath;
22
+ visited: boolean;
23
+ };
24
+ export type PropagateVisitedSharedFieldParams = {
25
+ areDescendantsResolved: boolean;
26
+ data: NodeResolutionData;
27
+ fieldName: FieldName;
28
+ node: GraphNode;
29
+ visited: boolean;
30
+ };
31
+ export type VisitRootFieldEdgesParams = {
32
+ edges: Array<Edge>;
33
+ rootTypeName: TypeName;
34
+ };
35
+ export type GetNodeResolutionDataParams = {
36
+ node: GraphNode;
37
+ selectionPath: SelectionPath;
38
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.js","sourceRoot":"","sources":["../../../../../src/resolvability-graph/walker/root-field-walkers/types/params.ts"],"names":[],"mappings":""}