@@ -2,13 +2,23 @@ import { Resolver, inspect } from 'graphql-compose';
2
2
import type {
3
3
ObjectTypeComposer ,
4
4
InterfaceTypeComposer ,
5
+ UnionTypeComposer ,
6
+ ScalarTypeComposer ,
7
+ EnumTypeComposer ,
5
8
ResolverResolveParams ,
6
9
ObjectTypeComposerArgumentConfigMap ,
7
10
} from 'graphql-compose' ;
8
11
import { preparePaginationTC } from './types' ;
9
12
10
13
export const DEFAULT_RESOLVER_NAME = 'pagination' ;
11
14
export const DEFAULT_PER_PAGE = 20 ;
15
+ const ALLOWED_TYPE_COMPOSERS = [
16
+ 'ObjectTypeComposer' ,
17
+ 'InterfaceTypeComposer' ,
18
+ 'UnionTypeComposer' ,
19
+ 'ScalarTypeComposer' ,
20
+ 'EnumTypeComposer' ,
21
+ ] ;
12
22
13
23
export type PaginationResolverOpts = {
14
24
findManyResolver : Resolver ;
@@ -40,12 +50,19 @@ export interface PaginationTArgs {
40
50
}
41
51
42
52
export function preparePaginationResolver < TSource , TContext > (
43
- tc : ObjectTypeComposer < TSource , TContext > | InterfaceTypeComposer < TSource , TContext > ,
53
+ tc :
54
+ | ObjectTypeComposer < TSource , TContext >
55
+ | InterfaceTypeComposer < TSource , TContext >
56
+ | UnionTypeComposer < TSource , TContext >
57
+ | ScalarTypeComposer < TContext >
58
+ | EnumTypeComposer < TContext > ,
44
59
opts : PaginationResolverOpts
45
60
) : Resolver < TSource , TContext , PaginationTArgs > {
46
- if ( ! tc || tc . constructor . name !== 'ObjectTypeComposer' ) {
61
+ if ( ! tc || ! ALLOWED_TYPE_COMPOSERS . includes ( tc . constructor . name ) ) {
47
62
throw new Error (
48
- 'First arg for prepareConnectionResolver() should be instance of ObjectTypeComposer'
63
+ `First arg for preparePaginationResolver() should be instance of ${ ALLOWED_TYPE_COMPOSERS . join (
64
+ ' or '
65
+ ) } `
49
66
) ;
50
67
}
51
68
0 commit comments