apollo-server-restify
Version:
Production-ready Node.js GraphQL server for Restify
59 lines • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var url = require("url");
var apollo_server_core_1 = require("apollo-server-core");
var GraphiQL = require("apollo-server-module-graphiql");
function graphqlRestify(options) {
if (!options) {
throw new Error('Apollo Server requires options.');
}
if (arguments.length > 1) {
throw new Error("Apollo Server expects exactly one argument, got " + arguments.length);
}
var graphqlHandler = function (req, res, next) {
apollo_server_core_1.runHttpQuery([req, res], {
method: req.method,
options: options,
query: req.method === 'POST' ? req.body : req.query,
}).then(function (gqlResponse) {
res.setHeader('Content-Type', 'application/json');
res.write(gqlResponse);
res.end();
next();
}, function (error) {
if ('HttpQueryError' !== error.name) {
throw error;
}
if (error.headers) {
Object.keys(error.headers).forEach(function (header) {
res.setHeader(header, error.headers[header]);
});
}
res.statusCode = error.statusCode;
res.write(error.message);
res.end();
next(false);
});
};
return graphqlHandler;
}
exports.graphqlRestify = graphqlRestify;
function graphiqlRestify(options) {
var graphiqlHandler = function (req, res, next) {
var query = (req.url && url.parse(req.url, true).query) || {};
GraphiQL.resolveGraphiQLString(query, options, req).then(function (graphiqlString) {
res.setHeader('Content-Type', 'text/html');
res.write(graphiqlString);
res.end();
next();
}, function (error) {
res.statusCode = 500;
res.write(error.message);
res.end();
next(false);
});
};
return graphiqlHandler;
}
exports.graphiqlRestify = graphiqlRestify;
//# sourceMappingURL=restifyApollo.js.map