1
1
/* @flow */
2
2
/* eslint-disable no-param-reassign, no-use-before-define */
3
3
4
- import { Resolver , TypeComposer } from 'graphql-compose' ;
5
- import type { ResolveParams , ProjectionType , ComposeFieldConfigArgumentMap } from 'graphql-compose' ;
4
+ import type {
5
+ Resolver ,
6
+ TypeComposer ,
7
+ ResolveParams , // eslint-disable-line
8
+ ProjectionType ,
9
+ ComposeFieldConfigArgumentMap ,
10
+ } from 'graphql-compose' ;
6
11
import type { GraphQLResolveInfo } from 'graphql-compose/lib/graphql' ;
7
12
import { prepareConnectionType } from './types/connectionType' ;
8
13
import { prepareSortType } from './types/sortInputType' ;
@@ -15,21 +20,21 @@ export type ConnectionSortOpts = {
15
20
beforeCursorQuery : (
16
21
rawQuery : any ,
17
22
cursorData : CursorDataType ,
18
- resolveParams : ConnectionResolveParams < * , * >
23
+ resolveParams : ConnectionResolveParams < any >
19
24
) => any ,
20
25
afterCursorQuery : (
21
26
rawQuery : any ,
22
27
cursorData : CursorDataType ,
23
- resolveParams : ConnectionResolveParams < * , * >
28
+ resolveParams : ConnectionResolveParams < any >
24
29
) => any ,
25
30
} ;
26
31
27
32
export type ConnectionSortMapOpts = {
28
33
[ sortName : string ] : ConnectionSortOpts ,
29
34
} ;
30
35
31
- export type ConnectionResolveParams < TSource , TContext > = {
32
- source : TSource ,
36
+ export type ConnectionResolveParams < TContext > = {
37
+ source : any ,
33
38
args : {
34
39
first ?: ?number ,
35
40
after ?: string ,
@@ -63,24 +68,24 @@ export type PageInfoType = {
63
68
hasNextPage : boolean ,
64
69
} ;
65
70
66
- export function prepareConnectionResolver < TSource , TContext > (
67
- typeComposer : TypeComposer ,
71
+ export function prepareConnectionResolver (
72
+ tc : TypeComposer ,
68
73
opts : ComposeWithConnectionOpts
69
74
) : Resolver {
70
- if ( ! typeComposer || typeComposer . constructor . name !== 'TypeComposer' ) {
75
+ if ( ! tc || tc . constructor . name !== 'TypeComposer' ) {
71
76
throw new Error ( 'First arg for prepareConnectionResolver() should be instance of TypeComposer' ) ;
72
77
}
73
78
74
79
if ( ! opts . countResolverName ) {
75
80
throw new Error (
76
- `TypeComposer ( ${typeComposer . getTypeName ( ) } ) provided to composeWithConnection ` +
81
+ `TypeComposer(${ tc . getTypeName ( ) } ) provided to composeWithConnection ` +
77
82
'should have option `opts.countResolverName`.'
78
83
) ;
79
84
}
80
- const countResolver = typeComposer .getResolver(opts.countResolverName);
85
+ const countResolver = tc . getResolver ( opts . countResolverName ) ;
81
86
if ( ! countResolver ) {
82
87
throw new Error (
83
- ` TypeComposer ( $ { typeComposer . getTypeName ( ) } ) provided to composeWithConnection ` +
88
+ `TypeComposer(${ tc . getTypeName ( ) } ) provided to composeWithConnection ` +
84
89
`should have resolver with name '${ opts . countResolverName } ' ` +
85
90
'due opts.countResolverName.'
86
91
) ;
@@ -89,14 +94,14 @@ export function prepareConnectionResolver<TSource, TContext>(
89
94
90
95
if ( ! opts . findResolverName ) {
91
96
throw new Error (
92
- ` TypeComposer ( $ { typeComposer . getTypeName ( ) } ) provided to composeWithConnection ` +
97
+ `TypeComposer(${ tc . getTypeName ( ) } ) provided to composeWithConnection ` +
93
98
'should have option `opts.findResolverName`.'
94
99
) ;
95
100
}
96
- const findManyResolver = typeComposer .getResolver(opts.findResolverName);
101
+ const findManyResolver = tc . getResolver ( opts . findResolverName ) ;
97
102
if ( ! findManyResolver ) {
98
103
throw new Error (
99
- ` TypeComposer ( $ { typeComposer . getTypeName ( ) } ) provided to composeWithConnection ` +
104
+ `TypeComposer(${ tc . getTypeName ( ) } ) provided to composeWithConnection ` +
100
105
`should have resolver with name '${ opts . findResolverName } ' ` +
101
106
'due opts.countResolverName.'
102
107
) ;
@@ -111,10 +116,10 @@ export function prepareConnectionResolver<TSource, TContext>(
111
116
}
112
117
}
113
118
114
- const sortEnumType = prepareSortType(typeComposer , opts);
119
+ const sortEnumType = prepareSortType ( tc , opts ) ;
115
120
116
- return new Resolver({
117
- type: prepareConnectionType(typeComposer ),
121
+ return new tc . constructor . schemaComposer . Resolver ( {
122
+ type : prepareConnectionType ( tc ) ,
118
123
name : 'connection' ,
119
124
kind : 'query' ,
120
125
args : {
@@ -142,13 +147,13 @@ export function prepareConnectionResolver<TSource, TContext>(
142
147
} ,
143
148
} ,
144
149
// eslint-disable-next-line
145
- resolve: async (
146
- resolveParams: $Shape<ConnectionResolveParams<TSource, TContext>>
150
+ resolve : async /* :: <TContext> */ (
151
+ resolveParams /* : $Shape<ConnectionResolveParams<TContext>> */
147
152
) => {
148
153
let countPromise ;
149
154
let findManyPromise ;
150
155
const { projection = { } , args, rawQuery } = resolveParams ;
151
- const findManyParams: $Shape<ResolveParams<TSource , TContext>> = {
156
+ const findManyParams /* : $Shape<ResolveParams<any , TContext>> */ = {
152
157
...resolveParams ,
153
158
} ;
154
159
@@ -161,7 +166,7 @@ export function prepareConnectionResolver<TSource, TContext>(
161
166
throw new Error ( 'Argument `last` should be non-negative number.' ) ;
162
167
}
163
168
164
- const countParams : $Shape < ResolveParams < TSource , TContext > > = {
169
+ const countParams /* : $Shape<ResolveParams<any , TContext>> */ = {
165
170
...resolveParams ,
166
171
rawQuery,
167
172
args : {
@@ -194,7 +199,7 @@ export function prepareConnectionResolver<TSource, TContext>(
194
199
195
200
if ( ! first && last ) {
196
201
// Get the number of edges targeted by the findMany resolver (not the whole count)
197
- const filteredCountParams : $Shape < ResolveParams < TSource , TContext >> = {
202
+ const filteredCountParams /* : $Shape<ResolveParams<any , TContext>> */ = {
198
203
...resolveParams ,
199
204
args : {
200
205
filter : { ...resolveParams . args . filter } ,
@@ -310,7 +315,7 @@ export function preparePageInfo(
310
315
}
311
316
312
317
export function prepareRawQuery (
313
- rp : $Shape < ConnectionResolveParams < * , * >> ,
318
+ rp : $Shape < ConnectionResolveParams < any >> ,
314
319
sortConfig : ConnectionSortOpts
315
320
) {
316
321
if ( ! rp . rawQuery ) {
@@ -335,7 +340,7 @@ export function prepareRawQuery(
335
340
}
336
341
337
342
export function prepareLimitSkipFallback (
338
- rp : $Shape < ConnectionResolveParams < * , * >> ,
343
+ rp : $Shape < ConnectionResolveParams < any >> ,
339
344
limit : number ,
340
345
skip : number
341
346
) : [ number , number ] {
0 commit comments