@wundergraph/composition 0.37.0 → 0.37.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 (70) hide show
  1. package/README.md +41 -48
  2. package/dist/ast/utils.js +2 -2
  3. package/dist/ast/utils.js.map +1 -1
  4. package/dist/errors/errors.d.ts +9 -12
  5. package/dist/errors/errors.js +71 -68
  6. package/dist/errors/errors.js.map +1 -1
  7. package/dist/federation/types.d.ts +2 -2
  8. package/dist/index.d.ts +4 -2
  9. package/dist/index.js +4 -2
  10. package/dist/index.js.map +1 -1
  11. package/dist/normalization/normalization.d.ts +3 -1
  12. package/dist/normalization/normalization.js +8 -0
  13. package/dist/normalization/normalization.js.map +1 -1
  14. package/dist/normalization/types.d.ts +2 -2
  15. package/dist/resolvability-graph/graph-nodes.d.ts +1 -1
  16. package/dist/resolvability-graph/graph-nodes.js.map +1 -1
  17. package/dist/resolvability-graph/graph.d.ts +1 -2
  18. package/dist/resolvability-graph/graph.js.map +1 -1
  19. package/dist/resolvability-graph/utils.d.ts +1 -1
  20. package/dist/resolvability-graph/utils.js.map +1 -1
  21. package/dist/router-configuration/{router-configuration.d.ts → types.d.ts} +3 -4
  22. package/dist/router-configuration/types.js +3 -0
  23. package/dist/router-configuration/types.js.map +1 -0
  24. package/dist/router-configuration/utils.d.ts +3 -0
  25. package/dist/router-configuration/{router-configuration.js → utils.js} +9 -1
  26. package/dist/router-configuration/utils.js.map +1 -0
  27. package/dist/schema-building/types.d.ts +23 -7
  28. package/dist/schema-building/types.js.map +1 -1
  29. package/dist/schema-building/utils.d.ts +3 -6
  30. package/dist/schema-building/utils.js +11 -8
  31. package/dist/schema-building/utils.js.map +1 -1
  32. package/dist/subgraph/types.d.ts +1 -1
  33. package/dist/tsconfig.tsbuildinfo +1 -1
  34. package/dist/utils/composition-version.js +1 -1
  35. package/dist/utils/string-constants.d.ts +3 -2
  36. package/dist/utils/string-constants.js +5 -4
  37. package/dist/utils/string-constants.js.map +1 -1
  38. package/dist/utils/types.d.ts +38 -0
  39. package/dist/utils/utils.d.ts +0 -48
  40. package/dist/utils/utils.js +0 -10
  41. package/dist/utils/utils.js.map +1 -1
  42. package/dist/v1/federation/federation-factory.d.ts +4 -4
  43. package/dist/v1/federation/federation-factory.js +46 -35
  44. package/dist/v1/federation/federation-factory.js.map +1 -1
  45. package/dist/v1/federation/utils.d.ts +7 -8
  46. package/dist/v1/federation/utils.js +22 -20
  47. package/dist/v1/federation/utils.js.map +1 -1
  48. package/dist/v1/normalization/normalization-factory.d.ts +19 -22
  49. package/dist/v1/normalization/normalization-factory.js +568 -70
  50. package/dist/v1/normalization/normalization-factory.js.map +1 -1
  51. package/dist/v1/normalization/types.d.ts +49 -0
  52. package/dist/v1/normalization/types.js +3 -0
  53. package/dist/v1/normalization/types.js.map +1 -0
  54. package/dist/v1/normalization/utils.d.ts +7 -42
  55. package/dist/v1/normalization/utils.js +59 -382
  56. package/dist/v1/normalization/utils.js.map +1 -1
  57. package/dist/v1/normalization/walkers.js +36 -23
  58. package/dist/v1/normalization/walkers.js.map +1 -1
  59. package/dist/v1/utils/utils.d.ts +15 -12
  60. package/dist/v1/utils/utils.js +53 -47
  61. package/dist/v1/utils/utils.js.map +1 -1
  62. package/dist/v1/warnings/warnings.d.ts +4 -3
  63. package/dist/v1/warnings/warnings.js +47 -17
  64. package/dist/v1/warnings/warnings.js.map +1 -1
  65. package/dist/warnings/{warnings.js → types.js} +1 -1
  66. package/dist/warnings/types.js.map +1 -0
  67. package/package.json +3 -3
  68. package/dist/router-configuration/router-configuration.js.map +0 -1
  69. package/dist/warnings/warnings.js.map +0 -1
  70. /package/dist/warnings/{warnings.d.ts → types.d.ts} +0 -0
