Skip to content

Commit 8a4f709

Browse files
committed
fix(typing): expose type defs ComposeWithMongooseOpts and others
1 parent c3ef0ce commit 8a4f709

17 files changed

+139
-74
lines changed

src/composeWithMongoose.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
} from './resolvers/helpers';
1414
import { PaginationResolverOpts } from './resolvers/pagination';
1515

16-
export type TypeConverterOpts<TContext = any> = {
16+
export type ComposeWithMongooseOpts<TContext = any> = {
1717
schemaComposer?: SchemaComposer<TContext>;
1818
name?: string;
1919
description?: string;
@@ -116,7 +116,7 @@ export function composeWithMongoose<
116116
TContext = any
117117
>(
118118
model: Model<TModel>,
119-
opts?: TypeConverterOpts<TContext>,
119+
opts?: ComposeWithMongooseOpts<TContext>,
120120
): ObjectTypeComposer<TModel, TContext>;
121121

122122
export function prepareFields(

src/composeWithMongoose.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import MongoID from './types/mongoid';
1616
import type { PaginationResolverOpts } from './resolvers/pagination';
1717
import type { ConnectionSortMapOpts } from './resolvers/connection';
1818

19-
export type TypeConverterOpts<TContext> = {|
19+
export type ComposeWithMongooseOpts<TContext> = {|
2020
schemaComposer?: SchemaComposer<TContext>,
2121
name?: string,
2222
description?: string,
@@ -117,7 +117,7 @@ export type TypeConverterResolversOpts = {
117117

118118
export function composeWithMongoose<TSource, TContext>(
119119
model: Class<TSource>, // === MongooseModel,
120-
opts: TypeConverterOpts<TContext> = ({}: any)
120+
opts: ComposeWithMongooseOpts<TContext> = ({}: any)
121121
): ObjectTypeComposer<TSource, TContext> {
122122
const m: MongooseModel = (model: any);
123123
const name: string = (opts && opts.name) || m.modelName;
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import { Document, Model } from 'mongoose';
22
import {
3-
DiscriminatorOptions,
3+
ComposeWithMongooseDiscriminatorsOpts,
44
DiscriminatorTypeComposer,
55
} from './discriminators';
66

7+
export * from './discriminators';
8+
79
export function composeWithMongooseDiscriminators<
810
TBaseModel extends Document = any,
911
TContext = any
1012
>(
1113
baseModel: Model<TBaseModel>,
12-
opts?: DiscriminatorOptions<TContext>,
14+
opts?: ComposeWithMongooseDiscriminatorsOpts<TContext>,
1315
): DiscriminatorTypeComposer<TBaseModel, TContext>;

src/composeWithMongooseDiscriminators.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22

33
import { schemaComposer as globalSchemaComposer } from 'graphql-compose';
44
import type { MongooseModel } from 'mongoose';
5-
import { type DiscriminatorOptions, DiscriminatorTypeComposer } from './discriminators';
5+
import {
6+
type ComposeWithMongooseDiscriminatorsOpts,
7+
DiscriminatorTypeComposer,
8+
} from './discriminators';
9+
10+
export * from './discriminators';
611

712
export function composeWithMongooseDiscriminators<TSource, TContext>(
813
baseModel: Class<TSource>, // === MongooseModel,
9-
opts?: DiscriminatorOptions<TContext>
14+
opts?: ComposeWithMongooseDiscriminatorsOpts<TContext>
1015
): DiscriminatorTypeComposer<TSource, TContext> {
1116
const m: MongooseModel = (baseModel: any);
1217
const sc = (opts ? opts.schemaComposer : null) || globalSchemaComposer;

src/discriminators/DiscriminatorTypeComposer.d.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import {
99
ObjectTypeComposer,
1010
} from 'graphql-compose';
1111
import { Document, Model } from 'mongoose';
12-
import { TypeConverterOpts } from '../composeWithMongoose';
12+
import { ComposeWithMongooseOpts } from '../composeWithMongoose';
1313

14-
export type DiscriminatorOptions<TContext = any> = TypeConverterOpts<
15-
TContext
16-
> & {
14+
export type ComposeWithMongooseDiscriminatorsOpts<
15+
TContext = any
16+
> = ComposeWithMongooseOpts<TContext> & {
1717
reorderFields?: boolean | string[]; // true order: _id, DKey, DInterfaceFields, DiscriminatorFields
1818
};
1919

@@ -27,15 +27,15 @@ export class DiscriminatorTypeComposer<
2727

2828
private DKeyETC: EnumTypeComposer;
2929

30-
private opts: DiscriminatorOptions<TContext>;
30+
private opts: ComposeWithMongooseDiscriminatorsOpts<TContext>;
3131

3232
private DInterface: InterfaceTypeComposer<any>;
3333

3434
private childTCs: Array<ObjectTypeComposer<any>>;
3535

3636
public static createFromModel<TBModel extends Document, TCtx>(
3737
baseModel: Model<TBModel>,
38-
opts?: DiscriminatorOptions<TCtx>,
38+
opts?: ComposeWithMongooseDiscriminatorsOpts<TCtx>,
3939
): DiscriminatorTypeComposer<TBModel, TCtx>;
4040

4141
// ------------------------------------------------
@@ -51,7 +51,7 @@ export class DiscriminatorTypeComposer<
5151

5252
public discriminator<TChildModel extends TBaseModel>(
5353
childModel: Model<TChildModel>,
54-
opts?: TypeConverterOpts<TContext>,
54+
opts?: ComposeWithMongooseOpts<TContext>,
5555
): ObjectTypeComposer<TChildModel, TContext>;
5656

5757
// ------------------------------------------------
@@ -69,9 +69,7 @@ export class DiscriminatorTypeComposer<
6969

7070
public setFields(fields: ComposeFieldConfigMap<TBaseModel, TContext>): this;
7171

72-
public setFields(
73-
fields: ComposeFieldConfigMap<TBaseModel, TContext>,
74-
): this;
72+
public setFields(fields: ComposeFieldConfigMap<TBaseModel, TContext>): this;
7573

7674
// discriminators must have all interface fields
7775
public addFields(

src/discriminators/DiscriminatorTypeComposer.js

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ import {
1313
} from 'graphql-compose';
1414
import type { ComposeFieldConfigAsObject } from 'graphql-compose/lib/ObjectTypeComposer';
1515
import type { Model } from 'mongoose';
16-
import { composeWithMongoose, type TypeConverterOpts } from '../composeWithMongoose';
16+
import { composeWithMongoose, type ComposeWithMongooseOpts } from '../composeWithMongoose';
1717
import { composeChildTC } from './composeChildTC';
1818
import { mergeCustomizationOptions } from './utils/mergeCustomizationOptions';
1919
import { prepareBaseResolvers } from './prepareBaseResolvers';
2020
import { reorderFields } from './utils/reorderFields';
2121

22-
export type DiscriminatorOptions<TContext> = {|
22+
export type ComposeWithMongooseDiscriminatorsOpts<TContext> = {|
2323
reorderFields?: boolean | string[], // true order: _id, DKey, DInterfaceFields, DiscriminatorFields
24-
...TypeConverterOpts<TContext>,
24+
...ComposeWithMongooseOpts<TContext>,
2525
|};
2626

2727
type Discriminators = {
@@ -75,7 +75,7 @@ export class DiscriminatorTypeComposer<TSource, TContext> extends ObjectTypeComp
7575

7676
DKeyETC: EnumTypeComposer<TContext>;
7777

78-
opts: DiscriminatorOptions<TContext>;
78+
opts: ComposeWithMongooseDiscriminatorsOpts<TContext>;
7979

8080
DInterface: InterfaceTypeComposer<TSource, TContext>;
8181

@@ -190,6 +190,23 @@ export class DiscriminatorTypeComposer<TSource, TContext> extends ObjectTypeComp
190190
return !!this.childTCs.find(ch => ch.getTypeName() === DName);
191191
}
192192

193+
/* eslint no-use-before-define: 0 */
194+
discriminator<TSrc: Model>(
195+
childModel: Class<TSrc>,
196+
opts?: ComposeWithMongooseOpts<TContext>
197+
): ObjectTypeComposer<TSrc, TContext> {
198+
const customizationOpts = mergeCustomizationOptions((this.opts: any), opts);
199+
200+
let childTC = composeWithMongoose(childModel, customizationOpts);
201+
202+
childTC = composeChildTC(this, childTC, this.opts);
203+
204+
this.schemaComposer.addSchemaMustHaveType(childTC);
205+
this.childTCs.push(childTC);
206+
207+
return childTC;
208+
}
209+
193210
setFields(fields: ComposeFieldConfigMap<any, any>): DiscriminatorTypeComposer<TSource, TContext> {
194211
const oldFieldNames = super.getFieldNames();
195212
super.setFields(fields);
@@ -358,21 +375,4 @@ export class DiscriminatorTypeComposer<TSource, TContext> extends ObjectTypeComp
358375

359376
return this;
360377
}
361-
362-
/* eslint no-use-before-define: 0 */
363-
discriminator<TSrc: Model>(
364-
childModel: Class<TSrc>,
365-
opts?: TypeConverterOpts<TContext>
366-
): ObjectTypeComposer<TSrc, TContext> {
367-
const customizationOpts = mergeCustomizationOptions((this.opts: any), opts);
368-
369-
let childTC = composeWithMongoose(childModel, customizationOpts);
370-
371-
childTC = composeChildTC(this, childTC, this.opts);
372-
373-
this.schemaComposer.addSchemaMustHaveType(childTC);
374-
this.childTCs.push(childTC);
375-
376-
return childTC;
377-
}
378378
}

src/discriminators/composeChildTC.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
/* @flow */
22

33
import { ObjectTypeComposer } from 'graphql-compose';
4-
import type { DiscriminatorTypeComposer, DiscriminatorOptions } from './DiscriminatorTypeComposer';
4+
import type {
5+
DiscriminatorTypeComposer,
6+
ComposeWithMongooseDiscriminatorsOpts,
7+
} from './DiscriminatorTypeComposer';
58
import { prepareChildResolvers } from './prepareChildResolvers';
69
import { reorderFields } from './utils/reorderFields';
710

@@ -32,7 +35,7 @@ function copyBaseTCFieldsToChildTC(
3235
export function composeChildTC<TSource, TContext>(
3336
baseDTC: DiscriminatorTypeComposer<any, TContext>,
3437
childTC: ObjectTypeComposer<TSource, TContext>,
35-
opts: DiscriminatorOptions<TContext>
38+
opts: ComposeWithMongooseDiscriminatorsOpts<TContext>
3639
): ObjectTypeComposer<TSource, TContext> {
3740
const composedChildTC = copyBaseTCFieldsToChildTC(baseDTC, childTC);
3841

src/discriminators/index.d.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
1-
import { TypeConverterOpts } from '../composeWithMongoose';
2-
31
export {
42
DiscriminatorTypeComposer,
5-
DiscriminatorOptions,
3+
ComposeWithMongooseDiscriminatorsOpts,
64
} from './DiscriminatorTypeComposer';
75

8-
export function mergeCustomizationOptions(
9-
baseCOptions: TypeConverterOpts,
10-
childCOptions?: TypeConverterOpts,
11-
): TypeConverterOpts | void;
6+
export { mergeCustomizationOptions } from './utils/mergeCustomizationOptions';

src/discriminators/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
/* @flow */
22

3-
export { DiscriminatorTypeComposer, DiscriminatorOptions } from './DiscriminatorTypeComposer';
3+
export { DiscriminatorTypeComposer } from './DiscriminatorTypeComposer';
4+
export type { ComposeWithMongooseDiscriminatorsOpts } from './DiscriminatorTypeComposer';
5+
46
export { mergeCustomizationOptions } from './utils/mergeCustomizationOptions';

src/discriminators/prepareChildResolvers.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
import type { ResolveParams } from 'graphql-compose';
44
import { Resolver, ObjectTypeComposer } from 'graphql-compose';
5-
import { type DiscriminatorOptions, DiscriminatorTypeComposer } from './DiscriminatorTypeComposer';
5+
import {
6+
type ComposeWithMongooseDiscriminatorsOpts,
7+
DiscriminatorTypeComposer,
8+
} from './DiscriminatorTypeComposer';
69
import { EMCResolvers } from '../resolvers';
710

811
// set the DKey as a query on filter, also project it
@@ -134,7 +137,7 @@ function reorderFieldsRecordFilter<TSource, TContext>(
134137
export function prepareChildResolvers<TSource, TContext>(
135138
baseDTC: DiscriminatorTypeComposer<TSource, TContext>,
136139
childTC: ObjectTypeComposer<TSource, TContext>,
137-
opts: DiscriminatorOptions<TContext>
140+
opts: ComposeWithMongooseDiscriminatorsOpts<TContext>
138141
) {
139142
for (const resolverName in EMCResolvers) {
140143
if (EMCResolvers.hasOwnProperty(resolverName) && childTC.hasResolver(resolverName)) {

0 commit comments

Comments
 (0)