-
-
Notifications
You must be signed in to change notification settings - Fork 154
/
schema-types.ts
117 lines (109 loc) · 4.09 KB
/
schema-types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-interface */
import type { GraphQLDirective } from 'graphql';
import type { PluginConstructorMap } from '../plugins';
import type { MergedScalars, SchemaTypes, V3DefaultScalars } from '../schema-types';
import type { IsStrictMode, RecursivelyNormalizeNullableFields } from '../utils';
import { InferredFieldOptionsKind } from '../builder-options';
declare global {
export namespace PothosSchemaTypes {
export interface SchemaBuilderOptions<Types extends SchemaTypes> {
plugins?: (keyof PluginConstructorMap<Types>)[];
defaultFieldNullability: Types['Defaults'] extends 'v3'
? false extends Types['DefaultFieldNullability']
? never
: Types['DefaultFieldNullability']
: true extends Types['DefaultFieldNullability']
? never
: Types['DefaultFieldNullability'];
defaultInputFieldRequiredness: false extends Types['DefaultInputFieldRequiredness']
? never
: Types['DefaultInputFieldRequiredness'];
notStrict: IsStrictMode extends true
? never
: 'Pothos may not work correctly when strict mode is not enabled in tsconfig.json';
defaults: SchemaTypes['Defaults'] extends Types['Defaults'] ? never : Types['Defaults'];
}
export interface V3SchemaBuilderOptions<Types extends SchemaTypes> {}
export interface V3DefaultSchemaTypes {
Scalars: V3DefaultScalars;
}
export interface BuildSchemaOptions<Types extends SchemaTypes> {
directives?: readonly GraphQLDirective[];
extensions?: Record<string, unknown>;
sortSchema?: boolean;
}
export interface Plugins<Types extends SchemaTypes> {}
export interface PothosKindToGraphQLType {
Object: 'Object';
Query: 'Object';
Mutation: 'Object';
Subscription: 'Object';
Interface: 'Interface';
Union: 'Union';
Enum: 'Enum';
Scalar: 'Scalar';
InputObject: 'InputObject';
}
export interface UserSchemaTypes {
Defaults: 'v3' | 'v4';
Scalars: Record<
string,
{
Input: unknown;
Output: unknown;
}
>;
Objects: {};
Inputs: {};
Interfaces: {};
Root: object;
Context: object;
DefaultFieldNullability: boolean;
DefaultInputFieldRequiredness: boolean;
InferredFieldOptionsKind: InferredFieldOptionsKind;
}
export interface ExtendDefaultTypes<PartialTypes extends Partial<UserSchemaTypes>>
extends SchemaTypes {
Defaults: PartialTypes['Defaults'] & SchemaTypes['Defaults'];
Scalars: MergedScalars<PartialTypes>;
Objects: PartialTypes['Objects'] & {};
Inputs: PartialTypes['Inputs'] & {};
Interfaces: PartialTypes['Interfaces'] & {};
Root: PartialTypes['Root'] & {};
Context: PartialTypes['Context'] & {};
InferredFieldOptionsKind: PartialTypes['InferredFieldOptionsKind'] extends InferredFieldOptionsKind
? PartialTypes['InferredFieldOptionsKind']
: 'Resolve';
DefaultFieldNullability: PartialTypes['Defaults'] extends 'v3'
? PartialTypes['DefaultFieldNullability'] extends true
? true
: false
: PartialTypes['DefaultFieldNullability'] extends false
? false
: true;
DefaultInputFieldRequiredness: PartialTypes['DefaultInputFieldRequiredness'] extends true
? true
: false;
outputShapes: {
[K in keyof MergedScalars<PartialTypes>]: MergedScalars<PartialTypes>[K] extends {
Output: infer T;
}
? T
: never;
} & {
[K in keyof PartialTypes['Objects']]: PartialTypes['Objects'][K];
} & { [K in keyof PartialTypes['Interfaces']]: PartialTypes['Interfaces'][K] };
inputShapes: {
[K in keyof MergedScalars<PartialTypes>]: MergedScalars<PartialTypes>[K] extends {
Input: infer T;
}
? T
: never;
} & {
[K in keyof PartialTypes['Inputs']]: RecursivelyNormalizeNullableFields<
PartialTypes['Inputs'][K]
>;
};
}
}
}