UNPKG

@pyramation/postgraphile

Version:

A GraphQL schema created by reflection over a PostgreSQL schema 🐘 (previously known as PostGraphQL)

38 lines 3.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.middleware = exports.isKoaApp = void 0; exports.isKoaApp = (a, b) => a.req && a.res && typeof b === 'function'; exports.middleware = async (ctx, next, requestHandler) => { // Hack the req object so we can get back to ctx ctx.req['_koaCtx'] = ctx; // Hack the end function to instead write the response body. // (This shouldn't be called by any PostGraphile code.) const oldEnd = ctx.res.end; ctx.res['end'] = (body, cb) => { // Setting ctx.response.body changes koa's status implicitly, unless it // already has one set: ctx.status = ctx.res.statusCode; ctx.response.body = body === undefined ? '' : body; if (typeof cb === 'function') { cb(); } }; // In case you're using koa-mount or similar ctx.req['originalUrl'] = ctx.request.originalUrl; // Execute our request handler. If an error is thrown, we don’t call // `next` with an error. Instead we return the promise and let `koa` // handle the error. let result; try { result = await requestHandler(ctx.req, ctx.res, next); } finally { ctx.res['end'] = oldEnd; if (ctx.res.statusCode && ctx.res.statusCode !== 200) { // eslint-disable-next-line require-atomic-updates ctx.response.status = ctx.res.statusCode; } } return result; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia29hTWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wb3N0Z3JhcGhpbGUvaHR0cC9rb2FNaWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlhLFFBQUEsUUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFVBQVUsQ0FBQztBQUV6RSxRQUFBLFVBQVUsR0FBRyxLQUFLLEVBQzdCLEdBQWUsRUFDZixJQUFvQyxFQUNwQyxjQUlpQixFQUNqQixFQUFFO0lBQ0YsZ0RBQWdEO0lBQy9DLEdBQUcsQ0FBQyxHQUEyQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUVsRCw0REFBNEQ7SUFDNUQsdURBQXVEO0lBQ3ZELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQzFCLEdBQUcsQ0FBQyxHQUEyQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBUyxFQUFFLEVBQWMsRUFBRSxFQUFFO1FBQ3RFLHVFQUF1RTtRQUN2RSx1QkFBdUI7UUFDdkIsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUNoQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNuRCxJQUFJLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRTtZQUM1QixFQUFFLEVBQUUsQ0FBQztTQUNOO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsNENBQTRDO0lBQzVDLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFFakQsb0VBQW9FO0lBQ3BFLG9FQUFvRTtJQUNwRSxvQkFBb0I7SUFDcEIsSUFBSSxNQUFNLENBQUM7SUFDWCxJQUFJO1FBQ0YsTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUN2RDtZQUFTO1FBQ1AsR0FBRyxDQUFDLEdBQTJCLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ2pELElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFO1lBQ3BELGtEQUFrRDtZQUNsRCxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztTQUMxQztLQUNGO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIn0=