File tree Expand file tree Collapse file tree 7 files changed +73
-1
lines changed
Expand file tree Collapse file tree 7 files changed +73
-1
lines changed Original file line number Diff line number Diff line change @@ -23,3 +23,12 @@ DB_PASSWORD=""
2323DB_DATABASE = " my_database"
2424DB_SYNCHRONIZE = true
2525DB_LOGGING = true
26+
27+ #
28+ # Swagger
29+ #
30+ SWAGGER_ENABLED = true
31+ SWAGGER_ROUTE = " /swagger"
32+ SWAGGER_FILE = " api/swagger.json"
33+ SWAGGER_USERNAME = " admin"
34+ SWAGGER_PASSWORD = " 1234"
Original file line number Diff line number Diff line change 6060 "cors" : " ^2.8.4" ,
6161 "dotenv" : " ^4.0.0" ,
6262 "express" : " ^4.16.2" ,
63+ "express-basic-auth" : " ^1.1.3" ,
6364 "figlet" : " ^1.2.0" ,
6465 "helmet" : " ^3.9.0" ,
6566 "lodash" : " ^4.17.4" ,
7172 "reflect-metadata" : " ^0.1.10" ,
7273 "routing-controllers" : " ^0.7.6" ,
7374 "serve-favicon" : " ^2.4.5" ,
75+ "swagger-ui-express" : " ^2.0.10" ,
7476 "trash-cli" : " ^1.4.0" ,
7577 "ts-node" : " ^3.3.0" ,
7678 "tslint" : " ^5.8.0" ,
Original file line number Diff line number Diff line change @@ -20,13 +20,15 @@ import { bootstrapMicroframework } from 'microframework';
2020import { expressLoader } from './modules/expressLoader' ;
2121import { winstonLoader } from './modules/winstonLoader' ;
2222import { typeormLoader } from './modules/typeormLoader' ;
23+ import { swaggerLoader } from './modules/swaggerLoader' ;
2324
2425
2526bootstrapMicroframework ( {
2627 loaders : [
2728 winstonLoader ,
2829 expressLoader ,
29- typeormLoader
30+ typeormLoader ,
31+ swaggerLoader
3032 // here we can setup other databases, any other lib we want to setup in our application
3133 ]
3234} )
Original file line number Diff line number Diff line change 1+ const pkg = require ( '../../package.json' ) ;
2+
13/**
24 * Environment variables
35 */
46export const env = {
57 node : process . env . NODE_ENV || 'development' ,
68 app : {
79 name : getOsEnv ( 'APP_NAME' ) ,
10+ version : pkg . version ,
11+ description : pkg . description ,
812 host : getOsEnv ( 'APP_HOST' ) ,
913 port : normalizePort ( process . env . PORT || '3000' ) ,
1014 routePrefix : getOsEnv ( 'APP_ROUTE_PREFIX' )
@@ -23,6 +27,13 @@ export const env = {
2327 database : getOsEnv ( 'DB_DATABASE' ) ,
2428 synchronize : toBool ( getOsEnv ( 'DB_SYNCHRONIZE' ) ) ,
2529 logging : toBool ( getOsEnv ( 'DB_LOGGING' ) )
30+ } ,
31+ swagger : {
32+ enabled : toBool ( getOsEnv ( 'SWAGGER_ENABLED' ) ) ,
33+ route : getOsEnv ( 'SWAGGER_ROUTE' ) ,
34+ file : getOsEnv ( 'SWAGGER_FILE' ) ,
35+ username : getOsEnv ( 'SWAGGER_USERNAME' ) ,
36+ password : getOsEnv ( 'SWAGGER_PASSWORD' )
2637 }
2738} ;
2839
Original file line number Diff line number Diff line change 1+ import * as path from 'path' ;
2+ import * as swaggerUi from 'swagger-ui-express' ;
3+ import * as basicAuth from 'express-basic-auth' ;
4+ import { MicroframeworkSettings , MicroframeworkLoader } from 'microframework' ;
5+ import { env } from '../core/env' ;
6+
7+
8+ export const swaggerLoader : MicroframeworkLoader = ( settings : MicroframeworkSettings | undefined ) => {
9+ if ( settings && env . swagger . enabled ) {
10+ const expressApp = settings . getData ( 'express_app' ) ;
11+ const swaggerFile = require ( path . join ( __dirname , '..' , env . swagger . file ) ) ;
12+
13+ // Add npm infos to the swagger doc
14+ swaggerFile . info = {
15+ title : env . app . name ,
16+ description : env . app . description ,
17+ version : env . app . version
18+ } ;
19+
20+ expressApp . use (
21+ env . swagger . route ,
22+ basicAuth ( {
23+ users : {
24+ [ `${ env . swagger . username } ` ] : env . swagger . password
25+ } ,
26+ challenge : true
27+ } ) ,
28+ swaggerUi . serve ,
29+ swaggerUi . setup ( swaggerFile )
30+ ) ;
31+
32+ }
33+ } ;
Original file line number Diff line number Diff line change 66 160
77 ],
88 "no-unnecessary-initializer" : false ,
9+ "no-var-requires" : false ,
910 "no-consecutive-blank-lines" : false ,
1011 "quotemark" : [true , " single" , " avoid-escape" ],
1112 "interface-name" : false ,
Original file line number Diff line number Diff line change @@ -515,6 +515,10 @@ balanced-match@^1.0.0:
515515 version "1.0.0"
516516 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
517517
518+ basic-auth@^1.1.0 :
519+ version "1.1.0"
520+ resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884"
521+
518522basic-auth@~2.0.0 :
519523 version "2.0.0"
520524 resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.0.tgz#015db3f353e02e56377755f962742e8981e7bbba"
@@ -1343,6 +1347,12 @@ expect@^21.2.1:
13431347 jest-message-util "^21.2.1"
13441348 jest-regex-util "^21.2.0"
13451349
1350+ express-basic-auth@^1.1.3 :
1351+ version "1.1.3"
1352+ resolved "https://registry.yarnpkg.com/express-basic-auth/-/express-basic-auth-1.1.3.tgz#18924c02fef18d9efe58e22847ee31e240749f33"
1353+ dependencies :
1354+ basic-auth "^1.1.0"
1355+
13461356express@^4.16.2 :
13471357 version "4.16.2"
13481358 resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
@@ -4086,6 +4096,10 @@ supports-color@^4.0.0:
40864096 dependencies :
40874097 has-flag "^2.0.0"
40884098
4099+ swagger-ui-express@^2.0.10 :
4100+ version "2.0.10"
4101+ resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-2.0.10.tgz#a7beb3e44ad0abd3c9915afc6b41cb87a91aa3e7"
4102+
40894103symbol-tree@^3.2.1 :
40904104 version "3.2.2"
40914105 resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
You can’t perform that action at this time.
0 commit comments