Skip to content

Commit a482d3b

Browse files
Jackson KearlIvanGoncharov
Jackson Kearl
authored andcommitted
Sync type TS definitions with Flow (#2109)
* Sync type TS definitions with Flow Specifically: Add `extensions` field in lots of places Reorder fields Both this and #2106 add Path.d.ts, but they're the same. If theres a merge conflict, just pick one. * `unknown` => `any`, to target [email protected] * Widen `introspectionTypes` type to `GraphQLType[]` * use Maybe<Readonly<Record<...>>> as `extension` type * Remove `ResponsePath` export (now `jsutils/Path`) * More removal of `ResponsePath`
1 parent f29be82 commit a482d3b

8 files changed

+82
-40
lines changed

tstypes/index.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ export {
128128
GraphQLIsTypeOfFn,
129129
GraphQLObjectTypeConfig,
130130
GraphQLResolveInfo,
131-
ResponsePath,
132131
GraphQLScalarTypeConfig,
133132
GraphQLTypeResolver,
134133
GraphQLUnionTypeConfig,

tstypes/type/definition.d.ts

Lines changed: 54 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Maybe from '../tsutils/Maybe';
22
import { PromiseOrValue } from '../jsutils/PromiseOrValue';
3+
import { Path } from '../jsutils/Path';
34
import {
45
ScalarTypeDefinitionNode,
56
ObjectTypeDefinitionNode,
@@ -75,6 +76,7 @@ export function assertNonNullType(type: any): GraphQLNonNull<any>;
7576
/**
7677
* These types may be used as input types for arguments and directives.
7778
*/
79+
// TS_SPECIFIC: TS does not allow recursive type definitions, hence the `any`s
7880
export type GraphQLInputType =
7981
| GraphQLScalarType
8082
| GraphQLEnumType
@@ -94,6 +96,7 @@ export function assertInputType(type: any): GraphQLInputType;
9496
/**
9597
* These types may be used as output types as the result of fields.
9698
*/
99+
// TS_SPECIFIC: TS does not allow recursive type definitions, hence the `any`s
97100
export type GraphQLOutputType =
98101
| GraphQLScalarType
99102
| GraphQLObjectType
@@ -285,13 +288,16 @@ export class GraphQLScalarType {
285288
serialize: GraphQLScalarSerializer<any>;
286289
parseValue: GraphQLScalarValueParser<any>;
287290
parseLiteral: GraphQLScalarLiteralParser<any>;
291+
extensions: Maybe<Readonly<Record<string, any>>>;
288292
astNode: Maybe<ScalarTypeDefinitionNode>;
289293
extensionASTNodes: Maybe<ReadonlyArray<ScalarTypeExtensionNode>>;
290294
constructor(config: GraphQLScalarTypeConfig<any, any>);
291295

292296
toConfig(): GraphQLScalarTypeConfig<any, any> & {
297+
serialize: GraphQLScalarSerializer<any>;
293298
parseValue: GraphQLScalarValueParser<any>;
294299
parseLiteral: GraphQLScalarLiteralParser<any>;
300+
extensions: Maybe<Readonly<Record<string, any>>>;
295301
extensionASTNodes: ReadonlyArray<ScalarTypeExtensionNode>;
296302
};
297303

@@ -320,6 +326,7 @@ export interface GraphQLScalarTypeConfig<TInternal, TExternal> {
320326
parseValue?: GraphQLScalarValueParser<TInternal>;
321327
// Parses an externally provided literal value to use as an input.
322328
parseLiteral?: GraphQLScalarLiteralParser<TInternal>;
329+
extensions?: Maybe<Readonly<Record<string, any>>>;
323330
astNode?: Maybe<ScalarTypeDefinitionNode>;
324331
extensionASTNodes?: Maybe<ReadonlyArray<ScalarTypeExtensionNode>>;
325332
}
@@ -368,9 +375,10 @@ export class GraphQLObjectType<
368375
> {
369376
name: string;
370377
description: Maybe<string>;
378+
isTypeOf: Maybe<GraphQLIsTypeOfFn<TSource, TContext>>;
379+
extensions: Maybe<Readonly<Record<string, any>>>;
371380
astNode: Maybe<ObjectTypeDefinitionNode>;
372381
extensionASTNodes: Maybe<ReadonlyArray<ObjectTypeExtensionNode>>;
373-
isTypeOf: Maybe<GraphQLIsTypeOfFn<TSource, TContext>>;
374382

375383
constructor(config: GraphQLObjectTypeConfig<TSource, TContext, TArgs>);
376384
getFields(): GraphQLFieldMap<any, TContext, TArgs>;
@@ -387,20 +395,27 @@ export class GraphQLObjectType<
387395
inspect(): string;
388396
}
389397

398+
export function argsToArgsConfig(
399+
args: ReadonlyArray<GraphQLArgument>,
400+
): GraphQLFieldConfigArgumentMap;
401+
402+
// TS_SPECIFIC: TArgs
390403
export interface GraphQLObjectTypeConfig<
391404
TSource,
392405
TContext,
393406
TArgs = { [key: string]: any }
394407
> {
395408
name: string;
409+
description?: Maybe<string>;
396410
interfaces?: Thunk<Maybe<GraphQLInterfaceType[]>>;
397411
fields: Thunk<GraphQLFieldConfigMap<TSource, TContext, TArgs>>;
398412
isTypeOf?: Maybe<GraphQLIsTypeOfFn<TSource, TContext>>;
399-
description?: Maybe<string>;
413+
extensions?: Maybe<Readonly<Record<string, any>>>;
400414
astNode?: Maybe<ObjectTypeDefinitionNode>;
401415
extensionASTNodes?: Maybe<ReadonlyArray<ObjectTypeExtensionNode>>;
402416
}
403417

418+
// TS_SPECIFIC: TArgs
404419
export type GraphQLTypeResolver<
405420
TSource,
406421
TContext,
@@ -435,30 +450,26 @@ export interface GraphQLResolveInfo {
435450
readonly fieldNodes: ReadonlyArray<FieldNode>;
436451
readonly returnType: GraphQLOutputType;
437452
readonly parentType: GraphQLObjectType;
438-
readonly path: ResponsePath;
453+
readonly path: Path;
439454
readonly schema: GraphQLSchema;
440455
readonly fragments: { [key: string]: FragmentDefinitionNode };
441456
readonly rootValue: any;
442457
readonly operation: OperationDefinitionNode;
443458
readonly variableValues: { [variableName: string]: any };
444459
}
445460

446-
export type ResponsePath = {
447-
readonly prev: ResponsePath | undefined;
448-
readonly key: string | number;
449-
};
450-
451461
export interface GraphQLFieldConfig<
452462
TSource,
453463
TContext,
454464
TArgs = { [argName: string]: any }
455465
> {
466+
description?: Maybe<string>;
456467
type: GraphQLOutputType;
457468
args?: GraphQLFieldConfigArgumentMap;
458469
resolve?: GraphQLFieldResolver<TSource, TContext, TArgs>;
459470
subscribe?: GraphQLFieldResolver<TSource, TContext, TArgs>;
460471
deprecationReason?: Maybe<string>;
461-
description?: Maybe<string>;
472+
extensions?: Maybe<Readonly<Record<string, any>>>;
462473
astNode?: Maybe<FieldDefinitionNode>;
463474
}
464475

@@ -467,12 +478,14 @@ export type GraphQLFieldConfigArgumentMap = {
467478
};
468479

469480
export interface GraphQLArgumentConfig {
481+
description?: Maybe<string>;
470482
type: GraphQLInputType;
471483
defaultValue?: any;
472-
description?: Maybe<string>;
484+
extensions?: Maybe<Readonly<Record<string, any>>>;
473485
astNode?: Maybe<InputValueDefinitionNode>;
474486
}
475487

488+
// TS_SPECIFIC: TArgs
476489
export type GraphQLFieldConfigMap<
477490
TSource,
478491
TContext,
@@ -494,19 +507,22 @@ export interface GraphQLField<
494507
subscribe?: GraphQLFieldResolver<TSource, TContext, TArgs>;
495508
isDeprecated?: boolean;
496509
deprecationReason?: Maybe<string>;
510+
extensions: Maybe<Readonly<Record<string, any>>>;
497511
astNode?: Maybe<FieldDefinitionNode>;
498512
}
499513

500514
export interface GraphQLArgument {
501515
name: string;
516+
description: Maybe<string>;
502517
type: GraphQLInputType;
503-
defaultValue?: any;
504-
description?: Maybe<string>;
505-
astNode?: Maybe<InputValueDefinitionNode>;
518+
defaultValue: any;
519+
extensions: Maybe<Readonly<Record<string, any>>>;
520+
astNode: Maybe<InputValueDefinitionNode>;
506521
}
507522

508523
export function isRequiredArgument(arg: GraphQLArgument): boolean;
509524

525+
// TS_SPECIFIC: TArgs
510526
export type GraphQLFieldMap<
511527
TSource,
512528
TContext,
@@ -536,16 +552,18 @@ export type GraphQLFieldMap<
536552
export class GraphQLInterfaceType {
537553
name: string;
538554
description: Maybe<string>;
555+
resolveType: Maybe<GraphQLTypeResolver<any, any>>;
556+
extensions: Maybe<Readonly<Record<string, any>>>;
539557
astNode?: Maybe<InterfaceTypeDefinitionNode>;
540558
extensionASTNodes: Maybe<ReadonlyArray<InterfaceTypeExtensionNode>>;
541-
resolveType: Maybe<GraphQLTypeResolver<any, any>>;
542559

543560
constructor(config: GraphQLInterfaceTypeConfig<any, any>);
544561

545562
getFields(): GraphQLFieldMap<any, any>;
546563

547564
toConfig(): GraphQLInterfaceTypeConfig<any, any> & {
548565
fields: GraphQLFieldConfigMap<any, any>;
566+
extensions: Maybe<Readonly<Record<string, any>>>;
549567
extensionASTNodes: ReadonlyArray<InterfaceTypeExtensionNode>;
550568
};
551569

@@ -554,20 +572,22 @@ export class GraphQLInterfaceType {
554572
inspect(): string;
555573
}
556574

575+
// TS_SPECIFIC: TArgs
557576
export interface GraphQLInterfaceTypeConfig<
558577
TSource,
559578
TContext,
560579
TArgs = { [key: string]: any }
561580
> {
562581
name: string;
582+
description?: Maybe<string>;
563583
fields: Thunk<GraphQLFieldConfigMap<TSource, TContext, TArgs>>;
564584
/**
565585
* Optionally provide a custom type resolver function. If one is not provided,
566586
* the default implementation will call `isTypeOf` on each implementing
567587
* Object type.
568588
*/
569589
resolveType?: Maybe<GraphQLTypeResolver<TSource, TContext, TArgs>>;
570-
description?: Maybe<string>;
590+
extensions?: Maybe<Readonly<Record<string, any>>>;
571591
astNode?: Maybe<InterfaceTypeDefinitionNode>;
572592
extensionASTNodes?: Maybe<ReadonlyArray<InterfaceTypeExtensionNode>>;
573593
}
@@ -598,9 +618,10 @@ export interface GraphQLInterfaceTypeConfig<
598618
export class GraphQLUnionType {
599619
name: string;
600620
description: Maybe<string>;
621+
resolveType: Maybe<GraphQLTypeResolver<any, any>>;
622+
extensions: Maybe<Readonly<Record<string, any>>>;
601623
astNode: Maybe<UnionTypeDefinitionNode>;
602624
extensionASTNodes: Maybe<ReadonlyArray<UnionTypeExtensionNode>>;
603-
resolveType: Maybe<GraphQLTypeResolver<any, any>>;
604625

605626
constructor(config: GraphQLUnionTypeConfig<any, any>);
606627

@@ -618,14 +639,15 @@ export class GraphQLUnionType {
618639

619640
export interface GraphQLUnionTypeConfig<TSource, TContext> {
620641
name: string;
642+
description?: Maybe<string>;
621643
types: Thunk<GraphQLObjectType[]>;
622644
/**
623645
* Optionally provide a custom type resolver function. If one is not provided,
624646
* the default implementation will call `isTypeOf` on each implementing
625647
* Object type.
626648
*/
627649
resolveType?: Maybe<GraphQLTypeResolver<TSource, TContext>>;
628-
description?: Maybe<string>;
650+
extensions?: Maybe<Readonly<Record<string, any>>>;
629651
astNode?: Maybe<UnionTypeDefinitionNode>;
630652
extensionASTNodes?: Maybe<ReadonlyArray<UnionTypeExtensionNode>>;
631653
}
@@ -654,6 +676,7 @@ export interface GraphQLUnionTypeConfig<TSource, TContext> {
654676
export class GraphQLEnumType {
655677
name: string;
656678
description: Maybe<string>;
679+
extensions: Maybe<Readonly<Record<string, any>>>;
657680
astNode: Maybe<EnumTypeDefinitionNode>;
658681
extensionASTNodes: Maybe<ReadonlyArray<EnumTypeExtensionNode>>;
659682

@@ -678,8 +701,9 @@ export class GraphQLEnumType {
678701

679702
export interface GraphQLEnumTypeConfig {
680703
name: string;
681-
values: GraphQLEnumValueConfigMap;
682704
description?: Maybe<string>;
705+
values: GraphQLEnumValueConfigMap;
706+
extensions?: Maybe<Readonly<Record<string, any>>>;
683707
astNode?: Maybe<EnumTypeDefinitionNode>;
684708
extensionASTNodes?: Maybe<ReadonlyArray<EnumTypeExtensionNode>>;
685709
}
@@ -689,19 +713,21 @@ export type GraphQLEnumValueConfigMap = {
689713
};
690714

691715
export interface GraphQLEnumValueConfig {
716+
description?: Maybe<string>;
692717
value?: any;
693718
deprecationReason?: Maybe<string>;
694-
description?: Maybe<string>;
719+
extensions?: Maybe<Readonly<Record<string, any>>>;
695720
astNode?: Maybe<EnumValueDefinitionNode>;
696721
}
697722

698723
export interface GraphQLEnumValue {
699724
name: string;
700725
description: Maybe<string>;
726+
value: any;
701727
isDeprecated?: boolean;
702728
deprecationReason: Maybe<string>;
729+
extensions: Maybe<Readonly<Record<string, any>>>;
703730
astNode?: Maybe<EnumValueDefinitionNode>;
704-
value: any;
705731
}
706732

707733
/**
@@ -727,13 +753,15 @@ export interface GraphQLEnumValue {
727753
export class GraphQLInputObjectType {
728754
name: string;
729755
description: Maybe<string>;
756+
extensions: Maybe<Readonly<Record<string, any>>>;
730757
astNode: Maybe<InputObjectTypeDefinitionNode>;
731758
extensionASTNodes: Maybe<ReadonlyArray<InputObjectTypeExtensionNode>>;
732759
constructor(config: GraphQLInputObjectTypeConfig);
733760
getFields(): GraphQLInputFieldMap;
734761

735762
toConfig(): GraphQLInputObjectTypeConfig & {
736763
fields: GraphQLInputFieldConfigMap;
764+
extensions: Maybe<Readonly<Record<string, any>>>;
737765
extensionASTNodes: ReadonlyArray<InputObjectTypeExtensionNode>;
738766
};
739767

@@ -744,16 +772,18 @@ export class GraphQLInputObjectType {
744772

745773
export interface GraphQLInputObjectTypeConfig {
746774
name: string;
747-
fields: Thunk<GraphQLInputFieldConfigMap>;
748775
description?: Maybe<string>;
776+
fields: Thunk<GraphQLInputFieldConfigMap>;
777+
extensions?: Maybe<Readonly<Record<string, any>>>;
749778
astNode?: Maybe<InputObjectTypeDefinitionNode>;
750779
extensionASTNodes?: Maybe<ReadonlyArray<InputObjectTypeExtensionNode>>;
751780
}
752781

753782
export interface GraphQLInputFieldConfig {
783+
description?: Maybe<string>;
754784
type: GraphQLInputType;
755785
defaultValue?: any;
756-
description?: Maybe<string>;
786+
extensions?: Maybe<Readonly<Record<string, any>>>;
757787
astNode?: Maybe<InputValueDefinitionNode>;
758788
}
759789

@@ -763,9 +793,10 @@ export type GraphQLInputFieldConfigMap = {
763793

764794
export interface GraphQLInputField {
765795
name: string;
796+
description?: Maybe<string>;
766797
type: GraphQLInputType;
767798
defaultValue?: any;
768-
description?: Maybe<string>;
799+
extensions: Maybe<Readonly<Record<string, any>>>;
769800
astNode?: Maybe<InputValueDefinitionNode>;
770801
}
771802

tstypes/type/directives.d.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { DirectiveLocationEnum } from '../language/directiveLocation';
77
* Test if the given value is a GraphQL directive.
88
*/
99
export function isDirective(directive: any): directive is GraphQLDirective;
10-
10+
export function assertDirective(directive: any): GraphQLDirective;
1111
/**
1212
* Directives are used by the GraphQL runtime as a way of modifying execution
1313
* behavior. Type system creators will usually not create these directly.
@@ -18,12 +18,17 @@ export class GraphQLDirective {
1818
locations: DirectiveLocationEnum[];
1919
isRepeatable: boolean;
2020
args: GraphQLArgument[];
21+
extensions?: Maybe<Readonly<Record<string, any>>>;
2122
astNode: Maybe<DirectiveDefinitionNode>;
2223

2324
constructor(config: GraphQLDirectiveConfig);
2425

26+
toString(): string;
27+
2528
toConfig(): GraphQLDirectiveConfig & {
2629
args: GraphQLFieldConfigArgumentMap;
30+
extensions?: Maybe<Readonly<Record<string, any>>>;
31+
isRepeatable: boolean;
2732
};
2833
}
2934

@@ -33,6 +38,7 @@ export interface GraphQLDirectiveConfig {
3338
locations: DirectiveLocationEnum[];
3439
args?: Maybe<GraphQLFieldConfigArgumentMap>;
3540
isRepeatable?: Maybe<boolean>;
41+
extensions?: Maybe<Readonly<Record<string, any>>>;
3642
astNode?: Maybe<DirectiveDefinitionNode>;
3743
}
3844

@@ -61,4 +67,6 @@ export const GraphQLDeprecatedDirective: GraphQLDirective;
6167
*/
6268
export const specifiedDirectives: ReadonlyArray<GraphQLDirective>;
6369

64-
export function isSpecifiedDirective(directive: GraphQLDirective): boolean;
70+
export function isSpecifiedDirective(
71+
directive: any,
72+
): directive is GraphQLDirective;

0 commit comments

Comments
 (0)