swagger2-koa
Version:
Koa 2 middleware for loading, parsing and validating requests via swagger2
45 lines (44 loc) • 3.16 kB
JavaScript
// 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