Skip to content

Commit 5245a8c

Browse files
committed
feat: add support for schemaComposer, fix flowtype errors
BREAKING CHANGE: required min version of graphql-compose@3.0.0
1 parent 33c9ef2 commit 5245a8c

File tree

2 files changed

+31
-26
lines changed

2 files changed

+31
-26
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
},
2424
"homepage": "https://github.com/nodkz/graphql-compose-connection",
2525
"peerDependencies": {
26-
"graphql-compose": ">=2.9.5 || >=3.0.0"
26+
"graphql-compose": ">=3.0.0"
2727
},
2828
"devDependencies": {
2929
"babel-cli": "^6.26.0",

src/connectionResolver.js

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
/* @flow */
22
/* eslint-disable no-param-reassign, no-use-before-define */
33

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';
611
import type { GraphQLResolveInfo } from 'graphql-compose/lib/graphql';
712
import { prepareConnectionType } from './types/connectionType';
813
import { prepareSortType } from './types/sortInputType';
@@ -15,21 +20,21 @@ export type ConnectionSortOpts = {
1520
beforeCursorQuery: (
1621
rawQuery: any,
1722
cursorData: CursorDataType,
18-
resolveParams: ConnectionResolveParams<*, *>
23+
resolveParams: ConnectionResolveParams<any>
1924
) => any,
2025
afterCursorQuery: (
2126
rawQuery: any,
2227
cursorData: CursorDataType,
23-
resolveParams: ConnectionResolveParams<*, *>
28+
resolveParams: ConnectionResolveParams<any>
2429
) => any,
2530
};
2631

2732
export type ConnectionSortMapOpts = {
2833
[sortName: string]: ConnectionSortOpts,
2934
};
3035

31-
export type ConnectionResolveParams<TSource, TContext> = {
32-
source: TSource,
36+
export type ConnectionResolveParams<TContext> = {
37+
source: any,
3338
args: {
3439
first?: ?number,
3540
after?: string,
@@ -63,24 +68,24 @@ export type PageInfoType = {
6368
hasNextPage: boolean,
6469
};
6570

66-
export function prepareConnectionResolver<TSource, TContext>(
67-
typeComposer: TypeComposer,
71+
export function prepareConnectionResolver(
72+
tc: TypeComposer,
6873
opts: ComposeWithConnectionOpts
6974
): Resolver {
70-
if (!typeComposer || typeComposer.constructor.name !== 'TypeComposer') {
75+
if (!tc || tc.constructor.name !== 'TypeComposer') {
7176
throw new Error('First arg for prepareConnectionResolver() should be instance of TypeComposer');
7277
}
7378

7479
if (!opts.countResolverName) {
7580
throw new Error(
76-
`TypeComposer(${typeComposer.getTypeName()}) provided to composeWithConnection ` +
81+
`TypeComposer(${tc.getTypeName()}) provided to composeWithConnection ` +
7782
'should have option `opts.countResolverName`.'
7883
);
7984
}
80-
const countResolver = typeComposer.getResolver(opts.countResolverName);
85+
const countResolver = tc.getResolver(opts.countResolverName);
8186
if (!countResolver) {
8287
throw new Error(
83-
`TypeComposer(${typeComposer.getTypeName()}) provided to composeWithConnection ` +
88+
`TypeComposer(${tc.getTypeName()}) provided to composeWithConnection ` +
8489
`should have resolver with name '${opts.countResolverName}' ` +
8590
'due opts.countResolverName.'
8691
);
@@ -89,14 +94,14 @@ export function prepareConnectionResolver<TSource, TContext>(
8994

9095
if (!opts.findResolverName) {
9196
throw new Error(
92-
`TypeComposer(${typeComposer.getTypeName()}) provided to composeWithConnection ` +
97+
`TypeComposer(${tc.getTypeName()}) provided to composeWithConnection ` +
9398
'should have option `opts.findResolverName`.'
9499
);
95100
}
96-
const findManyResolver = typeComposer.getResolver(opts.findResolverName);
101+
const findManyResolver = tc.getResolver(opts.findResolverName);
97102
if (!findManyResolver) {
98103
throw new Error(
99-
`TypeComposer(${typeComposer.getTypeName()}) provided to composeWithConnection ` +
104+
`TypeComposer(${tc.getTypeName()}) provided to composeWithConnection ` +
100105
`should have resolver with name '${opts.findResolverName}' ` +
101106
'due opts.countResolverName.'
102107
);
@@ -111,10 +116,10 @@ export function prepareConnectionResolver<TSource, TContext>(
111116
}
112117
}
113118

114-
const sortEnumType = prepareSortType(typeComposer, opts);
119+
const sortEnumType = prepareSortType(tc, opts);
115120

116-
return new Resolver({
117-
type: prepareConnectionType(typeComposer),
121+
return new tc.constructor.schemaComposer.Resolver({
122+
type: prepareConnectionType(tc),
118123
name: 'connection',
119124
kind: 'query',
120125
args: {
@@ -142,13 +147,13 @@ export function prepareConnectionResolver<TSource, TContext>(
142147
},
143148
},
144149
// eslint-disable-next-line
145-
resolve: async (
146-
resolveParams: $Shape<ConnectionResolveParams<TSource, TContext>>
150+
resolve: async /* :: <TContext> */(
151+
resolveParams/* : $Shape<ConnectionResolveParams<TContext>> */
147152
) => {
148153
let countPromise;
149154
let findManyPromise;
150155
const { projection = {}, args, rawQuery } = resolveParams;
151-
const findManyParams: $Shape<ResolveParams<TSource, TContext>> = {
156+
const findManyParams /* : $Shape<ResolveParams<any, TContext>> */ = {
152157
...resolveParams,
153158
};
154159

@@ -161,7 +166,7 @@ export function prepareConnectionResolver<TSource, TContext>(
161166
throw new Error('Argument `last` should be non-negative number.');
162167
}
163168

164-
const countParams: $Shape<ResolveParams<TSource, TContext>> = {
169+
const countParams /* : $Shape<ResolveParams<any, TContext>> */ = {
165170
...resolveParams,
166171
rawQuery,
167172
args: {
@@ -194,7 +199,7 @@ export function prepareConnectionResolver<TSource, TContext>(
194199

195200
if (!first && last) {
196201
// 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>> */ = {
198203
...resolveParams,
199204
args: {
200205
filter: { ...resolveParams.args.filter },
@@ -310,7 +315,7 @@ export function preparePageInfo(
310315
}
311316

312317
export function prepareRawQuery(
313-
rp: $Shape<ConnectionResolveParams<*, *>>,
318+
rp: $Shape<ConnectionResolveParams<any>>,
314319
sortConfig: ConnectionSortOpts
315320
) {
316321
if (!rp.rawQuery) {
@@ -335,7 +340,7 @@ export function prepareRawQuery(
335340
}
336341

337342
export function prepareLimitSkipFallback(
338-
rp: $Shape<ConnectionResolveParams<*, *>>,
343+
rp: $Shape<ConnectionResolveParams<any>>,
339344
limit: number,
340345
skip: number
341346
): [number, number] {

0 commit comments

Comments
 (0)