UNPKG

graphql-codegen

Version:

Generate client code based on a GraphQL schema and query documents

68 lines (46 loc) 1.88 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = generate; exports.loadSchema = loadSchema; exports.loadAndMergeQueryDocuments = loadAndMergeQueryDocuments; var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _mkdirp = require('mkdirp'); var _mkdirp2 = _interopRequireDefault(_mkdirp); var _graphql = require('graphql'); var _errors = require('./errors'); var _validation = require('./validation'); var _codeGeneration = require('./codeGeneration'); var _swift = require('./swift'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function generate(inputPaths, schemaPath, outputPath) { var schema = loadSchema(schemaPath); var document = loadAndMergeQueryDocuments(inputPaths); (0, _validation.validateQueryDocument)(schema, document); var context = new _codeGeneration.CodeGenerationContext(schema, document); var source = (0, _swift.generateSource)(context); _fs2.default.writeFileSync(outputPath, source); } function loadSchema(schemaPath) { if (!_fs2.default.existsSync(schemaPath)) { throw new _errors.ToolError('Cannot find GraphQL schema file: ' + schemaPath); } var schemaData = require(schemaPath); if (!schemaData.__schema) { throw new _errors.ToolError('GraphQL schema file should contain a valid GraphQL introspection query result'); } return (0, _graphql.buildClientSchema)(schemaData); } function loadAndMergeQueryDocuments(inputPaths) { var sources = inputPaths.map(function (inputPath) { var body = _fs2.default.readFileSync(inputPath, 'utf8'); return new _graphql.Source(body, inputPath); }); return (0, _graphql.concatAST)(sources.map(function (source) { return (0, _graphql.parse)(source); })); }