diff options
Diffstat (limited to 'alarm/node_modules/graphql/utilities/buildASTSchema.mjs')
-rw-r--r-- | alarm/node_modules/graphql/utilities/buildASTSchema.mjs | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/alarm/node_modules/graphql/utilities/buildASTSchema.mjs b/alarm/node_modules/graphql/utilities/buildASTSchema.mjs new file mode 100644 index 0000000..8c4d4b1 --- /dev/null +++ b/alarm/node_modules/graphql/utilities/buildASTSchema.mjs @@ -0,0 +1,100 @@ +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 + }); +} |