Skip to content

Commit b122456

Browse files
committed
validateSchema: inline 'getAllNodes' function
1 parent 334ceb0 commit b122456

File tree

1 file changed

+9
-25
lines changed

1 file changed

+9
-25
lines changed

src/type/validate.js

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,9 @@ function getOperationTypeNode(
143143
schema: GraphQLSchema,
144144
operation: OperationTypeNode,
145145
): ?ASTNode {
146-
const operationNodes = getAllSubNodes(schema, (node) => node.operationTypes);
147-
for (const node of operationNodes) {
148-
if (node.operation === operation) {
149-
return node.type;
150-
}
151-
}
152-
return undefined;
146+
return getAllNodes(schema)
147+
.flatMap((schemaNode) => schemaNode.operationTypes ?? [])
148+
.find((operationNode) => operationNode.operation === operation).type;
153149
}
154150

155151
function validateDirectives(context: SchemaValidationContext): void {
@@ -626,34 +622,22 @@ function getAllNodes<T: ASTNode, K: ASTNode>(
626622
: extensionASTNodes ?? [];
627623
}
628624

629-
function getAllSubNodes<T: ASTNode, K: ASTNode, L: ASTNode>(
630-
object: SDLDefinedObject<T, K>,
631-
getter: (T | K) => ?(L | $ReadOnlyArray<L>),
632-
): $ReadOnlyArray<L> {
633-
let subNodes = [];
634-
for (const node of getAllNodes(object)) {
635-
// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
636-
subNodes = subNodes.concat(getter(node) ?? []);
637-
}
638-
return subNodes;
639-
}
640-
641625
function getAllImplementsInterfaceNodes(
642626
type: GraphQLObjectType | GraphQLInterfaceType,
643627
iface: GraphQLInterfaceType,
644628
): $ReadOnlyArray<NamedTypeNode> {
645-
return getAllSubNodes(type, (typeNode) => typeNode.interfaces).filter(
646-
(ifaceNode) => ifaceNode.name.value === iface.name,
647-
);
629+
return getAllNodes(type)
630+
.flatMap((typeNode) => typeNode.interfaces ?? [])
631+
.filter((ifaceNode) => ifaceNode.name.value === iface.name);
648632
}
649633

650634
function getUnionMemberTypeNodes(
651635
union: GraphQLUnionType,
652636
typeName: string,
653637
): ?$ReadOnlyArray<NamedTypeNode> {
654-
return getAllSubNodes(union, (unionNode) => unionNode.types).filter(
655-
(typeNode) => typeNode.name.value === typeName,
656-
);
638+
return getAllNodes(union)
639+
.flatMap((unionNode) => unionNode.types ?? [])
640+
.filter((typeNode) => typeNode.name.value === typeName);
657641
}
658642

659643
function getDeprecatedDirectiveNode(

0 commit comments

Comments
 (0)