@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.
- package/README.md +41 -48
- package/dist/ast/utils.js +2 -2
- package/dist/ast/utils.js.map +1 -1
- package/dist/errors/errors.d.ts +9 -12
- package/dist/errors/errors.js +71 -68
- package/dist/errors/errors.js.map +1 -1
- package/dist/federation/types.d.ts +2 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/normalization/normalization.d.ts +3 -1
- package/dist/normalization/normalization.js +8 -0
- package/dist/normalization/normalization.js.map +1 -1
- package/dist/normalization/types.d.ts +2 -2
- package/dist/resolvability-graph/graph-nodes.d.ts +1 -1
- package/dist/resolvability-graph/graph-nodes.js.map +1 -1
- package/dist/resolvability-graph/graph.d.ts +1 -2
- package/dist/resolvability-graph/graph.js.map +1 -1
- package/dist/resolvability-graph/utils.d.ts +1 -1
- package/dist/resolvability-graph/utils.js.map +1 -1
- package/dist/router-configuration/{router-configuration.d.ts → types.d.ts} +3 -4
- package/dist/router-configuration/types.js +3 -0
- package/dist/router-configuration/types.js.map +1 -0
- package/dist/router-configuration/utils.d.ts +3 -0
- package/dist/router-configuration/{router-configuration.js → utils.js} +9 -1
- package/dist/router-configuration/utils.js.map +1 -0
- package/dist/schema-building/types.d.ts +23 -7
- package/dist/schema-building/types.js.map +1 -1
- package/dist/schema-building/utils.d.ts +3 -6
- package/dist/schema-building/utils.js +11 -8
- package/dist/schema-building/utils.js.map +1 -1
- package/dist/subgraph/types.d.ts +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/composition-version.js +1 -1
- package/dist/utils/string-constants.d.ts +3 -2
- package/dist/utils/string-constants.js +5 -4
- package/dist/utils/string-constants.js.map +1 -1
- package/dist/utils/types.d.ts +38 -0
- package/dist/utils/utils.d.ts +0 -48
- package/dist/utils/utils.js +0 -10
- package/dist/utils/utils.js.map +1 -1
- package/dist/v1/federation/federation-factory.d.ts +4 -4
- package/dist/v1/federation/federation-factory.js +46 -35
- package/dist/v1/federation/federation-factory.js.map +1 -1
- package/dist/v1/federation/utils.d.ts +7 -8
- package/dist/v1/federation/utils.js +22 -20
- package/dist/v1/federation/utils.js.map +1 -1
- package/dist/v1/normalization/normalization-factory.d.ts +19 -22
- package/dist/v1/normalization/normalization-factory.js +568 -70
- package/dist/v1/normalization/normalization-factory.js.map +1 -1
- package/dist/v1/normalization/types.d.ts +49 -0
- package/dist/v1/normalization/types.js +3 -0
- package/dist/v1/normalization/types.js.map +1 -0
- package/dist/v1/normalization/utils.d.ts +7 -42
- package/dist/v1/normalization/utils.js +59 -382
- package/dist/v1/normalization/utils.js.map +1 -1
- package/dist/v1/normalization/walkers.js +36 -23
- package/dist/v1/normalization/walkers.js.map +1 -1
- package/dist/v1/utils/utils.d.ts +15 -12
- package/dist/v1/utils/utils.js +53 -47
- package/dist/v1/utils/utils.js.map +1 -1
- package/dist/v1/warnings/warnings.d.ts +4 -3
- package/dist/v1/warnings/warnings.js +47 -17
- package/dist/v1/warnings/warnings.js.map +1 -1
- package/dist/warnings/{warnings.js → types.js} +1 -1
- package/dist/warnings/types.js.map +1 -0
- package/package.json +3 -3
- package/dist/router-configuration/router-configuration.js.map +0 -1
- package/dist/warnings/warnings.js.map +0 -1
- /package/dist/warnings/{warnings.d.ts → types.d.ts} +0 -0
package/dist/utils/types.d.ts
CHANGED
|
@@ -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
|
+
};
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -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;
|
package/dist/utils/utils.js
CHANGED
|
@@ -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) {
|
package/dist/utils/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;
|
|
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/
|
|
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/
|
|
12
|
+
import { Warning } from '../../warnings/types';
|
|
13
13
|
import { ContractTagOptions, FederationResult, FederationResultWithContracts } from '../../federation/types';
|
|
14
|
-
import {
|
|
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
|
|
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
|
-
|
|
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 (
|
|
162
|
-
this.errors.push((0, errors_1.invalidInterfaceImplementationError)(data.node.name.value, (0, utils_6.kindToTypeString)(data.kind),
|
|
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.
|
|
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
|
-
|
|
183
|
-
|
|
184
|
-
|
|
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
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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.
|
|
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
|
-
|
|
236
|
-
|
|
237
|
-
|
|
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.
|
|
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
|
-
|
|
2096
|
-
if (areAnyImplementationsUndefined) {
|
|
2097
|
-
validEntityInterfaceTypeNames.delete(typeName);
|
|
2098
|
-
}
|
|
2087
|
+
(0, utils_3.upsertEntityInterfaceFederationData)(existingData, entityInterfaceData, subgraphName);
|
|
2099
2088
|
}
|
|
2100
2089
|
}
|
|
2101
|
-
|
|
2102
|
-
for (const typeName of
|
|
2103
|
-
|
|
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
|
};
|