UNPKG

nexus

Version:

Scalable, strongly typed GraphQL schema development

36 lines (31 loc) 1.09 kB
import { assertValidName } from 'graphql' import type { GetGen } from '../typegenTypeHelpers' import type { InputDefinitionBlock } from './definitionBlocks' import { NexusTypes, withNexusSymbol } from './_types' export interface NexusExtendInputTypeConfig<TypeName extends string> { type: TypeName definition(t: InputDefinitionBlock<TypeName>): void } export class NexusExtendInputTypeDef<TypeName extends string> { constructor(readonly name: TypeName, protected config: NexusExtendInputTypeConfig<any> & { name: string }) { assertValidName(name) } get value() { return this.config } } withNexusSymbol(NexusExtendInputTypeDef, NexusTypes.ExtendInputObject) /** * Adds new fields to an existing inputObjectType in the schema. Useful when splitting your schema across * several domains. * * @see https://nexusjs.org/docs/api/extend-type */ export function extendInputType<TypeName extends GetGen<'inputNames', string>>( config: NexusExtendInputTypeConfig<TypeName> ) { return new NexusExtendInputTypeDef(config.type, { ...config, name: config.type, }) }