@graphql-mesh/fusion-composition
Version:
Basic composition utility for Fusion spec
69 lines (68 loc) • 2.64 kB
TypeScript
import { type GraphQLFieldConfig, type GraphQLInputFieldConfig, type GraphQLNamedType, type GraphQLSchema } from 'graphql';
import { MapperKind } from '@graphql-tools/utils';
import type { SubgraphConfig, SubgraphTransform } from '../compose.js';
export declare const ignoreList: string[];
export type TypeRenamer = (opts: {
typeName: string;
type: GraphQLNamedType;
subgraphConfig: SubgraphConfig;
}) => string;
export type FieldRenamer = (opts: {
typeName: string;
fieldName: string;
type: GraphQLNamedType;
field: GraphQLFieldConfig<any, any> | GraphQLInputFieldConfig;
subgraphConfig: SubgraphConfig;
}) => string;
export type ArgumentRenamer = (opts: {
typeName: string;
fieldName: string;
argName: string;
subgraphConfig: SubgraphConfig;
}) => string;
export interface RenameTransformConfig {
renames?: RenameTransformObject[];
typeRenamer?: TypeRenamer;
fieldRenamer?: FieldRenamer;
argRenamer?: ArgumentRenamer;
}
export interface RenameTransformObject {
from: RenameConfig;
to: RenameConfig;
/**
* Use regular expression to match the type name
* @default false
*/
useRegExpForTypes?: boolean;
/**
* Use regular expression to match the field name
* @default false
*/
useRegExpForFields?: boolean;
/**
* Use regular expression to match the argument name
* @default false
*/
useRegExpForArguments?: boolean;
/**
* Flags to use in the Regular Expression
*/
regExpFlags?: string;
/**
* Flag to indicate whether certain default types (built-ins, scalars and other types specified an exclusion list) should be renamed or not.
*
* @default false
*/
includeDefaults?: boolean;
}
export interface RenameConfig {
type?: string;
field?: string;
argument?: string;
}
export declare function createRenameTransform(opts: RenameTransformConfig): (schema: GraphQLSchema, subgraphConfig: SubgraphConfig) => GraphQLSchema;
type MapperTypeKind = MapperKind.ROOT_OBJECT | MapperKind.OBJECT_TYPE | MapperKind.INTERFACE_TYPE | MapperKind.UNION_TYPE | MapperKind.ENUM_TYPE | MapperKind.INPUT_OBJECT_TYPE | MapperKind.SCALAR_TYPE | MapperKind.TYPE;
export declare function createRenameTypeTransform(renameFn: TypeRenamer, kind?: MapperTypeKind): SubgraphTransform;
export type MapperFieldKind = MapperKind.FIELD | MapperKind.ROOT_FIELD | MapperKind.OBJECT_FIELD | MapperKind.INTERFACE_FIELD | MapperKind.INPUT_OBJECT_FIELD;
export declare function createRenameFieldTransform(renameFn: FieldRenamer, kind?: MapperFieldKind): SubgraphTransform;
export {};