Skip to content

Commit 1861f71

Browse files
committed
Be stricter about types
1 parent ac213fa commit 1861f71

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

src/language/ast.ts

+13-2
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,11 @@ export interface SemanticNonNullTypeNode {
530530
/** Type Reference */
531531

532532
export type TypeNode = NamedTypeNode | ListTypeNode | NonNullTypeNode;
533+
export type SchemaOutputTypeNode =
534+
| NamedTypeNode
535+
| ListTypeNode
536+
| NonNullTypeNode
537+
| SemanticNonNullTypeNode;
533538

534539
export interface NamedTypeNode {
535540
readonly kind: Kind.NAMED_TYPE;
@@ -540,7 +545,13 @@ export interface NamedTypeNode {
540545
export interface ListTypeNode {
541546
readonly kind: Kind.LIST_TYPE;
542547
readonly loc?: Location;
543-
readonly type: TypeNode | SemanticNonNullTypeNode;
548+
readonly type: TypeNode;
549+
}
550+
551+
export interface SchemaListTypeNode {
552+
readonly kind: Kind.LIST_TYPE;
553+
readonly loc?: Location;
554+
readonly type: SchemaOutputTypeNode;
544555
}
545556

546557
export interface NonNullTypeNode {
@@ -605,7 +616,7 @@ export interface FieldDefinitionNode {
605616
readonly description?: StringValueNode;
606617
readonly name: NameNode;
607618
readonly arguments?: ReadonlyArray<InputValueDefinitionNode>;
608-
readonly type: TypeNode | SemanticNonNullTypeNode;
619+
readonly type: SchemaOutputTypeNode;
609620
readonly directives?: ReadonlyArray<ConstDirectiveNode>;
610621
}
611622

src/utilities/extendSchema.ts

+2-5
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,8 @@ import type {
2424
ScalarTypeExtensionNode,
2525
SchemaDefinitionNode,
2626
SchemaExtensionNode,
27-
SemanticNonNullTypeNode,
27+
SchemaOutputTypeNode,
2828
TypeDefinitionNode,
29-
TypeNode,
3029
UnionTypeDefinitionNode,
3130
UnionTypeExtensionNode,
3231
} from '../language/ast';
@@ -432,9 +431,7 @@ export function extendSchemaImpl(
432431
return type;
433432
}
434433

435-
function getWrappedType(
436-
node: TypeNode | SemanticNonNullTypeNode,
437-
): GraphQLType {
434+
function getWrappedType(node: SchemaOutputTypeNode): GraphQLType {
438435
if (node.kind === Kind.LIST_TYPE) {
439436
return new GraphQLList(getWrappedType(node.type));
440437
}

src/utilities/typeFromAST.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export function typeFromAST(
3939
): GraphQLType | undefined {
4040
switch (typeNode.kind) {
4141
case Kind.LIST_TYPE: {
42-
const innerType = typeFromAST(schema, typeNode.type as TypeNode);
42+
const innerType = typeFromAST(schema, typeNode.type);
4343
return innerType && new GraphQLList(innerType);
4444
}
4545
case Kind.NON_NULL_TYPE: {

0 commit comments

Comments
 (0)