@pyramation/postgraphile
Version:
A GraphQL schema created by reflection over a PostgreSQL schema 🐘 (previously known as PostGraphQL)
38 lines • 3.26 kB
JavaScript
;
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=