From 3d1cd02f27518f1a04374c7c8320cd5d82ede6e9 Mon Sep 17 00:00:00 2001
From: Minteck <contact@minteck.org>
Date: Thu, 23 Feb 2023 19:34:56 +0100
Subject: Updated 40 files, added 37 files, deleted 1103 files and renamed 3905
 files (automated)

---
 .../rules/PossibleFragmentSpreadsRule.mjs          | 50 ++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 includes/external/school/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs

(limited to 'includes/external/school/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs')

diff --git a/includes/external/school/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs b/includes/external/school/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs
new file mode 100644
index 0000000..da45925
--- /dev/null
+++ b/includes/external/school/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs
@@ -0,0 +1,50 @@
+import inspect from "../../jsutils/inspect.mjs";
+import { GraphQLError } from "../../error/GraphQLError.mjs";
+import { isCompositeType } from "../../type/definition.mjs";
+import { typeFromAST } from "../../utilities/typeFromAST.mjs";
+import { doTypesOverlap } from "../../utilities/typeComparators.mjs";
+
+/**
+ * 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) {
+  return {
+    InlineFragment: function InlineFragment(node) {
+      var fragType = context.getType();
+      var parentType = context.getParentType();
+
+      if (isCompositeType(fragType) && isCompositeType(parentType) && !doTypesOverlap(context.getSchema(), fragType, parentType)) {
+        var parentTypeStr = inspect(parentType);
+        var fragTypeStr = inspect(fragType);
+        context.reportError(new GraphQLError("Fragment cannot be spread here as objects of type \"".concat(parentTypeStr, "\" can never be of type \"").concat(fragTypeStr, "\"."), node));
+      }
+    },
+    FragmentSpread: function FragmentSpread(node) {
+      var fragName = node.name.value;
+      var fragType = getFragmentType(context, fragName);
+      var parentType = context.getParentType();
+
+      if (fragType && parentType && !doTypesOverlap(context.getSchema(), fragType, parentType)) {
+        var parentTypeStr = inspect(parentType);
+        var fragTypeStr = inspect(fragType);
+        context.reportError(new GraphQLError("Fragment \"".concat(fragName, "\" cannot be spread here as objects of type \"").concat(parentTypeStr, "\" can never be of type \"").concat(fragTypeStr, "\"."), node));
+      }
+    }
+  };
+}
+
+function getFragmentType(context, name) {
+  var frag = context.getFragment(name);
+
+  if (frag) {
+    var type = typeFromAST(context.getSchema(), frag.typeCondition);
+
+    if (isCompositeType(type)) {
+      return type;
+    }
+  }
+}
-- 
cgit