UNPKG

nexus

Version:

Scalable, strongly typed GraphQL schema development

101 lines (100 loc) 3.39 kB
import type { FieldOutConfig, OutputDefinitionBlock } from './definitionBlocks'; import { NexusExtendTypeDef } from './extendType'; export declare type QueryFieldConfig<FieldName extends string> = FieldOutConfig<'Query', FieldName> | (() => FieldOutConfig<'Query', FieldName>); /** * [API Docs](https://nexusjs.org/docs/api/query-field) | [2018 GraphQL * Spec](https://spec.graphql.org/June2018/#sec-Query) * * Define one or more fields on the Query type. * * The Query type is one of three [root types](https://spec.graphql.org/June2018/#sec-Root-Operation-Types) in * GraphQL and its fields represent API operations your clients can run that must not have side-effects. * * Use this instead of queryType if you are going to modularize your schema and thus be wanting to contribute * fields to Query type from multiple modules. You do not have to have previously defined a Query type before * using this. If you haven't Nexus will create one automatically for you. * * This is shorthand for: * * `extendType({ type: 'Query' })` * * If you need to leverage plugins or define multiple fields then use the typeBuilder overload variant of this * function. Otherwise you may prefer to the field name/config variant. * * @example * // User.ts * // Overload 1: Type Builder * * queryField((t) => { * t.field('user', { * type: 'User', * args: { * id: idArg(), * }, * // ... * }) * }) * * @example * // User.ts * // Overload 2: Field Name/Config * * queryField('user', { * type: 'User', * args: { * id: idArg(), * }, * // ... * }) * * @param typeBuilder The same as the "definition" method you define on object type configurations. */ export declare function queryField(typeBuilder: (t: OutputDefinitionBlock<'Query'>) => void): NexusExtendTypeDef<'Query'>; /** * [API Docs](https://nexusjs.org/docs/api/query-field) | [2018 GraphQL * Spec](https://spec.graphql.org/June2018/#sec-Query) * * Define one or more fields on the Query type. * * Use this if you are going to modularize your schema and thus be wanting to contribute fields to Query type * from multiple modules. You do not have to have previously defined a Query type before using this. If you * haven't Nexus will create one automatically for you. * * This is shorthand for: * * `extendType({ type: 'Query' })` * * If you need to leverage plugins or define multiple fields then use the typeBuilder overload variant of this * function. Otherwise you may prefer to the field name/config variant. * * @example * // User.ts * // Overload 1: Type Builder * * queryField((t) => { * t.field('user', { * type: 'User', * args: { * id: idArg(), * }, * // ... * }) * }) * * @example * // User.ts * // Overload 2: Field Name/Config * * queryField('user', { * type: 'User', * args: { * id: idArg(), * }, * // ... * }) * * @param name The name of the field on the Query type. Names are case‐sensitive and must conform to pattern: * `[_A-Za-z][_0-9A-Za-z]*` * @param config The same type of configuration you would pass to t.field("...", config) */ export declare function queryField<FieldName extends string>(name: FieldName, config: QueryFieldConfig<FieldName>): NexusExtendTypeDef<'Query'>;