UNPKG

@terabits/grapi

Version:

Grapi Schema Generator For GraphQL Server

77 lines (76 loc) 3.29 kB
"use strict"; exports.__esModule = true; exports.SdlParser = exports.parseDefinitionNodeToSdl = void 0; var graphql_1 = require("graphql"); var lodash_1 = require("../lodash"); var namedType_1 = require("./namedType"); var utils_1 = require("./utils"); var parseNodeToSdlObjectType = function (documentNode, node, getSdlNamedType) { var fields = (0, lodash_1.reduce)(node.fields, function (result, fieldNode) { result[fieldNode.name.value] = (0, utils_1.createSdlField)(documentNode, fieldNode, getSdlNamedType); return result; }, {}); var directives = (0, lodash_1.reduce)(node.directives, function (result, directiveNode) { result[directiveNode.name.value] = (0, utils_1.parseDirectiveNode)(directiveNode); return result; }, {}); var interfaces = node.interfaces.map(function (namedTypeNode) { return namedTypeNode.name.value; }); return new namedType_1.SdlObjectType({ typeDef: node, name: node.name.value, description: (0, lodash_1.get)(node, 'description.value'), directives: directives, interfaces: interfaces, fields: fields }); }; var parseNodeToSdlEnumType = function (node) { return new namedType_1.SdlEnumType({ typeDef: node, name: node.name.value, description: (0, lodash_1.get)(node, 'description.value'), values: node.values.map(function (valueDefNode) { return valueDefNode.name.value; }) }); }; var parseDefinitionNodeToSdl = function (node) { return (0, graphql_1.print)(node); }; exports.parseDefinitionNodeToSdl = parseDefinitionNodeToSdl; var SdlParser = (function () { function SdlParser() { var _this = this; this.namedTypeMap = {}; this.getSdlNamedType = function (name) { return _this.namedTypeMap[name]; }; } SdlParser.prototype.parse = function (sdl) { var _this = this; var documentAST = (0, graphql_1.parse)(sdl); (0, graphql_1.visit)(documentAST, { enter: function (node, key, parent, path) { if (node.kind === graphql_1.Kind.DIRECTIVE_DEFINITION) { var scalarName = node.name.value; _this.namedTypeMap[scalarName] = new namedType_1.SdlDirectiveType({ typeDef: node, name: scalarName }); return false; } if (node.kind === graphql_1.Kind.SCALAR_TYPE_DEFINITION) { var scalarName = node.name.value; _this.namedTypeMap[scalarName] = new namedType_1.SdlScalarType({ typeDef: node, name: scalarName }); return false; } if (node.kind === graphql_1.Kind.OBJECT_TYPE_DEFINITION) { _this.namedTypeMap[node.name.value] = parseNodeToSdlObjectType(documentAST, node, _this.getSdlNamedType); return false; } if (node.kind === graphql_1.Kind.ENUM_TYPE_DEFINITION) { _this.namedTypeMap[node.name.value] = parseNodeToSdlEnumType(node); return false; } } }); return (0, lodash_1.values)(this.namedTypeMap); }; return SdlParser; }()); exports.SdlParser = SdlParser;