UNPKG

apollo-server-restify

Version:

Production-ready Node.js GraphQL server for Restify

59 lines 2.12 kB
"use strict"; 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