@pothos/plugin-directives
Version:
Directive plugin for Pothos, enables using graphql-tools based directives with Pothos
131 lines (113 loc) • 4.14 kB
text/typescript
import type {
EnumValues,
FieldNullability,
FieldRequiredness,
InputFieldMap,
InputType,
InterfaceParam,
ObjectParam,
RootName,
SchemaTypes,
TypeParam,
} from '@pothos/core';
import type { DirectiveLocation, Directives } from './types';
import type { PothosDirectivesPlugin } from '.';
declare global {
export namespace PothosSchemaTypes {
export interface Plugins<Types extends SchemaTypes> {
directives: PothosDirectivesPlugin<Types>;
}
export interface UserSchemaTypes {
Directives: Record<
string,
{
locations: DirectiveLocation;
args?: Record<string, unknown>;
}
>;
}
export interface ExtendDefaultTypes<PartialTypes extends Partial<UserSchemaTypes>> {
Directives: PartialTypes['Directives'] & {};
}
export interface SchemaBuilderOptions<Types extends SchemaTypes> {
directives?: {
useGraphQLToolsUnorderedDirectives?: boolean;
};
}
export interface V3SchemaBuilderOptions<Types extends SchemaTypes> {
directives: never;
useGraphQLToolsUnorderedDirectives?: boolean;
}
export interface EnumTypeOptions<
Types extends SchemaTypes = SchemaTypes,
Values extends EnumValues<Types> = EnumValues<Types>,
> extends BaseTypeOptions<Types> {
directives?: Directives<Types, 'ENUM'>;
}
export interface ObjectTypeOptions<Types extends SchemaTypes = SchemaTypes, Shape = unknown>
extends BaseTypeOptions<Types> {
directives?: Directives<Types, 'OBJECT'>;
}
export interface RootTypeOptions<Types extends SchemaTypes, Type extends RootName>
extends BaseTypeOptions<Types> {
directives?: Directives<Types, 'OBJECT'>;
}
export interface InputObjectTypeOptions<
Types extends SchemaTypes = SchemaTypes,
Fields extends InputFieldMap = InputFieldMap,
> extends BaseTypeOptions<Types> {
directives?: Directives<Types, 'INPUT_OBJECT'>;
}
export interface InterfaceTypeOptions<
Types extends SchemaTypes = SchemaTypes,
Shape = unknown,
Interfaces extends InterfaceParam<Types>[] = InterfaceParam<Types>[],
> extends BaseTypeOptions<Types> {
directives?: Directives<Types, 'INTERFACE'>;
}
export interface UnionTypeOptions<
Types extends SchemaTypes = SchemaTypes,
Member extends ObjectParam<Types> = ObjectParam<Types>,
> extends BaseTypeOptions<Types> {
directives?: Directives<Types, 'UNION'>;
}
export interface ScalarTypeOptions<
Types extends SchemaTypes = SchemaTypes,
ScalarInputShape = unknown,
ScalarOutputShape = unknown,
> extends BaseTypeOptions<Types> {
directives?: Directives<Types, 'SCALAR'>;
}
export interface FieldOptions<
Types extends SchemaTypes = SchemaTypes,
ParentShape = unknown,
Type extends TypeParam<Types> = TypeParam<Types>,
Nullable extends FieldNullability<Type> = FieldNullability<Type>,
Args extends InputFieldMap = InputFieldMap,
ResolveShape = unknown,
ResolveReturnShape = unknown,
> {
directives?: Directives<Types, 'FIELD_DEFINITION'>;
}
export interface InputObjectFieldOptions<
Types extends SchemaTypes = SchemaTypes,
Type extends InputType<Types> | [InputType<Types>] = InputType<Types> | [InputType<Types>],
Req extends FieldRequiredness<Type> = FieldRequiredness<Type>,
> {
directives?: Directives<Types, 'INPUT_FIELD_DEFINITION'>;
}
export interface ArgFieldOptions<
Types extends SchemaTypes = SchemaTypes,
Type extends InputType<Types> | [InputType<Types>] = InputType<Types> | [InputType<Types>],
Req extends FieldRequiredness<Type> = FieldRequiredness<Type>,
> {
directives?: Directives<Types, 'ARGUMENT_DEFINITION'>;
}
export interface EnumValueConfig<Types extends SchemaTypes = SchemaTypes> {
directives?: Directives<Types, 'ENUM_VALUE'>;
}
export interface BuildSchemaOptions<Types extends SchemaTypes> {
schemaDirectives?: Directives<Types, 'SCHEMA'>;
}
}
}