UNPKG

swagger2-koa

Version:

Koa 2 middleware for loading, parsing and validating requests via swagger2

45 lines (44 loc) 3.16 kB
// src/router.ts import Koa from "koa"; import body from "@koa/bodyparser"; import koaCors from "@koa/cors"; import KoaRouter from "@koa/router"; import * as swagger from "swagger2"; import validate from "./validate.mjs"; import debug from "./debug.mjs"; function router_default(swaggerDocument) { const router = new KoaRouter(); const app = new Koa(); let document; if (typeof swaggerDocument === "string") { document = swagger.loadDocumentSync(swaggerDocument); } else { document = swaggerDocument; } if (!swagger.validateDocument(document)) { throw new Error(`Document does not conform to the Swagger 2.0 schema`); } app.use(debug("swagger2-koa:router")); app.use(koaCors()); app.use(body()); app.use(validate(document)); app.use(router.routes()); app.use(router.allowedMethods()); const full = (path) => ( // eslint-disable-next-line unicorn/no-negated-condition,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/restrict-plus-operands document.basePath !== void 0 ? document.basePath + path : path ); return { get: (path, ...middleware) => router.get(full(path), ...middleware), head: (path, ...middleware) => router.head(full(path), ...middleware), put: (path, ...middleware) => router.put(full(path), ...middleware), post: (path, ...middleware) => router.post(full(path), ...middleware), del: (path, ...middleware) => router.del(full(path), ...middleware), patch: (path, ...middleware) => router.patch(full(path), ...middleware), app: () => app }; } export { router_default as default }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JvdXRlci50cyJdLAogICJtYXBwaW5ncyI6ICI7QUE4QkEsT0FBTyxTQUFTO0FBQ2hCLE9BQU8sVUFBVTtBQUNqQixPQUFPLGFBQWE7QUFDcEIsT0FBTyxlQUFlO0FBQ3RCLFlBQVksYUFBYTtBQUV6QixPQUFPLGNBQWM7QUFFckIsT0FBTyxXQUFXO0FBd0VILFNBQVIsZUFBa0IsaUJBQWtDO0FBQ3pELFFBQU0sU0FBUyxJQUFJLFVBQVU7QUFDN0IsUUFBTSxNQUFNLElBQUksSUFBSTtBQUdwQixNQUFJO0FBRUosTUFBSSxPQUFPLG9CQUFvQixVQUFVO0FBRXZDLGVBQW1CLHlCQUFpQixlQUFlO0FBQUEsRUFDckQsT0FBTztBQUNMLGVBQVc7QUFBQSxFQUNiO0FBRUEsTUFBSSxDQUFTLHlCQUFpQixRQUFRLEdBQUc7QUFDdkMsVUFBTSxJQUFJLE1BQU0scURBQXFEO0FBQUEsRUFDdkU7QUFFQSxNQUFJLElBQUksTUFBTSxxQkFBcUIsQ0FBQztBQUNwQyxNQUFJLElBQUksUUFBUSxDQUFDO0FBQ2pCLE1BQUksSUFBSSxLQUFLLENBQUM7QUFFZCxNQUFJLElBQUksU0FBUyxRQUFRLENBQUM7QUFDMUIsTUFBSSxJQUFJLE9BQU8sT0FBTyxDQUFDO0FBQ3ZCLE1BQUksSUFBSSxPQUFPLGVBQWUsQ0FBQztBQUUvQixRQUFNLE9BQU8sQ0FBQztBQUFBO0FBQUEsSUFFWixTQUFTLGFBQWEsU0FBWSxTQUFTLFdBQVcsT0FBTztBQUFBO0FBRS9ELFNBQU87QUFBQSxJQUNMLEtBQUssQ0FBQyxTQUFTLGVBQWUsT0FBTyxJQUFJLEtBQUssSUFBSSxHQUFHLEdBQUcsVUFBVTtBQUFBLElBQ2xFLE1BQU0sQ0FBQyxTQUFTLGVBQWUsT0FBTyxLQUFLLEtBQUssSUFBSSxHQUFHLEdBQUcsVUFBVTtBQUFBLElBQ3BFLEtBQUssQ0FBQyxTQUFTLGVBQWUsT0FBTyxJQUFJLEtBQUssSUFBSSxHQUFHLEdBQUcsVUFBVTtBQUFBLElBQ2xFLE1BQU0sQ0FBQyxTQUFTLGVBQWUsT0FBTyxLQUFLLEtBQUssSUFBSSxHQUFHLEdBQUcsVUFBVTtBQUFBLElBQ3BFLEtBQUssQ0FBQyxTQUFTLGVBQWUsT0FBTyxJQUFJLEtBQUssSUFBSSxHQUFHLEdBQUcsVUFBVTtBQUFBLElBQ2xFLE9BQU8sQ0FBQyxTQUFTLGVBQWUsT0FBTyxNQUFNLEtBQUssSUFBSSxHQUFHLEdBQUcsVUFBVTtBQUFBLElBQ3RFLEtBQUssTUFBTTtBQUFBLEVBQ2I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K