graphql-codegen
Version:
Generate client code based on a GraphQL schema and query documents
68 lines (46 loc) • 1.88 kB
JavaScript
;
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);
}));
}