@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
@@ -1,143 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NodeResolutionData = void 0;
4
- exports.newRootFieldData = newRootFieldData;
5
- exports.generateResolvabilityErrorReasons = generateResolvabilityErrorReasons;
6
- exports.generateSelectionSetSegments = generateSelectionSetSegments;
7
- exports.renderSelectionSet = renderSelectionSet;
8
- exports.generateResolvabilityErrors = generateResolvabilityErrors;
9
- const errors_1 = require("../errors/errors");
10
- const string_constants_1 = require("../utils/string-constants");
11
- const utils_1 = require("../utils/utils");
12
- class NodeResolutionData {
13
- fieldDataByFieldName;
14
- isResolved = false;
15
- resolvedFieldNames = new Set();
16
- typeName;
17
- constructor(typeName, fieldDataByFieldName) {
18
- this.fieldDataByFieldName = fieldDataByFieldName;
19
- this.typeName = typeName;
20
- }
21
- add(fieldName) {
22
- this.resolvedFieldNames.add(fieldName);
23
- if (this.resolvedFieldNames.size > this.fieldDataByFieldName.size) {
24
- const unexpectedEntries = (0, utils_1.getEntriesNotInHashSet)(this.resolvedFieldNames, this.fieldDataByFieldName);
25
- throw (0, errors_1.unexpectedEdgeFatalError)(this.typeName, unexpectedEntries);
26
- }
27
- this.isResolved = this.resolvedFieldNames.size === this.fieldDataByFieldName.size;
28
- return this.isResolved;
29
- }
30
- }
31
- exports.NodeResolutionData = NodeResolutionData;
32
- function newRootFieldData(typeName, fieldName, subgraphNames) {
33
- return {
34
- coordinate: `${typeName}.${fieldName}`,
35
- message: `The root type field "${typeName}.${fieldName}" is defined in the following subgraph` +
36
- (subgraphNames.size > 1 ? `s` : ``) +
37
- `: "${[...subgraphNames].join(string_constants_1.QUOTATION_JOIN)}".`,
38
- subgraphNames,
39
- };
40
- }
41
- function formatFieldNameSelection(fieldData, pathLength) {
42
- if (fieldData.isLeaf) {
43
- return fieldData.name + ` <--\n`;
44
- }
45
- return (fieldData.name +
46
- ` { <--\n` +
47
- string_constants_1.LITERAL_SPACE.repeat(pathLength + 3) +
48
- `...\n` +
49
- string_constants_1.LITERAL_SPACE.repeat(pathLength + 2) +
50
- `}\n`);
51
- }
52
- function generateResolvabilityErrorReasons({ entityAncestorData, rootFieldData, unresolvableFieldData, }) {
53
- const { fieldName, typeName, subgraphNames } = unresolvableFieldData;
54
- const reasons = [
55
- rootFieldData.message,
56
- `The field "${typeName}.${fieldName}" is defined in the following subgraph` +
57
- (subgraphNames.size > 1 ? `s` : ``) +
58
- `: "${[...subgraphNames].join(string_constants_1.QUOTATION_JOIN)}".`,
59
- ];
60
- if (entityAncestorData) {
61
- let hasIntersectingTargetSubgraph = false;
62
- for (const [targetSubgraphName, fieldSets] of entityAncestorData.fieldSetsByTargetSubgraphName) {
63
- if (!subgraphNames.has(targetSubgraphName)) {
64
- continue;
65
- }
66
- hasIntersectingTargetSubgraph = true;
67
- for (const fieldSet of fieldSets) {
68
- reasons.push(`The entity ancestor "${entityAncestorData.typeName}" in subgraph "${entityAncestorData.subgraphName}" does not satisfy the key field set "${fieldSet}" to access subgraph "${targetSubgraphName}".`);
69
- }
70
- }
71
- if (!hasIntersectingTargetSubgraph) {
72
- reasons.push(`The entity ancestor "${entityAncestorData.typeName}" in subgraph "${entityAncestorData.subgraphName}" has no accessible target entities (resolvable @key directives) in the subgraphs where "${typeName}.${fieldName}" is defined.`);
73
- }
74
- reasons.push(`The type "${typeName}" is not a descendent of any other entity ancestors that can provide a shared route to access "${fieldName}".`);
75
- }
76
- else {
77
- if (rootFieldData.subgraphNames.size > 1) {
78
- reasons.push(`None of the subgraphs that share the same root type field "${rootFieldData.coordinate}" can provide a route to access "${fieldName}".`);
79
- }
80
- reasons.push(`The type "${typeName}" is not a descendent of an entity ancestor that can provide a shared route to access "${fieldName}".`);
81
- }
82
- if (typeName !== entityAncestorData?.typeName) {
83
- reasons.push(`The type "${typeName}" has no accessible target entities (resolvable @key directives) in any other subgraph, so accessing other subgraphs is not possible.`);
84
- }
85
- return reasons;
86
- }
87
- function generateSelectionSetSegments(fieldPath) {
88
- // Regex is to split on singular periods and not fragments (... on TypeName)
89
- const pathNodes = fieldPath.split(/(?<=\w)\./);
90
- let outputStart = '';
91
- let outputEnd = '';
92
- for (let i = 0; i < pathNodes.length; i++) {
93
- outputStart += string_constants_1.LITERAL_SPACE.repeat(i + 1) + pathNodes[i] + ` {\n`;
94
- outputEnd = string_constants_1.LITERAL_SPACE.repeat(i + 1) + `}\n` + outputEnd;
95
- }
96
- return {
97
- outputEnd,
98
- outputStart,
99
- pathNodes,
100
- };
101
- }
102
- function renderSelectionSet({ outputEnd, outputStart, pathNodes }, fieldData) {
103
- return (outputStart +
104
- string_constants_1.LITERAL_SPACE.repeat(pathNodes.length + 1) +
105
- formatFieldNameSelection(fieldData, pathNodes.length) +
106
- outputEnd);
107
- }
108
- function getUnresolvablePath(fieldPath, pathFromRoot) {
109
- if (pathFromRoot) {
110
- if (fieldPath) {
111
- return `${pathFromRoot}${fieldPath}`;
112
- }
113
- return pathFromRoot;
114
- }
115
- return fieldPath;
116
- }
117
- function generateResolvabilityErrors({ entityAncestorData, errors, nodeResolutionDataByFieldPath, pathFromRoot, rootFieldData, unresolvableFieldPaths, }) {
118
- const unresolvableFieldDatas = [];
119
- for (const fieldPath of unresolvableFieldPaths) {
120
- const nodeResolutionData = (0, utils_1.getOrThrowError)(nodeResolutionDataByFieldPath, fieldPath, 'nodeResolutionDataByFieldPath');
121
- const fieldDataByFieldName = new Map();
122
- for (const [fieldName, fieldData] of nodeResolutionData.fieldDataByFieldName) {
123
- if (nodeResolutionData.resolvedFieldNames.has(fieldName)) {
124
- continue;
125
- }
126
- fieldDataByFieldName.set(fieldName, fieldData);
127
- }
128
- const fullPath = getUnresolvablePath(fieldPath, pathFromRoot);
129
- const selectionSetSegments = generateSelectionSetSegments(fullPath);
130
- for (const [fieldName, fieldData] of fieldDataByFieldName) {
131
- unresolvableFieldDatas.push({
132
- fieldName,
133
- selectionSet: renderSelectionSet(selectionSetSegments, fieldData),
134
- subgraphNames: fieldData.subgraphNames,
135
- typeName: nodeResolutionData.typeName,
136
- });
137
- }
138
- }
139
- for (const unresolvableFieldData of unresolvableFieldDatas) {
140
- errors.push((0, errors_1.unresolvablePathError)(unresolvableFieldData, generateResolvabilityErrorReasons({ rootFieldData, unresolvableFieldData, entityAncestorData })));
141
- }
142
- }
143
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/resolvability-graph/utils.ts"],"names":[],"mappings":"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"}