123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- "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
- });
- }
|