|
| 1 | +import { defaultMetadataStorage as classTransformerMetadataStorage } from 'class-transformer/storage'; |
| 2 | +import { getFromContainer, MetadataStorage } from 'class-validator'; |
| 3 | +import { validationMetadatasToSchemas } from 'class-validator-jsonschema'; |
1 | 4 | import basicAuth from 'express-basic-auth'; |
2 | 5 | import { MicroframeworkLoader, MicroframeworkSettings } from 'microframework-w3tec'; |
3 | | -import * as path from 'path'; |
| 6 | +import { getMetadataArgsStorage } from 'routing-controllers'; |
| 7 | +import { routingControllersToSpec } from 'routing-controllers-openapi'; |
4 | 8 | import * as swaggerUi from 'swagger-ui-express'; |
5 | 9 |
|
6 | 10 | import { env } from '../env'; |
7 | 11 |
|
8 | 12 | export const swaggerLoader: MicroframeworkLoader = (settings: MicroframeworkSettings | undefined) => { |
9 | 13 | if (settings && env.swagger.enabled) { |
10 | 14 | const expressApp = settings.getData('express_app'); |
11 | | - const swaggerFile = require(path.join(__dirname, '..', env.swagger.file)); |
| 15 | + |
| 16 | + const { validationMetadatas } = getFromContainer( |
| 17 | + MetadataStorage |
| 18 | + ) as any; |
| 19 | + |
| 20 | + const schemas = validationMetadatasToSchemas(validationMetadatas, { |
| 21 | + classTransformerMetadataStorage, |
| 22 | + refPointerPrefix: '#/components/schemas/', |
| 23 | + }); |
| 24 | + |
| 25 | + const swaggerFile = routingControllersToSpec(getMetadataArgsStorage(), {}, { |
| 26 | + components: { schemas }, |
| 27 | + }); |
12 | 28 |
|
13 | 29 | // Add npm infos to the swagger doc |
14 | 30 | swaggerFile.info = { |
|
0 commit comments