@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.
- package/dist/errors/errors.d.ts +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/resolvability-graph/constants/string-constants.d.ts +8 -0
- package/dist/resolvability-graph/constants/string-constants.js +12 -0
- package/dist/resolvability-graph/constants/string-constants.js.map +1 -0
- package/dist/resolvability-graph/graph-nodes.d.ts +15 -14
- package/dist/resolvability-graph/graph-nodes.js +8 -8
- package/dist/resolvability-graph/graph-nodes.js.map +1 -1
- package/dist/resolvability-graph/graph.d.ts +27 -21
- package/dist/resolvability-graph/graph.js +284 -286
- package/dist/resolvability-graph/graph.js.map +1 -1
- package/dist/resolvability-graph/node-resolution-data/node-resolution-data.d.ts +16 -0
- package/dist/resolvability-graph/node-resolution-data/node-resolution-data.js +62 -0
- package/dist/resolvability-graph/node-resolution-data/node-resolution-data.js.map +1 -0
- package/dist/resolvability-graph/node-resolution-data/types/params.d.ts +9 -0
- package/dist/resolvability-graph/node-resolution-data/types/params.js +3 -0
- package/dist/resolvability-graph/node-resolution-data/types/params.js.map +1 -0
- package/dist/resolvability-graph/types/params.d.ts +22 -0
- package/dist/resolvability-graph/types/params.js +3 -0
- package/dist/resolvability-graph/types/params.js.map +1 -0
- package/dist/resolvability-graph/types/types.d.ts +23 -0
- package/dist/resolvability-graph/types/types.js +3 -0
- package/dist/resolvability-graph/types/types.js.map +1 -0
- package/dist/resolvability-graph/utils/types/params.d.ts +50 -0
- package/dist/resolvability-graph/utils/types/params.js +3 -0
- package/dist/resolvability-graph/utils/types/params.js.map +1 -0
- package/dist/resolvability-graph/utils/types/types.d.ts +16 -0
- package/dist/resolvability-graph/utils/types/types.js +3 -0
- package/dist/resolvability-graph/utils/types/types.js.map +1 -0
- package/dist/resolvability-graph/utils/utils.d.ts +19 -0
- package/dist/resolvability-graph/utils/utils.js +230 -0
- package/dist/resolvability-graph/utils/utils.js.map +1 -0
- package/dist/resolvability-graph/walker/entity-walker/entity-walker.d.ts +21 -0
- package/dist/resolvability-graph/walker/entity-walker/entity-walker.js +194 -0
- package/dist/resolvability-graph/walker/entity-walker/entity-walker.js.map +1 -0
- package/dist/resolvability-graph/walker/entity-walker/types/params.d.ts +40 -0
- package/dist/resolvability-graph/walker/entity-walker/types/params.js +3 -0
- package/dist/resolvability-graph/walker/entity-walker/types/params.js.map +1 -0
- package/dist/resolvability-graph/walker/root-field-walkers/root-field-walker.d.ts +23 -0
- package/dist/resolvability-graph/walker/root-field-walkers/root-field-walker.js +250 -0
- package/dist/resolvability-graph/walker/root-field-walkers/root-field-walker.js.map +1 -0
- package/dist/resolvability-graph/walker/root-field-walkers/types/params.d.ts +38 -0
- package/dist/resolvability-graph/walker/root-field-walkers/types/params.js +3 -0
- package/dist/resolvability-graph/walker/root-field-walkers/types/params.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/composition-version.js +1 -1
- package/dist/utils/utils.d.ts +1 -1
- package/dist/utils/utils.js +2 -2
- package/dist/utils/utils.js.map +1 -1
- package/dist/v1/federation/federation-factory.js +4 -4
- package/dist/v1/federation/federation-factory.js.map +1 -1
- package/dist/v1/normalization/normalization-factory.js +1 -1
- package/package.json +2 -2
- package/dist/resolvability-graph/utils.d.ts +0 -65
- package/dist/resolvability-graph/utils.js +0 -143
- 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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../../../../src/resolvability-graph/walker/root-field-walkers/types/params.ts"],"names":[],"mappings":""}
|