From 23563c7188e089929b60f9e10721c6fc43a220ff Mon Sep 17 00:00:00 2001
From: RaindropsSys <contact@minteck.org>
Date: Thu, 22 Jun 2023 23:06:12 +0200
Subject: Updated 15 files, added includes/maintenance/deleteUnusedAssets.php
 and deleted 4944 files (automated)

---
 .../node_modules/graphql/utilities/TypeInfo.d.ts   |  60 --
 .../node_modules/graphql/utilities/TypeInfo.js     | 397 -----------
 .../graphql/utilities/TypeInfo.js.flow             | 359 ----------
 .../node_modules/graphql/utilities/TypeInfo.mjs    | 378 ----------
 .../graphql/utilities/assertValidName.d.ts         |  11 -
 .../graphql/utilities/assertValidName.js           |  44 --
 .../graphql/utilities/assertValidName.js.flow      |  34 -
 .../graphql/utilities/assertValidName.mjs          |  31 -
 .../graphql/utilities/astFromValue.d.ts            |  26 -
 .../node_modules/graphql/utilities/astFromValue.js | 196 ------
 .../graphql/utilities/astFromValue.js.flow         | 154 ----
 .../graphql/utilities/astFromValue.mjs             | 178 -----
 .../graphql/utilities/buildASTSchema.d.ts          |  53 --
 .../graphql/utilities/buildASTSchema.js            | 117 ---
 .../graphql/utilities/buildASTSchema.js.flow       | 129 ----
 .../graphql/utilities/buildASTSchema.mjs           | 100 ---
 .../graphql/utilities/buildClientSchema.d.ts       |  20 -
 .../graphql/utilities/buildClientSchema.js         | 335 ---------
 .../graphql/utilities/buildClientSchema.js.flow    | 408 -----------
 .../graphql/utilities/buildClientSchema.mjs        | 315 ---------
 .../graphql/utilities/coerceInputValue.d.ts        |  17 -
 .../graphql/utilities/coerceInputValue.js          | 148 ----
 .../graphql/utilities/coerceInputValue.js.flow     | 195 -----
 .../graphql/utilities/coerceInputValue.mjs         | 129 ----
 .../node_modules/graphql/utilities/concatAST.d.ts  |   8 -
 .../node_modules/graphql/utilities/concatAST.js    |  25 -
 .../graphql/utilities/concatAST.js.flow            |  17 -
 .../node_modules/graphql/utilities/concatAST.mjs   |  18 -
 .../graphql/utilities/extendSchema.d.ts            |  75 --
 .../node_modules/graphql/utilities/extendSchema.js | 719 -------------------
 .../graphql/utilities/extendSchema.js.flow         | 782 ---------------------
 .../graphql/utilities/extendSchema.mjs             | 689 ------------------
 .../graphql/utilities/findBreakingChanges.d.ts     |  57 --
 .../graphql/utilities/findBreakingChanges.js       | 522 --------------
 .../graphql/utilities/findBreakingChanges.js.flow  | 590 ----------------
 .../graphql/utilities/findBreakingChanges.mjs      | 498 -------------
 .../graphql/utilities/findDeprecatedUsages.d.ts    |  21 -
 .../graphql/utilities/findDeprecatedUsages.js      |  27 -
 .../graphql/utilities/findDeprecatedUsages.js.flow |  29 -
 .../graphql/utilities/findDeprecatedUsages.mjs     |  19 -
 .../graphql/utilities/getIntrospectionQuery.d.ts   | 193 -----
 .../graphql/utilities/getIntrospectionQuery.js     |  33 -
 .../utilities/getIntrospectionQuery.js.flow        | 312 --------
 .../graphql/utilities/getIntrospectionQuery.mjs    |  26 -
 .../graphql/utilities/getOperationAST.d.ts         |  13 -
 .../graphql/utilities/getOperationAST.js           |  40 --
 .../graphql/utilities/getOperationAST.js.flow      |  31 -
 .../graphql/utilities/getOperationAST.mjs          |  33 -
 .../graphql/utilities/getOperationRootType.d.ts    |  14 -
 .../graphql/utilities/getOperationRootType.js      |  45 --
 .../graphql/utilities/getOperationRootType.js.flow |  56 --
 .../graphql/utilities/getOperationRootType.mjs     |  38 -
 .../node_modules/graphql/utilities/index.d.ts      | 119 ----
 .../school/node_modules/graphql/utilities/index.js | 247 -------
 .../node_modules/graphql/utilities/index.js.flow   | 114 ---
 .../node_modules/graphql/utilities/index.mjs       |  49 --
 .../graphql/utilities/introspectionFromSchema.d.ts |  20 -
 .../graphql/utilities/introspectionFromSchema.js   |  48 --
 .../utilities/introspectionFromSchema.js.flow      |  41 --
 .../graphql/utilities/introspectionFromSchema.mjs  |  36 -
 .../graphql/utilities/lexicographicSortSchema.d.ts |   8 -
 .../graphql/utilities/lexicographicSortSchema.js   | 202 ------
 .../utilities/lexicographicSortSchema.js.flow      | 187 -----
 .../graphql/utilities/lexicographicSortSchema.mjs  | 185 -----
 .../graphql/utilities/printSchema.d.ts             |  30 -
 .../node_modules/graphql/utilities/printSchema.js  | 289 --------
 .../graphql/utilities/printSchema.js.flow          | 382 ----------
 .../node_modules/graphql/utilities/printSchema.mjs | 268 -------
 .../graphql/utilities/separateOperations.d.ts      |  11 -
 .../graphql/utilities/separateOperations.js        |  92 ---
 .../graphql/utilities/separateOperations.js.flow   |  97 ---
 .../graphql/utilities/separateOperations.mjs       |  84 ---
 .../graphql/utilities/stripIgnoredCharacters.d.ts  |  55 --
 .../graphql/utilities/stripIgnoredCharacters.js    | 123 ----
 .../utilities/stripIgnoredCharacters.js.flow       | 115 ---
 .../graphql/utilities/stripIgnoredCharacters.mjs   | 113 ---
 .../graphql/utilities/typeComparators.d.ts         |  32 -
 .../graphql/utilities/typeComparators.js           | 115 ---
 .../graphql/utilities/typeComparators.js.flow      | 120 ----
 .../graphql/utilities/typeComparators.mjs          | 104 ---
 .../graphql/utilities/typeFromAST.d.ts             |  29 -
 .../node_modules/graphql/utilities/typeFromAST.js  |  39 -
 .../graphql/utilities/typeFromAST.js.flow          |  55 --
 .../node_modules/graphql/utilities/typeFromAST.mjs |  36 -
 .../graphql/utilities/typedQueryDocumentNode.d.ts  |  20 -
 .../graphql/utilities/valueFromAST.d.ts            |  30 -
 .../node_modules/graphql/utilities/valueFromAST.js | 186 -----
 .../graphql/utilities/valueFromAST.js.flow         | 164 -----
 .../graphql/utilities/valueFromAST.mjs             | 171 -----
 .../graphql/utilities/valueFromASTUntyped.d.ts     |  24 -
 .../graphql/utilities/valueFromASTUntyped.js       |  68 --
 .../graphql/utilities/valueFromASTUntyped.js.flow  |  57 --
 .../graphql/utilities/valueFromASTUntyped.mjs      |  56 --
 93 files changed, 12985 deletions(-)
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/TypeInfo.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/TypeInfo.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/TypeInfo.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/TypeInfo.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/assertValidName.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/assertValidName.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/assertValidName.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/assertValidName.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/astFromValue.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/astFromValue.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/astFromValue.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/astFromValue.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/buildASTSchema.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/buildASTSchema.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/buildASTSchema.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/buildASTSchema.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/buildClientSchema.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/buildClientSchema.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/buildClientSchema.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/buildClientSchema.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/coerceInputValue.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/coerceInputValue.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/coerceInputValue.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/coerceInputValue.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/concatAST.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/concatAST.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/concatAST.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/concatAST.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/extendSchema.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/extendSchema.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/extendSchema.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/extendSchema.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/findBreakingChanges.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/findBreakingChanges.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/findBreakingChanges.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/findBreakingChanges.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/getOperationAST.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/getOperationAST.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/getOperationAST.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/getOperationAST.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/getOperationRootType.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/getOperationRootType.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/getOperationRootType.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/getOperationRootType.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/index.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/index.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/index.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/index.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/printSchema.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/printSchema.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/printSchema.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/printSchema.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/separateOperations.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/separateOperations.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/separateOperations.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/separateOperations.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/typeComparators.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/typeComparators.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/typeComparators.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/typeComparators.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/typeFromAST.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/typeFromAST.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/typeFromAST.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/typeFromAST.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/typedQueryDocumentNode.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/valueFromAST.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/valueFromAST.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/valueFromAST.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/valueFromAST.mjs
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.d.ts
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.js
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.js.flow
 delete mode 100644 includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.mjs

(limited to 'includes/external/school/node_modules/graphql/utilities')

diff --git a/includes/external/school/node_modules/graphql/utilities/TypeInfo.d.ts b/includes/external/school/node_modules/graphql/utilities/TypeInfo.d.ts
deleted file mode 100644
index 499fb02..0000000
--- a/includes/external/school/node_modules/graphql/utilities/TypeInfo.d.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import { Maybe } from '../jsutils/Maybe';
-
-import { Visitor } from '../language/visitor';
-import { ASTNode, ASTKindToNode, FieldNode } from '../language/ast';
-import { GraphQLSchema } from '../type/schema';
-import { GraphQLDirective } from '../type/directives';
-import {
-  GraphQLType,
-  GraphQLInputType,
-  GraphQLOutputType,
-  GraphQLCompositeType,
-  GraphQLField,
-  GraphQLArgument,
-  GraphQLEnumValue,
-} from '../type/definition';
-
-/**
- * TypeInfo is a utility class which, given a GraphQL schema, can keep track
- * of the current field and type definitions at any point in a GraphQL document
- * AST during a recursive descent by calling `enter(node)` and `leave(node)`.
- */
-export class TypeInfo {
-  constructor(
-    schema: GraphQLSchema,
-    // NOTE: this experimental optional second parameter is only needed in order
-    // to support non-spec-compliant code bases. You should never need to use it.
-    // It may disappear in the future.
-    getFieldDefFn?: getFieldDef,
-    // Initial type may be provided in rare cases to facilitate traversals
-    // beginning somewhere other than documents.
-    initialType?: GraphQLType,
-  );
-
-  getType(): Maybe<GraphQLOutputType>;
-  getParentType(): Maybe<GraphQLCompositeType>;
-  getInputType(): Maybe<GraphQLInputType>;
-  getParentInputType(): Maybe<GraphQLInputType>;
-  getFieldDef(): GraphQLField<any, Maybe<any>>;
-  getDefaultValue(): Maybe<any>;
-  getDirective(): Maybe<GraphQLDirective>;
-  getArgument(): Maybe<GraphQLArgument>;
-  getEnumValue(): Maybe<GraphQLEnumValue>;
-  enter(node: ASTNode): any;
-  leave(node: ASTNode): any;
-}
-
-type getFieldDef = (
-  schema: GraphQLSchema,
-  parentType: GraphQLType,
-  fieldNode: FieldNode,
-) => Maybe<GraphQLField<any, any>>;
-
-/**
- * Creates a new visitor instance which maintains a provided TypeInfo instance
- * along with visiting visitor.
- */
-export function visitWithTypeInfo(
-  typeInfo: TypeInfo,
-  visitor: Visitor<ASTKindToNode>,
-): Visitor<ASTKindToNode>;
diff --git a/includes/external/school/node_modules/graphql/utilities/TypeInfo.js b/includes/external/school/node_modules/graphql/utilities/TypeInfo.js
deleted file mode 100644
index ccffc74..0000000
--- a/includes/external/school/node_modules/graphql/utilities/TypeInfo.js
+++ /dev/null
@@ -1,397 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.visitWithTypeInfo = visitWithTypeInfo;
-exports.TypeInfo = void 0;
-
-var _find = _interopRequireDefault(require("../polyfills/find.js"));
-
-var _kinds = require("../language/kinds.js");
-
-var _ast = require("../language/ast.js");
-
-var _visitor = require("../language/visitor.js");
-
-var _definition = require("../type/definition.js");
-
-var _introspection = require("../type/introspection.js");
-
-var _typeFromAST = require("./typeFromAST.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * TypeInfo is a utility class which, given a GraphQL schema, can keep track
- * of the current field and type definitions at any point in a GraphQL document
- * AST during a recursive descent by calling `enter(node)` and `leave(node)`.
- */
-var TypeInfo = /*#__PURE__*/function () {
-  function TypeInfo(schema, // NOTE: this experimental optional second parameter is only needed in order
-  // to support non-spec-compliant code bases. You should never need to use it.
-  // It may disappear in the future.
-  getFieldDefFn, // Initial type may be provided in rare cases to facilitate traversals
-  // beginning somewhere other than documents.
-  initialType) {
-    this._schema = schema;
-    this._typeStack = [];
-    this._parentTypeStack = [];
-    this._inputTypeStack = [];
-    this._fieldDefStack = [];
-    this._defaultValueStack = [];
-    this._directive = null;
-    this._argument = null;
-    this._enumValue = null;
-    this._getFieldDef = getFieldDefFn !== null && getFieldDefFn !== void 0 ? getFieldDefFn : getFieldDef;
-
-    if (initialType) {
-      if ((0, _definition.isInputType)(initialType)) {
-        this._inputTypeStack.push(initialType);
-      }
-
-      if ((0, _definition.isCompositeType)(initialType)) {
-        this._parentTypeStack.push(initialType);
-      }
-
-      if ((0, _definition.isOutputType)(initialType)) {
-        this._typeStack.push(initialType);
-      }
-    }
-  }
-
-  var _proto = TypeInfo.prototype;
-
-  _proto.getType = function getType() {
-    if (this._typeStack.length > 0) {
-      return this._typeStack[this._typeStack.length - 1];
-    }
-  };
-
-  _proto.getParentType = function getParentType() {
-    if (this._parentTypeStack.length > 0) {
-      return this._parentTypeStack[this._parentTypeStack.length - 1];
-    }
-  };
-
-  _proto.getInputType = function getInputType() {
-    if (this._inputTypeStack.length > 0) {
-      return this._inputTypeStack[this._inputTypeStack.length - 1];
-    }
-  };
-
-  _proto.getParentInputType = function getParentInputType() {
-    if (this._inputTypeStack.length > 1) {
-      return this._inputTypeStack[this._inputTypeStack.length - 2];
-    }
-  };
-
-  _proto.getFieldDef = function getFieldDef() {
-    if (this._fieldDefStack.length > 0) {
-      return this._fieldDefStack[this._fieldDefStack.length - 1];
-    }
-  };
-
-  _proto.getDefaultValue = function getDefaultValue() {
-    if (this._defaultValueStack.length > 0) {
-      return this._defaultValueStack[this._defaultValueStack.length - 1];
-    }
-  };
-
-  _proto.getDirective = function getDirective() {
-    return this._directive;
-  };
-
-  _proto.getArgument = function getArgument() {
-    return this._argument;
-  };
-
-  _proto.getEnumValue = function getEnumValue() {
-    return this._enumValue;
-  };
-
-  _proto.enter = function enter(node) {
-    var schema = this._schema; // Note: many of the types below are explicitly typed as "mixed" to drop
-    // any assumptions of a valid schema to ensure runtime types are properly
-    // checked before continuing since TypeInfo is used as part of validation
-    // which occurs before guarantees of schema and document validity.
-
-    switch (node.kind) {
-      case _kinds.Kind.SELECTION_SET:
-        {
-          var namedType = (0, _definition.getNamedType)(this.getType());
-
-          this._parentTypeStack.push((0, _definition.isCompositeType)(namedType) ? namedType : undefined);
-
-          break;
-        }
-
-      case _kinds.Kind.FIELD:
-        {
-          var parentType = this.getParentType();
-          var fieldDef;
-          var fieldType;
-
-          if (parentType) {
-            fieldDef = this._getFieldDef(schema, parentType, node);
-
-            if (fieldDef) {
-              fieldType = fieldDef.type;
-            }
-          }
-
-          this._fieldDefStack.push(fieldDef);
-
-          this._typeStack.push((0, _definition.isOutputType)(fieldType) ? fieldType : undefined);
-
-          break;
-        }
-
-      case _kinds.Kind.DIRECTIVE:
-        this._directive = schema.getDirective(node.name.value);
-        break;
-
-      case _kinds.Kind.OPERATION_DEFINITION:
-        {
-          var type;
-
-          switch (node.operation) {
-            case 'query':
-              type = schema.getQueryType();
-              break;
-
-            case 'mutation':
-              type = schema.getMutationType();
-              break;
-
-            case 'subscription':
-              type = schema.getSubscriptionType();
-              break;
-          }
-
-          this._typeStack.push((0, _definition.isObjectType)(type) ? type : undefined);
-
-          break;
-        }
-
-      case _kinds.Kind.INLINE_FRAGMENT:
-      case _kinds.Kind.FRAGMENT_DEFINITION:
-        {
-          var typeConditionAST = node.typeCondition;
-          var outputType = typeConditionAST ? (0, _typeFromAST.typeFromAST)(schema, typeConditionAST) : (0, _definition.getNamedType)(this.getType());
-
-          this._typeStack.push((0, _definition.isOutputType)(outputType) ? outputType : undefined);
-
-          break;
-        }
-
-      case _kinds.Kind.VARIABLE_DEFINITION:
-        {
-          var inputType = (0, _typeFromAST.typeFromAST)(schema, node.type);
-
-          this._inputTypeStack.push((0, _definition.isInputType)(inputType) ? inputType : undefined);
-
-          break;
-        }
-
-      case _kinds.Kind.ARGUMENT:
-        {
-          var _this$getDirective;
-
-          var argDef;
-          var argType;
-          var fieldOrDirective = (_this$getDirective = this.getDirective()) !== null && _this$getDirective !== void 0 ? _this$getDirective : this.getFieldDef();
-
-          if (fieldOrDirective) {
-            argDef = (0, _find.default)(fieldOrDirective.args, function (arg) {
-              return arg.name === node.name.value;
-            });
-
-            if (argDef) {
-              argType = argDef.type;
-            }
-          }
-
-          this._argument = argDef;
-
-          this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);
-
-          this._inputTypeStack.push((0, _definition.isInputType)(argType) ? argType : undefined);
-
-          break;
-        }
-
-      case _kinds.Kind.LIST:
-        {
-          var listType = (0, _definition.getNullableType)(this.getInputType());
-          var itemType = (0, _definition.isListType)(listType) ? listType.ofType : listType; // List positions never have a default value.
-
-          this._defaultValueStack.push(undefined);
-
-          this._inputTypeStack.push((0, _definition.isInputType)(itemType) ? itemType : undefined);
-
-          break;
-        }
-
-      case _kinds.Kind.OBJECT_FIELD:
-        {
-          var objectType = (0, _definition.getNamedType)(this.getInputType());
-          var inputFieldType;
-          var inputField;
-
-          if ((0, _definition.isInputObjectType)(objectType)) {
-            inputField = objectType.getFields()[node.name.value];
-
-            if (inputField) {
-              inputFieldType = inputField.type;
-            }
-          }
-
-          this._defaultValueStack.push(inputField ? inputField.defaultValue : undefined);
-
-          this._inputTypeStack.push((0, _definition.isInputType)(inputFieldType) ? inputFieldType : undefined);
-
-          break;
-        }
-
-      case _kinds.Kind.ENUM:
-        {
-          var enumType = (0, _definition.getNamedType)(this.getInputType());
-          var enumValue;
-
-          if ((0, _definition.isEnumType)(enumType)) {
-            enumValue = enumType.getValue(node.value);
-          }
-
-          this._enumValue = enumValue;
-          break;
-        }
-    }
-  };
-
-  _proto.leave = function leave(node) {
-    switch (node.kind) {
-      case _kinds.Kind.SELECTION_SET:
-        this._parentTypeStack.pop();
-
-        break;
-
-      case _kinds.Kind.FIELD:
-        this._fieldDefStack.pop();
-
-        this._typeStack.pop();
-
-        break;
-
-      case _kinds.Kind.DIRECTIVE:
-        this._directive = null;
-        break;
-
-      case _kinds.Kind.OPERATION_DEFINITION:
-      case _kinds.Kind.INLINE_FRAGMENT:
-      case _kinds.Kind.FRAGMENT_DEFINITION:
-        this._typeStack.pop();
-
-        break;
-
-      case _kinds.Kind.VARIABLE_DEFINITION:
-        this._inputTypeStack.pop();
-
-        break;
-
-      case _kinds.Kind.ARGUMENT:
-        this._argument = null;
-
-        this._defaultValueStack.pop();
-
-        this._inputTypeStack.pop();
-
-        break;
-
-      case _kinds.Kind.LIST:
-      case _kinds.Kind.OBJECT_FIELD:
-        this._defaultValueStack.pop();
-
-        this._inputTypeStack.pop();
-
-        break;
-
-      case _kinds.Kind.ENUM:
-        this._enumValue = null;
-        break;
-    }
-  };
-
-  return TypeInfo;
-}();
-/**
- * Not exactly the same as the executor's definition of getFieldDef, in this
- * statically evaluated environment we do not always have an Object type,
- * and need to handle Interface and Union types.
- */
-
-
-exports.TypeInfo = TypeInfo;
-
-function getFieldDef(schema, parentType, fieldNode) {
-  var name = fieldNode.name.value;
-
-  if (name === _introspection.SchemaMetaFieldDef.name && schema.getQueryType() === parentType) {
-    return _introspection.SchemaMetaFieldDef;
-  }
-
-  if (name === _introspection.TypeMetaFieldDef.name && schema.getQueryType() === parentType) {
-    return _introspection.TypeMetaFieldDef;
-  }
-
-  if (name === _introspection.TypeNameMetaFieldDef.name && (0, _definition.isCompositeType)(parentType)) {
-    return _introspection.TypeNameMetaFieldDef;
-  }
-
-  if ((0, _definition.isObjectType)(parentType) || (0, _definition.isInterfaceType)(parentType)) {
-    return parentType.getFields()[name];
-  }
-}
-/**
- * Creates a new visitor instance which maintains a provided TypeInfo instance
- * along with visiting visitor.
- */
-
-
-function visitWithTypeInfo(typeInfo, visitor) {
-  return {
-    enter: function enter(node) {
-      typeInfo.enter(node);
-      var fn = (0, _visitor.getVisitFn)(visitor, node.kind,
-      /* isLeaving */
-      false);
-
-      if (fn) {
-        var result = fn.apply(visitor, arguments);
-
-        if (result !== undefined) {
-          typeInfo.leave(node);
-
-          if ((0, _ast.isNode)(result)) {
-            typeInfo.enter(result);
-          }
-        }
-
-        return result;
-      }
-    },
-    leave: function leave(node) {
-      var fn = (0, _visitor.getVisitFn)(visitor, node.kind,
-      /* isLeaving */
-      true);
-      var result;
-
-      if (fn) {
-        result = fn.apply(visitor, arguments);
-      }
-
-      typeInfo.leave(node);
-      return result;
-    }
-  };
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/TypeInfo.js.flow b/includes/external/school/node_modules/graphql/utilities/TypeInfo.js.flow
deleted file mode 100644
index aac8c78..0000000
--- a/includes/external/school/node_modules/graphql/utilities/TypeInfo.js.flow
+++ /dev/null
@@ -1,359 +0,0 @@
-// @flow strict
-import find from '../polyfills/find';
-
-import type { Visitor } from '../language/visitor';
-import type { ASTNode, ASTKindToNode, FieldNode } from '../language/ast';
-import { Kind } from '../language/kinds';
-import { isNode } from '../language/ast';
-import { getVisitFn } from '../language/visitor';
-
-import type { GraphQLSchema } from '../type/schema';
-import type { GraphQLDirective } from '../type/directives';
-import type {
-  GraphQLType,
-  GraphQLInputType,
-  GraphQLOutputType,
-  GraphQLCompositeType,
-  GraphQLField,
-  GraphQLArgument,
-  GraphQLInputField,
-  GraphQLEnumValue,
-} from '../type/definition';
-import {
-  isObjectType,
-  isInterfaceType,
-  isEnumType,
-  isInputObjectType,
-  isListType,
-  isCompositeType,
-  isInputType,
-  isOutputType,
-  getNullableType,
-  getNamedType,
-} from '../type/definition';
-import {
-  SchemaMetaFieldDef,
-  TypeMetaFieldDef,
-  TypeNameMetaFieldDef,
-} from '../type/introspection';
-
-import { typeFromAST } from './typeFromAST';
-
-/**
- * TypeInfo is a utility class which, given a GraphQL schema, can keep track
- * of the current field and type definitions at any point in a GraphQL document
- * AST during a recursive descent by calling `enter(node)` and `leave(node)`.
- */
-export class TypeInfo {
-  _schema: GraphQLSchema;
-  _typeStack: Array<?GraphQLOutputType>;
-  _parentTypeStack: Array<?GraphQLCompositeType>;
-  _inputTypeStack: Array<?GraphQLInputType>;
-  _fieldDefStack: Array<?GraphQLField<mixed, mixed>>;
-  _defaultValueStack: Array<?mixed>;
-  _directive: ?GraphQLDirective;
-  _argument: ?GraphQLArgument;
-  _enumValue: ?GraphQLEnumValue;
-  _getFieldDef: typeof getFieldDef;
-
-  constructor(
-    schema: GraphQLSchema,
-    // NOTE: this experimental optional second parameter is only needed in order
-    // to support non-spec-compliant code bases. You should never need to use it.
-    // It may disappear in the future.
-    getFieldDefFn?: typeof getFieldDef,
-    // Initial type may be provided in rare cases to facilitate traversals
-    // beginning somewhere other than documents.
-    initialType?: GraphQLType,
-  ) {
-    this._schema = schema;
-    this._typeStack = [];
-    this._parentTypeStack = [];
-    this._inputTypeStack = [];
-    this._fieldDefStack = [];
-    this._defaultValueStack = [];
-    this._directive = null;
-    this._argument = null;
-    this._enumValue = null;
-    this._getFieldDef = getFieldDefFn ?? getFieldDef;
-    if (initialType) {
-      if (isInputType(initialType)) {
-        this._inputTypeStack.push(initialType);
-      }
-      if (isCompositeType(initialType)) {
-        this._parentTypeStack.push(initialType);
-      }
-      if (isOutputType(initialType)) {
-        this._typeStack.push(initialType);
-      }
-    }
-  }
-
-  getType(): ?GraphQLOutputType {
-    if (this._typeStack.length > 0) {
-      return this._typeStack[this._typeStack.length - 1];
-    }
-  }
-
-  getParentType(): ?GraphQLCompositeType {
-    if (this._parentTypeStack.length > 0) {
-      return this._parentTypeStack[this._parentTypeStack.length - 1];
-    }
-  }
-
-  getInputType(): ?GraphQLInputType {
-    if (this._inputTypeStack.length > 0) {
-      return this._inputTypeStack[this._inputTypeStack.length - 1];
-    }
-  }
-
-  getParentInputType(): ?GraphQLInputType {
-    if (this._inputTypeStack.length > 1) {
-      return this._inputTypeStack[this._inputTypeStack.length - 2];
-    }
-  }
-
-  getFieldDef(): ?GraphQLField<mixed, mixed> {
-    if (this._fieldDefStack.length > 0) {
-      return this._fieldDefStack[this._fieldDefStack.length - 1];
-    }
-  }
-
-  getDefaultValue(): ?mixed {
-    if (this._defaultValueStack.length > 0) {
-      return this._defaultValueStack[this._defaultValueStack.length - 1];
-    }
-  }
-
-  getDirective(): ?GraphQLDirective {
-    return this._directive;
-  }
-
-  getArgument(): ?GraphQLArgument {
-    return this._argument;
-  }
-
-  getEnumValue(): ?GraphQLEnumValue {
-    return this._enumValue;
-  }
-
-  enter(node: ASTNode) {
-    const schema = this._schema;
-    // Note: many of the types below are explicitly typed as "mixed" to drop
-    // any assumptions of a valid schema to ensure runtime types are properly
-    // checked before continuing since TypeInfo is used as part of validation
-    // which occurs before guarantees of schema and document validity.
-    switch (node.kind) {
-      case Kind.SELECTION_SET: {
-        const namedType: mixed = getNamedType(this.getType());
-        this._parentTypeStack.push(
-          isCompositeType(namedType) ? namedType : undefined,
-        );
-        break;
-      }
-      case Kind.FIELD: {
-        const parentType = this.getParentType();
-        let fieldDef;
-        let fieldType: mixed;
-        if (parentType) {
-          fieldDef = this._getFieldDef(schema, parentType, node);
-          if (fieldDef) {
-            fieldType = fieldDef.type;
-          }
-        }
-        this._fieldDefStack.push(fieldDef);
-        this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined);
-        break;
-      }
-      case Kind.DIRECTIVE:
-        this._directive = schema.getDirective(node.name.value);
-        break;
-      case Kind.OPERATION_DEFINITION: {
-        let type: mixed;
-        switch (node.operation) {
-          case 'query':
-            type = schema.getQueryType();
-            break;
-          case 'mutation':
-            type = schema.getMutationType();
-            break;
-          case 'subscription':
-            type = schema.getSubscriptionType();
-            break;
-        }
-        this._typeStack.push(isObjectType(type) ? type : undefined);
-        break;
-      }
-      case Kind.INLINE_FRAGMENT:
-      case Kind.FRAGMENT_DEFINITION: {
-        const typeConditionAST = node.typeCondition;
-        const outputType: mixed = typeConditionAST
-          ? typeFromAST(schema, typeConditionAST)
-          : getNamedType(this.getType());
-        this._typeStack.push(isOutputType(outputType) ? outputType : undefined);
-        break;
-      }
-      case Kind.VARIABLE_DEFINITION: {
-        const inputType: mixed = typeFromAST(schema, node.type);
-        this._inputTypeStack.push(
-          isInputType(inputType) ? inputType : undefined,
-        );
-        break;
-      }
-      case Kind.ARGUMENT: {
-        let argDef;
-        let argType: mixed;
-        const fieldOrDirective = this.getDirective() ?? this.getFieldDef();
-        if (fieldOrDirective) {
-          argDef = find(
-            fieldOrDirective.args,
-            (arg) => arg.name === node.name.value,
-          );
-          if (argDef) {
-            argType = argDef.type;
-          }
-        }
-        this._argument = argDef;
-        this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);
-        this._inputTypeStack.push(isInputType(argType) ? argType : undefined);
-        break;
-      }
-      case Kind.LIST: {
-        const listType: mixed = getNullableType(this.getInputType());
-        const itemType: mixed = isListType(listType)
-          ? listType.ofType
-          : listType;
-        // List positions never have a default value.
-        this._defaultValueStack.push(undefined);
-        this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined);
-        break;
-      }
-      case Kind.OBJECT_FIELD: {
-        const objectType: mixed = getNamedType(this.getInputType());
-        let inputFieldType: GraphQLInputType | void;
-        let inputField: GraphQLInputField | void;
-        if (isInputObjectType(objectType)) {
-          inputField = objectType.getFields()[node.name.value];
-          if (inputField) {
-            inputFieldType = inputField.type;
-          }
-        }
-        this._defaultValueStack.push(
-          inputField ? inputField.defaultValue : undefined,
-        );
-        this._inputTypeStack.push(
-          isInputType(inputFieldType) ? inputFieldType : undefined,
-        );
-        break;
-      }
-      case Kind.ENUM: {
-        const enumType: mixed = getNamedType(this.getInputType());
-        let enumValue;
-        if (isEnumType(enumType)) {
-          enumValue = enumType.getValue(node.value);
-        }
-        this._enumValue = enumValue;
-        break;
-      }
-    }
-  }
-
-  leave(node: ASTNode) {
-    switch (node.kind) {
-      case Kind.SELECTION_SET:
-        this._parentTypeStack.pop();
-        break;
-      case Kind.FIELD:
-        this._fieldDefStack.pop();
-        this._typeStack.pop();
-        break;
-      case Kind.DIRECTIVE:
-        this._directive = null;
-        break;
-      case Kind.OPERATION_DEFINITION:
-      case Kind.INLINE_FRAGMENT:
-      case Kind.FRAGMENT_DEFINITION:
-        this._typeStack.pop();
-        break;
-      case Kind.VARIABLE_DEFINITION:
-        this._inputTypeStack.pop();
-        break;
-      case Kind.ARGUMENT:
-        this._argument = null;
-        this._defaultValueStack.pop();
-        this._inputTypeStack.pop();
-        break;
-      case Kind.LIST:
-      case Kind.OBJECT_FIELD:
-        this._defaultValueStack.pop();
-        this._inputTypeStack.pop();
-        break;
-      case Kind.ENUM:
-        this._enumValue = null;
-        break;
-    }
-  }
-}
-
-/**
- * Not exactly the same as the executor's definition of getFieldDef, in this
- * statically evaluated environment we do not always have an Object type,
- * and need to handle Interface and Union types.
- */
-function getFieldDef(
-  schema: GraphQLSchema,
-  parentType: GraphQLType,
-  fieldNode: FieldNode,
-): ?GraphQLField<mixed, mixed> {
-  const name = fieldNode.name.value;
-  if (
-    name === SchemaMetaFieldDef.name &&
-    schema.getQueryType() === parentType
-  ) {
-    return SchemaMetaFieldDef;
-  }
-  if (name === TypeMetaFieldDef.name && schema.getQueryType() === parentType) {
-    return TypeMetaFieldDef;
-  }
-  if (name === TypeNameMetaFieldDef.name && isCompositeType(parentType)) {
-    return TypeNameMetaFieldDef;
-  }
-  if (isObjectType(parentType) || isInterfaceType(parentType)) {
-    return parentType.getFields()[name];
-  }
-}
-
-/**
- * Creates a new visitor instance which maintains a provided TypeInfo instance
- * along with visiting visitor.
- */
-export function visitWithTypeInfo(
-  typeInfo: TypeInfo,
-  visitor: Visitor<ASTKindToNode>,
-): Visitor<ASTKindToNode> {
-  return {
-    enter(node) {
-      typeInfo.enter(node);
-      const fn = getVisitFn(visitor, node.kind, /* isLeaving */ false);
-      if (fn) {
-        const result = fn.apply(visitor, arguments);
-        if (result !== undefined) {
-          typeInfo.leave(node);
-          if (isNode(result)) {
-            typeInfo.enter(result);
-          }
-        }
-        return result;
-      }
-    },
-    leave(node) {
-      const fn = getVisitFn(visitor, node.kind, /* isLeaving */ true);
-      let result;
-      if (fn) {
-        result = fn.apply(visitor, arguments);
-      }
-      typeInfo.leave(node);
-      return result;
-    },
-  };
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/TypeInfo.mjs b/includes/external/school/node_modules/graphql/utilities/TypeInfo.mjs
deleted file mode 100644
index 00e988f..0000000
--- a/includes/external/school/node_modules/graphql/utilities/TypeInfo.mjs
+++ /dev/null
@@ -1,378 +0,0 @@
-import find from "../polyfills/find.mjs";
-import { Kind } from "../language/kinds.mjs";
-import { isNode } from "../language/ast.mjs";
-import { getVisitFn } from "../language/visitor.mjs";
-import { isObjectType, isInterfaceType, isEnumType, isInputObjectType, isListType, isCompositeType, isInputType, isOutputType, getNullableType, getNamedType } from "../type/definition.mjs";
-import { SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef } from "../type/introspection.mjs";
-import { typeFromAST } from "./typeFromAST.mjs";
-/**
- * TypeInfo is a utility class which, given a GraphQL schema, can keep track
- * of the current field and type definitions at any point in a GraphQL document
- * AST during a recursive descent by calling `enter(node)` and `leave(node)`.
- */
-
-export var TypeInfo = /*#__PURE__*/function () {
-  function TypeInfo(schema, // NOTE: this experimental optional second parameter is only needed in order
-  // to support non-spec-compliant code bases. You should never need to use it.
-  // It may disappear in the future.
-  getFieldDefFn, // Initial type may be provided in rare cases to facilitate traversals
-  // beginning somewhere other than documents.
-  initialType) {
-    this._schema = schema;
-    this._typeStack = [];
-    this._parentTypeStack = [];
-    this._inputTypeStack = [];
-    this._fieldDefStack = [];
-    this._defaultValueStack = [];
-    this._directive = null;
-    this._argument = null;
-    this._enumValue = null;
-    this._getFieldDef = getFieldDefFn !== null && getFieldDefFn !== void 0 ? getFieldDefFn : getFieldDef;
-
-    if (initialType) {
-      if (isInputType(initialType)) {
-        this._inputTypeStack.push(initialType);
-      }
-
-      if (isCompositeType(initialType)) {
-        this._parentTypeStack.push(initialType);
-      }
-
-      if (isOutputType(initialType)) {
-        this._typeStack.push(initialType);
-      }
-    }
-  }
-
-  var _proto = TypeInfo.prototype;
-
-  _proto.getType = function getType() {
-    if (this._typeStack.length > 0) {
-      return this._typeStack[this._typeStack.length - 1];
-    }
-  };
-
-  _proto.getParentType = function getParentType() {
-    if (this._parentTypeStack.length > 0) {
-      return this._parentTypeStack[this._parentTypeStack.length - 1];
-    }
-  };
-
-  _proto.getInputType = function getInputType() {
-    if (this._inputTypeStack.length > 0) {
-      return this._inputTypeStack[this._inputTypeStack.length - 1];
-    }
-  };
-
-  _proto.getParentInputType = function getParentInputType() {
-    if (this._inputTypeStack.length > 1) {
-      return this._inputTypeStack[this._inputTypeStack.length - 2];
-    }
-  };
-
-  _proto.getFieldDef = function getFieldDef() {
-    if (this._fieldDefStack.length > 0) {
-      return this._fieldDefStack[this._fieldDefStack.length - 1];
-    }
-  };
-
-  _proto.getDefaultValue = function getDefaultValue() {
-    if (this._defaultValueStack.length > 0) {
-      return this._defaultValueStack[this._defaultValueStack.length - 1];
-    }
-  };
-
-  _proto.getDirective = function getDirective() {
-    return this._directive;
-  };
-
-  _proto.getArgument = function getArgument() {
-    return this._argument;
-  };
-
-  _proto.getEnumValue = function getEnumValue() {
-    return this._enumValue;
-  };
-
-  _proto.enter = function enter(node) {
-    var schema = this._schema; // Note: many of the types below are explicitly typed as "mixed" to drop
-    // any assumptions of a valid schema to ensure runtime types are properly
-    // checked before continuing since TypeInfo is used as part of validation
-    // which occurs before guarantees of schema and document validity.
-
-    switch (node.kind) {
-      case Kind.SELECTION_SET:
-        {
-          var namedType = getNamedType(this.getType());
-
-          this._parentTypeStack.push(isCompositeType(namedType) ? namedType : undefined);
-
-          break;
-        }
-
-      case Kind.FIELD:
-        {
-          var parentType = this.getParentType();
-          var fieldDef;
-          var fieldType;
-
-          if (parentType) {
-            fieldDef = this._getFieldDef(schema, parentType, node);
-
-            if (fieldDef) {
-              fieldType = fieldDef.type;
-            }
-          }
-
-          this._fieldDefStack.push(fieldDef);
-
-          this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined);
-
-          break;
-        }
-
-      case Kind.DIRECTIVE:
-        this._directive = schema.getDirective(node.name.value);
-        break;
-
-      case Kind.OPERATION_DEFINITION:
-        {
-          var type;
-
-          switch (node.operation) {
-            case 'query':
-              type = schema.getQueryType();
-              break;
-
-            case 'mutation':
-              type = schema.getMutationType();
-              break;
-
-            case 'subscription':
-              type = schema.getSubscriptionType();
-              break;
-          }
-
-          this._typeStack.push(isObjectType(type) ? type : undefined);
-
-          break;
-        }
-
-      case Kind.INLINE_FRAGMENT:
-      case Kind.FRAGMENT_DEFINITION:
-        {
-          var typeConditionAST = node.typeCondition;
-          var outputType = typeConditionAST ? typeFromAST(schema, typeConditionAST) : getNamedType(this.getType());
-
-          this._typeStack.push(isOutputType(outputType) ? outputType : undefined);
-
-          break;
-        }
-
-      case Kind.VARIABLE_DEFINITION:
-        {
-          var inputType = typeFromAST(schema, node.type);
-
-          this._inputTypeStack.push(isInputType(inputType) ? inputType : undefined);
-
-          break;
-        }
-
-      case Kind.ARGUMENT:
-        {
-          var _this$getDirective;
-
-          var argDef;
-          var argType;
-          var fieldOrDirective = (_this$getDirective = this.getDirective()) !== null && _this$getDirective !== void 0 ? _this$getDirective : this.getFieldDef();
-
-          if (fieldOrDirective) {
-            argDef = find(fieldOrDirective.args, function (arg) {
-              return arg.name === node.name.value;
-            });
-
-            if (argDef) {
-              argType = argDef.type;
-            }
-          }
-
-          this._argument = argDef;
-
-          this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);
-
-          this._inputTypeStack.push(isInputType(argType) ? argType : undefined);
-
-          break;
-        }
-
-      case Kind.LIST:
-        {
-          var listType = getNullableType(this.getInputType());
-          var itemType = isListType(listType) ? listType.ofType : listType; // List positions never have a default value.
-
-          this._defaultValueStack.push(undefined);
-
-          this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined);
-
-          break;
-        }
-
-      case Kind.OBJECT_FIELD:
-        {
-          var objectType = getNamedType(this.getInputType());
-          var inputFieldType;
-          var inputField;
-
-          if (isInputObjectType(objectType)) {
-            inputField = objectType.getFields()[node.name.value];
-
-            if (inputField) {
-              inputFieldType = inputField.type;
-            }
-          }
-
-          this._defaultValueStack.push(inputField ? inputField.defaultValue : undefined);
-
-          this._inputTypeStack.push(isInputType(inputFieldType) ? inputFieldType : undefined);
-
-          break;
-        }
-
-      case Kind.ENUM:
-        {
-          var enumType = getNamedType(this.getInputType());
-          var enumValue;
-
-          if (isEnumType(enumType)) {
-            enumValue = enumType.getValue(node.value);
-          }
-
-          this._enumValue = enumValue;
-          break;
-        }
-    }
-  };
-
-  _proto.leave = function leave(node) {
-    switch (node.kind) {
-      case Kind.SELECTION_SET:
-        this._parentTypeStack.pop();
-
-        break;
-
-      case Kind.FIELD:
-        this._fieldDefStack.pop();
-
-        this._typeStack.pop();
-
-        break;
-
-      case Kind.DIRECTIVE:
-        this._directive = null;
-        break;
-
-      case Kind.OPERATION_DEFINITION:
-      case Kind.INLINE_FRAGMENT:
-      case Kind.FRAGMENT_DEFINITION:
-        this._typeStack.pop();
-
-        break;
-
-      case Kind.VARIABLE_DEFINITION:
-        this._inputTypeStack.pop();
-
-        break;
-
-      case Kind.ARGUMENT:
-        this._argument = null;
-
-        this._defaultValueStack.pop();
-
-        this._inputTypeStack.pop();
-
-        break;
-
-      case Kind.LIST:
-      case Kind.OBJECT_FIELD:
-        this._defaultValueStack.pop();
-
-        this._inputTypeStack.pop();
-
-        break;
-
-      case Kind.ENUM:
-        this._enumValue = null;
-        break;
-    }
-  };
-
-  return TypeInfo;
-}();
-/**
- * Not exactly the same as the executor's definition of getFieldDef, in this
- * statically evaluated environment we do not always have an Object type,
- * and need to handle Interface and Union types.
- */
-
-function getFieldDef(schema, parentType, fieldNode) {
-  var name = fieldNode.name.value;
-
-  if (name === SchemaMetaFieldDef.name && schema.getQueryType() === parentType) {
-    return SchemaMetaFieldDef;
-  }
-
-  if (name === TypeMetaFieldDef.name && schema.getQueryType() === parentType) {
-    return TypeMetaFieldDef;
-  }
-
-  if (name === TypeNameMetaFieldDef.name && isCompositeType(parentType)) {
-    return TypeNameMetaFieldDef;
-  }
-
-  if (isObjectType(parentType) || isInterfaceType(parentType)) {
-    return parentType.getFields()[name];
-  }
-}
-/**
- * Creates a new visitor instance which maintains a provided TypeInfo instance
- * along with visiting visitor.
- */
-
-
-export function visitWithTypeInfo(typeInfo, visitor) {
-  return {
-    enter: function enter(node) {
-      typeInfo.enter(node);
-      var fn = getVisitFn(visitor, node.kind,
-      /* isLeaving */
-      false);
-
-      if (fn) {
-        var result = fn.apply(visitor, arguments);
-
-        if (result !== undefined) {
-          typeInfo.leave(node);
-
-          if (isNode(result)) {
-            typeInfo.enter(result);
-          }
-        }
-
-        return result;
-      }
-    },
-    leave: function leave(node) {
-      var fn = getVisitFn(visitor, node.kind,
-      /* isLeaving */
-      true);
-      var result;
-
-      if (fn) {
-        result = fn.apply(visitor, arguments);
-      }
-
-      typeInfo.leave(node);
-      return result;
-    }
-  };
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/assertValidName.d.ts b/includes/external/school/node_modules/graphql/utilities/assertValidName.d.ts
deleted file mode 100644
index 5a1011e..0000000
--- a/includes/external/school/node_modules/graphql/utilities/assertValidName.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { GraphQLError } from '../error/GraphQLError';
-
-/**
- * Upholds the spec rules about naming.
- */
-export function assertValidName(name: string): string;
-
-/**
- * Returns an Error if a name is invalid.
- */
-export function isValidNameError(name: string): GraphQLError | undefined;
diff --git a/includes/external/school/node_modules/graphql/utilities/assertValidName.js b/includes/external/school/node_modules/graphql/utilities/assertValidName.js
deleted file mode 100644
index 5affb00..0000000
--- a/includes/external/school/node_modules/graphql/utilities/assertValidName.js
+++ /dev/null
@@ -1,44 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.assertValidName = assertValidName;
-exports.isValidNameError = isValidNameError;
-
-var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
-
-var _GraphQLError = require("../error/GraphQLError.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var NAME_RX = /^[_a-zA-Z][_a-zA-Z0-9]*$/;
-/**
- * Upholds the spec rules about naming.
- */
-
-function assertValidName(name) {
-  var error = isValidNameError(name);
-
-  if (error) {
-    throw error;
-  }
-
-  return name;
-}
-/**
- * Returns an Error if a name is invalid.
- */
-
-
-function isValidNameError(name) {
-  typeof name === 'string' || (0, _devAssert.default)(0, 'Expected name to be a string.');
-
-  if (name.length > 1 && name[0] === '_' && name[1] === '_') {
-    return new _GraphQLError.GraphQLError("Name \"".concat(name, "\" must not begin with \"__\", which is reserved by GraphQL introspection."));
-  }
-
-  if (!NAME_RX.test(name)) {
-    return new _GraphQLError.GraphQLError("Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but \"".concat(name, "\" does not."));
-  }
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/assertValidName.js.flow b/includes/external/school/node_modules/graphql/utilities/assertValidName.js.flow
deleted file mode 100644
index 2e2493a..0000000
--- a/includes/external/school/node_modules/graphql/utilities/assertValidName.js.flow
+++ /dev/null
@@ -1,34 +0,0 @@
-// @flow strict
-import devAssert from '../jsutils/devAssert';
-
-import { GraphQLError } from '../error/GraphQLError';
-
-const NAME_RX = /^[_a-zA-Z][_a-zA-Z0-9]*$/;
-
-/**
- * Upholds the spec rules about naming.
- */
-export function assertValidName(name: string): string {
-  const error = isValidNameError(name);
-  if (error) {
-    throw error;
-  }
-  return name;
-}
-
-/**
- * Returns an Error if a name is invalid.
- */
-export function isValidNameError(name: string): GraphQLError | void {
-  devAssert(typeof name === 'string', 'Expected name to be a string.');
-  if (name.length > 1 && name[0] === '_' && name[1] === '_') {
-    return new GraphQLError(
-      `Name "${name}" must not begin with "__", which is reserved by GraphQL introspection.`,
-    );
-  }
-  if (!NAME_RX.test(name)) {
-    return new GraphQLError(
-      `Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "${name}" does not.`,
-    );
-  }
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/assertValidName.mjs b/includes/external/school/node_modules/graphql/utilities/assertValidName.mjs
deleted file mode 100644
index d504d22..0000000
--- a/includes/external/school/node_modules/graphql/utilities/assertValidName.mjs
+++ /dev/null
@@ -1,31 +0,0 @@
-import devAssert from "../jsutils/devAssert.mjs";
-import { GraphQLError } from "../error/GraphQLError.mjs";
-var NAME_RX = /^[_a-zA-Z][_a-zA-Z0-9]*$/;
-/**
- * Upholds the spec rules about naming.
- */
-
-export function assertValidName(name) {
-  var error = isValidNameError(name);
-
-  if (error) {
-    throw error;
-  }
-
-  return name;
-}
-/**
- * Returns an Error if a name is invalid.
- */
-
-export function isValidNameError(name) {
-  typeof name === 'string' || devAssert(0, 'Expected name to be a string.');
-
-  if (name.length > 1 && name[0] === '_' && name[1] === '_') {
-    return new GraphQLError("Name \"".concat(name, "\" must not begin with \"__\", which is reserved by GraphQL introspection."));
-  }
-
-  if (!NAME_RX.test(name)) {
-    return new GraphQLError("Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but \"".concat(name, "\" does not."));
-  }
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/astFromValue.d.ts b/includes/external/school/node_modules/graphql/utilities/astFromValue.d.ts
deleted file mode 100644
index 19f0a8f..0000000
--- a/includes/external/school/node_modules/graphql/utilities/astFromValue.d.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { Maybe } from '../jsutils/Maybe';
-
-import { ValueNode } from '../language/ast';
-import { GraphQLInputType } from '../type/definition';
-
-/**
- * Produces a GraphQL Value AST given a JavaScript value.
- *
- * A GraphQL type must be provided, which will be used to interpret different
- * JavaScript values.
- *
- * | JSON Value    | GraphQL Value        |
- * | ------------- | -------------------- |
- * | Object        | Input Object         |
- * | Array         | List                 |
- * | Boolean       | Boolean              |
- * | String        | String / Enum Value  |
- * | Number        | Int / Float          |
- * | Mixed         | Enum Value           |
- * | null          | NullValue            |
- *
- */
-export function astFromValue(
-  value: any,
-  type: GraphQLInputType,
-): Maybe<ValueNode>;
diff --git a/includes/external/school/node_modules/graphql/utilities/astFromValue.js b/includes/external/school/node_modules/graphql/utilities/astFromValue.js
deleted file mode 100644
index 6872309..0000000
--- a/includes/external/school/node_modules/graphql/utilities/astFromValue.js
+++ /dev/null
@@ -1,196 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.astFromValue = astFromValue;
-
-var _isFinite = _interopRequireDefault(require("../polyfills/isFinite.js"));
-
-var _objectValues3 = _interopRequireDefault(require("../polyfills/objectValues.js"));
-
-var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
-
-var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
-
-var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
-
-var _safeArrayFrom = _interopRequireDefault(require("../jsutils/safeArrayFrom.js"));
-
-var _kinds = require("../language/kinds.js");
-
-var _scalars = require("../type/scalars.js");
-
-var _definition = require("../type/definition.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Produces a GraphQL Value AST given a JavaScript object.
- * Function will match JavaScript/JSON values to GraphQL AST schema format
- * by using suggested GraphQLInputType. For example:
- *
- *     astFromValue("value", GraphQLString)
- *
- * A GraphQL type must be provided, which will be used to interpret different
- * JavaScript values.
- *
- * | JSON Value    | GraphQL Value        |
- * | ------------- | -------------------- |
- * | Object        | Input Object         |
- * | Array         | List                 |
- * | Boolean       | Boolean              |
- * | String        | String / Enum Value  |
- * | Number        | Int / Float          |
- * | Mixed         | Enum Value           |
- * | null          | NullValue            |
- *
- */
-function astFromValue(value, type) {
-  if ((0, _definition.isNonNullType)(type)) {
-    var astValue = astFromValue(value, type.ofType);
-
-    if ((astValue === null || astValue === void 0 ? void 0 : astValue.kind) === _kinds.Kind.NULL) {
-      return null;
-    }
-
-    return astValue;
-  } // only explicit null, not undefined, NaN
-
-
-  if (value === null) {
-    return {
-      kind: _kinds.Kind.NULL
-    };
-  } // undefined
-
-
-  if (value === undefined) {
-    return null;
-  } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but
-  // the value is not an array, convert the value using the list's item type.
-
-
-  if ((0, _definition.isListType)(type)) {
-    var itemType = type.ofType;
-    var items = (0, _safeArrayFrom.default)(value);
-
-    if (items != null) {
-      var valuesNodes = [];
-
-      for (var _i2 = 0; _i2 < items.length; _i2++) {
-        var item = items[_i2];
-        var itemNode = astFromValue(item, itemType);
-
-        if (itemNode != null) {
-          valuesNodes.push(itemNode);
-        }
-      }
-
-      return {
-        kind: _kinds.Kind.LIST,
-        values: valuesNodes
-      };
-    }
-
-    return astFromValue(value, itemType);
-  } // Populate the fields of the input object by creating ASTs from each value
-  // in the JavaScript object according to the fields in the input type.
-
-
-  if ((0, _definition.isInputObjectType)(type)) {
-    if (!(0, _isObjectLike.default)(value)) {
-      return null;
-    }
-
-    var fieldNodes = [];
-
-    for (var _i4 = 0, _objectValues2 = (0, _objectValues3.default)(type.getFields()); _i4 < _objectValues2.length; _i4++) {
-      var field = _objectValues2[_i4];
-      var fieldValue = astFromValue(value[field.name], field.type);
-
-      if (fieldValue) {
-        fieldNodes.push({
-          kind: _kinds.Kind.OBJECT_FIELD,
-          name: {
-            kind: _kinds.Kind.NAME,
-            value: field.name
-          },
-          value: fieldValue
-        });
-      }
-    }
-
-    return {
-      kind: _kinds.Kind.OBJECT,
-      fields: fieldNodes
-    };
-  } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-  if ((0, _definition.isLeafType)(type)) {
-    // Since value is an internally represented value, it must be serialized
-    // to an externally represented value before converting into an AST.
-    var serialized = type.serialize(value);
-
-    if (serialized == null) {
-      return null;
-    } // Others serialize based on their corresponding JavaScript scalar types.
-
-
-    if (typeof serialized === 'boolean') {
-      return {
-        kind: _kinds.Kind.BOOLEAN,
-        value: serialized
-      };
-    } // JavaScript numbers can be Int or Float values.
-
-
-    if (typeof serialized === 'number' && (0, _isFinite.default)(serialized)) {
-      var stringNum = String(serialized);
-      return integerStringRegExp.test(stringNum) ? {
-        kind: _kinds.Kind.INT,
-        value: stringNum
-      } : {
-        kind: _kinds.Kind.FLOAT,
-        value: stringNum
-      };
-    }
-
-    if (typeof serialized === 'string') {
-      // Enum types use Enum literals.
-      if ((0, _definition.isEnumType)(type)) {
-        return {
-          kind: _kinds.Kind.ENUM,
-          value: serialized
-        };
-      } // ID types can use Int literals.
-
-
-      if (type === _scalars.GraphQLID && integerStringRegExp.test(serialized)) {
-        return {
-          kind: _kinds.Kind.INT,
-          value: serialized
-        };
-      }
-
-      return {
-        kind: _kinds.Kind.STRING,
-        value: serialized
-      };
-    }
-
-    throw new TypeError("Cannot convert value to AST: ".concat((0, _inspect.default)(serialized), "."));
-  } // istanbul ignore next (Not reachable. All possible input types have been considered)
-
-
-  false || (0, _invariant.default)(0, 'Unexpected input type: ' + (0, _inspect.default)(type));
-}
-/**
- * IntValue:
- *   - NegativeSign? 0
- *   - NegativeSign? NonZeroDigit ( Digit+ )?
- */
-
-
-var integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;
diff --git a/includes/external/school/node_modules/graphql/utilities/astFromValue.js.flow b/includes/external/school/node_modules/graphql/utilities/astFromValue.js.flow
deleted file mode 100644
index d7528ee..0000000
--- a/includes/external/school/node_modules/graphql/utilities/astFromValue.js.flow
+++ /dev/null
@@ -1,154 +0,0 @@
-// @flow strict
-import isFinite from '../polyfills/isFinite';
-import objectValues from '../polyfills/objectValues';
-
-import inspect from '../jsutils/inspect';
-import invariant from '../jsutils/invariant';
-import isObjectLike from '../jsutils/isObjectLike';
-import safeArrayFrom from '../jsutils/safeArrayFrom';
-
-import type { ValueNode } from '../language/ast';
-import { Kind } from '../language/kinds';
-
-import type { GraphQLInputType } from '../type/definition';
-import { GraphQLID } from '../type/scalars';
-import {
-  isLeafType,
-  isEnumType,
-  isInputObjectType,
-  isListType,
-  isNonNullType,
-} from '../type/definition';
-
-/**
- * Produces a GraphQL Value AST given a JavaScript object.
- * Function will match JavaScript/JSON values to GraphQL AST schema format
- * by using suggested GraphQLInputType. For example:
- *
- *     astFromValue("value", GraphQLString)
- *
- * A GraphQL type must be provided, which will be used to interpret different
- * JavaScript values.
- *
- * | JSON Value    | GraphQL Value        |
- * | ------------- | -------------------- |
- * | Object        | Input Object         |
- * | Array         | List                 |
- * | Boolean       | Boolean              |
- * | String        | String / Enum Value  |
- * | Number        | Int / Float          |
- * | Mixed         | Enum Value           |
- * | null          | NullValue            |
- *
- */
-export function astFromValue(value: mixed, type: GraphQLInputType): ?ValueNode {
-  if (isNonNullType(type)) {
-    const astValue = astFromValue(value, type.ofType);
-    if (astValue?.kind === Kind.NULL) {
-      return null;
-    }
-    return astValue;
-  }
-
-  // only explicit null, not undefined, NaN
-  if (value === null) {
-    return { kind: Kind.NULL };
-  }
-
-  // undefined
-  if (value === undefined) {
-    return null;
-  }
-
-  // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but
-  // the value is not an array, convert the value using the list's item type.
-  if (isListType(type)) {
-    const itemType = type.ofType;
-
-    const items = safeArrayFrom(value);
-    if (items != null) {
-      const valuesNodes = [];
-      for (const item of items) {
-        const itemNode = astFromValue(item, itemType);
-        if (itemNode != null) {
-          valuesNodes.push(itemNode);
-        }
-      }
-      return { kind: Kind.LIST, values: valuesNodes };
-    }
-
-    return astFromValue(value, itemType);
-  }
-
-  // Populate the fields of the input object by creating ASTs from each value
-  // in the JavaScript object according to the fields in the input type.
-  if (isInputObjectType(type)) {
-    if (!isObjectLike(value)) {
-      return null;
-    }
-    const fieldNodes = [];
-    for (const field of objectValues(type.getFields())) {
-      const fieldValue = astFromValue(value[field.name], field.type);
-      if (fieldValue) {
-        fieldNodes.push({
-          kind: Kind.OBJECT_FIELD,
-          name: { kind: Kind.NAME, value: field.name },
-          value: fieldValue,
-        });
-      }
-    }
-    return { kind: Kind.OBJECT, fields: fieldNodes };
-  }
-
-  // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-  if (isLeafType(type)) {
-    // Since value is an internally represented value, it must be serialized
-    // to an externally represented value before converting into an AST.
-    const serialized = type.serialize(value);
-    if (serialized == null) {
-      return null;
-    }
-
-    // Others serialize based on their corresponding JavaScript scalar types.
-    if (typeof serialized === 'boolean') {
-      return { kind: Kind.BOOLEAN, value: serialized };
-    }
-
-    // JavaScript numbers can be Int or Float values.
-    if (typeof serialized === 'number' && isFinite(serialized)) {
-      const stringNum = String(serialized);
-      return integerStringRegExp.test(stringNum)
-        ? { kind: Kind.INT, value: stringNum }
-        : { kind: Kind.FLOAT, value: stringNum };
-    }
-
-    if (typeof serialized === 'string') {
-      // Enum types use Enum literals.
-      if (isEnumType(type)) {
-        return { kind: Kind.ENUM, value: serialized };
-      }
-
-      // ID types can use Int literals.
-      if (type === GraphQLID && integerStringRegExp.test(serialized)) {
-        return { kind: Kind.INT, value: serialized };
-      }
-
-      return {
-        kind: Kind.STRING,
-        value: serialized,
-      };
-    }
-
-    throw new TypeError(`Cannot convert value to AST: ${inspect(serialized)}.`);
-  }
-
-  // istanbul ignore next (Not reachable. All possible input types have been considered)
-  invariant(false, 'Unexpected input type: ' + inspect((type: empty)));
-}
-
-/**
- * IntValue:
- *   - NegativeSign? 0
- *   - NegativeSign? NonZeroDigit ( Digit+ )?
- */
-const integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;
diff --git a/includes/external/school/node_modules/graphql/utilities/astFromValue.mjs b/includes/external/school/node_modules/graphql/utilities/astFromValue.mjs
deleted file mode 100644
index b35fb6c..0000000
--- a/includes/external/school/node_modules/graphql/utilities/astFromValue.mjs
+++ /dev/null
@@ -1,178 +0,0 @@
-import isFinite from "../polyfills/isFinite.mjs";
-import objectValues from "../polyfills/objectValues.mjs";
-import inspect from "../jsutils/inspect.mjs";
-import invariant from "../jsutils/invariant.mjs";
-import isObjectLike from "../jsutils/isObjectLike.mjs";
-import safeArrayFrom from "../jsutils/safeArrayFrom.mjs";
-import { Kind } from "../language/kinds.mjs";
-import { GraphQLID } from "../type/scalars.mjs";
-import { isLeafType, isEnumType, isInputObjectType, isListType, isNonNullType } from "../type/definition.mjs";
-/**
- * Produces a GraphQL Value AST given a JavaScript object.
- * Function will match JavaScript/JSON values to GraphQL AST schema format
- * by using suggested GraphQLInputType. For example:
- *
- *     astFromValue("value", GraphQLString)
- *
- * A GraphQL type must be provided, which will be used to interpret different
- * JavaScript values.
- *
- * | JSON Value    | GraphQL Value        |
- * | ------------- | -------------------- |
- * | Object        | Input Object         |
- * | Array         | List                 |
- * | Boolean       | Boolean              |
- * | String        | String / Enum Value  |
- * | Number        | Int / Float          |
- * | Mixed         | Enum Value           |
- * | null          | NullValue            |
- *
- */
-
-export function astFromValue(value, type) {
-  if (isNonNullType(type)) {
-    var astValue = astFromValue(value, type.ofType);
-
-    if ((astValue === null || astValue === void 0 ? void 0 : astValue.kind) === Kind.NULL) {
-      return null;
-    }
-
-    return astValue;
-  } // only explicit null, not undefined, NaN
-
-
-  if (value === null) {
-    return {
-      kind: Kind.NULL
-    };
-  } // undefined
-
-
-  if (value === undefined) {
-    return null;
-  } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but
-  // the value is not an array, convert the value using the list's item type.
-
-
-  if (isListType(type)) {
-    var itemType = type.ofType;
-    var items = safeArrayFrom(value);
-
-    if (items != null) {
-      var valuesNodes = [];
-
-      for (var _i2 = 0; _i2 < items.length; _i2++) {
-        var item = items[_i2];
-        var itemNode = astFromValue(item, itemType);
-
-        if (itemNode != null) {
-          valuesNodes.push(itemNode);
-        }
-      }
-
-      return {
-        kind: Kind.LIST,
-        values: valuesNodes
-      };
-    }
-
-    return astFromValue(value, itemType);
-  } // Populate the fields of the input object by creating ASTs from each value
-  // in the JavaScript object according to the fields in the input type.
-
-
-  if (isInputObjectType(type)) {
-    if (!isObjectLike(value)) {
-      return null;
-    }
-
-    var fieldNodes = [];
-
-    for (var _i4 = 0, _objectValues2 = objectValues(type.getFields()); _i4 < _objectValues2.length; _i4++) {
-      var field = _objectValues2[_i4];
-      var fieldValue = astFromValue(value[field.name], field.type);
-
-      if (fieldValue) {
-        fieldNodes.push({
-          kind: Kind.OBJECT_FIELD,
-          name: {
-            kind: Kind.NAME,
-            value: field.name
-          },
-          value: fieldValue
-        });
-      }
-    }
-
-    return {
-      kind: Kind.OBJECT,
-      fields: fieldNodes
-    };
-  } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-  if (isLeafType(type)) {
-    // Since value is an internally represented value, it must be serialized
-    // to an externally represented value before converting into an AST.
-    var serialized = type.serialize(value);
-
-    if (serialized == null) {
-      return null;
-    } // Others serialize based on their corresponding JavaScript scalar types.
-
-
-    if (typeof serialized === 'boolean') {
-      return {
-        kind: Kind.BOOLEAN,
-        value: serialized
-      };
-    } // JavaScript numbers can be Int or Float values.
-
-
-    if (typeof serialized === 'number' && isFinite(serialized)) {
-      var stringNum = String(serialized);
-      return integerStringRegExp.test(stringNum) ? {
-        kind: Kind.INT,
-        value: stringNum
-      } : {
-        kind: Kind.FLOAT,
-        value: stringNum
-      };
-    }
-
-    if (typeof serialized === 'string') {
-      // Enum types use Enum literals.
-      if (isEnumType(type)) {
-        return {
-          kind: Kind.ENUM,
-          value: serialized
-        };
-      } // ID types can use Int literals.
-
-
-      if (type === GraphQLID && integerStringRegExp.test(serialized)) {
-        return {
-          kind: Kind.INT,
-          value: serialized
-        };
-      }
-
-      return {
-        kind: Kind.STRING,
-        value: serialized
-      };
-    }
-
-    throw new TypeError("Cannot convert value to AST: ".concat(inspect(serialized), "."));
-  } // istanbul ignore next (Not reachable. All possible input types have been considered)
-
-
-  false || invariant(0, 'Unexpected input type: ' + inspect(type));
-}
-/**
- * IntValue:
- *   - NegativeSign? 0
- *   - NegativeSign? NonZeroDigit ( Digit+ )?
- */
-
-var integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;
diff --git a/includes/external/school/node_modules/graphql/utilities/buildASTSchema.d.ts b/includes/external/school/node_modules/graphql/utilities/buildASTSchema.d.ts
deleted file mode 100644
index e051436..0000000
--- a/includes/external/school/node_modules/graphql/utilities/buildASTSchema.d.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { DocumentNode } from '../language/ast';
-import { Source } from '../language/source';
-import { GraphQLSchema, GraphQLSchemaValidationOptions } from '../type/schema';
-import { ParseOptions } from '../language/parser';
-
-export interface BuildSchemaOptions extends GraphQLSchemaValidationOptions {
-  /**
-   * Descriptions are defined as preceding string literals, however an older
-   * experimental version of the SDL supported preceding comments as
-   * descriptions. Set to true to enable this deprecated behavior.
-   * This option is provided to ease adoption and will be removed in v16.
-   *
-   * Default: false
-   */
-  commentDescriptions?: boolean;
-
-  /**
-   * Set to true to assume the SDL is valid.
-   *
-   * Default: false
-   */
-  assumeValidSDL?: boolean;
-}
-
-/**
- * This takes the ast of a schema document produced by the parse function in
- * src/language/parser.js.
- *
- * If no schema definition is provided, then it will look for types named Query
- * and Mutation.
- *
- * Given that AST it constructs a GraphQLSchema. The resulting schema
- * has no resolve methods, so execution will use default resolvers.
- *
- * Accepts options as a second argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-export function buildASTSchema(
-  documentAST: DocumentNode,
-  options?: BuildSchemaOptions,
-): GraphQLSchema;
-
-/**
- * A helper function to build a GraphQLSchema directly from a source
- * document.
- */
-export function buildSchema(
-  source: string | Source,
-  options?: BuildSchemaOptions & ParseOptions,
-): GraphQLSchema;
diff --git a/includes/external/school/node_modules/graphql/utilities/buildASTSchema.js b/includes/external/school/node_modules/graphql/utilities/buildASTSchema.js
deleted file mode 100644
index 859e869..0000000
--- a/includes/external/school/node_modules/graphql/utilities/buildASTSchema.js
+++ /dev/null
@@ -1,117 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.buildASTSchema = buildASTSchema;
-exports.buildSchema = buildSchema;
-
-var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
-
-var _kinds = require("../language/kinds.js");
-
-var _parser = require("../language/parser.js");
-
-var _validate = require("../validation/validate.js");
-
-var _schema = require("../type/schema.js");
-
-var _directives = require("../type/directives.js");
-
-var _extendSchema = require("./extendSchema.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * This takes the ast of a schema document produced by the parse function in
- * src/language/parser.js.
- *
- * If no schema definition is provided, then it will look for types named Query
- * and Mutation.
- *
- * Given that AST it constructs a GraphQLSchema. The resulting schema
- * has no resolve methods, so execution will use default resolvers.
- *
- * Accepts options as a second argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-function buildASTSchema(documentAST, options) {
-  documentAST != null && documentAST.kind === _kinds.Kind.DOCUMENT || (0, _devAssert.default)(0, 'Must provide valid Document AST.');
-
-  if ((options === null || options === void 0 ? void 0 : options.assumeValid) !== true && (options === null || options === void 0 ? void 0 : options.assumeValidSDL) !== true) {
-    (0, _validate.assertValidSDL)(documentAST);
-  }
-
-  var emptySchemaConfig = {
-    description: undefined,
-    types: [],
-    directives: [],
-    extensions: undefined,
-    extensionASTNodes: [],
-    assumeValid: false
-  };
-  var config = (0, _extendSchema.extendSchemaImpl)(emptySchemaConfig, documentAST, options);
-
-  if (config.astNode == null) {
-    for (var _i2 = 0, _config$types2 = config.types; _i2 < _config$types2.length; _i2++) {
-      var type = _config$types2[_i2];
-
-      switch (type.name) {
-        // Note: While this could make early assertions to get the correctly
-        // typed values below, that would throw immediately while type system
-        // validation with validateSchema() will produce more actionable results.
-        case 'Query':
-          config.query = type;
-          break;
-
-        case 'Mutation':
-          config.mutation = type;
-          break;
-
-        case 'Subscription':
-          config.subscription = type;
-          break;
-      }
-    }
-  }
-
-  var directives = config.directives; // If specified directives were not explicitly declared, add them.
-
-  var _loop = function _loop(_i4) {
-    var stdDirective = _directives.specifiedDirectives[_i4];
-
-    if (directives.every(function (directive) {
-      return directive.name !== stdDirective.name;
-    })) {
-      directives.push(stdDirective);
-    }
-  };
-
-  for (var _i4 = 0; _i4 < _directives.specifiedDirectives.length; _i4++) {
-    _loop(_i4);
-  }
-
-  return new _schema.GraphQLSchema(config);
-}
-/**
- * A helper function to build a GraphQLSchema directly from a source
- * document.
- */
-
-
-function buildSchema(source, options) {
-  var document = (0, _parser.parse)(source, {
-    noLocation: options === null || options === void 0 ? void 0 : options.noLocation,
-    allowLegacySDLEmptyFields: options === null || options === void 0 ? void 0 : options.allowLegacySDLEmptyFields,
-    allowLegacySDLImplementsInterfaces: options === null || options === void 0 ? void 0 : options.allowLegacySDLImplementsInterfaces,
-    experimentalFragmentVariables: options === null || options === void 0 ? void 0 : options.experimentalFragmentVariables
-  });
-  return buildASTSchema(document, {
-    commentDescriptions: options === null || options === void 0 ? void 0 : options.commentDescriptions,
-    assumeValidSDL: options === null || options === void 0 ? void 0 : options.assumeValidSDL,
-    assumeValid: options === null || options === void 0 ? void 0 : options.assumeValid
-  });
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/buildASTSchema.js.flow b/includes/external/school/node_modules/graphql/utilities/buildASTSchema.js.flow
deleted file mode 100644
index a271c8c..0000000
--- a/includes/external/school/node_modules/graphql/utilities/buildASTSchema.js.flow
+++ /dev/null
@@ -1,129 +0,0 @@
-// @flow strict
-import devAssert from '../jsutils/devAssert';
-
-import type { Source } from '../language/source';
-import type { DocumentNode } from '../language/ast';
-import type { ParseOptions } from '../language/parser';
-import { Kind } from '../language/kinds';
-import { parse } from '../language/parser';
-
-import { assertValidSDL } from '../validation/validate';
-
-import type { GraphQLSchemaValidationOptions } from '../type/schema';
-import { GraphQLSchema } from '../type/schema';
-import { specifiedDirectives } from '../type/directives';
-
-import { extendSchemaImpl } from './extendSchema';
-
-export type BuildSchemaOptions = {|
-  ...GraphQLSchemaValidationOptions,
-
-  /**
-   * Descriptions are defined as preceding string literals, however an older
-   * experimental version of the SDL supported preceding comments as
-   * descriptions. Set to true to enable this deprecated behavior.
-   * This option is provided to ease adoption and will be removed in v16.
-   *
-   * Default: false
-   */
-  commentDescriptions?: boolean,
-
-  /**
-   * Set to true to assume the SDL is valid.
-   *
-   * Default: false
-   */
-  assumeValidSDL?: boolean,
-|};
-
-/**
- * This takes the ast of a schema document produced by the parse function in
- * src/language/parser.js.
- *
- * If no schema definition is provided, then it will look for types named Query
- * and Mutation.
- *
- * Given that AST it constructs a GraphQLSchema. The resulting schema
- * has no resolve methods, so execution will use default resolvers.
- *
- * Accepts options as a second argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-export function buildASTSchema(
-  documentAST: DocumentNode,
-  options?: BuildSchemaOptions,
-): GraphQLSchema {
-  devAssert(
-    documentAST != null && documentAST.kind === Kind.DOCUMENT,
-    'Must provide valid Document AST.',
-  );
-
-  if (options?.assumeValid !== true && options?.assumeValidSDL !== true) {
-    assertValidSDL(documentAST);
-  }
-
-  const emptySchemaConfig = {
-    description: undefined,
-    types: [],
-    directives: [],
-    extensions: undefined,
-    extensionASTNodes: [],
-    assumeValid: false,
-  };
-  const config = extendSchemaImpl(emptySchemaConfig, documentAST, options);
-
-  if (config.astNode == null) {
-    for (const type of config.types) {
-      switch (type.name) {
-        // Note: While this could make early assertions to get the correctly
-        // typed values below, that would throw immediately while type system
-        // validation with validateSchema() will produce more actionable results.
-        case 'Query':
-          config.query = (type: any);
-          break;
-        case 'Mutation':
-          config.mutation = (type: any);
-          break;
-        case 'Subscription':
-          config.subscription = (type: any);
-          break;
-      }
-    }
-  }
-
-  const { directives } = config;
-  // If specified directives were not explicitly declared, add them.
-  for (const stdDirective of specifiedDirectives) {
-    if (directives.every((directive) => directive.name !== stdDirective.name)) {
-      directives.push(stdDirective);
-    }
-  }
-
-  return new GraphQLSchema(config);
-}
-
-/**
- * A helper function to build a GraphQLSchema directly from a source
- * document.
- */
-export function buildSchema(
-  source: string | Source,
-  options?: {| ...BuildSchemaOptions, ...ParseOptions |},
-): GraphQLSchema {
-  const document = parse(source, {
-    noLocation: options?.noLocation,
-    allowLegacySDLEmptyFields: options?.allowLegacySDLEmptyFields,
-    allowLegacySDLImplementsInterfaces:
-      options?.allowLegacySDLImplementsInterfaces,
-    experimentalFragmentVariables: options?.experimentalFragmentVariables,
-  });
-
-  return buildASTSchema(document, {
-    commentDescriptions: options?.commentDescriptions,
-    assumeValidSDL: options?.assumeValidSDL,
-    assumeValid: options?.assumeValid,
-  });
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/buildASTSchema.mjs b/includes/external/school/node_modules/graphql/utilities/buildASTSchema.mjs
deleted file mode 100644
index 8c4d4b1..0000000
--- a/includes/external/school/node_modules/graphql/utilities/buildASTSchema.mjs
+++ /dev/null
@@ -1,100 +0,0 @@
-import devAssert from "../jsutils/devAssert.mjs";
-import { Kind } from "../language/kinds.mjs";
-import { parse } from "../language/parser.mjs";
-import { assertValidSDL } from "../validation/validate.mjs";
-import { GraphQLSchema } from "../type/schema.mjs";
-import { specifiedDirectives } from "../type/directives.mjs";
-import { extendSchemaImpl } from "./extendSchema.mjs";
-
-/**
- * This takes the ast of a schema document produced by the parse function in
- * src/language/parser.js.
- *
- * If no schema definition is provided, then it will look for types named Query
- * and Mutation.
- *
- * Given that AST it constructs a GraphQLSchema. The resulting schema
- * has no resolve methods, so execution will use default resolvers.
- *
- * Accepts options as a second argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-export function buildASTSchema(documentAST, options) {
-  documentAST != null && documentAST.kind === Kind.DOCUMENT || devAssert(0, 'Must provide valid Document AST.');
-
-  if ((options === null || options === void 0 ? void 0 : options.assumeValid) !== true && (options === null || options === void 0 ? void 0 : options.assumeValidSDL) !== true) {
-    assertValidSDL(documentAST);
-  }
-
-  var emptySchemaConfig = {
-    description: undefined,
-    types: [],
-    directives: [],
-    extensions: undefined,
-    extensionASTNodes: [],
-    assumeValid: false
-  };
-  var config = extendSchemaImpl(emptySchemaConfig, documentAST, options);
-
-  if (config.astNode == null) {
-    for (var _i2 = 0, _config$types2 = config.types; _i2 < _config$types2.length; _i2++) {
-      var type = _config$types2[_i2];
-
-      switch (type.name) {
-        // Note: While this could make early assertions to get the correctly
-        // typed values below, that would throw immediately while type system
-        // validation with validateSchema() will produce more actionable results.
-        case 'Query':
-          config.query = type;
-          break;
-
-        case 'Mutation':
-          config.mutation = type;
-          break;
-
-        case 'Subscription':
-          config.subscription = type;
-          break;
-      }
-    }
-  }
-
-  var directives = config.directives; // If specified directives were not explicitly declared, add them.
-
-  var _loop = function _loop(_i4) {
-    var stdDirective = specifiedDirectives[_i4];
-
-    if (directives.every(function (directive) {
-      return directive.name !== stdDirective.name;
-    })) {
-      directives.push(stdDirective);
-    }
-  };
-
-  for (var _i4 = 0; _i4 < specifiedDirectives.length; _i4++) {
-    _loop(_i4);
-  }
-
-  return new GraphQLSchema(config);
-}
-/**
- * A helper function to build a GraphQLSchema directly from a source
- * document.
- */
-
-export function buildSchema(source, options) {
-  var document = parse(source, {
-    noLocation: options === null || options === void 0 ? void 0 : options.noLocation,
-    allowLegacySDLEmptyFields: options === null || options === void 0 ? void 0 : options.allowLegacySDLEmptyFields,
-    allowLegacySDLImplementsInterfaces: options === null || options === void 0 ? void 0 : options.allowLegacySDLImplementsInterfaces,
-    experimentalFragmentVariables: options === null || options === void 0 ? void 0 : options.experimentalFragmentVariables
-  });
-  return buildASTSchema(document, {
-    commentDescriptions: options === null || options === void 0 ? void 0 : options.commentDescriptions,
-    assumeValidSDL: options === null || options === void 0 ? void 0 : options.assumeValidSDL,
-    assumeValid: options === null || options === void 0 ? void 0 : options.assumeValid
-  });
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/buildClientSchema.d.ts b/includes/external/school/node_modules/graphql/utilities/buildClientSchema.d.ts
deleted file mode 100644
index a541cd3..0000000
--- a/includes/external/school/node_modules/graphql/utilities/buildClientSchema.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { GraphQLSchema, GraphQLSchemaValidationOptions } from '../type/schema';
-
-import { IntrospectionQuery } from './getIntrospectionQuery';
-
-/**
- * Build a GraphQLSchema for use by client tools.
- *
- * Given the result of a client running the introspection query, creates and
- * returns a GraphQLSchema instance which can be then used with all graphql-js
- * tools, but cannot be used to execute a query, as introspection does not
- * represent the "resolver", "parse" or "serialize" functions or any other
- * server-internal mechanisms.
- *
- * This function expects a complete introspection result. Don't forget to check
- * the "errors" field of a server response before calling this function.
- */
-export function buildClientSchema(
-  introspection: IntrospectionQuery,
-  options?: GraphQLSchemaValidationOptions,
-): GraphQLSchema;
diff --git a/includes/external/school/node_modules/graphql/utilities/buildClientSchema.js b/includes/external/school/node_modules/graphql/utilities/buildClientSchema.js
deleted file mode 100644
index 979f6d0..0000000
--- a/includes/external/school/node_modules/graphql/utilities/buildClientSchema.js
+++ /dev/null
@@ -1,335 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.buildClientSchema = buildClientSchema;
-
-var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
-
-var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
-
-var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
-
-var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap.js"));
-
-var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
-
-var _parser = require("../language/parser.js");
-
-var _schema = require("../type/schema.js");
-
-var _directives = require("../type/directives.js");
-
-var _scalars = require("../type/scalars.js");
-
-var _introspection = require("../type/introspection.js");
-
-var _definition = require("../type/definition.js");
-
-var _valueFromAST = require("./valueFromAST.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Build a GraphQLSchema for use by client tools.
- *
- * Given the result of a client running the introspection query, creates and
- * returns a GraphQLSchema instance which can be then used with all graphql-js
- * tools, but cannot be used to execute a query, as introspection does not
- * represent the "resolver", "parse" or "serialize" functions or any other
- * server-internal mechanisms.
- *
- * This function expects a complete introspection result. Don't forget to check
- * the "errors" field of a server response before calling this function.
- */
-function buildClientSchema(introspection, options) {
-  (0, _isObjectLike.default)(introspection) && (0, _isObjectLike.default)(introspection.__schema) || (0, _devAssert.default)(0, "Invalid or incomplete introspection result. Ensure that you are passing \"data\" property of introspection response and no \"errors\" was returned alongside: ".concat((0, _inspect.default)(introspection), ".")); // Get the schema from the introspection result.
-
-  var schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each.
-
-  var typeMap = (0, _keyValMap.default)(schemaIntrospection.types, function (typeIntrospection) {
-    return typeIntrospection.name;
-  }, function (typeIntrospection) {
-    return buildType(typeIntrospection);
-  }); // Include standard types only if they are used.
-
-  for (var _i2 = 0, _ref2 = [].concat(_scalars.specifiedScalarTypes, _introspection.introspectionTypes); _i2 < _ref2.length; _i2++) {
-    var stdType = _ref2[_i2];
-
-    if (typeMap[stdType.name]) {
-      typeMap[stdType.name] = stdType;
-    }
-  } // Get the root Query, Mutation, and Subscription types.
-
-
-  var queryType = schemaIntrospection.queryType ? getObjectType(schemaIntrospection.queryType) : null;
-  var mutationType = schemaIntrospection.mutationType ? getObjectType(schemaIntrospection.mutationType) : null;
-  var subscriptionType = schemaIntrospection.subscriptionType ? getObjectType(schemaIntrospection.subscriptionType) : null; // Get the directives supported by Introspection, assuming empty-set if
-  // directives were not queried for.
-
-  var directives = schemaIntrospection.directives ? schemaIntrospection.directives.map(buildDirective) : []; // Then produce and return a Schema with these types.
-
-  return new _schema.GraphQLSchema({
-    description: schemaIntrospection.description,
-    query: queryType,
-    mutation: mutationType,
-    subscription: subscriptionType,
-    types: (0, _objectValues.default)(typeMap),
-    directives: directives,
-    assumeValid: options === null || options === void 0 ? void 0 : options.assumeValid
-  }); // Given a type reference in introspection, return the GraphQLType instance.
-  // preferring cached instances before building new instances.
-
-  function getType(typeRef) {
-    if (typeRef.kind === _introspection.TypeKind.LIST) {
-      var itemRef = typeRef.ofType;
-
-      if (!itemRef) {
-        throw new Error('Decorated type deeper than introspection query.');
-      }
-
-      return new _definition.GraphQLList(getType(itemRef));
-    }
-
-    if (typeRef.kind === _introspection.TypeKind.NON_NULL) {
-      var nullableRef = typeRef.ofType;
-
-      if (!nullableRef) {
-        throw new Error('Decorated type deeper than introspection query.');
-      }
-
-      var nullableType = getType(nullableRef);
-      return new _definition.GraphQLNonNull((0, _definition.assertNullableType)(nullableType));
-    }
-
-    return getNamedType(typeRef);
-  }
-
-  function getNamedType(typeRef) {
-    var typeName = typeRef.name;
-
-    if (!typeName) {
-      throw new Error("Unknown type reference: ".concat((0, _inspect.default)(typeRef), "."));
-    }
-
-    var type = typeMap[typeName];
-
-    if (!type) {
-      throw new Error("Invalid or incomplete schema, unknown type: ".concat(typeName, ". Ensure that a full introspection query is used in order to build a client schema."));
-    }
-
-    return type;
-  }
-
-  function getObjectType(typeRef) {
-    return (0, _definition.assertObjectType)(getNamedType(typeRef));
-  }
-
-  function getInterfaceType(typeRef) {
-    return (0, _definition.assertInterfaceType)(getNamedType(typeRef));
-  } // Given a type's introspection result, construct the correct
-  // GraphQLType instance.
-
-
-  function buildType(type) {
-    if (type != null && type.name != null && type.kind != null) {
-      switch (type.kind) {
-        case _introspection.TypeKind.SCALAR:
-          return buildScalarDef(type);
-
-        case _introspection.TypeKind.OBJECT:
-          return buildObjectDef(type);
-
-        case _introspection.TypeKind.INTERFACE:
-          return buildInterfaceDef(type);
-
-        case _introspection.TypeKind.UNION:
-          return buildUnionDef(type);
-
-        case _introspection.TypeKind.ENUM:
-          return buildEnumDef(type);
-
-        case _introspection.TypeKind.INPUT_OBJECT:
-          return buildInputObjectDef(type);
-      }
-    }
-
-    var typeStr = (0, _inspect.default)(type);
-    throw new Error("Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ".concat(typeStr, "."));
-  }
-
-  function buildScalarDef(scalarIntrospection) {
-    return new _definition.GraphQLScalarType({
-      name: scalarIntrospection.name,
-      description: scalarIntrospection.description,
-      specifiedByUrl: scalarIntrospection.specifiedByUrl
-    });
-  }
-
-  function buildImplementationsList(implementingIntrospection) {
-    // TODO: Temporary workaround until GraphQL ecosystem will fully support
-    // 'interfaces' on interface types.
-    if (implementingIntrospection.interfaces === null && implementingIntrospection.kind === _introspection.TypeKind.INTERFACE) {
-      return [];
-    }
-
-    if (!implementingIntrospection.interfaces) {
-      var implementingIntrospectionStr = (0, _inspect.default)(implementingIntrospection);
-      throw new Error("Introspection result missing interfaces: ".concat(implementingIntrospectionStr, "."));
-    }
-
-    return implementingIntrospection.interfaces.map(getInterfaceType);
-  }
-
-  function buildObjectDef(objectIntrospection) {
-    return new _definition.GraphQLObjectType({
-      name: objectIntrospection.name,
-      description: objectIntrospection.description,
-      interfaces: function interfaces() {
-        return buildImplementationsList(objectIntrospection);
-      },
-      fields: function fields() {
-        return buildFieldDefMap(objectIntrospection);
-      }
-    });
-  }
-
-  function buildInterfaceDef(interfaceIntrospection) {
-    return new _definition.GraphQLInterfaceType({
-      name: interfaceIntrospection.name,
-      description: interfaceIntrospection.description,
-      interfaces: function interfaces() {
-        return buildImplementationsList(interfaceIntrospection);
-      },
-      fields: function fields() {
-        return buildFieldDefMap(interfaceIntrospection);
-      }
-    });
-  }
-
-  function buildUnionDef(unionIntrospection) {
-    if (!unionIntrospection.possibleTypes) {
-      var unionIntrospectionStr = (0, _inspect.default)(unionIntrospection);
-      throw new Error("Introspection result missing possibleTypes: ".concat(unionIntrospectionStr, "."));
-    }
-
-    return new _definition.GraphQLUnionType({
-      name: unionIntrospection.name,
-      description: unionIntrospection.description,
-      types: function types() {
-        return unionIntrospection.possibleTypes.map(getObjectType);
-      }
-    });
-  }
-
-  function buildEnumDef(enumIntrospection) {
-    if (!enumIntrospection.enumValues) {
-      var enumIntrospectionStr = (0, _inspect.default)(enumIntrospection);
-      throw new Error("Introspection result missing enumValues: ".concat(enumIntrospectionStr, "."));
-    }
-
-    return new _definition.GraphQLEnumType({
-      name: enumIntrospection.name,
-      description: enumIntrospection.description,
-      values: (0, _keyValMap.default)(enumIntrospection.enumValues, function (valueIntrospection) {
-        return valueIntrospection.name;
-      }, function (valueIntrospection) {
-        return {
-          description: valueIntrospection.description,
-          deprecationReason: valueIntrospection.deprecationReason
-        };
-      })
-    });
-  }
-
-  function buildInputObjectDef(inputObjectIntrospection) {
-    if (!inputObjectIntrospection.inputFields) {
-      var inputObjectIntrospectionStr = (0, _inspect.default)(inputObjectIntrospection);
-      throw new Error("Introspection result missing inputFields: ".concat(inputObjectIntrospectionStr, "."));
-    }
-
-    return new _definition.GraphQLInputObjectType({
-      name: inputObjectIntrospection.name,
-      description: inputObjectIntrospection.description,
-      fields: function fields() {
-        return buildInputValueDefMap(inputObjectIntrospection.inputFields);
-      }
-    });
-  }
-
-  function buildFieldDefMap(typeIntrospection) {
-    if (!typeIntrospection.fields) {
-      throw new Error("Introspection result missing fields: ".concat((0, _inspect.default)(typeIntrospection), "."));
-    }
-
-    return (0, _keyValMap.default)(typeIntrospection.fields, function (fieldIntrospection) {
-      return fieldIntrospection.name;
-    }, buildField);
-  }
-
-  function buildField(fieldIntrospection) {
-    var type = getType(fieldIntrospection.type);
-
-    if (!(0, _definition.isOutputType)(type)) {
-      var typeStr = (0, _inspect.default)(type);
-      throw new Error("Introspection must provide output type for fields, but received: ".concat(typeStr, "."));
-    }
-
-    if (!fieldIntrospection.args) {
-      var fieldIntrospectionStr = (0, _inspect.default)(fieldIntrospection);
-      throw new Error("Introspection result missing field args: ".concat(fieldIntrospectionStr, "."));
-    }
-
-    return {
-      description: fieldIntrospection.description,
-      deprecationReason: fieldIntrospection.deprecationReason,
-      type: type,
-      args: buildInputValueDefMap(fieldIntrospection.args)
-    };
-  }
-
-  function buildInputValueDefMap(inputValueIntrospections) {
-    return (0, _keyValMap.default)(inputValueIntrospections, function (inputValue) {
-      return inputValue.name;
-    }, buildInputValue);
-  }
-
-  function buildInputValue(inputValueIntrospection) {
-    var type = getType(inputValueIntrospection.type);
-
-    if (!(0, _definition.isInputType)(type)) {
-      var typeStr = (0, _inspect.default)(type);
-      throw new Error("Introspection must provide input type for arguments, but received: ".concat(typeStr, "."));
-    }
-
-    var defaultValue = inputValueIntrospection.defaultValue != null ? (0, _valueFromAST.valueFromAST)((0, _parser.parseValue)(inputValueIntrospection.defaultValue), type) : undefined;
-    return {
-      description: inputValueIntrospection.description,
-      type: type,
-      defaultValue: defaultValue,
-      deprecationReason: inputValueIntrospection.deprecationReason
-    };
-  }
-
-  function buildDirective(directiveIntrospection) {
-    if (!directiveIntrospection.args) {
-      var directiveIntrospectionStr = (0, _inspect.default)(directiveIntrospection);
-      throw new Error("Introspection result missing directive args: ".concat(directiveIntrospectionStr, "."));
-    }
-
-    if (!directiveIntrospection.locations) {
-      var _directiveIntrospectionStr = (0, _inspect.default)(directiveIntrospection);
-
-      throw new Error("Introspection result missing directive locations: ".concat(_directiveIntrospectionStr, "."));
-    }
-
-    return new _directives.GraphQLDirective({
-      name: directiveIntrospection.name,
-      description: directiveIntrospection.description,
-      isRepeatable: directiveIntrospection.isRepeatable,
-      locations: directiveIntrospection.locations.slice(),
-      args: buildInputValueDefMap(directiveIntrospection.args)
-    });
-  }
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/buildClientSchema.js.flow b/includes/external/school/node_modules/graphql/utilities/buildClientSchema.js.flow
deleted file mode 100644
index 6123954..0000000
--- a/includes/external/school/node_modules/graphql/utilities/buildClientSchema.js.flow
+++ /dev/null
@@ -1,408 +0,0 @@
-// @flow strict
-import objectValues from '../polyfills/objectValues';
-
-import inspect from '../jsutils/inspect';
-import devAssert from '../jsutils/devAssert';
-import keyValMap from '../jsutils/keyValMap';
-import isObjectLike from '../jsutils/isObjectLike';
-
-import { parseValue } from '../language/parser';
-
-import type { GraphQLSchemaValidationOptions } from '../type/schema';
-import type {
-  GraphQLType,
-  GraphQLNamedType,
-  GraphQLFieldConfig,
-  GraphQLFieldConfigMap,
-} from '../type/definition';
-import { GraphQLSchema } from '../type/schema';
-import { GraphQLDirective } from '../type/directives';
-import { specifiedScalarTypes } from '../type/scalars';
-import { introspectionTypes, TypeKind } from '../type/introspection';
-import {
-  isInputType,
-  isOutputType,
-  GraphQLList,
-  GraphQLNonNull,
-  GraphQLScalarType,
-  GraphQLObjectType,
-  GraphQLInterfaceType,
-  GraphQLUnionType,
-  GraphQLEnumType,
-  GraphQLInputObjectType,
-  assertNullableType,
-  assertObjectType,
-  assertInterfaceType,
-} from '../type/definition';
-
-import type {
-  IntrospectionQuery,
-  IntrospectionDirective,
-  IntrospectionField,
-  IntrospectionInputValue,
-  IntrospectionType,
-  IntrospectionScalarType,
-  IntrospectionObjectType,
-  IntrospectionInterfaceType,
-  IntrospectionUnionType,
-  IntrospectionEnumType,
-  IntrospectionInputObjectType,
-  IntrospectionTypeRef,
-  IntrospectionNamedTypeRef,
-} from './getIntrospectionQuery';
-import { valueFromAST } from './valueFromAST';
-
-/**
- * Build a GraphQLSchema for use by client tools.
- *
- * Given the result of a client running the introspection query, creates and
- * returns a GraphQLSchema instance which can be then used with all graphql-js
- * tools, but cannot be used to execute a query, as introspection does not
- * represent the "resolver", "parse" or "serialize" functions or any other
- * server-internal mechanisms.
- *
- * This function expects a complete introspection result. Don't forget to check
- * the "errors" field of a server response before calling this function.
- */
-export function buildClientSchema(
-  introspection: IntrospectionQuery,
-  options?: GraphQLSchemaValidationOptions,
-): GraphQLSchema {
-  devAssert(
-    isObjectLike(introspection) && isObjectLike(introspection.__schema),
-    `Invalid or incomplete introspection result. Ensure that you are passing "data" property of introspection response and no "errors" was returned alongside: ${inspect(
-      introspection,
-    )}.`,
-  );
-
-  // Get the schema from the introspection result.
-  const schemaIntrospection = introspection.__schema;
-
-  // Iterate through all types, getting the type definition for each.
-  const typeMap = keyValMap(
-    schemaIntrospection.types,
-    (typeIntrospection) => typeIntrospection.name,
-    (typeIntrospection) => buildType(typeIntrospection),
-  );
-
-  // Include standard types only if they are used.
-  for (const stdType of [...specifiedScalarTypes, ...introspectionTypes]) {
-    if (typeMap[stdType.name]) {
-      typeMap[stdType.name] = stdType;
-    }
-  }
-
-  // Get the root Query, Mutation, and Subscription types.
-  const queryType = schemaIntrospection.queryType
-    ? getObjectType(schemaIntrospection.queryType)
-    : null;
-
-  const mutationType = schemaIntrospection.mutationType
-    ? getObjectType(schemaIntrospection.mutationType)
-    : null;
-
-  const subscriptionType = schemaIntrospection.subscriptionType
-    ? getObjectType(schemaIntrospection.subscriptionType)
-    : null;
-
-  // Get the directives supported by Introspection, assuming empty-set if
-  // directives were not queried for.
-  const directives = schemaIntrospection.directives
-    ? schemaIntrospection.directives.map(buildDirective)
-    : [];
-
-  // Then produce and return a Schema with these types.
-  return new GraphQLSchema({
-    description: schemaIntrospection.description,
-    query: queryType,
-    mutation: mutationType,
-    subscription: subscriptionType,
-    types: objectValues(typeMap),
-    directives,
-    assumeValid: options?.assumeValid,
-  });
-
-  // Given a type reference in introspection, return the GraphQLType instance.
-  // preferring cached instances before building new instances.
-  function getType(typeRef: IntrospectionTypeRef): GraphQLType {
-    if (typeRef.kind === TypeKind.LIST) {
-      const itemRef = typeRef.ofType;
-      if (!itemRef) {
-        throw new Error('Decorated type deeper than introspection query.');
-      }
-      return new GraphQLList(getType(itemRef));
-    }
-    if (typeRef.kind === TypeKind.NON_NULL) {
-      const nullableRef = typeRef.ofType;
-      if (!nullableRef) {
-        throw new Error('Decorated type deeper than introspection query.');
-      }
-      const nullableType = getType(nullableRef);
-      return new GraphQLNonNull(assertNullableType(nullableType));
-    }
-    return getNamedType(typeRef);
-  }
-
-  function getNamedType(
-    typeRef: IntrospectionNamedTypeRef<>,
-  ): GraphQLNamedType {
-    const typeName = typeRef.name;
-    if (!typeName) {
-      throw new Error(`Unknown type reference: ${inspect(typeRef)}.`);
-    }
-
-    const type = typeMap[typeName];
-    if (!type) {
-      throw new Error(
-        `Invalid or incomplete schema, unknown type: ${typeName}. Ensure that a full introspection query is used in order to build a client schema.`,
-      );
-    }
-
-    return type;
-  }
-
-  function getObjectType(
-    typeRef: IntrospectionNamedTypeRef<IntrospectionObjectType>,
-  ): GraphQLObjectType {
-    return assertObjectType(getNamedType(typeRef));
-  }
-
-  function getInterfaceType(
-    typeRef: IntrospectionNamedTypeRef<IntrospectionInterfaceType>,
-  ): GraphQLInterfaceType {
-    return assertInterfaceType(getNamedType(typeRef));
-  }
-
-  // Given a type's introspection result, construct the correct
-  // GraphQLType instance.
-  function buildType(type: IntrospectionType): GraphQLNamedType {
-    if (type != null && type.name != null && type.kind != null) {
-      switch (type.kind) {
-        case TypeKind.SCALAR:
-          return buildScalarDef(type);
-        case TypeKind.OBJECT:
-          return buildObjectDef(type);
-        case TypeKind.INTERFACE:
-          return buildInterfaceDef(type);
-        case TypeKind.UNION:
-          return buildUnionDef(type);
-        case TypeKind.ENUM:
-          return buildEnumDef(type);
-        case TypeKind.INPUT_OBJECT:
-          return buildInputObjectDef(type);
-      }
-    }
-    const typeStr = inspect(type);
-    throw new Error(
-      `Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${typeStr}.`,
-    );
-  }
-
-  function buildScalarDef(
-    scalarIntrospection: IntrospectionScalarType,
-  ): GraphQLScalarType {
-    return new GraphQLScalarType({
-      name: scalarIntrospection.name,
-      description: scalarIntrospection.description,
-      specifiedByUrl: scalarIntrospection.specifiedByUrl,
-    });
-  }
-
-  function buildImplementationsList(
-    implementingIntrospection:
-      | IntrospectionObjectType
-      | IntrospectionInterfaceType,
-  ): Array<GraphQLInterfaceType> {
-    // TODO: Temporary workaround until GraphQL ecosystem will fully support
-    // 'interfaces' on interface types.
-    if (
-      implementingIntrospection.interfaces === null &&
-      implementingIntrospection.kind === TypeKind.INTERFACE
-    ) {
-      return [];
-    }
-
-    if (!implementingIntrospection.interfaces) {
-      const implementingIntrospectionStr = inspect(implementingIntrospection);
-      throw new Error(
-        `Introspection result missing interfaces: ${implementingIntrospectionStr}.`,
-      );
-    }
-
-    return implementingIntrospection.interfaces.map(getInterfaceType);
-  }
-
-  function buildObjectDef(
-    objectIntrospection: IntrospectionObjectType,
-  ): GraphQLObjectType {
-    return new GraphQLObjectType({
-      name: objectIntrospection.name,
-      description: objectIntrospection.description,
-      interfaces: () => buildImplementationsList(objectIntrospection),
-      fields: () => buildFieldDefMap(objectIntrospection),
-    });
-  }
-
-  function buildInterfaceDef(
-    interfaceIntrospection: IntrospectionInterfaceType,
-  ): GraphQLInterfaceType {
-    return new GraphQLInterfaceType({
-      name: interfaceIntrospection.name,
-      description: interfaceIntrospection.description,
-      interfaces: () => buildImplementationsList(interfaceIntrospection),
-      fields: () => buildFieldDefMap(interfaceIntrospection),
-    });
-  }
-
-  function buildUnionDef(
-    unionIntrospection: IntrospectionUnionType,
-  ): GraphQLUnionType {
-    if (!unionIntrospection.possibleTypes) {
-      const unionIntrospectionStr = inspect(unionIntrospection);
-      throw new Error(
-        `Introspection result missing possibleTypes: ${unionIntrospectionStr}.`,
-      );
-    }
-    return new GraphQLUnionType({
-      name: unionIntrospection.name,
-      description: unionIntrospection.description,
-      types: () => unionIntrospection.possibleTypes.map(getObjectType),
-    });
-  }
-
-  function buildEnumDef(
-    enumIntrospection: IntrospectionEnumType,
-  ): GraphQLEnumType {
-    if (!enumIntrospection.enumValues) {
-      const enumIntrospectionStr = inspect(enumIntrospection);
-      throw new Error(
-        `Introspection result missing enumValues: ${enumIntrospectionStr}.`,
-      );
-    }
-    return new GraphQLEnumType({
-      name: enumIntrospection.name,
-      description: enumIntrospection.description,
-      values: keyValMap(
-        enumIntrospection.enumValues,
-        (valueIntrospection) => valueIntrospection.name,
-        (valueIntrospection) => ({
-          description: valueIntrospection.description,
-          deprecationReason: valueIntrospection.deprecationReason,
-        }),
-      ),
-    });
-  }
-
-  function buildInputObjectDef(
-    inputObjectIntrospection: IntrospectionInputObjectType,
-  ): GraphQLInputObjectType {
-    if (!inputObjectIntrospection.inputFields) {
-      const inputObjectIntrospectionStr = inspect(inputObjectIntrospection);
-      throw new Error(
-        `Introspection result missing inputFields: ${inputObjectIntrospectionStr}.`,
-      );
-    }
-    return new GraphQLInputObjectType({
-      name: inputObjectIntrospection.name,
-      description: inputObjectIntrospection.description,
-      fields: () => buildInputValueDefMap(inputObjectIntrospection.inputFields),
-    });
-  }
-
-  function buildFieldDefMap(
-    typeIntrospection: IntrospectionObjectType | IntrospectionInterfaceType,
-  ): GraphQLFieldConfigMap<mixed, mixed> {
-    if (!typeIntrospection.fields) {
-      throw new Error(
-        `Introspection result missing fields: ${inspect(typeIntrospection)}.`,
-      );
-    }
-
-    return keyValMap(
-      typeIntrospection.fields,
-      (fieldIntrospection) => fieldIntrospection.name,
-      buildField,
-    );
-  }
-
-  function buildField(
-    fieldIntrospection: IntrospectionField,
-  ): GraphQLFieldConfig<mixed, mixed> {
-    const type = getType(fieldIntrospection.type);
-    if (!isOutputType(type)) {
-      const typeStr = inspect(type);
-      throw new Error(
-        `Introspection must provide output type for fields, but received: ${typeStr}.`,
-      );
-    }
-
-    if (!fieldIntrospection.args) {
-      const fieldIntrospectionStr = inspect(fieldIntrospection);
-      throw new Error(
-        `Introspection result missing field args: ${fieldIntrospectionStr}.`,
-      );
-    }
-
-    return {
-      description: fieldIntrospection.description,
-      deprecationReason: fieldIntrospection.deprecationReason,
-      type,
-      args: buildInputValueDefMap(fieldIntrospection.args),
-    };
-  }
-
-  function buildInputValueDefMap(
-    inputValueIntrospections: $ReadOnlyArray<IntrospectionInputValue>,
-  ) {
-    return keyValMap(
-      inputValueIntrospections,
-      (inputValue) => inputValue.name,
-      buildInputValue,
-    );
-  }
-
-  function buildInputValue(inputValueIntrospection: IntrospectionInputValue) {
-    const type = getType(inputValueIntrospection.type);
-    if (!isInputType(type)) {
-      const typeStr = inspect(type);
-      throw new Error(
-        `Introspection must provide input type for arguments, but received: ${typeStr}.`,
-      );
-    }
-
-    const defaultValue =
-      inputValueIntrospection.defaultValue != null
-        ? valueFromAST(parseValue(inputValueIntrospection.defaultValue), type)
-        : undefined;
-    return {
-      description: inputValueIntrospection.description,
-      type,
-      defaultValue,
-      deprecationReason: inputValueIntrospection.deprecationReason,
-    };
-  }
-
-  function buildDirective(
-    directiveIntrospection: IntrospectionDirective,
-  ): GraphQLDirective {
-    if (!directiveIntrospection.args) {
-      const directiveIntrospectionStr = inspect(directiveIntrospection);
-      throw new Error(
-        `Introspection result missing directive args: ${directiveIntrospectionStr}.`,
-      );
-    }
-    if (!directiveIntrospection.locations) {
-      const directiveIntrospectionStr = inspect(directiveIntrospection);
-      throw new Error(
-        `Introspection result missing directive locations: ${directiveIntrospectionStr}.`,
-      );
-    }
-    return new GraphQLDirective({
-      name: directiveIntrospection.name,
-      description: directiveIntrospection.description,
-      isRepeatable: directiveIntrospection.isRepeatable,
-      locations: directiveIntrospection.locations.slice(),
-      args: buildInputValueDefMap(directiveIntrospection.args),
-    });
-  }
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/buildClientSchema.mjs b/includes/external/school/node_modules/graphql/utilities/buildClientSchema.mjs
deleted file mode 100644
index 8651a3d..0000000
--- a/includes/external/school/node_modules/graphql/utilities/buildClientSchema.mjs
+++ /dev/null
@@ -1,315 +0,0 @@
-import objectValues from "../polyfills/objectValues.mjs";
-import inspect from "../jsutils/inspect.mjs";
-import devAssert from "../jsutils/devAssert.mjs";
-import keyValMap from "../jsutils/keyValMap.mjs";
-import isObjectLike from "../jsutils/isObjectLike.mjs";
-import { parseValue } from "../language/parser.mjs";
-import { GraphQLSchema } from "../type/schema.mjs";
-import { GraphQLDirective } from "../type/directives.mjs";
-import { specifiedScalarTypes } from "../type/scalars.mjs";
-import { introspectionTypes, TypeKind } from "../type/introspection.mjs";
-import { isInputType, isOutputType, GraphQLList, GraphQLNonNull, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, assertNullableType, assertObjectType, assertInterfaceType } from "../type/definition.mjs";
-import { valueFromAST } from "./valueFromAST.mjs";
-/**
- * Build a GraphQLSchema for use by client tools.
- *
- * Given the result of a client running the introspection query, creates and
- * returns a GraphQLSchema instance which can be then used with all graphql-js
- * tools, but cannot be used to execute a query, as introspection does not
- * represent the "resolver", "parse" or "serialize" functions or any other
- * server-internal mechanisms.
- *
- * This function expects a complete introspection result. Don't forget to check
- * the "errors" field of a server response before calling this function.
- */
-
-export function buildClientSchema(introspection, options) {
-  isObjectLike(introspection) && isObjectLike(introspection.__schema) || devAssert(0, "Invalid or incomplete introspection result. Ensure that you are passing \"data\" property of introspection response and no \"errors\" was returned alongside: ".concat(inspect(introspection), ".")); // Get the schema from the introspection result.
-
-  var schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each.
-
-  var typeMap = keyValMap(schemaIntrospection.types, function (typeIntrospection) {
-    return typeIntrospection.name;
-  }, function (typeIntrospection) {
-    return buildType(typeIntrospection);
-  }); // Include standard types only if they are used.
-
-  for (var _i2 = 0, _ref2 = [].concat(specifiedScalarTypes, introspectionTypes); _i2 < _ref2.length; _i2++) {
-    var stdType = _ref2[_i2];
-
-    if (typeMap[stdType.name]) {
-      typeMap[stdType.name] = stdType;
-    }
-  } // Get the root Query, Mutation, and Subscription types.
-
-
-  var queryType = schemaIntrospection.queryType ? getObjectType(schemaIntrospection.queryType) : null;
-  var mutationType = schemaIntrospection.mutationType ? getObjectType(schemaIntrospection.mutationType) : null;
-  var subscriptionType = schemaIntrospection.subscriptionType ? getObjectType(schemaIntrospection.subscriptionType) : null; // Get the directives supported by Introspection, assuming empty-set if
-  // directives were not queried for.
-
-  var directives = schemaIntrospection.directives ? schemaIntrospection.directives.map(buildDirective) : []; // Then produce and return a Schema with these types.
-
-  return new GraphQLSchema({
-    description: schemaIntrospection.description,
-    query: queryType,
-    mutation: mutationType,
-    subscription: subscriptionType,
-    types: objectValues(typeMap),
-    directives: directives,
-    assumeValid: options === null || options === void 0 ? void 0 : options.assumeValid
-  }); // Given a type reference in introspection, return the GraphQLType instance.
-  // preferring cached instances before building new instances.
-
-  function getType(typeRef) {
-    if (typeRef.kind === TypeKind.LIST) {
-      var itemRef = typeRef.ofType;
-
-      if (!itemRef) {
-        throw new Error('Decorated type deeper than introspection query.');
-      }
-
-      return new GraphQLList(getType(itemRef));
-    }
-
-    if (typeRef.kind === TypeKind.NON_NULL) {
-      var nullableRef = typeRef.ofType;
-
-      if (!nullableRef) {
-        throw new Error('Decorated type deeper than introspection query.');
-      }
-
-      var nullableType = getType(nullableRef);
-      return new GraphQLNonNull(assertNullableType(nullableType));
-    }
-
-    return getNamedType(typeRef);
-  }
-
-  function getNamedType(typeRef) {
-    var typeName = typeRef.name;
-
-    if (!typeName) {
-      throw new Error("Unknown type reference: ".concat(inspect(typeRef), "."));
-    }
-
-    var type = typeMap[typeName];
-
-    if (!type) {
-      throw new Error("Invalid or incomplete schema, unknown type: ".concat(typeName, ". Ensure that a full introspection query is used in order to build a client schema."));
-    }
-
-    return type;
-  }
-
-  function getObjectType(typeRef) {
-    return assertObjectType(getNamedType(typeRef));
-  }
-
-  function getInterfaceType(typeRef) {
-    return assertInterfaceType(getNamedType(typeRef));
-  } // Given a type's introspection result, construct the correct
-  // GraphQLType instance.
-
-
-  function buildType(type) {
-    if (type != null && type.name != null && type.kind != null) {
-      switch (type.kind) {
-        case TypeKind.SCALAR:
-          return buildScalarDef(type);
-
-        case TypeKind.OBJECT:
-          return buildObjectDef(type);
-
-        case TypeKind.INTERFACE:
-          return buildInterfaceDef(type);
-
-        case TypeKind.UNION:
-          return buildUnionDef(type);
-
-        case TypeKind.ENUM:
-          return buildEnumDef(type);
-
-        case TypeKind.INPUT_OBJECT:
-          return buildInputObjectDef(type);
-      }
-    }
-
-    var typeStr = inspect(type);
-    throw new Error("Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ".concat(typeStr, "."));
-  }
-
-  function buildScalarDef(scalarIntrospection) {
-    return new GraphQLScalarType({
-      name: scalarIntrospection.name,
-      description: scalarIntrospection.description,
-      specifiedByUrl: scalarIntrospection.specifiedByUrl
-    });
-  }
-
-  function buildImplementationsList(implementingIntrospection) {
-    // TODO: Temporary workaround until GraphQL ecosystem will fully support
-    // 'interfaces' on interface types.
-    if (implementingIntrospection.interfaces === null && implementingIntrospection.kind === TypeKind.INTERFACE) {
-      return [];
-    }
-
-    if (!implementingIntrospection.interfaces) {
-      var implementingIntrospectionStr = inspect(implementingIntrospection);
-      throw new Error("Introspection result missing interfaces: ".concat(implementingIntrospectionStr, "."));
-    }
-
-    return implementingIntrospection.interfaces.map(getInterfaceType);
-  }
-
-  function buildObjectDef(objectIntrospection) {
-    return new GraphQLObjectType({
-      name: objectIntrospection.name,
-      description: objectIntrospection.description,
-      interfaces: function interfaces() {
-        return buildImplementationsList(objectIntrospection);
-      },
-      fields: function fields() {
-        return buildFieldDefMap(objectIntrospection);
-      }
-    });
-  }
-
-  function buildInterfaceDef(interfaceIntrospection) {
-    return new GraphQLInterfaceType({
-      name: interfaceIntrospection.name,
-      description: interfaceIntrospection.description,
-      interfaces: function interfaces() {
-        return buildImplementationsList(interfaceIntrospection);
-      },
-      fields: function fields() {
-        return buildFieldDefMap(interfaceIntrospection);
-      }
-    });
-  }
-
-  function buildUnionDef(unionIntrospection) {
-    if (!unionIntrospection.possibleTypes) {
-      var unionIntrospectionStr = inspect(unionIntrospection);
-      throw new Error("Introspection result missing possibleTypes: ".concat(unionIntrospectionStr, "."));
-    }
-
-    return new GraphQLUnionType({
-      name: unionIntrospection.name,
-      description: unionIntrospection.description,
-      types: function types() {
-        return unionIntrospection.possibleTypes.map(getObjectType);
-      }
-    });
-  }
-
-  function buildEnumDef(enumIntrospection) {
-    if (!enumIntrospection.enumValues) {
-      var enumIntrospectionStr = inspect(enumIntrospection);
-      throw new Error("Introspection result missing enumValues: ".concat(enumIntrospectionStr, "."));
-    }
-
-    return new GraphQLEnumType({
-      name: enumIntrospection.name,
-      description: enumIntrospection.description,
-      values: keyValMap(enumIntrospection.enumValues, function (valueIntrospection) {
-        return valueIntrospection.name;
-      }, function (valueIntrospection) {
-        return {
-          description: valueIntrospection.description,
-          deprecationReason: valueIntrospection.deprecationReason
-        };
-      })
-    });
-  }
-
-  function buildInputObjectDef(inputObjectIntrospection) {
-    if (!inputObjectIntrospection.inputFields) {
-      var inputObjectIntrospectionStr = inspect(inputObjectIntrospection);
-      throw new Error("Introspection result missing inputFields: ".concat(inputObjectIntrospectionStr, "."));
-    }
-
-    return new GraphQLInputObjectType({
-      name: inputObjectIntrospection.name,
-      description: inputObjectIntrospection.description,
-      fields: function fields() {
-        return buildInputValueDefMap(inputObjectIntrospection.inputFields);
-      }
-    });
-  }
-
-  function buildFieldDefMap(typeIntrospection) {
-    if (!typeIntrospection.fields) {
-      throw new Error("Introspection result missing fields: ".concat(inspect(typeIntrospection), "."));
-    }
-
-    return keyValMap(typeIntrospection.fields, function (fieldIntrospection) {
-      return fieldIntrospection.name;
-    }, buildField);
-  }
-
-  function buildField(fieldIntrospection) {
-    var type = getType(fieldIntrospection.type);
-
-    if (!isOutputType(type)) {
-      var typeStr = inspect(type);
-      throw new Error("Introspection must provide output type for fields, but received: ".concat(typeStr, "."));
-    }
-
-    if (!fieldIntrospection.args) {
-      var fieldIntrospectionStr = inspect(fieldIntrospection);
-      throw new Error("Introspection result missing field args: ".concat(fieldIntrospectionStr, "."));
-    }
-
-    return {
-      description: fieldIntrospection.description,
-      deprecationReason: fieldIntrospection.deprecationReason,
-      type: type,
-      args: buildInputValueDefMap(fieldIntrospection.args)
-    };
-  }
-
-  function buildInputValueDefMap(inputValueIntrospections) {
-    return keyValMap(inputValueIntrospections, function (inputValue) {
-      return inputValue.name;
-    }, buildInputValue);
-  }
-
-  function buildInputValue(inputValueIntrospection) {
-    var type = getType(inputValueIntrospection.type);
-
-    if (!isInputType(type)) {
-      var typeStr = inspect(type);
-      throw new Error("Introspection must provide input type for arguments, but received: ".concat(typeStr, "."));
-    }
-
-    var defaultValue = inputValueIntrospection.defaultValue != null ? valueFromAST(parseValue(inputValueIntrospection.defaultValue), type) : undefined;
-    return {
-      description: inputValueIntrospection.description,
-      type: type,
-      defaultValue: defaultValue,
-      deprecationReason: inputValueIntrospection.deprecationReason
-    };
-  }
-
-  function buildDirective(directiveIntrospection) {
-    if (!directiveIntrospection.args) {
-      var directiveIntrospectionStr = inspect(directiveIntrospection);
-      throw new Error("Introspection result missing directive args: ".concat(directiveIntrospectionStr, "."));
-    }
-
-    if (!directiveIntrospection.locations) {
-      var _directiveIntrospectionStr = inspect(directiveIntrospection);
-
-      throw new Error("Introspection result missing directive locations: ".concat(_directiveIntrospectionStr, "."));
-    }
-
-    return new GraphQLDirective({
-      name: directiveIntrospection.name,
-      description: directiveIntrospection.description,
-      isRepeatable: directiveIntrospection.isRepeatable,
-      locations: directiveIntrospection.locations.slice(),
-      args: buildInputValueDefMap(directiveIntrospection.args)
-    });
-  }
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/coerceInputValue.d.ts b/includes/external/school/node_modules/graphql/utilities/coerceInputValue.d.ts
deleted file mode 100644
index 45c70a5..0000000
--- a/includes/external/school/node_modules/graphql/utilities/coerceInputValue.d.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { GraphQLInputType } from '../type/definition';
-import { GraphQLError } from '../error/GraphQLError';
-
-type OnErrorCB = (
-  path: ReadonlyArray<string | number>,
-  invalidValue: any,
-  error: GraphQLError,
-) => void;
-
-/**
- * Coerces a JavaScript value given a GraphQL Input Type.
- */
-export function coerceInputValue(
-  inputValue: any,
-  type: GraphQLInputType,
-  onError?: OnErrorCB,
-): any;
diff --git a/includes/external/school/node_modules/graphql/utilities/coerceInputValue.js b/includes/external/school/node_modules/graphql/utilities/coerceInputValue.js
deleted file mode 100644
index aa2381a..0000000
--- a/includes/external/school/node_modules/graphql/utilities/coerceInputValue.js
+++ /dev/null
@@ -1,148 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.coerceInputValue = coerceInputValue;
-
-var _objectValues3 = _interopRequireDefault(require("../polyfills/objectValues.js"));
-
-var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
-
-var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
-
-var _didYouMean = _interopRequireDefault(require("../jsutils/didYouMean.js"));
-
-var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
-
-var _safeArrayFrom = _interopRequireDefault(require("../jsutils/safeArrayFrom.js"));
-
-var _suggestionList = _interopRequireDefault(require("../jsutils/suggestionList.js"));
-
-var _printPathArray = _interopRequireDefault(require("../jsutils/printPathArray.js"));
-
-var _Path = require("../jsutils/Path.js");
-
-var _GraphQLError = require("../error/GraphQLError.js");
-
-var _definition = require("../type/definition.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Coerces a JavaScript value given a GraphQL Input Type.
- */
-function coerceInputValue(inputValue, type) {
-  var onError = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultOnError;
-  return coerceInputValueImpl(inputValue, type, onError);
-}
-
-function defaultOnError(path, invalidValue, error) {
-  var errorPrefix = 'Invalid value ' + (0, _inspect.default)(invalidValue);
-
-  if (path.length > 0) {
-    errorPrefix += " at \"value".concat((0, _printPathArray.default)(path), "\"");
-  }
-
-  error.message = errorPrefix + ': ' + error.message;
-  throw error;
-}
-
-function coerceInputValueImpl(inputValue, type, onError, path) {
-  if ((0, _definition.isNonNullType)(type)) {
-    if (inputValue != null) {
-      return coerceInputValueImpl(inputValue, type.ofType, onError, path);
-    }
-
-    onError((0, _Path.pathToArray)(path), inputValue, new _GraphQLError.GraphQLError("Expected non-nullable type \"".concat((0, _inspect.default)(type), "\" not to be null.")));
-    return;
-  }
-
-  if (inputValue == null) {
-    // Explicitly return the value null.
-    return null;
-  }
-
-  if ((0, _definition.isListType)(type)) {
-    var itemType = type.ofType;
-    var coercedList = (0, _safeArrayFrom.default)(inputValue, function (itemValue, index) {
-      var itemPath = (0, _Path.addPath)(path, index, undefined);
-      return coerceInputValueImpl(itemValue, itemType, onError, itemPath);
-    });
-
-    if (coercedList != null) {
-      return coercedList;
-    } // Lists accept a non-list value as a list of one.
-
-
-    return [coerceInputValueImpl(inputValue, itemType, onError, path)];
-  }
-
-  if ((0, _definition.isInputObjectType)(type)) {
-    if (!(0, _isObjectLike.default)(inputValue)) {
-      onError((0, _Path.pathToArray)(path), inputValue, new _GraphQLError.GraphQLError("Expected type \"".concat(type.name, "\" to be an object.")));
-      return;
-    }
-
-    var coercedValue = {};
-    var fieldDefs = type.getFields();
-
-    for (var _i2 = 0, _objectValues2 = (0, _objectValues3.default)(fieldDefs); _i2 < _objectValues2.length; _i2++) {
-      var field = _objectValues2[_i2];
-      var fieldValue = inputValue[field.name];
-
-      if (fieldValue === undefined) {
-        if (field.defaultValue !== undefined) {
-          coercedValue[field.name] = field.defaultValue;
-        } else if ((0, _definition.isNonNullType)(field.type)) {
-          var typeStr = (0, _inspect.default)(field.type);
-          onError((0, _Path.pathToArray)(path), inputValue, new _GraphQLError.GraphQLError("Field \"".concat(field.name, "\" of required type \"").concat(typeStr, "\" was not provided.")));
-        }
-
-        continue;
-      }
-
-      coercedValue[field.name] = coerceInputValueImpl(fieldValue, field.type, onError, (0, _Path.addPath)(path, field.name, type.name));
-    } // Ensure every provided field is defined.
-
-
-    for (var _i4 = 0, _Object$keys2 = Object.keys(inputValue); _i4 < _Object$keys2.length; _i4++) {
-      var fieldName = _Object$keys2[_i4];
-
-      if (!fieldDefs[fieldName]) {
-        var suggestions = (0, _suggestionList.default)(fieldName, Object.keys(type.getFields()));
-        onError((0, _Path.pathToArray)(path), inputValue, new _GraphQLError.GraphQLError("Field \"".concat(fieldName, "\" is not defined by type \"").concat(type.name, "\".") + (0, _didYouMean.default)(suggestions)));
-      }
-    }
-
-    return coercedValue;
-  } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-  if ((0, _definition.isLeafType)(type)) {
-    var parseResult; // Scalars and Enums determine if a input value is valid via parseValue(),
-    // which can throw to indicate failure. If it throws, maintain a reference
-    // to the original error.
-
-    try {
-      parseResult = type.parseValue(inputValue);
-    } catch (error) {
-      if (error instanceof _GraphQLError.GraphQLError) {
-        onError((0, _Path.pathToArray)(path), inputValue, error);
-      } else {
-        onError((0, _Path.pathToArray)(path), inputValue, new _GraphQLError.GraphQLError("Expected type \"".concat(type.name, "\". ") + error.message, undefined, undefined, undefined, undefined, error));
-      }
-
-      return;
-    }
-
-    if (parseResult === undefined) {
-      onError((0, _Path.pathToArray)(path), inputValue, new _GraphQLError.GraphQLError("Expected type \"".concat(type.name, "\".")));
-    }
-
-    return parseResult;
-  } // istanbul ignore next (Not reachable. All possible input types have been considered)
-
-
-  false || (0, _invariant.default)(0, 'Unexpected input type: ' + (0, _inspect.default)(type));
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/coerceInputValue.js.flow b/includes/external/school/node_modules/graphql/utilities/coerceInputValue.js.flow
deleted file mode 100644
index a42fa06..0000000
--- a/includes/external/school/node_modules/graphql/utilities/coerceInputValue.js.flow
+++ /dev/null
@@ -1,195 +0,0 @@
-// @flow strict
-import objectValues from '../polyfills/objectValues';
-
-import type { Path } from '../jsutils/Path';
-import inspect from '../jsutils/inspect';
-import invariant from '../jsutils/invariant';
-import didYouMean from '../jsutils/didYouMean';
-import isObjectLike from '../jsutils/isObjectLike';
-import safeArrayFrom from '../jsutils/safeArrayFrom';
-import suggestionList from '../jsutils/suggestionList';
-import printPathArray from '../jsutils/printPathArray';
-import { addPath, pathToArray } from '../jsutils/Path';
-
-import { GraphQLError } from '../error/GraphQLError';
-
-import type { GraphQLInputType } from '../type/definition';
-import {
-  isLeafType,
-  isInputObjectType,
-  isListType,
-  isNonNullType,
-} from '../type/definition';
-
-type OnErrorCB = (
-  path: $ReadOnlyArray<string | number>,
-  invalidValue: mixed,
-  error: GraphQLError,
-) => void;
-
-/**
- * Coerces a JavaScript value given a GraphQL Input Type.
- */
-export function coerceInputValue(
-  inputValue: mixed,
-  type: GraphQLInputType,
-  onError: OnErrorCB = defaultOnError,
-): mixed {
-  return coerceInputValueImpl(inputValue, type, onError);
-}
-
-function defaultOnError(
-  path: $ReadOnlyArray<string | number>,
-  invalidValue: mixed,
-  error: GraphQLError,
-): void {
-  let errorPrefix = 'Invalid value ' + inspect(invalidValue);
-  if (path.length > 0) {
-    errorPrefix += ` at "value${printPathArray(path)}"`;
-  }
-  error.message = errorPrefix + ': ' + error.message;
-  throw error;
-}
-
-function coerceInputValueImpl(
-  inputValue: mixed,
-  type: GraphQLInputType,
-  onError: OnErrorCB,
-  path: Path | void,
-): mixed {
-  if (isNonNullType(type)) {
-    if (inputValue != null) {
-      return coerceInputValueImpl(inputValue, type.ofType, onError, path);
-    }
-    onError(
-      pathToArray(path),
-      inputValue,
-      new GraphQLError(
-        `Expected non-nullable type "${inspect(type)}" not to be null.`,
-      ),
-    );
-    return;
-  }
-
-  if (inputValue == null) {
-    // Explicitly return the value null.
-    return null;
-  }
-
-  if (isListType(type)) {
-    const itemType = type.ofType;
-
-    const coercedList = safeArrayFrom(inputValue, (itemValue, index) => {
-      const itemPath = addPath(path, index, undefined);
-      return coerceInputValueImpl(itemValue, itemType, onError, itemPath);
-    });
-
-    if (coercedList != null) {
-      return coercedList;
-    }
-
-    // Lists accept a non-list value as a list of one.
-    return [coerceInputValueImpl(inputValue, itemType, onError, path)];
-  }
-
-  if (isInputObjectType(type)) {
-    if (!isObjectLike(inputValue)) {
-      onError(
-        pathToArray(path),
-        inputValue,
-        new GraphQLError(`Expected type "${type.name}" to be an object.`),
-      );
-      return;
-    }
-
-    const coercedValue = {};
-    const fieldDefs = type.getFields();
-
-    for (const field of objectValues(fieldDefs)) {
-      const fieldValue = inputValue[field.name];
-
-      if (fieldValue === undefined) {
-        if (field.defaultValue !== undefined) {
-          coercedValue[field.name] = field.defaultValue;
-        } else if (isNonNullType(field.type)) {
-          const typeStr = inspect(field.type);
-          onError(
-            pathToArray(path),
-            inputValue,
-            new GraphQLError(
-              `Field "${field.name}" of required type "${typeStr}" was not provided.`,
-            ),
-          );
-        }
-        continue;
-      }
-
-      coercedValue[field.name] = coerceInputValueImpl(
-        fieldValue,
-        field.type,
-        onError,
-        addPath(path, field.name, type.name),
-      );
-    }
-
-    // Ensure every provided field is defined.
-    for (const fieldName of Object.keys(inputValue)) {
-      if (!fieldDefs[fieldName]) {
-        const suggestions = suggestionList(
-          fieldName,
-          Object.keys(type.getFields()),
-        );
-        onError(
-          pathToArray(path),
-          inputValue,
-          new GraphQLError(
-            `Field "${fieldName}" is not defined by type "${type.name}".` +
-              didYouMean(suggestions),
-          ),
-        );
-      }
-    }
-    return coercedValue;
-  }
-
-  // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-  if (isLeafType(type)) {
-    let parseResult;
-
-    // Scalars and Enums determine if a input value is valid via parseValue(),
-    // which can throw to indicate failure. If it throws, maintain a reference
-    // to the original error.
-    try {
-      parseResult = type.parseValue(inputValue);
-    } catch (error) {
-      if (error instanceof GraphQLError) {
-        onError(pathToArray(path), inputValue, error);
-      } else {
-        onError(
-          pathToArray(path),
-          inputValue,
-          new GraphQLError(
-            `Expected type "${type.name}". ` + error.message,
-            undefined,
-            undefined,
-            undefined,
-            undefined,
-            error,
-          ),
-        );
-      }
-      return;
-    }
-    if (parseResult === undefined) {
-      onError(
-        pathToArray(path),
-        inputValue,
-        new GraphQLError(`Expected type "${type.name}".`),
-      );
-    }
-    return parseResult;
-  }
-
-  // istanbul ignore next (Not reachable. All possible input types have been considered)
-  invariant(false, 'Unexpected input type: ' + inspect((type: empty)));
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/coerceInputValue.mjs b/includes/external/school/node_modules/graphql/utilities/coerceInputValue.mjs
deleted file mode 100644
index dbca94c..0000000
--- a/includes/external/school/node_modules/graphql/utilities/coerceInputValue.mjs
+++ /dev/null
@@ -1,129 +0,0 @@
-import objectValues from "../polyfills/objectValues.mjs";
-import inspect from "../jsutils/inspect.mjs";
-import invariant from "../jsutils/invariant.mjs";
-import didYouMean from "../jsutils/didYouMean.mjs";
-import isObjectLike from "../jsutils/isObjectLike.mjs";
-import safeArrayFrom from "../jsutils/safeArrayFrom.mjs";
-import suggestionList from "../jsutils/suggestionList.mjs";
-import printPathArray from "../jsutils/printPathArray.mjs";
-import { addPath, pathToArray } from "../jsutils/Path.mjs";
-import { GraphQLError } from "../error/GraphQLError.mjs";
-import { isLeafType, isInputObjectType, isListType, isNonNullType } from "../type/definition.mjs";
-
-/**
- * Coerces a JavaScript value given a GraphQL Input Type.
- */
-export function coerceInputValue(inputValue, type) {
-  var onError = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultOnError;
-  return coerceInputValueImpl(inputValue, type, onError);
-}
-
-function defaultOnError(path, invalidValue, error) {
-  var errorPrefix = 'Invalid value ' + inspect(invalidValue);
-
-  if (path.length > 0) {
-    errorPrefix += " at \"value".concat(printPathArray(path), "\"");
-  }
-
-  error.message = errorPrefix + ': ' + error.message;
-  throw error;
-}
-
-function coerceInputValueImpl(inputValue, type, onError, path) {
-  if (isNonNullType(type)) {
-    if (inputValue != null) {
-      return coerceInputValueImpl(inputValue, type.ofType, onError, path);
-    }
-
-    onError(pathToArray(path), inputValue, new GraphQLError("Expected non-nullable type \"".concat(inspect(type), "\" not to be null.")));
-    return;
-  }
-
-  if (inputValue == null) {
-    // Explicitly return the value null.
-    return null;
-  }
-
-  if (isListType(type)) {
-    var itemType = type.ofType;
-    var coercedList = safeArrayFrom(inputValue, function (itemValue, index) {
-      var itemPath = addPath(path, index, undefined);
-      return coerceInputValueImpl(itemValue, itemType, onError, itemPath);
-    });
-
-    if (coercedList != null) {
-      return coercedList;
-    } // Lists accept a non-list value as a list of one.
-
-
-    return [coerceInputValueImpl(inputValue, itemType, onError, path)];
-  }
-
-  if (isInputObjectType(type)) {
-    if (!isObjectLike(inputValue)) {
-      onError(pathToArray(path), inputValue, new GraphQLError("Expected type \"".concat(type.name, "\" to be an object.")));
-      return;
-    }
-
-    var coercedValue = {};
-    var fieldDefs = type.getFields();
-
-    for (var _i2 = 0, _objectValues2 = objectValues(fieldDefs); _i2 < _objectValues2.length; _i2++) {
-      var field = _objectValues2[_i2];
-      var fieldValue = inputValue[field.name];
-
-      if (fieldValue === undefined) {
-        if (field.defaultValue !== undefined) {
-          coercedValue[field.name] = field.defaultValue;
-        } else if (isNonNullType(field.type)) {
-          var typeStr = inspect(field.type);
-          onError(pathToArray(path), inputValue, new GraphQLError("Field \"".concat(field.name, "\" of required type \"").concat(typeStr, "\" was not provided.")));
-        }
-
-        continue;
-      }
-
-      coercedValue[field.name] = coerceInputValueImpl(fieldValue, field.type, onError, addPath(path, field.name, type.name));
-    } // Ensure every provided field is defined.
-
-
-    for (var _i4 = 0, _Object$keys2 = Object.keys(inputValue); _i4 < _Object$keys2.length; _i4++) {
-      var fieldName = _Object$keys2[_i4];
-
-      if (!fieldDefs[fieldName]) {
-        var suggestions = suggestionList(fieldName, Object.keys(type.getFields()));
-        onError(pathToArray(path), inputValue, new GraphQLError("Field \"".concat(fieldName, "\" is not defined by type \"").concat(type.name, "\".") + didYouMean(suggestions)));
-      }
-    }
-
-    return coercedValue;
-  } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-  if (isLeafType(type)) {
-    var parseResult; // Scalars and Enums determine if a input value is valid via parseValue(),
-    // which can throw to indicate failure. If it throws, maintain a reference
-    // to the original error.
-
-    try {
-      parseResult = type.parseValue(inputValue);
-    } catch (error) {
-      if (error instanceof GraphQLError) {
-        onError(pathToArray(path), inputValue, error);
-      } else {
-        onError(pathToArray(path), inputValue, new GraphQLError("Expected type \"".concat(type.name, "\". ") + error.message, undefined, undefined, undefined, undefined, error));
-      }
-
-      return;
-    }
-
-    if (parseResult === undefined) {
-      onError(pathToArray(path), inputValue, new GraphQLError("Expected type \"".concat(type.name, "\".")));
-    }
-
-    return parseResult;
-  } // istanbul ignore next (Not reachable. All possible input types have been considered)
-
-
-  false || invariant(0, 'Unexpected input type: ' + inspect(type));
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/concatAST.d.ts b/includes/external/school/node_modules/graphql/utilities/concatAST.d.ts
deleted file mode 100644
index 03d441e..0000000
--- a/includes/external/school/node_modules/graphql/utilities/concatAST.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { DocumentNode } from '../language/ast';
-
-/**
- * Provided a collection of ASTs, presumably each from different files,
- * concatenate the ASTs together into batched AST, useful for validating many
- * GraphQL source files which together represent one conceptual application.
- */
-export function concatAST(asts: ReadonlyArray<DocumentNode>): DocumentNode;
diff --git a/includes/external/school/node_modules/graphql/utilities/concatAST.js b/includes/external/school/node_modules/graphql/utilities/concatAST.js
deleted file mode 100644
index 9c3ac48..0000000
--- a/includes/external/school/node_modules/graphql/utilities/concatAST.js
+++ /dev/null
@@ -1,25 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.concatAST = concatAST;
-
-/**
- * Provided a collection of ASTs, presumably each from different files,
- * concatenate the ASTs together into batched AST, useful for validating many
- * GraphQL source files which together represent one conceptual application.
- */
-function concatAST(documents) {
-  var definitions = [];
-
-  for (var _i2 = 0; _i2 < documents.length; _i2++) {
-    var doc = documents[_i2];
-    definitions = definitions.concat(doc.definitions);
-  }
-
-  return {
-    kind: 'Document',
-    definitions: definitions
-  };
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/concatAST.js.flow b/includes/external/school/node_modules/graphql/utilities/concatAST.js.flow
deleted file mode 100644
index 0e0bb5f..0000000
--- a/includes/external/school/node_modules/graphql/utilities/concatAST.js.flow
+++ /dev/null
@@ -1,17 +0,0 @@
-// @flow strict
-import type { DocumentNode } from '../language/ast';
-
-/**
- * Provided a collection of ASTs, presumably each from different files,
- * concatenate the ASTs together into batched AST, useful for validating many
- * GraphQL source files which together represent one conceptual application.
- */
-export function concatAST(
-  documents: $ReadOnlyArray<DocumentNode>,
-): DocumentNode {
-  let definitions = [];
-  for (const doc of documents) {
-    definitions = definitions.concat(doc.definitions);
-  }
-  return { kind: 'Document', definitions };
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/concatAST.mjs b/includes/external/school/node_modules/graphql/utilities/concatAST.mjs
deleted file mode 100644
index 4e9e9ee..0000000
--- a/includes/external/school/node_modules/graphql/utilities/concatAST.mjs
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Provided a collection of ASTs, presumably each from different files,
- * concatenate the ASTs together into batched AST, useful for validating many
- * GraphQL source files which together represent one conceptual application.
- */
-export function concatAST(documents) {
-  var definitions = [];
-
-  for (var _i2 = 0; _i2 < documents.length; _i2++) {
-    var doc = documents[_i2];
-    definitions = definitions.concat(doc.definitions);
-  }
-
-  return {
-    kind: 'Document',
-    definitions: definitions
-  };
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/extendSchema.d.ts b/includes/external/school/node_modules/graphql/utilities/extendSchema.d.ts
deleted file mode 100644
index 6795e01..0000000
--- a/includes/external/school/node_modules/graphql/utilities/extendSchema.d.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import { Maybe } from '../jsutils/Maybe';
-
-import { Location, DocumentNode, StringValueNode } from '../language/ast';
-import {
-  GraphQLSchemaValidationOptions,
-  GraphQLSchema,
-  GraphQLSchemaNormalizedConfig,
-} from '../type/schema';
-
-interface Options extends GraphQLSchemaValidationOptions {
-  /**
-   * Descriptions are defined as preceding string literals, however an older
-   * experimental version of the SDL supported preceding comments as
-   * descriptions. Set to true to enable this deprecated behavior.
-   * This option is provided to ease adoption and will be removed in v16.
-   *
-   * Default: false
-   */
-  commentDescriptions?: boolean;
-
-  /**
-   * Set to true to assume the SDL is valid.
-   *
-   * Default: false
-   */
-  assumeValidSDL?: boolean;
-}
-
-/**
- * Produces a new schema given an existing schema and a document which may
- * contain GraphQL type extensions and definitions. The original schema will
- * remain unaltered.
- *
- * Because a schema represents a graph of references, a schema cannot be
- * extended without effectively making an entire copy. We do not know until it's
- * too late if subgraphs remain unchanged.
- *
- * This algorithm copies the provided schema, applying extensions while
- * producing the copy. The original schema remains unaltered.
- *
- * Accepts options as a third argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-export function extendSchema(
-  schema: GraphQLSchema,
-  documentAST: DocumentNode,
-  options?: Options,
-): GraphQLSchema;
-
-/**
- * @internal
- */
-export function extendSchemaImpl(
-  schemaConfig: GraphQLSchemaNormalizedConfig,
-  documentAST: DocumentNode,
-  options?: Options,
-): GraphQLSchemaNormalizedConfig;
-
-/**
- * Given an ast node, returns its string description.
- * @deprecated: provided to ease adoption and will be removed in v16.
- *
- * Accepts options as a second argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-export function getDescription(
-  node: { readonly description?: StringValueNode; readonly loc?: Location },
-  options?: Maybe<{ commentDescriptions?: boolean }>,
-): string | undefined;
diff --git a/includes/external/school/node_modules/graphql/utilities/extendSchema.js b/includes/external/school/node_modules/graphql/utilities/extendSchema.js
deleted file mode 100644
index 0b0201d..0000000
--- a/includes/external/school/node_modules/graphql/utilities/extendSchema.js
+++ /dev/null
@@ -1,719 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.extendSchema = extendSchema;
-exports.extendSchemaImpl = extendSchemaImpl;
-exports.getDescription = getDescription;
-
-var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
-
-var _keyMap = _interopRequireDefault(require("../jsutils/keyMap.js"));
-
-var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
-
-var _mapValue = _interopRequireDefault(require("../jsutils/mapValue.js"));
-
-var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
-
-var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
-
-var _kinds = require("../language/kinds.js");
-
-var _tokenKind = require("../language/tokenKind.js");
-
-var _blockString = require("../language/blockString.js");
-
-var _predicates = require("../language/predicates.js");
-
-var _validate = require("../validation/validate.js");
-
-var _values = require("../execution/values.js");
-
-var _schema = require("../type/schema.js");
-
-var _scalars = require("../type/scalars.js");
-
-var _introspection = require("../type/introspection.js");
-
-var _directives = require("../type/directives.js");
-
-var _definition = require("../type/definition.js");
-
-var _valueFromAST = require("./valueFromAST.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-/**
- * Produces a new schema given an existing schema and a document which may
- * contain GraphQL type extensions and definitions. The original schema will
- * remain unaltered.
- *
- * Because a schema represents a graph of references, a schema cannot be
- * extended without effectively making an entire copy. We do not know until it's
- * too late if subgraphs remain unchanged.
- *
- * This algorithm copies the provided schema, applying extensions while
- * producing the copy. The original schema remains unaltered.
- *
- * Accepts options as a third argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-function extendSchema(schema, documentAST, options) {
-  (0, _schema.assertSchema)(schema);
-  documentAST != null && documentAST.kind === _kinds.Kind.DOCUMENT || (0, _devAssert.default)(0, 'Must provide valid Document AST.');
-
-  if ((options === null || options === void 0 ? void 0 : options.assumeValid) !== true && (options === null || options === void 0 ? void 0 : options.assumeValidSDL) !== true) {
-    (0, _validate.assertValidSDLExtension)(documentAST, schema);
-  }
-
-  var schemaConfig = schema.toConfig();
-  var extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);
-  return schemaConfig === extendedConfig ? schema : new _schema.GraphQLSchema(extendedConfig);
-}
-/**
- * @internal
- */
-
-
-function extendSchemaImpl(schemaConfig, documentAST, options) {
-  var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;
-
-  // Collect the type definitions and extensions found in the document.
-  var typeDefs = [];
-  var typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can
-  // have the same name. For example, a type named "skip".
-
-  var directiveDefs = [];
-  var schemaDef; // Schema extensions are collected which may add additional operation types.
-
-  var schemaExtensions = [];
-
-  for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {
-    var def = _documentAST$definiti2[_i2];
-
-    if (def.kind === _kinds.Kind.SCHEMA_DEFINITION) {
-      schemaDef = def;
-    } else if (def.kind === _kinds.Kind.SCHEMA_EXTENSION) {
-      schemaExtensions.push(def);
-    } else if ((0, _predicates.isTypeDefinitionNode)(def)) {
-      typeDefs.push(def);
-    } else if ((0, _predicates.isTypeExtensionNode)(def)) {
-      var extendedTypeName = def.name.value;
-      var existingTypeExtensions = typeExtensionsMap[extendedTypeName];
-      typeExtensionsMap[extendedTypeName] = existingTypeExtensions ? existingTypeExtensions.concat([def]) : [def];
-    } else if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {
-      directiveDefs.push(def);
-    }
-  } // If this document contains no new types, extensions, or directives then
-  // return the same unmodified GraphQLSchema instance.
-
-
-  if (Object.keys(typeExtensionsMap).length === 0 && typeDefs.length === 0 && directiveDefs.length === 0 && schemaExtensions.length === 0 && schemaDef == null) {
-    return schemaConfig;
-  }
-
-  var typeMap = Object.create(null);
-
-  for (var _i4 = 0, _schemaConfig$types2 = schemaConfig.types; _i4 < _schemaConfig$types2.length; _i4++) {
-    var existingType = _schemaConfig$types2[_i4];
-    typeMap[existingType.name] = extendNamedType(existingType);
-  }
-
-  for (var _i6 = 0; _i6 < typeDefs.length; _i6++) {
-    var _stdTypeMap$name;
-
-    var typeNode = typeDefs[_i6];
-    var name = typeNode.name.value;
-    typeMap[name] = (_stdTypeMap$name = stdTypeMap[name]) !== null && _stdTypeMap$name !== void 0 ? _stdTypeMap$name : buildType(typeNode);
-  }
-
-  var operationTypes = _objectSpread(_objectSpread({
-    // Get the extended root operation types.
-    query: schemaConfig.query && replaceNamedType(schemaConfig.query),
-    mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),
-    subscription: schemaConfig.subscription && replaceNamedType(schemaConfig.subscription)
-  }, schemaDef && getOperationTypes([schemaDef])), getOperationTypes(schemaExtensions)); // Then produce and return a Schema config with these types.
-
-
-  return _objectSpread(_objectSpread({
-    description: (_schemaDef = schemaDef) === null || _schemaDef === void 0 ? void 0 : (_schemaDef$descriptio = _schemaDef.description) === null || _schemaDef$descriptio === void 0 ? void 0 : _schemaDef$descriptio.value
-  }, operationTypes), {}, {
-    types: (0, _objectValues.default)(typeMap),
-    directives: [].concat(schemaConfig.directives.map(replaceDirective), directiveDefs.map(buildDirective)),
-    extensions: undefined,
-    astNode: (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0 ? _schemaDef2 : schemaConfig.astNode,
-    extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),
-    assumeValid: (_options$assumeValid = options === null || options === void 0 ? void 0 : options.assumeValid) !== null && _options$assumeValid !== void 0 ? _options$assumeValid : false
-  }); // Below are functions used for producing this schema that have closed over
-  // this scope and have access to the schema, cache, and newly defined types.
-
-  function replaceType(type) {
-    if ((0, _definition.isListType)(type)) {
-      // $FlowFixMe[incompatible-return]
-      return new _definition.GraphQLList(replaceType(type.ofType));
-    }
-
-    if ((0, _definition.isNonNullType)(type)) {
-      // $FlowFixMe[incompatible-return]
-      return new _definition.GraphQLNonNull(replaceType(type.ofType));
-    }
-
-    return replaceNamedType(type);
-  }
-
-  function replaceNamedType(type) {
-    // Note: While this could make early assertions to get the correctly
-    // typed values, that would throw immediately while type system
-    // validation with validateSchema() will produce more actionable results.
-    return typeMap[type.name];
-  }
-
-  function replaceDirective(directive) {
-    var config = directive.toConfig();
-    return new _directives.GraphQLDirective(_objectSpread(_objectSpread({}, config), {}, {
-      args: (0, _mapValue.default)(config.args, extendArg)
-    }));
-  }
-
-  function extendNamedType(type) {
-    if ((0, _introspection.isIntrospectionType)(type) || (0, _scalars.isSpecifiedScalarType)(type)) {
-      // Builtin types are not extended.
-      return type;
-    }
-
-    if ((0, _definition.isScalarType)(type)) {
-      return extendScalarType(type);
-    }
-
-    if ((0, _definition.isObjectType)(type)) {
-      return extendObjectType(type);
-    }
-
-    if ((0, _definition.isInterfaceType)(type)) {
-      return extendInterfaceType(type);
-    }
-
-    if ((0, _definition.isUnionType)(type)) {
-      return extendUnionType(type);
-    }
-
-    if ((0, _definition.isEnumType)(type)) {
-      return extendEnumType(type);
-    } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-    if ((0, _definition.isInputObjectType)(type)) {
-      return extendInputObjectType(type);
-    } // istanbul ignore next (Not reachable. All possible types have been considered)
-
-
-    false || (0, _invariant.default)(0, 'Unexpected type: ' + (0, _inspect.default)(type));
-  }
-
-  function extendInputObjectType(type) {
-    var _typeExtensionsMap$co;
-
-    var config = type.toConfig();
-    var extensions = (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co !== void 0 ? _typeExtensionsMap$co : [];
-    return new _definition.GraphQLInputObjectType(_objectSpread(_objectSpread({}, config), {}, {
-      fields: function fields() {
-        return _objectSpread(_objectSpread({}, (0, _mapValue.default)(config.fields, function (field) {
-          return _objectSpread(_objectSpread({}, field), {}, {
-            type: replaceType(field.type)
-          });
-        })), buildInputFieldMap(extensions));
-      },
-      extensionASTNodes: config.extensionASTNodes.concat(extensions)
-    }));
-  }
-
-  function extendEnumType(type) {
-    var _typeExtensionsMap$ty;
-
-    var config = type.toConfig();
-    var extensions = (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null && _typeExtensionsMap$ty !== void 0 ? _typeExtensionsMap$ty : [];
-    return new _definition.GraphQLEnumType(_objectSpread(_objectSpread({}, config), {}, {
-      values: _objectSpread(_objectSpread({}, config.values), buildEnumValueMap(extensions)),
-      extensionASTNodes: config.extensionASTNodes.concat(extensions)
-    }));
-  }
-
-  function extendScalarType(type) {
-    var _typeExtensionsMap$co2;
-
-    var config = type.toConfig();
-    var extensions = (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co2 !== void 0 ? _typeExtensionsMap$co2 : [];
-    var specifiedByUrl = config.specifiedByUrl;
-
-    for (var _i8 = 0; _i8 < extensions.length; _i8++) {
-      var _getSpecifiedByUrl;
-
-      var extensionNode = extensions[_i8];
-      specifiedByUrl = (_getSpecifiedByUrl = getSpecifiedByUrl(extensionNode)) !== null && _getSpecifiedByUrl !== void 0 ? _getSpecifiedByUrl : specifiedByUrl;
-    }
-
-    return new _definition.GraphQLScalarType(_objectSpread(_objectSpread({}, config), {}, {
-      specifiedByUrl: specifiedByUrl,
-      extensionASTNodes: config.extensionASTNodes.concat(extensions)
-    }));
-  }
-
-  function extendObjectType(type) {
-    var _typeExtensionsMap$co3;
-
-    var config = type.toConfig();
-    var extensions = (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co3 !== void 0 ? _typeExtensionsMap$co3 : [];
-    return new _definition.GraphQLObjectType(_objectSpread(_objectSpread({}, config), {}, {
-      interfaces: function interfaces() {
-        return [].concat(type.getInterfaces().map(replaceNamedType), buildInterfaces(extensions));
-      },
-      fields: function fields() {
-        return _objectSpread(_objectSpread({}, (0, _mapValue.default)(config.fields, extendField)), buildFieldMap(extensions));
-      },
-      extensionASTNodes: config.extensionASTNodes.concat(extensions)
-    }));
-  }
-
-  function extendInterfaceType(type) {
-    var _typeExtensionsMap$co4;
-
-    var config = type.toConfig();
-    var extensions = (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co4 !== void 0 ? _typeExtensionsMap$co4 : [];
-    return new _definition.GraphQLInterfaceType(_objectSpread(_objectSpread({}, config), {}, {
-      interfaces: function interfaces() {
-        return [].concat(type.getInterfaces().map(replaceNamedType), buildInterfaces(extensions));
-      },
-      fields: function fields() {
-        return _objectSpread(_objectSpread({}, (0, _mapValue.default)(config.fields, extendField)), buildFieldMap(extensions));
-      },
-      extensionASTNodes: config.extensionASTNodes.concat(extensions)
-    }));
-  }
-
-  function extendUnionType(type) {
-    var _typeExtensionsMap$co5;
-
-    var config = type.toConfig();
-    var extensions = (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co5 !== void 0 ? _typeExtensionsMap$co5 : [];
-    return new _definition.GraphQLUnionType(_objectSpread(_objectSpread({}, config), {}, {
-      types: function types() {
-        return [].concat(type.getTypes().map(replaceNamedType), buildUnionTypes(extensions));
-      },
-      extensionASTNodes: config.extensionASTNodes.concat(extensions)
-    }));
-  }
-
-  function extendField(field) {
-    return _objectSpread(_objectSpread({}, field), {}, {
-      type: replaceType(field.type),
-      // $FlowFixMe[incompatible-call]
-      args: (0, _mapValue.default)(field.args, extendArg)
-    });
-  }
-
-  function extendArg(arg) {
-    return _objectSpread(_objectSpread({}, arg), {}, {
-      type: replaceType(arg.type)
-    });
-  }
-
-  function getOperationTypes(nodes) {
-    var opTypes = {};
-
-    for (var _i10 = 0; _i10 < nodes.length; _i10++) {
-      var _node$operationTypes;
-
-      var node = nodes[_i10];
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      var operationTypesNodes = (_node$operationTypes = node.operationTypes) !== null && _node$operationTypes !== void 0 ? _node$operationTypes : [];
-
-      for (var _i12 = 0; _i12 < operationTypesNodes.length; _i12++) {
-        var operationType = operationTypesNodes[_i12];
-        opTypes[operationType.operation] = getNamedType(operationType.type);
-      }
-    } // Note: While this could make early assertions to get the correctly
-    // typed values below, that would throw immediately while type system
-    // validation with validateSchema() will produce more actionable results.
-
-
-    return opTypes;
-  }
-
-  function getNamedType(node) {
-    var _stdTypeMap$name2;
-
-    var name = node.name.value;
-    var type = (_stdTypeMap$name2 = stdTypeMap[name]) !== null && _stdTypeMap$name2 !== void 0 ? _stdTypeMap$name2 : typeMap[name];
-
-    if (type === undefined) {
-      throw new Error("Unknown type: \"".concat(name, "\"."));
-    }
-
-    return type;
-  }
-
-  function getWrappedType(node) {
-    if (node.kind === _kinds.Kind.LIST_TYPE) {
-      return new _definition.GraphQLList(getWrappedType(node.type));
-    }
-
-    if (node.kind === _kinds.Kind.NON_NULL_TYPE) {
-      return new _definition.GraphQLNonNull(getWrappedType(node.type));
-    }
-
-    return getNamedType(node);
-  }
-
-  function buildDirective(node) {
-    var locations = node.locations.map(function (_ref) {
-      var value = _ref.value;
-      return value;
-    });
-    return new _directives.GraphQLDirective({
-      name: node.name.value,
-      description: getDescription(node, options),
-      locations: locations,
-      isRepeatable: node.repeatable,
-      args: buildArgumentMap(node.arguments),
-      astNode: node
-    });
-  }
-
-  function buildFieldMap(nodes) {
-    var fieldConfigMap = Object.create(null);
-
-    for (var _i14 = 0; _i14 < nodes.length; _i14++) {
-      var _node$fields;
-
-      var node = nodes[_i14];
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      var nodeFields = (_node$fields = node.fields) !== null && _node$fields !== void 0 ? _node$fields : [];
-
-      for (var _i16 = 0; _i16 < nodeFields.length; _i16++) {
-        var field = nodeFields[_i16];
-        fieldConfigMap[field.name.value] = {
-          // Note: While this could make assertions to get the correctly typed
-          // value, that would throw immediately while type system validation
-          // with validateSchema() will produce more actionable results.
-          type: getWrappedType(field.type),
-          description: getDescription(field, options),
-          args: buildArgumentMap(field.arguments),
-          deprecationReason: getDeprecationReason(field),
-          astNode: field
-        };
-      }
-    }
-
-    return fieldConfigMap;
-  }
-
-  function buildArgumentMap(args) {
-    // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-    var argsNodes = args !== null && args !== void 0 ? args : [];
-    var argConfigMap = Object.create(null);
-
-    for (var _i18 = 0; _i18 < argsNodes.length; _i18++) {
-      var arg = argsNodes[_i18];
-      // Note: While this could make assertions to get the correctly typed
-      // value, that would throw immediately while type system validation
-      // with validateSchema() will produce more actionable results.
-      var type = getWrappedType(arg.type);
-      argConfigMap[arg.name.value] = {
-        type: type,
-        description: getDescription(arg, options),
-        defaultValue: (0, _valueFromAST.valueFromAST)(arg.defaultValue, type),
-        deprecationReason: getDeprecationReason(arg),
-        astNode: arg
-      };
-    }
-
-    return argConfigMap;
-  }
-
-  function buildInputFieldMap(nodes) {
-    var inputFieldMap = Object.create(null);
-
-    for (var _i20 = 0; _i20 < nodes.length; _i20++) {
-      var _node$fields2;
-
-      var node = nodes[_i20];
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      var fieldsNodes = (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0 ? _node$fields2 : [];
-
-      for (var _i22 = 0; _i22 < fieldsNodes.length; _i22++) {
-        var field = fieldsNodes[_i22];
-        // Note: While this could make assertions to get the correctly typed
-        // value, that would throw immediately while type system validation
-        // with validateSchema() will produce more actionable results.
-        var type = getWrappedType(field.type);
-        inputFieldMap[field.name.value] = {
-          type: type,
-          description: getDescription(field, options),
-          defaultValue: (0, _valueFromAST.valueFromAST)(field.defaultValue, type),
-          deprecationReason: getDeprecationReason(field),
-          astNode: field
-        };
-      }
-    }
-
-    return inputFieldMap;
-  }
-
-  function buildEnumValueMap(nodes) {
-    var enumValueMap = Object.create(null);
-
-    for (var _i24 = 0; _i24 < nodes.length; _i24++) {
-      var _node$values;
-
-      var node = nodes[_i24];
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      var valuesNodes = (_node$values = node.values) !== null && _node$values !== void 0 ? _node$values : [];
-
-      for (var _i26 = 0; _i26 < valuesNodes.length; _i26++) {
-        var value = valuesNodes[_i26];
-        enumValueMap[value.name.value] = {
-          description: getDescription(value, options),
-          deprecationReason: getDeprecationReason(value),
-          astNode: value
-        };
-      }
-    }
-
-    return enumValueMap;
-  }
-
-  function buildInterfaces(nodes) {
-    var interfaces = [];
-
-    for (var _i28 = 0; _i28 < nodes.length; _i28++) {
-      var _node$interfaces;
-
-      var node = nodes[_i28];
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      var interfacesNodes = (_node$interfaces = node.interfaces) !== null && _node$interfaces !== void 0 ? _node$interfaces : [];
-
-      for (var _i30 = 0; _i30 < interfacesNodes.length; _i30++) {
-        var type = interfacesNodes[_i30];
-        // Note: While this could make assertions to get the correctly typed
-        // values below, that would throw immediately while type system
-        // validation with validateSchema() will produce more actionable
-        // results.
-        interfaces.push(getNamedType(type));
-      }
-    }
-
-    return interfaces;
-  }
-
-  function buildUnionTypes(nodes) {
-    var types = [];
-
-    for (var _i32 = 0; _i32 < nodes.length; _i32++) {
-      var _node$types;
-
-      var node = nodes[_i32];
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      var typeNodes = (_node$types = node.types) !== null && _node$types !== void 0 ? _node$types : [];
-
-      for (var _i34 = 0; _i34 < typeNodes.length; _i34++) {
-        var type = typeNodes[_i34];
-        // Note: While this could make assertions to get the correctly typed
-        // values below, that would throw immediately while type system
-        // validation with validateSchema() will produce more actionable
-        // results.
-        types.push(getNamedType(type));
-      }
-    }
-
-    return types;
-  }
-
-  function buildType(astNode) {
-    var _typeExtensionsMap$na;
-
-    var name = astNode.name.value;
-    var description = getDescription(astNode, options);
-    var extensionNodes = (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null && _typeExtensionsMap$na !== void 0 ? _typeExtensionsMap$na : [];
-
-    switch (astNode.kind) {
-      case _kinds.Kind.OBJECT_TYPE_DEFINITION:
-        {
-          var extensionASTNodes = extensionNodes;
-          var allNodes = [astNode].concat(extensionASTNodes);
-          return new _definition.GraphQLObjectType({
-            name: name,
-            description: description,
-            interfaces: function interfaces() {
-              return buildInterfaces(allNodes);
-            },
-            fields: function fields() {
-              return buildFieldMap(allNodes);
-            },
-            astNode: astNode,
-            extensionASTNodes: extensionASTNodes
-          });
-        }
-
-      case _kinds.Kind.INTERFACE_TYPE_DEFINITION:
-        {
-          var _extensionASTNodes = extensionNodes;
-
-          var _allNodes = [astNode].concat(_extensionASTNodes);
-
-          return new _definition.GraphQLInterfaceType({
-            name: name,
-            description: description,
-            interfaces: function interfaces() {
-              return buildInterfaces(_allNodes);
-            },
-            fields: function fields() {
-              return buildFieldMap(_allNodes);
-            },
-            astNode: astNode,
-            extensionASTNodes: _extensionASTNodes
-          });
-        }
-
-      case _kinds.Kind.ENUM_TYPE_DEFINITION:
-        {
-          var _extensionASTNodes2 = extensionNodes;
-
-          var _allNodes2 = [astNode].concat(_extensionASTNodes2);
-
-          return new _definition.GraphQLEnumType({
-            name: name,
-            description: description,
-            values: buildEnumValueMap(_allNodes2),
-            astNode: astNode,
-            extensionASTNodes: _extensionASTNodes2
-          });
-        }
-
-      case _kinds.Kind.UNION_TYPE_DEFINITION:
-        {
-          var _extensionASTNodes3 = extensionNodes;
-
-          var _allNodes3 = [astNode].concat(_extensionASTNodes3);
-
-          return new _definition.GraphQLUnionType({
-            name: name,
-            description: description,
-            types: function types() {
-              return buildUnionTypes(_allNodes3);
-            },
-            astNode: astNode,
-            extensionASTNodes: _extensionASTNodes3
-          });
-        }
-
-      case _kinds.Kind.SCALAR_TYPE_DEFINITION:
-        {
-          var _extensionASTNodes4 = extensionNodes;
-          return new _definition.GraphQLScalarType({
-            name: name,
-            description: description,
-            specifiedByUrl: getSpecifiedByUrl(astNode),
-            astNode: astNode,
-            extensionASTNodes: _extensionASTNodes4
-          });
-        }
-
-      case _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION:
-        {
-          var _extensionASTNodes5 = extensionNodes;
-
-          var _allNodes4 = [astNode].concat(_extensionASTNodes5);
-
-          return new _definition.GraphQLInputObjectType({
-            name: name,
-            description: description,
-            fields: function fields() {
-              return buildInputFieldMap(_allNodes4);
-            },
-            astNode: astNode,
-            extensionASTNodes: _extensionASTNodes5
-          });
-        }
-    } // istanbul ignore next (Not reachable. All possible type definition nodes have been considered)
-
-
-    false || (0, _invariant.default)(0, 'Unexpected type definition node: ' + (0, _inspect.default)(astNode));
-  }
-}
-
-var stdTypeMap = (0, _keyMap.default)(_scalars.specifiedScalarTypes.concat(_introspection.introspectionTypes), function (type) {
-  return type.name;
-});
-/**
- * Given a field or enum value node, returns the string value for the
- * deprecation reason.
- */
-
-function getDeprecationReason(node) {
-  var deprecated = (0, _values.getDirectiveValues)(_directives.GraphQLDeprecatedDirective, node);
-  return deprecated === null || deprecated === void 0 ? void 0 : deprecated.reason;
-}
-/**
- * Given a scalar node, returns the string value for the specifiedByUrl.
- */
-
-
-function getSpecifiedByUrl(node) {
-  var specifiedBy = (0, _values.getDirectiveValues)(_directives.GraphQLSpecifiedByDirective, node);
-  return specifiedBy === null || specifiedBy === void 0 ? void 0 : specifiedBy.url;
-}
-/**
- * Given an ast node, returns its string description.
- * @deprecated: provided to ease adoption and will be removed in v16.
- *
- * Accepts options as a second argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-
-
-function getDescription(node, options) {
-  if (node.description) {
-    return node.description.value;
-  }
-
-  if ((options === null || options === void 0 ? void 0 : options.commentDescriptions) === true) {
-    var rawValue = getLeadingCommentBlock(node);
-
-    if (rawValue !== undefined) {
-      return (0, _blockString.dedentBlockStringValue)('\n' + rawValue);
-    }
-  }
-}
-
-function getLeadingCommentBlock(node) {
-  var loc = node.loc;
-
-  if (!loc) {
-    return;
-  }
-
-  var comments = [];
-  var token = loc.startToken.prev;
-
-  while (token != null && token.kind === _tokenKind.TokenKind.COMMENT && token.next && token.prev && token.line + 1 === token.next.line && token.line !== token.prev.line) {
-    var value = String(token.value);
-    comments.push(value);
-    token = token.prev;
-  }
-
-  return comments.length > 0 ? comments.reverse().join('\n') : undefined;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/extendSchema.js.flow b/includes/external/school/node_modules/graphql/utilities/extendSchema.js.flow
deleted file mode 100644
index 2d5a229..0000000
--- a/includes/external/school/node_modules/graphql/utilities/extendSchema.js.flow
+++ /dev/null
@@ -1,782 +0,0 @@
-// @flow strict
-import objectValues from '../polyfills/objectValues';
-
-import keyMap from '../jsutils/keyMap';
-import inspect from '../jsutils/inspect';
-import mapValue from '../jsutils/mapValue';
-import invariant from '../jsutils/invariant';
-import devAssert from '../jsutils/devAssert';
-
-import type { DirectiveLocationEnum } from '../language/directiveLocation';
-import type {
-  Location,
-  DocumentNode,
-  StringValueNode,
-  TypeNode,
-  NamedTypeNode,
-  SchemaDefinitionNode,
-  SchemaExtensionNode,
-  TypeDefinitionNode,
-  InterfaceTypeDefinitionNode,
-  InterfaceTypeExtensionNode,
-  ObjectTypeDefinitionNode,
-  ObjectTypeExtensionNode,
-  UnionTypeDefinitionNode,
-  UnionTypeExtensionNode,
-  FieldDefinitionNode,
-  InputObjectTypeDefinitionNode,
-  InputObjectTypeExtensionNode,
-  InputValueDefinitionNode,
-  EnumTypeDefinitionNode,
-  EnumTypeExtensionNode,
-  EnumValueDefinitionNode,
-  DirectiveDefinitionNode,
-  ScalarTypeDefinitionNode,
-  ScalarTypeExtensionNode,
-} from '../language/ast';
-import { Kind } from '../language/kinds';
-import { TokenKind } from '../language/tokenKind';
-import { dedentBlockStringValue } from '../language/blockString';
-import {
-  isTypeDefinitionNode,
-  isTypeExtensionNode,
-} from '../language/predicates';
-
-import { assertValidSDLExtension } from '../validation/validate';
-
-import { getDirectiveValues } from '../execution/values';
-
-import type {
-  GraphQLSchemaValidationOptions,
-  GraphQLSchemaNormalizedConfig,
-} from '../type/schema';
-import type {
-  GraphQLType,
-  GraphQLNamedType,
-  GraphQLFieldConfig,
-  GraphQLFieldConfigMap,
-  GraphQLArgumentConfig,
-  GraphQLFieldConfigArgumentMap,
-  GraphQLEnumValueConfigMap,
-  GraphQLInputFieldConfigMap,
-} from '../type/definition';
-import { assertSchema, GraphQLSchema } from '../type/schema';
-import { specifiedScalarTypes, isSpecifiedScalarType } from '../type/scalars';
-import { introspectionTypes, isIntrospectionType } from '../type/introspection';
-import {
-  GraphQLDirective,
-  GraphQLDeprecatedDirective,
-  GraphQLSpecifiedByDirective,
-} from '../type/directives';
-import {
-  isScalarType,
-  isObjectType,
-  isInterfaceType,
-  isUnionType,
-  isListType,
-  isNonNullType,
-  isEnumType,
-  isInputObjectType,
-  GraphQLList,
-  GraphQLNonNull,
-  GraphQLScalarType,
-  GraphQLObjectType,
-  GraphQLInterfaceType,
-  GraphQLUnionType,
-  GraphQLEnumType,
-  GraphQLInputObjectType,
-} from '../type/definition';
-
-import { valueFromAST } from './valueFromAST';
-
-type Options = {|
-  ...GraphQLSchemaValidationOptions,
-
-  /**
-   * Descriptions are defined as preceding string literals, however an older
-   * experimental version of the SDL supported preceding comments as
-   * descriptions. Set to true to enable this deprecated behavior.
-   * This option is provided to ease adoption and will be removed in v16.
-   *
-   * Default: false
-   */
-  commentDescriptions?: boolean,
-
-  /**
-   * Set to true to assume the SDL is valid.
-   *
-   * Default: false
-   */
-  assumeValidSDL?: boolean,
-|};
-
-/**
- * Produces a new schema given an existing schema and a document which may
- * contain GraphQL type extensions and definitions. The original schema will
- * remain unaltered.
- *
- * Because a schema represents a graph of references, a schema cannot be
- * extended without effectively making an entire copy. We do not know until it's
- * too late if subgraphs remain unchanged.
- *
- * This algorithm copies the provided schema, applying extensions while
- * producing the copy. The original schema remains unaltered.
- *
- * Accepts options as a third argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-export function extendSchema(
-  schema: GraphQLSchema,
-  documentAST: DocumentNode,
-  options?: Options,
-): GraphQLSchema {
-  assertSchema(schema);
-
-  devAssert(
-    documentAST != null && documentAST.kind === Kind.DOCUMENT,
-    'Must provide valid Document AST.',
-  );
-
-  if (options?.assumeValid !== true && options?.assumeValidSDL !== true) {
-    assertValidSDLExtension(documentAST, schema);
-  }
-
-  const schemaConfig = schema.toConfig();
-  const extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);
-  return schemaConfig === extendedConfig
-    ? schema
-    : new GraphQLSchema(extendedConfig);
-}
-
-/**
- * @internal
- */
-export function extendSchemaImpl(
-  schemaConfig: GraphQLSchemaNormalizedConfig,
-  documentAST: DocumentNode,
-  options?: Options,
-): GraphQLSchemaNormalizedConfig {
-  // Collect the type definitions and extensions found in the document.
-  const typeDefs: Array<TypeDefinitionNode> = [];
-  const typeExtensionsMap = Object.create(null);
-
-  // New directives and types are separate because a directives and types can
-  // have the same name. For example, a type named "skip".
-  const directiveDefs: Array<DirectiveDefinitionNode> = [];
-
-  let schemaDef: ?SchemaDefinitionNode;
-  // Schema extensions are collected which may add additional operation types.
-  const schemaExtensions: Array<SchemaExtensionNode> = [];
-
-  for (const def of documentAST.definitions) {
-    if (def.kind === Kind.SCHEMA_DEFINITION) {
-      schemaDef = def;
-    } else if (def.kind === Kind.SCHEMA_EXTENSION) {
-      schemaExtensions.push(def);
-    } else if (isTypeDefinitionNode(def)) {
-      typeDefs.push(def);
-    } else if (isTypeExtensionNode(def)) {
-      const extendedTypeName = def.name.value;
-      const existingTypeExtensions = typeExtensionsMap[extendedTypeName];
-      typeExtensionsMap[extendedTypeName] = existingTypeExtensions
-        ? existingTypeExtensions.concat([def])
-        : [def];
-    } else if (def.kind === Kind.DIRECTIVE_DEFINITION) {
-      directiveDefs.push(def);
-    }
-  }
-
-  // If this document contains no new types, extensions, or directives then
-  // return the same unmodified GraphQLSchema instance.
-  if (
-    Object.keys(typeExtensionsMap).length === 0 &&
-    typeDefs.length === 0 &&
-    directiveDefs.length === 0 &&
-    schemaExtensions.length === 0 &&
-    schemaDef == null
-  ) {
-    return schemaConfig;
-  }
-
-  const typeMap = Object.create(null);
-  for (const existingType of schemaConfig.types) {
-    typeMap[existingType.name] = extendNamedType(existingType);
-  }
-
-  for (const typeNode of typeDefs) {
-    const name = typeNode.name.value;
-    typeMap[name] = stdTypeMap[name] ?? buildType(typeNode);
-  }
-
-  const operationTypes = {
-    // Get the extended root operation types.
-    query: schemaConfig.query && replaceNamedType(schemaConfig.query),
-    mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),
-    subscription:
-      schemaConfig.subscription && replaceNamedType(schemaConfig.subscription),
-    // Then, incorporate schema definition and all schema extensions.
-    ...(schemaDef && getOperationTypes([schemaDef])),
-    ...getOperationTypes(schemaExtensions),
-  };
-
-  // Then produce and return a Schema config with these types.
-  return {
-    description: schemaDef?.description?.value,
-    ...operationTypes,
-    types: objectValues(typeMap),
-    directives: [
-      ...schemaConfig.directives.map(replaceDirective),
-      ...directiveDefs.map(buildDirective),
-    ],
-    extensions: undefined,
-    astNode: schemaDef ?? schemaConfig.astNode,
-    extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),
-    assumeValid: options?.assumeValid ?? false,
-  };
-
-  // Below are functions used for producing this schema that have closed over
-  // this scope and have access to the schema, cache, and newly defined types.
-
-  function replaceType<T: GraphQLType>(type: T): T {
-    if (isListType(type)) {
-      // $FlowFixMe[incompatible-return]
-      return new GraphQLList(replaceType(type.ofType));
-    }
-    if (isNonNullType(type)) {
-      // $FlowFixMe[incompatible-return]
-      return new GraphQLNonNull(replaceType(type.ofType));
-    }
-    return replaceNamedType(type);
-  }
-
-  function replaceNamedType<T: GraphQLNamedType>(type: T): T {
-    // Note: While this could make early assertions to get the correctly
-    // typed values, that would throw immediately while type system
-    // validation with validateSchema() will produce more actionable results.
-    return ((typeMap[type.name]: any): T);
-  }
-
-  function replaceDirective(directive: GraphQLDirective): GraphQLDirective {
-    const config = directive.toConfig();
-    return new GraphQLDirective({
-      ...config,
-      args: mapValue(config.args, extendArg),
-    });
-  }
-
-  function extendNamedType(type: GraphQLNamedType): GraphQLNamedType {
-    if (isIntrospectionType(type) || isSpecifiedScalarType(type)) {
-      // Builtin types are not extended.
-      return type;
-    }
-    if (isScalarType(type)) {
-      return extendScalarType(type);
-    }
-    if (isObjectType(type)) {
-      return extendObjectType(type);
-    }
-    if (isInterfaceType(type)) {
-      return extendInterfaceType(type);
-    }
-    if (isUnionType(type)) {
-      return extendUnionType(type);
-    }
-    if (isEnumType(type)) {
-      return extendEnumType(type);
-    }
-    // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-    if (isInputObjectType(type)) {
-      return extendInputObjectType(type);
-    }
-
-    // istanbul ignore next (Not reachable. All possible types have been considered)
-    invariant(false, 'Unexpected type: ' + inspect((type: empty)));
-  }
-
-  function extendInputObjectType(
-    type: GraphQLInputObjectType,
-  ): GraphQLInputObjectType {
-    const config = type.toConfig();
-    const extensions = typeExtensionsMap[config.name] ?? [];
-
-    return new GraphQLInputObjectType({
-      ...config,
-      fields: () => ({
-        ...mapValue(config.fields, (field) => ({
-          ...field,
-          type: replaceType(field.type),
-        })),
-        ...buildInputFieldMap(extensions),
-      }),
-      extensionASTNodes: config.extensionASTNodes.concat(extensions),
-    });
-  }
-
-  function extendEnumType(type: GraphQLEnumType): GraphQLEnumType {
-    const config = type.toConfig();
-    const extensions = typeExtensionsMap[type.name] ?? [];
-
-    return new GraphQLEnumType({
-      ...config,
-      values: {
-        ...config.values,
-        ...buildEnumValueMap(extensions),
-      },
-      extensionASTNodes: config.extensionASTNodes.concat(extensions),
-    });
-  }
-
-  function extendScalarType(type: GraphQLScalarType): GraphQLScalarType {
-    const config = type.toConfig();
-    const extensions = typeExtensionsMap[config.name] ?? [];
-
-    let specifiedByUrl = config.specifiedByUrl;
-    for (const extensionNode of extensions) {
-      specifiedByUrl = getSpecifiedByUrl(extensionNode) ?? specifiedByUrl;
-    }
-
-    return new GraphQLScalarType({
-      ...config,
-      specifiedByUrl,
-      extensionASTNodes: config.extensionASTNodes.concat(extensions),
-    });
-  }
-
-  function extendObjectType(type: GraphQLObjectType): GraphQLObjectType {
-    const config = type.toConfig();
-    const extensions = typeExtensionsMap[config.name] ?? [];
-
-    return new GraphQLObjectType({
-      ...config,
-      interfaces: () => [
-        ...type.getInterfaces().map(replaceNamedType),
-        ...buildInterfaces(extensions),
-      ],
-      fields: () => ({
-        ...mapValue(config.fields, extendField),
-        ...buildFieldMap(extensions),
-      }),
-      extensionASTNodes: config.extensionASTNodes.concat(extensions),
-    });
-  }
-
-  function extendInterfaceType(
-    type: GraphQLInterfaceType,
-  ): GraphQLInterfaceType {
-    const config = type.toConfig();
-    const extensions = typeExtensionsMap[config.name] ?? [];
-
-    return new GraphQLInterfaceType({
-      ...config,
-      interfaces: () => [
-        ...type.getInterfaces().map(replaceNamedType),
-        ...buildInterfaces(extensions),
-      ],
-      fields: () => ({
-        ...mapValue(config.fields, extendField),
-        ...buildFieldMap(extensions),
-      }),
-      extensionASTNodes: config.extensionASTNodes.concat(extensions),
-    });
-  }
-
-  function extendUnionType(type: GraphQLUnionType): GraphQLUnionType {
-    const config = type.toConfig();
-    const extensions = typeExtensionsMap[config.name] ?? [];
-
-    return new GraphQLUnionType({
-      ...config,
-      types: () => [
-        ...type.getTypes().map(replaceNamedType),
-        ...buildUnionTypes(extensions),
-      ],
-      extensionASTNodes: config.extensionASTNodes.concat(extensions),
-    });
-  }
-
-  function extendField(
-    field: GraphQLFieldConfig<mixed, mixed>,
-  ): GraphQLFieldConfig<mixed, mixed> {
-    return {
-      ...field,
-      type: replaceType(field.type),
-      // $FlowFixMe[incompatible-call]
-      args: mapValue(field.args, extendArg),
-    };
-  }
-
-  function extendArg(arg: GraphQLArgumentConfig) {
-    return {
-      ...arg,
-      type: replaceType(arg.type),
-    };
-  }
-
-  function getOperationTypes(
-    nodes: $ReadOnlyArray<SchemaDefinitionNode | SchemaExtensionNode>,
-  ): {|
-    query: ?GraphQLObjectType,
-    mutation: ?GraphQLObjectType,
-    subscription: ?GraphQLObjectType,
-  |} {
-    const opTypes = {};
-    for (const node of nodes) {
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      const operationTypesNodes = node.operationTypes ?? [];
-
-      for (const operationType of operationTypesNodes) {
-        opTypes[operationType.operation] = getNamedType(operationType.type);
-      }
-    }
-
-    // Note: While this could make early assertions to get the correctly
-    // typed values below, that would throw immediately while type system
-    // validation with validateSchema() will produce more actionable results.
-    return (opTypes: any);
-  }
-
-  function getNamedType(node: NamedTypeNode): GraphQLNamedType {
-    const name = node.name.value;
-    const type = stdTypeMap[name] ?? typeMap[name];
-
-    if (type === undefined) {
-      throw new Error(`Unknown type: "${name}".`);
-    }
-    return type;
-  }
-
-  function getWrappedType(node: TypeNode): GraphQLType {
-    if (node.kind === Kind.LIST_TYPE) {
-      return new GraphQLList(getWrappedType(node.type));
-    }
-    if (node.kind === Kind.NON_NULL_TYPE) {
-      return new GraphQLNonNull(getWrappedType(node.type));
-    }
-    return getNamedType(node);
-  }
-
-  function buildDirective(node: DirectiveDefinitionNode): GraphQLDirective {
-    const locations = node.locations.map(
-      ({ value }) => ((value: any): DirectiveLocationEnum),
-    );
-
-    return new GraphQLDirective({
-      name: node.name.value,
-      description: getDescription(node, options),
-      locations,
-      isRepeatable: node.repeatable,
-      args: buildArgumentMap(node.arguments),
-      astNode: node,
-    });
-  }
-
-  function buildFieldMap(
-    nodes: $ReadOnlyArray<
-      | InterfaceTypeDefinitionNode
-      | InterfaceTypeExtensionNode
-      | ObjectTypeDefinitionNode
-      | ObjectTypeExtensionNode,
-    >,
-  ): GraphQLFieldConfigMap<mixed, mixed> {
-    const fieldConfigMap = Object.create(null);
-    for (const node of nodes) {
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      const nodeFields = node.fields ?? [];
-
-      for (const field of nodeFields) {
-        fieldConfigMap[field.name.value] = {
-          // Note: While this could make assertions to get the correctly typed
-          // value, that would throw immediately while type system validation
-          // with validateSchema() will produce more actionable results.
-          type: (getWrappedType(field.type): any),
-          description: getDescription(field, options),
-          args: buildArgumentMap(field.arguments),
-          deprecationReason: getDeprecationReason(field),
-          astNode: field,
-        };
-      }
-    }
-    return fieldConfigMap;
-  }
-
-  function buildArgumentMap(
-    args: ?$ReadOnlyArray<InputValueDefinitionNode>,
-  ): GraphQLFieldConfigArgumentMap {
-    // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-    const argsNodes = args ?? [];
-
-    const argConfigMap = Object.create(null);
-    for (const arg of argsNodes) {
-      // Note: While this could make assertions to get the correctly typed
-      // value, that would throw immediately while type system validation
-      // with validateSchema() will produce more actionable results.
-      const type: any = getWrappedType(arg.type);
-
-      argConfigMap[arg.name.value] = {
-        type,
-        description: getDescription(arg, options),
-        defaultValue: valueFromAST(arg.defaultValue, type),
-        deprecationReason: getDeprecationReason(arg),
-        astNode: arg,
-      };
-    }
-    return argConfigMap;
-  }
-
-  function buildInputFieldMap(
-    nodes: $ReadOnlyArray<
-      InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode,
-    >,
-  ): GraphQLInputFieldConfigMap {
-    const inputFieldMap = Object.create(null);
-    for (const node of nodes) {
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      const fieldsNodes = node.fields ?? [];
-
-      for (const field of fieldsNodes) {
-        // Note: While this could make assertions to get the correctly typed
-        // value, that would throw immediately while type system validation
-        // with validateSchema() will produce more actionable results.
-        const type: any = getWrappedType(field.type);
-
-        inputFieldMap[field.name.value] = {
-          type,
-          description: getDescription(field, options),
-          defaultValue: valueFromAST(field.defaultValue, type),
-          deprecationReason: getDeprecationReason(field),
-          astNode: field,
-        };
-      }
-    }
-    return inputFieldMap;
-  }
-
-  function buildEnumValueMap(
-    nodes: $ReadOnlyArray<EnumTypeDefinitionNode | EnumTypeExtensionNode>,
-  ): GraphQLEnumValueConfigMap {
-    const enumValueMap = Object.create(null);
-    for (const node of nodes) {
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      const valuesNodes = node.values ?? [];
-
-      for (const value of valuesNodes) {
-        enumValueMap[value.name.value] = {
-          description: getDescription(value, options),
-          deprecationReason: getDeprecationReason(value),
-          astNode: value,
-        };
-      }
-    }
-    return enumValueMap;
-  }
-
-  function buildInterfaces(
-    nodes: $ReadOnlyArray<
-      | InterfaceTypeDefinitionNode
-      | InterfaceTypeExtensionNode
-      | ObjectTypeDefinitionNode
-      | ObjectTypeExtensionNode,
-    >,
-  ): Array<GraphQLInterfaceType> {
-    const interfaces = [];
-    for (const node of nodes) {
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      const interfacesNodes = node.interfaces ?? [];
-
-      for (const type of interfacesNodes) {
-        // Note: While this could make assertions to get the correctly typed
-        // values below, that would throw immediately while type system
-        // validation with validateSchema() will produce more actionable
-        // results.
-        interfaces.push((getNamedType(type): any));
-      }
-    }
-    return interfaces;
-  }
-
-  function buildUnionTypes(
-    nodes: $ReadOnlyArray<UnionTypeDefinitionNode | UnionTypeExtensionNode>,
-  ): Array<GraphQLObjectType> {
-    const types = [];
-    for (const node of nodes) {
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      const typeNodes = node.types ?? [];
-
-      for (const type of typeNodes) {
-        // Note: While this could make assertions to get the correctly typed
-        // values below, that would throw immediately while type system
-        // validation with validateSchema() will produce more actionable
-        // results.
-        types.push((getNamedType(type): any));
-      }
-    }
-    return types;
-  }
-
-  function buildType(astNode: TypeDefinitionNode): GraphQLNamedType {
-    const name = astNode.name.value;
-    const description = getDescription(astNode, options);
-    const extensionNodes = typeExtensionsMap[name] ?? [];
-
-    switch (astNode.kind) {
-      case Kind.OBJECT_TYPE_DEFINITION: {
-        const extensionASTNodes = (extensionNodes: any);
-        const allNodes = [astNode, ...extensionASTNodes];
-
-        return new GraphQLObjectType({
-          name,
-          description,
-          interfaces: () => buildInterfaces(allNodes),
-          fields: () => buildFieldMap(allNodes),
-          astNode,
-          extensionASTNodes,
-        });
-      }
-      case Kind.INTERFACE_TYPE_DEFINITION: {
-        const extensionASTNodes = (extensionNodes: any);
-        const allNodes = [astNode, ...extensionASTNodes];
-
-        return new GraphQLInterfaceType({
-          name,
-          description,
-          interfaces: () => buildInterfaces(allNodes),
-          fields: () => buildFieldMap(allNodes),
-          astNode,
-          extensionASTNodes,
-        });
-      }
-      case Kind.ENUM_TYPE_DEFINITION: {
-        const extensionASTNodes = (extensionNodes: any);
-        const allNodes = [astNode, ...extensionASTNodes];
-
-        return new GraphQLEnumType({
-          name,
-          description,
-          values: buildEnumValueMap(allNodes),
-          astNode,
-          extensionASTNodes,
-        });
-      }
-      case Kind.UNION_TYPE_DEFINITION: {
-        const extensionASTNodes = (extensionNodes: any);
-        const allNodes = [astNode, ...extensionASTNodes];
-
-        return new GraphQLUnionType({
-          name,
-          description,
-          types: () => buildUnionTypes(allNodes),
-          astNode,
-          extensionASTNodes,
-        });
-      }
-      case Kind.SCALAR_TYPE_DEFINITION: {
-        const extensionASTNodes = (extensionNodes: any);
-
-        return new GraphQLScalarType({
-          name,
-          description,
-          specifiedByUrl: getSpecifiedByUrl(astNode),
-          astNode,
-          extensionASTNodes,
-        });
-      }
-      case Kind.INPUT_OBJECT_TYPE_DEFINITION: {
-        const extensionASTNodes = (extensionNodes: any);
-        const allNodes = [astNode, ...extensionASTNodes];
-
-        return new GraphQLInputObjectType({
-          name,
-          description,
-          fields: () => buildInputFieldMap(allNodes),
-          astNode,
-          extensionASTNodes,
-        });
-      }
-    }
-
-    // istanbul ignore next (Not reachable. All possible type definition nodes have been considered)
-    invariant(
-      false,
-      'Unexpected type definition node: ' + inspect((astNode: empty)),
-    );
-  }
-}
-
-const stdTypeMap = keyMap(
-  specifiedScalarTypes.concat(introspectionTypes),
-  (type) => type.name,
-);
-
-/**
- * Given a field or enum value node, returns the string value for the
- * deprecation reason.
- */
-function getDeprecationReason(
-  node:
-    | EnumValueDefinitionNode
-    | FieldDefinitionNode
-    | InputValueDefinitionNode,
-): ?string {
-  const deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node);
-  return (deprecated?.reason: any);
-}
-
-/**
- * Given a scalar node, returns the string value for the specifiedByUrl.
- */
-function getSpecifiedByUrl(
-  node: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,
-): ?string {
-  const specifiedBy = getDirectiveValues(GraphQLSpecifiedByDirective, node);
-  return (specifiedBy?.url: any);
-}
-
-/**
- * Given an ast node, returns its string description.
- * @deprecated: provided to ease adoption and will be removed in v16.
- *
- * Accepts options as a second argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-export function getDescription(
-  node: { +description?: StringValueNode, +loc?: Location, ... },
-  options: ?{ commentDescriptions?: boolean, ... },
-): void | string {
-  if (node.description) {
-    return node.description.value;
-  }
-  if (options?.commentDescriptions === true) {
-    const rawValue = getLeadingCommentBlock(node);
-    if (rawValue !== undefined) {
-      return dedentBlockStringValue('\n' + rawValue);
-    }
-  }
-}
-
-function getLeadingCommentBlock(node): void | string {
-  const loc = node.loc;
-  if (!loc) {
-    return;
-  }
-  const comments = [];
-  let token = loc.startToken.prev;
-  while (
-    token != null &&
-    token.kind === TokenKind.COMMENT &&
-    token.next &&
-    token.prev &&
-    token.line + 1 === token.next.line &&
-    token.line !== token.prev.line
-  ) {
-    const value = String(token.value);
-    comments.push(value);
-    token = token.prev;
-  }
-  return comments.length > 0 ? comments.reverse().join('\n') : undefined;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/extendSchema.mjs b/includes/external/school/node_modules/graphql/utilities/extendSchema.mjs
deleted file mode 100644
index b6ee4c9..0000000
--- a/includes/external/school/node_modules/graphql/utilities/extendSchema.mjs
+++ /dev/null
@@ -1,689 +0,0 @@
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-import objectValues from "../polyfills/objectValues.mjs";
-import keyMap from "../jsutils/keyMap.mjs";
-import inspect from "../jsutils/inspect.mjs";
-import mapValue from "../jsutils/mapValue.mjs";
-import invariant from "../jsutils/invariant.mjs";
-import devAssert from "../jsutils/devAssert.mjs";
-import { Kind } from "../language/kinds.mjs";
-import { TokenKind } from "../language/tokenKind.mjs";
-import { dedentBlockStringValue } from "../language/blockString.mjs";
-import { isTypeDefinitionNode, isTypeExtensionNode } from "../language/predicates.mjs";
-import { assertValidSDLExtension } from "../validation/validate.mjs";
-import { getDirectiveValues } from "../execution/values.mjs";
-import { assertSchema, GraphQLSchema } from "../type/schema.mjs";
-import { specifiedScalarTypes, isSpecifiedScalarType } from "../type/scalars.mjs";
-import { introspectionTypes, isIntrospectionType } from "../type/introspection.mjs";
-import { GraphQLDirective, GraphQLDeprecatedDirective, GraphQLSpecifiedByDirective } from "../type/directives.mjs";
-import { isScalarType, isObjectType, isInterfaceType, isUnionType, isListType, isNonNullType, isEnumType, isInputObjectType, GraphQLList, GraphQLNonNull, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType } from "../type/definition.mjs";
-import { valueFromAST } from "./valueFromAST.mjs";
-
-/**
- * Produces a new schema given an existing schema and a document which may
- * contain GraphQL type extensions and definitions. The original schema will
- * remain unaltered.
- *
- * Because a schema represents a graph of references, a schema cannot be
- * extended without effectively making an entire copy. We do not know until it's
- * too late if subgraphs remain unchanged.
- *
- * This algorithm copies the provided schema, applying extensions while
- * producing the copy. The original schema remains unaltered.
- *
- * Accepts options as a third argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-export function extendSchema(schema, documentAST, options) {
-  assertSchema(schema);
-  documentAST != null && documentAST.kind === Kind.DOCUMENT || devAssert(0, 'Must provide valid Document AST.');
-
-  if ((options === null || options === void 0 ? void 0 : options.assumeValid) !== true && (options === null || options === void 0 ? void 0 : options.assumeValidSDL) !== true) {
-    assertValidSDLExtension(documentAST, schema);
-  }
-
-  var schemaConfig = schema.toConfig();
-  var extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);
-  return schemaConfig === extendedConfig ? schema : new GraphQLSchema(extendedConfig);
-}
-/**
- * @internal
- */
-
-export function extendSchemaImpl(schemaConfig, documentAST, options) {
-  var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;
-
-  // Collect the type definitions and extensions found in the document.
-  var typeDefs = [];
-  var typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can
-  // have the same name. For example, a type named "skip".
-
-  var directiveDefs = [];
-  var schemaDef; // Schema extensions are collected which may add additional operation types.
-
-  var schemaExtensions = [];
-
-  for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {
-    var def = _documentAST$definiti2[_i2];
-
-    if (def.kind === Kind.SCHEMA_DEFINITION) {
-      schemaDef = def;
-    } else if (def.kind === Kind.SCHEMA_EXTENSION) {
-      schemaExtensions.push(def);
-    } else if (isTypeDefinitionNode(def)) {
-      typeDefs.push(def);
-    } else if (isTypeExtensionNode(def)) {
-      var extendedTypeName = def.name.value;
-      var existingTypeExtensions = typeExtensionsMap[extendedTypeName];
-      typeExtensionsMap[extendedTypeName] = existingTypeExtensions ? existingTypeExtensions.concat([def]) : [def];
-    } else if (def.kind === Kind.DIRECTIVE_DEFINITION) {
-      directiveDefs.push(def);
-    }
-  } // If this document contains no new types, extensions, or directives then
-  // return the same unmodified GraphQLSchema instance.
-
-
-  if (Object.keys(typeExtensionsMap).length === 0 && typeDefs.length === 0 && directiveDefs.length === 0 && schemaExtensions.length === 0 && schemaDef == null) {
-    return schemaConfig;
-  }
-
-  var typeMap = Object.create(null);
-
-  for (var _i4 = 0, _schemaConfig$types2 = schemaConfig.types; _i4 < _schemaConfig$types2.length; _i4++) {
-    var existingType = _schemaConfig$types2[_i4];
-    typeMap[existingType.name] = extendNamedType(existingType);
-  }
-
-  for (var _i6 = 0; _i6 < typeDefs.length; _i6++) {
-    var _stdTypeMap$name;
-
-    var typeNode = typeDefs[_i6];
-    var name = typeNode.name.value;
-    typeMap[name] = (_stdTypeMap$name = stdTypeMap[name]) !== null && _stdTypeMap$name !== void 0 ? _stdTypeMap$name : buildType(typeNode);
-  }
-
-  var operationTypes = _objectSpread(_objectSpread({
-    // Get the extended root operation types.
-    query: schemaConfig.query && replaceNamedType(schemaConfig.query),
-    mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),
-    subscription: schemaConfig.subscription && replaceNamedType(schemaConfig.subscription)
-  }, schemaDef && getOperationTypes([schemaDef])), getOperationTypes(schemaExtensions)); // Then produce and return a Schema config with these types.
-
-
-  return _objectSpread(_objectSpread({
-    description: (_schemaDef = schemaDef) === null || _schemaDef === void 0 ? void 0 : (_schemaDef$descriptio = _schemaDef.description) === null || _schemaDef$descriptio === void 0 ? void 0 : _schemaDef$descriptio.value
-  }, operationTypes), {}, {
-    types: objectValues(typeMap),
-    directives: [].concat(schemaConfig.directives.map(replaceDirective), directiveDefs.map(buildDirective)),
-    extensions: undefined,
-    astNode: (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0 ? _schemaDef2 : schemaConfig.astNode,
-    extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),
-    assumeValid: (_options$assumeValid = options === null || options === void 0 ? void 0 : options.assumeValid) !== null && _options$assumeValid !== void 0 ? _options$assumeValid : false
-  }); // Below are functions used for producing this schema that have closed over
-  // this scope and have access to the schema, cache, and newly defined types.
-
-  function replaceType(type) {
-    if (isListType(type)) {
-      // $FlowFixMe[incompatible-return]
-      return new GraphQLList(replaceType(type.ofType));
-    }
-
-    if (isNonNullType(type)) {
-      // $FlowFixMe[incompatible-return]
-      return new GraphQLNonNull(replaceType(type.ofType));
-    }
-
-    return replaceNamedType(type);
-  }
-
-  function replaceNamedType(type) {
-    // Note: While this could make early assertions to get the correctly
-    // typed values, that would throw immediately while type system
-    // validation with validateSchema() will produce more actionable results.
-    return typeMap[type.name];
-  }
-
-  function replaceDirective(directive) {
-    var config = directive.toConfig();
-    return new GraphQLDirective(_objectSpread(_objectSpread({}, config), {}, {
-      args: mapValue(config.args, extendArg)
-    }));
-  }
-
-  function extendNamedType(type) {
-    if (isIntrospectionType(type) || isSpecifiedScalarType(type)) {
-      // Builtin types are not extended.
-      return type;
-    }
-
-    if (isScalarType(type)) {
-      return extendScalarType(type);
-    }
-
-    if (isObjectType(type)) {
-      return extendObjectType(type);
-    }
-
-    if (isInterfaceType(type)) {
-      return extendInterfaceType(type);
-    }
-
-    if (isUnionType(type)) {
-      return extendUnionType(type);
-    }
-
-    if (isEnumType(type)) {
-      return extendEnumType(type);
-    } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-    if (isInputObjectType(type)) {
-      return extendInputObjectType(type);
-    } // istanbul ignore next (Not reachable. All possible types have been considered)
-
-
-    false || invariant(0, 'Unexpected type: ' + inspect(type));
-  }
-
-  function extendInputObjectType(type) {
-    var _typeExtensionsMap$co;
-
-    var config = type.toConfig();
-    var extensions = (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co !== void 0 ? _typeExtensionsMap$co : [];
-    return new GraphQLInputObjectType(_objectSpread(_objectSpread({}, config), {}, {
-      fields: function fields() {
-        return _objectSpread(_objectSpread({}, mapValue(config.fields, function (field) {
-          return _objectSpread(_objectSpread({}, field), {}, {
-            type: replaceType(field.type)
-          });
-        })), buildInputFieldMap(extensions));
-      },
-      extensionASTNodes: config.extensionASTNodes.concat(extensions)
-    }));
-  }
-
-  function extendEnumType(type) {
-    var _typeExtensionsMap$ty;
-
-    var config = type.toConfig();
-    var extensions = (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null && _typeExtensionsMap$ty !== void 0 ? _typeExtensionsMap$ty : [];
-    return new GraphQLEnumType(_objectSpread(_objectSpread({}, config), {}, {
-      values: _objectSpread(_objectSpread({}, config.values), buildEnumValueMap(extensions)),
-      extensionASTNodes: config.extensionASTNodes.concat(extensions)
-    }));
-  }
-
-  function extendScalarType(type) {
-    var _typeExtensionsMap$co2;
-
-    var config = type.toConfig();
-    var extensions = (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co2 !== void 0 ? _typeExtensionsMap$co2 : [];
-    var specifiedByUrl = config.specifiedByUrl;
-
-    for (var _i8 = 0; _i8 < extensions.length; _i8++) {
-      var _getSpecifiedByUrl;
-
-      var extensionNode = extensions[_i8];
-      specifiedByUrl = (_getSpecifiedByUrl = getSpecifiedByUrl(extensionNode)) !== null && _getSpecifiedByUrl !== void 0 ? _getSpecifiedByUrl : specifiedByUrl;
-    }
-
-    return new GraphQLScalarType(_objectSpread(_objectSpread({}, config), {}, {
-      specifiedByUrl: specifiedByUrl,
-      extensionASTNodes: config.extensionASTNodes.concat(extensions)
-    }));
-  }
-
-  function extendObjectType(type) {
-    var _typeExtensionsMap$co3;
-
-    var config = type.toConfig();
-    var extensions = (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co3 !== void 0 ? _typeExtensionsMap$co3 : [];
-    return new GraphQLObjectType(_objectSpread(_objectSpread({}, config), {}, {
-      interfaces: function interfaces() {
-        return [].concat(type.getInterfaces().map(replaceNamedType), buildInterfaces(extensions));
-      },
-      fields: function fields() {
-        return _objectSpread(_objectSpread({}, mapValue(config.fields, extendField)), buildFieldMap(extensions));
-      },
-      extensionASTNodes: config.extensionASTNodes.concat(extensions)
-    }));
-  }
-
-  function extendInterfaceType(type) {
-    var _typeExtensionsMap$co4;
-
-    var config = type.toConfig();
-    var extensions = (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co4 !== void 0 ? _typeExtensionsMap$co4 : [];
-    return new GraphQLInterfaceType(_objectSpread(_objectSpread({}, config), {}, {
-      interfaces: function interfaces() {
-        return [].concat(type.getInterfaces().map(replaceNamedType), buildInterfaces(extensions));
-      },
-      fields: function fields() {
-        return _objectSpread(_objectSpread({}, mapValue(config.fields, extendField)), buildFieldMap(extensions));
-      },
-      extensionASTNodes: config.extensionASTNodes.concat(extensions)
-    }));
-  }
-
-  function extendUnionType(type) {
-    var _typeExtensionsMap$co5;
-
-    var config = type.toConfig();
-    var extensions = (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co5 !== void 0 ? _typeExtensionsMap$co5 : [];
-    return new GraphQLUnionType(_objectSpread(_objectSpread({}, config), {}, {
-      types: function types() {
-        return [].concat(type.getTypes().map(replaceNamedType), buildUnionTypes(extensions));
-      },
-      extensionASTNodes: config.extensionASTNodes.concat(extensions)
-    }));
-  }
-
-  function extendField(field) {
-    return _objectSpread(_objectSpread({}, field), {}, {
-      type: replaceType(field.type),
-      // $FlowFixMe[incompatible-call]
-      args: mapValue(field.args, extendArg)
-    });
-  }
-
-  function extendArg(arg) {
-    return _objectSpread(_objectSpread({}, arg), {}, {
-      type: replaceType(arg.type)
-    });
-  }
-
-  function getOperationTypes(nodes) {
-    var opTypes = {};
-
-    for (var _i10 = 0; _i10 < nodes.length; _i10++) {
-      var _node$operationTypes;
-
-      var node = nodes[_i10];
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      var operationTypesNodes = (_node$operationTypes = node.operationTypes) !== null && _node$operationTypes !== void 0 ? _node$operationTypes : [];
-
-      for (var _i12 = 0; _i12 < operationTypesNodes.length; _i12++) {
-        var operationType = operationTypesNodes[_i12];
-        opTypes[operationType.operation] = getNamedType(operationType.type);
-      }
-    } // Note: While this could make early assertions to get the correctly
-    // typed values below, that would throw immediately while type system
-    // validation with validateSchema() will produce more actionable results.
-
-
-    return opTypes;
-  }
-
-  function getNamedType(node) {
-    var _stdTypeMap$name2;
-
-    var name = node.name.value;
-    var type = (_stdTypeMap$name2 = stdTypeMap[name]) !== null && _stdTypeMap$name2 !== void 0 ? _stdTypeMap$name2 : typeMap[name];
-
-    if (type === undefined) {
-      throw new Error("Unknown type: \"".concat(name, "\"."));
-    }
-
-    return type;
-  }
-
-  function getWrappedType(node) {
-    if (node.kind === Kind.LIST_TYPE) {
-      return new GraphQLList(getWrappedType(node.type));
-    }
-
-    if (node.kind === Kind.NON_NULL_TYPE) {
-      return new GraphQLNonNull(getWrappedType(node.type));
-    }
-
-    return getNamedType(node);
-  }
-
-  function buildDirective(node) {
-    var locations = node.locations.map(function (_ref) {
-      var value = _ref.value;
-      return value;
-    });
-    return new GraphQLDirective({
-      name: node.name.value,
-      description: getDescription(node, options),
-      locations: locations,
-      isRepeatable: node.repeatable,
-      args: buildArgumentMap(node.arguments),
-      astNode: node
-    });
-  }
-
-  function buildFieldMap(nodes) {
-    var fieldConfigMap = Object.create(null);
-
-    for (var _i14 = 0; _i14 < nodes.length; _i14++) {
-      var _node$fields;
-
-      var node = nodes[_i14];
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      var nodeFields = (_node$fields = node.fields) !== null && _node$fields !== void 0 ? _node$fields : [];
-
-      for (var _i16 = 0; _i16 < nodeFields.length; _i16++) {
-        var field = nodeFields[_i16];
-        fieldConfigMap[field.name.value] = {
-          // Note: While this could make assertions to get the correctly typed
-          // value, that would throw immediately while type system validation
-          // with validateSchema() will produce more actionable results.
-          type: getWrappedType(field.type),
-          description: getDescription(field, options),
-          args: buildArgumentMap(field.arguments),
-          deprecationReason: getDeprecationReason(field),
-          astNode: field
-        };
-      }
-    }
-
-    return fieldConfigMap;
-  }
-
-  function buildArgumentMap(args) {
-    // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-    var argsNodes = args !== null && args !== void 0 ? args : [];
-    var argConfigMap = Object.create(null);
-
-    for (var _i18 = 0; _i18 < argsNodes.length; _i18++) {
-      var arg = argsNodes[_i18];
-      // Note: While this could make assertions to get the correctly typed
-      // value, that would throw immediately while type system validation
-      // with validateSchema() will produce more actionable results.
-      var type = getWrappedType(arg.type);
-      argConfigMap[arg.name.value] = {
-        type: type,
-        description: getDescription(arg, options),
-        defaultValue: valueFromAST(arg.defaultValue, type),
-        deprecationReason: getDeprecationReason(arg),
-        astNode: arg
-      };
-    }
-
-    return argConfigMap;
-  }
-
-  function buildInputFieldMap(nodes) {
-    var inputFieldMap = Object.create(null);
-
-    for (var _i20 = 0; _i20 < nodes.length; _i20++) {
-      var _node$fields2;
-
-      var node = nodes[_i20];
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      var fieldsNodes = (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0 ? _node$fields2 : [];
-
-      for (var _i22 = 0; _i22 < fieldsNodes.length; _i22++) {
-        var field = fieldsNodes[_i22];
-        // Note: While this could make assertions to get the correctly typed
-        // value, that would throw immediately while type system validation
-        // with validateSchema() will produce more actionable results.
-        var type = getWrappedType(field.type);
-        inputFieldMap[field.name.value] = {
-          type: type,
-          description: getDescription(field, options),
-          defaultValue: valueFromAST(field.defaultValue, type),
-          deprecationReason: getDeprecationReason(field),
-          astNode: field
-        };
-      }
-    }
-
-    return inputFieldMap;
-  }
-
-  function buildEnumValueMap(nodes) {
-    var enumValueMap = Object.create(null);
-
-    for (var _i24 = 0; _i24 < nodes.length; _i24++) {
-      var _node$values;
-
-      var node = nodes[_i24];
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      var valuesNodes = (_node$values = node.values) !== null && _node$values !== void 0 ? _node$values : [];
-
-      for (var _i26 = 0; _i26 < valuesNodes.length; _i26++) {
-        var value = valuesNodes[_i26];
-        enumValueMap[value.name.value] = {
-          description: getDescription(value, options),
-          deprecationReason: getDeprecationReason(value),
-          astNode: value
-        };
-      }
-    }
-
-    return enumValueMap;
-  }
-
-  function buildInterfaces(nodes) {
-    var interfaces = [];
-
-    for (var _i28 = 0; _i28 < nodes.length; _i28++) {
-      var _node$interfaces;
-
-      var node = nodes[_i28];
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      var interfacesNodes = (_node$interfaces = node.interfaces) !== null && _node$interfaces !== void 0 ? _node$interfaces : [];
-
-      for (var _i30 = 0; _i30 < interfacesNodes.length; _i30++) {
-        var type = interfacesNodes[_i30];
-        // Note: While this could make assertions to get the correctly typed
-        // values below, that would throw immediately while type system
-        // validation with validateSchema() will produce more actionable
-        // results.
-        interfaces.push(getNamedType(type));
-      }
-    }
-
-    return interfaces;
-  }
-
-  function buildUnionTypes(nodes) {
-    var types = [];
-
-    for (var _i32 = 0; _i32 < nodes.length; _i32++) {
-      var _node$types;
-
-      var node = nodes[_i32];
-      // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
-      var typeNodes = (_node$types = node.types) !== null && _node$types !== void 0 ? _node$types : [];
-
-      for (var _i34 = 0; _i34 < typeNodes.length; _i34++) {
-        var type = typeNodes[_i34];
-        // Note: While this could make assertions to get the correctly typed
-        // values below, that would throw immediately while type system
-        // validation with validateSchema() will produce more actionable
-        // results.
-        types.push(getNamedType(type));
-      }
-    }
-
-    return types;
-  }
-
-  function buildType(astNode) {
-    var _typeExtensionsMap$na;
-
-    var name = astNode.name.value;
-    var description = getDescription(astNode, options);
-    var extensionNodes = (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null && _typeExtensionsMap$na !== void 0 ? _typeExtensionsMap$na : [];
-
-    switch (astNode.kind) {
-      case Kind.OBJECT_TYPE_DEFINITION:
-        {
-          var extensionASTNodes = extensionNodes;
-          var allNodes = [astNode].concat(extensionASTNodes);
-          return new GraphQLObjectType({
-            name: name,
-            description: description,
-            interfaces: function interfaces() {
-              return buildInterfaces(allNodes);
-            },
-            fields: function fields() {
-              return buildFieldMap(allNodes);
-            },
-            astNode: astNode,
-            extensionASTNodes: extensionASTNodes
-          });
-        }
-
-      case Kind.INTERFACE_TYPE_DEFINITION:
-        {
-          var _extensionASTNodes = extensionNodes;
-
-          var _allNodes = [astNode].concat(_extensionASTNodes);
-
-          return new GraphQLInterfaceType({
-            name: name,
-            description: description,
-            interfaces: function interfaces() {
-              return buildInterfaces(_allNodes);
-            },
-            fields: function fields() {
-              return buildFieldMap(_allNodes);
-            },
-            astNode: astNode,
-            extensionASTNodes: _extensionASTNodes
-          });
-        }
-
-      case Kind.ENUM_TYPE_DEFINITION:
-        {
-          var _extensionASTNodes2 = extensionNodes;
-
-          var _allNodes2 = [astNode].concat(_extensionASTNodes2);
-
-          return new GraphQLEnumType({
-            name: name,
-            description: description,
-            values: buildEnumValueMap(_allNodes2),
-            astNode: astNode,
-            extensionASTNodes: _extensionASTNodes2
-          });
-        }
-
-      case Kind.UNION_TYPE_DEFINITION:
-        {
-          var _extensionASTNodes3 = extensionNodes;
-
-          var _allNodes3 = [astNode].concat(_extensionASTNodes3);
-
-          return new GraphQLUnionType({
-            name: name,
-            description: description,
-            types: function types() {
-              return buildUnionTypes(_allNodes3);
-            },
-            astNode: astNode,
-            extensionASTNodes: _extensionASTNodes3
-          });
-        }
-
-      case Kind.SCALAR_TYPE_DEFINITION:
-        {
-          var _extensionASTNodes4 = extensionNodes;
-          return new GraphQLScalarType({
-            name: name,
-            description: description,
-            specifiedByUrl: getSpecifiedByUrl(astNode),
-            astNode: astNode,
-            extensionASTNodes: _extensionASTNodes4
-          });
-        }
-
-      case Kind.INPUT_OBJECT_TYPE_DEFINITION:
-        {
-          var _extensionASTNodes5 = extensionNodes;
-
-          var _allNodes4 = [astNode].concat(_extensionASTNodes5);
-
-          return new GraphQLInputObjectType({
-            name: name,
-            description: description,
-            fields: function fields() {
-              return buildInputFieldMap(_allNodes4);
-            },
-            astNode: astNode,
-            extensionASTNodes: _extensionASTNodes5
-          });
-        }
-    } // istanbul ignore next (Not reachable. All possible type definition nodes have been considered)
-
-
-    false || invariant(0, 'Unexpected type definition node: ' + inspect(astNode));
-  }
-}
-var stdTypeMap = keyMap(specifiedScalarTypes.concat(introspectionTypes), function (type) {
-  return type.name;
-});
-/**
- * Given a field or enum value node, returns the string value for the
- * deprecation reason.
- */
-
-function getDeprecationReason(node) {
-  var deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node);
-  return deprecated === null || deprecated === void 0 ? void 0 : deprecated.reason;
-}
-/**
- * Given a scalar node, returns the string value for the specifiedByUrl.
- */
-
-
-function getSpecifiedByUrl(node) {
-  var specifiedBy = getDirectiveValues(GraphQLSpecifiedByDirective, node);
-  return specifiedBy === null || specifiedBy === void 0 ? void 0 : specifiedBy.url;
-}
-/**
- * Given an ast node, returns its string description.
- * @deprecated: provided to ease adoption and will be removed in v16.
- *
- * Accepts options as a second argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-
-
-export function getDescription(node, options) {
-  if (node.description) {
-    return node.description.value;
-  }
-
-  if ((options === null || options === void 0 ? void 0 : options.commentDescriptions) === true) {
-    var rawValue = getLeadingCommentBlock(node);
-
-    if (rawValue !== undefined) {
-      return dedentBlockStringValue('\n' + rawValue);
-    }
-  }
-}
-
-function getLeadingCommentBlock(node) {
-  var loc = node.loc;
-
-  if (!loc) {
-    return;
-  }
-
-  var comments = [];
-  var token = loc.startToken.prev;
-
-  while (token != null && token.kind === TokenKind.COMMENT && token.next && token.prev && token.line + 1 === token.next.line && token.line !== token.prev.line) {
-    var value = String(token.value);
-    comments.push(value);
-    token = token.prev;
-  }
-
-  return comments.length > 0 ? comments.reverse().join('\n') : undefined;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/findBreakingChanges.d.ts b/includes/external/school/node_modules/graphql/utilities/findBreakingChanges.d.ts
deleted file mode 100644
index df35805..0000000
--- a/includes/external/school/node_modules/graphql/utilities/findBreakingChanges.d.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import { GraphQLSchema } from '../type/schema';
-
-export const BreakingChangeType: {
-  TYPE_REMOVED: 'TYPE_REMOVED';
-  TYPE_CHANGED_KIND: 'TYPE_CHANGED_KIND';
-  TYPE_REMOVED_FROM_UNION: 'TYPE_REMOVED_FROM_UNION';
-  VALUE_REMOVED_FROM_ENUM: 'VALUE_REMOVED_FROM_ENUM';
-  REQUIRED_INPUT_FIELD_ADDED: 'REQUIRED_INPUT_FIELD_ADDED';
-  IMPLEMENTED_INTERFACE_REMOVED: 'IMPLEMENTED_INTERFACE_REMOVED';
-  FIELD_REMOVED: 'FIELD_REMOVED';
-  FIELD_CHANGED_KIND: 'FIELD_CHANGED_KIND';
-  REQUIRED_ARG_ADDED: 'REQUIRED_ARG_ADDED';
-  ARG_REMOVED: 'ARG_REMOVED';
-  ARG_CHANGED_KIND: 'ARG_CHANGED_KIND';
-  DIRECTIVE_REMOVED: 'DIRECTIVE_REMOVED';
-  DIRECTIVE_ARG_REMOVED: 'DIRECTIVE_ARG_REMOVED';
-  REQUIRED_DIRECTIVE_ARG_ADDED: 'REQUIRED_DIRECTIVE_ARG_ADDED';
-  DIRECTIVE_REPEATABLE_REMOVED: 'DIRECTIVE_REPEATABLE_REMOVED';
-  DIRECTIVE_LOCATION_REMOVED: 'DIRECTIVE_LOCATION_REMOVED';
-};
-
-export const DangerousChangeType: {
-  VALUE_ADDED_TO_ENUM: 'VALUE_ADDED_TO_ENUM';
-  TYPE_ADDED_TO_UNION: 'TYPE_ADDED_TO_UNION';
-  OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED';
-  OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED';
-  IMPLEMENTED_INTERFACE_ADDED: 'IMPLEMENTED_INTERFACE_ADDED';
-  ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE';
-};
-
-export interface BreakingChange {
-  type: keyof typeof BreakingChangeType;
-  description: string;
-}
-
-export interface DangerousChange {
-  type: keyof typeof DangerousChangeType;
-  description: string;
-}
-
-/**
- * Given two schemas, returns an Array containing descriptions of all the types
- * of breaking changes covered by the other functions down below.
- */
-export function findBreakingChanges(
-  oldSchema: GraphQLSchema,
-  newSchema: GraphQLSchema,
-): Array<BreakingChange>;
-
-/**
- * Given two schemas, returns an Array containing descriptions of all the types
- * of potentially dangerous changes covered by the other functions down below.
- */
-export function findDangerousChanges(
-  oldSchema: GraphQLSchema,
-  newSchema: GraphQLSchema,
-): Array<DangerousChange>;
diff --git a/includes/external/school/node_modules/graphql/utilities/findBreakingChanges.js b/includes/external/school/node_modules/graphql/utilities/findBreakingChanges.js
deleted file mode 100644
index 699c88f..0000000
--- a/includes/external/school/node_modules/graphql/utilities/findBreakingChanges.js
+++ /dev/null
@@ -1,522 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.findBreakingChanges = findBreakingChanges;
-exports.findDangerousChanges = findDangerousChanges;
-exports.DangerousChangeType = exports.BreakingChangeType = void 0;
-
-var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
-
-var _keyMap = _interopRequireDefault(require("../jsutils/keyMap.js"));
-
-var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
-
-var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
-
-var _naturalCompare = _interopRequireDefault(require("../jsutils/naturalCompare.js"));
-
-var _printer = require("../language/printer.js");
-
-var _visitor = require("../language/visitor.js");
-
-var _scalars = require("../type/scalars.js");
-
-var _definition = require("../type/definition.js");
-
-var _astFromValue = require("./astFromValue.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var BreakingChangeType = Object.freeze({
-  TYPE_REMOVED: 'TYPE_REMOVED',
-  TYPE_CHANGED_KIND: 'TYPE_CHANGED_KIND',
-  TYPE_REMOVED_FROM_UNION: 'TYPE_REMOVED_FROM_UNION',
-  VALUE_REMOVED_FROM_ENUM: 'VALUE_REMOVED_FROM_ENUM',
-  REQUIRED_INPUT_FIELD_ADDED: 'REQUIRED_INPUT_FIELD_ADDED',
-  IMPLEMENTED_INTERFACE_REMOVED: 'IMPLEMENTED_INTERFACE_REMOVED',
-  FIELD_REMOVED: 'FIELD_REMOVED',
-  FIELD_CHANGED_KIND: 'FIELD_CHANGED_KIND',
-  REQUIRED_ARG_ADDED: 'REQUIRED_ARG_ADDED',
-  ARG_REMOVED: 'ARG_REMOVED',
-  ARG_CHANGED_KIND: 'ARG_CHANGED_KIND',
-  DIRECTIVE_REMOVED: 'DIRECTIVE_REMOVED',
-  DIRECTIVE_ARG_REMOVED: 'DIRECTIVE_ARG_REMOVED',
-  REQUIRED_DIRECTIVE_ARG_ADDED: 'REQUIRED_DIRECTIVE_ARG_ADDED',
-  DIRECTIVE_REPEATABLE_REMOVED: 'DIRECTIVE_REPEATABLE_REMOVED',
-  DIRECTIVE_LOCATION_REMOVED: 'DIRECTIVE_LOCATION_REMOVED'
-});
-exports.BreakingChangeType = BreakingChangeType;
-var DangerousChangeType = Object.freeze({
-  VALUE_ADDED_TO_ENUM: 'VALUE_ADDED_TO_ENUM',
-  TYPE_ADDED_TO_UNION: 'TYPE_ADDED_TO_UNION',
-  OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED',
-  OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED',
-  IMPLEMENTED_INTERFACE_ADDED: 'IMPLEMENTED_INTERFACE_ADDED',
-  ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE'
-});
-exports.DangerousChangeType = DangerousChangeType;
-
-/**
- * Given two schemas, returns an Array containing descriptions of all the types
- * of breaking changes covered by the other functions down below.
- */
-function findBreakingChanges(oldSchema, newSchema) {
-  var breakingChanges = findSchemaChanges(oldSchema, newSchema).filter(function (change) {
-    return change.type in BreakingChangeType;
-  });
-  return breakingChanges;
-}
-/**
- * Given two schemas, returns an Array containing descriptions of all the types
- * of potentially dangerous changes covered by the other functions down below.
- */
-
-
-function findDangerousChanges(oldSchema, newSchema) {
-  var dangerousChanges = findSchemaChanges(oldSchema, newSchema).filter(function (change) {
-    return change.type in DangerousChangeType;
-  });
-  return dangerousChanges;
-}
-
-function findSchemaChanges(oldSchema, newSchema) {
-  return [].concat(findTypeChanges(oldSchema, newSchema), findDirectiveChanges(oldSchema, newSchema));
-}
-
-function findDirectiveChanges(oldSchema, newSchema) {
-  var schemaChanges = [];
-  var directivesDiff = diff(oldSchema.getDirectives(), newSchema.getDirectives());
-
-  for (var _i2 = 0, _directivesDiff$remov2 = directivesDiff.removed; _i2 < _directivesDiff$remov2.length; _i2++) {
-    var oldDirective = _directivesDiff$remov2[_i2];
-    schemaChanges.push({
-      type: BreakingChangeType.DIRECTIVE_REMOVED,
-      description: "".concat(oldDirective.name, " was removed.")
-    });
-  }
-
-  for (var _i4 = 0, _directivesDiff$persi2 = directivesDiff.persisted; _i4 < _directivesDiff$persi2.length; _i4++) {
-    var _ref2 = _directivesDiff$persi2[_i4];
-    var _oldDirective = _ref2[0];
-    var newDirective = _ref2[1];
-    var argsDiff = diff(_oldDirective.args, newDirective.args);
-
-    for (var _i6 = 0, _argsDiff$added2 = argsDiff.added; _i6 < _argsDiff$added2.length; _i6++) {
-      var newArg = _argsDiff$added2[_i6];
-
-      if ((0, _definition.isRequiredArgument)(newArg)) {
-        schemaChanges.push({
-          type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,
-          description: "A required arg ".concat(newArg.name, " on directive ").concat(_oldDirective.name, " was added.")
-        });
-      }
-    }
-
-    for (var _i8 = 0, _argsDiff$removed2 = argsDiff.removed; _i8 < _argsDiff$removed2.length; _i8++) {
-      var oldArg = _argsDiff$removed2[_i8];
-      schemaChanges.push({
-        type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,
-        description: "".concat(oldArg.name, " was removed from ").concat(_oldDirective.name, ".")
-      });
-    }
-
-    if (_oldDirective.isRepeatable && !newDirective.isRepeatable) {
-      schemaChanges.push({
-        type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED,
-        description: "Repeatable flag was removed from ".concat(_oldDirective.name, ".")
-      });
-    }
-
-    for (var _i10 = 0, _oldDirective$locatio2 = _oldDirective.locations; _i10 < _oldDirective$locatio2.length; _i10++) {
-      var location = _oldDirective$locatio2[_i10];
-
-      if (newDirective.locations.indexOf(location) === -1) {
-        schemaChanges.push({
-          type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,
-          description: "".concat(location, " was removed from ").concat(_oldDirective.name, ".")
-        });
-      }
-    }
-  }
-
-  return schemaChanges;
-}
-
-function findTypeChanges(oldSchema, newSchema) {
-  var schemaChanges = [];
-  var typesDiff = diff((0, _objectValues.default)(oldSchema.getTypeMap()), (0, _objectValues.default)(newSchema.getTypeMap()));
-
-  for (var _i12 = 0, _typesDiff$removed2 = typesDiff.removed; _i12 < _typesDiff$removed2.length; _i12++) {
-    var oldType = _typesDiff$removed2[_i12];
-    schemaChanges.push({
-      type: BreakingChangeType.TYPE_REMOVED,
-      description: (0, _scalars.isSpecifiedScalarType)(oldType) ? "Standard scalar ".concat(oldType.name, " was removed because it is not referenced anymore.") : "".concat(oldType.name, " was removed.")
-    });
-  }
-
-  for (var _i14 = 0, _typesDiff$persisted2 = typesDiff.persisted; _i14 < _typesDiff$persisted2.length; _i14++) {
-    var _ref4 = _typesDiff$persisted2[_i14];
-    var _oldType = _ref4[0];
-    var newType = _ref4[1];
-
-    if ((0, _definition.isEnumType)(_oldType) && (0, _definition.isEnumType)(newType)) {
-      schemaChanges.push.apply(schemaChanges, findEnumTypeChanges(_oldType, newType));
-    } else if ((0, _definition.isUnionType)(_oldType) && (0, _definition.isUnionType)(newType)) {
-      schemaChanges.push.apply(schemaChanges, findUnionTypeChanges(_oldType, newType));
-    } else if ((0, _definition.isInputObjectType)(_oldType) && (0, _definition.isInputObjectType)(newType)) {
-      schemaChanges.push.apply(schemaChanges, findInputObjectTypeChanges(_oldType, newType));
-    } else if ((0, _definition.isObjectType)(_oldType) && (0, _definition.isObjectType)(newType)) {
-      schemaChanges.push.apply(schemaChanges, findFieldChanges(_oldType, newType).concat(findImplementedInterfacesChanges(_oldType, newType)));
-    } else if ((0, _definition.isInterfaceType)(_oldType) && (0, _definition.isInterfaceType)(newType)) {
-      schemaChanges.push.apply(schemaChanges, findFieldChanges(_oldType, newType).concat(findImplementedInterfacesChanges(_oldType, newType)));
-    } else if (_oldType.constructor !== newType.constructor) {
-      schemaChanges.push({
-        type: BreakingChangeType.TYPE_CHANGED_KIND,
-        description: "".concat(_oldType.name, " changed from ") + "".concat(typeKindName(_oldType), " to ").concat(typeKindName(newType), ".")
-      });
-    }
-  }
-
-  return schemaChanges;
-}
-
-function findInputObjectTypeChanges(oldType, newType) {
-  var schemaChanges = [];
-  var fieldsDiff = diff((0, _objectValues.default)(oldType.getFields()), (0, _objectValues.default)(newType.getFields()));
-
-  for (var _i16 = 0, _fieldsDiff$added2 = fieldsDiff.added; _i16 < _fieldsDiff$added2.length; _i16++) {
-    var newField = _fieldsDiff$added2[_i16];
-
-    if ((0, _definition.isRequiredInputField)(newField)) {
-      schemaChanges.push({
-        type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,
-        description: "A required field ".concat(newField.name, " on input type ").concat(oldType.name, " was added.")
-      });
-    } else {
-      schemaChanges.push({
-        type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,
-        description: "An optional field ".concat(newField.name, " on input type ").concat(oldType.name, " was added.")
-      });
-    }
-  }
-
-  for (var _i18 = 0, _fieldsDiff$removed2 = fieldsDiff.removed; _i18 < _fieldsDiff$removed2.length; _i18++) {
-    var oldField = _fieldsDiff$removed2[_i18];
-    schemaChanges.push({
-      type: BreakingChangeType.FIELD_REMOVED,
-      description: "".concat(oldType.name, ".").concat(oldField.name, " was removed.")
-    });
-  }
-
-  for (var _i20 = 0, _fieldsDiff$persisted2 = fieldsDiff.persisted; _i20 < _fieldsDiff$persisted2.length; _i20++) {
-    var _ref6 = _fieldsDiff$persisted2[_i20];
-    var _oldField = _ref6[0];
-    var _newField = _ref6[1];
-    var isSafe = isChangeSafeForInputObjectFieldOrFieldArg(_oldField.type, _newField.type);
-
-    if (!isSafe) {
-      schemaChanges.push({
-        type: BreakingChangeType.FIELD_CHANGED_KIND,
-        description: "".concat(oldType.name, ".").concat(_oldField.name, " changed type from ") + "".concat(String(_oldField.type), " to ").concat(String(_newField.type), ".")
-      });
-    }
-  }
-
-  return schemaChanges;
-}
-
-function findUnionTypeChanges(oldType, newType) {
-  var schemaChanges = [];
-  var possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());
-
-  for (var _i22 = 0, _possibleTypesDiff$ad2 = possibleTypesDiff.added; _i22 < _possibleTypesDiff$ad2.length; _i22++) {
-    var newPossibleType = _possibleTypesDiff$ad2[_i22];
-    schemaChanges.push({
-      type: DangerousChangeType.TYPE_ADDED_TO_UNION,
-      description: "".concat(newPossibleType.name, " was added to union type ").concat(oldType.name, ".")
-    });
-  }
-
-  for (var _i24 = 0, _possibleTypesDiff$re2 = possibleTypesDiff.removed; _i24 < _possibleTypesDiff$re2.length; _i24++) {
-    var oldPossibleType = _possibleTypesDiff$re2[_i24];
-    schemaChanges.push({
-      type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,
-      description: "".concat(oldPossibleType.name, " was removed from union type ").concat(oldType.name, ".")
-    });
-  }
-
-  return schemaChanges;
-}
-
-function findEnumTypeChanges(oldType, newType) {
-  var schemaChanges = [];
-  var valuesDiff = diff(oldType.getValues(), newType.getValues());
-
-  for (var _i26 = 0, _valuesDiff$added2 = valuesDiff.added; _i26 < _valuesDiff$added2.length; _i26++) {
-    var newValue = _valuesDiff$added2[_i26];
-    schemaChanges.push({
-      type: DangerousChangeType.VALUE_ADDED_TO_ENUM,
-      description: "".concat(newValue.name, " was added to enum type ").concat(oldType.name, ".")
-    });
-  }
-
-  for (var _i28 = 0, _valuesDiff$removed2 = valuesDiff.removed; _i28 < _valuesDiff$removed2.length; _i28++) {
-    var oldValue = _valuesDiff$removed2[_i28];
-    schemaChanges.push({
-      type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,
-      description: "".concat(oldValue.name, " was removed from enum type ").concat(oldType.name, ".")
-    });
-  }
-
-  return schemaChanges;
-}
-
-function findImplementedInterfacesChanges(oldType, newType) {
-  var schemaChanges = [];
-  var interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());
-
-  for (var _i30 = 0, _interfacesDiff$added2 = interfacesDiff.added; _i30 < _interfacesDiff$added2.length; _i30++) {
-    var newInterface = _interfacesDiff$added2[_i30];
-    schemaChanges.push({
-      type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED,
-      description: "".concat(newInterface.name, " added to interfaces implemented by ").concat(oldType.name, ".")
-    });
-  }
-
-  for (var _i32 = 0, _interfacesDiff$remov2 = interfacesDiff.removed; _i32 < _interfacesDiff$remov2.length; _i32++) {
-    var oldInterface = _interfacesDiff$remov2[_i32];
-    schemaChanges.push({
-      type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED,
-      description: "".concat(oldType.name, " no longer implements interface ").concat(oldInterface.name, ".")
-    });
-  }
-
-  return schemaChanges;
-}
-
-function findFieldChanges(oldType, newType) {
-  var schemaChanges = [];
-  var fieldsDiff = diff((0, _objectValues.default)(oldType.getFields()), (0, _objectValues.default)(newType.getFields()));
-
-  for (var _i34 = 0, _fieldsDiff$removed4 = fieldsDiff.removed; _i34 < _fieldsDiff$removed4.length; _i34++) {
-    var oldField = _fieldsDiff$removed4[_i34];
-    schemaChanges.push({
-      type: BreakingChangeType.FIELD_REMOVED,
-      description: "".concat(oldType.name, ".").concat(oldField.name, " was removed.")
-    });
-  }
-
-  for (var _i36 = 0, _fieldsDiff$persisted4 = fieldsDiff.persisted; _i36 < _fieldsDiff$persisted4.length; _i36++) {
-    var _ref8 = _fieldsDiff$persisted4[_i36];
-    var _oldField2 = _ref8[0];
-    var newField = _ref8[1];
-    schemaChanges.push.apply(schemaChanges, findArgChanges(oldType, _oldField2, newField));
-    var isSafe = isChangeSafeForObjectOrInterfaceField(_oldField2.type, newField.type);
-
-    if (!isSafe) {
-      schemaChanges.push({
-        type: BreakingChangeType.FIELD_CHANGED_KIND,
-        description: "".concat(oldType.name, ".").concat(_oldField2.name, " changed type from ") + "".concat(String(_oldField2.type), " to ").concat(String(newField.type), ".")
-      });
-    }
-  }
-
-  return schemaChanges;
-}
-
-function findArgChanges(oldType, oldField, newField) {
-  var schemaChanges = [];
-  var argsDiff = diff(oldField.args, newField.args);
-
-  for (var _i38 = 0, _argsDiff$removed4 = argsDiff.removed; _i38 < _argsDiff$removed4.length; _i38++) {
-    var oldArg = _argsDiff$removed4[_i38];
-    schemaChanges.push({
-      type: BreakingChangeType.ARG_REMOVED,
-      description: "".concat(oldType.name, ".").concat(oldField.name, " arg ").concat(oldArg.name, " was removed.")
-    });
-  }
-
-  for (var _i40 = 0, _argsDiff$persisted2 = argsDiff.persisted; _i40 < _argsDiff$persisted2.length; _i40++) {
-    var _ref10 = _argsDiff$persisted2[_i40];
-    var _oldArg = _ref10[0];
-    var newArg = _ref10[1];
-    var isSafe = isChangeSafeForInputObjectFieldOrFieldArg(_oldArg.type, newArg.type);
-
-    if (!isSafe) {
-      schemaChanges.push({
-        type: BreakingChangeType.ARG_CHANGED_KIND,
-        description: "".concat(oldType.name, ".").concat(oldField.name, " arg ").concat(_oldArg.name, " has changed type from ") + "".concat(String(_oldArg.type), " to ").concat(String(newArg.type), ".")
-      });
-    } else if (_oldArg.defaultValue !== undefined) {
-      if (newArg.defaultValue === undefined) {
-        schemaChanges.push({
-          type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,
-          description: "".concat(oldType.name, ".").concat(oldField.name, " arg ").concat(_oldArg.name, " defaultValue was removed.")
-        });
-      } else {
-        // Since we looking only for client's observable changes we should
-        // compare default values in the same representation as they are
-        // represented inside introspection.
-        var oldValueStr = stringifyValue(_oldArg.defaultValue, _oldArg.type);
-        var newValueStr = stringifyValue(newArg.defaultValue, newArg.type);
-
-        if (oldValueStr !== newValueStr) {
-          schemaChanges.push({
-            type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,
-            description: "".concat(oldType.name, ".").concat(oldField.name, " arg ").concat(_oldArg.name, " has changed defaultValue from ").concat(oldValueStr, " to ").concat(newValueStr, ".")
-          });
-        }
-      }
-    }
-  }
-
-  for (var _i42 = 0, _argsDiff$added4 = argsDiff.added; _i42 < _argsDiff$added4.length; _i42++) {
-    var _newArg = _argsDiff$added4[_i42];
-
-    if ((0, _definition.isRequiredArgument)(_newArg)) {
-      schemaChanges.push({
-        type: BreakingChangeType.REQUIRED_ARG_ADDED,
-        description: "A required arg ".concat(_newArg.name, " on ").concat(oldType.name, ".").concat(oldField.name, " was added.")
-      });
-    } else {
-      schemaChanges.push({
-        type: DangerousChangeType.OPTIONAL_ARG_ADDED,
-        description: "An optional arg ".concat(_newArg.name, " on ").concat(oldType.name, ".").concat(oldField.name, " was added.")
-      });
-    }
-  }
-
-  return schemaChanges;
-}
-
-function isChangeSafeForObjectOrInterfaceField(oldType, newType) {
-  if ((0, _definition.isListType)(oldType)) {
-    return (// if they're both lists, make sure the underlying types are compatible
-      (0, _definition.isListType)(newType) && isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType) || // moving from nullable to non-null of the same underlying type is safe
-      (0, _definition.isNonNullType)(newType) && isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType)
-    );
-  }
-
-  if ((0, _definition.isNonNullType)(oldType)) {
-    // if they're both non-null, make sure the underlying types are compatible
-    return (0, _definition.isNonNullType)(newType) && isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType);
-  }
-
-  return (// if they're both named types, see if their names are equivalent
-    (0, _definition.isNamedType)(newType) && oldType.name === newType.name || // moving from nullable to non-null of the same underlying type is safe
-    (0, _definition.isNonNullType)(newType) && isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType)
-  );
-}
-
-function isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) {
-  if ((0, _definition.isListType)(oldType)) {
-    // if they're both lists, make sure the underlying types are compatible
-    return (0, _definition.isListType)(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType);
-  }
-
-  if ((0, _definition.isNonNullType)(oldType)) {
-    return (// if they're both non-null, make sure the underlying types are
-      // compatible
-      (0, _definition.isNonNullType)(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType) || // moving from non-null to nullable of the same underlying type is safe
-      !(0, _definition.isNonNullType)(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType)
-    );
-  } // if they're both named types, see if their names are equivalent
-
-
-  return (0, _definition.isNamedType)(newType) && oldType.name === newType.name;
-}
-
-function typeKindName(type) {
-  if ((0, _definition.isScalarType)(type)) {
-    return 'a Scalar type';
-  }
-
-  if ((0, _definition.isObjectType)(type)) {
-    return 'an Object type';
-  }
-
-  if ((0, _definition.isInterfaceType)(type)) {
-    return 'an Interface type';
-  }
-
-  if ((0, _definition.isUnionType)(type)) {
-    return 'a Union type';
-  }
-
-  if ((0, _definition.isEnumType)(type)) {
-    return 'an Enum type';
-  } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-  if ((0, _definition.isInputObjectType)(type)) {
-    return 'an Input type';
-  } // istanbul ignore next (Not reachable. All possible named types have been considered)
-
-
-  false || (0, _invariant.default)(0, 'Unexpected type: ' + (0, _inspect.default)(type));
-}
-
-function stringifyValue(value, type) {
-  var ast = (0, _astFromValue.astFromValue)(value, type);
-  ast != null || (0, _invariant.default)(0);
-  var sortedAST = (0, _visitor.visit)(ast, {
-    ObjectValue: function ObjectValue(objectNode) {
-      // Make a copy since sort mutates array
-      var fields = [].concat(objectNode.fields);
-      fields.sort(function (fieldA, fieldB) {
-        return (0, _naturalCompare.default)(fieldA.name.value, fieldB.name.value);
-      });
-      return _objectSpread(_objectSpread({}, objectNode), {}, {
-        fields: fields
-      });
-    }
-  });
-  return (0, _printer.print)(sortedAST);
-}
-
-function diff(oldArray, newArray) {
-  var added = [];
-  var removed = [];
-  var persisted = [];
-  var oldMap = (0, _keyMap.default)(oldArray, function (_ref11) {
-    var name = _ref11.name;
-    return name;
-  });
-  var newMap = (0, _keyMap.default)(newArray, function (_ref12) {
-    var name = _ref12.name;
-    return name;
-  });
-
-  for (var _i44 = 0; _i44 < oldArray.length; _i44++) {
-    var oldItem = oldArray[_i44];
-    var newItem = newMap[oldItem.name];
-
-    if (newItem === undefined) {
-      removed.push(oldItem);
-    } else {
-      persisted.push([oldItem, newItem]);
-    }
-  }
-
-  for (var _i46 = 0; _i46 < newArray.length; _i46++) {
-    var _newItem = newArray[_i46];
-
-    if (oldMap[_newItem.name] === undefined) {
-      added.push(_newItem);
-    }
-  }
-
-  return {
-    added: added,
-    persisted: persisted,
-    removed: removed
-  };
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/findBreakingChanges.js.flow b/includes/external/school/node_modules/graphql/utilities/findBreakingChanges.js.flow
deleted file mode 100644
index 673b2e8..0000000
--- a/includes/external/school/node_modules/graphql/utilities/findBreakingChanges.js.flow
+++ /dev/null
@@ -1,590 +0,0 @@
-// @flow strict
-import objectValues from '../polyfills/objectValues';
-
-import keyMap from '../jsutils/keyMap';
-import inspect from '../jsutils/inspect';
-import invariant from '../jsutils/invariant';
-import naturalCompare from '../jsutils/naturalCompare';
-
-import { print } from '../language/printer';
-import { visit } from '../language/visitor';
-
-import type { GraphQLSchema } from '../type/schema';
-import type {
-  GraphQLField,
-  GraphQLType,
-  GraphQLInputType,
-  GraphQLNamedType,
-  GraphQLEnumType,
-  GraphQLUnionType,
-  GraphQLObjectType,
-  GraphQLInterfaceType,
-  GraphQLInputObjectType,
-} from '../type/definition';
-import { isSpecifiedScalarType } from '../type/scalars';
-import {
-  isScalarType,
-  isObjectType,
-  isInterfaceType,
-  isUnionType,
-  isEnumType,
-  isInputObjectType,
-  isNonNullType,
-  isListType,
-  isNamedType,
-  isRequiredArgument,
-  isRequiredInputField,
-} from '../type/definition';
-
-import { astFromValue } from './astFromValue';
-
-export const BreakingChangeType = Object.freeze({
-  TYPE_REMOVED: 'TYPE_REMOVED',
-  TYPE_CHANGED_KIND: 'TYPE_CHANGED_KIND',
-  TYPE_REMOVED_FROM_UNION: 'TYPE_REMOVED_FROM_UNION',
-  VALUE_REMOVED_FROM_ENUM: 'VALUE_REMOVED_FROM_ENUM',
-  REQUIRED_INPUT_FIELD_ADDED: 'REQUIRED_INPUT_FIELD_ADDED',
-  IMPLEMENTED_INTERFACE_REMOVED: 'IMPLEMENTED_INTERFACE_REMOVED',
-  FIELD_REMOVED: 'FIELD_REMOVED',
-  FIELD_CHANGED_KIND: 'FIELD_CHANGED_KIND',
-  REQUIRED_ARG_ADDED: 'REQUIRED_ARG_ADDED',
-  ARG_REMOVED: 'ARG_REMOVED',
-  ARG_CHANGED_KIND: 'ARG_CHANGED_KIND',
-  DIRECTIVE_REMOVED: 'DIRECTIVE_REMOVED',
-  DIRECTIVE_ARG_REMOVED: 'DIRECTIVE_ARG_REMOVED',
-  REQUIRED_DIRECTIVE_ARG_ADDED: 'REQUIRED_DIRECTIVE_ARG_ADDED',
-  DIRECTIVE_REPEATABLE_REMOVED: 'DIRECTIVE_REPEATABLE_REMOVED',
-  DIRECTIVE_LOCATION_REMOVED: 'DIRECTIVE_LOCATION_REMOVED',
-});
-
-export const DangerousChangeType = Object.freeze({
-  VALUE_ADDED_TO_ENUM: 'VALUE_ADDED_TO_ENUM',
-  TYPE_ADDED_TO_UNION: 'TYPE_ADDED_TO_UNION',
-  OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED',
-  OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED',
-  IMPLEMENTED_INTERFACE_ADDED: 'IMPLEMENTED_INTERFACE_ADDED',
-  ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE',
-});
-
-export type BreakingChange = {|
-  type: $Keys<typeof BreakingChangeType>,
-  description: string,
-|};
-
-export type DangerousChange = {|
-  type: $Keys<typeof DangerousChangeType>,
-  description: string,
-|};
-
-/**
- * Given two schemas, returns an Array containing descriptions of all the types
- * of breaking changes covered by the other functions down below.
- */
-export function findBreakingChanges(
-  oldSchema: GraphQLSchema,
-  newSchema: GraphQLSchema,
-): Array<BreakingChange> {
-  const breakingChanges = findSchemaChanges(oldSchema, newSchema).filter(
-    (change) => change.type in BreakingChangeType,
-  );
-  return ((breakingChanges: any): Array<BreakingChange>);
-}
-
-/**
- * Given two schemas, returns an Array containing descriptions of all the types
- * of potentially dangerous changes covered by the other functions down below.
- */
-export function findDangerousChanges(
-  oldSchema: GraphQLSchema,
-  newSchema: GraphQLSchema,
-): Array<DangerousChange> {
-  const dangerousChanges = findSchemaChanges(oldSchema, newSchema).filter(
-    (change) => change.type in DangerousChangeType,
-  );
-  return ((dangerousChanges: any): Array<DangerousChange>);
-}
-
-function findSchemaChanges(
-  oldSchema: GraphQLSchema,
-  newSchema: GraphQLSchema,
-): Array<BreakingChange | DangerousChange> {
-  return [
-    ...findTypeChanges(oldSchema, newSchema),
-    ...findDirectiveChanges(oldSchema, newSchema),
-  ];
-}
-
-function findDirectiveChanges(
-  oldSchema: GraphQLSchema,
-  newSchema: GraphQLSchema,
-): Array<BreakingChange | DangerousChange> {
-  const schemaChanges = [];
-
-  const directivesDiff = diff(
-    oldSchema.getDirectives(),
-    newSchema.getDirectives(),
-  );
-
-  for (const oldDirective of directivesDiff.removed) {
-    schemaChanges.push({
-      type: BreakingChangeType.DIRECTIVE_REMOVED,
-      description: `${oldDirective.name} was removed.`,
-    });
-  }
-
-  for (const [oldDirective, newDirective] of directivesDiff.persisted) {
-    const argsDiff = diff(oldDirective.args, newDirective.args);
-
-    for (const newArg of argsDiff.added) {
-      if (isRequiredArgument(newArg)) {
-        schemaChanges.push({
-          type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,
-          description: `A required arg ${newArg.name} on directive ${oldDirective.name} was added.`,
-        });
-      }
-    }
-
-    for (const oldArg of argsDiff.removed) {
-      schemaChanges.push({
-        type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,
-        description: `${oldArg.name} was removed from ${oldDirective.name}.`,
-      });
-    }
-
-    if (oldDirective.isRepeatable && !newDirective.isRepeatable) {
-      schemaChanges.push({
-        type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED,
-        description: `Repeatable flag was removed from ${oldDirective.name}.`,
-      });
-    }
-
-    for (const location of oldDirective.locations) {
-      if (newDirective.locations.indexOf(location) === -1) {
-        schemaChanges.push({
-          type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,
-          description: `${location} was removed from ${oldDirective.name}.`,
-        });
-      }
-    }
-  }
-
-  return schemaChanges;
-}
-
-function findTypeChanges(
-  oldSchema: GraphQLSchema,
-  newSchema: GraphQLSchema,
-): Array<BreakingChange | DangerousChange> {
-  const schemaChanges = [];
-
-  const typesDiff = diff(
-    objectValues(oldSchema.getTypeMap()),
-    objectValues(newSchema.getTypeMap()),
-  );
-
-  for (const oldType of typesDiff.removed) {
-    schemaChanges.push({
-      type: BreakingChangeType.TYPE_REMOVED,
-      description: isSpecifiedScalarType(oldType)
-        ? `Standard scalar ${oldType.name} was removed because it is not referenced anymore.`
-        : `${oldType.name} was removed.`,
-    });
-  }
-
-  for (const [oldType, newType] of typesDiff.persisted) {
-    if (isEnumType(oldType) && isEnumType(newType)) {
-      schemaChanges.push(...findEnumTypeChanges(oldType, newType));
-    } else if (isUnionType(oldType) && isUnionType(newType)) {
-      schemaChanges.push(...findUnionTypeChanges(oldType, newType));
-    } else if (isInputObjectType(oldType) && isInputObjectType(newType)) {
-      schemaChanges.push(...findInputObjectTypeChanges(oldType, newType));
-    } else if (isObjectType(oldType) && isObjectType(newType)) {
-      schemaChanges.push(
-        ...findFieldChanges(oldType, newType),
-        ...findImplementedInterfacesChanges(oldType, newType),
-      );
-    } else if (isInterfaceType(oldType) && isInterfaceType(newType)) {
-      schemaChanges.push(
-        ...findFieldChanges(oldType, newType),
-        ...findImplementedInterfacesChanges(oldType, newType),
-      );
-    } else if (oldType.constructor !== newType.constructor) {
-      schemaChanges.push({
-        type: BreakingChangeType.TYPE_CHANGED_KIND,
-        description:
-          `${oldType.name} changed from ` +
-          `${typeKindName(oldType)} to ${typeKindName(newType)}.`,
-      });
-    }
-  }
-
-  return schemaChanges;
-}
-
-function findInputObjectTypeChanges(
-  oldType: GraphQLInputObjectType,
-  newType: GraphQLInputObjectType,
-): Array<BreakingChange | DangerousChange> {
-  const schemaChanges = [];
-  const fieldsDiff = diff(
-    objectValues(oldType.getFields()),
-    objectValues(newType.getFields()),
-  );
-
-  for (const newField of fieldsDiff.added) {
-    if (isRequiredInputField(newField)) {
-      schemaChanges.push({
-        type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,
-        description: `A required field ${newField.name} on input type ${oldType.name} was added.`,
-      });
-    } else {
-      schemaChanges.push({
-        type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,
-        description: `An optional field ${newField.name} on input type ${oldType.name} was added.`,
-      });
-    }
-  }
-
-  for (const oldField of fieldsDiff.removed) {
-    schemaChanges.push({
-      type: BreakingChangeType.FIELD_REMOVED,
-      description: `${oldType.name}.${oldField.name} was removed.`,
-    });
-  }
-
-  for (const [oldField, newField] of fieldsDiff.persisted) {
-    const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(
-      oldField.type,
-      newField.type,
-    );
-    if (!isSafe) {
-      schemaChanges.push({
-        type: BreakingChangeType.FIELD_CHANGED_KIND,
-        description:
-          `${oldType.name}.${oldField.name} changed type from ` +
-          `${String(oldField.type)} to ${String(newField.type)}.`,
-      });
-    }
-  }
-
-  return schemaChanges;
-}
-
-function findUnionTypeChanges(
-  oldType: GraphQLUnionType,
-  newType: GraphQLUnionType,
-): Array<BreakingChange | DangerousChange> {
-  const schemaChanges = [];
-  const possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());
-
-  for (const newPossibleType of possibleTypesDiff.added) {
-    schemaChanges.push({
-      type: DangerousChangeType.TYPE_ADDED_TO_UNION,
-      description: `${newPossibleType.name} was added to union type ${oldType.name}.`,
-    });
-  }
-
-  for (const oldPossibleType of possibleTypesDiff.removed) {
-    schemaChanges.push({
-      type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,
-      description: `${oldPossibleType.name} was removed from union type ${oldType.name}.`,
-    });
-  }
-
-  return schemaChanges;
-}
-
-function findEnumTypeChanges(
-  oldType: GraphQLEnumType,
-  newType: GraphQLEnumType,
-): Array<BreakingChange | DangerousChange> {
-  const schemaChanges = [];
-  const valuesDiff = diff(oldType.getValues(), newType.getValues());
-
-  for (const newValue of valuesDiff.added) {
-    schemaChanges.push({
-      type: DangerousChangeType.VALUE_ADDED_TO_ENUM,
-      description: `${newValue.name} was added to enum type ${oldType.name}.`,
-    });
-  }
-
-  for (const oldValue of valuesDiff.removed) {
-    schemaChanges.push({
-      type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,
-      description: `${oldValue.name} was removed from enum type ${oldType.name}.`,
-    });
-  }
-
-  return schemaChanges;
-}
-
-function findImplementedInterfacesChanges(
-  oldType: GraphQLObjectType | GraphQLInterfaceType,
-  newType: GraphQLObjectType | GraphQLInterfaceType,
-): Array<BreakingChange | DangerousChange> {
-  const schemaChanges = [];
-  const interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());
-
-  for (const newInterface of interfacesDiff.added) {
-    schemaChanges.push({
-      type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED,
-      description: `${newInterface.name} added to interfaces implemented by ${oldType.name}.`,
-    });
-  }
-
-  for (const oldInterface of interfacesDiff.removed) {
-    schemaChanges.push({
-      type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED,
-      description: `${oldType.name} no longer implements interface ${oldInterface.name}.`,
-    });
-  }
-
-  return schemaChanges;
-}
-
-function findFieldChanges(
-  oldType: GraphQLObjectType | GraphQLInterfaceType,
-  newType: GraphQLObjectType | GraphQLInterfaceType,
-): Array<BreakingChange | DangerousChange> {
-  const schemaChanges = [];
-  const fieldsDiff = diff(
-    objectValues(oldType.getFields()),
-    objectValues(newType.getFields()),
-  );
-
-  for (const oldField of fieldsDiff.removed) {
-    schemaChanges.push({
-      type: BreakingChangeType.FIELD_REMOVED,
-      description: `${oldType.name}.${oldField.name} was removed.`,
-    });
-  }
-
-  for (const [oldField, newField] of fieldsDiff.persisted) {
-    schemaChanges.push(...findArgChanges(oldType, oldField, newField));
-
-    const isSafe = isChangeSafeForObjectOrInterfaceField(
-      oldField.type,
-      newField.type,
-    );
-    if (!isSafe) {
-      schemaChanges.push({
-        type: BreakingChangeType.FIELD_CHANGED_KIND,
-        description:
-          `${oldType.name}.${oldField.name} changed type from ` +
-          `${String(oldField.type)} to ${String(newField.type)}.`,
-      });
-    }
-  }
-
-  return schemaChanges;
-}
-
-function findArgChanges(
-  oldType: GraphQLObjectType | GraphQLInterfaceType,
-  oldField: GraphQLField<mixed, mixed>,
-  newField: GraphQLField<mixed, mixed>,
-): Array<BreakingChange | DangerousChange> {
-  const schemaChanges = [];
-  const argsDiff = diff(oldField.args, newField.args);
-
-  for (const oldArg of argsDiff.removed) {
-    schemaChanges.push({
-      type: BreakingChangeType.ARG_REMOVED,
-      description: `${oldType.name}.${oldField.name} arg ${oldArg.name} was removed.`,
-    });
-  }
-
-  for (const [oldArg, newArg] of argsDiff.persisted) {
-    const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(
-      oldArg.type,
-      newArg.type,
-    );
-    if (!isSafe) {
-      schemaChanges.push({
-        type: BreakingChangeType.ARG_CHANGED_KIND,
-        description:
-          `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed type from ` +
-          `${String(oldArg.type)} to ${String(newArg.type)}.`,
-      });
-    } else if (oldArg.defaultValue !== undefined) {
-      if (newArg.defaultValue === undefined) {
-        schemaChanges.push({
-          type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,
-          description: `${oldType.name}.${oldField.name} arg ${oldArg.name} defaultValue was removed.`,
-        });
-      } else {
-        // Since we looking only for client's observable changes we should
-        // compare default values in the same representation as they are
-        // represented inside introspection.
-        const oldValueStr = stringifyValue(oldArg.defaultValue, oldArg.type);
-        const newValueStr = stringifyValue(newArg.defaultValue, newArg.type);
-
-        if (oldValueStr !== newValueStr) {
-          schemaChanges.push({
-            type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,
-            description: `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed defaultValue from ${oldValueStr} to ${newValueStr}.`,
-          });
-        }
-      }
-    }
-  }
-
-  for (const newArg of argsDiff.added) {
-    if (isRequiredArgument(newArg)) {
-      schemaChanges.push({
-        type: BreakingChangeType.REQUIRED_ARG_ADDED,
-        description: `A required arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,
-      });
-    } else {
-      schemaChanges.push({
-        type: DangerousChangeType.OPTIONAL_ARG_ADDED,
-        description: `An optional arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,
-      });
-    }
-  }
-
-  return schemaChanges;
-}
-
-function isChangeSafeForObjectOrInterfaceField(
-  oldType: GraphQLType,
-  newType: GraphQLType,
-): boolean {
-  if (isListType(oldType)) {
-    return (
-      // if they're both lists, make sure the underlying types are compatible
-      (isListType(newType) &&
-        isChangeSafeForObjectOrInterfaceField(
-          oldType.ofType,
-          newType.ofType,
-        )) ||
-      // moving from nullable to non-null of the same underlying type is safe
-      (isNonNullType(newType) &&
-        isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))
-    );
-  }
-
-  if (isNonNullType(oldType)) {
-    // if they're both non-null, make sure the underlying types are compatible
-    return (
-      isNonNullType(newType) &&
-      isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType)
-    );
-  }
-
-  return (
-    // if they're both named types, see if their names are equivalent
-    (isNamedType(newType) && oldType.name === newType.name) ||
-    // moving from nullable to non-null of the same underlying type is safe
-    (isNonNullType(newType) &&
-      isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))
-  );
-}
-
-function isChangeSafeForInputObjectFieldOrFieldArg(
-  oldType: GraphQLType,
-  newType: GraphQLType,
-): boolean {
-  if (isListType(oldType)) {
-    // if they're both lists, make sure the underlying types are compatible
-    return (
-      isListType(newType) &&
-      isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType)
-    );
-  }
-
-  if (isNonNullType(oldType)) {
-    return (
-      // if they're both non-null, make sure the underlying types are
-      // compatible
-      (isNonNullType(newType) &&
-        isChangeSafeForInputObjectFieldOrFieldArg(
-          oldType.ofType,
-          newType.ofType,
-        )) ||
-      // moving from non-null to nullable of the same underlying type is safe
-      (!isNonNullType(newType) &&
-        isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType))
-    );
-  }
-
-  // if they're both named types, see if their names are equivalent
-  return isNamedType(newType) && oldType.name === newType.name;
-}
-
-function typeKindName(type: GraphQLNamedType): string {
-  if (isScalarType(type)) {
-    return 'a Scalar type';
-  }
-  if (isObjectType(type)) {
-    return 'an Object type';
-  }
-  if (isInterfaceType(type)) {
-    return 'an Interface type';
-  }
-  if (isUnionType(type)) {
-    return 'a Union type';
-  }
-  if (isEnumType(type)) {
-    return 'an Enum type';
-  }
-  // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-  if (isInputObjectType(type)) {
-    return 'an Input type';
-  }
-
-  // istanbul ignore next (Not reachable. All possible named types have been considered)
-  invariant(false, 'Unexpected type: ' + inspect((type: empty)));
-}
-
-function stringifyValue(value: mixed, type: GraphQLInputType): string {
-  const ast = astFromValue(value, type);
-  invariant(ast != null);
-
-  const sortedAST = visit(ast, {
-    ObjectValue(objectNode) {
-      // Make a copy since sort mutates array
-      const fields = [...objectNode.fields];
-
-      fields.sort((fieldA, fieldB) =>
-        naturalCompare(fieldA.name.value, fieldB.name.value),
-      );
-      return { ...objectNode, fields };
-    },
-  });
-
-  return print(sortedAST);
-}
-
-function diff<T: { name: string, ... }>(
-  oldArray: $ReadOnlyArray<T>,
-  newArray: $ReadOnlyArray<T>,
-): {|
-  added: Array<T>,
-  removed: Array<T>,
-  persisted: Array<[T, T]>,
-|} {
-  const added = [];
-  const removed = [];
-  const persisted = [];
-
-  const oldMap = keyMap(oldArray, ({ name }) => name);
-  const newMap = keyMap(newArray, ({ name }) => name);
-
-  for (const oldItem of oldArray) {
-    const newItem = newMap[oldItem.name];
-    if (newItem === undefined) {
-      removed.push(oldItem);
-    } else {
-      persisted.push([oldItem, newItem]);
-    }
-  }
-
-  for (const newItem of newArray) {
-    if (oldMap[newItem.name] === undefined) {
-      added.push(newItem);
-    }
-  }
-
-  return { added, persisted, removed };
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/findBreakingChanges.mjs b/includes/external/school/node_modules/graphql/utilities/findBreakingChanges.mjs
deleted file mode 100644
index 52e5804..0000000
--- a/includes/external/school/node_modules/graphql/utilities/findBreakingChanges.mjs
+++ /dev/null
@@ -1,498 +0,0 @@
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-import objectValues from "../polyfills/objectValues.mjs";
-import keyMap from "../jsutils/keyMap.mjs";
-import inspect from "../jsutils/inspect.mjs";
-import invariant from "../jsutils/invariant.mjs";
-import naturalCompare from "../jsutils/naturalCompare.mjs";
-import { print } from "../language/printer.mjs";
-import { visit } from "../language/visitor.mjs";
-import { isSpecifiedScalarType } from "../type/scalars.mjs";
-import { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isNonNullType, isListType, isNamedType, isRequiredArgument, isRequiredInputField } from "../type/definition.mjs";
-import { astFromValue } from "./astFromValue.mjs";
-export var BreakingChangeType = Object.freeze({
-  TYPE_REMOVED: 'TYPE_REMOVED',
-  TYPE_CHANGED_KIND: 'TYPE_CHANGED_KIND',
-  TYPE_REMOVED_FROM_UNION: 'TYPE_REMOVED_FROM_UNION',
-  VALUE_REMOVED_FROM_ENUM: 'VALUE_REMOVED_FROM_ENUM',
-  REQUIRED_INPUT_FIELD_ADDED: 'REQUIRED_INPUT_FIELD_ADDED',
-  IMPLEMENTED_INTERFACE_REMOVED: 'IMPLEMENTED_INTERFACE_REMOVED',
-  FIELD_REMOVED: 'FIELD_REMOVED',
-  FIELD_CHANGED_KIND: 'FIELD_CHANGED_KIND',
-  REQUIRED_ARG_ADDED: 'REQUIRED_ARG_ADDED',
-  ARG_REMOVED: 'ARG_REMOVED',
-  ARG_CHANGED_KIND: 'ARG_CHANGED_KIND',
-  DIRECTIVE_REMOVED: 'DIRECTIVE_REMOVED',
-  DIRECTIVE_ARG_REMOVED: 'DIRECTIVE_ARG_REMOVED',
-  REQUIRED_DIRECTIVE_ARG_ADDED: 'REQUIRED_DIRECTIVE_ARG_ADDED',
-  DIRECTIVE_REPEATABLE_REMOVED: 'DIRECTIVE_REPEATABLE_REMOVED',
-  DIRECTIVE_LOCATION_REMOVED: 'DIRECTIVE_LOCATION_REMOVED'
-});
-export var DangerousChangeType = Object.freeze({
-  VALUE_ADDED_TO_ENUM: 'VALUE_ADDED_TO_ENUM',
-  TYPE_ADDED_TO_UNION: 'TYPE_ADDED_TO_UNION',
-  OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED',
-  OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED',
-  IMPLEMENTED_INTERFACE_ADDED: 'IMPLEMENTED_INTERFACE_ADDED',
-  ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE'
-});
-
-/**
- * Given two schemas, returns an Array containing descriptions of all the types
- * of breaking changes covered by the other functions down below.
- */
-export function findBreakingChanges(oldSchema, newSchema) {
-  var breakingChanges = findSchemaChanges(oldSchema, newSchema).filter(function (change) {
-    return change.type in BreakingChangeType;
-  });
-  return breakingChanges;
-}
-/**
- * Given two schemas, returns an Array containing descriptions of all the types
- * of potentially dangerous changes covered by the other functions down below.
- */
-
-export function findDangerousChanges(oldSchema, newSchema) {
-  var dangerousChanges = findSchemaChanges(oldSchema, newSchema).filter(function (change) {
-    return change.type in DangerousChangeType;
-  });
-  return dangerousChanges;
-}
-
-function findSchemaChanges(oldSchema, newSchema) {
-  return [].concat(findTypeChanges(oldSchema, newSchema), findDirectiveChanges(oldSchema, newSchema));
-}
-
-function findDirectiveChanges(oldSchema, newSchema) {
-  var schemaChanges = [];
-  var directivesDiff = diff(oldSchema.getDirectives(), newSchema.getDirectives());
-
-  for (var _i2 = 0, _directivesDiff$remov2 = directivesDiff.removed; _i2 < _directivesDiff$remov2.length; _i2++) {
-    var oldDirective = _directivesDiff$remov2[_i2];
-    schemaChanges.push({
-      type: BreakingChangeType.DIRECTIVE_REMOVED,
-      description: "".concat(oldDirective.name, " was removed.")
-    });
-  }
-
-  for (var _i4 = 0, _directivesDiff$persi2 = directivesDiff.persisted; _i4 < _directivesDiff$persi2.length; _i4++) {
-    var _ref2 = _directivesDiff$persi2[_i4];
-    var _oldDirective = _ref2[0];
-    var newDirective = _ref2[1];
-    var argsDiff = diff(_oldDirective.args, newDirective.args);
-
-    for (var _i6 = 0, _argsDiff$added2 = argsDiff.added; _i6 < _argsDiff$added2.length; _i6++) {
-      var newArg = _argsDiff$added2[_i6];
-
-      if (isRequiredArgument(newArg)) {
-        schemaChanges.push({
-          type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,
-          description: "A required arg ".concat(newArg.name, " on directive ").concat(_oldDirective.name, " was added.")
-        });
-      }
-    }
-
-    for (var _i8 = 0, _argsDiff$removed2 = argsDiff.removed; _i8 < _argsDiff$removed2.length; _i8++) {
-      var oldArg = _argsDiff$removed2[_i8];
-      schemaChanges.push({
-        type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,
-        description: "".concat(oldArg.name, " was removed from ").concat(_oldDirective.name, ".")
-      });
-    }
-
-    if (_oldDirective.isRepeatable && !newDirective.isRepeatable) {
-      schemaChanges.push({
-        type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED,
-        description: "Repeatable flag was removed from ".concat(_oldDirective.name, ".")
-      });
-    }
-
-    for (var _i10 = 0, _oldDirective$locatio2 = _oldDirective.locations; _i10 < _oldDirective$locatio2.length; _i10++) {
-      var location = _oldDirective$locatio2[_i10];
-
-      if (newDirective.locations.indexOf(location) === -1) {
-        schemaChanges.push({
-          type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,
-          description: "".concat(location, " was removed from ").concat(_oldDirective.name, ".")
-        });
-      }
-    }
-  }
-
-  return schemaChanges;
-}
-
-function findTypeChanges(oldSchema, newSchema) {
-  var schemaChanges = [];
-  var typesDiff = diff(objectValues(oldSchema.getTypeMap()), objectValues(newSchema.getTypeMap()));
-
-  for (var _i12 = 0, _typesDiff$removed2 = typesDiff.removed; _i12 < _typesDiff$removed2.length; _i12++) {
-    var oldType = _typesDiff$removed2[_i12];
-    schemaChanges.push({
-      type: BreakingChangeType.TYPE_REMOVED,
-      description: isSpecifiedScalarType(oldType) ? "Standard scalar ".concat(oldType.name, " was removed because it is not referenced anymore.") : "".concat(oldType.name, " was removed.")
-    });
-  }
-
-  for (var _i14 = 0, _typesDiff$persisted2 = typesDiff.persisted; _i14 < _typesDiff$persisted2.length; _i14++) {
-    var _ref4 = _typesDiff$persisted2[_i14];
-    var _oldType = _ref4[0];
-    var newType = _ref4[1];
-
-    if (isEnumType(_oldType) && isEnumType(newType)) {
-      schemaChanges.push.apply(schemaChanges, findEnumTypeChanges(_oldType, newType));
-    } else if (isUnionType(_oldType) && isUnionType(newType)) {
-      schemaChanges.push.apply(schemaChanges, findUnionTypeChanges(_oldType, newType));
-    } else if (isInputObjectType(_oldType) && isInputObjectType(newType)) {
-      schemaChanges.push.apply(schemaChanges, findInputObjectTypeChanges(_oldType, newType));
-    } else if (isObjectType(_oldType) && isObjectType(newType)) {
-      schemaChanges.push.apply(schemaChanges, findFieldChanges(_oldType, newType).concat(findImplementedInterfacesChanges(_oldType, newType)));
-    } else if (isInterfaceType(_oldType) && isInterfaceType(newType)) {
-      schemaChanges.push.apply(schemaChanges, findFieldChanges(_oldType, newType).concat(findImplementedInterfacesChanges(_oldType, newType)));
-    } else if (_oldType.constructor !== newType.constructor) {
-      schemaChanges.push({
-        type: BreakingChangeType.TYPE_CHANGED_KIND,
-        description: "".concat(_oldType.name, " changed from ") + "".concat(typeKindName(_oldType), " to ").concat(typeKindName(newType), ".")
-      });
-    }
-  }
-
-  return schemaChanges;
-}
-
-function findInputObjectTypeChanges(oldType, newType) {
-  var schemaChanges = [];
-  var fieldsDiff = diff(objectValues(oldType.getFields()), objectValues(newType.getFields()));
-
-  for (var _i16 = 0, _fieldsDiff$added2 = fieldsDiff.added; _i16 < _fieldsDiff$added2.length; _i16++) {
-    var newField = _fieldsDiff$added2[_i16];
-
-    if (isRequiredInputField(newField)) {
-      schemaChanges.push({
-        type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,
-        description: "A required field ".concat(newField.name, " on input type ").concat(oldType.name, " was added.")
-      });
-    } else {
-      schemaChanges.push({
-        type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,
-        description: "An optional field ".concat(newField.name, " on input type ").concat(oldType.name, " was added.")
-      });
-    }
-  }
-
-  for (var _i18 = 0, _fieldsDiff$removed2 = fieldsDiff.removed; _i18 < _fieldsDiff$removed2.length; _i18++) {
-    var oldField = _fieldsDiff$removed2[_i18];
-    schemaChanges.push({
-      type: BreakingChangeType.FIELD_REMOVED,
-      description: "".concat(oldType.name, ".").concat(oldField.name, " was removed.")
-    });
-  }
-
-  for (var _i20 = 0, _fieldsDiff$persisted2 = fieldsDiff.persisted; _i20 < _fieldsDiff$persisted2.length; _i20++) {
-    var _ref6 = _fieldsDiff$persisted2[_i20];
-    var _oldField = _ref6[0];
-    var _newField = _ref6[1];
-    var isSafe = isChangeSafeForInputObjectFieldOrFieldArg(_oldField.type, _newField.type);
-
-    if (!isSafe) {
-      schemaChanges.push({
-        type: BreakingChangeType.FIELD_CHANGED_KIND,
-        description: "".concat(oldType.name, ".").concat(_oldField.name, " changed type from ") + "".concat(String(_oldField.type), " to ").concat(String(_newField.type), ".")
-      });
-    }
-  }
-
-  return schemaChanges;
-}
-
-function findUnionTypeChanges(oldType, newType) {
-  var schemaChanges = [];
-  var possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());
-
-  for (var _i22 = 0, _possibleTypesDiff$ad2 = possibleTypesDiff.added; _i22 < _possibleTypesDiff$ad2.length; _i22++) {
-    var newPossibleType = _possibleTypesDiff$ad2[_i22];
-    schemaChanges.push({
-      type: DangerousChangeType.TYPE_ADDED_TO_UNION,
-      description: "".concat(newPossibleType.name, " was added to union type ").concat(oldType.name, ".")
-    });
-  }
-
-  for (var _i24 = 0, _possibleTypesDiff$re2 = possibleTypesDiff.removed; _i24 < _possibleTypesDiff$re2.length; _i24++) {
-    var oldPossibleType = _possibleTypesDiff$re2[_i24];
-    schemaChanges.push({
-      type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,
-      description: "".concat(oldPossibleType.name, " was removed from union type ").concat(oldType.name, ".")
-    });
-  }
-
-  return schemaChanges;
-}
-
-function findEnumTypeChanges(oldType, newType) {
-  var schemaChanges = [];
-  var valuesDiff = diff(oldType.getValues(), newType.getValues());
-
-  for (var _i26 = 0, _valuesDiff$added2 = valuesDiff.added; _i26 < _valuesDiff$added2.length; _i26++) {
-    var newValue = _valuesDiff$added2[_i26];
-    schemaChanges.push({
-      type: DangerousChangeType.VALUE_ADDED_TO_ENUM,
-      description: "".concat(newValue.name, " was added to enum type ").concat(oldType.name, ".")
-    });
-  }
-
-  for (var _i28 = 0, _valuesDiff$removed2 = valuesDiff.removed; _i28 < _valuesDiff$removed2.length; _i28++) {
-    var oldValue = _valuesDiff$removed2[_i28];
-    schemaChanges.push({
-      type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,
-      description: "".concat(oldValue.name, " was removed from enum type ").concat(oldType.name, ".")
-    });
-  }
-
-  return schemaChanges;
-}
-
-function findImplementedInterfacesChanges(oldType, newType) {
-  var schemaChanges = [];
-  var interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());
-
-  for (var _i30 = 0, _interfacesDiff$added2 = interfacesDiff.added; _i30 < _interfacesDiff$added2.length; _i30++) {
-    var newInterface = _interfacesDiff$added2[_i30];
-    schemaChanges.push({
-      type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED,
-      description: "".concat(newInterface.name, " added to interfaces implemented by ").concat(oldType.name, ".")
-    });
-  }
-
-  for (var _i32 = 0, _interfacesDiff$remov2 = interfacesDiff.removed; _i32 < _interfacesDiff$remov2.length; _i32++) {
-    var oldInterface = _interfacesDiff$remov2[_i32];
-    schemaChanges.push({
-      type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED,
-      description: "".concat(oldType.name, " no longer implements interface ").concat(oldInterface.name, ".")
-    });
-  }
-
-  return schemaChanges;
-}
-
-function findFieldChanges(oldType, newType) {
-  var schemaChanges = [];
-  var fieldsDiff = diff(objectValues(oldType.getFields()), objectValues(newType.getFields()));
-
-  for (var _i34 = 0, _fieldsDiff$removed4 = fieldsDiff.removed; _i34 < _fieldsDiff$removed4.length; _i34++) {
-    var oldField = _fieldsDiff$removed4[_i34];
-    schemaChanges.push({
-      type: BreakingChangeType.FIELD_REMOVED,
-      description: "".concat(oldType.name, ".").concat(oldField.name, " was removed.")
-    });
-  }
-
-  for (var _i36 = 0, _fieldsDiff$persisted4 = fieldsDiff.persisted; _i36 < _fieldsDiff$persisted4.length; _i36++) {
-    var _ref8 = _fieldsDiff$persisted4[_i36];
-    var _oldField2 = _ref8[0];
-    var newField = _ref8[1];
-    schemaChanges.push.apply(schemaChanges, findArgChanges(oldType, _oldField2, newField));
-    var isSafe = isChangeSafeForObjectOrInterfaceField(_oldField2.type, newField.type);
-
-    if (!isSafe) {
-      schemaChanges.push({
-        type: BreakingChangeType.FIELD_CHANGED_KIND,
-        description: "".concat(oldType.name, ".").concat(_oldField2.name, " changed type from ") + "".concat(String(_oldField2.type), " to ").concat(String(newField.type), ".")
-      });
-    }
-  }
-
-  return schemaChanges;
-}
-
-function findArgChanges(oldType, oldField, newField) {
-  var schemaChanges = [];
-  var argsDiff = diff(oldField.args, newField.args);
-
-  for (var _i38 = 0, _argsDiff$removed4 = argsDiff.removed; _i38 < _argsDiff$removed4.length; _i38++) {
-    var oldArg = _argsDiff$removed4[_i38];
-    schemaChanges.push({
-      type: BreakingChangeType.ARG_REMOVED,
-      description: "".concat(oldType.name, ".").concat(oldField.name, " arg ").concat(oldArg.name, " was removed.")
-    });
-  }
-
-  for (var _i40 = 0, _argsDiff$persisted2 = argsDiff.persisted; _i40 < _argsDiff$persisted2.length; _i40++) {
-    var _ref10 = _argsDiff$persisted2[_i40];
-    var _oldArg = _ref10[0];
-    var newArg = _ref10[1];
-    var isSafe = isChangeSafeForInputObjectFieldOrFieldArg(_oldArg.type, newArg.type);
-
-    if (!isSafe) {
-      schemaChanges.push({
-        type: BreakingChangeType.ARG_CHANGED_KIND,
-        description: "".concat(oldType.name, ".").concat(oldField.name, " arg ").concat(_oldArg.name, " has changed type from ") + "".concat(String(_oldArg.type), " to ").concat(String(newArg.type), ".")
-      });
-    } else if (_oldArg.defaultValue !== undefined) {
-      if (newArg.defaultValue === undefined) {
-        schemaChanges.push({
-          type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,
-          description: "".concat(oldType.name, ".").concat(oldField.name, " arg ").concat(_oldArg.name, " defaultValue was removed.")
-        });
-      } else {
-        // Since we looking only for client's observable changes we should
-        // compare default values in the same representation as they are
-        // represented inside introspection.
-        var oldValueStr = stringifyValue(_oldArg.defaultValue, _oldArg.type);
-        var newValueStr = stringifyValue(newArg.defaultValue, newArg.type);
-
-        if (oldValueStr !== newValueStr) {
-          schemaChanges.push({
-            type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,
-            description: "".concat(oldType.name, ".").concat(oldField.name, " arg ").concat(_oldArg.name, " has changed defaultValue from ").concat(oldValueStr, " to ").concat(newValueStr, ".")
-          });
-        }
-      }
-    }
-  }
-
-  for (var _i42 = 0, _argsDiff$added4 = argsDiff.added; _i42 < _argsDiff$added4.length; _i42++) {
-    var _newArg = _argsDiff$added4[_i42];
-
-    if (isRequiredArgument(_newArg)) {
-      schemaChanges.push({
-        type: BreakingChangeType.REQUIRED_ARG_ADDED,
-        description: "A required arg ".concat(_newArg.name, " on ").concat(oldType.name, ".").concat(oldField.name, " was added.")
-      });
-    } else {
-      schemaChanges.push({
-        type: DangerousChangeType.OPTIONAL_ARG_ADDED,
-        description: "An optional arg ".concat(_newArg.name, " on ").concat(oldType.name, ".").concat(oldField.name, " was added.")
-      });
-    }
-  }
-
-  return schemaChanges;
-}
-
-function isChangeSafeForObjectOrInterfaceField(oldType, newType) {
-  if (isListType(oldType)) {
-    return (// if they're both lists, make sure the underlying types are compatible
-      isListType(newType) && isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType) || // moving from nullable to non-null of the same underlying type is safe
-      isNonNullType(newType) && isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType)
-    );
-  }
-
-  if (isNonNullType(oldType)) {
-    // if they're both non-null, make sure the underlying types are compatible
-    return isNonNullType(newType) && isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType);
-  }
-
-  return (// if they're both named types, see if their names are equivalent
-    isNamedType(newType) && oldType.name === newType.name || // moving from nullable to non-null of the same underlying type is safe
-    isNonNullType(newType) && isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType)
-  );
-}
-
-function isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) {
-  if (isListType(oldType)) {
-    // if they're both lists, make sure the underlying types are compatible
-    return isListType(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType);
-  }
-
-  if (isNonNullType(oldType)) {
-    return (// if they're both non-null, make sure the underlying types are
-      // compatible
-      isNonNullType(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType) || // moving from non-null to nullable of the same underlying type is safe
-      !isNonNullType(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType)
-    );
-  } // if they're both named types, see if their names are equivalent
-
-
-  return isNamedType(newType) && oldType.name === newType.name;
-}
-
-function typeKindName(type) {
-  if (isScalarType(type)) {
-    return 'a Scalar type';
-  }
-
-  if (isObjectType(type)) {
-    return 'an Object type';
-  }
-
-  if (isInterfaceType(type)) {
-    return 'an Interface type';
-  }
-
-  if (isUnionType(type)) {
-    return 'a Union type';
-  }
-
-  if (isEnumType(type)) {
-    return 'an Enum type';
-  } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-  if (isInputObjectType(type)) {
-    return 'an Input type';
-  } // istanbul ignore next (Not reachable. All possible named types have been considered)
-
-
-  false || invariant(0, 'Unexpected type: ' + inspect(type));
-}
-
-function stringifyValue(value, type) {
-  var ast = astFromValue(value, type);
-  ast != null || invariant(0);
-  var sortedAST = visit(ast, {
-    ObjectValue: function ObjectValue(objectNode) {
-      // Make a copy since sort mutates array
-      var fields = [].concat(objectNode.fields);
-      fields.sort(function (fieldA, fieldB) {
-        return naturalCompare(fieldA.name.value, fieldB.name.value);
-      });
-      return _objectSpread(_objectSpread({}, objectNode), {}, {
-        fields: fields
-      });
-    }
-  });
-  return print(sortedAST);
-}
-
-function diff(oldArray, newArray) {
-  var added = [];
-  var removed = [];
-  var persisted = [];
-  var oldMap = keyMap(oldArray, function (_ref11) {
-    var name = _ref11.name;
-    return name;
-  });
-  var newMap = keyMap(newArray, function (_ref12) {
-    var name = _ref12.name;
-    return name;
-  });
-
-  for (var _i44 = 0; _i44 < oldArray.length; _i44++) {
-    var oldItem = oldArray[_i44];
-    var newItem = newMap[oldItem.name];
-
-    if (newItem === undefined) {
-      removed.push(oldItem);
-    } else {
-      persisted.push([oldItem, newItem]);
-    }
-  }
-
-  for (var _i46 = 0; _i46 < newArray.length; _i46++) {
-    var _newItem = newArray[_i46];
-
-    if (oldMap[_newItem.name] === undefined) {
-      added.push(_newItem);
-    }
-  }
-
-  return {
-    added: added,
-    persisted: persisted,
-    removed: removed
-  };
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.d.ts b/includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.d.ts
deleted file mode 100644
index bbdf943..0000000
--- a/includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.d.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { GraphQLError } from '../error/GraphQLError';
-import { DocumentNode } from '../language/ast';
-import { GraphQLSchema } from '../type/schema';
-
-/**
- * A validation rule which reports deprecated usages.
- *
- * Returns a list of GraphQLError instances describing each deprecated use.
- *
- * @deprecated Please use `validate` with `NoDeprecatedCustomRule` instead:
- *
- * ```
- * import { validate, NoDeprecatedCustomRule } from 'graphql'
- *
- * const errors = validate(schema, document, [NoDeprecatedCustomRule])
- * ```
- */
-export function findDeprecatedUsages(
-  schema: GraphQLSchema,
-  ast: DocumentNode,
-): ReadonlyArray<GraphQLError>;
diff --git a/includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.js b/includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.js
deleted file mode 100644
index e27b03e..0000000
--- a/includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.js
+++ /dev/null
@@ -1,27 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.findDeprecatedUsages = findDeprecatedUsages;
-
-var _validate = require("../validation/validate.js");
-
-var _NoDeprecatedCustomRule = require("../validation/rules/custom/NoDeprecatedCustomRule.js");
-
-/**
- * A validation rule which reports deprecated usages.
- *
- * Returns a list of GraphQLError instances describing each deprecated use.
- *
- * @deprecated Please use `validate` with `NoDeprecatedCustomRule` instead:
- *
- * ```
- * import { validate, NoDeprecatedCustomRule } from 'graphql'
- *
- * const errors = validate(schema, document, [NoDeprecatedCustomRule])
- * ```
- */
-function findDeprecatedUsages(schema, ast) {
-  return (0, _validate.validate)(schema, ast, [_NoDeprecatedCustomRule.NoDeprecatedCustomRule]);
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.js.flow b/includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.js.flow
deleted file mode 100644
index 5db22f0..0000000
--- a/includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.js.flow
+++ /dev/null
@@ -1,29 +0,0 @@
-// @flow strict
-import type { GraphQLError } from '../error/GraphQLError';
-
-import type { DocumentNode } from '../language/ast';
-
-import type { GraphQLSchema } from '../type/schema';
-
-import { validate } from '../validation/validate';
-import { NoDeprecatedCustomRule } from '../validation/rules/custom/NoDeprecatedCustomRule';
-
-/**
- * A validation rule which reports deprecated usages.
- *
- * Returns a list of GraphQLError instances describing each deprecated use.
- *
- * @deprecated Please use `validate` with `NoDeprecatedCustomRule` instead:
- *
- * ```
- * import { validate, NoDeprecatedCustomRule } from 'graphql'
- *
- * const errors = validate(schema, document, [NoDeprecatedCustomRule])
- * ```
- */
-export function findDeprecatedUsages(
-  schema: GraphQLSchema,
-  ast: DocumentNode,
-): $ReadOnlyArray<GraphQLError> {
-  return validate(schema, ast, [NoDeprecatedCustomRule]);
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.mjs b/includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.mjs
deleted file mode 100644
index 7a85004..0000000
--- a/includes/external/school/node_modules/graphql/utilities/findDeprecatedUsages.mjs
+++ /dev/null
@@ -1,19 +0,0 @@
-import { validate } from "../validation/validate.mjs";
-import { NoDeprecatedCustomRule } from "../validation/rules/custom/NoDeprecatedCustomRule.mjs";
-/**
- * A validation rule which reports deprecated usages.
- *
- * Returns a list of GraphQLError instances describing each deprecated use.
- *
- * @deprecated Please use `validate` with `NoDeprecatedCustomRule` instead:
- *
- * ```
- * import { validate, NoDeprecatedCustomRule } from 'graphql'
- *
- * const errors = validate(schema, document, [NoDeprecatedCustomRule])
- * ```
- */
-
-export function findDeprecatedUsages(schema, ast) {
-  return validate(schema, ast, [NoDeprecatedCustomRule]);
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.d.ts b/includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.d.ts
deleted file mode 100644
index 6e5fad1..0000000
--- a/includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.d.ts
+++ /dev/null
@@ -1,193 +0,0 @@
-import { Maybe } from '../jsutils/Maybe';
-
-import { DirectiveLocationEnum } from '../language/directiveLocation';
-
-export interface IntrospectionOptions {
-  // Whether to include descriptions in the introspection result.
-  // Default: true
-  descriptions?: boolean;
-
-  // Whether to include `specifiedByUrl` in the introspection result.
-  // Default: false
-  specifiedByUrl?: boolean;
-
-  // Whether to include `isRepeatable` flag on directives.
-  // Default: false
-  directiveIsRepeatable?: boolean;
-
-  // Whether to include `description` field on schema.
-  // Default: false
-  schemaDescription?: boolean;
-
-  // Whether target GraphQL server support deprecation of input values.
-  // Default: false
-  inputValueDeprecation?: boolean;
-}
-
-export function getIntrospectionQuery(options?: IntrospectionOptions): string;
-
-export interface IntrospectionQuery {
-  readonly __schema: IntrospectionSchema;
-}
-
-export interface IntrospectionSchema {
-  readonly queryType: IntrospectionNamedTypeRef<IntrospectionObjectType>;
-  readonly mutationType: Maybe<
-    IntrospectionNamedTypeRef<IntrospectionObjectType>
-  >;
-  readonly subscriptionType: Maybe<
-    IntrospectionNamedTypeRef<IntrospectionObjectType>
-  >;
-  readonly types: ReadonlyArray<IntrospectionType>;
-  readonly directives: ReadonlyArray<IntrospectionDirective>;
-}
-
-export type IntrospectionType =
-  | IntrospectionScalarType
-  | IntrospectionObjectType
-  | IntrospectionInterfaceType
-  | IntrospectionUnionType
-  | IntrospectionEnumType
-  | IntrospectionInputObjectType;
-
-export type IntrospectionOutputType =
-  | IntrospectionScalarType
-  | IntrospectionObjectType
-  | IntrospectionInterfaceType
-  | IntrospectionUnionType
-  | IntrospectionEnumType;
-
-export type IntrospectionInputType =
-  | IntrospectionScalarType
-  | IntrospectionEnumType
-  | IntrospectionInputObjectType;
-
-export interface IntrospectionScalarType {
-  readonly kind: 'SCALAR';
-  readonly name: string;
-  readonly description?: Maybe<string>;
-  readonly specifiedByUrl?: Maybe<string>;
-}
-
-export interface IntrospectionObjectType {
-  readonly kind: 'OBJECT';
-  readonly name: string;
-  readonly description?: Maybe<string>;
-  readonly fields: ReadonlyArray<IntrospectionField>;
-  readonly interfaces: ReadonlyArray<
-    IntrospectionNamedTypeRef<IntrospectionInterfaceType>
-  >;
-}
-
-export interface IntrospectionInterfaceType {
-  readonly kind: 'INTERFACE';
-  readonly name: string;
-  readonly description?: Maybe<string>;
-  readonly fields: ReadonlyArray<IntrospectionField>;
-  readonly interfaces: ReadonlyArray<
-    IntrospectionNamedTypeRef<IntrospectionInterfaceType>
-  >;
-  readonly possibleTypes: ReadonlyArray<
-    IntrospectionNamedTypeRef<IntrospectionObjectType>
-  >;
-}
-
-export interface IntrospectionUnionType {
-  readonly kind: 'UNION';
-  readonly name: string;
-  readonly description?: Maybe<string>;
-  readonly possibleTypes: ReadonlyArray<
-    IntrospectionNamedTypeRef<IntrospectionObjectType>
-  >;
-}
-
-export interface IntrospectionEnumType {
-  readonly kind: 'ENUM';
-  readonly name: string;
-  readonly description?: Maybe<string>;
-  readonly enumValues: ReadonlyArray<IntrospectionEnumValue>;
-}
-
-export interface IntrospectionInputObjectType {
-  readonly kind: 'INPUT_OBJECT';
-  readonly name: string;
-  readonly description?: Maybe<string>;
-  readonly inputFields: ReadonlyArray<IntrospectionInputValue>;
-}
-
-export interface IntrospectionListTypeRef<
-  T extends IntrospectionTypeRef = IntrospectionTypeRef
-> {
-  readonly kind: 'LIST';
-  readonly ofType: T;
-}
-
-export interface IntrospectionNonNullTypeRef<
-  T extends IntrospectionTypeRef = IntrospectionTypeRef
-> {
-  readonly kind: 'NON_NULL';
-  readonly ofType: T;
-}
-
-export type IntrospectionTypeRef =
-  | IntrospectionNamedTypeRef
-  | IntrospectionListTypeRef<any>
-  | IntrospectionNonNullTypeRef<
-      IntrospectionNamedTypeRef | IntrospectionListTypeRef<any>
-    >;
-
-export type IntrospectionOutputTypeRef =
-  | IntrospectionNamedTypeRef<IntrospectionOutputType>
-  | IntrospectionListTypeRef<any>
-  | IntrospectionNonNullTypeRef<
-      | IntrospectionNamedTypeRef<IntrospectionOutputType>
-      | IntrospectionListTypeRef<any>
-    >;
-
-export type IntrospectionInputTypeRef =
-  | IntrospectionNamedTypeRef<IntrospectionInputType>
-  | IntrospectionListTypeRef<any>
-  | IntrospectionNonNullTypeRef<
-      | IntrospectionNamedTypeRef<IntrospectionInputType>
-      | IntrospectionListTypeRef<any>
-    >;
-
-export interface IntrospectionNamedTypeRef<
-  T extends IntrospectionType = IntrospectionType
-> {
-  readonly kind: T['kind'];
-  readonly name: string;
-}
-
-export interface IntrospectionField {
-  readonly name: string;
-  readonly description?: Maybe<string>;
-  readonly args: ReadonlyArray<IntrospectionInputValue>;
-  readonly type: IntrospectionOutputTypeRef;
-  readonly isDeprecated: boolean;
-  readonly deprecationReason?: Maybe<string>;
-}
-
-export interface IntrospectionInputValue {
-  readonly name: string;
-  readonly description?: Maybe<string>;
-  readonly type: IntrospectionInputTypeRef;
-  readonly defaultValue?: Maybe<string>;
-  readonly isDeprecated?: boolean;
-  readonly deprecationReason?: Maybe<string>;
-}
-
-export interface IntrospectionEnumValue {
-  readonly name: string;
-  readonly description?: Maybe<string>;
-  readonly isDeprecated: boolean;
-  readonly deprecationReason?: Maybe<string>;
-}
-
-export interface IntrospectionDirective {
-  readonly name: string;
-  readonly description?: Maybe<string>;
-  readonly isRepeatable?: boolean;
-  readonly locations: ReadonlyArray<DirectiveLocationEnum>;
-  readonly args: ReadonlyArray<IntrospectionInputValue>;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.js b/includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.js
deleted file mode 100644
index aac7994..0000000
--- a/includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getIntrospectionQuery = getIntrospectionQuery;
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-function getIntrospectionQuery(options) {
-  var optionsWithDefault = _objectSpread({
-    descriptions: true,
-    specifiedByUrl: false,
-    directiveIsRepeatable: false,
-    schemaDescription: false,
-    inputValueDeprecation: false
-  }, options);
-
-  var descriptions = optionsWithDefault.descriptions ? 'description' : '';
-  var specifiedByUrl = optionsWithDefault.specifiedByUrl ? 'specifiedByUrl' : '';
-  var directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable ? 'isRepeatable' : '';
-  var schemaDescription = optionsWithDefault.schemaDescription ? descriptions : '';
-
-  function inputDeprecation(str) {
-    return optionsWithDefault.inputValueDeprecation ? str : '';
-  }
-
-  return "\n    query IntrospectionQuery {\n      __schema {\n        ".concat(schemaDescription, "\n        queryType { name }\n        mutationType { name }\n        subscriptionType { name }\n        types {\n          ...FullType\n        }\n        directives {\n          name\n          ").concat(descriptions, "\n          ").concat(directiveIsRepeatable, "\n          locations\n          args").concat(inputDeprecation('(includeDeprecated: true)'), " {\n            ...InputValue\n          }\n        }\n      }\n    }\n\n    fragment FullType on __Type {\n      kind\n      name\n      ").concat(descriptions, "\n      ").concat(specifiedByUrl, "\n      fields(includeDeprecated: true) {\n        name\n        ").concat(descriptions, "\n        args").concat(inputDeprecation('(includeDeprecated: true)'), " {\n          ...InputValue\n        }\n        type {\n          ...TypeRef\n        }\n        isDeprecated\n        deprecationReason\n      }\n      inputFields").concat(inputDeprecation('(includeDeprecated: true)'), " {\n        ...InputValue\n      }\n      interfaces {\n        ...TypeRef\n      }\n      enumValues(includeDeprecated: true) {\n        name\n        ").concat(descriptions, "\n        isDeprecated\n        deprecationReason\n      }\n      possibleTypes {\n        ...TypeRef\n      }\n    }\n\n    fragment InputValue on __InputValue {\n      name\n      ").concat(descriptions, "\n      type { ...TypeRef }\n      defaultValue\n      ").concat(inputDeprecation('isDeprecated'), "\n      ").concat(inputDeprecation('deprecationReason'), "\n    }\n\n    fragment TypeRef on __Type {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n            kind\n            name\n            ofType {\n              kind\n              name\n              ofType {\n                kind\n                name\n                ofType {\n                  kind\n                  name\n                  ofType {\n                    kind\n                    name\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  ");
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.js.flow b/includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.js.flow
deleted file mode 100644
index db72ed4..0000000
--- a/includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.js.flow
+++ /dev/null
@@ -1,312 +0,0 @@
-// @flow strict
-import type { DirectiveLocationEnum } from '../language/directiveLocation';
-
-export type IntrospectionOptions = {|
-  // Whether to include descriptions in the introspection result.
-  // Default: true
-  descriptions?: boolean,
-
-  // Whether to include `specifiedByUrl` in the introspection result.
-  // Default: false
-  specifiedByUrl?: boolean,
-
-  // Whether to include `isRepeatable` field on directives.
-  // Default: false
-  directiveIsRepeatable?: boolean,
-
-  // Whether to include `description` field on schema.
-  // Default: false
-  schemaDescription?: boolean,
-
-  // Whether target GraphQL server support deprecation of input values.
-  // Default: false
-  inputValueDeprecation?: boolean,
-|};
-
-export function getIntrospectionQuery(options?: IntrospectionOptions): string {
-  const optionsWithDefault = {
-    descriptions: true,
-    specifiedByUrl: false,
-    directiveIsRepeatable: false,
-    schemaDescription: false,
-    inputValueDeprecation: false,
-    ...options,
-  };
-
-  const descriptions = optionsWithDefault.descriptions ? 'description' : '';
-  const specifiedByUrl = optionsWithDefault.specifiedByUrl
-    ? 'specifiedByUrl'
-    : '';
-  const directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable
-    ? 'isRepeatable'
-    : '';
-  const schemaDescription = optionsWithDefault.schemaDescription
-    ? descriptions
-    : '';
-
-  function inputDeprecation(str) {
-    return optionsWithDefault.inputValueDeprecation ? str : '';
-  }
-
-  return `
-    query IntrospectionQuery {
-      __schema {
-        ${schemaDescription}
-        queryType { name }
-        mutationType { name }
-        subscriptionType { name }
-        types {
-          ...FullType
-        }
-        directives {
-          name
-          ${descriptions}
-          ${directiveIsRepeatable}
-          locations
-          args${inputDeprecation('(includeDeprecated: true)')} {
-            ...InputValue
-          }
-        }
-      }
-    }
-
-    fragment FullType on __Type {
-      kind
-      name
-      ${descriptions}
-      ${specifiedByUrl}
-      fields(includeDeprecated: true) {
-        name
-        ${descriptions}
-        args${inputDeprecation('(includeDeprecated: true)')} {
-          ...InputValue
-        }
-        type {
-          ...TypeRef
-        }
-        isDeprecated
-        deprecationReason
-      }
-      inputFields${inputDeprecation('(includeDeprecated: true)')} {
-        ...InputValue
-      }
-      interfaces {
-        ...TypeRef
-      }
-      enumValues(includeDeprecated: true) {
-        name
-        ${descriptions}
-        isDeprecated
-        deprecationReason
-      }
-      possibleTypes {
-        ...TypeRef
-      }
-    }
-
-    fragment InputValue on __InputValue {
-      name
-      ${descriptions}
-      type { ...TypeRef }
-      defaultValue
-      ${inputDeprecation('isDeprecated')}
-      ${inputDeprecation('deprecationReason')}
-    }
-
-    fragment TypeRef on __Type {
-      kind
-      name
-      ofType {
-        kind
-        name
-        ofType {
-          kind
-          name
-          ofType {
-            kind
-            name
-            ofType {
-              kind
-              name
-              ofType {
-                kind
-                name
-                ofType {
-                  kind
-                  name
-                  ofType {
-                    kind
-                    name
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-  `;
-}
-
-export type IntrospectionQuery = {|
-  +__schema: IntrospectionSchema,
-|};
-
-export type IntrospectionSchema = {|
-  +description?: ?string,
-  +queryType: IntrospectionNamedTypeRef<IntrospectionObjectType>,
-  +mutationType: ?IntrospectionNamedTypeRef<IntrospectionObjectType>,
-  +subscriptionType: ?IntrospectionNamedTypeRef<IntrospectionObjectType>,
-  +types: $ReadOnlyArray<IntrospectionType>,
-  +directives: $ReadOnlyArray<IntrospectionDirective>,
-|};
-
-export type IntrospectionType =
-  | IntrospectionScalarType
-  | IntrospectionObjectType
-  | IntrospectionInterfaceType
-  | IntrospectionUnionType
-  | IntrospectionEnumType
-  | IntrospectionInputObjectType;
-
-export type IntrospectionOutputType =
-  | IntrospectionScalarType
-  | IntrospectionObjectType
-  | IntrospectionInterfaceType
-  | IntrospectionUnionType
-  | IntrospectionEnumType;
-
-export type IntrospectionInputType =
-  | IntrospectionScalarType
-  | IntrospectionEnumType
-  | IntrospectionInputObjectType;
-
-export type IntrospectionScalarType = {|
-  +kind: 'SCALAR',
-  +name: string,
-  +description?: ?string,
-  +specifiedByUrl?: ?string,
-|};
-
-export type IntrospectionObjectType = {|
-  +kind: 'OBJECT',
-  +name: string,
-  +description?: ?string,
-  +fields: $ReadOnlyArray<IntrospectionField>,
-  +interfaces: $ReadOnlyArray<
-    IntrospectionNamedTypeRef<IntrospectionInterfaceType>,
-  >,
-|};
-
-export type IntrospectionInterfaceType = {|
-  +kind: 'INTERFACE',
-  +name: string,
-  +description?: ?string,
-  +fields: $ReadOnlyArray<IntrospectionField>,
-  +interfaces: $ReadOnlyArray<
-    IntrospectionNamedTypeRef<IntrospectionInterfaceType>,
-  >,
-  +possibleTypes: $ReadOnlyArray<
-    IntrospectionNamedTypeRef<IntrospectionObjectType>,
-  >,
-|};
-
-export type IntrospectionUnionType = {|
-  +kind: 'UNION',
-  +name: string,
-  +description?: ?string,
-  +possibleTypes: $ReadOnlyArray<
-    IntrospectionNamedTypeRef<IntrospectionObjectType>,
-  >,
-|};
-
-export type IntrospectionEnumType = {|
-  +kind: 'ENUM',
-  +name: string,
-  +description?: ?string,
-  +enumValues: $ReadOnlyArray<IntrospectionEnumValue>,
-|};
-
-export type IntrospectionInputObjectType = {|
-  +kind: 'INPUT_OBJECT',
-  +name: string,
-  +description?: ?string,
-  +inputFields: $ReadOnlyArray<IntrospectionInputValue>,
-|};
-
-export type IntrospectionListTypeRef<
-  T: IntrospectionTypeRef = IntrospectionTypeRef,
-> = {|
-  +kind: 'LIST',
-  +ofType: T,
-|};
-
-export type IntrospectionNonNullTypeRef<
-  T: IntrospectionTypeRef = IntrospectionTypeRef,
-> = {|
-  +kind: 'NON_NULL',
-  +ofType: T,
-|};
-
-export type IntrospectionTypeRef =
-  | IntrospectionNamedTypeRef<>
-  | IntrospectionListTypeRef<>
-  | IntrospectionNonNullTypeRef<
-      IntrospectionNamedTypeRef<> | IntrospectionListTypeRef<>,
-    >;
-
-export type IntrospectionOutputTypeRef =
-  | IntrospectionNamedTypeRef<IntrospectionOutputType>
-  | IntrospectionListTypeRef<IntrospectionOutputTypeRef>
-  | IntrospectionNonNullTypeRef<
-      | IntrospectionNamedTypeRef<IntrospectionOutputType>
-      | IntrospectionListTypeRef<IntrospectionOutputTypeRef>,
-    >;
-
-export type IntrospectionInputTypeRef =
-  | IntrospectionNamedTypeRef<IntrospectionInputType>
-  | IntrospectionListTypeRef<IntrospectionInputTypeRef>
-  | IntrospectionNonNullTypeRef<
-      | IntrospectionNamedTypeRef<IntrospectionInputType>
-      | IntrospectionListTypeRef<IntrospectionInputTypeRef>,
-    >;
-
-export type IntrospectionNamedTypeRef<
-  T: IntrospectionType = IntrospectionType,
-> = {|
-  +kind: $PropertyType<T, 'kind'>,
-  +name: string,
-|};
-
-export type IntrospectionField = {|
-  +name: string,
-  +description?: ?string,
-  +args: $ReadOnlyArray<IntrospectionInputValue>,
-  +type: IntrospectionOutputTypeRef,
-  +isDeprecated: boolean,
-  +deprecationReason: ?string,
-|};
-
-export type IntrospectionInputValue = {|
-  +name: string,
-  +description?: ?string,
-  +type: IntrospectionInputTypeRef,
-  +defaultValue: ?string,
-  +isDeprecated?: boolean,
-  +deprecationReason?: ?string,
-|};
-
-export type IntrospectionEnumValue = {|
-  +name: string,
-  +description?: ?string,
-  +isDeprecated: boolean,
-  +deprecationReason: ?string,
-|};
-
-export type IntrospectionDirective = {|
-  +name: string,
-  +description?: ?string,
-  +isRepeatable?: boolean,
-  +locations: $ReadOnlyArray<DirectiveLocationEnum>,
-  +args: $ReadOnlyArray<IntrospectionInputValue>,
-|};
diff --git a/includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.mjs b/includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.mjs
deleted file mode 100644
index 3951060..0000000
--- a/includes/external/school/node_modules/graphql/utilities/getIntrospectionQuery.mjs
+++ /dev/null
@@ -1,26 +0,0 @@
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-export function getIntrospectionQuery(options) {
-  var optionsWithDefault = _objectSpread({
-    descriptions: true,
-    specifiedByUrl: false,
-    directiveIsRepeatable: false,
-    schemaDescription: false,
-    inputValueDeprecation: false
-  }, options);
-
-  var descriptions = optionsWithDefault.descriptions ? 'description' : '';
-  var specifiedByUrl = optionsWithDefault.specifiedByUrl ? 'specifiedByUrl' : '';
-  var directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable ? 'isRepeatable' : '';
-  var schemaDescription = optionsWithDefault.schemaDescription ? descriptions : '';
-
-  function inputDeprecation(str) {
-    return optionsWithDefault.inputValueDeprecation ? str : '';
-  }
-
-  return "\n    query IntrospectionQuery {\n      __schema {\n        ".concat(schemaDescription, "\n        queryType { name }\n        mutationType { name }\n        subscriptionType { name }\n        types {\n          ...FullType\n        }\n        directives {\n          name\n          ").concat(descriptions, "\n          ").concat(directiveIsRepeatable, "\n          locations\n          args").concat(inputDeprecation('(includeDeprecated: true)'), " {\n            ...InputValue\n          }\n        }\n      }\n    }\n\n    fragment FullType on __Type {\n      kind\n      name\n      ").concat(descriptions, "\n      ").concat(specifiedByUrl, "\n      fields(includeDeprecated: true) {\n        name\n        ").concat(descriptions, "\n        args").concat(inputDeprecation('(includeDeprecated: true)'), " {\n          ...InputValue\n        }\n        type {\n          ...TypeRef\n        }\n        isDeprecated\n        deprecationReason\n      }\n      inputFields").concat(inputDeprecation('(includeDeprecated: true)'), " {\n        ...InputValue\n      }\n      interfaces {\n        ...TypeRef\n      }\n      enumValues(includeDeprecated: true) {\n        name\n        ").concat(descriptions, "\n        isDeprecated\n        deprecationReason\n      }\n      possibleTypes {\n        ...TypeRef\n      }\n    }\n\n    fragment InputValue on __InputValue {\n      name\n      ").concat(descriptions, "\n      type { ...TypeRef }\n      defaultValue\n      ").concat(inputDeprecation('isDeprecated'), "\n      ").concat(inputDeprecation('deprecationReason'), "\n    }\n\n    fragment TypeRef on __Type {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n            kind\n            name\n            ofType {\n              kind\n              name\n              ofType {\n                kind\n                name\n                ofType {\n                  kind\n                  name\n                  ofType {\n                    kind\n                    name\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  ");
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/getOperationAST.d.ts b/includes/external/school/node_modules/graphql/utilities/getOperationAST.d.ts
deleted file mode 100644
index d17a9b4..0000000
--- a/includes/external/school/node_modules/graphql/utilities/getOperationAST.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { Maybe } from '../jsutils/Maybe';
-
-import { DocumentNode, OperationDefinitionNode } from '../language/ast';
-
-/**
- * Returns an operation AST given a document AST and optionally an operation
- * name. If a name is not provided, an operation is only returned if only one is
- * provided in the document.
- */
-export function getOperationAST(
-  documentAST: DocumentNode,
-  operationName?: Maybe<string>,
-): Maybe<OperationDefinitionNode>;
diff --git a/includes/external/school/node_modules/graphql/utilities/getOperationAST.js b/includes/external/school/node_modules/graphql/utilities/getOperationAST.js
deleted file mode 100644
index 976879c..0000000
--- a/includes/external/school/node_modules/graphql/utilities/getOperationAST.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getOperationAST = getOperationAST;
-
-var _kinds = require("../language/kinds.js");
-
-/**
- * Returns an operation AST given a document AST and optionally an operation
- * name. If a name is not provided, an operation is only returned if only one is
- * provided in the document.
- */
-function getOperationAST(documentAST, operationName) {
-  var operation = null;
-
-  for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {
-    var definition = _documentAST$definiti2[_i2];
-
-    if (definition.kind === _kinds.Kind.OPERATION_DEFINITION) {
-      var _definition$name;
-
-      if (operationName == null) {
-        // If no operation name was provided, only return an Operation if there
-        // is one defined in the document. Upon encountering the second, return
-        // null.
-        if (operation) {
-          return null;
-        }
-
-        operation = definition;
-      } else if (((_definition$name = definition.name) === null || _definition$name === void 0 ? void 0 : _definition$name.value) === operationName) {
-        return definition;
-      }
-    }
-  }
-
-  return operation;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/getOperationAST.js.flow b/includes/external/school/node_modules/graphql/utilities/getOperationAST.js.flow
deleted file mode 100644
index eaee0b0..0000000
--- a/includes/external/school/node_modules/graphql/utilities/getOperationAST.js.flow
+++ /dev/null
@@ -1,31 +0,0 @@
-// @flow strict
-import type { DocumentNode, OperationDefinitionNode } from '../language/ast';
-import { Kind } from '../language/kinds';
-
-/**
- * Returns an operation AST given a document AST and optionally an operation
- * name. If a name is not provided, an operation is only returned if only one is
- * provided in the document.
- */
-export function getOperationAST(
-  documentAST: DocumentNode,
-  operationName?: ?string,
-): ?OperationDefinitionNode {
-  let operation = null;
-  for (const definition of documentAST.definitions) {
-    if (definition.kind === Kind.OPERATION_DEFINITION) {
-      if (operationName == null) {
-        // If no operation name was provided, only return an Operation if there
-        // is one defined in the document. Upon encountering the second, return
-        // null.
-        if (operation) {
-          return null;
-        }
-        operation = definition;
-      } else if (definition.name?.value === operationName) {
-        return definition;
-      }
-    }
-  }
-  return operation;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/getOperationAST.mjs b/includes/external/school/node_modules/graphql/utilities/getOperationAST.mjs
deleted file mode 100644
index ce72191..0000000
--- a/includes/external/school/node_modules/graphql/utilities/getOperationAST.mjs
+++ /dev/null
@@ -1,33 +0,0 @@
-import { Kind } from "../language/kinds.mjs";
-/**
- * Returns an operation AST given a document AST and optionally an operation
- * name. If a name is not provided, an operation is only returned if only one is
- * provided in the document.
- */
-
-export function getOperationAST(documentAST, operationName) {
-  var operation = null;
-
-  for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {
-    var definition = _documentAST$definiti2[_i2];
-
-    if (definition.kind === Kind.OPERATION_DEFINITION) {
-      var _definition$name;
-
-      if (operationName == null) {
-        // If no operation name was provided, only return an Operation if there
-        // is one defined in the document. Upon encountering the second, return
-        // null.
-        if (operation) {
-          return null;
-        }
-
-        operation = definition;
-      } else if (((_definition$name = definition.name) === null || _definition$name === void 0 ? void 0 : _definition$name.value) === operationName) {
-        return definition;
-      }
-    }
-  }
-
-  return operation;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/getOperationRootType.d.ts b/includes/external/school/node_modules/graphql/utilities/getOperationRootType.d.ts
deleted file mode 100644
index 5adc59c..0000000
--- a/includes/external/school/node_modules/graphql/utilities/getOperationRootType.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import {
-  OperationDefinitionNode,
-  OperationTypeDefinitionNode,
-} from '../language/ast';
-import { GraphQLSchema } from '../type/schema';
-import { GraphQLObjectType } from '../type/definition';
-
-/**
- * Extracts the root type of the operation from the schema.
- */
-export function getOperationRootType(
-  schema: GraphQLSchema,
-  operation: OperationDefinitionNode | OperationTypeDefinitionNode,
-): GraphQLObjectType;
diff --git a/includes/external/school/node_modules/graphql/utilities/getOperationRootType.js b/includes/external/school/node_modules/graphql/utilities/getOperationRootType.js
deleted file mode 100644
index f179fc3..0000000
--- a/includes/external/school/node_modules/graphql/utilities/getOperationRootType.js
+++ /dev/null
@@ -1,45 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getOperationRootType = getOperationRootType;
-
-var _GraphQLError = require("../error/GraphQLError.js");
-
-/**
- * Extracts the root type of the operation from the schema.
- */
-function getOperationRootType(schema, operation) {
-  if (operation.operation === 'query') {
-    var queryType = schema.getQueryType();
-
-    if (!queryType) {
-      throw new _GraphQLError.GraphQLError('Schema does not define the required query root type.', operation);
-    }
-
-    return queryType;
-  }
-
-  if (operation.operation === 'mutation') {
-    var mutationType = schema.getMutationType();
-
-    if (!mutationType) {
-      throw new _GraphQLError.GraphQLError('Schema is not configured for mutations.', operation);
-    }
-
-    return mutationType;
-  }
-
-  if (operation.operation === 'subscription') {
-    var subscriptionType = schema.getSubscriptionType();
-
-    if (!subscriptionType) {
-      throw new _GraphQLError.GraphQLError('Schema is not configured for subscriptions.', operation);
-    }
-
-    return subscriptionType;
-  }
-
-  throw new _GraphQLError.GraphQLError('Can only have query, mutation and subscription operations.', operation);
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/getOperationRootType.js.flow b/includes/external/school/node_modules/graphql/utilities/getOperationRootType.js.flow
deleted file mode 100644
index 5358be4..0000000
--- a/includes/external/school/node_modules/graphql/utilities/getOperationRootType.js.flow
+++ /dev/null
@@ -1,56 +0,0 @@
-// @flow strict
-import { GraphQLError } from '../error/GraphQLError';
-
-import type {
-  OperationDefinitionNode,
-  OperationTypeDefinitionNode,
-} from '../language/ast';
-
-import type { GraphQLSchema } from '../type/schema';
-import type { GraphQLObjectType } from '../type/definition';
-
-/**
- * Extracts the root type of the operation from the schema.
- */
-export function getOperationRootType(
-  schema: GraphQLSchema,
-  operation: OperationDefinitionNode | OperationTypeDefinitionNode,
-): GraphQLObjectType {
-  if (operation.operation === 'query') {
-    const queryType = schema.getQueryType();
-    if (!queryType) {
-      throw new GraphQLError(
-        'Schema does not define the required query root type.',
-        operation,
-      );
-    }
-    return queryType;
-  }
-
-  if (operation.operation === 'mutation') {
-    const mutationType = schema.getMutationType();
-    if (!mutationType) {
-      throw new GraphQLError(
-        'Schema is not configured for mutations.',
-        operation,
-      );
-    }
-    return mutationType;
-  }
-
-  if (operation.operation === 'subscription') {
-    const subscriptionType = schema.getSubscriptionType();
-    if (!subscriptionType) {
-      throw new GraphQLError(
-        'Schema is not configured for subscriptions.',
-        operation,
-      );
-    }
-    return subscriptionType;
-  }
-
-  throw new GraphQLError(
-    'Can only have query, mutation and subscription operations.',
-    operation,
-  );
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/getOperationRootType.mjs b/includes/external/school/node_modules/graphql/utilities/getOperationRootType.mjs
deleted file mode 100644
index e0b75d7..0000000
--- a/includes/external/school/node_modules/graphql/utilities/getOperationRootType.mjs
+++ /dev/null
@@ -1,38 +0,0 @@
-import { GraphQLError } from "../error/GraphQLError.mjs";
-
-/**
- * Extracts the root type of the operation from the schema.
- */
-export function getOperationRootType(schema, operation) {
-  if (operation.operation === 'query') {
-    var queryType = schema.getQueryType();
-
-    if (!queryType) {
-      throw new GraphQLError('Schema does not define the required query root type.', operation);
-    }
-
-    return queryType;
-  }
-
-  if (operation.operation === 'mutation') {
-    var mutationType = schema.getMutationType();
-
-    if (!mutationType) {
-      throw new GraphQLError('Schema is not configured for mutations.', operation);
-    }
-
-    return mutationType;
-  }
-
-  if (operation.operation === 'subscription') {
-    var subscriptionType = schema.getSubscriptionType();
-
-    if (!subscriptionType) {
-      throw new GraphQLError('Schema is not configured for subscriptions.', operation);
-    }
-
-    return subscriptionType;
-  }
-
-  throw new GraphQLError('Can only have query, mutation and subscription operations.', operation);
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/index.d.ts b/includes/external/school/node_modules/graphql/utilities/index.d.ts
deleted file mode 100644
index a8019f9..0000000
--- a/includes/external/school/node_modules/graphql/utilities/index.d.ts
+++ /dev/null
@@ -1,119 +0,0 @@
-export {
-  // Produce the GraphQL query recommended for a full schema introspection.
-  // Accepts optional IntrospectionOptions.
-  getIntrospectionQuery,
-  IntrospectionOptions,
-  IntrospectionQuery,
-  IntrospectionSchema,
-  IntrospectionType,
-  IntrospectionInputType,
-  IntrospectionOutputType,
-  IntrospectionScalarType,
-  IntrospectionObjectType,
-  IntrospectionInterfaceType,
-  IntrospectionUnionType,
-  IntrospectionEnumType,
-  IntrospectionInputObjectType,
-  IntrospectionTypeRef,
-  IntrospectionInputTypeRef,
-  IntrospectionOutputTypeRef,
-  IntrospectionNamedTypeRef,
-  IntrospectionListTypeRef,
-  IntrospectionNonNullTypeRef,
-  IntrospectionField,
-  IntrospectionInputValue,
-  IntrospectionEnumValue,
-  IntrospectionDirective,
-} from './getIntrospectionQuery';
-
-// Gets the target Operation from a Document
-export { getOperationAST } from './getOperationAST';
-
-// Gets the Type for the target Operation AST.
-export { getOperationRootType } from './getOperationRootType';
-
-// Convert a GraphQLSchema to an IntrospectionQuery
-export { introspectionFromSchema } from './introspectionFromSchema';
-
-// Build a GraphQLSchema from an introspection result.
-export { buildClientSchema } from './buildClientSchema';
-
-// Build a GraphQLSchema from GraphQL Schema language.
-export {
-  buildASTSchema,
-  buildSchema,
-  BuildSchemaOptions,
-} from './buildASTSchema';
-
-// Extends an existing GraphQLSchema from a parsed GraphQL Schema language AST.
-export {
-  extendSchema,
-  // @deprecated: Get the description from a schema AST node and supports legacy
-  // syntax for specifying descriptions - will be removed in v16
-  getDescription,
-} from './extendSchema';
-
-// Sort a GraphQLSchema.
-export { lexicographicSortSchema } from './lexicographicSortSchema';
-
-// Print a GraphQLSchema to GraphQL Schema language.
-export {
-  printSchema,
-  printType,
-  printIntrospectionSchema,
-} from './printSchema';
-
-// Create a GraphQLType from a GraphQL language AST.
-export { typeFromAST } from './typeFromAST';
-
-// Create a JavaScript value from a GraphQL language AST with a type.
-export { valueFromAST } from './valueFromAST';
-
-// Create a JavaScript value from a GraphQL language AST without a type.
-export { valueFromASTUntyped } from './valueFromASTUntyped';
-
-// Create a GraphQL language AST from a JavaScript value.
-export { astFromValue } from './astFromValue';
-
-// A helper to use within recursive-descent visitors which need to be aware of
-// the GraphQL type system.
-export { TypeInfo, visitWithTypeInfo } from './TypeInfo';
-
-// Coerces a JavaScript value to a GraphQL type, or produces errors.
-export { coerceInputValue } from './coerceInputValue';
-
-// Concatenates multiple AST together.
-export { concatAST } from './concatAST';
-
-// Separates an AST into an AST per Operation.
-export { separateOperations } from './separateOperations';
-
-// Strips characters that are not significant to the validity or execution
-// of a GraphQL document.
-export { stripIgnoredCharacters } from './stripIgnoredCharacters';
-
-// Comparators for types
-export {
-  isEqualType,
-  isTypeSubTypeOf,
-  doTypesOverlap,
-} from './typeComparators';
-
-// Asserts that a string is a valid GraphQL name
-export { assertValidName, isValidNameError } from './assertValidName';
-
-// Compares two GraphQLSchemas and detects breaking changes.
-export {
-  BreakingChangeType,
-  DangerousChangeType,
-  findBreakingChanges,
-  findDangerousChanges,
-  BreakingChange,
-  DangerousChange,
-} from './findBreakingChanges';
-
-// Wrapper type that contains DocumentNode and types that can be deduced from it.
-export { TypedQueryDocumentNode } from './typedQueryDocumentNode';
-
-// @deprecated: Report all deprecated usage within a GraphQL document.
-export { findDeprecatedUsages } from './findDeprecatedUsages';
diff --git a/includes/external/school/node_modules/graphql/utilities/index.js b/includes/external/school/node_modules/graphql/utilities/index.js
deleted file mode 100644
index 086e5f3..0000000
--- a/includes/external/school/node_modules/graphql/utilities/index.js
+++ /dev/null
@@ -1,247 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-Object.defineProperty(exports, "getIntrospectionQuery", {
-  enumerable: true,
-  get: function get() {
-    return _getIntrospectionQuery.getIntrospectionQuery;
-  }
-});
-Object.defineProperty(exports, "getOperationAST", {
-  enumerable: true,
-  get: function get() {
-    return _getOperationAST.getOperationAST;
-  }
-});
-Object.defineProperty(exports, "getOperationRootType", {
-  enumerable: true,
-  get: function get() {
-    return _getOperationRootType.getOperationRootType;
-  }
-});
-Object.defineProperty(exports, "introspectionFromSchema", {
-  enumerable: true,
-  get: function get() {
-    return _introspectionFromSchema.introspectionFromSchema;
-  }
-});
-Object.defineProperty(exports, "buildClientSchema", {
-  enumerable: true,
-  get: function get() {
-    return _buildClientSchema.buildClientSchema;
-  }
-});
-Object.defineProperty(exports, "buildASTSchema", {
-  enumerable: true,
-  get: function get() {
-    return _buildASTSchema.buildASTSchema;
-  }
-});
-Object.defineProperty(exports, "buildSchema", {
-  enumerable: true,
-  get: function get() {
-    return _buildASTSchema.buildSchema;
-  }
-});
-Object.defineProperty(exports, "extendSchema", {
-  enumerable: true,
-  get: function get() {
-    return _extendSchema.extendSchema;
-  }
-});
-Object.defineProperty(exports, "getDescription", {
-  enumerable: true,
-  get: function get() {
-    return _extendSchema.getDescription;
-  }
-});
-Object.defineProperty(exports, "lexicographicSortSchema", {
-  enumerable: true,
-  get: function get() {
-    return _lexicographicSortSchema.lexicographicSortSchema;
-  }
-});
-Object.defineProperty(exports, "printSchema", {
-  enumerable: true,
-  get: function get() {
-    return _printSchema.printSchema;
-  }
-});
-Object.defineProperty(exports, "printType", {
-  enumerable: true,
-  get: function get() {
-    return _printSchema.printType;
-  }
-});
-Object.defineProperty(exports, "printIntrospectionSchema", {
-  enumerable: true,
-  get: function get() {
-    return _printSchema.printIntrospectionSchema;
-  }
-});
-Object.defineProperty(exports, "typeFromAST", {
-  enumerable: true,
-  get: function get() {
-    return _typeFromAST.typeFromAST;
-  }
-});
-Object.defineProperty(exports, "valueFromAST", {
-  enumerable: true,
-  get: function get() {
-    return _valueFromAST.valueFromAST;
-  }
-});
-Object.defineProperty(exports, "valueFromASTUntyped", {
-  enumerable: true,
-  get: function get() {
-    return _valueFromASTUntyped.valueFromASTUntyped;
-  }
-});
-Object.defineProperty(exports, "astFromValue", {
-  enumerable: true,
-  get: function get() {
-    return _astFromValue.astFromValue;
-  }
-});
-Object.defineProperty(exports, "TypeInfo", {
-  enumerable: true,
-  get: function get() {
-    return _TypeInfo.TypeInfo;
-  }
-});
-Object.defineProperty(exports, "visitWithTypeInfo", {
-  enumerable: true,
-  get: function get() {
-    return _TypeInfo.visitWithTypeInfo;
-  }
-});
-Object.defineProperty(exports, "coerceInputValue", {
-  enumerable: true,
-  get: function get() {
-    return _coerceInputValue.coerceInputValue;
-  }
-});
-Object.defineProperty(exports, "concatAST", {
-  enumerable: true,
-  get: function get() {
-    return _concatAST.concatAST;
-  }
-});
-Object.defineProperty(exports, "separateOperations", {
-  enumerable: true,
-  get: function get() {
-    return _separateOperations.separateOperations;
-  }
-});
-Object.defineProperty(exports, "stripIgnoredCharacters", {
-  enumerable: true,
-  get: function get() {
-    return _stripIgnoredCharacters.stripIgnoredCharacters;
-  }
-});
-Object.defineProperty(exports, "isEqualType", {
-  enumerable: true,
-  get: function get() {
-    return _typeComparators.isEqualType;
-  }
-});
-Object.defineProperty(exports, "isTypeSubTypeOf", {
-  enumerable: true,
-  get: function get() {
-    return _typeComparators.isTypeSubTypeOf;
-  }
-});
-Object.defineProperty(exports, "doTypesOverlap", {
-  enumerable: true,
-  get: function get() {
-    return _typeComparators.doTypesOverlap;
-  }
-});
-Object.defineProperty(exports, "assertValidName", {
-  enumerable: true,
-  get: function get() {
-    return _assertValidName.assertValidName;
-  }
-});
-Object.defineProperty(exports, "isValidNameError", {
-  enumerable: true,
-  get: function get() {
-    return _assertValidName.isValidNameError;
-  }
-});
-Object.defineProperty(exports, "BreakingChangeType", {
-  enumerable: true,
-  get: function get() {
-    return _findBreakingChanges.BreakingChangeType;
-  }
-});
-Object.defineProperty(exports, "DangerousChangeType", {
-  enumerable: true,
-  get: function get() {
-    return _findBreakingChanges.DangerousChangeType;
-  }
-});
-Object.defineProperty(exports, "findBreakingChanges", {
-  enumerable: true,
-  get: function get() {
-    return _findBreakingChanges.findBreakingChanges;
-  }
-});
-Object.defineProperty(exports, "findDangerousChanges", {
-  enumerable: true,
-  get: function get() {
-    return _findBreakingChanges.findDangerousChanges;
-  }
-});
-Object.defineProperty(exports, "findDeprecatedUsages", {
-  enumerable: true,
-  get: function get() {
-    return _findDeprecatedUsages.findDeprecatedUsages;
-  }
-});
-
-var _getIntrospectionQuery = require("./getIntrospectionQuery.js");
-
-var _getOperationAST = require("./getOperationAST.js");
-
-var _getOperationRootType = require("./getOperationRootType.js");
-
-var _introspectionFromSchema = require("./introspectionFromSchema.js");
-
-var _buildClientSchema = require("./buildClientSchema.js");
-
-var _buildASTSchema = require("./buildASTSchema.js");
-
-var _extendSchema = require("./extendSchema.js");
-
-var _lexicographicSortSchema = require("./lexicographicSortSchema.js");
-
-var _printSchema = require("./printSchema.js");
-
-var _typeFromAST = require("./typeFromAST.js");
-
-var _valueFromAST = require("./valueFromAST.js");
-
-var _valueFromASTUntyped = require("./valueFromASTUntyped.js");
-
-var _astFromValue = require("./astFromValue.js");
-
-var _TypeInfo = require("./TypeInfo.js");
-
-var _coerceInputValue = require("./coerceInputValue.js");
-
-var _concatAST = require("./concatAST.js");
-
-var _separateOperations = require("./separateOperations.js");
-
-var _stripIgnoredCharacters = require("./stripIgnoredCharacters.js");
-
-var _typeComparators = require("./typeComparators.js");
-
-var _assertValidName = require("./assertValidName.js");
-
-var _findBreakingChanges = require("./findBreakingChanges.js");
-
-var _findDeprecatedUsages = require("./findDeprecatedUsages.js");
diff --git a/includes/external/school/node_modules/graphql/utilities/index.js.flow b/includes/external/school/node_modules/graphql/utilities/index.js.flow
deleted file mode 100644
index 96564b7..0000000
--- a/includes/external/school/node_modules/graphql/utilities/index.js.flow
+++ /dev/null
@@ -1,114 +0,0 @@
-// @flow strict
-// Produce the GraphQL query recommended for a full schema introspection.
-// Accepts optional IntrospectionOptions.
-export { getIntrospectionQuery } from './getIntrospectionQuery';
-
-export type {
-  IntrospectionOptions,
-  IntrospectionQuery,
-  IntrospectionSchema,
-  IntrospectionType,
-  IntrospectionInputType,
-  IntrospectionOutputType,
-  IntrospectionScalarType,
-  IntrospectionObjectType,
-  IntrospectionInterfaceType,
-  IntrospectionUnionType,
-  IntrospectionEnumType,
-  IntrospectionInputObjectType,
-  IntrospectionTypeRef,
-  IntrospectionInputTypeRef,
-  IntrospectionOutputTypeRef,
-  IntrospectionNamedTypeRef,
-  IntrospectionListTypeRef,
-  IntrospectionNonNullTypeRef,
-  IntrospectionField,
-  IntrospectionInputValue,
-  IntrospectionEnumValue,
-  IntrospectionDirective,
-} from './getIntrospectionQuery';
-
-// Gets the target Operation from a Document.
-export { getOperationAST } from './getOperationAST';
-
-// Gets the Type for the target Operation AST.
-export { getOperationRootType } from './getOperationRootType';
-
-// Convert a GraphQLSchema to an IntrospectionQuery.
-export { introspectionFromSchema } from './introspectionFromSchema';
-
-// Build a GraphQLSchema from an introspection result.
-export { buildClientSchema } from './buildClientSchema';
-
-// Build a GraphQLSchema from GraphQL Schema language.
-export { buildASTSchema, buildSchema } from './buildASTSchema';
-export type { BuildSchemaOptions } from './buildASTSchema';
-
-// Extends an existing GraphQLSchema from a parsed GraphQL Schema language AST.
-export {
-  extendSchema,
-  // @deprecated: Get the description from a schema AST node and supports legacy
-  // syntax for specifying descriptions - will be removed in v16.
-  getDescription,
-} from './extendSchema';
-
-// Sort a GraphQLSchema.
-export { lexicographicSortSchema } from './lexicographicSortSchema';
-
-// Print a GraphQLSchema to GraphQL Schema language.
-export {
-  printSchema,
-  printType,
-  printIntrospectionSchema,
-} from './printSchema';
-
-// Create a GraphQLType from a GraphQL language AST.
-export { typeFromAST } from './typeFromAST';
-
-// Create a JavaScript value from a GraphQL language AST with a type.
-export { valueFromAST } from './valueFromAST';
-
-// Create a JavaScript value from a GraphQL language AST without a type.
-export { valueFromASTUntyped } from './valueFromASTUntyped';
-
-// Create a GraphQL language AST from a JavaScript value.
-export { astFromValue } from './astFromValue';
-
-// A helper to use within recursive-descent visitors which need to be aware of
-// the GraphQL type system.
-export { TypeInfo, visitWithTypeInfo } from './TypeInfo';
-
-// Coerces a JavaScript value to a GraphQL type, or produces errors.
-export { coerceInputValue } from './coerceInputValue';
-
-// Concatenates multiple AST together.
-export { concatAST } from './concatAST';
-
-// Separates an AST into an AST per Operation.
-export { separateOperations } from './separateOperations';
-
-// Strips characters that are not significant to the validity or execution
-// of a GraphQL document.
-export { stripIgnoredCharacters } from './stripIgnoredCharacters';
-
-// Comparators for types
-export {
-  isEqualType,
-  isTypeSubTypeOf,
-  doTypesOverlap,
-} from './typeComparators';
-
-// Asserts that a string is a valid GraphQL name
-export { assertValidName, isValidNameError } from './assertValidName';
-
-// Compares two GraphQLSchemas and detects breaking changes.
-export {
-  BreakingChangeType,
-  DangerousChangeType,
-  findBreakingChanges,
-  findDangerousChanges,
-} from './findBreakingChanges';
-export type { BreakingChange, DangerousChange } from './findBreakingChanges';
-
-// @deprecated: Report all deprecated usage within a GraphQL document.
-export { findDeprecatedUsages } from './findDeprecatedUsages';
diff --git a/includes/external/school/node_modules/graphql/utilities/index.mjs b/includes/external/school/node_modules/graphql/utilities/index.mjs
deleted file mode 100644
index 68868fe..0000000
--- a/includes/external/school/node_modules/graphql/utilities/index.mjs
+++ /dev/null
@@ -1,49 +0,0 @@
-// Produce the GraphQL query recommended for a full schema introspection.
-// Accepts optional IntrospectionOptions.
-export { getIntrospectionQuery } from "./getIntrospectionQuery.mjs";
-// Gets the target Operation from a Document.
-export { getOperationAST } from "./getOperationAST.mjs"; // Gets the Type for the target Operation AST.
-
-export { getOperationRootType } from "./getOperationRootType.mjs"; // Convert a GraphQLSchema to an IntrospectionQuery.
-
-export { introspectionFromSchema } from "./introspectionFromSchema.mjs"; // Build a GraphQLSchema from an introspection result.
-
-export { buildClientSchema } from "./buildClientSchema.mjs"; // Build a GraphQLSchema from GraphQL Schema language.
-
-export { buildASTSchema, buildSchema } from "./buildASTSchema.mjs";
-// Extends an existing GraphQLSchema from a parsed GraphQL Schema language AST.
-export { extendSchema // @deprecated: Get the description from a schema AST node and supports legacy
-// syntax for specifying descriptions - will be removed in v16.
-, getDescription } from "./extendSchema.mjs"; // Sort a GraphQLSchema.
-
-export { lexicographicSortSchema } from "./lexicographicSortSchema.mjs"; // Print a GraphQLSchema to GraphQL Schema language.
-
-export { printSchema, printType, printIntrospectionSchema } from "./printSchema.mjs"; // Create a GraphQLType from a GraphQL language AST.
-
-export { typeFromAST } from "./typeFromAST.mjs"; // Create a JavaScript value from a GraphQL language AST with a type.
-
-export { valueFromAST } from "./valueFromAST.mjs"; // Create a JavaScript value from a GraphQL language AST without a type.
-
-export { valueFromASTUntyped } from "./valueFromASTUntyped.mjs"; // Create a GraphQL language AST from a JavaScript value.
-
-export { astFromValue } from "./astFromValue.mjs"; // A helper to use within recursive-descent visitors which need to be aware of
-// the GraphQL type system.
-
-export { TypeInfo, visitWithTypeInfo } from "./TypeInfo.mjs"; // Coerces a JavaScript value to a GraphQL type, or produces errors.
-
-export { coerceInputValue } from "./coerceInputValue.mjs"; // Concatenates multiple AST together.
-
-export { concatAST } from "./concatAST.mjs"; // Separates an AST into an AST per Operation.
-
-export { separateOperations } from "./separateOperations.mjs"; // Strips characters that are not significant to the validity or execution
-// of a GraphQL document.
-
-export { stripIgnoredCharacters } from "./stripIgnoredCharacters.mjs"; // Comparators for types
-
-export { isEqualType, isTypeSubTypeOf, doTypesOverlap } from "./typeComparators.mjs"; // Asserts that a string is a valid GraphQL name
-
-export { assertValidName, isValidNameError } from "./assertValidName.mjs"; // Compares two GraphQLSchemas and detects breaking changes.
-
-export { BreakingChangeType, DangerousChangeType, findBreakingChanges, findDangerousChanges } from "./findBreakingChanges.mjs";
-// @deprecated: Report all deprecated usage within a GraphQL document.
-export { findDeprecatedUsages } from "./findDeprecatedUsages.mjs";
diff --git a/includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.d.ts b/includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.d.ts
deleted file mode 100644
index ed9abf1..0000000
--- a/includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { GraphQLSchema } from '../type/schema';
-
-import {
-  IntrospectionQuery,
-  IntrospectionOptions,
-} from './getIntrospectionQuery';
-
-/**
- * Build an IntrospectionQuery from a GraphQLSchema
- *
- * IntrospectionQuery is useful for utilities that care about type and field
- * relationships, but do not need to traverse through those relationships.
- *
- * This is the inverse of buildClientSchema. The primary use case is outside
- * of the server context, for instance when doing schema comparisons.
- */
-export function introspectionFromSchema(
-  schema: GraphQLSchema,
-  options?: IntrospectionOptions,
-): IntrospectionQuery;
diff --git a/includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.js b/includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.js
deleted file mode 100644
index 3a1780e..0000000
--- a/includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.js
+++ /dev/null
@@ -1,48 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.introspectionFromSchema = introspectionFromSchema;
-
-var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
-
-var _parser = require("../language/parser.js");
-
-var _execute = require("../execution/execute.js");
-
-var _getIntrospectionQuery = require("./getIntrospectionQuery.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-/**
- * Build an IntrospectionQuery from a GraphQLSchema
- *
- * IntrospectionQuery is useful for utilities that care about type and field
- * relationships, but do not need to traverse through those relationships.
- *
- * This is the inverse of buildClientSchema. The primary use case is outside
- * of the server context, for instance when doing schema comparisons.
- */
-function introspectionFromSchema(schema, options) {
-  var optionsWithDefaults = _objectSpread({
-    specifiedByUrl: true,
-    directiveIsRepeatable: true,
-    schemaDescription: true,
-    inputValueDeprecation: true
-  }, options);
-
-  var document = (0, _parser.parse)((0, _getIntrospectionQuery.getIntrospectionQuery)(optionsWithDefaults));
-  var result = (0, _execute.executeSync)({
-    schema: schema,
-    document: document
-  });
-  !result.errors && result.data || (0, _invariant.default)(0);
-  return result.data;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.js.flow b/includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.js.flow
deleted file mode 100644
index 0a73fe0..0000000
--- a/includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.js.flow
+++ /dev/null
@@ -1,41 +0,0 @@
-// @flow strict
-import invariant from '../jsutils/invariant';
-
-import { parse } from '../language/parser';
-
-import type { GraphQLSchema } from '../type/schema';
-
-import { executeSync } from '../execution/execute';
-
-import type {
-  IntrospectionQuery,
-  IntrospectionOptions,
-} from './getIntrospectionQuery';
-import { getIntrospectionQuery } from './getIntrospectionQuery';
-
-/**
- * Build an IntrospectionQuery from a GraphQLSchema
- *
- * IntrospectionQuery is useful for utilities that care about type and field
- * relationships, but do not need to traverse through those relationships.
- *
- * This is the inverse of buildClientSchema. The primary use case is outside
- * of the server context, for instance when doing schema comparisons.
- */
-export function introspectionFromSchema(
-  schema: GraphQLSchema,
-  options?: IntrospectionOptions,
-): IntrospectionQuery {
-  const optionsWithDefaults = {
-    specifiedByUrl: true,
-    directiveIsRepeatable: true,
-    schemaDescription: true,
-    inputValueDeprecation: true,
-    ...options,
-  };
-
-  const document = parse(getIntrospectionQuery(optionsWithDefaults));
-  const result = executeSync({ schema, document });
-  invariant(!result.errors && result.data);
-  return (result.data: any);
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.mjs b/includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.mjs
deleted file mode 100644
index ad387eb..0000000
--- a/includes/external/school/node_modules/graphql/utilities/introspectionFromSchema.mjs
+++ /dev/null
@@ -1,36 +0,0 @@
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-import invariant from "../jsutils/invariant.mjs";
-import { parse } from "../language/parser.mjs";
-import { executeSync } from "../execution/execute.mjs";
-import { getIntrospectionQuery } from "./getIntrospectionQuery.mjs";
-/**
- * Build an IntrospectionQuery from a GraphQLSchema
- *
- * IntrospectionQuery is useful for utilities that care about type and field
- * relationships, but do not need to traverse through those relationships.
- *
- * This is the inverse of buildClientSchema. The primary use case is outside
- * of the server context, for instance when doing schema comparisons.
- */
-
-export function introspectionFromSchema(schema, options) {
-  var optionsWithDefaults = _objectSpread({
-    specifiedByUrl: true,
-    directiveIsRepeatable: true,
-    schemaDescription: true,
-    inputValueDeprecation: true
-  }, options);
-
-  var document = parse(getIntrospectionQuery(optionsWithDefaults));
-  var result = executeSync({
-    schema: schema,
-    document: document
-  });
-  !result.errors && result.data || invariant(0);
-  return result.data;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.d.ts b/includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.d.ts
deleted file mode 100644
index 7dfde70..0000000
--- a/includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { GraphQLSchema } from '../type/schema';
-
-/**
- * Sort GraphQLSchema.
- *
- * This function returns a sorted copy of the given GraphQLSchema.
- */
-export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema;
diff --git a/includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.js b/includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.js
deleted file mode 100644
index 174bca4..0000000
--- a/includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.js
+++ /dev/null
@@ -1,202 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.lexicographicSortSchema = lexicographicSortSchema;
-
-var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
-
-var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
-
-var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
-
-var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap.js"));
-
-var _naturalCompare = _interopRequireDefault(require("../jsutils/naturalCompare.js"));
-
-var _schema = require("../type/schema.js");
-
-var _directives = require("../type/directives.js");
-
-var _introspection = require("../type/introspection.js");
-
-var _definition = require("../type/definition.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-/**
- * Sort GraphQLSchema.
- *
- * This function returns a sorted copy of the given GraphQLSchema.
- */
-function lexicographicSortSchema(schema) {
-  var schemaConfig = schema.toConfig();
-  var typeMap = (0, _keyValMap.default)(sortByName(schemaConfig.types), function (type) {
-    return type.name;
-  }, sortNamedType);
-  return new _schema.GraphQLSchema(_objectSpread(_objectSpread({}, schemaConfig), {}, {
-    types: (0, _objectValues.default)(typeMap),
-    directives: sortByName(schemaConfig.directives).map(sortDirective),
-    query: replaceMaybeType(schemaConfig.query),
-    mutation: replaceMaybeType(schemaConfig.mutation),
-    subscription: replaceMaybeType(schemaConfig.subscription)
-  }));
-
-  function replaceType(type) {
-    if ((0, _definition.isListType)(type)) {
-      // $FlowFixMe[incompatible-return]
-      return new _definition.GraphQLList(replaceType(type.ofType));
-    } else if ((0, _definition.isNonNullType)(type)) {
-      // $FlowFixMe[incompatible-return]
-      return new _definition.GraphQLNonNull(replaceType(type.ofType));
-    }
-
-    return replaceNamedType(type);
-  }
-
-  function replaceNamedType(type) {
-    return typeMap[type.name];
-  }
-
-  function replaceMaybeType(maybeType) {
-    return maybeType && replaceNamedType(maybeType);
-  }
-
-  function sortDirective(directive) {
-    var config = directive.toConfig();
-    return new _directives.GraphQLDirective(_objectSpread(_objectSpread({}, config), {}, {
-      locations: sortBy(config.locations, function (x) {
-        return x;
-      }),
-      args: sortArgs(config.args)
-    }));
-  }
-
-  function sortArgs(args) {
-    return sortObjMap(args, function (arg) {
-      return _objectSpread(_objectSpread({}, arg), {}, {
-        type: replaceType(arg.type)
-      });
-    });
-  }
-
-  function sortFields(fieldsMap) {
-    return sortObjMap(fieldsMap, function (field) {
-      return _objectSpread(_objectSpread({}, field), {}, {
-        type: replaceType(field.type),
-        args: sortArgs(field.args)
-      });
-    });
-  }
-
-  function sortInputFields(fieldsMap) {
-    return sortObjMap(fieldsMap, function (field) {
-      return _objectSpread(_objectSpread({}, field), {}, {
-        type: replaceType(field.type)
-      });
-    });
-  }
-
-  function sortTypes(arr) {
-    return sortByName(arr).map(replaceNamedType);
-  }
-
-  function sortNamedType(type) {
-    if ((0, _definition.isScalarType)(type) || (0, _introspection.isIntrospectionType)(type)) {
-      return type;
-    }
-
-    if ((0, _definition.isObjectType)(type)) {
-      var config = type.toConfig();
-      return new _definition.GraphQLObjectType(_objectSpread(_objectSpread({}, config), {}, {
-        interfaces: function interfaces() {
-          return sortTypes(config.interfaces);
-        },
-        fields: function fields() {
-          return sortFields(config.fields);
-        }
-      }));
-    }
-
-    if ((0, _definition.isInterfaceType)(type)) {
-      var _config = type.toConfig();
-
-      return new _definition.GraphQLInterfaceType(_objectSpread(_objectSpread({}, _config), {}, {
-        interfaces: function interfaces() {
-          return sortTypes(_config.interfaces);
-        },
-        fields: function fields() {
-          return sortFields(_config.fields);
-        }
-      }));
-    }
-
-    if ((0, _definition.isUnionType)(type)) {
-      var _config2 = type.toConfig();
-
-      return new _definition.GraphQLUnionType(_objectSpread(_objectSpread({}, _config2), {}, {
-        types: function types() {
-          return sortTypes(_config2.types);
-        }
-      }));
-    }
-
-    if ((0, _definition.isEnumType)(type)) {
-      var _config3 = type.toConfig();
-
-      return new _definition.GraphQLEnumType(_objectSpread(_objectSpread({}, _config3), {}, {
-        values: sortObjMap(_config3.values)
-      }));
-    } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-    if ((0, _definition.isInputObjectType)(type)) {
-      var _config4 = type.toConfig();
-
-      return new _definition.GraphQLInputObjectType(_objectSpread(_objectSpread({}, _config4), {}, {
-        fields: function fields() {
-          return sortInputFields(_config4.fields);
-        }
-      }));
-    } // istanbul ignore next (Not reachable. All possible types have been considered)
-
-
-    false || (0, _invariant.default)(0, 'Unexpected type: ' + (0, _inspect.default)(type));
-  }
-}
-
-function sortObjMap(map, sortValueFn) {
-  var sortedMap = Object.create(null);
-  var sortedKeys = sortBy(Object.keys(map), function (x) {
-    return x;
-  });
-
-  for (var _i2 = 0; _i2 < sortedKeys.length; _i2++) {
-    var key = sortedKeys[_i2];
-    var value = map[key];
-    sortedMap[key] = sortValueFn ? sortValueFn(value) : value;
-  }
-
-  return sortedMap;
-}
-
-function sortByName(array) {
-  return sortBy(array, function (obj) {
-    return obj.name;
-  });
-}
-
-function sortBy(array, mapToKey) {
-  return array.slice().sort(function (obj1, obj2) {
-    var key1 = mapToKey(obj1);
-    var key2 = mapToKey(obj2);
-    return (0, _naturalCompare.default)(key1, key2);
-  });
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.js.flow b/includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.js.flow
deleted file mode 100644
index a6f2505..0000000
--- a/includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.js.flow
+++ /dev/null
@@ -1,187 +0,0 @@
-// @flow strict
-import objectValues from '../polyfills/objectValues';
-
-import type { ObjMap } from '../jsutils/ObjMap';
-import inspect from '../jsutils/inspect';
-import invariant from '../jsutils/invariant';
-import keyValMap from '../jsutils/keyValMap';
-import naturalCompare from '../jsutils/naturalCompare';
-
-import type {
-  GraphQLType,
-  GraphQLNamedType,
-  GraphQLFieldConfigMap,
-  GraphQLFieldConfigArgumentMap,
-  GraphQLInputFieldConfigMap,
-} from '../type/definition';
-import { GraphQLSchema } from '../type/schema';
-import { GraphQLDirective } from '../type/directives';
-import { isIntrospectionType } from '../type/introspection';
-import {
-  GraphQLList,
-  GraphQLNonNull,
-  GraphQLObjectType,
-  GraphQLInterfaceType,
-  GraphQLUnionType,
-  GraphQLEnumType,
-  GraphQLInputObjectType,
-  isListType,
-  isNonNullType,
-  isScalarType,
-  isObjectType,
-  isInterfaceType,
-  isUnionType,
-  isEnumType,
-  isInputObjectType,
-} from '../type/definition';
-
-/**
- * Sort GraphQLSchema.
- *
- * This function returns a sorted copy of the given GraphQLSchema.
- */
-export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {
-  const schemaConfig = schema.toConfig();
-  const typeMap = keyValMap(
-    sortByName(schemaConfig.types),
-    (type) => type.name,
-    sortNamedType,
-  );
-
-  return new GraphQLSchema({
-    ...schemaConfig,
-    types: objectValues(typeMap),
-    directives: sortByName(schemaConfig.directives).map(sortDirective),
-    query: replaceMaybeType(schemaConfig.query),
-    mutation: replaceMaybeType(schemaConfig.mutation),
-    subscription: replaceMaybeType(schemaConfig.subscription),
-  });
-
-  function replaceType<T: GraphQLType>(type: T): T {
-    if (isListType(type)) {
-      // $FlowFixMe[incompatible-return]
-      return new GraphQLList(replaceType(type.ofType));
-    } else if (isNonNullType(type)) {
-      // $FlowFixMe[incompatible-return]
-      return new GraphQLNonNull(replaceType(type.ofType));
-    }
-    return replaceNamedType(type);
-  }
-
-  function replaceNamedType<T: GraphQLNamedType>(type: T): T {
-    return ((typeMap[type.name]: any): T);
-  }
-
-  function replaceMaybeType<T: ?GraphQLNamedType>(maybeType: T): T {
-    return maybeType && replaceNamedType(maybeType);
-  }
-
-  function sortDirective(directive: GraphQLDirective) {
-    const config = directive.toConfig();
-    return new GraphQLDirective({
-      ...config,
-      locations: sortBy(config.locations, (x) => x),
-      args: sortArgs(config.args),
-    });
-  }
-
-  function sortArgs(args: GraphQLFieldConfigArgumentMap) {
-    return sortObjMap(args, (arg) => ({
-      ...arg,
-      type: replaceType(arg.type),
-    }));
-  }
-
-  function sortFields(fieldsMap: GraphQLFieldConfigMap<mixed, mixed>) {
-    return sortObjMap(fieldsMap, (field) => ({
-      ...field,
-      type: replaceType(field.type),
-      args: sortArgs(field.args),
-    }));
-  }
-
-  function sortInputFields(fieldsMap: GraphQLInputFieldConfigMap) {
-    return sortObjMap(fieldsMap, (field) => ({
-      ...field,
-      type: replaceType(field.type),
-    }));
-  }
-
-  function sortTypes<T: GraphQLNamedType>(arr: $ReadOnlyArray<T>): Array<T> {
-    return sortByName(arr).map(replaceNamedType);
-  }
-
-  function sortNamedType(type: GraphQLNamedType): GraphQLNamedType {
-    if (isScalarType(type) || isIntrospectionType(type)) {
-      return type;
-    }
-    if (isObjectType(type)) {
-      const config = type.toConfig();
-      return new GraphQLObjectType({
-        ...config,
-        interfaces: () => sortTypes(config.interfaces),
-        fields: () => sortFields(config.fields),
-      });
-    }
-    if (isInterfaceType(type)) {
-      const config = type.toConfig();
-      return new GraphQLInterfaceType({
-        ...config,
-        interfaces: () => sortTypes(config.interfaces),
-        fields: () => sortFields(config.fields),
-      });
-    }
-    if (isUnionType(type)) {
-      const config = type.toConfig();
-      return new GraphQLUnionType({
-        ...config,
-        types: () => sortTypes(config.types),
-      });
-    }
-    if (isEnumType(type)) {
-      const config = type.toConfig();
-      return new GraphQLEnumType({
-        ...config,
-        values: sortObjMap(config.values),
-      });
-    }
-    // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-    if (isInputObjectType(type)) {
-      const config = type.toConfig();
-      return new GraphQLInputObjectType({
-        ...config,
-        fields: () => sortInputFields(config.fields),
-      });
-    }
-
-    // istanbul ignore next (Not reachable. All possible types have been considered)
-    invariant(false, 'Unexpected type: ' + inspect((type: empty)));
-  }
-}
-
-function sortObjMap<T, R>(map: ObjMap<T>, sortValueFn?: (T) => R): ObjMap<R> {
-  const sortedMap = Object.create(null);
-  const sortedKeys = sortBy(Object.keys(map), (x) => x);
-  for (const key of sortedKeys) {
-    const value = map[key];
-    sortedMap[key] = sortValueFn ? sortValueFn(value) : value;
-  }
-  return sortedMap;
-}
-
-function sortByName<T: { +name: string, ... }>(
-  array: $ReadOnlyArray<T>,
-): Array<T> {
-  return sortBy(array, (obj) => obj.name);
-}
-
-function sortBy<T>(
-  array: $ReadOnlyArray<T>,
-  mapToKey: (T) => string,
-): Array<T> {
-  return array.slice().sort((obj1, obj2) => {
-    const key1 = mapToKey(obj1);
-    const key2 = mapToKey(obj2);
-    return naturalCompare(key1, key2);
-  });
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.mjs b/includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.mjs
deleted file mode 100644
index cc9643f..0000000
--- a/includes/external/school/node_modules/graphql/utilities/lexicographicSortSchema.mjs
+++ /dev/null
@@ -1,185 +0,0 @@
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-import objectValues from "../polyfills/objectValues.mjs";
-import inspect from "../jsutils/inspect.mjs";
-import invariant from "../jsutils/invariant.mjs";
-import keyValMap from "../jsutils/keyValMap.mjs";
-import naturalCompare from "../jsutils/naturalCompare.mjs";
-import { GraphQLSchema } from "../type/schema.mjs";
-import { GraphQLDirective } from "../type/directives.mjs";
-import { isIntrospectionType } from "../type/introspection.mjs";
-import { GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, isListType, isNonNullType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from "../type/definition.mjs";
-/**
- * Sort GraphQLSchema.
- *
- * This function returns a sorted copy of the given GraphQLSchema.
- */
-
-export function lexicographicSortSchema(schema) {
-  var schemaConfig = schema.toConfig();
-  var typeMap = keyValMap(sortByName(schemaConfig.types), function (type) {
-    return type.name;
-  }, sortNamedType);
-  return new GraphQLSchema(_objectSpread(_objectSpread({}, schemaConfig), {}, {
-    types: objectValues(typeMap),
-    directives: sortByName(schemaConfig.directives).map(sortDirective),
-    query: replaceMaybeType(schemaConfig.query),
-    mutation: replaceMaybeType(schemaConfig.mutation),
-    subscription: replaceMaybeType(schemaConfig.subscription)
-  }));
-
-  function replaceType(type) {
-    if (isListType(type)) {
-      // $FlowFixMe[incompatible-return]
-      return new GraphQLList(replaceType(type.ofType));
-    } else if (isNonNullType(type)) {
-      // $FlowFixMe[incompatible-return]
-      return new GraphQLNonNull(replaceType(type.ofType));
-    }
-
-    return replaceNamedType(type);
-  }
-
-  function replaceNamedType(type) {
-    return typeMap[type.name];
-  }
-
-  function replaceMaybeType(maybeType) {
-    return maybeType && replaceNamedType(maybeType);
-  }
-
-  function sortDirective(directive) {
-    var config = directive.toConfig();
-    return new GraphQLDirective(_objectSpread(_objectSpread({}, config), {}, {
-      locations: sortBy(config.locations, function (x) {
-        return x;
-      }),
-      args: sortArgs(config.args)
-    }));
-  }
-
-  function sortArgs(args) {
-    return sortObjMap(args, function (arg) {
-      return _objectSpread(_objectSpread({}, arg), {}, {
-        type: replaceType(arg.type)
-      });
-    });
-  }
-
-  function sortFields(fieldsMap) {
-    return sortObjMap(fieldsMap, function (field) {
-      return _objectSpread(_objectSpread({}, field), {}, {
-        type: replaceType(field.type),
-        args: sortArgs(field.args)
-      });
-    });
-  }
-
-  function sortInputFields(fieldsMap) {
-    return sortObjMap(fieldsMap, function (field) {
-      return _objectSpread(_objectSpread({}, field), {}, {
-        type: replaceType(field.type)
-      });
-    });
-  }
-
-  function sortTypes(arr) {
-    return sortByName(arr).map(replaceNamedType);
-  }
-
-  function sortNamedType(type) {
-    if (isScalarType(type) || isIntrospectionType(type)) {
-      return type;
-    }
-
-    if (isObjectType(type)) {
-      var config = type.toConfig();
-      return new GraphQLObjectType(_objectSpread(_objectSpread({}, config), {}, {
-        interfaces: function interfaces() {
-          return sortTypes(config.interfaces);
-        },
-        fields: function fields() {
-          return sortFields(config.fields);
-        }
-      }));
-    }
-
-    if (isInterfaceType(type)) {
-      var _config = type.toConfig();
-
-      return new GraphQLInterfaceType(_objectSpread(_objectSpread({}, _config), {}, {
-        interfaces: function interfaces() {
-          return sortTypes(_config.interfaces);
-        },
-        fields: function fields() {
-          return sortFields(_config.fields);
-        }
-      }));
-    }
-
-    if (isUnionType(type)) {
-      var _config2 = type.toConfig();
-
-      return new GraphQLUnionType(_objectSpread(_objectSpread({}, _config2), {}, {
-        types: function types() {
-          return sortTypes(_config2.types);
-        }
-      }));
-    }
-
-    if (isEnumType(type)) {
-      var _config3 = type.toConfig();
-
-      return new GraphQLEnumType(_objectSpread(_objectSpread({}, _config3), {}, {
-        values: sortObjMap(_config3.values)
-      }));
-    } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-    if (isInputObjectType(type)) {
-      var _config4 = type.toConfig();
-
-      return new GraphQLInputObjectType(_objectSpread(_objectSpread({}, _config4), {}, {
-        fields: function fields() {
-          return sortInputFields(_config4.fields);
-        }
-      }));
-    } // istanbul ignore next (Not reachable. All possible types have been considered)
-
-
-    false || invariant(0, 'Unexpected type: ' + inspect(type));
-  }
-}
-
-function sortObjMap(map, sortValueFn) {
-  var sortedMap = Object.create(null);
-  var sortedKeys = sortBy(Object.keys(map), function (x) {
-    return x;
-  });
-
-  for (var _i2 = 0; _i2 < sortedKeys.length; _i2++) {
-    var key = sortedKeys[_i2];
-    var value = map[key];
-    sortedMap[key] = sortValueFn ? sortValueFn(value) : value;
-  }
-
-  return sortedMap;
-}
-
-function sortByName(array) {
-  return sortBy(array, function (obj) {
-    return obj.name;
-  });
-}
-
-function sortBy(array, mapToKey) {
-  return array.slice().sort(function (obj1, obj2) {
-    var key1 = mapToKey(obj1);
-    var key2 = mapToKey(obj2);
-    return naturalCompare(key1, key2);
-  });
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/printSchema.d.ts b/includes/external/school/node_modules/graphql/utilities/printSchema.d.ts
deleted file mode 100644
index 1417ee5..0000000
--- a/includes/external/school/node_modules/graphql/utilities/printSchema.d.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { GraphQLSchema } from '../type/schema';
-import { GraphQLNamedType } from '../type/definition';
-
-export interface Options {
-  /**
-   * Descriptions are defined as preceding string literals, however an older
-   * experimental version of the SDL supported preceding comments as
-   * descriptions. Set to true to enable this deprecated behavior.
-   * This option is provided to ease adoption and will be removed in v16.
-   *
-   * Default: false
-   */
-  commentDescriptions?: boolean;
-}
-
-/**
- * Accepts options as a second argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-export function printSchema(schema: GraphQLSchema, options?: Options): string;
-
-export function printIntrospectionSchema(
-  schema: GraphQLSchema,
-  options?: Options,
-): string;
-
-export function printType(type: GraphQLNamedType, options?: Options): string;
diff --git a/includes/external/school/node_modules/graphql/utilities/printSchema.js b/includes/external/school/node_modules/graphql/utilities/printSchema.js
deleted file mode 100644
index 3d6d618..0000000
--- a/includes/external/school/node_modules/graphql/utilities/printSchema.js
+++ /dev/null
@@ -1,289 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.printSchema = printSchema;
-exports.printIntrospectionSchema = printIntrospectionSchema;
-exports.printType = printType;
-
-var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
-
-var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
-
-var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
-
-var _printer = require("../language/printer.js");
-
-var _blockString = require("../language/blockString.js");
-
-var _introspection = require("../type/introspection.js");
-
-var _scalars = require("../type/scalars.js");
-
-var _directives = require("../type/directives.js");
-
-var _definition = require("../type/definition.js");
-
-var _astFromValue = require("./astFromValue.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Accepts options as a second argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-function printSchema(schema, options) {
-  return printFilteredSchema(schema, function (n) {
-    return !(0, _directives.isSpecifiedDirective)(n);
-  }, isDefinedType, options);
-}
-
-function printIntrospectionSchema(schema, options) {
-  return printFilteredSchema(schema, _directives.isSpecifiedDirective, _introspection.isIntrospectionType, options);
-}
-
-function isDefinedType(type) {
-  return !(0, _scalars.isSpecifiedScalarType)(type) && !(0, _introspection.isIntrospectionType)(type);
-}
-
-function printFilteredSchema(schema, directiveFilter, typeFilter, options) {
-  var directives = schema.getDirectives().filter(directiveFilter);
-  var types = (0, _objectValues.default)(schema.getTypeMap()).filter(typeFilter);
-  return [printSchemaDefinition(schema)].concat(directives.map(function (directive) {
-    return printDirective(directive, options);
-  }), types.map(function (type) {
-    return printType(type, options);
-  })).filter(Boolean).join('\n\n') + '\n';
-}
-
-function printSchemaDefinition(schema) {
-  if (schema.description == null && isSchemaOfCommonNames(schema)) {
-    return;
-  }
-
-  var operationTypes = [];
-  var queryType = schema.getQueryType();
-
-  if (queryType) {
-    operationTypes.push("  query: ".concat(queryType.name));
-  }
-
-  var mutationType = schema.getMutationType();
-
-  if (mutationType) {
-    operationTypes.push("  mutation: ".concat(mutationType.name));
-  }
-
-  var subscriptionType = schema.getSubscriptionType();
-
-  if (subscriptionType) {
-    operationTypes.push("  subscription: ".concat(subscriptionType.name));
-  }
-
-  return printDescription({}, schema) + "schema {\n".concat(operationTypes.join('\n'), "\n}");
-}
-/**
- * GraphQL schema define root types for each type of operation. These types are
- * the same as any other type and can be named in any manner, however there is
- * a common naming convention:
- *
- *   schema {
- *     query: Query
- *     mutation: Mutation
- *   }
- *
- * When using this naming convention, the schema description can be omitted.
- */
-
-
-function isSchemaOfCommonNames(schema) {
-  var queryType = schema.getQueryType();
-
-  if (queryType && queryType.name !== 'Query') {
-    return false;
-  }
-
-  var mutationType = schema.getMutationType();
-
-  if (mutationType && mutationType.name !== 'Mutation') {
-    return false;
-  }
-
-  var subscriptionType = schema.getSubscriptionType();
-
-  if (subscriptionType && subscriptionType.name !== 'Subscription') {
-    return false;
-  }
-
-  return true;
-}
-
-function printType(type, options) {
-  if ((0, _definition.isScalarType)(type)) {
-    return printScalar(type, options);
-  }
-
-  if ((0, _definition.isObjectType)(type)) {
-    return printObject(type, options);
-  }
-
-  if ((0, _definition.isInterfaceType)(type)) {
-    return printInterface(type, options);
-  }
-
-  if ((0, _definition.isUnionType)(type)) {
-    return printUnion(type, options);
-  }
-
-  if ((0, _definition.isEnumType)(type)) {
-    return printEnum(type, options);
-  } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-  if ((0, _definition.isInputObjectType)(type)) {
-    return printInputObject(type, options);
-  } // istanbul ignore next (Not reachable. All possible types have been considered)
-
-
-  false || (0, _invariant.default)(0, 'Unexpected type: ' + (0, _inspect.default)(type));
-}
-
-function printScalar(type, options) {
-  return printDescription(options, type) + "scalar ".concat(type.name) + printSpecifiedByUrl(type);
-}
-
-function printImplementedInterfaces(type) {
-  var interfaces = type.getInterfaces();
-  return interfaces.length ? ' implements ' + interfaces.map(function (i) {
-    return i.name;
-  }).join(' & ') : '';
-}
-
-function printObject(type, options) {
-  return printDescription(options, type) + "type ".concat(type.name) + printImplementedInterfaces(type) + printFields(options, type);
-}
-
-function printInterface(type, options) {
-  return printDescription(options, type) + "interface ".concat(type.name) + printImplementedInterfaces(type) + printFields(options, type);
-}
-
-function printUnion(type, options) {
-  var types = type.getTypes();
-  var possibleTypes = types.length ? ' = ' + types.join(' | ') : '';
-  return printDescription(options, type) + 'union ' + type.name + possibleTypes;
-}
-
-function printEnum(type, options) {
-  var values = type.getValues().map(function (value, i) {
-    return printDescription(options, value, '  ', !i) + '  ' + value.name + printDeprecated(value.deprecationReason);
-  });
-  return printDescription(options, type) + "enum ".concat(type.name) + printBlock(values);
-}
-
-function printInputObject(type, options) {
-  var fields = (0, _objectValues.default)(type.getFields()).map(function (f, i) {
-    return printDescription(options, f, '  ', !i) + '  ' + printInputValue(f);
-  });
-  return printDescription(options, type) + "input ".concat(type.name) + printBlock(fields);
-}
-
-function printFields(options, type) {
-  var fields = (0, _objectValues.default)(type.getFields()).map(function (f, i) {
-    return printDescription(options, f, '  ', !i) + '  ' + f.name + printArgs(options, f.args, '  ') + ': ' + String(f.type) + printDeprecated(f.deprecationReason);
-  });
-  return printBlock(fields);
-}
-
-function printBlock(items) {
-  return items.length !== 0 ? ' {\n' + items.join('\n') + '\n}' : '';
-}
-
-function printArgs(options, args) {
-  var indentation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
-
-  if (args.length === 0) {
-    return '';
-  } // If every arg does not have a description, print them on one line.
-
-
-  if (args.every(function (arg) {
-    return !arg.description;
-  })) {
-    return '(' + args.map(printInputValue).join(', ') + ')';
-  }
-
-  return '(\n' + args.map(function (arg, i) {
-    return printDescription(options, arg, '  ' + indentation, !i) + '  ' + indentation + printInputValue(arg);
-  }).join('\n') + '\n' + indentation + ')';
-}
-
-function printInputValue(arg) {
-  var defaultAST = (0, _astFromValue.astFromValue)(arg.defaultValue, arg.type);
-  var argDecl = arg.name + ': ' + String(arg.type);
-
-  if (defaultAST) {
-    argDecl += " = ".concat((0, _printer.print)(defaultAST));
-  }
-
-  return argDecl + printDeprecated(arg.deprecationReason);
-}
-
-function printDirective(directive, options) {
-  return printDescription(options, directive) + 'directive @' + directive.name + printArgs(options, directive.args) + (directive.isRepeatable ? ' repeatable' : '') + ' on ' + directive.locations.join(' | ');
-}
-
-function printDeprecated(reason) {
-  if (reason == null) {
-    return '';
-  }
-
-  var reasonAST = (0, _astFromValue.astFromValue)(reason, _scalars.GraphQLString);
-
-  if (reasonAST && reason !== _directives.DEFAULT_DEPRECATION_REASON) {
-    return ' @deprecated(reason: ' + (0, _printer.print)(reasonAST) + ')';
-  }
-
-  return ' @deprecated';
-}
-
-function printSpecifiedByUrl(scalar) {
-  if (scalar.specifiedByUrl == null) {
-    return '';
-  }
-
-  var url = scalar.specifiedByUrl;
-  var urlAST = (0, _astFromValue.astFromValue)(url, _scalars.GraphQLString);
-  urlAST || (0, _invariant.default)(0, 'Unexpected null value returned from `astFromValue` for specifiedByUrl');
-  return ' @specifiedBy(url: ' + (0, _printer.print)(urlAST) + ')';
-}
-
-function printDescription(options, def) {
-  var indentation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
-  var firstInBlock = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
-  var description = def.description;
-
-  if (description == null) {
-    return '';
-  }
-
-  if ((options === null || options === void 0 ? void 0 : options.commentDescriptions) === true) {
-    return printDescriptionWithComments(description, indentation, firstInBlock);
-  }
-
-  var preferMultipleLines = description.length > 70;
-  var blockString = (0, _blockString.printBlockString)(description, '', preferMultipleLines);
-  var prefix = indentation && !firstInBlock ? '\n' + indentation : indentation;
-  return prefix + blockString.replace(/\n/g, '\n' + indentation) + '\n';
-}
-
-function printDescriptionWithComments(description, indentation, firstInBlock) {
-  var prefix = indentation && !firstInBlock ? '\n' : '';
-  var comment = description.split('\n').map(function (line) {
-    return indentation + (line !== '' ? '# ' + line : '#');
-  }).join('\n');
-  return prefix + comment + '\n';
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/printSchema.js.flow b/includes/external/school/node_modules/graphql/utilities/printSchema.js.flow
deleted file mode 100644
index a240a3e..0000000
--- a/includes/external/school/node_modules/graphql/utilities/printSchema.js.flow
+++ /dev/null
@@ -1,382 +0,0 @@
-// @flow strict
-import objectValues from '../polyfills/objectValues';
-
-import inspect from '../jsutils/inspect';
-import invariant from '../jsutils/invariant';
-
-import { print } from '../language/printer';
-import { printBlockString } from '../language/blockString';
-
-import type { GraphQLSchema } from '../type/schema';
-import type { GraphQLDirective } from '../type/directives';
-import type {
-  GraphQLNamedType,
-  GraphQLArgument,
-  GraphQLInputField,
-  GraphQLScalarType,
-  GraphQLEnumType,
-  GraphQLObjectType,
-  GraphQLInterfaceType,
-  GraphQLUnionType,
-  GraphQLInputObjectType,
-} from '../type/definition';
-import { isIntrospectionType } from '../type/introspection';
-import { GraphQLString, isSpecifiedScalarType } from '../type/scalars';
-import {
-  DEFAULT_DEPRECATION_REASON,
-  isSpecifiedDirective,
-} from '../type/directives';
-import {
-  isScalarType,
-  isObjectType,
-  isInterfaceType,
-  isUnionType,
-  isEnumType,
-  isInputObjectType,
-} from '../type/definition';
-
-import { astFromValue } from './astFromValue';
-
-type Options = {|
-  /**
-   * Descriptions are defined as preceding string literals, however an older
-   * experimental version of the SDL supported preceding comments as
-   * descriptions. Set to true to enable this deprecated behavior.
-   * This option is provided to ease adoption and will be removed in v16.
-   *
-   * Default: false
-   */
-  commentDescriptions?: boolean,
-|};
-
-/**
- * Accepts options as a second argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-export function printSchema(schema: GraphQLSchema, options?: Options): string {
-  return printFilteredSchema(
-    schema,
-    (n) => !isSpecifiedDirective(n),
-    isDefinedType,
-    options,
-  );
-}
-
-export function printIntrospectionSchema(
-  schema: GraphQLSchema,
-  options?: Options,
-): string {
-  return printFilteredSchema(
-    schema,
-    isSpecifiedDirective,
-    isIntrospectionType,
-    options,
-  );
-}
-
-function isDefinedType(type: GraphQLNamedType): boolean {
-  return !isSpecifiedScalarType(type) && !isIntrospectionType(type);
-}
-
-function printFilteredSchema(
-  schema: GraphQLSchema,
-  directiveFilter: (type: GraphQLDirective) => boolean,
-  typeFilter: (type: GraphQLNamedType) => boolean,
-  options,
-): string {
-  const directives = schema.getDirectives().filter(directiveFilter);
-  const types = objectValues(schema.getTypeMap()).filter(typeFilter);
-
-  return (
-    [printSchemaDefinition(schema)]
-      .concat(
-        directives.map((directive) => printDirective(directive, options)),
-        types.map((type) => printType(type, options)),
-      )
-      .filter(Boolean)
-      .join('\n\n') + '\n'
-  );
-}
-
-function printSchemaDefinition(schema: GraphQLSchema): ?string {
-  if (schema.description == null && isSchemaOfCommonNames(schema)) {
-    return;
-  }
-
-  const operationTypes = [];
-
-  const queryType = schema.getQueryType();
-  if (queryType) {
-    operationTypes.push(`  query: ${queryType.name}`);
-  }
-
-  const mutationType = schema.getMutationType();
-  if (mutationType) {
-    operationTypes.push(`  mutation: ${mutationType.name}`);
-  }
-
-  const subscriptionType = schema.getSubscriptionType();
-  if (subscriptionType) {
-    operationTypes.push(`  subscription: ${subscriptionType.name}`);
-  }
-
-  return (
-    printDescription({}, schema) + `schema {\n${operationTypes.join('\n')}\n}`
-  );
-}
-
-/**
- * GraphQL schema define root types for each type of operation. These types are
- * the same as any other type and can be named in any manner, however there is
- * a common naming convention:
- *
- *   schema {
- *     query: Query
- *     mutation: Mutation
- *   }
- *
- * When using this naming convention, the schema description can be omitted.
- */
-function isSchemaOfCommonNames(schema: GraphQLSchema): boolean {
-  const queryType = schema.getQueryType();
-  if (queryType && queryType.name !== 'Query') {
-    return false;
-  }
-
-  const mutationType = schema.getMutationType();
-  if (mutationType && mutationType.name !== 'Mutation') {
-    return false;
-  }
-
-  const subscriptionType = schema.getSubscriptionType();
-  if (subscriptionType && subscriptionType.name !== 'Subscription') {
-    return false;
-  }
-
-  return true;
-}
-
-export function printType(type: GraphQLNamedType, options?: Options): string {
-  if (isScalarType(type)) {
-    return printScalar(type, options);
-  }
-  if (isObjectType(type)) {
-    return printObject(type, options);
-  }
-  if (isInterfaceType(type)) {
-    return printInterface(type, options);
-  }
-  if (isUnionType(type)) {
-    return printUnion(type, options);
-  }
-  if (isEnumType(type)) {
-    return printEnum(type, options);
-  }
-  // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-  if (isInputObjectType(type)) {
-    return printInputObject(type, options);
-  }
-
-  // istanbul ignore next (Not reachable. All possible types have been considered)
-  invariant(false, 'Unexpected type: ' + inspect((type: empty)));
-}
-
-function printScalar(type: GraphQLScalarType, options): string {
-  return (
-    printDescription(options, type) +
-    `scalar ${type.name}` +
-    printSpecifiedByUrl(type)
-  );
-}
-
-function printImplementedInterfaces(
-  type: GraphQLObjectType | GraphQLInterfaceType,
-): string {
-  const interfaces = type.getInterfaces();
-  return interfaces.length
-    ? ' implements ' + interfaces.map((i) => i.name).join(' & ')
-    : '';
-}
-
-function printObject(type: GraphQLObjectType, options): string {
-  return (
-    printDescription(options, type) +
-    `type ${type.name}` +
-    printImplementedInterfaces(type) +
-    printFields(options, type)
-  );
-}
-
-function printInterface(type: GraphQLInterfaceType, options): string {
-  return (
-    printDescription(options, type) +
-    `interface ${type.name}` +
-    printImplementedInterfaces(type) +
-    printFields(options, type)
-  );
-}
-
-function printUnion(type: GraphQLUnionType, options): string {
-  const types = type.getTypes();
-  const possibleTypes = types.length ? ' = ' + types.join(' | ') : '';
-  return printDescription(options, type) + 'union ' + type.name + possibleTypes;
-}
-
-function printEnum(type: GraphQLEnumType, options): string {
-  const values = type
-    .getValues()
-    .map(
-      (value, i) =>
-        printDescription(options, value, '  ', !i) +
-        '  ' +
-        value.name +
-        printDeprecated(value.deprecationReason),
-    );
-
-  return (
-    printDescription(options, type) + `enum ${type.name}` + printBlock(values)
-  );
-}
-
-function printInputObject(type: GraphQLInputObjectType, options): string {
-  const fields = objectValues(type.getFields()).map(
-    (f, i) =>
-      printDescription(options, f, '  ', !i) + '  ' + printInputValue(f),
-  );
-  return (
-    printDescription(options, type) + `input ${type.name}` + printBlock(fields)
-  );
-}
-
-function printFields(
-  options,
-  type: GraphQLObjectType | GraphQLInterfaceType,
-): string {
-  const fields = objectValues(type.getFields()).map(
-    (f, i) =>
-      printDescription(options, f, '  ', !i) +
-      '  ' +
-      f.name +
-      printArgs(options, f.args, '  ') +
-      ': ' +
-      String(f.type) +
-      printDeprecated(f.deprecationReason),
-  );
-  return printBlock(fields);
-}
-
-function printBlock(items: $ReadOnlyArray<string>): string {
-  return items.length !== 0 ? ' {\n' + items.join('\n') + '\n}' : '';
-}
-
-function printArgs(
-  options,
-  args: Array<GraphQLArgument>,
-  indentation: string = '',
-): string {
-  if (args.length === 0) {
-    return '';
-  }
-
-  // If every arg does not have a description, print them on one line.
-  if (args.every((arg) => !arg.description)) {
-    return '(' + args.map(printInputValue).join(', ') + ')';
-  }
-
-  return (
-    '(\n' +
-    args
-      .map(
-        (arg, i) =>
-          printDescription(options, arg, '  ' + indentation, !i) +
-          '  ' +
-          indentation +
-          printInputValue(arg),
-      )
-      .join('\n') +
-    '\n' +
-    indentation +
-    ')'
-  );
-}
-
-function printInputValue(arg: GraphQLInputField): string {
-  const defaultAST = astFromValue(arg.defaultValue, arg.type);
-  let argDecl = arg.name + ': ' + String(arg.type);
-  if (defaultAST) {
-    argDecl += ` = ${print(defaultAST)}`;
-  }
-  return argDecl + printDeprecated(arg.deprecationReason);
-}
-
-function printDirective(directive: GraphQLDirective, options): string {
-  return (
-    printDescription(options, directive) +
-    'directive @' +
-    directive.name +
-    printArgs(options, directive.args) +
-    (directive.isRepeatable ? ' repeatable' : '') +
-    ' on ' +
-    directive.locations.join(' | ')
-  );
-}
-
-function printDeprecated(reason: ?string): string {
-  if (reason == null) {
-    return '';
-  }
-  const reasonAST = astFromValue(reason, GraphQLString);
-  if (reasonAST && reason !== DEFAULT_DEPRECATION_REASON) {
-    return ' @deprecated(reason: ' + print(reasonAST) + ')';
-  }
-  return ' @deprecated';
-}
-
-function printSpecifiedByUrl(scalar: GraphQLScalarType): string {
-  if (scalar.specifiedByUrl == null) {
-    return '';
-  }
-  const url = scalar.specifiedByUrl;
-  const urlAST = astFromValue(url, GraphQLString);
-  invariant(
-    urlAST,
-    'Unexpected null value returned from `astFromValue` for specifiedByUrl',
-  );
-  return ' @specifiedBy(url: ' + print(urlAST) + ')';
-}
-
-function printDescription(
-  options,
-  def: { +description: ?string, ... },
-  indentation: string = '',
-  firstInBlock: boolean = true,
-): string {
-  const { description } = def;
-  if (description == null) {
-    return '';
-  }
-
-  if (options?.commentDescriptions === true) {
-    return printDescriptionWithComments(description, indentation, firstInBlock);
-  }
-
-  const preferMultipleLines = description.length > 70;
-  const blockString = printBlockString(description, '', preferMultipleLines);
-  const prefix =
-    indentation && !firstInBlock ? '\n' + indentation : indentation;
-
-  return prefix + blockString.replace(/\n/g, '\n' + indentation) + '\n';
-}
-
-function printDescriptionWithComments(description, indentation, firstInBlock) {
-  const prefix = indentation && !firstInBlock ? '\n' : '';
-  const comment = description
-    .split('\n')
-    .map((line) => indentation + (line !== '' ? '# ' + line : '#'))
-    .join('\n');
-
-  return prefix + comment + '\n';
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/printSchema.mjs b/includes/external/school/node_modules/graphql/utilities/printSchema.mjs
deleted file mode 100644
index a34cec4..0000000
--- a/includes/external/school/node_modules/graphql/utilities/printSchema.mjs
+++ /dev/null
@@ -1,268 +0,0 @@
-import objectValues from "../polyfills/objectValues.mjs";
-import inspect from "../jsutils/inspect.mjs";
-import invariant from "../jsutils/invariant.mjs";
-import { print } from "../language/printer.mjs";
-import { printBlockString } from "../language/blockString.mjs";
-import { isIntrospectionType } from "../type/introspection.mjs";
-import { GraphQLString, isSpecifiedScalarType } from "../type/scalars.mjs";
-import { DEFAULT_DEPRECATION_REASON, isSpecifiedDirective } from "../type/directives.mjs";
-import { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from "../type/definition.mjs";
-import { astFromValue } from "./astFromValue.mjs";
-
-/**
- * Accepts options as a second argument:
- *
- *    - commentDescriptions:
- *        Provide true to use preceding comments as the description.
- *
- */
-export function printSchema(schema, options) {
-  return printFilteredSchema(schema, function (n) {
-    return !isSpecifiedDirective(n);
-  }, isDefinedType, options);
-}
-export function printIntrospectionSchema(schema, options) {
-  return printFilteredSchema(schema, isSpecifiedDirective, isIntrospectionType, options);
-}
-
-function isDefinedType(type) {
-  return !isSpecifiedScalarType(type) && !isIntrospectionType(type);
-}
-
-function printFilteredSchema(schema, directiveFilter, typeFilter, options) {
-  var directives = schema.getDirectives().filter(directiveFilter);
-  var types = objectValues(schema.getTypeMap()).filter(typeFilter);
-  return [printSchemaDefinition(schema)].concat(directives.map(function (directive) {
-    return printDirective(directive, options);
-  }), types.map(function (type) {
-    return printType(type, options);
-  })).filter(Boolean).join('\n\n') + '\n';
-}
-
-function printSchemaDefinition(schema) {
-  if (schema.description == null && isSchemaOfCommonNames(schema)) {
-    return;
-  }
-
-  var operationTypes = [];
-  var queryType = schema.getQueryType();
-
-  if (queryType) {
-    operationTypes.push("  query: ".concat(queryType.name));
-  }
-
-  var mutationType = schema.getMutationType();
-
-  if (mutationType) {
-    operationTypes.push("  mutation: ".concat(mutationType.name));
-  }
-
-  var subscriptionType = schema.getSubscriptionType();
-
-  if (subscriptionType) {
-    operationTypes.push("  subscription: ".concat(subscriptionType.name));
-  }
-
-  return printDescription({}, schema) + "schema {\n".concat(operationTypes.join('\n'), "\n}");
-}
-/**
- * GraphQL schema define root types for each type of operation. These types are
- * the same as any other type and can be named in any manner, however there is
- * a common naming convention:
- *
- *   schema {
- *     query: Query
- *     mutation: Mutation
- *   }
- *
- * When using this naming convention, the schema description can be omitted.
- */
-
-
-function isSchemaOfCommonNames(schema) {
-  var queryType = schema.getQueryType();
-
-  if (queryType && queryType.name !== 'Query') {
-    return false;
-  }
-
-  var mutationType = schema.getMutationType();
-
-  if (mutationType && mutationType.name !== 'Mutation') {
-    return false;
-  }
-
-  var subscriptionType = schema.getSubscriptionType();
-
-  if (subscriptionType && subscriptionType.name !== 'Subscription') {
-    return false;
-  }
-
-  return true;
-}
-
-export function printType(type, options) {
-  if (isScalarType(type)) {
-    return printScalar(type, options);
-  }
-
-  if (isObjectType(type)) {
-    return printObject(type, options);
-  }
-
-  if (isInterfaceType(type)) {
-    return printInterface(type, options);
-  }
-
-  if (isUnionType(type)) {
-    return printUnion(type, options);
-  }
-
-  if (isEnumType(type)) {
-    return printEnum(type, options);
-  } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-  if (isInputObjectType(type)) {
-    return printInputObject(type, options);
-  } // istanbul ignore next (Not reachable. All possible types have been considered)
-
-
-  false || invariant(0, 'Unexpected type: ' + inspect(type));
-}
-
-function printScalar(type, options) {
-  return printDescription(options, type) + "scalar ".concat(type.name) + printSpecifiedByUrl(type);
-}
-
-function printImplementedInterfaces(type) {
-  var interfaces = type.getInterfaces();
-  return interfaces.length ? ' implements ' + interfaces.map(function (i) {
-    return i.name;
-  }).join(' & ') : '';
-}
-
-function printObject(type, options) {
-  return printDescription(options, type) + "type ".concat(type.name) + printImplementedInterfaces(type) + printFields(options, type);
-}
-
-function printInterface(type, options) {
-  return printDescription(options, type) + "interface ".concat(type.name) + printImplementedInterfaces(type) + printFields(options, type);
-}
-
-function printUnion(type, options) {
-  var types = type.getTypes();
-  var possibleTypes = types.length ? ' = ' + types.join(' | ') : '';
-  return printDescription(options, type) + 'union ' + type.name + possibleTypes;
-}
-
-function printEnum(type, options) {
-  var values = type.getValues().map(function (value, i) {
-    return printDescription(options, value, '  ', !i) + '  ' + value.name + printDeprecated(value.deprecationReason);
-  });
-  return printDescription(options, type) + "enum ".concat(type.name) + printBlock(values);
-}
-
-function printInputObject(type, options) {
-  var fields = objectValues(type.getFields()).map(function (f, i) {
-    return printDescription(options, f, '  ', !i) + '  ' + printInputValue(f);
-  });
-  return printDescription(options, type) + "input ".concat(type.name) + printBlock(fields);
-}
-
-function printFields(options, type) {
-  var fields = objectValues(type.getFields()).map(function (f, i) {
-    return printDescription(options, f, '  ', !i) + '  ' + f.name + printArgs(options, f.args, '  ') + ': ' + String(f.type) + printDeprecated(f.deprecationReason);
-  });
-  return printBlock(fields);
-}
-
-function printBlock(items) {
-  return items.length !== 0 ? ' {\n' + items.join('\n') + '\n}' : '';
-}
-
-function printArgs(options, args) {
-  var indentation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
-
-  if (args.length === 0) {
-    return '';
-  } // If every arg does not have a description, print them on one line.
-
-
-  if (args.every(function (arg) {
-    return !arg.description;
-  })) {
-    return '(' + args.map(printInputValue).join(', ') + ')';
-  }
-
-  return '(\n' + args.map(function (arg, i) {
-    return printDescription(options, arg, '  ' + indentation, !i) + '  ' + indentation + printInputValue(arg);
-  }).join('\n') + '\n' + indentation + ')';
-}
-
-function printInputValue(arg) {
-  var defaultAST = astFromValue(arg.defaultValue, arg.type);
-  var argDecl = arg.name + ': ' + String(arg.type);
-
-  if (defaultAST) {
-    argDecl += " = ".concat(print(defaultAST));
-  }
-
-  return argDecl + printDeprecated(arg.deprecationReason);
-}
-
-function printDirective(directive, options) {
-  return printDescription(options, directive) + 'directive @' + directive.name + printArgs(options, directive.args) + (directive.isRepeatable ? ' repeatable' : '') + ' on ' + directive.locations.join(' | ');
-}
-
-function printDeprecated(reason) {
-  if (reason == null) {
-    return '';
-  }
-
-  var reasonAST = astFromValue(reason, GraphQLString);
-
-  if (reasonAST && reason !== DEFAULT_DEPRECATION_REASON) {
-    return ' @deprecated(reason: ' + print(reasonAST) + ')';
-  }
-
-  return ' @deprecated';
-}
-
-function printSpecifiedByUrl(scalar) {
-  if (scalar.specifiedByUrl == null) {
-    return '';
-  }
-
-  var url = scalar.specifiedByUrl;
-  var urlAST = astFromValue(url, GraphQLString);
-  urlAST || invariant(0, 'Unexpected null value returned from `astFromValue` for specifiedByUrl');
-  return ' @specifiedBy(url: ' + print(urlAST) + ')';
-}
-
-function printDescription(options, def) {
-  var indentation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
-  var firstInBlock = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
-  var description = def.description;
-
-  if (description == null) {
-    return '';
-  }
-
-  if ((options === null || options === void 0 ? void 0 : options.commentDescriptions) === true) {
-    return printDescriptionWithComments(description, indentation, firstInBlock);
-  }
-
-  var preferMultipleLines = description.length > 70;
-  var blockString = printBlockString(description, '', preferMultipleLines);
-  var prefix = indentation && !firstInBlock ? '\n' + indentation : indentation;
-  return prefix + blockString.replace(/\n/g, '\n' + indentation) + '\n';
-}
-
-function printDescriptionWithComments(description, indentation, firstInBlock) {
-  var prefix = indentation && !firstInBlock ? '\n' : '';
-  var comment = description.split('\n').map(function (line) {
-    return indentation + (line !== '' ? '# ' + line : '#');
-  }).join('\n');
-  return prefix + comment + '\n';
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/separateOperations.d.ts b/includes/external/school/node_modules/graphql/utilities/separateOperations.d.ts
deleted file mode 100644
index 28654fd..0000000
--- a/includes/external/school/node_modules/graphql/utilities/separateOperations.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { DocumentNode } from '../language/ast';
-
-/**
- * separateOperations accepts a single AST document which may contain many
- * operations and fragments and returns a collection of AST documents each of
- * which contains a single operation as well the fragment definitions it
- * refers to.
- */
-export function separateOperations(
-  documentAST: DocumentNode,
-): { [key: string]: DocumentNode };
diff --git a/includes/external/school/node_modules/graphql/utilities/separateOperations.js b/includes/external/school/node_modules/graphql/utilities/separateOperations.js
deleted file mode 100644
index de00bd7..0000000
--- a/includes/external/school/node_modules/graphql/utilities/separateOperations.js
+++ /dev/null
@@ -1,92 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.separateOperations = separateOperations;
-
-var _kinds = require("../language/kinds.js");
-
-var _visitor = require("../language/visitor.js");
-
-/**
- * separateOperations accepts a single AST document which may contain many
- * operations and fragments and returns a collection of AST documents each of
- * which contains a single operation as well the fragment definitions it
- * refers to.
- */
-function separateOperations(documentAST) {
-  var operations = [];
-  var depGraph = Object.create(null); // Populate metadata and build a dependency graph.
-
-  for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {
-    var definitionNode = _documentAST$definiti2[_i2];
-
-    switch (definitionNode.kind) {
-      case _kinds.Kind.OPERATION_DEFINITION:
-        operations.push(definitionNode);
-        break;
-
-      case _kinds.Kind.FRAGMENT_DEFINITION:
-        depGraph[definitionNode.name.value] = collectDependencies(definitionNode.selectionSet);
-        break;
-    }
-  } // For each operation, produce a new synthesized AST which includes only what
-  // is necessary for completing that operation.
-
-
-  var separatedDocumentASTs = Object.create(null);
-
-  var _loop = function _loop(_i4) {
-    var operation = operations[_i4];
-    var dependencies = new Set();
-
-    for (var _i6 = 0, _collectDependencies2 = collectDependencies(operation.selectionSet); _i6 < _collectDependencies2.length; _i6++) {
-      var fragmentName = _collectDependencies2[_i6];
-      collectTransitiveDependencies(dependencies, depGraph, fragmentName);
-    } // Provides the empty string for anonymous operations.
-
-
-    var operationName = operation.name ? operation.name.value : ''; // The list of definition nodes to be included for this operation, sorted
-    // to retain the same order as the original document.
-
-    separatedDocumentASTs[operationName] = {
-      kind: _kinds.Kind.DOCUMENT,
-      definitions: documentAST.definitions.filter(function (node) {
-        return node === operation || node.kind === _kinds.Kind.FRAGMENT_DEFINITION && dependencies.has(node.name.value);
-      })
-    };
-  };
-
-  for (var _i4 = 0; _i4 < operations.length; _i4++) {
-    _loop(_i4);
-  }
-
-  return separatedDocumentASTs;
-}
-
-// From a dependency graph, collects a list of transitive dependencies by
-// recursing through a dependency graph.
-function collectTransitiveDependencies(collected, depGraph, fromName) {
-  if (!collected.has(fromName)) {
-    collected.add(fromName);
-    var immediateDeps = depGraph[fromName];
-
-    if (immediateDeps !== undefined) {
-      for (var _i8 = 0; _i8 < immediateDeps.length; _i8++) {
-        var toName = immediateDeps[_i8];
-        collectTransitiveDependencies(collected, depGraph, toName);
-      }
-    }
-  }
-}
-
-function collectDependencies(selectionSet) {
-  var dependencies = [];
-  (0, _visitor.visit)(selectionSet, {
-    FragmentSpread: function FragmentSpread(node) {
-      dependencies.push(node.name.value);
-    }
-  });
-  return dependencies;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/separateOperations.js.flow b/includes/external/school/node_modules/graphql/utilities/separateOperations.js.flow
deleted file mode 100644
index 320053e..0000000
--- a/includes/external/school/node_modules/graphql/utilities/separateOperations.js.flow
+++ /dev/null
@@ -1,97 +0,0 @@
-// @flow strict
-import type { ObjMap } from '../jsutils/ObjMap';
-
-import type {
-  DocumentNode,
-  OperationDefinitionNode,
-  SelectionSetNode,
-} from '../language/ast';
-import { Kind } from '../language/kinds';
-import { visit } from '../language/visitor';
-
-/**
- * separateOperations accepts a single AST document which may contain many
- * operations and fragments and returns a collection of AST documents each of
- * which contains a single operation as well the fragment definitions it
- * refers to.
- */
-export function separateOperations(
-  documentAST: DocumentNode,
-): ObjMap<DocumentNode> {
-  const operations: Array<OperationDefinitionNode> = [];
-  const depGraph: DepGraph = Object.create(null);
-
-  // Populate metadata and build a dependency graph.
-  for (const definitionNode of documentAST.definitions) {
-    switch (definitionNode.kind) {
-      case Kind.OPERATION_DEFINITION:
-        operations.push(definitionNode);
-        break;
-      case Kind.FRAGMENT_DEFINITION:
-        depGraph[definitionNode.name.value] = collectDependencies(
-          definitionNode.selectionSet,
-        );
-        break;
-    }
-  }
-
-  // For each operation, produce a new synthesized AST which includes only what
-  // is necessary for completing that operation.
-  const separatedDocumentASTs = Object.create(null);
-  for (const operation of operations) {
-    const dependencies = new Set();
-
-    for (const fragmentName of collectDependencies(operation.selectionSet)) {
-      collectTransitiveDependencies(dependencies, depGraph, fragmentName);
-    }
-
-    // Provides the empty string for anonymous operations.
-    const operationName = operation.name ? operation.name.value : '';
-
-    // The list of definition nodes to be included for this operation, sorted
-    // to retain the same order as the original document.
-    separatedDocumentASTs[operationName] = {
-      kind: Kind.DOCUMENT,
-      definitions: documentAST.definitions.filter(
-        (node) =>
-          node === operation ||
-          (node.kind === Kind.FRAGMENT_DEFINITION &&
-            dependencies.has(node.name.value)),
-      ),
-    };
-  }
-
-  return separatedDocumentASTs;
-}
-
-type DepGraph = ObjMap<Array<string>>;
-
-// From a dependency graph, collects a list of transitive dependencies by
-// recursing through a dependency graph.
-function collectTransitiveDependencies(
-  collected: Set<string>,
-  depGraph: DepGraph,
-  fromName: string,
-): void {
-  if (!collected.has(fromName)) {
-    collected.add(fromName);
-
-    const immediateDeps = depGraph[fromName];
-    if (immediateDeps !== undefined) {
-      for (const toName of immediateDeps) {
-        collectTransitiveDependencies(collected, depGraph, toName);
-      }
-    }
-  }
-}
-
-function collectDependencies(selectionSet: SelectionSetNode): Array<string> {
-  const dependencies = [];
-
-  visit(selectionSet, {
-    FragmentSpread(node) {
-      dependencies.push(node.name.value);
-    },
-  });
-  return dependencies;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/separateOperations.mjs b/includes/external/school/node_modules/graphql/utilities/separateOperations.mjs
deleted file mode 100644
index 69c75da..0000000
--- a/includes/external/school/node_modules/graphql/utilities/separateOperations.mjs
+++ /dev/null
@@ -1,84 +0,0 @@
-import { Kind } from "../language/kinds.mjs";
-import { visit } from "../language/visitor.mjs";
-/**
- * separateOperations accepts a single AST document which may contain many
- * operations and fragments and returns a collection of AST documents each of
- * which contains a single operation as well the fragment definitions it
- * refers to.
- */
-
-export function separateOperations(documentAST) {
-  var operations = [];
-  var depGraph = Object.create(null); // Populate metadata and build a dependency graph.
-
-  for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {
-    var definitionNode = _documentAST$definiti2[_i2];
-
-    switch (definitionNode.kind) {
-      case Kind.OPERATION_DEFINITION:
-        operations.push(definitionNode);
-        break;
-
-      case Kind.FRAGMENT_DEFINITION:
-        depGraph[definitionNode.name.value] = collectDependencies(definitionNode.selectionSet);
-        break;
-    }
-  } // For each operation, produce a new synthesized AST which includes only what
-  // is necessary for completing that operation.
-
-
-  var separatedDocumentASTs = Object.create(null);
-
-  var _loop = function _loop(_i4) {
-    var operation = operations[_i4];
-    var dependencies = new Set();
-
-    for (var _i6 = 0, _collectDependencies2 = collectDependencies(operation.selectionSet); _i6 < _collectDependencies2.length; _i6++) {
-      var fragmentName = _collectDependencies2[_i6];
-      collectTransitiveDependencies(dependencies, depGraph, fragmentName);
-    } // Provides the empty string for anonymous operations.
-
-
-    var operationName = operation.name ? operation.name.value : ''; // The list of definition nodes to be included for this operation, sorted
-    // to retain the same order as the original document.
-
-    separatedDocumentASTs[operationName] = {
-      kind: Kind.DOCUMENT,
-      definitions: documentAST.definitions.filter(function (node) {
-        return node === operation || node.kind === Kind.FRAGMENT_DEFINITION && dependencies.has(node.name.value);
-      })
-    };
-  };
-
-  for (var _i4 = 0; _i4 < operations.length; _i4++) {
-    _loop(_i4);
-  }
-
-  return separatedDocumentASTs;
-}
-
-// From a dependency graph, collects a list of transitive dependencies by
-// recursing through a dependency graph.
-function collectTransitiveDependencies(collected, depGraph, fromName) {
-  if (!collected.has(fromName)) {
-    collected.add(fromName);
-    var immediateDeps = depGraph[fromName];
-
-    if (immediateDeps !== undefined) {
-      for (var _i8 = 0; _i8 < immediateDeps.length; _i8++) {
-        var toName = immediateDeps[_i8];
-        collectTransitiveDependencies(collected, depGraph, toName);
-      }
-    }
-  }
-}
-
-function collectDependencies(selectionSet) {
-  var dependencies = [];
-  visit(selectionSet, {
-    FragmentSpread: function FragmentSpread(node) {
-      dependencies.push(node.name.value);
-    }
-  });
-  return dependencies;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.d.ts b/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.d.ts
deleted file mode 100644
index a131af0..0000000
--- a/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.d.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { Source } from '../language/source';
-
-/**
- * Strips characters that are not significant to the validity or execution
- * of a GraphQL document:
- *   - UnicodeBOM
- *   - WhiteSpace
- *   - LineTerminator
- *   - Comment
- *   - Comma
- *   - BlockString indentation
- *
- * Note: It is required to have a delimiter character between neighboring
- * non-punctuator tokens and this function always uses single space as delimiter.
- *
- * It is guaranteed that both input and output documents if parsed would result
- * in the exact same AST except for nodes location.
- *
- * Warning: It is guaranteed that this function will always produce stable results.
- * However, it's not guaranteed that it will stay the same between different
- * releases due to bugfixes or changes in the GraphQL specification.
- *
- * Query example:
- *
- * query SomeQuery($foo: String!, $bar: String) {
- *   someField(foo: $foo, bar: $bar) {
- *     a
- *     b {
- *       c
- *       d
- *     }
- *   }
- * }
- *
- * Becomes:
- *
- * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}
- *
- * SDL example:
- *
- * """
- * Type description
- * """
- * type Foo {
- *   """
- *   Field description
- *   """
- *   bar: String
- * }
- *
- * Becomes:
- *
- * """Type description""" type Foo{"""Field description""" bar:String}
- */
-export function stripIgnoredCharacters(source: string | Source): string;
diff --git a/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.js b/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.js
deleted file mode 100644
index aac5ddc..0000000
--- a/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.js
+++ /dev/null
@@ -1,123 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.stripIgnoredCharacters = stripIgnoredCharacters;
-
-var _source = require("../language/source.js");
-
-var _tokenKind = require("../language/tokenKind.js");
-
-var _lexer = require("../language/lexer.js");
-
-var _blockString = require("../language/blockString.js");
-
-/**
- * Strips characters that are not significant to the validity or execution
- * of a GraphQL document:
- *   - UnicodeBOM
- *   - WhiteSpace
- *   - LineTerminator
- *   - Comment
- *   - Comma
- *   - BlockString indentation
- *
- * Note: It is required to have a delimiter character between neighboring
- * non-punctuator tokens and this function always uses single space as delimiter.
- *
- * It is guaranteed that both input and output documents if parsed would result
- * in the exact same AST except for nodes location.
- *
- * Warning: It is guaranteed that this function will always produce stable results.
- * However, it's not guaranteed that it will stay the same between different
- * releases due to bugfixes or changes in the GraphQL specification.
- *
- * Query example:
- *
- * query SomeQuery($foo: String!, $bar: String) {
- *   someField(foo: $foo, bar: $bar) {
- *     a
- *     b {
- *       c
- *       d
- *     }
- *   }
- * }
- *
- * Becomes:
- *
- * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}
- *
- * SDL example:
- *
- * """
- * Type description
- * """
- * type Foo {
- *   """
- *   Field description
- *   """
- *   bar: String
- * }
- *
- * Becomes:
- *
- * """Type description""" type Foo{"""Field description""" bar:String}
- */
-function stripIgnoredCharacters(source) {
-  var sourceObj = (0, _source.isSource)(source) ? source : new _source.Source(source);
-  var body = sourceObj.body;
-  var lexer = new _lexer.Lexer(sourceObj);
-  var strippedBody = '';
-  var wasLastAddedTokenNonPunctuator = false;
-
-  while (lexer.advance().kind !== _tokenKind.TokenKind.EOF) {
-    var currentToken = lexer.token;
-    var tokenKind = currentToken.kind;
-    /**
-     * Every two non-punctuator tokens should have space between them.
-     * Also prevent case of non-punctuator token following by spread resulting
-     * in invalid token (e.g. `1...` is invalid Float token).
-     */
-
-    var isNonPunctuator = !(0, _lexer.isPunctuatorTokenKind)(currentToken.kind);
-
-    if (wasLastAddedTokenNonPunctuator) {
-      if (isNonPunctuator || currentToken.kind === _tokenKind.TokenKind.SPREAD) {
-        strippedBody += ' ';
-      }
-    }
-
-    var tokenBody = body.slice(currentToken.start, currentToken.end);
-
-    if (tokenKind === _tokenKind.TokenKind.BLOCK_STRING) {
-      strippedBody += dedentBlockString(tokenBody);
-    } else {
-      strippedBody += tokenBody;
-    }
-
-    wasLastAddedTokenNonPunctuator = isNonPunctuator;
-  }
-
-  return strippedBody;
-}
-
-function dedentBlockString(blockStr) {
-  // skip leading and trailing triple quotations
-  var rawStr = blockStr.slice(3, -3);
-  var body = (0, _blockString.dedentBlockStringValue)(rawStr);
-
-  if ((0, _blockString.getBlockStringIndentation)(body) > 0) {
-    body = '\n' + body;
-  }
-
-  var lastChar = body[body.length - 1];
-  var hasTrailingQuote = lastChar === '"' && body.slice(-4) !== '\\"""';
-
-  if (hasTrailingQuote || lastChar === '\\') {
-    body += '\n';
-  }
-
-  return '"""' + body + '"""';
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.js.flow b/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.js.flow
deleted file mode 100644
index a5a6aa9..0000000
--- a/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.js.flow
+++ /dev/null
@@ -1,115 +0,0 @@
-// @flow strict
-import { Source, isSource } from '../language/source';
-import { TokenKind } from '../language/tokenKind';
-import { Lexer, isPunctuatorTokenKind } from '../language/lexer';
-import {
-  dedentBlockStringValue,
-  getBlockStringIndentation,
-} from '../language/blockString';
-
-/**
- * Strips characters that are not significant to the validity or execution
- * of a GraphQL document:
- *   - UnicodeBOM
- *   - WhiteSpace
- *   - LineTerminator
- *   - Comment
- *   - Comma
- *   - BlockString indentation
- *
- * Note: It is required to have a delimiter character between neighboring
- * non-punctuator tokens and this function always uses single space as delimiter.
- *
- * It is guaranteed that both input and output documents if parsed would result
- * in the exact same AST except for nodes location.
- *
- * Warning: It is guaranteed that this function will always produce stable results.
- * However, it's not guaranteed that it will stay the same between different
- * releases due to bugfixes or changes in the GraphQL specification.
- *
- * Query example:
- *
- * query SomeQuery($foo: String!, $bar: String) {
- *   someField(foo: $foo, bar: $bar) {
- *     a
- *     b {
- *       c
- *       d
- *     }
- *   }
- * }
- *
- * Becomes:
- *
- * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}
- *
- * SDL example:
- *
- * """
- * Type description
- * """
- * type Foo {
- *   """
- *   Field description
- *   """
- *   bar: String
- * }
- *
- * Becomes:
- *
- * """Type description""" type Foo{"""Field description""" bar:String}
- */
-export function stripIgnoredCharacters(source: string | Source): string {
-  const sourceObj = isSource(source) ? source : new Source(source);
-
-  const body = sourceObj.body;
-  const lexer = new Lexer(sourceObj);
-  let strippedBody = '';
-
-  let wasLastAddedTokenNonPunctuator = false;
-  while (lexer.advance().kind !== TokenKind.EOF) {
-    const currentToken = lexer.token;
-    const tokenKind = currentToken.kind;
-
-    /**
-     * Every two non-punctuator tokens should have space between them.
-     * Also prevent case of non-punctuator token following by spread resulting
-     * in invalid token (e.g. `1...` is invalid Float token).
-     */
-    const isNonPunctuator = !isPunctuatorTokenKind(currentToken.kind);
-    if (wasLastAddedTokenNonPunctuator) {
-      if (isNonPunctuator || currentToken.kind === TokenKind.SPREAD) {
-        strippedBody += ' ';
-      }
-    }
-
-    const tokenBody = body.slice(currentToken.start, currentToken.end);
-    if (tokenKind === TokenKind.BLOCK_STRING) {
-      strippedBody += dedentBlockString(tokenBody);
-    } else {
-      strippedBody += tokenBody;
-    }
-
-    wasLastAddedTokenNonPunctuator = isNonPunctuator;
-  }
-
-  return strippedBody;
-}
-
-function dedentBlockString(blockStr: string): string {
-  // skip leading and trailing triple quotations
-  const rawStr = blockStr.slice(3, -3);
-  let body = dedentBlockStringValue(rawStr);
-
-  if (getBlockStringIndentation(body) > 0) {
-    body = '\n' + body;
-  }
-
-  const lastChar = body[body.length - 1];
-  const hasTrailingQuote = lastChar === '"' && body.slice(-4) !== '\\"""';
-  if (hasTrailingQuote || lastChar === '\\') {
-    body += '\n';
-  }
-
-  return '"""' + body + '"""';
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.mjs b/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.mjs
deleted file mode 100644
index a0a0758..0000000
--- a/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.mjs
+++ /dev/null
@@ -1,113 +0,0 @@
-import { Source, isSource } from "../language/source.mjs";
-import { TokenKind } from "../language/tokenKind.mjs";
-import { Lexer, isPunctuatorTokenKind } from "../language/lexer.mjs";
-import { dedentBlockStringValue, getBlockStringIndentation } from "../language/blockString.mjs";
-/**
- * Strips characters that are not significant to the validity or execution
- * of a GraphQL document:
- *   - UnicodeBOM
- *   - WhiteSpace
- *   - LineTerminator
- *   - Comment
- *   - Comma
- *   - BlockString indentation
- *
- * Note: It is required to have a delimiter character between neighboring
- * non-punctuator tokens and this function always uses single space as delimiter.
- *
- * It is guaranteed that both input and output documents if parsed would result
- * in the exact same AST except for nodes location.
- *
- * Warning: It is guaranteed that this function will always produce stable results.
- * However, it's not guaranteed that it will stay the same between different
- * releases due to bugfixes or changes in the GraphQL specification.
- *
- * Query example:
- *
- * query SomeQuery($foo: String!, $bar: String) {
- *   someField(foo: $foo, bar: $bar) {
- *     a
- *     b {
- *       c
- *       d
- *     }
- *   }
- * }
- *
- * Becomes:
- *
- * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}
- *
- * SDL example:
- *
- * """
- * Type description
- * """
- * type Foo {
- *   """
- *   Field description
- *   """
- *   bar: String
- * }
- *
- * Becomes:
- *
- * """Type description""" type Foo{"""Field description""" bar:String}
- */
-
-export function stripIgnoredCharacters(source) {
-  var sourceObj = isSource(source) ? source : new Source(source);
-  var body = sourceObj.body;
-  var lexer = new Lexer(sourceObj);
-  var strippedBody = '';
-  var wasLastAddedTokenNonPunctuator = false;
-
-  while (lexer.advance().kind !== TokenKind.EOF) {
-    var currentToken = lexer.token;
-    var tokenKind = currentToken.kind;
-    /**
-     * Every two non-punctuator tokens should have space between them.
-     * Also prevent case of non-punctuator token following by spread resulting
-     * in invalid token (e.g. `1...` is invalid Float token).
-     */
-
-    var isNonPunctuator = !isPunctuatorTokenKind(currentToken.kind);
-
-    if (wasLastAddedTokenNonPunctuator) {
-      if (isNonPunctuator || currentToken.kind === TokenKind.SPREAD) {
-        strippedBody += ' ';
-      }
-    }
-
-    var tokenBody = body.slice(currentToken.start, currentToken.end);
-
-    if (tokenKind === TokenKind.BLOCK_STRING) {
-      strippedBody += dedentBlockString(tokenBody);
-    } else {
-      strippedBody += tokenBody;
-    }
-
-    wasLastAddedTokenNonPunctuator = isNonPunctuator;
-  }
-
-  return strippedBody;
-}
-
-function dedentBlockString(blockStr) {
-  // skip leading and trailing triple quotations
-  var rawStr = blockStr.slice(3, -3);
-  var body = dedentBlockStringValue(rawStr);
-
-  if (getBlockStringIndentation(body) > 0) {
-    body = '\n' + body;
-  }
-
-  var lastChar = body[body.length - 1];
-  var hasTrailingQuote = lastChar === '"' && body.slice(-4) !== '\\"""';
-
-  if (hasTrailingQuote || lastChar === '\\') {
-    body += '\n';
-  }
-
-  return '"""' + body + '"""';
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/typeComparators.d.ts b/includes/external/school/node_modules/graphql/utilities/typeComparators.d.ts
deleted file mode 100644
index 7de3e00..0000000
--- a/includes/external/school/node_modules/graphql/utilities/typeComparators.d.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { GraphQLSchema } from '../type/schema';
-import { GraphQLType, GraphQLCompositeType } from '../type/definition';
-
-/**
- * Provided two types, return true if the types are equal (invariant).
- */
-export function isEqualType(typeA: GraphQLType, typeB: GraphQLType): boolean;
-
-/**
- * Provided a type and a super type, return true if the first type is either
- * equal or a subset of the second super type (covariant).
- */
-export function isTypeSubTypeOf(
-  schema: GraphQLSchema,
-  maybeSubType: GraphQLType,
-  superType: GraphQLType,
-): boolean;
-
-/**
- * Provided two composite types, determine if they "overlap". Two composite
- * types overlap when the Sets of possible concrete types for each intersect.
- *
- * This is often used to determine if a fragment of a given type could possibly
- * be visited in a context of another type.
- *
- * This function is commutative.
- */
-export function doTypesOverlap(
-  schema: GraphQLSchema,
-  typeA: GraphQLCompositeType,
-  typeB: GraphQLCompositeType,
-): boolean;
diff --git a/includes/external/school/node_modules/graphql/utilities/typeComparators.js b/includes/external/school/node_modules/graphql/utilities/typeComparators.js
deleted file mode 100644
index 42ad5fd..0000000
--- a/includes/external/school/node_modules/graphql/utilities/typeComparators.js
+++ /dev/null
@@ -1,115 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.isEqualType = isEqualType;
-exports.isTypeSubTypeOf = isTypeSubTypeOf;
-exports.doTypesOverlap = doTypesOverlap;
-
-var _definition = require("../type/definition.js");
-
-/**
- * Provided two types, return true if the types are equal (invariant).
- */
-function isEqualType(typeA, typeB) {
-  // Equivalent types are equal.
-  if (typeA === typeB) {
-    return true;
-  } // If either type is non-null, the other must also be non-null.
-
-
-  if ((0, _definition.isNonNullType)(typeA) && (0, _definition.isNonNullType)(typeB)) {
-    return isEqualType(typeA.ofType, typeB.ofType);
-  } // If either type is a list, the other must also be a list.
-
-
-  if ((0, _definition.isListType)(typeA) && (0, _definition.isListType)(typeB)) {
-    return isEqualType(typeA.ofType, typeB.ofType);
-  } // Otherwise the types are not equal.
-
-
-  return false;
-}
-/**
- * Provided a type and a super type, return true if the first type is either
- * equal or a subset of the second super type (covariant).
- */
-
-
-function isTypeSubTypeOf(schema, maybeSubType, superType) {
-  // Equivalent type is a valid subtype
-  if (maybeSubType === superType) {
-    return true;
-  } // If superType is non-null, maybeSubType must also be non-null.
-
-
-  if ((0, _definition.isNonNullType)(superType)) {
-    if ((0, _definition.isNonNullType)(maybeSubType)) {
-      return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);
-    }
-
-    return false;
-  }
-
-  if ((0, _definition.isNonNullType)(maybeSubType)) {
-    // If superType is nullable, maybeSubType may be non-null or nullable.
-    return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);
-  } // If superType type is a list, maybeSubType type must also be a list.
-
-
-  if ((0, _definition.isListType)(superType)) {
-    if ((0, _definition.isListType)(maybeSubType)) {
-      return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);
-    }
-
-    return false;
-  }
-
-  if ((0, _definition.isListType)(maybeSubType)) {
-    // If superType is not a list, maybeSubType must also be not a list.
-    return false;
-  } // If superType type is an abstract type, check if it is super type of maybeSubType.
-  // Otherwise, the child type is not a valid subtype of the parent type.
-
-
-  return (0, _definition.isAbstractType)(superType) && ((0, _definition.isInterfaceType)(maybeSubType) || (0, _definition.isObjectType)(maybeSubType)) && schema.isSubType(superType, maybeSubType);
-}
-/**
- * Provided two composite types, determine if they "overlap". Two composite
- * types overlap when the Sets of possible concrete types for each intersect.
- *
- * This is often used to determine if a fragment of a given type could possibly
- * be visited in a context of another type.
- *
- * This function is commutative.
- */
-
-
-function doTypesOverlap(schema, typeA, typeB) {
-  // Equivalent types overlap
-  if (typeA === typeB) {
-    return true;
-  }
-
-  if ((0, _definition.isAbstractType)(typeA)) {
-    if ((0, _definition.isAbstractType)(typeB)) {
-      // If both types are abstract, then determine if there is any intersection
-      // between possible concrete types of each.
-      return schema.getPossibleTypes(typeA).some(function (type) {
-        return schema.isSubType(typeB, type);
-      });
-    } // Determine if the latter type is a possible concrete type of the former.
-
-
-    return schema.isSubType(typeA, typeB);
-  }
-
-  if ((0, _definition.isAbstractType)(typeB)) {
-    // Determine if the former type is a possible concrete type of the latter.
-    return schema.isSubType(typeB, typeA);
-  } // Otherwise the types do not overlap.
-
-
-  return false;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/typeComparators.js.flow b/includes/external/school/node_modules/graphql/utilities/typeComparators.js.flow
deleted file mode 100644
index c3b3af1..0000000
--- a/includes/external/school/node_modules/graphql/utilities/typeComparators.js.flow
+++ /dev/null
@@ -1,120 +0,0 @@
-// @flow strict
-import type { GraphQLSchema } from '../type/schema';
-import type { GraphQLType, GraphQLCompositeType } from '../type/definition';
-import {
-  isInterfaceType,
-  isObjectType,
-  isListType,
-  isNonNullType,
-  isAbstractType,
-} from '../type/definition';
-
-/**
- * Provided two types, return true if the types are equal (invariant).
- */
-export function isEqualType(typeA: GraphQLType, typeB: GraphQLType): boolean {
-  // Equivalent types are equal.
-  if (typeA === typeB) {
-    return true;
-  }
-
-  // If either type is non-null, the other must also be non-null.
-  if (isNonNullType(typeA) && isNonNullType(typeB)) {
-    return isEqualType(typeA.ofType, typeB.ofType);
-  }
-
-  // If either type is a list, the other must also be a list.
-  if (isListType(typeA) && isListType(typeB)) {
-    return isEqualType(typeA.ofType, typeB.ofType);
-  }
-
-  // Otherwise the types are not equal.
-  return false;
-}
-
-/**
- * Provided a type and a super type, return true if the first type is either
- * equal or a subset of the second super type (covariant).
- */
-export function isTypeSubTypeOf(
-  schema: GraphQLSchema,
-  maybeSubType: GraphQLType,
-  superType: GraphQLType,
-): boolean {
-  // Equivalent type is a valid subtype
-  if (maybeSubType === superType) {
-    return true;
-  }
-
-  // If superType is non-null, maybeSubType must also be non-null.
-  if (isNonNullType(superType)) {
-    if (isNonNullType(maybeSubType)) {
-      return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);
-    }
-    return false;
-  }
-  if (isNonNullType(maybeSubType)) {
-    // If superType is nullable, maybeSubType may be non-null or nullable.
-    return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);
-  }
-
-  // If superType type is a list, maybeSubType type must also be a list.
-  if (isListType(superType)) {
-    if (isListType(maybeSubType)) {
-      return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);
-    }
-    return false;
-  }
-  if (isListType(maybeSubType)) {
-    // If superType is not a list, maybeSubType must also be not a list.
-    return false;
-  }
-
-  // If superType type is an abstract type, check if it is super type of maybeSubType.
-  // Otherwise, the child type is not a valid subtype of the parent type.
-  return (
-    isAbstractType(superType) &&
-    (isInterfaceType(maybeSubType) || isObjectType(maybeSubType)) &&
-    schema.isSubType(superType, maybeSubType)
-  );
-}
-
-/**
- * Provided two composite types, determine if they "overlap". Two composite
- * types overlap when the Sets of possible concrete types for each intersect.
- *
- * This is often used to determine if a fragment of a given type could possibly
- * be visited in a context of another type.
- *
- * This function is commutative.
- */
-export function doTypesOverlap(
-  schema: GraphQLSchema,
-  typeA: GraphQLCompositeType,
-  typeB: GraphQLCompositeType,
-): boolean {
-  // Equivalent types overlap
-  if (typeA === typeB) {
-    return true;
-  }
-
-  if (isAbstractType(typeA)) {
-    if (isAbstractType(typeB)) {
-      // If both types are abstract, then determine if there is any intersection
-      // between possible concrete types of each.
-      return schema
-        .getPossibleTypes(typeA)
-        .some((type) => schema.isSubType(typeB, type));
-    }
-    // Determine if the latter type is a possible concrete type of the former.
-    return schema.isSubType(typeA, typeB);
-  }
-
-  if (isAbstractType(typeB)) {
-    // Determine if the former type is a possible concrete type of the latter.
-    return schema.isSubType(typeB, typeA);
-  }
-
-  // Otherwise the types do not overlap.
-  return false;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/typeComparators.mjs b/includes/external/school/node_modules/graphql/utilities/typeComparators.mjs
deleted file mode 100644
index ad3288a..0000000
--- a/includes/external/school/node_modules/graphql/utilities/typeComparators.mjs
+++ /dev/null
@@ -1,104 +0,0 @@
-import { isInterfaceType, isObjectType, isListType, isNonNullType, isAbstractType } from "../type/definition.mjs";
-/**
- * Provided two types, return true if the types are equal (invariant).
- */
-
-export function isEqualType(typeA, typeB) {
-  // Equivalent types are equal.
-  if (typeA === typeB) {
-    return true;
-  } // If either type is non-null, the other must also be non-null.
-
-
-  if (isNonNullType(typeA) && isNonNullType(typeB)) {
-    return isEqualType(typeA.ofType, typeB.ofType);
-  } // If either type is a list, the other must also be a list.
-
-
-  if (isListType(typeA) && isListType(typeB)) {
-    return isEqualType(typeA.ofType, typeB.ofType);
-  } // Otherwise the types are not equal.
-
-
-  return false;
-}
-/**
- * Provided a type and a super type, return true if the first type is either
- * equal or a subset of the second super type (covariant).
- */
-
-export function isTypeSubTypeOf(schema, maybeSubType, superType) {
-  // Equivalent type is a valid subtype
-  if (maybeSubType === superType) {
-    return true;
-  } // If superType is non-null, maybeSubType must also be non-null.
-
-
-  if (isNonNullType(superType)) {
-    if (isNonNullType(maybeSubType)) {
-      return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);
-    }
-
-    return false;
-  }
-
-  if (isNonNullType(maybeSubType)) {
-    // If superType is nullable, maybeSubType may be non-null or nullable.
-    return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);
-  } // If superType type is a list, maybeSubType type must also be a list.
-
-
-  if (isListType(superType)) {
-    if (isListType(maybeSubType)) {
-      return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);
-    }
-
-    return false;
-  }
-
-  if (isListType(maybeSubType)) {
-    // If superType is not a list, maybeSubType must also be not a list.
-    return false;
-  } // If superType type is an abstract type, check if it is super type of maybeSubType.
-  // Otherwise, the child type is not a valid subtype of the parent type.
-
-
-  return isAbstractType(superType) && (isInterfaceType(maybeSubType) || isObjectType(maybeSubType)) && schema.isSubType(superType, maybeSubType);
-}
-/**
- * Provided two composite types, determine if they "overlap". Two composite
- * types overlap when the Sets of possible concrete types for each intersect.
- *
- * This is often used to determine if a fragment of a given type could possibly
- * be visited in a context of another type.
- *
- * This function is commutative.
- */
-
-export function doTypesOverlap(schema, typeA, typeB) {
-  // Equivalent types overlap
-  if (typeA === typeB) {
-    return true;
-  }
-
-  if (isAbstractType(typeA)) {
-    if (isAbstractType(typeB)) {
-      // If both types are abstract, then determine if there is any intersection
-      // between possible concrete types of each.
-      return schema.getPossibleTypes(typeA).some(function (type) {
-        return schema.isSubType(typeB, type);
-      });
-    } // Determine if the latter type is a possible concrete type of the former.
-
-
-    return schema.isSubType(typeA, typeB);
-  }
-
-  if (isAbstractType(typeB)) {
-    // Determine if the former type is a possible concrete type of the latter.
-    return schema.isSubType(typeB, typeA);
-  } // Otherwise the types do not overlap.
-
-
-  return false;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/typeFromAST.d.ts b/includes/external/school/node_modules/graphql/utilities/typeFromAST.d.ts
deleted file mode 100644
index cf32ac7..0000000
--- a/includes/external/school/node_modules/graphql/utilities/typeFromAST.d.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { NamedTypeNode, ListTypeNode, NonNullTypeNode } from '../language/ast';
-import { GraphQLSchema } from '../type/schema';
-import {
-  GraphQLNamedType,
-  GraphQLList,
-  GraphQLNonNull,
-} from '../type/definition';
-
-/**
- * Given a Schema and an AST node describing a type, return a GraphQLType
- * definition which applies to that type. For example, if provided the parsed
- * AST node for `[User]`, a GraphQLList instance will be returned, containing
- * the type called "User" found in the schema. If a type called "User" is not
- * found in the schema, then undefined will be returned.
- */
-export function typeFromAST(
-  schema: GraphQLSchema,
-  typeNode: NamedTypeNode,
-): GraphQLNamedType | undefined;
-
-export function typeFromAST(
-  schema: GraphQLSchema,
-  typeNode: ListTypeNode,
-): GraphQLList<any> | undefined;
-
-export function typeFromAST(
-  schema: GraphQLSchema,
-  typeNode: NonNullTypeNode,
-): GraphQLNonNull<any> | undefined;
diff --git a/includes/external/school/node_modules/graphql/utilities/typeFromAST.js b/includes/external/school/node_modules/graphql/utilities/typeFromAST.js
deleted file mode 100644
index 5e85944..0000000
--- a/includes/external/school/node_modules/graphql/utilities/typeFromAST.js
+++ /dev/null
@@ -1,39 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.typeFromAST = typeFromAST;
-
-var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
-
-var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
-
-var _kinds = require("../language/kinds.js");
-
-var _definition = require("../type/definition.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function typeFromAST(schema, typeNode) {
-  /* eslint-enable no-redeclare */
-  var innerType;
-
-  if (typeNode.kind === _kinds.Kind.LIST_TYPE) {
-    innerType = typeFromAST(schema, typeNode.type);
-    return innerType && new _definition.GraphQLList(innerType);
-  }
-
-  if (typeNode.kind === _kinds.Kind.NON_NULL_TYPE) {
-    innerType = typeFromAST(schema, typeNode.type);
-    return innerType && new _definition.GraphQLNonNull(innerType);
-  } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-  if (typeNode.kind === _kinds.Kind.NAMED_TYPE) {
-    return schema.getType(typeNode.name.value);
-  } // istanbul ignore next (Not reachable. All possible type nodes have been considered)
-
-
-  false || (0, _invariant.default)(0, 'Unexpected type node: ' + (0, _inspect.default)(typeNode));
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/typeFromAST.js.flow b/includes/external/school/node_modules/graphql/utilities/typeFromAST.js.flow
deleted file mode 100644
index a8450d8..0000000
--- a/includes/external/school/node_modules/graphql/utilities/typeFromAST.js.flow
+++ /dev/null
@@ -1,55 +0,0 @@
-// @flow strict
-import inspect from '../jsutils/inspect';
-import invariant from '../jsutils/invariant';
-
-import type {
-  NamedTypeNode,
-  ListTypeNode,
-  NonNullTypeNode,
-} from '../language/ast';
-
-import { Kind } from '../language/kinds';
-
-import type { GraphQLSchema } from '../type/schema';
-import type { GraphQLNamedType } from '../type/definition';
-import { GraphQLList, GraphQLNonNull } from '../type/definition';
-
-/**
- * Given a Schema and an AST node describing a type, return a GraphQLType
- * definition which applies to that type. For example, if provided the parsed
- * AST node for `[User]`, a GraphQLList instance will be returned, containing
- * the type called "User" found in the schema. If a type called "User" is not
- * found in the schema, then undefined will be returned.
- */
-/* eslint-disable no-redeclare */
-declare function typeFromAST(
-  schema: GraphQLSchema,
-  typeNode: NamedTypeNode,
-): GraphQLNamedType | void;
-declare function typeFromAST(
-  schema: GraphQLSchema,
-  typeNode: ListTypeNode,
-): GraphQLList<any> | void;
-declare function typeFromAST(
-  schema: GraphQLSchema,
-  typeNode: NonNullTypeNode,
-): GraphQLNonNull<any> | void;
-export function typeFromAST(schema, typeNode) {
-  /* eslint-enable no-redeclare */
-  let innerType;
-  if (typeNode.kind === Kind.LIST_TYPE) {
-    innerType = typeFromAST(schema, typeNode.type);
-    return innerType && new GraphQLList(innerType);
-  }
-  if (typeNode.kind === Kind.NON_NULL_TYPE) {
-    innerType = typeFromAST(schema, typeNode.type);
-    return innerType && new GraphQLNonNull(innerType);
-  }
-  // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-  if (typeNode.kind === Kind.NAMED_TYPE) {
-    return schema.getType(typeNode.name.value);
-  }
-
-  // istanbul ignore next (Not reachable. All possible type nodes have been considered)
-  invariant(false, 'Unexpected type node: ' + inspect((typeNode: empty)));
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/typeFromAST.mjs b/includes/external/school/node_modules/graphql/utilities/typeFromAST.mjs
deleted file mode 100644
index 740cfeb..0000000
--- a/includes/external/school/node_modules/graphql/utilities/typeFromAST.mjs
+++ /dev/null
@@ -1,36 +0,0 @@
-import inspect from "../jsutils/inspect.mjs";
-import invariant from "../jsutils/invariant.mjs";
-import { Kind } from "../language/kinds.mjs";
-import { GraphQLList, GraphQLNonNull } from "../type/definition.mjs";
-/**
- * Given a Schema and an AST node describing a type, return a GraphQLType
- * definition which applies to that type. For example, if provided the parsed
- * AST node for `[User]`, a GraphQLList instance will be returned, containing
- * the type called "User" found in the schema. If a type called "User" is not
- * found in the schema, then undefined will be returned.
- */
-
-/* eslint-disable no-redeclare */
-
-export function typeFromAST(schema, typeNode) {
-  /* eslint-enable no-redeclare */
-  var innerType;
-
-  if (typeNode.kind === Kind.LIST_TYPE) {
-    innerType = typeFromAST(schema, typeNode.type);
-    return innerType && new GraphQLList(innerType);
-  }
-
-  if (typeNode.kind === Kind.NON_NULL_TYPE) {
-    innerType = typeFromAST(schema, typeNode.type);
-    return innerType && new GraphQLNonNull(innerType);
-  } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-  if (typeNode.kind === Kind.NAMED_TYPE) {
-    return schema.getType(typeNode.name.value);
-  } // istanbul ignore next (Not reachable. All possible type nodes have been considered)
-
-
-  false || invariant(0, 'Unexpected type node: ' + inspect(typeNode));
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/typedQueryDocumentNode.d.ts b/includes/external/school/node_modules/graphql/utilities/typedQueryDocumentNode.d.ts
deleted file mode 100644
index 0d7b8de..0000000
--- a/includes/external/school/node_modules/graphql/utilities/typedQueryDocumentNode.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { DocumentNode, ExecutableDefinitionNode } from '../language/ast';
-
-/**
- * Wrapper type that contains DocumentNode and types that can be deduced from it.
- */
-export interface TypedQueryDocumentNode<
-  TResponseData = Record<string, any>,
-  TRequestVariables = Record<string, any>
-> extends DocumentNode {
-  readonly definitions: ReadonlyArray<ExecutableDefinitionNode>;
-  // FIXME: remove once TS implements proper way to enforce nominal typing
-  /**
-   * This type is used to ensure that the variables you pass in to the query are assignable to Variables
-   * and that the Result is assignable to whatever you pass your result to. The method is never actually
-   * implemented, but the type is valid because we list it as optional
-   */
-  __ensureTypesOfVariablesAndResultMatching?: (
-    variables: TRequestVariables,
-  ) => TResponseData;
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/valueFromAST.d.ts b/includes/external/school/node_modules/graphql/utilities/valueFromAST.d.ts
deleted file mode 100644
index acde6ba..0000000
--- a/includes/external/school/node_modules/graphql/utilities/valueFromAST.d.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { Maybe } from '../jsutils/Maybe';
-
-import { ValueNode } from '../language/ast';
-import { GraphQLInputType } from '../type/definition';
-
-/**
- * Produces a JavaScript value given a GraphQL Value AST.
- *
- * A GraphQL type must be provided, which will be used to interpret different
- * GraphQL Value literals.
- *
- * Returns `undefined` when the value could not be validly coerced according to
- * the provided type.
- *
- * | GraphQL Value        | JSON Value    |
- * | -------------------- | ------------- |
- * | Input Object         | Object        |
- * | List                 | Array         |
- * | Boolean              | Boolean       |
- * | String               | String        |
- * | Int / Float          | Number        |
- * | Enum Value           | Mixed         |
- * | NullValue            | null          |
- *
- */
-export function valueFromAST(
-  valueNode: Maybe<ValueNode>,
-  type: GraphQLInputType,
-  variables?: Maybe<{ [key: string]: any }>,
-): any;
diff --git a/includes/external/school/node_modules/graphql/utilities/valueFromAST.js b/includes/external/school/node_modules/graphql/utilities/valueFromAST.js
deleted file mode 100644
index 0b0230c..0000000
--- a/includes/external/school/node_modules/graphql/utilities/valueFromAST.js
+++ /dev/null
@@ -1,186 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.valueFromAST = valueFromAST;
-
-var _objectValues3 = _interopRequireDefault(require("../polyfills/objectValues.js"));
-
-var _keyMap = _interopRequireDefault(require("../jsutils/keyMap.js"));
-
-var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
-
-var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
-
-var _kinds = require("../language/kinds.js");
-
-var _definition = require("../type/definition.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Produces a JavaScript value given a GraphQL Value AST.
- *
- * A GraphQL type must be provided, which will be used to interpret different
- * GraphQL Value literals.
- *
- * Returns `undefined` when the value could not be validly coerced according to
- * the provided type.
- *
- * | GraphQL Value        | JSON Value    |
- * | -------------------- | ------------- |
- * | Input Object         | Object        |
- * | List                 | Array         |
- * | Boolean              | Boolean       |
- * | String               | String        |
- * | Int / Float          | Number        |
- * | Enum Value           | Mixed         |
- * | NullValue            | null          |
- *
- */
-function valueFromAST(valueNode, type, variables) {
-  if (!valueNode) {
-    // When there is no node, then there is also no value.
-    // Importantly, this is different from returning the value null.
-    return;
-  }
-
-  if (valueNode.kind === _kinds.Kind.VARIABLE) {
-    var variableName = valueNode.name.value;
-
-    if (variables == null || variables[variableName] === undefined) {
-      // No valid return value.
-      return;
-    }
-
-    var variableValue = variables[variableName];
-
-    if (variableValue === null && (0, _definition.isNonNullType)(type)) {
-      return; // Invalid: intentionally return no value.
-    } // Note: This does no further checking that this variable is correct.
-    // This assumes that this query has been validated and the variable
-    // usage here is of the correct type.
-
-
-    return variableValue;
-  }
-
-  if ((0, _definition.isNonNullType)(type)) {
-    if (valueNode.kind === _kinds.Kind.NULL) {
-      return; // Invalid: intentionally return no value.
-    }
-
-    return valueFromAST(valueNode, type.ofType, variables);
-  }
-
-  if (valueNode.kind === _kinds.Kind.NULL) {
-    // This is explicitly returning the value null.
-    return null;
-  }
-
-  if ((0, _definition.isListType)(type)) {
-    var itemType = type.ofType;
-
-    if (valueNode.kind === _kinds.Kind.LIST) {
-      var coercedValues = [];
-
-      for (var _i2 = 0, _valueNode$values2 = valueNode.values; _i2 < _valueNode$values2.length; _i2++) {
-        var itemNode = _valueNode$values2[_i2];
-
-        if (isMissingVariable(itemNode, variables)) {
-          // If an array contains a missing variable, it is either coerced to
-          // null or if the item type is non-null, it considered invalid.
-          if ((0, _definition.isNonNullType)(itemType)) {
-            return; // Invalid: intentionally return no value.
-          }
-
-          coercedValues.push(null);
-        } else {
-          var itemValue = valueFromAST(itemNode, itemType, variables);
-
-          if (itemValue === undefined) {
-            return; // Invalid: intentionally return no value.
-          }
-
-          coercedValues.push(itemValue);
-        }
-      }
-
-      return coercedValues;
-    }
-
-    var coercedValue = valueFromAST(valueNode, itemType, variables);
-
-    if (coercedValue === undefined) {
-      return; // Invalid: intentionally return no value.
-    }
-
-    return [coercedValue];
-  }
-
-  if ((0, _definition.isInputObjectType)(type)) {
-    if (valueNode.kind !== _kinds.Kind.OBJECT) {
-      return; // Invalid: intentionally return no value.
-    }
-
-    var coercedObj = Object.create(null);
-    var fieldNodes = (0, _keyMap.default)(valueNode.fields, function (field) {
-      return field.name.value;
-    });
-
-    for (var _i4 = 0, _objectValues2 = (0, _objectValues3.default)(type.getFields()); _i4 < _objectValues2.length; _i4++) {
-      var field = _objectValues2[_i4];
-      var fieldNode = fieldNodes[field.name];
-
-      if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {
-        if (field.defaultValue !== undefined) {
-          coercedObj[field.name] = field.defaultValue;
-        } else if ((0, _definition.isNonNullType)(field.type)) {
-          return; // Invalid: intentionally return no value.
-        }
-
-        continue;
-      }
-
-      var fieldValue = valueFromAST(fieldNode.value, field.type, variables);
-
-      if (fieldValue === undefined) {
-        return; // Invalid: intentionally return no value.
-      }
-
-      coercedObj[field.name] = fieldValue;
-    }
-
-    return coercedObj;
-  } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-  if ((0, _definition.isLeafType)(type)) {
-    // Scalars and Enums fulfill parsing a literal value via parseLiteral().
-    // Invalid values represent a failure to parse correctly, in which case
-    // no value is returned.
-    var result;
-
-    try {
-      result = type.parseLiteral(valueNode, variables);
-    } catch (_error) {
-      return; // Invalid: intentionally return no value.
-    }
-
-    if (result === undefined) {
-      return; // Invalid: intentionally return no value.
-    }
-
-    return result;
-  } // istanbul ignore next (Not reachable. All possible input types have been considered)
-
-
-  false || (0, _invariant.default)(0, 'Unexpected input type: ' + (0, _inspect.default)(type));
-} // Returns true if the provided valueNode is a variable which is not defined
-// in the set of variables.
-
-
-function isMissingVariable(valueNode, variables) {
-  return valueNode.kind === _kinds.Kind.VARIABLE && (variables == null || variables[valueNode.name.value] === undefined);
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/valueFromAST.js.flow b/includes/external/school/node_modules/graphql/utilities/valueFromAST.js.flow
deleted file mode 100644
index 23d5588..0000000
--- a/includes/external/school/node_modules/graphql/utilities/valueFromAST.js.flow
+++ /dev/null
@@ -1,164 +0,0 @@
-// @flow strict
-import objectValues from '../polyfills/objectValues';
-
-import type { ObjMap } from '../jsutils/ObjMap';
-import keyMap from '../jsutils/keyMap';
-import inspect from '../jsutils/inspect';
-import invariant from '../jsutils/invariant';
-
-import type { ValueNode } from '../language/ast';
-import { Kind } from '../language/kinds';
-
-import type { GraphQLInputType } from '../type/definition';
-import {
-  isLeafType,
-  isInputObjectType,
-  isListType,
-  isNonNullType,
-} from '../type/definition';
-
-/**
- * Produces a JavaScript value given a GraphQL Value AST.
- *
- * A GraphQL type must be provided, which will be used to interpret different
- * GraphQL Value literals.
- *
- * Returns `undefined` when the value could not be validly coerced according to
- * the provided type.
- *
- * | GraphQL Value        | JSON Value    |
- * | -------------------- | ------------- |
- * | Input Object         | Object        |
- * | List                 | Array         |
- * | Boolean              | Boolean       |
- * | String               | String        |
- * | Int / Float          | Number        |
- * | Enum Value           | Mixed         |
- * | NullValue            | null          |
- *
- */
-export function valueFromAST(
-  valueNode: ?ValueNode,
-  type: GraphQLInputType,
-  variables?: ?ObjMap<mixed>,
-): mixed | void {
-  if (!valueNode) {
-    // When there is no node, then there is also no value.
-    // Importantly, this is different from returning the value null.
-    return;
-  }
-
-  if (valueNode.kind === Kind.VARIABLE) {
-    const variableName = valueNode.name.value;
-    if (variables == null || variables[variableName] === undefined) {
-      // No valid return value.
-      return;
-    }
-    const variableValue = variables[variableName];
-    if (variableValue === null && isNonNullType(type)) {
-      return; // Invalid: intentionally return no value.
-    }
-    // Note: This does no further checking that this variable is correct.
-    // This assumes that this query has been validated and the variable
-    // usage here is of the correct type.
-    return variableValue;
-  }
-
-  if (isNonNullType(type)) {
-    if (valueNode.kind === Kind.NULL) {
-      return; // Invalid: intentionally return no value.
-    }
-    return valueFromAST(valueNode, type.ofType, variables);
-  }
-
-  if (valueNode.kind === Kind.NULL) {
-    // This is explicitly returning the value null.
-    return null;
-  }
-
-  if (isListType(type)) {
-    const itemType = type.ofType;
-    if (valueNode.kind === Kind.LIST) {
-      const coercedValues = [];
-      for (const itemNode of valueNode.values) {
-        if (isMissingVariable(itemNode, variables)) {
-          // If an array contains a missing variable, it is either coerced to
-          // null or if the item type is non-null, it considered invalid.
-          if (isNonNullType(itemType)) {
-            return; // Invalid: intentionally return no value.
-          }
-          coercedValues.push(null);
-        } else {
-          const itemValue = valueFromAST(itemNode, itemType, variables);
-          if (itemValue === undefined) {
-            return; // Invalid: intentionally return no value.
-          }
-          coercedValues.push(itemValue);
-        }
-      }
-      return coercedValues;
-    }
-    const coercedValue = valueFromAST(valueNode, itemType, variables);
-    if (coercedValue === undefined) {
-      return; // Invalid: intentionally return no value.
-    }
-    return [coercedValue];
-  }
-
-  if (isInputObjectType(type)) {
-    if (valueNode.kind !== Kind.OBJECT) {
-      return; // Invalid: intentionally return no value.
-    }
-    const coercedObj = Object.create(null);
-    const fieldNodes = keyMap(valueNode.fields, (field) => field.name.value);
-    for (const field of objectValues(type.getFields())) {
-      const fieldNode = fieldNodes[field.name];
-      if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {
-        if (field.defaultValue !== undefined) {
-          coercedObj[field.name] = field.defaultValue;
-        } else if (isNonNullType(field.type)) {
-          return; // Invalid: intentionally return no value.
-        }
-        continue;
-      }
-      const fieldValue = valueFromAST(fieldNode.value, field.type, variables);
-      if (fieldValue === undefined) {
-        return; // Invalid: intentionally return no value.
-      }
-      coercedObj[field.name] = fieldValue;
-    }
-    return coercedObj;
-  }
-
-  // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-  if (isLeafType(type)) {
-    // Scalars and Enums fulfill parsing a literal value via parseLiteral().
-    // Invalid values represent a failure to parse correctly, in which case
-    // no value is returned.
-    let result;
-    try {
-      result = type.parseLiteral(valueNode, variables);
-    } catch (_error) {
-      return; // Invalid: intentionally return no value.
-    }
-    if (result === undefined) {
-      return; // Invalid: intentionally return no value.
-    }
-    return result;
-  }
-
-  // istanbul ignore next (Not reachable. All possible input types have been considered)
-  invariant(false, 'Unexpected input type: ' + inspect((type: empty)));
-}
-
-// Returns true if the provided valueNode is a variable which is not defined
-// in the set of variables.
-function isMissingVariable(
-  valueNode: ValueNode,
-  variables: ?ObjMap<mixed>,
-): boolean {
-  return (
-    valueNode.kind === Kind.VARIABLE &&
-    (variables == null || variables[valueNode.name.value] === undefined)
-  );
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/valueFromAST.mjs b/includes/external/school/node_modules/graphql/utilities/valueFromAST.mjs
deleted file mode 100644
index 5879ea7..0000000
--- a/includes/external/school/node_modules/graphql/utilities/valueFromAST.mjs
+++ /dev/null
@@ -1,171 +0,0 @@
-import objectValues from "../polyfills/objectValues.mjs";
-import keyMap from "../jsutils/keyMap.mjs";
-import inspect from "../jsutils/inspect.mjs";
-import invariant from "../jsutils/invariant.mjs";
-import { Kind } from "../language/kinds.mjs";
-import { isLeafType, isInputObjectType, isListType, isNonNullType } from "../type/definition.mjs";
-/**
- * Produces a JavaScript value given a GraphQL Value AST.
- *
- * A GraphQL type must be provided, which will be used to interpret different
- * GraphQL Value literals.
- *
- * Returns `undefined` when the value could not be validly coerced according to
- * the provided type.
- *
- * | GraphQL Value        | JSON Value    |
- * | -------------------- | ------------- |
- * | Input Object         | Object        |
- * | List                 | Array         |
- * | Boolean              | Boolean       |
- * | String               | String        |
- * | Int / Float          | Number        |
- * | Enum Value           | Mixed         |
- * | NullValue            | null          |
- *
- */
-
-export function valueFromAST(valueNode, type, variables) {
-  if (!valueNode) {
-    // When there is no node, then there is also no value.
-    // Importantly, this is different from returning the value null.
-    return;
-  }
-
-  if (valueNode.kind === Kind.VARIABLE) {
-    var variableName = valueNode.name.value;
-
-    if (variables == null || variables[variableName] === undefined) {
-      // No valid return value.
-      return;
-    }
-
-    var variableValue = variables[variableName];
-
-    if (variableValue === null && isNonNullType(type)) {
-      return; // Invalid: intentionally return no value.
-    } // Note: This does no further checking that this variable is correct.
-    // This assumes that this query has been validated and the variable
-    // usage here is of the correct type.
-
-
-    return variableValue;
-  }
-
-  if (isNonNullType(type)) {
-    if (valueNode.kind === Kind.NULL) {
-      return; // Invalid: intentionally return no value.
-    }
-
-    return valueFromAST(valueNode, type.ofType, variables);
-  }
-
-  if (valueNode.kind === Kind.NULL) {
-    // This is explicitly returning the value null.
-    return null;
-  }
-
-  if (isListType(type)) {
-    var itemType = type.ofType;
-
-    if (valueNode.kind === Kind.LIST) {
-      var coercedValues = [];
-
-      for (var _i2 = 0, _valueNode$values2 = valueNode.values; _i2 < _valueNode$values2.length; _i2++) {
-        var itemNode = _valueNode$values2[_i2];
-
-        if (isMissingVariable(itemNode, variables)) {
-          // If an array contains a missing variable, it is either coerced to
-          // null or if the item type is non-null, it considered invalid.
-          if (isNonNullType(itemType)) {
-            return; // Invalid: intentionally return no value.
-          }
-
-          coercedValues.push(null);
-        } else {
-          var itemValue = valueFromAST(itemNode, itemType, variables);
-
-          if (itemValue === undefined) {
-            return; // Invalid: intentionally return no value.
-          }
-
-          coercedValues.push(itemValue);
-        }
-      }
-
-      return coercedValues;
-    }
-
-    var coercedValue = valueFromAST(valueNode, itemType, variables);
-
-    if (coercedValue === undefined) {
-      return; // Invalid: intentionally return no value.
-    }
-
-    return [coercedValue];
-  }
-
-  if (isInputObjectType(type)) {
-    if (valueNode.kind !== Kind.OBJECT) {
-      return; // Invalid: intentionally return no value.
-    }
-
-    var coercedObj = Object.create(null);
-    var fieldNodes = keyMap(valueNode.fields, function (field) {
-      return field.name.value;
-    });
-
-    for (var _i4 = 0, _objectValues2 = objectValues(type.getFields()); _i4 < _objectValues2.length; _i4++) {
-      var field = _objectValues2[_i4];
-      var fieldNode = fieldNodes[field.name];
-
-      if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {
-        if (field.defaultValue !== undefined) {
-          coercedObj[field.name] = field.defaultValue;
-        } else if (isNonNullType(field.type)) {
-          return; // Invalid: intentionally return no value.
-        }
-
-        continue;
-      }
-
-      var fieldValue = valueFromAST(fieldNode.value, field.type, variables);
-
-      if (fieldValue === undefined) {
-        return; // Invalid: intentionally return no value.
-      }
-
-      coercedObj[field.name] = fieldValue;
-    }
-
-    return coercedObj;
-  } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')
-
-
-  if (isLeafType(type)) {
-    // Scalars and Enums fulfill parsing a literal value via parseLiteral().
-    // Invalid values represent a failure to parse correctly, in which case
-    // no value is returned.
-    var result;
-
-    try {
-      result = type.parseLiteral(valueNode, variables);
-    } catch (_error) {
-      return; // Invalid: intentionally return no value.
-    }
-
-    if (result === undefined) {
-      return; // Invalid: intentionally return no value.
-    }
-
-    return result;
-  } // istanbul ignore next (Not reachable. All possible input types have been considered)
-
-
-  false || invariant(0, 'Unexpected input type: ' + inspect(type));
-} // Returns true if the provided valueNode is a variable which is not defined
-// in the set of variables.
-
-function isMissingVariable(valueNode, variables) {
-  return valueNode.kind === Kind.VARIABLE && (variables == null || variables[valueNode.name.value] === undefined);
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.d.ts b/includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.d.ts
deleted file mode 100644
index a44959d..0000000
--- a/includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.d.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { Maybe } from '../jsutils/Maybe';
-
-import { ValueNode } from '../language/ast';
-
-/**
- * Produces a JavaScript value given a GraphQL Value AST.
- *
- * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value
- * will reflect the provided GraphQL value AST.
- *
- * | GraphQL Value        | JavaScript Value |
- * | -------------------- | ---------------- |
- * | Input Object         | Object           |
- * | List                 | Array            |
- * | Boolean              | Boolean          |
- * | String / Enum        | String           |
- * | Int / Float          | Number           |
- * | Null                 | null             |
- *
- */
-export function valueFromASTUntyped(
-  valueNode: ValueNode,
-  variables?: Maybe<{ [key: string]: any }>,
-): any;
diff --git a/includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.js b/includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.js
deleted file mode 100644
index 5cdb413..0000000
--- a/includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.js
+++ /dev/null
@@ -1,68 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.valueFromASTUntyped = valueFromASTUntyped;
-
-var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
-
-var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
-
-var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap.js"));
-
-var _kinds = require("../language/kinds.js");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Produces a JavaScript value given a GraphQL Value AST.
- *
- * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value
- * will reflect the provided GraphQL value AST.
- *
- * | GraphQL Value        | JavaScript Value |
- * | -------------------- | ---------------- |
- * | Input Object         | Object           |
- * | List                 | Array            |
- * | Boolean              | Boolean          |
- * | String / Enum        | String           |
- * | Int / Float          | Number           |
- * | Null                 | null             |
- *
- */
-function valueFromASTUntyped(valueNode, variables) {
-  switch (valueNode.kind) {
-    case _kinds.Kind.NULL:
-      return null;
-
-    case _kinds.Kind.INT:
-      return parseInt(valueNode.value, 10);
-
-    case _kinds.Kind.FLOAT:
-      return parseFloat(valueNode.value);
-
-    case _kinds.Kind.STRING:
-    case _kinds.Kind.ENUM:
-    case _kinds.Kind.BOOLEAN:
-      return valueNode.value;
-
-    case _kinds.Kind.LIST:
-      return valueNode.values.map(function (node) {
-        return valueFromASTUntyped(node, variables);
-      });
-
-    case _kinds.Kind.OBJECT:
-      return (0, _keyValMap.default)(valueNode.fields, function (field) {
-        return field.name.value;
-      }, function (field) {
-        return valueFromASTUntyped(field.value, variables);
-      });
-
-    case _kinds.Kind.VARIABLE:
-      return variables === null || variables === void 0 ? void 0 : variables[valueNode.name.value];
-  } // istanbul ignore next (Not reachable. All possible value nodes have been considered)
-
-
-  false || (0, _invariant.default)(0, 'Unexpected value node: ' + (0, _inspect.default)(valueNode));
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.js.flow b/includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.js.flow
deleted file mode 100644
index e98779d..0000000
--- a/includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.js.flow
+++ /dev/null
@@ -1,57 +0,0 @@
-// @flow strict
-import type { ObjMap } from '../jsutils/ObjMap';
-import inspect from '../jsutils/inspect';
-import invariant from '../jsutils/invariant';
-import keyValMap from '../jsutils/keyValMap';
-
-import { Kind } from '../language/kinds';
-import type { ValueNode } from '../language/ast';
-
-/**
- * Produces a JavaScript value given a GraphQL Value AST.
- *
- * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value
- * will reflect the provided GraphQL value AST.
- *
- * | GraphQL Value        | JavaScript Value |
- * | -------------------- | ---------------- |
- * | Input Object         | Object           |
- * | List                 | Array            |
- * | Boolean              | Boolean          |
- * | String / Enum        | String           |
- * | Int / Float          | Number           |
- * | Null                 | null             |
- *
- */
-export function valueFromASTUntyped(
-  valueNode: ValueNode,
-  variables?: ?ObjMap<mixed>,
-): mixed {
-  switch (valueNode.kind) {
-    case Kind.NULL:
-      return null;
-    case Kind.INT:
-      return parseInt(valueNode.value, 10);
-    case Kind.FLOAT:
-      return parseFloat(valueNode.value);
-    case Kind.STRING:
-    case Kind.ENUM:
-    case Kind.BOOLEAN:
-      return valueNode.value;
-    case Kind.LIST:
-      return valueNode.values.map((node) =>
-        valueFromASTUntyped(node, variables),
-      );
-    case Kind.OBJECT:
-      return keyValMap(
-        valueNode.fields,
-        (field) => field.name.value,
-        (field) => valueFromASTUntyped(field.value, variables),
-      );
-    case Kind.VARIABLE:
-      return variables?.[valueNode.name.value];
-  }
-
-  // istanbul ignore next (Not reachable. All possible value nodes have been considered)
-  invariant(false, 'Unexpected value node: ' + inspect((valueNode: empty)));
-}
diff --git a/includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.mjs b/includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.mjs
deleted file mode 100644
index e70622c..0000000
--- a/includes/external/school/node_modules/graphql/utilities/valueFromASTUntyped.mjs
+++ /dev/null
@@ -1,56 +0,0 @@
-import inspect from "../jsutils/inspect.mjs";
-import invariant from "../jsutils/invariant.mjs";
-import keyValMap from "../jsutils/keyValMap.mjs";
-import { Kind } from "../language/kinds.mjs";
-
-/**
- * Produces a JavaScript value given a GraphQL Value AST.
- *
- * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value
- * will reflect the provided GraphQL value AST.
- *
- * | GraphQL Value        | JavaScript Value |
- * | -------------------- | ---------------- |
- * | Input Object         | Object           |
- * | List                 | Array            |
- * | Boolean              | Boolean          |
- * | String / Enum        | String           |
- * | Int / Float          | Number           |
- * | Null                 | null             |
- *
- */
-export function valueFromASTUntyped(valueNode, variables) {
-  switch (valueNode.kind) {
-    case Kind.NULL:
-      return null;
-
-    case Kind.INT:
-      return parseInt(valueNode.value, 10);
-
-    case Kind.FLOAT:
-      return parseFloat(valueNode.value);
-
-    case Kind.STRING:
-    case Kind.ENUM:
-    case Kind.BOOLEAN:
-      return valueNode.value;
-
-    case Kind.LIST:
-      return valueNode.values.map(function (node) {
-        return valueFromASTUntyped(node, variables);
-      });
-
-    case Kind.OBJECT:
-      return keyValMap(valueNode.fields, function (field) {
-        return field.name.value;
-      }, function (field) {
-        return valueFromASTUntyped(field.value, variables);
-      });
-
-    case Kind.VARIABLE:
-      return variables === null || variables === void 0 ? void 0 : variables[valueNode.name.value];
-  } // istanbul ignore next (Not reachable. All possible value nodes have been considered)
-
-
-  false || invariant(0, 'Unexpected value node: ' + inspect(valueNode));
-}
-- 
cgit