@pothos/plugin-dataloader
Version:
A Pothos plugin for attaching dataloader to object types
29 lines • 5.32 kB
TypeScript
import type { FieldKind, FieldNullability, FieldRef, InputFieldMap, InterfaceParam, ObjectParam, OutputType, PluginName, SchemaTypes, ShapeFromTypeParam, TypeParam } from '@pothos/core';
import type { ImplementableLoadableNodeRef, LoadableNodeRef } from './refs';
import type { ImplementableLoadableInterfaceRef, LoadableInterfaceRef } from './refs/interface';
import type { ImplementableLoadableObjectRef, LoadableObjectRef } from './refs/object';
import type { LoadableUnionRef } from './refs/union';
import type { DataLoaderOptions, DataloaderObjectTypeOptions, LoadableFieldOptions, LoadableNodeId, LoadableNodeOptions } from './types';
import type { LoadableGroupFieldOptions, LoadableInterfaceOptions, LoadableListFieldOptions, LoadableUnionOptions, PothosDataloaderPlugin, ShapeFromLoadResult } from '.';
declare global {
export namespace PothosSchemaTypes {
interface Plugins<Types extends SchemaTypes> {
dataloader: PothosDataloaderPlugin<Types>;
}
interface SchemaBuilder<Types extends SchemaTypes> {
loadableObject: <LoadResult extends NameOrRef extends ObjectParam<Types> ? ShapeFromTypeParam<Types, NameOrRef, false> | Error : unknown, Key extends bigint | number | string, Interfaces extends InterfaceParam<Types>[], NameOrRef extends ObjectParam<Types> | string, CacheKey = Key, Shape = ShapeFromLoadResult<LoadResult>>(nameOrRef: NameOrRef, options: DataloaderObjectTypeOptions<Types, LoadResult, Key, Interfaces, NameOrRef, CacheKey, Shape>) => LoadableObjectRef<Types, Key | Shape, Shape, Key, CacheKey>;
loadableInterface: <LoadResult extends NameOrRef extends InterfaceParam<Types> ? ShapeFromTypeParam<Types, NameOrRef, false> | Error : unknown, Key extends bigint | number | string, Interfaces extends InterfaceParam<Types>[], NameOrRef extends InterfaceParam<Types> | string, CacheKey = Key, Shape = ShapeFromLoadResult<LoadResult>>(nameOrRef: NameOrRef, options: LoadableInterfaceOptions<Types, LoadResult, Key, Interfaces, NameOrRef, CacheKey, Shape>) => LoadableInterfaceRef<Types, Key | Shape, Shape, Key, CacheKey>;
loadableObjectRef: <Shape, Key extends bigint | number | string, CacheKey = Key>(name: string, options: DataLoaderOptions<Types, Shape | Error, Key, CacheKey, Shape>) => ImplementableLoadableObjectRef<Types, Key | Shape, Shape, Key, CacheKey>;
loadableInterfaceRef: <Shape, Key extends bigint | number | string, CacheKey = Key>(name: string, options: DataLoaderOptions<Types, Shape | Error, Key, CacheKey, Shape>) => ImplementableLoadableInterfaceRef<Types, Key | Shape, Shape, Key, CacheKey>;
loadableNodeRef: <Shape, IDShape extends bigint | number | string = string, Key extends bigint | number | string = IDShape, CacheKey = Key>(name: string, options: DataLoaderOptions<Types, Shape | Error, Key, CacheKey, Shape> & LoadableNodeId<Types, Shape, IDShape>) => ImplementableLoadableNodeRef<Types, Key | Shape, Shape, IDShape, Key, CacheKey>;
loadableUnion: <Key extends bigint | number | string, Member extends ObjectParam<Types>, CacheKey = Key, Shape = ShapeFromTypeParam<Types, Member, false>>(name: string, options: LoadableUnionOptions<Types, Key, Member, CacheKey, Shape>) => LoadableUnionRef<Types, Key | Shape, Shape, Key, CacheKey>;
loadableNode: 'relay' extends PluginName ? <LoadResult extends NameOrRef extends ObjectParam<Types> ? ShapeFromTypeParam<Types, NameOrRef, false> | Error : unknown, Interfaces extends InterfaceParam<Types>[], NameOrRef extends ObjectParam<Types> | string, IDShape extends bigint | number | string = string, Key extends bigint | number | string = IDShape, CacheKey = Key, Shape = ShapeFromLoadResult<LoadResult>>(nameOrRef: NameOrRef, options: LoadableNodeOptions<Types, LoadResult, Interfaces, NameOrRef, IDShape, Key, CacheKey, Shape>) => LoadableNodeRef<Types, Key | Shape, Shape, IDShape, Key, CacheKey> : '@pothos/plugin-relay is required to use this method';
}
interface RootFieldBuilder<Types extends SchemaTypes, ParentShape, Kind extends FieldKind = FieldKind> {
loadable: <Args extends InputFieldMap, Type extends TypeParam<Types>, Key, CacheKey, ResolveReturnShape, Nullable extends FieldNullability<Type> = Types['DefaultFieldNullability'], ByPath extends boolean = boolean>(options: LoadableFieldOptions<Types, ParentShape, Type, Nullable, Args, ResolveReturnShape, Key, CacheKey, Kind, ByPath>) => FieldRef<Types, unknown, Kind>;
loadableList: <Args extends InputFieldMap, Type extends OutputType<Types>, Key, CacheKey, ResolveReturnShape, Nullable extends FieldNullability<[Type]> = Types['DefaultFieldNullability'], ByPath extends boolean = boolean>(options: LoadableListFieldOptions<Types, ParentShape, Type, Nullable, Args, ResolveReturnShape, Key, CacheKey, Kind, ByPath>) => FieldRef<Types, unknown>;
loadableGroup: <Args extends InputFieldMap, Type extends OutputType<Types>, Key, CacheKey, ResolveReturnShape, Nullable extends FieldNullability<[Type]> = Types['DefaultFieldNullability'], ByPath extends boolean = boolean>(options: LoadableGroupFieldOptions<Types, ParentShape, Type, Nullable, Args, ResolveReturnShape, Key, CacheKey, Kind, ByPath>) => FieldRef<Types, unknown>;
}
}
}
//# sourceMappingURL=global-types.d.ts.map