@pothos/core
Version:
Pothos (formerly GiraphQL) is a plugin based schema builder for creating code-first GraphQL schemas in typescript
160 lines • 17.2 kB
TypeScript
import type { CompatibleTypes, ExposeNullability, FieldKind, FieldNullability, FieldOptionsFromKind, InferredFieldOptionKeys, NormalizeArgs, SchemaTypes, TypeParam } from '../types';
import { RootFieldBuilder } from './root';
export declare class FieldBuilder<Types extends SchemaTypes, ParentShape, Kind extends FieldKind = FieldKind> extends RootFieldBuilder<Types, ParentShape, Kind> {
/**
* Create a Boolean field from a boolean property on the parent object
* @param {string} name - the name of the property on the source object (does not need to match the field name).
* @param {object} [options={}] - Options for this field
*/
exposeBoolean<Name extends CompatibleTypes<Types, ParentShape, 'Boolean', true>, ResolveReturnShape, Nullable extends FieldNullability<'Boolean'> = Types['DefaultFieldNullability']>(name: Name, ...args: NormalizeArgs<[
options: ExposeNullability<Types, 'Boolean', ParentShape, Name, Nullable> & Omit<FieldOptionsFromKind<Types, ParentShape, 'Boolean', Nullable, {}, Kind, ParentShape, ResolveReturnShape>, 'nullable' | 'type' | InferredFieldOptionKeys>
]>): import("../refs/field").FieldRef<Types, FieldNullability<"Boolean"> extends Nullable ? Types["DefaultFieldNullability"] extends true ? ("Boolean" extends infer T ? T extends "Boolean" ? T extends keyof Types["outputShapes"] ? Types["outputShapes"][T] : T extends import("..").BaseEnum ? import("..").ValuesFromEnum<T> : never : never : never) | null | undefined : "Boolean" extends infer T_1 ? T_1 extends "Boolean" ? T_1 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_1] : T_1 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_1> : never : never : never : Nullable extends true ? ("Boolean" extends infer T_2 ? T_2 extends "Boolean" ? T_2 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_2] : T_2 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_2> : never : never : never) | null | undefined : "Boolean" extends infer T_3 ? T_3 extends "Boolean" ? T_3 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_3] : T_3 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_3> : never : never : never, Kind>;
/**
* Create a Float field from a numeric property on the parent object
* @param {string} name - the name of the property on the source object (does not need to match the field name).
* @param {object} [options={}] - Options for this field
*/
exposeFloat<Name extends CompatibleTypes<Types, ParentShape, 'Float', true>, ResolveReturnShape, Nullable extends FieldNullability<'Float'> = Types['DefaultFieldNullability']>(name: Name, ...args: NormalizeArgs<[
options: ExposeNullability<Types, 'Float', ParentShape, Name, Nullable> & Omit<FieldOptionsFromKind<Types, ParentShape, 'Float', Nullable, {}, Kind, ParentShape, ResolveReturnShape>, 'nullable' | 'type' | InferredFieldOptionKeys>
]>): import("../refs/field").FieldRef<Types, FieldNullability<"Float"> extends Nullable ? Types["DefaultFieldNullability"] extends true ? ("Float" extends infer T ? T extends "Float" ? T extends keyof Types["outputShapes"] ? Types["outputShapes"][T] : T extends import("..").BaseEnum ? import("..").ValuesFromEnum<T> : never : never : never) | null | undefined : "Float" extends infer T_1 ? T_1 extends "Float" ? T_1 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_1] : T_1 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_1> : never : never : never : Nullable extends true ? ("Float" extends infer T_2 ? T_2 extends "Float" ? T_2 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_2] : T_2 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_2> : never : never : never) | null | undefined : "Float" extends infer T_3 ? T_3 extends "Float" ? T_3 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_3] : T_3 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_3> : never : never : never, Kind>;
/**
* Create an ID field from a property on the parent object
* @param {string} name - the name of the property on the source object (does not need to match the field name).
* @param {object} [options={}] - Options for this field
*/
exposeID<Name extends CompatibleTypes<Types, ParentShape, 'ID', true>, ResolveReturnShape, Nullable extends FieldNullability<'ID'> = Types['DefaultFieldNullability']>(name: Name, ...args: NormalizeArgs<[
options: ExposeNullability<Types, 'ID', ParentShape, Name, Nullable> & Omit<FieldOptionsFromKind<Types, ParentShape, 'ID', Nullable, {}, Kind, ParentShape, ResolveReturnShape>, 'nullable' | 'type' | InferredFieldOptionKeys>
]>): import("../refs/field").FieldRef<Types, FieldNullability<"ID"> extends Nullable ? Types["DefaultFieldNullability"] extends true ? ("ID" extends infer T ? T extends "ID" ? T extends keyof Types["outputShapes"] ? Types["outputShapes"][T] : T extends import("..").BaseEnum ? import("..").ValuesFromEnum<T> : never : never : never) | null | undefined : "ID" extends infer T_1 ? T_1 extends "ID" ? T_1 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_1] : T_1 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_1> : never : never : never : Nullable extends true ? ("ID" extends infer T_2 ? T_2 extends "ID" ? T_2 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_2] : T_2 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_2> : never : never : never) | null | undefined : "ID" extends infer T_3 ? T_3 extends "ID" ? T_3 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_3] : T_3 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_3> : never : never : never, Kind>;
/**
* Create an Int field from a numeric property on the parent object
* @param {string} name - the name of the property on the source object (does not need to match the field name).
* @param {object} [options={}] - Options for this field
*/
exposeInt<Name extends CompatibleTypes<Types, ParentShape, 'Int', true>, ResolveReturnShape, Nullable extends FieldNullability<'Int'> = Types['DefaultFieldNullability']>(name: Name, ...args: NormalizeArgs<[
options: ExposeNullability<Types, 'Int', ParentShape, Name, Nullable> & Omit<FieldOptionsFromKind<Types, ParentShape, 'Int', Nullable, {}, Kind, ParentShape, ResolveReturnShape>, 'nullable' | 'type' | InferredFieldOptionKeys>
]>): import("../refs/field").FieldRef<Types, FieldNullability<"Int"> extends Nullable ? Types["DefaultFieldNullability"] extends true ? ("Int" extends infer T ? T extends "Int" ? T extends keyof Types["outputShapes"] ? Types["outputShapes"][T] : T extends import("..").BaseEnum ? import("..").ValuesFromEnum<T> : never : never : never) | null | undefined : "Int" extends infer T_1 ? T_1 extends "Int" ? T_1 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_1] : T_1 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_1> : never : never : never : Nullable extends true ? ("Int" extends infer T_2 ? T_2 extends "Int" ? T_2 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_2] : T_2 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_2> : never : never : never) | null | undefined : "Int" extends infer T_3 ? T_3 extends "Int" ? T_3 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_3] : T_3 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_3> : never : never : never, Kind>;
/**
* Create a String field from a string property on the parent object
* @param {string} name - the name of the property on the source object (does not need to match the field name).
* @param {object} [options={}] - Options for this field
*/
exposeString<Name extends CompatibleTypes<Types, ParentShape, 'String', true>, ResolveReturnShape, Nullable extends FieldNullability<'String'> = Types['DefaultFieldNullability']>(name: Name, ...args: NormalizeArgs<[
options: ExposeNullability<Types, 'String', ParentShape, Name, Nullable> & Omit<FieldOptionsFromKind<Types, ParentShape, 'String', Nullable, {}, Kind, ParentShape, ResolveReturnShape>, 'nullable' | 'type' | InferredFieldOptionKeys>
]>): import("../refs/field").FieldRef<Types, FieldNullability<"String"> extends Nullable ? Types["DefaultFieldNullability"] extends true ? ("String" extends infer T ? T extends "String" ? T extends keyof Types["outputShapes"] ? Types["outputShapes"][T] : T extends import("..").BaseEnum ? import("..").ValuesFromEnum<T> : never : never : never) | null | undefined : "String" extends infer T_1 ? T_1 extends "String" ? T_1 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_1] : T_1 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_1> : never : never : never : Nullable extends true ? ("String" extends infer T_2 ? T_2 extends "String" ? T_2 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_2] : T_2 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_2> : never : never : never) | null | undefined : "String" extends infer T_3 ? T_3 extends "String" ? T_3 extends keyof Types["outputShapes"] ? Types["outputShapes"][T_3] : T_3 extends import("..").BaseEnum ? import("..").ValuesFromEnum<T_3> : never : never : never, Kind>;
/**
* Create a Boolean list field from a boolean[] property on the parent object
* @param {string} name - the name of the property on the source object (does not need to match the field name).
* @param {object} [options={}] - Options for this field
*/
exposeBooleanList<Name extends CompatibleTypes<Types, ParentShape, ['Boolean'], {
list: true;
items: true;
}>, ResolveReturnShape, Nullable extends FieldNullability<['Boolean']> = Types['DefaultFieldNullability']>(name: Name, ...args: NormalizeArgs<[
options: ExposeNullability<Types, ['Boolean'], ParentShape, Name, Nullable> & Omit<FieldOptionsFromKind<Types, ParentShape, [
'Boolean'
], Nullable, {}, Kind, ParentShape, ResolveReturnShape>, 'nullable' | 'type' | InferredFieldOptionKeys>
]>): import("../refs/field").FieldRef<Types, import("..").ShapeFromTypeParam<Types, ["Boolean"], Nullable>, Kind>;
/**
* Create a Float list field from a number[] property on the parent object
* @param {string} name - the name of the property on the source object (does not need to match the field name).
* @param {object} [options={}] - Options for this field
*/
exposeFloatList<Name extends CompatibleTypes<Types, ParentShape, ['Float'], {
list: true;
items: true;
}>, ResolveReturnShape, Nullable extends FieldNullability<['Float']> = Types['DefaultFieldNullability']>(name: Name, ...args: NormalizeArgs<[
options: ExposeNullability<Types, ['Float'], ParentShape, Name, Nullable> & Omit<FieldOptionsFromKind<Types, ParentShape, [
'Float'
], Nullable, {}, Kind, ParentShape, ResolveReturnShape>, 'nullable' | 'type' | InferredFieldOptionKeys>
]>): import("../refs/field").FieldRef<Types, import("..").ShapeFromTypeParam<Types, ["Float"], Nullable>, Kind>;
/**
* Create an ID list field from an id[] property on the parent object
* @param {string} name - the name of the property on the source object (does not need to match the field name).
* @param {object} [options={}] - Options for this field
*/
exposeIDList<Name extends CompatibleTypes<Types, ParentShape, ['ID'], {
list: true;
items: true;
}>, ResolveReturnShape, Nullable extends FieldNullability<['ID']> = Types['DefaultFieldNullability']>(name: Name, ...args: NormalizeArgs<[
options: ExposeNullability<Types, ['ID'], ParentShape, Name, Nullable> & Omit<FieldOptionsFromKind<Types, ParentShape, [
'ID'
], Nullable, {}, Kind, ParentShape, ResolveReturnShape>, 'nullable' | 'type' | InferredFieldOptionKeys>
]>): import("../refs/field").FieldRef<Types, import("..").ShapeFromTypeParam<Types, ["ID"], Nullable>, Kind>;
/**
* Create a Int list field from a number[] property on the parent object
* @param {string} name - the name of the property on the source object (does not need to match the field name).
* @param {object} [options={}] - Options for this field
*/
exposeIntList<Name extends CompatibleTypes<Types, ParentShape, ['Int'], {
list: true;
items: true;
}>, ResolveReturnShape, Nullable extends FieldNullability<['Int']> = Types['DefaultFieldNullability']>(name: Name, ...args: NormalizeArgs<[
options: ExposeNullability<Types, ['Int'], ParentShape, Name, Nullable> & Omit<FieldOptionsFromKind<Types, ParentShape, [
'Int'
], Nullable, {}, Kind, ParentShape, ResolveReturnShape>, 'nullable' | 'type' | InferredFieldOptionKeys>
]>): import("../refs/field").FieldRef<Types, import("..").ShapeFromTypeParam<Types, ["Int"], Nullable>, Kind>;
/**
* Create a String list field from a string[] property on the parent object
* @param {string} name - the name of the property on the source object (does not need to match the field name).
* @param {object} [options={}] - Options for this field
*/
exposeStringList<Name extends CompatibleTypes<Types, ParentShape, ['String'], {
list: true;
items: true;
}>, ResolveReturnShape, Nullable extends FieldNullability<['String']> = Types['DefaultFieldNullability']>(name: Name, ...args: NormalizeArgs<[
options: ExposeNullability<Types, ['String'], ParentShape, Name, Nullable> & Omit<FieldOptionsFromKind<Types, ParentShape, [
'String'
], Nullable, {}, Kind, ParentShape, ResolveReturnShape>, 'nullable' | 'type' | InferredFieldOptionKeys>
]>): import("../refs/field").FieldRef<Types, import("..").ShapeFromTypeParam<Types, ["String"], Nullable>, Kind>;
/**
* Create a field that resolves to a property of the corresponding type on the parent object
* @param {string} name - the name of the property on the source object (does not need to match the field name).
* @param {object} [options={}] - Options for this field
*/
expose<Type extends TypeParam<Types>, Nullable extends FieldNullability<Type>, ResolveReturnShape, Name extends CompatibleTypes<Types, ParentShape, Type, Type extends [unknown] ? {
list: true;
items: true;
} : true>>(name: Name extends keyof ParentShape ? Name : keyof ParentShape, ...args: NormalizeArgs<[
options: ExposeNullability<Types, Type, ParentShape, Name, Nullable> & Omit<FieldOptionsFromKind<Types, ParentShape, Type, Nullable, {}, Kind, ParentShape, ResolveReturnShape>, 'nullable' | InferredFieldOptionKeys>
]>): import("../refs/field").FieldRef<Types, import("..").ShapeFromTypeParam<Types, FieldOptionsFromKind<Types, ParentShape, Type, Nullable, {}, Kind, ParentShape, ResolveReturnShape>["type"], (false & (Type extends [unknown] ? Awaited<ParentShape[Name]> extends readonly (infer T)[] | null | undefined ? [T] extends [NonNullable<T>] ? (readonly T[] | null | undefined) & Awaited<ParentShape[Name]> extends readonly T[] & Awaited<ParentShape[Name]> ? boolean | {
items: boolean;
list: boolean;
} : true | {
items: boolean;
list: true;
} : (readonly T[] | null | undefined) & Awaited<ParentShape[Name]> extends readonly T[] & Awaited<ParentShape[Name]> ? {
items: true;
list: boolean;
} : {
items: true;
list: true;
} : never : Awaited<ParentShape[Name]> extends NonNullable<Awaited<ParentShape[Name]>> ? boolean : true) & Nullable) | (true & (Type extends [unknown] ? Awaited<ParentShape[Name]> extends readonly (infer T)[] | null | undefined ? [T] extends [NonNullable<T>] ? (readonly T[] | null | undefined) & Awaited<ParentShape[Name]> extends readonly T[] & Awaited<ParentShape[Name]> ? boolean | {
items: boolean;
list: boolean;
} : true | {
items: boolean;
list: true;
} : (readonly T[] | null | undefined) & Awaited<ParentShape[Name]> extends readonly T[] & Awaited<ParentShape[Name]> ? {
items: true;
list: boolean;
} : {
items: true;
list: true;
} : never : Awaited<ParentShape[Name]> extends NonNullable<Awaited<ParentShape[Name]>> ? boolean : true) & Nullable) | ((Type extends [unknown] ? boolean | {
items: boolean;
list: boolean;
} : boolean) & (Type extends [unknown] ? Awaited<ParentShape[Name]> extends readonly (infer T)[] | null | undefined ? [T] extends [NonNullable<T>] ? (readonly T[] | null | undefined) & Awaited<ParentShape[Name]> extends readonly T[] & Awaited<ParentShape[Name]> ? boolean | {
items: boolean;
list: boolean;
} : true | {
items: boolean;
list: true;
} : (readonly T[] | null | undefined) & Awaited<ParentShape[Name]> extends readonly T[] & Awaited<ParentShape[Name]> ? {
items: true;
list: boolean;
} : {
items: true;
list: true;
} : never : Awaited<ParentShape[Name]> extends NonNullable<Awaited<ParentShape[Name]>> ? boolean : true) & Nullable)>, Kind>;
}
//# sourceMappingURL=builder.d.ts.map