@wundergraph/composition 0.38.0 → 0.38.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/normalization/types.d.ts +2 -0
- package/dist/router-configuration/types.d.ts +2 -1
- package/dist/schema-building/types.d.ts +13 -4
- package/dist/schema-building/utils.d.ts +5 -4
- package/dist/schema-building/utils.js +34 -38
- package/dist/schema-building/utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/composition-version.js +1 -1
- package/dist/utils/string-constants.d.ts +1 -1
- package/dist/utils/string-constants.js +3 -3
- package/dist/utils/string-constants.js.map +1 -1
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.js +8 -0
- package/dist/utils/utils.js.map +1 -1
- package/dist/v1/federation/federation-factory.d.ts +4 -2
- package/dist/v1/federation/federation-factory.js +65 -27
- package/dist/v1/federation/federation-factory.js.map +1 -1
- package/dist/v1/federation/utils.d.ts +1 -0
- package/dist/v1/federation/utils.js.map +1 -1
- package/dist/v1/normalization/normalization-factory.d.ts +6 -8
- package/dist/v1/normalization/normalization-factory.js +44 -147
- package/dist/v1/normalization/normalization-factory.js.map +1 -1
- package/dist/v1/normalization/walkers.d.ts +0 -1
- package/dist/v1/normalization/walkers.js +1 -100
- package/dist/v1/normalization/walkers.js.map +1 -1
- package/dist/v1/utils/constants.d.ts +1 -0
- package/dist/v1/utils/constants.js +2 -1
- package/dist/v1/utils/constants.js.map +1 -1
- package/dist/v1/utils/utils.d.ts +14 -13
- package/dist/v1/utils/utils.js +129 -91
- package/dist/v1/utils/utils.js.map +1 -1
- package/package.json +3 -2
package/dist/utils/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;AAsBA,oCAUC;AAED,0CAMC;AAED,oDAYC;AAED,wDAQC;AAED,0CAaC;AAED,wDAIC;AAED,4CAqEC;AAED,8CAQC;AAED,kBAMC;AAED,0DAKC;AAED,0EA0BC;AAGD,gDAMC;AAED,kEAIC;AAGD,8CAMC;AAED,sCAIC;AAED,8CAMC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;AAsBA,oCAUC;AAED,0CAMC;AAED,oDAYC;AAED,wDAQC;AAED,0CAaC;AAED,wDAIC;AAED,0BAMC;AAED,4CAqEC;AAED,8CAQC;AAED,kBAMC;AAED,0DAKC;AAED,0EA0BC;AAGD,gDAMC;AAED,kEAIC;AAGD,8CAMC;AAED,sCAIC;AAED,8CAMC;AA/PD,yCAA0F;AAC1F,yDAiB4B;AAC5B,6CAAwD;AACxD,wCAAgD;AAEhD,SAAgB,YAAY,CAAI,GAAW,EAAE,KAAa;IACxD,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,eAAe,CAAO,GAAc,EAAE,GAAM,EAAE,OAAe;IAC3E,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAA,6BAAoB,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,oBAAoB,CAAI,GAAW,EAAE,KAAa;IAChE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAI,KAAK,CAAC,CAAC;IACpC,MAAM,WAAW,GAAQ,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAgB,sBAAsB,CAAI,QAAqB,EAAE,UAAgC;IAC/F,MAAM,WAAW,GAAQ,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAgB,eAAe,CAAC,GAAW;IACzC,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,GAAG;YACN,OAAO,GAAG,SAAS,IAAI,CAAC;QAC1B,KAAK,GAAG;YACN,OAAO,GAAG,SAAS,IAAI,CAAC;QAC1B,KAAK,GAAG;YACN,OAAO,GAAG,SAAS,IAAI,CAAC;QAC1B;YACE,OAAO,GAAG,SAAS,IAAI,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAgB,sBAAsB,CAAI,MAA8B,EAAE,MAAc;IACtF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAgB,OAAO,CAAI,CAAS,EAAE,CAAS;IAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAI,CAAC,CAAC,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAU;IACzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAClB,OAAO,iCAAc,CAAC;QACxB,CAAC;QACD,KAAK,YAAI,CAAC,IAAI,CAAC;QACf,0BAA0B;QAC1B,KAAK,YAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC/B,OAAO,uBAAI,CAAC;QACd,CAAC;QACD,KAAK,YAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC9B,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,KAAK,YAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAChC,OAAO,6BAAU,CAAC;QACpB,CAAC;QACD,KAAK,YAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC3B,OAAO,wBAAK,CAAC;QACf,CAAC;QACD,KAAK,YAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAChB,OAAO,+BAAY,CAAC;QACtB,CAAC;QACD,KAAK,YAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;YACvC,OAAO,+BAAY,CAAC;QACtB,CAAC;QACD,KAAK,YAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACtC,OAAO,wBAAwB,CAAC;QAClC,CAAC;QACD,KAAK,YAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACjC,OAAO,8BAAW,CAAC;QACrB,CAAC;QACD,KAAK,YAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACd,OAAO,6BAAU,CAAC;QACpB,CAAC;QACD,KAAK,YAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACpC,OAAO,4BAAS,CAAC;QACnB,CAAC;QACD,KAAK,YAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACnC,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,KAAK,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACf,OAAO,uBAAI,CAAC;QACd,CAAC;QACD,KAAK,YAAI,CAAC,MAAM,CAAC;QACjB,0BAA0B;QAC1B,KAAK,YAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACjC,OAAO,yBAAM,CAAC;QAChB,CAAC;QACD,KAAK,YAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAChC,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QACD,KAAK,YAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACjB,OAAO,gCAAa,CAAC;QACvB,CAAC;QACD,KAAK,YAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACjC,OAAO,yBAAM,CAAC;QAChB,CAAC;QACD,KAAK,YAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAChC,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QACD,KAAK,YAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAChC,OAAO,wBAAK,CAAC;QACf,CAAC;QACD,KAAK,YAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC/B,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QACD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAAO,GAAc,EAAE,GAAM,EAAE,WAAoB;IAClF,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,GAAG,CAAI,GAAW,EAAE,GAAM;IACxC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,uBAAuB,CAAC,IAAY;IAClD,OAAO;QACL,IAAI,EAAE,YAAI,CAAC,SAAS;QACpB,IAAI,EAAE,IAAA,wBAAgB,EAAC,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,SAAgB,+BAA+B,CAAC,QAAuB;IACrE,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;QACjC,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,YAAI,CAAC,MAAM;gBACjB,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO;QACL,IAAI,EAAE,YAAI,CAAC,SAAS;QACpB,IAAI,EAAE,IAAA,wBAAgB,EAAC,kCAAe,CAAC;QACvC,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,YAAI,CAAC,QAAQ;gBACnB,IAAI,EAAE,IAAA,wBAAgB,EAAC,yBAAM,CAAC;gBAC9B,KAAK,EAAE;oBACL,IAAI,EAAE,YAAI,CAAC,IAAI;oBACf,MAAM;iBACP;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,eAAe;AACf,SAAgB,kBAAkB,CAAO,MAAiB;IACxD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAQ,CAAC;IAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,2BAA2B,CAAO,MAAiB,EAAE,MAAiB;IACpF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,eAAe;AACf,SAAgB,iBAAiB,CAAO,MAAwB;IAC9D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,aAAa,CAAO,MAAiB,EAAE,MAAiB;IACtE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAAI,GAAW;IAC9C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,IAAI,EAAE,CAAC;QACT,OAAO;IACT,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -22,12 +22,13 @@ export declare class FederationFactory {
|
|
|
22
22
|
entityInterfaceFederationDataByTypeName: Map<string, EntityInterfaceFederationData>;
|
|
23
23
|
errors: Error[];
|
|
24
24
|
fieldConfigurationByFieldCoords: Map<string, FieldConfiguration>;
|
|
25
|
+
fieldCoordsByNamedTypeName: Map<string, Set<string>>;
|
|
25
26
|
inaccessibleCoords: Set<string>;
|
|
26
27
|
inaccessibleRequiredInputValueErrorByCoords: Map<string, Error>;
|
|
27
28
|
isMaxDepth: boolean;
|
|
28
29
|
internalGraph: Graph;
|
|
29
30
|
internalSubgraphBySubgraphName: Map<string, InternalSubgraph>;
|
|
30
|
-
|
|
31
|
+
invalidORScopesCoords: Set<string>;
|
|
31
32
|
isVersionTwo: boolean;
|
|
32
33
|
namedInputValueTypeNames: Set<string>;
|
|
33
34
|
namedOutputTypeNames: Set<string>;
|
|
@@ -78,7 +79,7 @@ export declare class FederationFactory {
|
|
|
78
79
|
handleInterfaceObjectForInternalGraph({ entityData, internalSubgraph, interfaceObjectData, interfaceObjectNode, resolvableKeyFieldSets, subgraphName, }: InterfaceObjectForInternalGraphOptions): void;
|
|
79
80
|
handleEntityInterfaces(): void;
|
|
80
81
|
fieldDataToGraphFieldData(fieldData: FieldData): GraphFieldData;
|
|
81
|
-
getValidFlattenedPersistedDirectiveNodeArray(directivesByDirectiveName: Map<string, Array<ConstDirectiveNode>>,
|
|
82
|
+
getValidFlattenedPersistedDirectiveNodeArray(directivesByDirectiveName: Map<string, Array<ConstDirectiveNode>>, coords: string): Array<ConstDirectiveNode>;
|
|
82
83
|
getRouterPersistedDirectiveNodes<T extends NodeData>(nodeData: T): ConstDirectiveNode[];
|
|
83
84
|
getFederatedGraphNodeDescription(data: NodeData): StringValueNode | undefined;
|
|
84
85
|
getNodeForRouterSchemaByData<T extends NodeData>(data: T): T['node'];
|
|
@@ -86,6 +87,7 @@ export declare class FederationFactory {
|
|
|
86
87
|
getValidFieldArgumentNodes(fieldData: FieldData): MutableInputValueNode[];
|
|
87
88
|
getNodeWithPersistedDirectivesByFieldData(fieldData: FieldData, argumentNodes: Array<MutableInputValueNode>): MutableFieldNode;
|
|
88
89
|
pushParentDefinitionDataToDocumentDefinitions(interfaceImplementations: InterfaceImplementationData[]): void;
|
|
90
|
+
pushNamedTypeAuthDataToFields(): void;
|
|
89
91
|
federateSubgraphData(): void;
|
|
90
92
|
validateInterfaceImplementationsAndPushToDocumentDefinitions(interfaceImplementations: InterfaceImplementationData[]): void;
|
|
91
93
|
pushVersionTwoDirectiveDefinitionsToDocumentDefinitions(): void;
|
|
@@ -33,12 +33,13 @@ class FederationFactory {
|
|
|
33
33
|
entityInterfaceFederationDataByTypeName;
|
|
34
34
|
errors = [];
|
|
35
35
|
fieldConfigurationByFieldCoords = new Map();
|
|
36
|
+
fieldCoordsByNamedTypeName;
|
|
36
37
|
inaccessibleCoords = new Set();
|
|
37
38
|
inaccessibleRequiredInputValueErrorByCoords = new Map();
|
|
38
39
|
isMaxDepth = false;
|
|
39
40
|
internalGraph;
|
|
40
41
|
internalSubgraphBySubgraphName;
|
|
41
|
-
|
|
42
|
+
invalidORScopesCoords = new Set();
|
|
42
43
|
isVersionTwo = false;
|
|
43
44
|
namedInputValueTypeNames = new Set();
|
|
44
45
|
namedOutputTypeNames = new Set();
|
|
@@ -63,6 +64,7 @@ class FederationFactory {
|
|
|
63
64
|
this.concreteTypeNamesByAbstractTypeName = params.concreteTypeNamesByAbstractTypeName;
|
|
64
65
|
this.entityDataByTypeName = params.entityDataByTypeName;
|
|
65
66
|
this.entityInterfaceFederationDataByTypeName = params.entityInterfaceFederationDataByTypeName;
|
|
67
|
+
this.fieldCoordsByNamedTypeName = params.fieldCoordsByNamedTypeName;
|
|
66
68
|
this.internalSubgraphBySubgraphName = params.internalSubgraphBySubgraphName;
|
|
67
69
|
this.internalGraph = params.internalGraph;
|
|
68
70
|
this.warnings = params.warnings;
|
|
@@ -783,8 +785,6 @@ class FederationFactory {
|
|
|
783
785
|
return;
|
|
784
786
|
}
|
|
785
787
|
}
|
|
786
|
-
(0, utils_5.extractPersistedDirectives)(targetData.persistedDirectivesData, incomingData.directivesByDirectiveName, this.persistedDirectiveDefinitionByDirectiveName);
|
|
787
|
-
this.recordTagNamesByCoords(targetData);
|
|
788
788
|
(0, utils_6.addNewObjectValueMapEntries)(incomingData.configureDescriptionDataBySubgraphName, targetData.configureDescriptionDataBySubgraphName);
|
|
789
789
|
(0, utils_5.setLongestDescription)(targetData, incomingData);
|
|
790
790
|
(0, utils_5.setParentDataExtensionType)(targetData, incomingData);
|
|
@@ -1092,7 +1092,7 @@ class FederationFactory {
|
|
|
1092
1092
|
}
|
|
1093
1093
|
handleEntityInterfaces() {
|
|
1094
1094
|
for (const [entityInterfaceTypeName, entityInterfaceData] of this.entityInterfaceFederationDataByTypeName) {
|
|
1095
|
-
(0, utils_3.
|
|
1095
|
+
(0, utils_3.subtractSet)(entityInterfaceData.interfaceFieldNames, entityInterfaceData.interfaceObjectFieldNames);
|
|
1096
1096
|
const entityInterface = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, entityInterfaceTypeName, string_constants_2.PARENT_DEFINITION_DATA);
|
|
1097
1097
|
if (entityInterface.kind !== graphql_1.Kind.INTERFACE_TYPE_DEFINITION) {
|
|
1098
1098
|
// TODO error
|
|
@@ -1113,7 +1113,6 @@ class FederationFactory {
|
|
|
1113
1113
|
}
|
|
1114
1114
|
interfaceObjectConfiguration.entityInterfaceConcreteTypeNames = entityInterfaceData.concreteTypeNames;
|
|
1115
1115
|
const fieldNames = interfaceObjectConfiguration.fieldNames;
|
|
1116
|
-
const authorizationData = this.authorizationDataByParentTypeName.get(entityInterfaceData.typeName);
|
|
1117
1116
|
this.internalGraph.setSubgraphName(subgraphName);
|
|
1118
1117
|
const interfaceObjectNode = this.internalGraph.addOrUpdateNode(entityInterfaceTypeName, { isAbstract: true });
|
|
1119
1118
|
for (const concreteTypeName of concreteTypeNames) {
|
|
@@ -1121,16 +1120,8 @@ class FederationFactory {
|
|
|
1121
1120
|
// error TODO
|
|
1122
1121
|
continue;
|
|
1123
1122
|
}
|
|
1124
|
-
if (authorizationData) {
|
|
1125
|
-
const concreteAuthorizationData = (0, utils_6.getValueOrDefault)(this.authorizationDataByParentTypeName, concreteTypeName, () => (0, utils_3.newAuthorizationData)(concreteTypeName));
|
|
1126
|
-
for (const fieldAuthorizationData of authorizationData.fieldAuthorizationDataByFieldName.values()) {
|
|
1127
|
-
if (!(0, utils_3.upsertFieldAuthorizationData)(concreteAuthorizationData.fieldAuthorizationDataByFieldName, fieldAuthorizationData)) {
|
|
1128
|
-
this.invalidOrScopesHostPaths.add(`${concreteTypeName}.${fieldAuthorizationData.fieldName}`);
|
|
1129
|
-
}
|
|
1130
|
-
}
|
|
1131
|
-
}
|
|
1132
1123
|
const concreteTypeData = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, concreteTypeName, string_constants_2.PARENT_DEFINITION_DATA);
|
|
1133
|
-
if (
|
|
1124
|
+
if (!(0, utils_3.isObjectDefinitionData)(concreteTypeData)) {
|
|
1134
1125
|
continue;
|
|
1135
1126
|
}
|
|
1136
1127
|
// The subgraph locations of the interface object must be added to the concrete types that implement it
|
|
@@ -1146,14 +1137,25 @@ class FederationFactory {
|
|
|
1146
1137
|
for (const key of keys.filter((k) => !k.disableEntityResolver)) {
|
|
1147
1138
|
resolvableKeyFieldSets.add(key.selectionSet);
|
|
1148
1139
|
}
|
|
1140
|
+
const interfaceAuthData = this.authorizationDataByParentTypeName.get(entityInterfaceTypeName);
|
|
1149
1141
|
for (const fieldName of entityInterfaceData.interfaceObjectFieldNames) {
|
|
1142
|
+
const fieldCoords = `${concreteTypeName}.${fieldName}`;
|
|
1143
|
+
const interfaceFieldData = (0, utils_6.getOrThrowError)(entityInterface.fieldDataByFieldName, fieldName, `${entityInterfaceTypeName}.fieldDataByFieldName`);
|
|
1144
|
+
(0, utils_6.getValueOrDefault)(this.fieldCoordsByNamedTypeName, interfaceFieldData.namedTypeName, () => new Set()).add(fieldCoords);
|
|
1145
|
+
const interfaceFieldAuthData = interfaceAuthData?.fieldAuthDataByFieldName.get(fieldName);
|
|
1146
|
+
if (interfaceFieldAuthData) {
|
|
1147
|
+
const concreteAuthData = (0, utils_6.getValueOrDefault)(this.authorizationDataByParentTypeName, concreteTypeName, () => (0, utils_3.newAuthorizationData)(concreteTypeName));
|
|
1148
|
+
if (!(0, utils_3.upsertFieldAuthorizationData)(concreteAuthData.fieldAuthDataByFieldName, interfaceFieldAuthData)) {
|
|
1149
|
+
this.invalidORScopesCoords.add(fieldCoords);
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1150
1152
|
const existingFieldData = concreteTypeData.fieldDataByFieldName.get(fieldName);
|
|
1151
1153
|
if (existingFieldData) {
|
|
1152
1154
|
// TODO handle shareability
|
|
1153
1155
|
continue;
|
|
1154
1156
|
}
|
|
1155
|
-
const
|
|
1156
|
-
concreteTypeData.fieldDataByFieldName.set(fieldName,
|
|
1157
|
+
const isInaccessible = entityInterface.isInaccessible || concreteTypeData.isInaccessible || interfaceFieldData.isInaccessible;
|
|
1158
|
+
concreteTypeData.fieldDataByFieldName.set(fieldName, this.copyFieldData(interfaceFieldData, isInaccessible));
|
|
1157
1159
|
}
|
|
1158
1160
|
configurationDataMap.set(concreteTypeName, configurationData);
|
|
1159
1161
|
this.handleInterfaceObjectForInternalGraph({
|
|
@@ -1176,7 +1178,7 @@ class FederationFactory {
|
|
|
1176
1178
|
subgraphNames: fieldData.subgraphNames,
|
|
1177
1179
|
};
|
|
1178
1180
|
}
|
|
1179
|
-
getValidFlattenedPersistedDirectiveNodeArray(directivesByDirectiveName,
|
|
1181
|
+
getValidFlattenedPersistedDirectiveNodeArray(directivesByDirectiveName, coords) {
|
|
1180
1182
|
const persistedDirectiveNodes = [];
|
|
1181
1183
|
for (const [directiveName, directiveNodes] of directivesByDirectiveName) {
|
|
1182
1184
|
const persistedDirectiveDefinition = this.persistedDirectiveDefinitionByDirectiveName.get(directiveName);
|
|
@@ -1188,7 +1190,7 @@ class FederationFactory {
|
|
|
1188
1190
|
continue;
|
|
1189
1191
|
}
|
|
1190
1192
|
if (!persistedDirectiveDefinition.repeatable) {
|
|
1191
|
-
this.errors.push((0, errors_1.invalidRepeatedFederatedDirectiveErrorMessage)(directiveName,
|
|
1193
|
+
this.errors.push((0, errors_1.invalidRepeatedFederatedDirectiveErrorMessage)(directiveName, coords));
|
|
1192
1194
|
continue;
|
|
1193
1195
|
}
|
|
1194
1196
|
persistedDirectiveNodes.push(...directiveNodes);
|
|
@@ -1290,6 +1292,7 @@ class FederationFactory {
|
|
|
1290
1292
|
const enumValueNodes = [];
|
|
1291
1293
|
const clientEnumValueNodes = [];
|
|
1292
1294
|
const mergeMethod = this.getEnumValueMergeMethod(parentTypeName);
|
|
1295
|
+
(0, utils_5.propagateAuthDirectives)(parentDefinitionData, this.authorizationDataByParentTypeName.get(parentTypeName));
|
|
1293
1296
|
for (const enumValueData of parentDefinitionData.enumValueDataByValueName.values()) {
|
|
1294
1297
|
const enumValueNode = (0, utils_5.getNodeForRouterSchemaByData)(enumValueData, this.persistedDirectiveDefinitionByDirectiveName, this.errors);
|
|
1295
1298
|
const isValueInaccessible = (0, utils_5.isNodeDataInaccessible)(enumValueData);
|
|
@@ -1391,8 +1394,10 @@ class FederationFactory {
|
|
|
1391
1394
|
const graphFieldDataByFieldName = new Map();
|
|
1392
1395
|
const invalidFieldNames = (0, utils_5.newInvalidFieldNames)();
|
|
1393
1396
|
const isObject = parentDefinitionData.kind === graphql_1.Kind.OBJECT_TYPE_DEFINITION;
|
|
1397
|
+
const authData = this.authorizationDataByParentTypeName.get(parentTypeName);
|
|
1398
|
+
(0, utils_5.propagateAuthDirectives)(parentDefinitionData, authData);
|
|
1394
1399
|
for (const [fieldName, fieldData] of parentDefinitionData.fieldDataByFieldName) {
|
|
1395
|
-
(0, utils_5.
|
|
1400
|
+
(0, utils_5.propagateFieldAuthDirectives)(fieldData, authData);
|
|
1396
1401
|
const argumentNodes = this.getValidFieldArgumentNodes(fieldData);
|
|
1397
1402
|
if (isObject) {
|
|
1398
1403
|
(0, utils_5.validateExternalAndShareable)(fieldData, invalidFieldNames);
|
|
@@ -1447,6 +1452,7 @@ class FederationFactory {
|
|
|
1447
1452
|
if (constants_1.BASE_SCALARS.has(parentTypeName)) {
|
|
1448
1453
|
break;
|
|
1449
1454
|
}
|
|
1455
|
+
(0, utils_5.propagateAuthDirectives)(parentDefinitionData, this.authorizationDataByParentTypeName.get(parentTypeName));
|
|
1450
1456
|
this.routerDefinitions.push(this.getNodeForRouterSchemaByData(parentDefinitionData));
|
|
1451
1457
|
if ((0, utils_5.isNodeDataInaccessible)(parentDefinitionData)) {
|
|
1452
1458
|
this.validateReferencesOfInaccessibleType(parentDefinitionData);
|
|
@@ -1480,12 +1486,48 @@ class FederationFactory {
|
|
|
1480
1486
|
}
|
|
1481
1487
|
}
|
|
1482
1488
|
}
|
|
1489
|
+
pushNamedTypeAuthDataToFields() {
|
|
1490
|
+
for (const [typeName, namedTypeAuthData] of this.authorizationDataByParentTypeName) {
|
|
1491
|
+
if (!namedTypeAuthData.requiresAuthentication && namedTypeAuthData.requiredScopes.length < 1) {
|
|
1492
|
+
continue;
|
|
1493
|
+
}
|
|
1494
|
+
const fieldCoords = this.fieldCoordsByNamedTypeName.get(typeName);
|
|
1495
|
+
if (!fieldCoords) {
|
|
1496
|
+
continue;
|
|
1497
|
+
}
|
|
1498
|
+
for (const coords of fieldCoords) {
|
|
1499
|
+
// The coords should all be exactly <parentTypeName>.<fieldName>
|
|
1500
|
+
const segments = coords.split(string_constants_2.PERIOD);
|
|
1501
|
+
switch (segments.length) {
|
|
1502
|
+
case 2: {
|
|
1503
|
+
const parentAuthData = (0, utils_6.getValueOrDefault)(this.authorizationDataByParentTypeName, segments[0], () => (0, utils_3.newAuthorizationData)(segments[0]));
|
|
1504
|
+
const fieldAuthData = (0, utils_6.getValueOrDefault)(parentAuthData.fieldAuthDataByFieldName, segments[1], () => (0, utils_3.newFieldAuthorizationData)(segments[1]));
|
|
1505
|
+
fieldAuthData.inheritedData.requiresAuthentication ||= namedTypeAuthData.requiresAuthentication;
|
|
1506
|
+
if (fieldAuthData.inheritedData.requiredScopes.length * namedTypeAuthData.requiredScopes.length >
|
|
1507
|
+
constants_1.MAX_OR_SCOPES) {
|
|
1508
|
+
this.invalidORScopesCoords.add(coords);
|
|
1509
|
+
}
|
|
1510
|
+
else {
|
|
1511
|
+
fieldAuthData.inheritedData.requiredScopesByOR = (0, utils_3.mergeRequiredScopesByAND)(fieldAuthData.inheritedData.requiredScopesByOR, namedTypeAuthData.requiredScopesByOR);
|
|
1512
|
+
fieldAuthData.inheritedData.requiredScopes = (0, utils_3.mergeRequiredScopesByAND)(fieldAuthData.inheritedData.requiredScopes, namedTypeAuthData.requiredScopes);
|
|
1513
|
+
}
|
|
1514
|
+
break;
|
|
1515
|
+
}
|
|
1516
|
+
default: {
|
|
1517
|
+
break;
|
|
1518
|
+
}
|
|
1519
|
+
}
|
|
1520
|
+
}
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1483
1523
|
federateSubgraphData() {
|
|
1484
1524
|
this.federateInternalSubgraphData();
|
|
1485
1525
|
this.handleEntityInterfaces();
|
|
1486
1526
|
// generate the map of tag data that is used by contracts
|
|
1487
1527
|
this.generateTagData();
|
|
1488
1528
|
this.pushVersionTwoDirectiveDefinitionsToDocumentDefinitions();
|
|
1529
|
+
// The named type auth data can only be pushed to the field once it has all been consolidated
|
|
1530
|
+
this.pushNamedTypeAuthDataToFields();
|
|
1489
1531
|
}
|
|
1490
1532
|
validateInterfaceImplementationsAndPushToDocumentDefinitions(interfaceImplementations) {
|
|
1491
1533
|
for (const { data, clientSchemaFieldNodes } of interfaceImplementations) {
|
|
@@ -1525,12 +1567,7 @@ class FederationFactory {
|
|
|
1525
1567
|
constants_1.TAG_DEFINITION,
|
|
1526
1568
|
constants_1.SCOPE_SCALAR_DEFINITION,
|
|
1527
1569
|
];
|
|
1528
|
-
this.clientDefinitions = [
|
|
1529
|
-
constants_1.AUTHENTICATED_DEFINITION,
|
|
1530
|
-
constants_1.DEPRECATED_DEFINITION,
|
|
1531
|
-
constants_1.REQUIRES_SCOPES_DEFINITION,
|
|
1532
|
-
constants_1.SCOPE_SCALAR_DEFINITION,
|
|
1533
|
-
];
|
|
1570
|
+
this.clientDefinitions = [constants_1.DEPRECATED_DEFINITION];
|
|
1534
1571
|
}
|
|
1535
1572
|
validatePathSegmentInaccessibility(path) {
|
|
1536
1573
|
if (!path) {
|
|
@@ -1855,8 +1892,8 @@ class FederationFactory {
|
|
|
1855
1892
|
if (this.subscriptionFilterDataByFieldPath.size > 0) {
|
|
1856
1893
|
this.validateSubscriptionFiltersAndGenerateConfiguration();
|
|
1857
1894
|
}
|
|
1858
|
-
if (this.
|
|
1859
|
-
this.errors.push((0, errors_1.orScopesLimitError)(
|
|
1895
|
+
if (this.invalidORScopesCoords.size > 0) {
|
|
1896
|
+
this.errors.push((0, errors_1.orScopesLimitError)(constants_1.MAX_OR_SCOPES, [...this.invalidORScopesCoords]));
|
|
1860
1897
|
}
|
|
1861
1898
|
for (const data of this.potentialPersistedDirectiveDefinitionDataByDirectiveName.values()) {
|
|
1862
1899
|
(0, utils_5.addValidPersistedDirectiveDefinitionNodeByData)(this.routerDefinitions, data, this.persistedDirectiveDefinitionByDirectiveName, this.errors);
|
|
@@ -2216,6 +2253,7 @@ function initializeFederationFactory(subgraphs) {
|
|
|
2216
2253
|
concreteTypeNamesByAbstractTypeName: result.concreteTypeNamesByAbstractTypeName,
|
|
2217
2254
|
entityDataByTypeName: result.entityDataByTypeName,
|
|
2218
2255
|
entityInterfaceFederationDataByTypeName,
|
|
2256
|
+
fieldCoordsByNamedTypeName: result.fieldCoordsByNamedTypeName,
|
|
2219
2257
|
internalSubgraphBySubgraphName: result.internalSubgraphBySubgraphName,
|
|
2220
2258
|
internalGraph: result.internalGraph,
|
|
2221
2259
|
warnings: result.warnings,
|