UNPKG

@jaymun723/apollo-server-vercel

Version:

Production-ready Node.js GraphQL server for Vercel Serverless Functions (temporary package).

39 lines (35 loc) 1.11 kB
import { runHttpQuery, convertNodeHttpToRequest } from "apollo-server-core"; import { setHeaders } from "./setHeaders.js"; export function graphqlVercel(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}`); } const graphqlHandler = async (req, res) => { if (req.method === `POST` && !req.body) { return res.status(500).send(`POST body missing.`); } try { const { graphqlResponse, responseInit } = await runHttpQuery([req, res], { method: req.method, options, query: req?.body || req.query, request: convertNodeHttpToRequest(req) }); setHeaders(res, responseInit.headers ?? {}); return res.status(200).send(graphqlResponse); } catch (error) { const { headers, statusCode, message } = error; setHeaders(res, headers ?? {}); return res.status(statusCode).send(message); } }; return graphqlHandler; }