Skip to content

Commit

Permalink
use v4.2 openapi validator and upgrade deps
Browse files Browse the repository at this point in the history
  • Loading branch information
cdimascio committed Oct 10, 2020
1 parent 5544dd0 commit db13b83
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 43 deletions.
1 change: 0 additions & 1 deletion app/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,6 @@ module.exports = class extends Generator {
copyOpts.globOptions.ignore.push(src + '/server/common/api.v2.yml');
} else {
files.push('server/common/api.v2.yml');
copyOpts.globOptions.ignore.push(src + '/server/common/openapi.ts');
copyOpts.globOptions.ignore.push(src + '/server/common/api.yml');
}
if (!this.docker) {
Expand Down
30 changes: 15 additions & 15 deletions app/templates/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,32 +18,32 @@
"cookie-parser": "^1.4.5",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"pino": "^6.5.1",
"pino": "^6.7.0",
<% if (specification === 'openapi_3') { %>
"express-openapi-validator": "^3.17.1"
"express-openapi-validator": "^4.2.0"
<% } else { %>
"swagger-express-middleware": "^4.0.1"
"swagger-express-middleware": "^4.0.2"
<% } %>
},
"devDependencies": {
"@types/chai": "^4.2.12",
"@types/express": "^4.17.7",
"@types/chai": "^4.2.13",
"@types/express": "^4.17.8",
"@types/mocha": "^8.0.3",
"@types/pino": "^6.3.0",
"@typescript-eslint/eslint-plugin": "^3.9.1",
"@typescript-eslint/parser": "^3.9.1",
"@types/pino": "^6.3.2",
"@typescript-eslint/eslint-plugin": "^4.4.0",
"@typescript-eslint/parser": "^4.4.0",
"chai": "^4.2.0",
"eslint": "^7.7.0",
"eslint-config-prettier": "^6.11.0",
"eslint": "^7.11.0",
"eslint-config-prettier": "^6.12.0",
"eslint-plugin-prettier": "^3.1.4",
"mocha": "^8.1.1",
"mocha": "^8.1.3",
"nodemon": "^2.0.4",
"pino-pretty": "^4.1.0",
"prettier": "^2.0.5",
"pino-pretty": "^4.3.0",
"prettier": "^2.1.2",
"shelljs": "^0.8.4",
"supertest": "^4.0.2",
"supertest": "^5.0.0",
"ts-node": "^9.0.0",
"typescript": "^4.0.2"
"typescript": "^4.0.3"
},
"author": "Carmine DiMascio <cdimascio@gmail.com> (https://github.com/cdimascio)"
}
22 changes: 0 additions & 22 deletions app/templates/server/common/openapi.ts

This file was deleted.

31 changes: 26 additions & 5 deletions app/templates/server/common/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ import os from 'os';
import cookieParser from 'cookie-parser';
import l from './logger';
<% if (specification === 'openapi_3') { %>
import installValidator from './openapi';
import errorHandler from '../api/middlewares/error.handler'
import * as OpenApiValidator from 'express-openapi-validator';
<% } else { %>
import installValidator from './swagger';
<% } %>

const app = express();
const exit = process.exit;

export default class ExpressServer {
private routes: (app: Application) => void;
Expand All @@ -24,11 +24,30 @@ export default class ExpressServer {
app.use(bodyParser.text({ limit: process.env.REQUEST_LIMIT || '100kb'}));
app.use(cookieParser(process.env.SESSION_SECRET));
app.use(express.static(`${root}/public`));
<% if (specification === 'openapi_3') { %>
const apiSpec = path.join(__dirname, 'api.yml');
const validateResponses = !!(
process.env.OPENAPI_ENABLE_RESPONSE_VALIDATION &&
process.env.OPENAPI_ENABLE_RESPONSE_VALIDATION.toLowerCase() === 'true'
);
app.use(process.env.OPENAPI_SPEC || '/spec', express.static(apiSpec));
app.use(OpenApiValidator.middleware({
apiSpec,
validateResponses,
ignorePaths: /.*\/spec(\/|$)/,
}));
<% } %>
}

router(routes: (app: Application) => void): ExpressServer {
<% if (specification === 'openapi_3') { %>
routes(app);
app.use(errorHandler);
return this
<% } else { %>
this.routes = routes;
return this;
<% } %>
}

listen(port: number): Application {
Expand All @@ -38,14 +57,16 @@ export default class ExpressServer {
process.env.NODE_ENV || 'development'
} @: ${os.hostname()} on port: ${p}}`
);

<% if (specification === 'openapi_3') { %>
http.createServer(app).listen(port, welcome(port));
<% } else { %>
installValidator(app, this.routes).then(() => {
http.createServer(app).listen(port, welcome(port));
}).catch(e => {
l.error(e);
exit(1)
process.exit(1)
});

<% } %>
return app;
}
}

0 comments on commit db13b83

Please sign in to comment.