@@ -1 +1,39 @@
1
1
  export type RootTypeName = 'Mutation' | 'Query' | 'Subscription';
2
+ export type InvalidArgumentImplementation = {
3
+ actualType: string;
4
+ argumentName: string;
5
+ expectedType: string;
6
+ };
7
+ export type InvalidFieldImplementation = {
8
+ implementedResponseType?: string;
9
+ invalidAdditionalArguments: Set<string>;
10
+ invalidImplementedArguments: InvalidArgumentImplementation[];
11
+ isInaccessible: boolean;
12
+ originalResponseType: string;
13
+ unimplementedArguments: Set<string>;
14
+ };
15
+ export type ImplementationErrors = {
16
+ invalidFieldImplementations: Map<string, InvalidFieldImplementation>;
17
+ unimplementedFields: string[];
18
+ };
19
+ export type GraphFieldData = {
20
+ name: string;
21
+ namedTypeName: string;
22
+ isLeaf: boolean;
23
+ subgraphNames: Set<string>;
24
+ };
25
+ export type InvalidRequiredInputValueData = {
26
+ inputValueName: string;
27
+ missingSubgraphs: string[];
28
+ requiredSubgraphs: string[];
29
+ };
30
+ export type InvalidArgument = {
31
+ argumentName: string;
32
+ namedType: string;
33
+ typeName: string;
34
+ typeString: string;
35
+ };
36
+ export type InvalidEntityInterface = {
37
+ subgraphName: string;
38
+ concreteTypeNames: Set<string>;
39
+ };
@@ -1,60 +1,12 @@
1
1
  import { ConstDirectiveNode, Kind } from 'graphql/index';
2
- import { SimpleFieldData } from '../schema-building/types';
3
2
  export declare function areSetsEqual<T>(set: Set<T>, other: Set<T>): boolean;
4
- export declare function getAllMutualEntries<T>(set: Set<T>, other: Set<T>): Set<T>;
5
3
  export declare function getOrThrowError<K, V>(map: Map<K, V>, key: K, mapName: string): V;
6
4
  export declare function getAllSetDisparities<T>(set: Set<T>, other: Set<T>): T[];
7
5
  export declare function getEntriesNotInHashSet<T>(iterable: Iterable<T>, comparison: Set<T> | Map<T, any>): T[];
8
6
  export declare function numberToOrdinal(num: number): string;
9
7
  export declare function addIterableValuesToSet<T>(source: T[] | Iterable<T>, target: Set<T>): void;
10
8
  export declare function kindToTypeString(kind: Kind): string;
11
- export type InvalidArgumentImplementation = {
12
- actualType: string;
13
- argumentName: string;
14
- expectedType: string;
15
- };
16
- export type InvalidFieldImplementation = {
17
- implementedResponseType?: string;
18
- invalidAdditionalArguments: Set<string>;
19
- invalidImplementedArguments: InvalidArgumentImplementation[];
20
- isInaccessible: boolean;
21
- originalResponseType: string;
22
- unimplementedArguments: Set<string>;
23
- };
24
- export type ImplementationErrors = {
25
- invalidFieldImplementations: Map<string, InvalidFieldImplementation>;
26
- unimplementedFields: string[];
27
- };
28
9
  export declare function getValueOrDefault<K, V>(map: Map<K, V>, key: K, constructor: () => V): V;
