123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { GraphQLError } from '../../error/GraphQLError.mjs';
- /**
- * Lone Schema definition
- *
- * A GraphQL document is only valid if it contains only one schema definition.
- */
- export function LoneSchemaDefinitionRule(context) {
- var _ref, _ref2, _oldSchema$astNode;
- const oldSchema = context.getSchema();
- const alreadyDefined =
- (_ref =
- (_ref2 =
- (_oldSchema$astNode =
- oldSchema === null || oldSchema === void 0
- ? void 0
- : oldSchema.astNode) !== null && _oldSchema$astNode !== void 0
- ? _oldSchema$astNode
- : oldSchema === null || oldSchema === void 0
- ? void 0
- : oldSchema.getQueryType()) !== null && _ref2 !== void 0
- ? _ref2
- : oldSchema === null || oldSchema === void 0
- ? void 0
- : oldSchema.getMutationType()) !== null && _ref !== void 0
- ? _ref
- : oldSchema === null || oldSchema === void 0
- ? void 0
- : oldSchema.getSubscriptionType();
- let schemaDefinitionsCount = 0;
- return {
- SchemaDefinition(node) {
- if (alreadyDefined) {
- context.reportError(
- new GraphQLError(
- 'Cannot define a new schema within a schema extension.',
- {
- nodes: node,
- },
- ),
- );
- return;
- }
- if (schemaDefinitionsCount > 0) {
- context.reportError(
- new GraphQLError('Must provide only one schema definition.', {
- nodes: node,
- }),
- );
- }
- ++schemaDefinitionsCount;
- },
- };
- }
|