Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
294 changes: 147 additions & 147 deletions composition-go/index.global.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions composition/src/federation/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ export type ContractTagOptions = {
};

export type MutualParentDefinitionData = {
configureDescriptionDataBySubgraphName: Map<string, ConfigureDescriptionData>;
directivesByDirectiveName: Map<string, ConstDirectiveNode[]>;
configureDescriptionDataBySubgraphName: Map<SubgraphName, ConfigureDescriptionData>;
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>;
extensionType: ExtensionType;
name: string;
name: TypeName;
persistedDirectivesData: PersistedDirectivesData;
description?: StringValueNode;
};
Expand Down
22 changes: 11 additions & 11 deletions composition/src/schema-building/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export enum ExtensionType {
export type EnumDefinitionData = {
appearances: number;
configureDescriptionDataBySubgraphName: Map<SubgraphName, ConfigureDescriptionData>;
directivesByDirectiveName: Map<DirectiveName, Array<ConstDirectiveNode>>;
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>;
enumValueDataByName: Map<string, EnumValueData>;
extensionType: ExtensionType;
isInaccessible: boolean;
Expand All @@ -73,7 +73,7 @@ export type EnumDefinitionData = {
export type EnumValueData = {
appearances: number;
configureDescriptionDataBySubgraphName: Map<SubgraphName, ConfigureDescriptionData>;
directivesByDirectiveName: Map<DirectiveName, Array<ConstDirectiveNode>>;
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>;
federatedCoords: string;
kind: Kind.ENUM_VALUE_DEFINITION;
name: string;
Expand All @@ -97,7 +97,7 @@ export type ExternalFieldData = {
export type FieldData = {
argumentDataByName: Map<string, InputValueData>;
configureDescriptionDataBySubgraphName: Map<SubgraphName, ConfigureDescriptionData>;
directivesByDirectiveName: Map<DirectiveName, Array<ConstDirectiveNode>>;
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>;
externalFieldDataBySubgraphName: Map<SubgraphName, ExternalFieldData>;
federatedCoords: string;
inheritedDirectiveNames: Set<DirectiveName>;
Expand All @@ -119,7 +119,7 @@ export type FieldData = {

export type InputObjectDefinitionData = {
configureDescriptionDataBySubgraphName: Map<SubgraphName, ConfigureDescriptionData>;
directivesByDirectiveName: Map<DirectiveName, Array<ConstDirectiveNode>>;
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>;
extensionType: ExtensionType;
inputValueDataByName: Map<FieldName, InputValueData>;
isInaccessible: boolean;
Expand All @@ -133,7 +133,7 @@ export type InputObjectDefinitionData = {

export type InputValueData = {
configureDescriptionDataBySubgraphName: Map<SubgraphName, ConfigureDescriptionData>;
directivesByDirectiveName: Map<DirectiveName, Array<ConstDirectiveNode>>;
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>;
federatedCoords: string;
includeDefaultValue: boolean;
isArgument: boolean;
Expand All @@ -156,7 +156,7 @@ export type InputValueData = {

export type InterfaceDefinitionData = {
configureDescriptionDataBySubgraphName: Map<SubgraphName, ConfigureDescriptionData>;
directivesByDirectiveName: Map<DirectiveName, Array<ConstDirectiveNode>>;
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>;
extensionType: ExtensionType;
fieldDataByName: Map<FieldName, FieldData>;
implementedInterfaceTypeNames: Set<TypeName>;
Expand All @@ -173,7 +173,7 @@ export type InterfaceDefinitionData = {

export type ObjectDefinitionData = {
configureDescriptionDataBySubgraphName: Map<SubgraphName, ConfigureDescriptionData>;
directivesByDirectiveName: Map<DirectiveName, Array<ConstDirectiveNode>>;
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>;
extensionType: ExtensionType;
fieldDataByName: Map<FieldName, FieldData>;
implementedInterfaceTypeNames: Set<TypeName>;
Expand Down Expand Up @@ -201,14 +201,14 @@ export type PersistedDirectiveDefinitionData = {

export type PersistedDirectivesData = {
deprecatedReason: string;
directivesByDirectiveName: Map<DirectiveName, Array<ConstDirectiveNode>>;
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>;
isDeprecated: boolean;
tagDirectiveByName: Map<string, ConstDirectiveNode>;
};

export type ScalarDefinitionData = {
configureDescriptionDataBySubgraphName: Map<SubgraphName, ConfigureDescriptionData>;
directivesByDirectiveName: Map<DirectiveName, Array<ConstDirectiveNode>>;
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>;
extensionType: ExtensionType;
kind: Kind.SCALAR_TYPE_DEFINITION;
name: TypeName;
Expand All @@ -219,7 +219,7 @@ export type ScalarDefinitionData = {
};

export type SchemaData = {
directivesByDirectiveName: Map<DirectiveName, Array<ConstDirectiveNode>>;
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>;
kind: Kind.SCHEMA_DEFINITION;
name: string;
operationTypes: Map<OperationTypeNode, OperationTypeDefinitionNode>;
Expand All @@ -228,7 +228,7 @@ export type SchemaData = {

export type UnionDefinitionData = {
configureDescriptionDataBySubgraphName: Map<SubgraphName, ConfigureDescriptionData>;
directivesByDirectiveName: Map<DirectiveName, Array<ConstDirectiveNode>>;
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>;
extensionType: ExtensionType;
kind: Kind.UNION_TYPE_DEFINITION;
name: TypeName;
Expand Down
49 changes: 21 additions & 28 deletions composition/src/schema-building/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ import { DEFAULT_DEPRECATION_REASON } from 'graphql';
export function newPersistedDirectivesData(): PersistedDirectivesData {
return {
deprecatedReason: '',
directivesByDirectiveName: new Map<DirectiveName, ConstDirectiveNode[]>(),
directivesByName: new Map<DirectiveName, Array<ConstDirectiveNode>>(),
isDeprecated: false,
tagDirectiveByName: new Map<string, ConstDirectiveNode>(),
};
Expand All @@ -100,11 +100,11 @@ type IsNodeExternalOrShareableResult = {
export function isNodeExternalOrShareable(
node: ObjectTypeNode | FieldDefinitionNode,
areAllFieldsShareable: boolean,
directivesByDirectiveName: Map<DirectiveName, ConstDirectiveNode[]>,
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>,
): IsNodeExternalOrShareableResult {
const result: IsNodeExternalOrShareableResult = {
isExternal: directivesByDirectiveName.has(EXTERNAL),
isShareable: areAllFieldsShareable || directivesByDirectiveName.has(SHAREABLE),
isExternal: directivesByName.has(EXTERNAL),
isShareable: areAllFieldsShareable || directivesByName.has(SHAREABLE),
};
if (!node.directives?.length) {
return result;
Expand Down Expand Up @@ -224,7 +224,7 @@ type ChildDefinitionNode = EnumValueDefinitionNode | FieldDefinitionNode | Input
function propagateFieldDataArguments(fieldData: FieldData) {
for (const argumentData of fieldData.argumentDataByName.values()) {
// First propagate the argument's directives
for (const directiveNodes of argumentData.directivesByDirectiveName.values()) {
for (const directiveNodes of argumentData.directivesByName.values()) {
argumentData.node.directives.push(...directiveNodes);
}
fieldData.node.arguments.push(argumentData.node);
Expand All @@ -239,7 +239,7 @@ export function childMapToValueArray<T extends ChildData, U extends ChildDefinit
if (isFieldData(childData)) {
propagateFieldDataArguments(childData);
}
for (const [directiveName, directiveNodes] of childData.directivesByDirectiveName) {
for (const [directiveName, directiveNodes] of childData.directivesByName) {
if (directiveName === DEPRECATED) {
// @deprecated is non-repeatable
const directiveNode = directiveNodes[0];
Expand Down Expand Up @@ -341,12 +341,10 @@ export function propagateAuthDirectives(parentData: ParentDefinitionData, authDa
return;
}
if (authData.requiresAuthentication) {
parentData.persistedDirectivesData.directivesByDirectiveName.set(AUTHENTICATED, [
generateSimpleDirective(AUTHENTICATED),
]);
parentData.persistedDirectivesData.directivesByName.set(AUTHENTICATED, [generateSimpleDirective(AUTHENTICATED)]);
}
if (authData.requiredScopes.length > 0) {
parentData.persistedDirectivesData.directivesByDirectiveName.set(REQUIRES_SCOPES, [
parentData.persistedDirectivesData.directivesByName.set(REQUIRES_SCOPES, [
generateRequiresScopesDirective(authData.requiredScopes),
]);
}
Expand All @@ -361,12 +359,10 @@ export function propagateFieldAuthDirectives(fieldData: FieldData, authData?: Au
return;
}
if (fieldAuthData.originalData.requiresAuthentication) {
fieldData.persistedDirectivesData.directivesByDirectiveName.set(AUTHENTICATED, [
generateSimpleDirective(AUTHENTICATED),
]);
fieldData.persistedDirectivesData.directivesByName.set(AUTHENTICATED, [generateSimpleDirective(AUTHENTICATED)]);
}
if (fieldAuthData.originalData.requiredScopes.length > 0) {
fieldData.persistedDirectivesData.directivesByDirectiveName.set(REQUIRES_SCOPES, [
fieldData.persistedDirectivesData.directivesByName.set(REQUIRES_SCOPES, [
generateRequiresScopesDirective(fieldAuthData.originalData.requiredScopes),
]);
}
Expand All @@ -390,14 +386,14 @@ export function generateDeprecatedDirective(reason: string): ConstDirectiveNode
}

function getValidFlattenedPersistedDirectiveNodeArray(
directivesByDirectiveName: Map<DirectiveName, ConstDirectiveNode[]>,
persistedDirectiveDefinitionByDirectiveName: Map<DirectiveName, DirectiveDefinitionNode>,
directivesByName: Map<DirectiveName, Array<ConstDirectiveNode>>,
persistedDirectiveDefinitionByName: Map<DirectiveName, DirectiveDefinitionNode>,
directiveCoords: string,
errors: Error[],
): ConstDirectiveNode[] {
const persistedDirectiveNodes: ConstDirectiveNode[] = [];
for (const [directiveName, directiveNodes] of directivesByDirectiveName) {
const persistedDirectiveDefinition = persistedDirectiveDefinitionByDirectiveName.get(directiveName);
const persistedDirectiveNodes: Array<ConstDirectiveNode> = [];
for (const [directiveName, directiveNodes] of directivesByName) {
const persistedDirectiveDefinition = persistedDirectiveDefinitionByName.get(directiveName);
if (!persistedDirectiveDefinition) {
continue;
}
Expand All @@ -416,7 +412,7 @@ function getValidFlattenedPersistedDirectiveNodeArray(

function getRouterPersistedDirectiveNodes<T extends NodeData>(
nodeData: T,
persistedDirectiveDefinitionByDirectiveName: Map<string, DirectiveDefinitionNode>,
persistedDirectiveDefinitionByName: Map<DirectiveName, DirectiveDefinitionNode>,
errors: Error[],
): ConstDirectiveNode[] {
const persistedDirectiveNodes = [...nodeData.persistedDirectivesData.tagDirectiveByName.values()];
Expand All @@ -425,8 +421,8 @@ function getRouterPersistedDirectiveNodes<T extends NodeData>(
}
persistedDirectiveNodes.push(
...getValidFlattenedPersistedDirectiveNodeArray(
nodeData.persistedDirectivesData.directivesByDirectiveName,
persistedDirectiveDefinitionByDirectiveName,
nodeData.persistedDirectivesData.directivesByName,
persistedDirectiveDefinitionByName,
nodeData.name,
errors,
),
Expand All @@ -435,11 +431,11 @@ function getRouterPersistedDirectiveNodes<T extends NodeData>(
}

export function getClientPersistedDirectiveNodes<T extends NodeData>(nodeData: T): ConstDirectiveNode[] {
const persistedDirectiveNodes: ConstDirectiveNode[] = [];
const persistedDirectiveNodes: Array<ConstDirectiveNode> = [];
if (nodeData.persistedDirectivesData.isDeprecated) {
persistedDirectiveNodes.push(generateDeprecatedDirective(nodeData.persistedDirectivesData.deprecatedReason));
}
for (const [directiveName, directiveNodes] of nodeData.persistedDirectivesData.directivesByDirectiveName) {
for (const [directiveName, directiveNodes] of nodeData.persistedDirectivesData.directivesByName) {
if (directiveName === SEMANTIC_NON_NULL && isFieldData(nodeData)) {
persistedDirectiveNodes.push(
generateSemanticNonNullDirective(getFirstEntry(nodeData.nullLevelsBySubgraphName) ?? new Set<number>([0])),
Expand Down Expand Up @@ -657,10 +653,7 @@ export function isTypeValidImplementation(
}

export function isNodeDataInaccessible(data: NodeData): boolean {
return (
data.persistedDirectivesData.directivesByDirectiveName.has(INACCESSIBLE) ||
data.directivesByDirectiveName.has(INACCESSIBLE)
);
return data.persistedDirectivesData.directivesByName.has(INACCESSIBLE) || data.directivesByName.has(INACCESSIBLE);
}

export function isLeafKind(kind: Kind): boolean {
Expand Down
16 changes: 11 additions & 5 deletions composition/src/subgraph/types.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
import { DirectiveDefinitionNode, DocumentNode, GraphQLSchema, OperationTypeNode } from 'graphql';
import {
DirectiveDefinitionNode,
DocumentNode,
GraphQLSchema,
OperationTypeNode,
SchemaDefinitionNode,
SchemaExtensionNode,
} from 'graphql';
import { ConfigurationData } from '../router-configuration/types';
import {
ConditionalFieldData,
Expand All @@ -7,7 +14,6 @@ import {
PersistedDirectiveDefinitionData,
} from '../schema-building/types';
import { DirectiveName, FieldName, SubgraphName, TypeName } from '../types/types';
import { SchemaDefinitionNode, SchemaExtensionNode } from 'graphql/index';

export type Subgraph = {
definitions: DocumentNode;
Expand All @@ -31,11 +37,11 @@ export type InternalSubgraph = {
directiveDefinitionByName: Map<DirectiveName, DirectiveDefinitionNode>;
entityInterfaces: Map<string, EntityInterfaceSubgraphData>;
isVersionTwo: boolean;
keyFieldNamesByParentTypeName: Map<TypeName, Set<string>>;
name: string;
keyFieldNamesByParentTypeName: Map<TypeName, Set<FieldName>>;
name: SubgraphName;
operationTypes: Map<string, OperationTypeNode>;
overriddenFieldNamesByParentTypeName: Map<TypeName, Set<FieldName>>;
parentDefinitionDataByTypeName: Map<string, ParentDefinitionData>;
parentDefinitionDataByTypeName: Map<TypeName, ParentDefinitionData>;
persistedDirectiveDefinitionDataByDirectiveName: Map<DirectiveName, PersistedDirectiveDefinitionData>;
schema: GraphQLSchema;
schemaNode?: SchemaDefinitionNode | SchemaExtensionNode;
Expand Down
Loading
Loading