summaryrefslogtreecommitdiff
path: root/school/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js.flow
diff options
context:
space:
mode:
Diffstat (limited to 'school/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js.flow')
-rw-r--r--school/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js.flow78
1 files changed, 0 insertions, 78 deletions
diff --git a/school/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js.flow b/school/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js.flow
deleted file mode 100644
index 9c275bb..0000000
--- a/school/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js.flow
+++ /dev/null
@@ -1,78 +0,0 @@
-// @flow strict
-import inspect from '../../jsutils/inspect';
-
-import { GraphQLError } from '../../error/GraphQLError';
-
-import type { ASTVisitor } from '../../language/visitor';
-
-import type { GraphQLCompositeType } from '../../type/definition';
-import { isCompositeType } from '../../type/definition';
-
-import { typeFromAST } from '../../utilities/typeFromAST';
-import { doTypesOverlap } from '../../utilities/typeComparators';
-
-import type { ValidationContext } from '../ValidationContext';
-
-/**
- * Possible fragment spread
- *
- * A fragment spread is only valid if the type condition could ever possibly
- * be true: if there is a non-empty intersection of the possible parent types,
- * and possible types which pass the type condition.
- */
-export function PossibleFragmentSpreadsRule(
- context: ValidationContext,
-): ASTVisitor {
- return {
- InlineFragment(node) {
- const fragType = context.getType();
- const parentType = context.getParentType();
- if (
- isCompositeType(fragType) &&
- isCompositeType(parentType) &&
- !doTypesOverlap(context.getSchema(), fragType, parentType)
- ) {
- const parentTypeStr = inspect(parentType);
- const fragTypeStr = inspect(fragType);
- context.reportError(
- new GraphQLError(
- `Fragment cannot be spread here as objects of type "${parentTypeStr}" can never be of type "${fragTypeStr}".`,
- node,
- ),
- );
- }
- },
- FragmentSpread(node) {
- const fragName = node.name.value;
- const fragType = getFragmentType(context, fragName);
- const parentType = context.getParentType();
- if (
- fragType &&
- parentType &&
- !doTypesOverlap(context.getSchema(), fragType, parentType)
- ) {
- const parentTypeStr = inspect(parentType);
- const fragTypeStr = inspect(fragType);
- context.reportError(
- new GraphQLError(
- `Fragment "${fragName}" cannot be spread here as objects of type "${parentTypeStr}" can never be of type "${fragTypeStr}".`,
- node,
- ),
- );
- }
- },
- };
-}
-
-function getFragmentType(
- context: ValidationContext,
- name: string,
-): ?GraphQLCompositeType {
- const frag = context.getFragment(name);
- if (frag) {
- const type = typeFromAST(context.getSchema(), frag.typeCondition);
- if (isCompositeType(type)) {
- return type;
- }
- }
-}