UNPKG

@feathersjs/koa

Version:

Feathers KoaJS framework bindings and REST provider

106 lines 4.41 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.serveStatic = exports.cors = exports.bodyParser = exports.Koa = void 0; exports.koa = koa; const koa_1 = __importDefault(require("koa")); exports.Koa = koa_1.default; const koa_qs_1 = __importDefault(require("koa-qs")); const transport_commons_1 = require("@feathersjs/transport-commons"); const commons_1 = require("@feathersjs/commons"); const koa_body_1 = require("koa-body"); Object.defineProperty(exports, "bodyParser", { enumerable: true, get: function () { return koa_body_1.koaBody; } }); const cors_1 = __importDefault(require("@koa/cors")); exports.cors = cors_1.default; const koa_static_1 = __importDefault(require("koa-static")); exports.serveStatic = koa_static_1.default; __exportStar(require("./authentication"), exports); __exportStar(require("./declarations"), exports); __exportStar(require("./handlers"), exports); __exportStar(require("./rest"), exports); const debug = (0, commons_1.createDebug)('@feathersjs/koa'); function koa(feathersApp, koaApp = new koa_1.default()) { if (!feathersApp) { return koaApp; } if (typeof feathersApp.setup !== 'function') { throw new Error('@feathersjs/koa requires a valid Feathers application instance'); } const app = feathersApp; const { listen: koaListen, use: koaUse } = koaApp; const { use: feathersUse, teardown: feathersTeardown } = feathersApp; Object.assign(app, { use(location, ...args) { if (typeof location === 'string') { return feathersUse.call(this, location, ...args); } return koaUse.call(this, location); }, async listen(port, ...args) { const server = koaListen.call(this, port, ...args); this.server = server; await this.setup(server); debug('Feathers application listening'); return server; }, async teardown(server) { return feathersTeardown.call(this, server).then(() => new Promise((resolve, reject) => { if (this.server) { this.server.close((e) => (e ? reject(e) : resolve(this))); } else { resolve(this); } })); } }); const appDescriptors = { ...Object.getOwnPropertyDescriptors(Object.getPrototypeOf(app)), ...Object.getOwnPropertyDescriptors(app) }; const newDescriptors = { ...Object.getOwnPropertyDescriptors(Object.getPrototypeOf(koaApp)), ...Object.getOwnPropertyDescriptors(koaApp) }; // Copy all non-existing properties (including non-enumerables) // that don't already exist on the Express app Object.keys(newDescriptors).forEach((prop) => { const appProp = appDescriptors[prop]; const newProp = newDescriptors[prop]; if (appProp === undefined && newProp !== undefined) { Object.defineProperty(app, prop, newProp); } }); (0, koa_qs_1.default)(app); Object.getOwnPropertySymbols(koaApp).forEach((symbol) => { const target = app; const source = koaApp; target[symbol] = source[symbol]; }); // This reinitializes hooks app.setup = feathersApp.setup; app.teardown = feathersApp.teardown; app.configure((0, transport_commons_1.routing)()); app.use((ctx, next) => { ctx.feathers = { ...ctx.feathers, provider: 'rest' }; return next(); }); return app; } //# sourceMappingURL=index.js.map