graphql
Version:
A Query Language and Runtime which can target any service.
70 lines (69 loc) • 4.62 kB
text/typescript
import type { GraphQLArgumentNormalizedConfig, GraphQLEnumTypeNormalizedConfig, GraphQLEnumValueConfig, GraphQLFieldNormalizedConfig, GraphQLInputFieldConfig, GraphQLInputObjectTypeNormalizedConfig, GraphQLInterfaceTypeNormalizedConfig, GraphQLNamedType, GraphQLObjectTypeNormalizedConfig, GraphQLScalarTypeNormalizedConfig, GraphQLUnionTypeNormalizedConfig } from "../type/definition.mjs";
import type { GraphQLDirectiveNormalizedConfig } from "../type/directives.mjs";
import type { GraphQLSchemaNormalizedConfig } from "../type/schema.mjs";
/**
* The set of GraphQL Schema Elements.
*
* @internal
*/
export declare const SchemaElementKind: {
readonly SCHEMA: "SCHEMA";
readonly SCALAR: "SCALAR";
readonly OBJECT: "OBJECT";
readonly FIELD: "FIELD";
readonly ARGUMENT: "ARGUMENT";
readonly INTERFACE: "INTERFACE";
readonly UNION: "UNION";
readonly ENUM: "ENUM";
readonly ENUM_VALUE: "ENUM_VALUE";
readonly INPUT_OBJECT: "INPUT_OBJECT";
readonly INPUT_FIELD: "INPUT_FIELD";
readonly DIRECTIVE: "DIRECTIVE";
};
/** @internal */
type SchemaElementKind = (typeof SchemaElementKind)[keyof typeof SchemaElementKind];
/** @internal */
export interface MappedSchemaContext {
getNamedType: (typeName: string) => GraphQLNamedType;
setNamedType: (type: GraphQLNamedType) => void;
getNamedTypes: () => ReadonlyArray<GraphQLNamedType>;
}
type GraphQLScalarTypeMappedConfig = GraphQLScalarTypeNormalizedConfig<any, any>;
type EnsureThunks<T, ThunkFields extends keyof T> = {
[K in keyof T]: K extends ThunkFields ? () => T[K] : T[K];
};
type GraphQLObjectTypeMappedConfig = EnsureThunks<GraphQLObjectTypeNormalizedConfig<any, any>, 'interfaces' | 'fields'>;
type GraphQLInterfaceTypeMappedConfig = EnsureThunks<GraphQLInterfaceTypeNormalizedConfig<any, any>, 'interfaces' | 'fields'>;
type GraphQLUnionTypeMappedConfig = EnsureThunks<GraphQLUnionTypeNormalizedConfig<any, any>, 'types'>;
type GraphQLEnumTypeMappedConfig = EnsureThunks<GraphQLEnumTypeNormalizedConfig, 'values'>;
type GraphQLInputObjectTypeMappedConfig = EnsureThunks<GraphQLInputObjectTypeNormalizedConfig, 'fields'>;
type ScalarTypeConfigMapper = (scalarConfig: GraphQLScalarTypeMappedConfig) => GraphQLScalarTypeMappedConfig;
type ObjectTypeConfigMapper = (objectConfig: GraphQLObjectTypeMappedConfig) => GraphQLObjectTypeMappedConfig;
type FieldConfigMapper = (fieldConfig: GraphQLFieldNormalizedConfig<any, any>, parentTypeName: string) => GraphQLFieldNormalizedConfig<any, any>;
type ArgumentConfigMapper = (argConfig: GraphQLArgumentNormalizedConfig, fieldOrDirectiveName: string, parentTypeName?: string) => GraphQLArgumentNormalizedConfig;
type InterfaceTypeConfigMapper = (interfaceConfig: GraphQLInterfaceTypeMappedConfig) => GraphQLInterfaceTypeMappedConfig;
type UnionTypeConfigMapper = (unionConfig: GraphQLUnionTypeMappedConfig) => GraphQLUnionTypeMappedConfig;
type EnumTypeConfigMapper = (enumConfig: GraphQLEnumTypeMappedConfig) => GraphQLEnumTypeMappedConfig;
type EnumValueConfigMapper = (enumValueConfig: GraphQLEnumValueConfig, valueName: string, enumName: string) => GraphQLEnumValueConfig;
type InputObjectTypeConfigMapper = (inputObjectConfig: GraphQLInputObjectTypeMappedConfig) => GraphQLInputObjectTypeMappedConfig;
type InputFieldConfigMapper = (inputFieldConfig: GraphQLInputFieldConfig, inputFieldName: string, inputObjectTypeName: string) => GraphQLInputFieldConfig;
type DirectiveConfigMapper = (directiveConfig: GraphQLDirectiveNormalizedConfig) => GraphQLDirectiveNormalizedConfig;
type SchemaConfigMapper = (originalSchemaConfig: GraphQLSchemaNormalizedConfig) => GraphQLSchemaNormalizedConfig;
/** @internal */
export interface ConfigMapperMap {
[SchemaElementKind.SCALAR]?: ScalarTypeConfigMapper;
[SchemaElementKind.OBJECT]?: ObjectTypeConfigMapper;
[SchemaElementKind.FIELD]?: FieldConfigMapper;
[SchemaElementKind.ARGUMENT]?: ArgumentConfigMapper;
[SchemaElementKind.INTERFACE]?: InterfaceTypeConfigMapper;
[SchemaElementKind.UNION]?: UnionTypeConfigMapper;
[SchemaElementKind.ENUM]?: EnumTypeConfigMapper;
[SchemaElementKind.ENUM_VALUE]?: EnumValueConfigMapper;
[SchemaElementKind.INPUT_OBJECT]?: InputObjectTypeConfigMapper;
[SchemaElementKind.INPUT_FIELD]?: InputFieldConfigMapper;
[SchemaElementKind.DIRECTIVE]?: DirectiveConfigMapper;
[SchemaElementKind.SCHEMA]?: SchemaConfigMapper;
}
/** @internal */
export declare function mapSchemaConfig(schemaConfig: GraphQLSchemaNormalizedConfig, configMapperMapFn: (context: MappedSchemaContext) => ConfigMapperMap): GraphQLSchemaNormalizedConfig;
export {};