25 lines
990 B
TypeScript
25 lines
990 B
TypeScript
import { validationMetadatasToSchemas } from "@odit/class-validator-jsonschema";
|
|
import express, { Application } from "express";
|
|
import path from 'path';
|
|
import { getMetadataArgsStorage } from "routing-controllers";
|
|
import { generateSpec } from '../apispec';
|
|
|
|
/**
|
|
* Loader for everything openapi related - from creating the schema to serving it via a static route and swaggerUiExpress.
|
|
* All auth schema related stuff also has to be configured here
|
|
*/
|
|
export default async (app: Application) => {
|
|
const storage = getMetadataArgsStorage();
|
|
const schemas = validationMetadatasToSchemas({
|
|
refPointerPrefix: "#/components/schemas/",
|
|
});
|
|
|
|
//Spec creation based on the previously created schemas
|
|
const spec = generateSpec(storage, schemas);
|
|
app.get(["/docs/openapi.json", "/docs/swagger.json"], (req, res) => {
|
|
res.json(spec);
|
|
});
|
|
app.use('/docs', express.static(path.join(__dirname, '../static/docs'), { index: "index.html", extensions: ['html'] }));
|
|
return app;
|
|
};
|