29
- export type GraphFieldData = {
30
- name: string;
31
- namedTypeName: string;
32
- isLeaf: boolean;
33
- subgraphNames: Set<string>;
34
- };
35
10
  export declare function add<T>(set: Set<T>, key: T): boolean;
36
- export type InvalidRequiredInputValueData = {
37
- inputValueName: string;
38
- missingSubgraphs: string[];
39
- requiredSubgraphs: string[];
40
- };
41
- export type InvalidArgument = {
42
- argumentName: string;
43
- namedType: string;
44
- typeName: string;
45
- typeString: string;
46
- };
47
- export type EntityInterfaceFederationData = {
48
- fieldDatasBySubgraphName: Map<string, Array<SimpleFieldData>>;
49
- interfaceFieldNames: Set<string>;
50
- interfaceObjectFieldNames: Set<string>;
51
- interfaceObjectSubgraphs: Set<string>;
52
- typeName: string;
53
- concreteTypeNames?: Set<string>;
54
- };
55
- export type InvalidEntityInterface = {
56
- subgraphName: string;
57
- concreteTypeNames: Set<string>;
58
- };
59
11
  export declare function generateSimpleDirective(name: string): ConstDirectiveNode;
60
12
  export declare function generateRequiresScopesDirective(orScopes: Set<string>[]): ConstDirectiveNode;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.areSetsEqual = areSetsEqual;
4
- exports.getAllMutualEntries = getAllMutualEntries;
5
4
  exports.getOrThrowError = getOrThrowError;
6
5
  exports.getAllSetDisparities = getAllSetDisparities;
7
6
  exports.getEntriesNotInHashSet = getEntriesNotInHashSet;
@@ -27,15 +26,6 @@ function areSetsEqual(set, other) {
27
26
  }
28
27
  return true;
29
28
  }
