UNPKG

grafserv

Version:

A highly optimized server for GraphQL, powered by Grafast

82 lines 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExpressGrafserv = void 0; exports.grafserv = grafserv; const utils_js_1 = require("../../../utils.js"); const index_js_1 = require("../../node/index.js"); class ExpressGrafserv extends index_js_1.NodeGrafservBase { getDigest(dynamicOptions, req, res) { return { httpVersionMajor: req.httpVersionMajor, httpVersionMinor: req.httpVersionMinor, isSecure: req.secure, method: req.method, path: req.path, headers: (0, utils_js_1.processHeaders)(req.headers), getQueryParams() { return req.query; }, getBody() { if (req.body != null) { return (0, utils_js_1.getBodyFromFrameworkBody)(req.body); } else { return (0, utils_js_1.getBodyFromRequest)(req, dynamicOptions.maxRequestLength); } }, requestContext: { node: { req, res, }, expressv4: { req, res, }, }, }; } async addTo(app, server, addExclusiveWebsocketHandler = true) { app.use(this._createHandler()); // Alias this just to make it easier for users to copy/paste the code below // eslint-disable-next-line @typescript-eslint/no-this-alias const serv = this; if (addExclusiveWebsocketHandler) { const grafservUpgradeHandler = await serv.getUpgradeHandler(); if (grafservUpgradeHandler) { const upgrade = (req, socket, head) => { if (serv.shouldHandleUpgrade(req, socket, head)) { grafservUpgradeHandler(req, socket, head); } else { socket.destroy(); } }; const attachWebsocketsToServer = (server) => { server.on("upgrade", upgrade); serv.onRelease(() => { server.off("upgrade", upgrade); }); }; if (server) { // If user explicitly passes server, bind to it: attachWebsocketsToServer(server); } else { // If not, hope they're calling `app.listen()` and intercept that call. const oldListen = app.listen; app.listen = function (...args) { const server = oldListen.apply(this, args); attachWebsocketsToServer(server); return server; }; } } } } } exports.ExpressGrafserv = ExpressGrafserv; function grafserv(config) { return new ExpressGrafserv(config); } //# sourceMappingURL=index.js.map