deno.land / x / pothos@release-1713397530 / packages / core / fieldUtils / builder.ts
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202// @ts-nocheckimport { CompatibleTypes, ExposeNullability, FieldKind, FieldNullability, FieldOptionsFromKind, NormalizeArgs, SchemaTypes, TypeParam, } from '../types/index.ts';import RootFieldBuilder from './root.ts';export default 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" | "resolve" | "type"> ]>) { const [options = {} as never] = args; return this.exposeField<"Boolean", Nullable, Name>(name, { ...options, type: "Boolean" }); } /** * 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" | "resolve" | "type"> ]>) { const [options = {} as never] = args; return this.exposeField<"Float", Nullable, Name>(name, { ...options, type: "Float" }); } /** * 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" | "resolve" | "type"> ]>) { const [options = {} as never] = args; return this.exposeField<"ID", Nullable, Name>(name, { ...options, type: "ID" }); } /** * 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" | "resolve" | "type"> ]>) { const [options = {} as never] = args; return this.exposeField<"Int", Nullable, Name>(name, { ...options, type: "Int" }); } /** * 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" | "resolve" | "type"> ]>) { const [options = {} as never] = args; return this.exposeField<"String", Nullable, Name>(name, { ...options, type: "String" }); } /** * 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" | "resolve" | "type"> ]>) { const [options = {} as never] = args; return this.exposeField<[ "Boolean" ], Nullable, Name>(name, { ...options, type: ["Boolean"] }); } /** * 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" | "resolve" | "type"> ]>) { const [options = {} as never] = args; return this.exposeField<[ "Float" ], Nullable, Name>(name, { ...options, type: ["Float"] }); } /** * 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" | "resolve" | "type"> ]>) { const [options = {} as never] = args; return this.exposeField<[ "ID" ], Nullable, Name>(name, { ...options, type: ["ID"] }); } /** * 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" | "resolve" | "type"> ]>) { const [options = {} as never] = args; return this.exposeField<[ "Int" ], Nullable, Name>(name, { ...options, type: ["Int"] }); } /** * 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" | "resolve" | "type"> ]>) { const [options = {} as never] = args; return this.exposeField<[ "String" ], Nullable, Name>(name, { ...options, type: ["String"] }); } /** * 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" | "resolve"> ]>) { const [options = {} as never] = args; return this.exposeField(name as never as CompatibleTypes<Types, ParentShape, Type, Type extends [ unknown ] ? { list: true; items: true; } : true>, options); }}
Version Info