Skip to content

Commit 58939d4

Browse files
theasmothnodkz
andauthored
feat: allow UnionTypeComposer, ScalarTypeComposer, EnumTypeComposer to be as a source TC (#48)
* init * chore: fix typescript definitions * feat: allow ScalarTypeComposer & EnumTypeComposer to be as source TC Co-authored-by: nodkz <[email protected]>
1 parent 85dc8c7 commit 58939d4

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

src/pagination.ts

+20-3
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,23 @@ import { Resolver, inspect } from 'graphql-compose';
22
import type {
33
ObjectTypeComposer,
44
InterfaceTypeComposer,
5+
UnionTypeComposer,
6+
ScalarTypeComposer,
7+
EnumTypeComposer,
58
ResolverResolveParams,
69
ObjectTypeComposerArgumentConfigMap,
710
} from 'graphql-compose';
811
import { preparePaginationTC } from './types';
912

1013
export const DEFAULT_RESOLVER_NAME = 'pagination';
1114
export const DEFAULT_PER_PAGE = 20;
15+
const ALLOWED_TYPE_COMPOSERS = [
16+
'ObjectTypeComposer',
17+
'InterfaceTypeComposer',
18+
'UnionTypeComposer',
19+
'ScalarTypeComposer',
20+
'EnumTypeComposer',
21+
];
1222

1323
export type PaginationResolverOpts = {
1424
findManyResolver: Resolver;
@@ -40,12 +50,19 @@ export interface PaginationTArgs {
4050
}
4151

4252
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>,
4459
opts: PaginationResolverOpts
4560
): Resolver<TSource, TContext, PaginationTArgs> {
46-
if (!tc || tc.constructor.name !== 'ObjectTypeComposer') {
61+
if (!tc || !ALLOWED_TYPE_COMPOSERS.includes(tc.constructor.name)) {
4762
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+
)}`
4966
);
5067
}
5168

src/types.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ import {
33
ObjectTypeComposer,
44
SchemaComposer,
55
InterfaceTypeComposer,
6+
UnionTypeComposer,
7+
ScalarTypeComposer,
8+
EnumTypeComposer,
69
} from 'graphql-compose';
710

811
// PaginationInfo should be global
@@ -41,7 +44,12 @@ export function preparePaginationInfoTC<TContext>(
4144
}
4245

4346
export function preparePaginationTC<TSource, TContext>(
44-
tc: ObjectTypeComposer<TSource, TContext> | InterfaceTypeComposer<TSource, TContext>,
47+
tc:
48+
| ObjectTypeComposer<TSource, TContext>
49+
| InterfaceTypeComposer<TSource, TContext>
50+
| UnionTypeComposer<TSource, TContext>
51+
| ScalarTypeComposer<TContext>
52+
| EnumTypeComposer<TContext>,
4553
resolverName?: string
4654
): ObjectTypeComposer<TSource, TContext> {
4755
const schemaComposer = tc.schemaComposer;

0 commit comments

Comments
 (0)