Skip to content

Commit fa44c33

Browse files
IvanGoncharovleebyron
authored andcommitted
Unify how 'kinds' are imported (#902)
1 parent 1aa08c1 commit fa44c33

9 files changed

+94
-148
lines changed

src/type/definition.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
import invariant from '../jsutils/invariant';
1212
import isNullish from '../jsutils/isNullish';
13-
import { ENUM } from '../language/kinds';
13+
import * as Kind from '../language/kinds';
1414
import { assertValidName } from '../utilities/assertValidName';
1515
import type {
1616
OperationDefinitionNode,
@@ -924,12 +924,12 @@ export class GraphQLEnumType/* <T> */ {
924924
}
925925

926926
isValidLiteral(valueNode: ValueNode): boolean {
927-
return valueNode.kind === ENUM &&
927+
return valueNode.kind === Kind.ENUM &&
928928
this._getNameLookup()[valueNode.value] !== undefined;
929929
}
930930

931931
parseLiteral(valueNode: ValueNode): ?any/* T */ {
932-
if (valueNode.kind === ENUM) {
932+
if (valueNode.kind === Kind.ENUM) {
933933
const enumValue = this._getNameLookup()[valueNode.value];
934934
if (enumValue) {
935935
return enumValue.value;

src/utilities/astFromValue.js

+13-24
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,7 @@ import type {
2424
ListValueNode,
2525
ObjectValueNode,
2626
} from '../language/ast';
27-
import {
28-
NAME,
29-
INT,
30-
FLOAT,
31-
STRING,
32-
BOOLEAN,
33-
NULL,
34-
ENUM,
35-
LIST,
36-
OBJECT,
37-
OBJECT_FIELD,
38-
} from '../language/kinds';
27+
import * as Kind from '../language/kinds';
3928
import type { GraphQLInputType } from '../type/definition';
4029
import {
4130
GraphQLScalarType,
@@ -73,15 +62,15 @@ export function astFromValue(
7362

7463
if (type instanceof GraphQLNonNull) {
7564
const astValue = astFromValue(_value, type.ofType);
76-
if (astValue && astValue.kind === NULL) {
65+
if (astValue && astValue.kind === Kind.NULL) {
7766
return null;
7867
}
7968
return astValue;
8069
}
8170

8271
// only explicit null, not undefined, NaN
8372
if (_value === null) {
84-
return ({ kind: NULL }: NullValueNode);
73+
return ({ kind: Kind.NULL }: NullValueNode);
8574
}
8675

8776
// undefined, NaN
@@ -101,7 +90,7 @@ export function astFromValue(
10190
valuesNodes.push(itemNode);
10291
}
10392
});
104-
return ({ kind: LIST, values: valuesNodes }: ListValueNode);
93+
return ({ kind: Kind.LIST, values: valuesNodes }: ListValueNode);
10594
}
10695
return astFromValue(_value, itemType);
10796
}
@@ -119,13 +108,13 @@ export function astFromValue(
119108
const fieldValue = astFromValue(_value[fieldName], fieldType);
120109
if (fieldValue) {
121110
fieldNodes.push({
122-
kind: OBJECT_FIELD,
123-
name: { kind: NAME, value: fieldName },
111+
kind: Kind.OBJECT_FIELD,
112+
name: { kind: Kind.NAME, value: fieldName },
124113
value: fieldValue
125114
});
126115
}
127116
});
128-
return ({ kind: OBJECT, fields: fieldNodes }: ObjectValueNode);
117+
return ({ kind: Kind.OBJECT, fields: fieldNodes }: ObjectValueNode);
129118
}
130119

131120
invariant(
@@ -142,32 +131,32 @@ export function astFromValue(
142131

143132
// Others serialize based on their corresponding JavaScript scalar types.
144133
if (typeof serialized === 'boolean') {
145-
return ({ kind: BOOLEAN, value: serialized }: BooleanValueNode);
134+
return ({ kind: Kind.BOOLEAN, value: serialized }: BooleanValueNode);
146135
}
147136

148137
// JavaScript numbers can be Int or Float values.
149138
if (typeof serialized === 'number') {
150139
const stringNum = String(serialized);
151140
return /^[0-9]+$/.test(stringNum) ?
152-
({ kind: INT, value: stringNum }: IntValueNode) :
153-
({ kind: FLOAT, value: stringNum }: FloatValueNode);
141+
({ kind: Kind.INT, value: stringNum }: IntValueNode) :
142+
({ kind: Kind.FLOAT, value: stringNum }: FloatValueNode);
154143
}
155144

156145
if (typeof serialized === 'string') {
157146
// Enum types use Enum literals.
158147
if (type instanceof GraphQLEnumType) {
159-
return ({ kind: ENUM, value: serialized }: EnumValueNode);
148+
return ({ kind: Kind.ENUM, value: serialized }: EnumValueNode);
160149
}
161150

162151
// ID types can use Int literals.
163152
if (type === GraphQLID && /^[0-9]+$/.test(serialized)) {
164-
return ({ kind: INT, value: serialized }: IntValueNode);
153+
return ({ kind: Kind.INT, value: serialized }: IntValueNode);
165154
}
166155

167156
// Use JSON stringify, which uses the same string encoding as GraphQL,
168157
// then remove the quotes.
169158
return ({
170-
kind: STRING,
159+
kind: Kind.STRING,
171160
value: JSON.stringify(serialized).slice(1, -1)
172161
}: StringValueNode);
173162
}

src/utilities/buildASTSchema.js

+22-31
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,7 @@ import { parse } from '../language/parser';
1717
import type { Source } from '../language/source';
1818
import { getArgumentValues } from '../execution/values';
1919

20-
import {
21-
LIST_TYPE,
22-
NON_NULL_TYPE,
23-
DOCUMENT,
24-
SCHEMA_DEFINITION,
25-
SCALAR_TYPE_DEFINITION,
26-
OBJECT_TYPE_DEFINITION,
27-
INTERFACE_TYPE_DEFINITION,
28-
ENUM_TYPE_DEFINITION,
29-
UNION_TYPE_DEFINITION,
30-
INPUT_OBJECT_TYPE_DEFINITION,
31-
DIRECTIVE_DEFINITION,
32-
} from '../language/kinds';
20+
import * as Kind from '../language/kinds';
3321

3422
import type {
3523
Location,
@@ -106,10 +94,10 @@ function buildWrappedType(
10694
innerType: GraphQLType,
10795
inputTypeNode: TypeNode
10896
): GraphQLType {
109-
if (inputTypeNode.kind === LIST_TYPE) {
97+
if (inputTypeNode.kind === Kind.LIST_TYPE) {
11098
return new GraphQLList(buildWrappedType(innerType, inputTypeNode.type));
11199
}
112-
if (inputTypeNode.kind === NON_NULL_TYPE) {
100+
if (inputTypeNode.kind === Kind.NON_NULL_TYPE) {
113101
const wrappedType = buildWrappedType(innerType, inputTypeNode.type);
114102
invariant(!(wrappedType instanceof GraphQLNonNull), 'No nesting nonnull.');
115103
return new GraphQLNonNull(wrappedType);
@@ -119,7 +107,10 @@ function buildWrappedType(
119107

120108
function getNamedTypeNode(typeNode: TypeNode): NamedTypeNode {
121109
let namedType = typeNode;
122-
while (namedType.kind === LIST_TYPE || namedType.kind === NON_NULL_TYPE) {
110+
while (
111+
namedType.kind === Kind.LIST_TYPE ||
112+
namedType.kind === Kind.NON_NULL_TYPE
113+
) {
123114
namedType = namedType.type;
124115
}
125116
return namedType;
@@ -136,7 +127,7 @@ function getNamedTypeNode(typeNode: TypeNode): NamedTypeNode {
136127
* has no resolve methods, so execution will use default resolvers.
137128
*/
138129
export function buildASTSchema(ast: DocumentNode): GraphQLSchema {
139-
if (!ast || ast.kind !== DOCUMENT) {
130+
if (!ast || ast.kind !== Kind.DOCUMENT) {
140131
throw new Error('Must provide a document ast.');
141132
}
142133

@@ -148,26 +139,26 @@ export function buildASTSchema(ast: DocumentNode): GraphQLSchema {
148139
for (let i = 0; i < ast.definitions.length; i++) {
149140
const d = ast.definitions[i];
150141
switch (d.kind) {
151-
case SCHEMA_DEFINITION:
142+
case Kind.SCHEMA_DEFINITION:
152143
if (schemaDef) {
153144
throw new Error('Must provide only one schema definition.');
154145
}
155146
schemaDef = d;
156147
break;
157-
case SCALAR_TYPE_DEFINITION:
158-
case OBJECT_TYPE_DEFINITION:
159-
case INTERFACE_TYPE_DEFINITION:
160-
case ENUM_TYPE_DEFINITION:
161-
case UNION_TYPE_DEFINITION:
162-
case INPUT_OBJECT_TYPE_DEFINITION:
148+
case Kind.SCALAR_TYPE_DEFINITION:
149+
case Kind.OBJECT_TYPE_DEFINITION:
150+
case Kind.INTERFACE_TYPE_DEFINITION:
151+
case Kind.ENUM_TYPE_DEFINITION:
152+
case Kind.UNION_TYPE_DEFINITION:
153+
case Kind.INPUT_OBJECT_TYPE_DEFINITION:
163154
const typeName = d.name.value;
164155
if (nodeMap[typeName]) {
165156
throw new Error(`Type "${typeName}" was defined more than once.`);
166157
}
167158
typeDefs.push(d);
168159
nodeMap[typeName] = d;
169160
break;
170-
case DIRECTIVE_DEFINITION:
161+
case Kind.DIRECTIVE_DEFINITION:
171162
directiveDefs.push(d);
172163
break;
173164
}
@@ -344,17 +335,17 @@ export function buildASTSchema(ast: DocumentNode): GraphQLSchema {
344335
throw new Error('def must be defined');
345336
}
346337
switch (def.kind) {
347-
case OBJECT_TYPE_DEFINITION:
338+
case Kind.OBJECT_TYPE_DEFINITION:
348339
return makeTypeDef(def);
349-
case INTERFACE_TYPE_DEFINITION:
340+
case Kind.INTERFACE_TYPE_DEFINITION:
350341
return makeInterfaceDef(def);
351-
case ENUM_TYPE_DEFINITION:
342+
case Kind.ENUM_TYPE_DEFINITION:
352343
return makeEnumDef(def);
353-
case UNION_TYPE_DEFINITION:
344+
case Kind.UNION_TYPE_DEFINITION:
354345
return makeUnionDef(def);
355-
case SCALAR_TYPE_DEFINITION:
346+
case Kind.SCALAR_TYPE_DEFINITION:
356347
return makeScalarDef(def);
357-
case INPUT_OBJECT_TYPE_DEFINITION:
348+
case Kind.INPUT_OBJECT_TYPE_DEFINITION:
358349
return makeInputObjectDef(def);
359350
default:
360351
throw new Error(`Type kind "${def.kind}" not supported.`);

src/utilities/extendSchema.js

+21-32
Original file line numberDiff line numberDiff line change
@@ -55,19 +55,7 @@ import {
5555
GraphQLID,
5656
} from '../type/scalars';
5757

58-
import {
59-
DOCUMENT,
60-
LIST_TYPE,
61-
NON_NULL_TYPE,
62-
OBJECT_TYPE_DEFINITION,
63-
INTERFACE_TYPE_DEFINITION,
64-
ENUM_TYPE_DEFINITION,
65-
UNION_TYPE_DEFINITION,
66-
SCALAR_TYPE_DEFINITION,
67-
INPUT_OBJECT_TYPE_DEFINITION,
68-
TYPE_EXTENSION_DEFINITION,
69-
DIRECTIVE_DEFINITION,
70-
} from '../language/kinds';
58+
import * as Kind from '../language/kinds';
7159

7260
import type {
7361
GraphQLType,
@@ -118,7 +106,7 @@ export function extendSchema(
118106
);
119107

120108
invariant(
121-
documentAST && documentAST.kind === DOCUMENT,
109+
documentAST && documentAST.kind === Kind.DOCUMENT,
122110
'Must provide valid Document AST'
123111
);
124112

@@ -133,12 +121,12 @@ export function extendSchema(
133121
for (let i = 0; i < documentAST.definitions.length; i++) {
134122
const def = documentAST.definitions[i];
135123
switch (def.kind) {
136-
case OBJECT_TYPE_DEFINITION:
137-
case INTERFACE_TYPE_DEFINITION:
138-
case ENUM_TYPE_DEFINITION:
139-
case UNION_TYPE_DEFINITION:
140-
case SCALAR_TYPE_DEFINITION:
141-
case INPUT_OBJECT_TYPE_DEFINITION:
124+
case Kind.OBJECT_TYPE_DEFINITION:
125+
case Kind.INTERFACE_TYPE_DEFINITION:
126+
case Kind.ENUM_TYPE_DEFINITION:
127+
case Kind.UNION_TYPE_DEFINITION:
128+
case Kind.SCALAR_TYPE_DEFINITION:
129+
case Kind.INPUT_OBJECT_TYPE_DEFINITION:
142130
// Sanity check that none of the defined types conflict with the
143131
// schema's existing types.
144132
const typeName = def.name.value;
@@ -151,7 +139,7 @@ export function extendSchema(
151139
}
152140
typeDefinitionMap[typeName] = def;
153141
break;
154-
case TYPE_EXTENSION_DEFINITION:
142+
case Kind.TYPE_EXTENSION_DEFINITION:
155143
// Sanity check that this type extension exists within the
156144
// schema's existing types.
157145
const extendedTypeName = def.definition.name.value;
@@ -177,7 +165,7 @@ export function extendSchema(
177165
}
178166
typeExtensionsMap[extendedTypeName] = extensions;
179167
break;
180-
case DIRECTIVE_DEFINITION:
168+
case Kind.DIRECTIVE_DEFINITION:
181169
const directiveName = def.name.value;
182170
const existingDirective = schema.getDirective(directiveName);
183171
if (existingDirective) {
@@ -451,12 +439,13 @@ export function extendSchema(
451439

452440
function buildType(typeNode: TypeDefinitionNode): GraphQLNamedType {
453441
switch (typeNode.kind) {
454-
case OBJECT_TYPE_DEFINITION: return buildObjectType(typeNode);
455-
case INTERFACE_TYPE_DEFINITION: return buildInterfaceType(typeNode);
456-
case UNION_TYPE_DEFINITION: return buildUnionType(typeNode);
457-
case SCALAR_TYPE_DEFINITION: return buildScalarType(typeNode);
458-
case ENUM_TYPE_DEFINITION: return buildEnumType(typeNode);
459-
case INPUT_OBJECT_TYPE_DEFINITION: return buildInputObjectType(typeNode);
442+
case Kind.OBJECT_TYPE_DEFINITION: return buildObjectType(typeNode);
443+
case Kind.INTERFACE_TYPE_DEFINITION: return buildInterfaceType(typeNode);
444+
case Kind.UNION_TYPE_DEFINITION: return buildUnionType(typeNode);
445+
case Kind.SCALAR_TYPE_DEFINITION: return buildScalarType(typeNode);
446+
case Kind.ENUM_TYPE_DEFINITION: return buildEnumType(typeNode);
447+
case Kind.INPUT_OBJECT_TYPE_DEFINITION:
448+
return buildInputObjectType(typeNode);
460449
}
461450
throw new TypeError('Unknown type kind ' + typeNode.kind);
462451
}
@@ -572,10 +561,10 @@ export function extendSchema(
572561
}
573562

574563
function buildInputFieldType(typeNode: TypeNode): GraphQLInputType {
575-
if (typeNode.kind === LIST_TYPE) {
564+
if (typeNode.kind === Kind.LIST_TYPE) {
576565
return new GraphQLList(buildInputFieldType(typeNode.type));
577566
}
578-
if (typeNode.kind === NON_NULL_TYPE) {
567+
if (typeNode.kind === Kind.NON_NULL_TYPE) {
579568
const nullableType = buildInputFieldType(typeNode.type);
580569
invariant(!(nullableType instanceof GraphQLNonNull), 'Must be nullable');
581570
return new GraphQLNonNull(nullableType);
@@ -584,10 +573,10 @@ export function extendSchema(
584573
}
585574

586575
function buildOutputFieldType(typeNode: TypeNode): GraphQLOutputType {
587-
if (typeNode.kind === LIST_TYPE) {
576+
if (typeNode.kind === Kind.LIST_TYPE) {
588577
return new GraphQLList(buildOutputFieldType(typeNode.type));
589578
}
590-
if (typeNode.kind === NON_NULL_TYPE) {
579+
if (typeNode.kind === Kind.NON_NULL_TYPE) {
591580
const nullableType = buildOutputFieldType(typeNode.type);
592581
invariant(!(nullableType instanceof GraphQLNonNull), 'Must be nullable');
593582
return new GraphQLNonNull(nullableType);

0 commit comments

Comments
 (0)