30
- function getAllMutualEntries(set, other) {
31
- const mutualEntries = new Set();
32
- for (const entry of set) {
33
- if (other.has(entry)) {
34
- mutualEntries.add(entry);
35
- }
36
- }
37
- return mutualEntries;
38
- }
39
29
  function getOrThrowError(map, key, mapName) {
40
30
  const value = map.get(key);
41
31
  if (value === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,17 @@
1
1
  import { DirectiveDefinitionNode, NamedTypeNode, StringValueNode } from 'graphql';
2
2
  import { MutableFieldNode, MutableInputValueNode, MutableTypeDefinitionNode, MutableTypeNode } from '../../schema-building/ast';
3
3
  import { ChildTagData, FederationFactoryParams, InterfaceImplementationData, InterfaceObjectForInternalGraphOptions, ParentTagData, SubscriptionFilterData } from './utils';
4
- import { FieldConfiguration, SubscriptionCondition, SubscriptionFieldCondition } from '../../router-configuration/router-configuration';
5
- import { AuthorizationData, ChildData, CompositeOutputData, EntityData, EnumValueData, FieldData, InputObjectDefinitionData, InputValueData, InterfaceDefinitionData, NodeData, ObjectDefinitionData, ParentDefinitionData, PersistedDirectiveDefinitionData, UnionDefinitionData } from '../../schema-building/types';
4
+ import { FieldConfiguration, SubscriptionCondition, SubscriptionFieldCondition } from '../../router-configuration/types';
5
+ import { AuthorizationData, ChildData, CompositeOutputData, EntityData, EntityInterfaceFederationData, EnumValueData, FieldData, InputObjectDefinitionData, InputValueData, InterfaceDefinitionData, NodeData, ObjectDefinitionData, ParentDefinitionData, PersistedDirectiveDefinitionData, UnionDefinitionData } from '../../schema-building/types';
6
6
  import { MergeMethod } from '../../schema-building/utils';
7
7
  import { FederateTypeOptions, FederateTypeResult } from '../schema-building/type-merging';
8
8
  import { ConstDirectiveNode, ConstObjectValueNode } from 'graphql/index';
9
9
  import { Graph } from '../../resolvability-graph/graph';
10
10
  import { GraphNode } from '../../resolvability-graph/graph-nodes';
11
11
  import { InternalSubgraph, Subgraph } from '../../subgraph/types';
12
- import { Warning } from '../../warnings/warnings';
12
+ import { Warning } from '../../warnings/types';
13
13
  import { ContractTagOptions, FederationResult, FederationResultWithContracts } from '../../federation/types';
14
- import { EntityInterfaceFederationData, GraphFieldData } from '../../utils/utils';
14
+ import { GraphFieldData } from '../../utils/types';
15
15
  export declare class FederationFactory {
16
16
  authorizationDataByParentTypeName: Map<string, AuthorizationData>;
17
17
  concreteTypeNamesByAbstractTypeName: Map<string, Set<string>>;
@@ -73,7 +73,7 @@ class FederationFactory {
73
73
  return interfaces;
74
74
  }
75
75
  const isParentInaccessible = (0, utils_5.isNodeDataInaccessible)(data);
76
- const implementationErrorsMap = new Map();
76
+ const implementationErrorsByInterfaceName = new Map();
77
77
  const invalidImplementationTypeStringByTypeName = new Map();
78
78
  for (const interfaceName of data.implementedInterfaceTypeNames) {
79
79
  interfaces.push((0, utils_1.stringToNamedTypeNode)(interfaceName));
@@ -152,14 +152,14 @@ class FederationFactory {
152
152
  }
153
153
  }
154
154
  if (hasErrors) {
155
- implementationErrorsMap.set(interfaceName, implementationErrors);
155
+ implementationErrorsByInterfaceName.set(interfaceName, implementationErrors);
156
156
  }
157
157
  }
158
158
  if (invalidImplementationTypeStringByTypeName.size > 0) {
159
159
  this.errors.push((0, errors_1.invalidImplementedTypeError)(data.name, invalidImplementationTypeStringByTypeName));
160
160
  }
161
- if (implementationErrorsMap.size) {
162
- this.errors.push((0, errors_1.invalidInterfaceImplementationError)(data.node.name.value, (0, utils_6.kindToTypeString)(data.kind), implementationErrorsMap));
161
+ if (implementationErrorsByInterfaceName.size > 0) {
162
+ this.errors.push((0, errors_1.invalidInterfaceImplementationError)(data.node.name.value, (0, utils_6.kindToTypeString)(data.kind), implementationErrorsByInterfaceName));
163
163
  }
164
164
  return interfaces;
165
165
  }
@@ -174,18 +174,18 @@ class FederationFactory {
174
174
  if (!objectData || objectData.kind !== graphql_1.Kind.OBJECT_TYPE_DEFINITION) {
175
175
  throw (0, errors_1.incompatibleParentKindFatalError)(entityData.typeName, graphql_1.Kind.OBJECT_TYPE_DEFINITION, objectData?.kind || graphql_1.Kind.NULL);
176
176
  }
177
- const configurationData = (0, utils_6.getOrThrowError)(internalSubgraph.configurationDataByTypeName, entityData.typeName, 'internalSubgraph.configurationDataByParentTypeName');
177
+ const configurationData = (0, utils_6.getOrThrowError)(internalSubgraph.configurationDataByTypeName, entityData.typeName, 'internalSubgraph.configurationDataByTypeName');
178
178
  const implicitKeys = [];
179
179
  const graphNode = this.internalGraph.nodeByNodeName.get(`${this.currentSubgraphName}.${entityData.typeName}`);
180
180
  // Any errors in the field sets would be caught when evaluating the explicit entities, so they are ignored here
181
181
  (0, utils_2.validateImplicitFieldSets)({
182
- conditionalFieldDataByCoordinates: internalSubgraph.conditionalFieldDataByCoordinates,
183
- configurationData,
184
- fieldSets: entityData.keyFieldSets,
185
- graphNode,
182
+ conditionalFieldDataByCoords: internalSubgraph.conditionalFieldDataByCoordinates,
183
+ currentSubgraphName: this.currentSubgraphName,
184
+ entityData,
186
185
  implicitKeys,
187
186
  objectData,
188
187
  parentDefinitionDataByTypeName,
188
+ graphNode,
189
189
  });
190
190
  for (const [typeName, entityInterfaceFederationData] of this.entityInterfaceFederationDataByTypeName) {
191
191
  if (!entityInterfaceFederationData.concreteTypeNames?.has(entityData.typeName)) {
@@ -196,9 +196,9 @@ class FederationFactory {
196
196
  continue;
197
197
  }
198
198
  (0, utils_2.validateImplicitFieldSets)({
199
- conditionalFieldDataByCoordinates: internalSubgraph.conditionalFieldDataByCoordinates,
200
- configurationData,
201
- fieldSets: interfaceObjectEntityData.keyFieldSets,
199
+ conditionalFieldDataByCoords: internalSubgraph.conditionalFieldDataByCoordinates,
200
+ currentSubgraphName: this.currentSubgraphName,
201
+ entityData: interfaceObjectEntityData,
202
202
  implicitKeys,
203
203
  objectData,
204
204
  parentDefinitionDataByTypeName,
@@ -228,13 +228,13 @@ class FederationFactory {
228
228
  if (!interfaceObjectData || interfaceObjectData.kind !== graphql_1.Kind.INTERFACE_TYPE_DEFINITION) {
229
229
  throw (0, errors_1.incompatibleParentKindFatalError)(interfaceObjectTypeName, graphql_1.Kind.INTERFACE_TYPE_DEFINITION, interfaceObjectData?.kind || graphql_1.Kind.NULL);
230
230
  }
231
- const configurationData = (0, utils_6.getOrThrowError)(internalSubgraph.configurationDataByTypeName, entityData.typeName, 'internalSubgraph.configurationDataByParentTypeName');
231
+ const configurationData = (0, utils_6.getOrThrowError)(internalSubgraph.configurationDataByTypeName, entityData.typeName, 'internalSubgraph.configurationDataByTypeName');
232
232
  const implicitKeys = [];
233
233
  // Any errors in the field sets would be caught when evaluating the explicit entities, so they are ignored here
234
234
  (0, utils_2.validateImplicitFieldSets)({
235
- conditionalFieldDataByCoordinates: internalSubgraph.conditionalFieldDataByCoordinates,
236
- configurationData,
237
- fieldSets: entityData.keyFieldSets,
235
+ conditionalFieldDataByCoords: internalSubgraph.conditionalFieldDataByCoordinates,
236
+ currentSubgraphName: internalSubgraph.name,
237
+ entityData,
238
238
  implicitKeys,
239
239
  objectData: interfaceObjectData,
240
240
  parentDefinitionDataByTypeName,
@@ -558,7 +558,7 @@ class FederationFactory {
558
558
  (0, utils_3.addMapEntries)(incomingData.configureDescriptionDataBySubgraphName, existingData.configureDescriptionDataBySubgraphName);
559
559
  (0, utils_5.setLongestDescription)(existingData, incomingData);
560
560
  existingData.isInaccessible ||= incomingData.isInaccessible;
561
- (0, utils_3.addMapEntries)(incomingData.isExternalBySubgraphName, existingData.isExternalBySubgraphName);
561
+ (0, utils_3.addMapEntries)(incomingData.externalFieldDataBySubgraphName, existingData.externalFieldDataBySubgraphName);
562
562
  (0, utils_3.addMapEntries)(incomingData.isShareableBySubgraphName, existingData.isShareableBySubgraphName);
563
563
  (0, utils_6.addIterableValuesToSet)(incomingData.subgraphNames, existingData.subgraphNames);
564
564
  }
@@ -2077,36 +2077,47 @@ function initializeFederationFactory(subgraphs) {
2077
2077
  }
2078
2078
  const entityInterfaceFederationDataByTypeName = new Map();
2079
2079
  const invalidEntityInterfacesByTypeName = new Map();
2080
- const validEntityInterfaceTypeNames = new Set();
2081
2080
  for (const [subgraphName, internalSubgraph] of result.internalSubgraphBySubgraphName) {
2082
2081
  for (const [typeName, entityInterfaceData] of internalSubgraph.entityInterfaces) {
2083
- // Always add each entity interface to the invalid entity interfaces map
2084
- // If not, earlier checks would not account for implementations not yet seen
2085
- (0, utils_6.getValueOrDefault)(invalidEntityInterfacesByTypeName, typeName, () => []).push({
2086
- subgraphName,
2087
- concreteTypeNames: entityInterfaceData.concreteTypeNames || new Set(),
2088
- });
2089
2082
  const existingData = entityInterfaceFederationDataByTypeName.get(typeName);
2090
2083
  if (!existingData) {
2091
- validEntityInterfaceTypeNames.add(typeName);
2092
2084
  entityInterfaceFederationDataByTypeName.set(typeName, (0, utils_3.newEntityInterfaceFederationData)(entityInterfaceData, subgraphName));
2093
2085
  continue;
2094
2086
  }
2095
- const areAnyImplementationsUndefined = (0, utils_3.upsertEntityInterfaceFederationData)(existingData, entityInterfaceData, subgraphName);
2096
- if (areAnyImplementationsUndefined) {
2097
- validEntityInterfaceTypeNames.delete(typeName);
2098
- }
2087
+ (0, utils_3.upsertEntityInterfaceFederationData)(existingData, entityInterfaceData, subgraphName);
2099
2088
  }
2100
2089
  }
2101
- // Remove the valid entity interfaces type names so only genuinely invalid entity interfaces remain
2102
- for (const typeName of validEntityInterfaceTypeNames) {
2103
- invalidEntityInterfacesByTypeName.delete(typeName);
2090
+ const entityInterfaceErrors = [];
2091
+ for (const [typeName, entityInterfaceData] of entityInterfaceFederationDataByTypeName) {
2092
+ const implementations = entityInterfaceData.concreteTypeNames.size;
2093
+ for (const [subgraphName, subgraphData] of entityInterfaceData.subgraphDataByTypeName) {
2094
+ if (!subgraphData.isInterfaceObject) {
2095
+ if (subgraphData.resolvable && subgraphData.concreteTypeNames.size !== implementations) {
2096
+ (0, utils_6.getValueOrDefault)(invalidEntityInterfacesByTypeName, typeName, () => []).push({
2097
+ subgraphName,
2098
+ concreteTypeNames: subgraphData.concreteTypeNames,
2099
+ });
2100
+ }
2101
+ continue;
2102
+ }
2103
+ const parentDefinitionDataByTypeName = (0, utils_6.getOrThrowError)(result.internalSubgraphBySubgraphName, subgraphName, 'internalSubgraphBySubgraphName').parentDefinitionDataByTypeName;
2104
+ const invalidTypeNames = [];
2105
+ for (const concreteTypeName of entityInterfaceData.concreteTypeNames) {
2106
+ if (parentDefinitionDataByTypeName.has(concreteTypeName)) {
2107
+ invalidTypeNames.push(concreteTypeName);
2108
+ }
2109
+ }
2110
+ if (invalidTypeNames.length > 0) {
2111
+ entityInterfaceErrors.push((0, errors_1.invalidInterfaceObjectImplementationDefinitionsError)(typeName, subgraphName, invalidTypeNames));
2112
+ }
2113
+ }
2104
2114
  }
2105
2115
  if (invalidEntityInterfacesByTypeName.size > 0) {
2116
+ entityInterfaceErrors.push((0, errors_1.undefinedEntityInterfaceImplementationsError)(invalidEntityInterfacesByTypeName, entityInterfaceFederationDataByTypeName));
2117
+ }
2118
+ if (entityInterfaceErrors.length > 0) {
2106
2119
  return {
2107
- errors: [
2108
- (0, errors_1.undefinedEntityInterfaceImplementationsError)(invalidEntityInterfacesByTypeName, entityInterfaceFederationDataByTypeName),
2109
- ],
2120
+ errors: entityInterfaceErrors,
2110
2121
  success: false,
2111
2122
  warnings: result.warnings,
2112
2123
  };