@apollo/federation
Version:
Apollo Federation Utilities
60 lines • 2.45 kB
TypeScript
import { GraphQLSchema, GraphQLError, TypeDefinitionNode, DirectiveDefinitionNode, TypeExtensionNode } from 'graphql';
import { CompositionResult } from './utils';
import { ServiceDefinition, ExternalFieldDefinition } from './types';
import type { ServiceNameToKeyDirectivesMap } from '../composition/types';
import { DirectiveMetadata } from './DirectiveMetadata';
interface TypeDefinitionsMap {
[name: string]: TypeDefinitionNode[];
}
interface TypeExtensionsMap {
[name: string]: TypeExtensionNode[];
}
interface DirectiveDefinitionsMap {
[name: string]: {
[serviceName: string]: DirectiveDefinitionNode;
};
}
interface TypeToServiceMap {
[typeName: string]: {
owningService?: string;
extensionFieldsToOwningServiceMap: {
[fieldName: string]: string;
};
};
}
export interface KeyDirectivesMap {
[typeName: string]: ServiceNameToKeyDirectivesMap;
}
declare type ValueTypes = Set<string>;
export declare function buildMapsFromServiceList(serviceList: ServiceDefinition[]): {
typeToServiceMap: TypeToServiceMap;
typeDefinitionsMap: TypeDefinitionsMap;
typeExtensionsMap: TypeExtensionsMap;
directiveDefinitionsMap: DirectiveDefinitionsMap;
externalFields: ExternalFieldDefinition[];
keyDirectivesMap: KeyDirectivesMap;
valueTypes: ValueTypes;
directiveMetadata: DirectiveMetadata;
};
export declare function buildSchemaFromDefinitionsAndExtensions({ typeDefinitionsMap, typeExtensionsMap, directiveDefinitionsMap, directiveMetadata, serviceList, }: {
typeDefinitionsMap: TypeDefinitionsMap;
typeExtensionsMap: TypeExtensionsMap;
directiveDefinitionsMap: DirectiveDefinitionsMap;
directiveMetadata: DirectiveMetadata;
serviceList: ServiceDefinition[];
}): {
schema: GraphQLSchema;
errors: GraphQLError[];
};
export declare function addFederationMetadataToSchemaNodes({ schema, typeToServiceMap, externalFields, keyDirectivesMap, valueTypes, directiveDefinitionsMap, directiveMetadata, }: {
schema: GraphQLSchema;
typeToServiceMap: TypeToServiceMap;
externalFields: ExternalFieldDefinition[];
keyDirectivesMap: KeyDirectivesMap;
valueTypes: ValueTypes;
directiveDefinitionsMap: DirectiveDefinitionsMap;
directiveMetadata: DirectiveMetadata;
}): void;
export declare function composeServices(services: ServiceDefinition[]): CompositionResult;
export {};
//# sourceMappingURL=compose.d.ts.map