summaryrefslogtreecommitdiff
path: root/school/node_modules/graphql/validation/rules/custom
diff options
context:
space:
mode:
Diffstat (limited to 'school/node_modules/graphql/validation/rules/custom')
-rw-r--r--school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.d.ts14
-rw-r--r--school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js79
-rw-r--r--school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js.flow94
-rw-r--r--school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs68
-rw-r--r--school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts16
-rw-r--r--school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js34
-rw-r--r--school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow38
-rw-r--r--school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs25
8 files changed, 368 insertions, 0 deletions
diff --git a/school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.d.ts b/school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.d.ts
new file mode 100644
index 0000000..d376cf8
--- /dev/null
+++ b/school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.d.ts
@@ -0,0 +1,14 @@
+import { ASTVisitor } from '../../../language/visitor';
+import { ValidationContext } from '../../ValidationContext';
+
+/**
+ * No deprecated
+ *
+ * A GraphQL document is only valid if all selected fields and all used enum values have not been
+ * deprecated.
+ *
+ * Note: This rule is optional and is not part of the Validation section of the GraphQL
+ * Specification. The main purpose of this rule is detection of deprecated usages and not
+ * necessarily to forbid their use when querying a service.
+ */
+export function NoDeprecatedCustomRule(context: ValidationContext): ASTVisitor;
diff --git a/school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js b/school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js
new file mode 100644
index 0000000..63ad4dc
--- /dev/null
+++ b/school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js
@@ -0,0 +1,79 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.NoDeprecatedCustomRule = NoDeprecatedCustomRule;
+
+var _invariant = _interopRequireDefault(require("../../../jsutils/invariant.js"));
+
+var _GraphQLError = require("../../../error/GraphQLError.js");
+
+var _definition = require("../../../type/definition.js");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * No deprecated
+ *
+ * A GraphQL document is only valid if all selected fields and all used enum values have not been
+ * deprecated.
+ *
+ * Note: This rule is optional and is not part of the Validation section of the GraphQL
+ * Specification. The main purpose of this rule is detection of deprecated usages and not
+ * necessarily to forbid their use when querying a service.
+ */
+function NoDeprecatedCustomRule(context) {
+ return {
+ Field: function Field(node) {
+ var fieldDef = context.getFieldDef();
+ var deprecationReason = fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.deprecationReason;
+
+ if (fieldDef && deprecationReason != null) {
+ var parentType = context.getParentType();
+ parentType != null || (0, _invariant.default)(0);
+ context.reportError(new _GraphQLError.GraphQLError("The field ".concat(parentType.name, ".").concat(fieldDef.name, " is deprecated. ").concat(deprecationReason), node));
+ }
+ },
+ Argument: function Argument(node) {
+ var argDef = context.getArgument();
+ var deprecationReason = argDef === null || argDef === void 0 ? void 0 : argDef.deprecationReason;
+
+ if (argDef && deprecationReason != null) {
+ var directiveDef = context.getDirective();
+
+ if (directiveDef != null) {
+ context.reportError(new _GraphQLError.GraphQLError("Directive \"@".concat(directiveDef.name, "\" argument \"").concat(argDef.name, "\" is deprecated. ").concat(deprecationReason), node));
+ } else {
+ var parentType = context.getParentType();
+ var fieldDef = context.getFieldDef();
+ parentType != null && fieldDef != null || (0, _invariant.default)(0);
+ context.reportError(new _GraphQLError.GraphQLError("Field \"".concat(parentType.name, ".").concat(fieldDef.name, "\" argument \"").concat(argDef.name, "\" is deprecated. ").concat(deprecationReason), node));
+ }
+ }
+ },
+ ObjectField: function ObjectField(node) {
+ var inputObjectDef = (0, _definition.getNamedType)(context.getParentInputType());
+
+ if ((0, _definition.isInputObjectType)(inputObjectDef)) {
+ var inputFieldDef = inputObjectDef.getFields()[node.name.value]; // flowlint-next-line unnecessary-optional-chain:off
+
+ var deprecationReason = inputFieldDef === null || inputFieldDef === void 0 ? void 0 : inputFieldDef.deprecationReason;
+
+ if (deprecationReason != null) {
+ context.reportError(new _GraphQLError.GraphQLError("The input field ".concat(inputObjectDef.name, ".").concat(inputFieldDef.name, " is deprecated. ").concat(deprecationReason), node));
+ }
+ }
+ },
+ EnumValue: function EnumValue(node) {
+ var enumValueDef = context.getEnumValue();
+ var deprecationReason = enumValueDef === null || enumValueDef === void 0 ? void 0 : enumValueDef.deprecationReason;
+
+ if (enumValueDef && deprecationReason != null) {
+ var enumTypeDef = (0, _definition.getNamedType)(context.getInputType());
+ enumTypeDef != null || (0, _invariant.default)(0);
+ context.reportError(new _GraphQLError.GraphQLError("The enum value \"".concat(enumTypeDef.name, ".").concat(enumValueDef.name, "\" is deprecated. ").concat(deprecationReason), node));
+ }
+ }
+ };
+}
diff --git a/school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js.flow b/school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js.flow
new file mode 100644
index 0000000..6b61065
--- /dev/null
+++ b/school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js.flow
@@ -0,0 +1,94 @@
+// @flow strict
+import invariant from '../../../jsutils/invariant';
+
+import { GraphQLError } from '../../../error/GraphQLError';
+
+import type { ASTVisitor } from '../../../language/visitor';
+
+import { getNamedType, isInputObjectType } from '../../../type/definition';
+
+import type { ValidationContext } from '../../ValidationContext';
+
+/**
+ * No deprecated
+ *
+ * A GraphQL document is only valid if all selected fields and all used enum values have not been
+ * deprecated.
+ *
+ * Note: This rule is optional and is not part of the Validation section of the GraphQL
+ * Specification. The main purpose of this rule is detection of deprecated usages and not
+ * necessarily to forbid their use when querying a service.
+ */
+export function NoDeprecatedCustomRule(context: ValidationContext): ASTVisitor {
+ return {
+ Field(node) {
+ const fieldDef = context.getFieldDef();
+ const deprecationReason = fieldDef?.deprecationReason;
+ if (fieldDef && deprecationReason != null) {
+ const parentType = context.getParentType();
+ invariant(parentType != null);
+ context.reportError(
+ new GraphQLError(
+ `The field ${parentType.name}.${fieldDef.name} is deprecated. ${deprecationReason}`,
+ node,
+ ),
+ );
+ }
+ },
+ Argument(node) {
+ const argDef = context.getArgument();
+ const deprecationReason = argDef?.deprecationReason;
+ if (argDef && deprecationReason != null) {
+ const directiveDef = context.getDirective();
+ if (directiveDef != null) {
+ context.reportError(
+ new GraphQLError(
+ `Directive "@${directiveDef.name}" argument "${argDef.name}" is deprecated. ${deprecationReason}`,
+ node,
+ ),
+ );
+ } else {
+ const parentType = context.getParentType();
+ const fieldDef = context.getFieldDef();
+ invariant(parentType != null && fieldDef != null);
+ context.reportError(
+ new GraphQLError(
+ `Field "${parentType.name}.${fieldDef.name}" argument "${argDef.name}" is deprecated. ${deprecationReason}`,
+ node,
+ ),
+ );
+ }
+ }
+ },
+ ObjectField(node) {
+ const inputObjectDef = getNamedType(context.getParentInputType());
+ if (isInputObjectType(inputObjectDef)) {
+ const inputFieldDef = inputObjectDef.getFields()[node.name.value];
+ // flowlint-next-line unnecessary-optional-chain:off
+ const deprecationReason = inputFieldDef?.deprecationReason;
+ if (deprecationReason != null) {
+ context.reportError(
+ new GraphQLError(
+ `The input field ${inputObjectDef.name}.${inputFieldDef.name} is deprecated. ${deprecationReason}`,
+ node,
+ ),
+ );
+ }
+ }
+ },
+ EnumValue(node) {
+ const enumValueDef = context.getEnumValue();
+ const deprecationReason = enumValueDef?.deprecationReason;
+ if (enumValueDef && deprecationReason != null) {
+ const enumTypeDef = getNamedType(context.getInputType());
+ invariant(enumTypeDef != null);
+ context.reportError(
+ new GraphQLError(
+ `The enum value "${enumTypeDef.name}.${enumValueDef.name}" is deprecated. ${deprecationReason}`,
+ node,
+ ),
+ );
+ }
+ },
+ };
+}
diff --git a/school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs b/school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs
new file mode 100644
index 0000000..f0e0b36
--- /dev/null
+++ b/school/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs
@@ -0,0 +1,68 @@
+import invariant from "../../../jsutils/invariant.mjs";
+import { GraphQLError } from "../../../error/GraphQLError.mjs";
+import { getNamedType, isInputObjectType } from "../../../type/definition.mjs";
+
+/**
+ * No deprecated
+ *
+ * A GraphQL document is only valid if all selected fields and all used enum values have not been
+ * deprecated.
+ *
+ * Note: This rule is optional and is not part of the Validation section of the GraphQL
+ * Specification. The main purpose of this rule is detection of deprecated usages and not
+ * necessarily to forbid their use when querying a service.
+ */
+export function NoDeprecatedCustomRule(context) {
+ return {
+ Field: function Field(node) {
+ var fieldDef = context.getFieldDef();
+ var deprecationReason = fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.deprecationReason;
+
+ if (fieldDef && deprecationReason != null) {
+ var parentType = context.getParentType();
+ parentType != null || invariant(0);
+ context.reportError(new GraphQLError("The field ".concat(parentType.name, ".").concat(fieldDef.name, " is deprecated. ").concat(deprecationReason), node));
+ }
+ },
+ Argument: function Argument(node) {
+ var argDef = context.getArgument();
+ var deprecationReason = argDef === null || argDef === void 0 ? void 0 : argDef.deprecationReason;
+
+ if (argDef && deprecationReason != null) {
+ var directiveDef = context.getDirective();
+
+ if (directiveDef != null) {
+ context.reportError(new GraphQLError("Directive \"@".concat(directiveDef.name, "\" argument \"").concat(argDef.name, "\" is deprecated. ").concat(deprecationReason), node));
+ } else {
+ var parentType = context.getParentType();
+ var fieldDef = context.getFieldDef();
+ parentType != null && fieldDef != null || invariant(0);
+ context.reportError(new GraphQLError("Field \"".concat(parentType.name, ".").concat(fieldDef.name, "\" argument \"").concat(argDef.name, "\" is deprecated. ").concat(deprecationReason), node));
+ }
+ }
+ },
+ ObjectField: function ObjectField(node) {
+ var inputObjectDef = getNamedType(context.getParentInputType());
+
+ if (isInputObjectType(inputObjectDef)) {
+ var inputFieldDef = inputObjectDef.getFields()[node.name.value]; // flowlint-next-line unnecessary-optional-chain:off
+
+ var deprecationReason = inputFieldDef === null || inputFieldDef === void 0 ? void 0 : inputFieldDef.deprecationReason;
+
+ if (deprecationReason != null) {
+ context.reportError(new GraphQLError("The input field ".concat(inputObjectDef.name, ".").concat(inputFieldDef.name, " is deprecated. ").concat(deprecationReason), node));
+ }
+ }
+ },
+ EnumValue: function EnumValue(node) {
+ var enumValueDef = context.getEnumValue();
+ var deprecationReason = enumValueDef === null || enumValueDef === void 0 ? void 0 : enumValueDef.deprecationReason;
+
+ if (enumValueDef && deprecationReason != null) {
+ var enumTypeDef = getNamedType(context.getInputType());
+ enumTypeDef != null || invariant(0);
+ context.reportError(new GraphQLError("The enum value \"".concat(enumTypeDef.name, ".").concat(enumValueDef.name, "\" is deprecated. ").concat(deprecationReason), node));
+ }
+ }
+ };
+}
diff --git a/school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts b/school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts
new file mode 100644
index 0000000..3677fa1
--- /dev/null
+++ b/school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts
@@ -0,0 +1,16 @@
+import { ASTVisitor } from '../../../language/visitor';
+import { ValidationContext } from '../../ValidationContext';
+
+/**
+ * Prohibit introspection queries
+ *
+ * A GraphQL document is only valid if all fields selected are not fields that
+ * return an introspection type.
+ *
+ * Note: This rule is optional and is not part of the Validation section of the
+ * GraphQL Specification. This rule effectively disables introspection, which
+ * does not reflect best practices and should only be done if absolutely necessary.
+ */
+export function NoSchemaIntrospectionCustomRule(
+ context: ValidationContext,
+): ASTVisitor;
diff --git a/school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js b/school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js
new file mode 100644
index 0000000..6861bd4
--- /dev/null
+++ b/school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js
@@ -0,0 +1,34 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.NoSchemaIntrospectionCustomRule = NoSchemaIntrospectionCustomRule;
+
+var _GraphQLError = require("../../../error/GraphQLError.js");
+
+var _definition = require("../../../type/definition.js");
+
+var _introspection = require("../../../type/introspection.js");
+
+/**
+ * Prohibit introspection queries
+ *
+ * A GraphQL document is only valid if all fields selected are not fields that
+ * return an introspection type.
+ *
+ * Note: This rule is optional and is not part of the Validation section of the
+ * GraphQL Specification. This rule effectively disables introspection, which
+ * does not reflect best practices and should only be done if absolutely necessary.
+ */
+function NoSchemaIntrospectionCustomRule(context) {
+ return {
+ Field: function Field(node) {
+ var type = (0, _definition.getNamedType)(context.getType());
+
+ if (type && (0, _introspection.isIntrospectionType)(type)) {
+ context.reportError(new _GraphQLError.GraphQLError("GraphQL introspection has been disabled, but the requested query contained the field \"".concat(node.name.value, "\"."), node));
+ }
+ }
+ };
+}
diff --git a/school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow b/school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow
new file mode 100644
index 0000000..333ba41
--- /dev/null
+++ b/school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow
@@ -0,0 +1,38 @@
+// @flow strict
+import { GraphQLError } from '../../../error/GraphQLError';
+
+import type { FieldNode } from '../../../language/ast';
+import type { ASTVisitor } from '../../../language/visitor';
+
+import { getNamedType } from '../../../type/definition';
+import { isIntrospectionType } from '../../../type/introspection';
+
+import type { ValidationContext } from '../../ValidationContext';
+
+/**
+ * Prohibit introspection queries
+ *
+ * A GraphQL document is only valid if all fields selected are not fields that
+ * return an introspection type.
+ *
+ * Note: This rule is optional and is not part of the Validation section of the
+ * GraphQL Specification. This rule effectively disables introspection, which
+ * does not reflect best practices and should only be done if absolutely necessary.
+ */
+export function NoSchemaIntrospectionCustomRule(
+ context: ValidationContext,
+): ASTVisitor {
+ return {
+ Field(node: FieldNode) {
+ const type = getNamedType(context.getType());
+ if (type && isIntrospectionType(type)) {
+ context.reportError(
+ new GraphQLError(
+ `GraphQL introspection has been disabled, but the requested query contained the field "${node.name.value}".`,
+ node,
+ ),
+ );
+ }
+ },
+ };
+}
diff --git a/school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs b/school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs
new file mode 100644
index 0000000..26f7d74
--- /dev/null
+++ b/school/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs
@@ -0,0 +1,25 @@
+import { GraphQLError } from "../../../error/GraphQLError.mjs";
+import { getNamedType } from "../../../type/definition.mjs";
+import { isIntrospectionType } from "../../../type/introspection.mjs";
+
+/**
+ * Prohibit introspection queries
+ *
+ * A GraphQL document is only valid if all fields selected are not fields that
+ * return an introspection type.
+ *
+ * Note: This rule is optional and is not part of the Validation section of the
+ * GraphQL Specification. This rule effectively disables introspection, which
+ * does not reflect best practices and should only be done if absolutely necessary.
+ */
+export function NoSchemaIntrospectionCustomRule(context) {
+ return {
+ Field: function Field(node) {
+ var type = getNamedType(context.getType());
+
+ if (type && isIntrospectionType(type)) {
+ context.reportError(new GraphQLError("GraphQL introspection has been disabled, but the requested query contained the field \"".concat(node.name.value, "\"."), node));
+ }
+ }
+ };
+}