Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: scottie1984/swagger-ui-express
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 44d5e10e20cd379d4ebfd377ca79957567a90391
Choose a base ref
...
head repository: scottie1984/swagger-ui-express
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 512970ac1c22ca3d0e44556238063684c572ba2e
Choose a head ref
  • 13 commits
  • 22 files changed
  • 6 contributors

Commits on Jan 6, 2021

  1. Update README - two swagger documents (typo)

    Fixes example code to make sense.
    tingstad authored Jan 6, 2021
    Copy the full SHA
    1699685 View commit details

Commits on Jan 9, 2021

  1. Merge pull request #235 from tingstad/patch-1

    Update README - two swagger documents (typo)
    scottie1984 authored Jan 9, 2021
    Copy the full SHA
    feb0664 View commit details

Commits on Jan 15, 2021

  1. feat: Add coverage section to README

     Added dependencies
     - nyc
     - istanbul-badges-readme
    
     Added commands
     - coverage:report
     - coverage:badge
    H3nSte1n committed Jan 15, 2021
    Copy the full SHA
    b46e892 View commit details
  2. Copy the full SHA
    da7b5ff View commit details
  3. Merge pull request #236 from H3nSte1n/feature/Add_converage_section_t…

    …o_readme
    
    Add test converage section to readme
    scottie1984 authored Jan 15, 2021
    Copy the full SHA
    5824af0 View commit details

Commits on Sep 30, 2021

  1. Copy the full SHA
    de8e7eb View commit details

Commits on Nov 3, 2021

  1. Copy the full SHA
    e09c35f View commit details

Commits on Nov 30, 2021

  1. Merge pull request #269 from artyhedgehog/patch-1

    readme: fix broken link to swagger-jsdoc
    scottie1984 authored Nov 30, 2021
    Copy the full SHA
    9011cdf View commit details
  2. Merge pull request #270 from jdgarcia/security-update

    Update swagger-ui-dist dependency to fix security vulnerabilities
    scottie1984 authored Nov 30, 2021
    Copy the full SHA
    d07439b View commit details
  3. Update README.md

    scottie1984 authored Nov 30, 2021
    Copy the full SHA
    fe789d8 View commit details
  4. Update README.md

    scottie1984 authored Nov 30, 2021
    Copy the full SHA
    ff10df4 View commit details

Commits on Dec 1, 2021

  1. Copy the full SHA
    aa3d56a View commit details

Commits on Dec 16, 2021

  1. bump version of swagger-ui-dist due to security update

    Stephen Scott committed Dec 16, 2021
    Copy the full SHA
    512970a View commit details
1 change: 1 addition & 0 deletions .nyc_output/9bba3810-e97f-46c5-ae00-ccdb2807135a.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"/Users/henry.steinhauer/Projekte/private_Projekte/swagger-ui-express/index.js":{"path":"/Users/henry.steinhauer/Projekte/private_Projekte/swagger-ui-express/index.js","statementMap":{"0":{"start":{"line":3,"column":14},"end":{"line":3,"column":32}},"1":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"2":{"start":{"line":5,"column":18},"end":{"line":6,"column":81}},"3":{"start":{"line":7,"column":18},"end":{"line":7,"column":20}},"4":{"start":{"line":9,"column":20},"end":{"line":88,"column":1}},"5":{"start":{"line":90,"column":18},"end":{"line":134,"column":1}},"6":{"start":{"line":136,"column":19},"end":{"line":178,"column":1}},"7":{"start":{"line":141,"column":2},"end":{"line":154,"column":3}},"8":{"start":{"line":142,"column":4},"end":{"line":142,"column":33}},"9":{"start":{"line":143,"column":4},"end":{"line":143,"column":30}},"10":{"start":{"line":144,"column":4},"end":{"line":144,"column":28}},"11":{"start":{"line":145,"column":4},"end":{"line":145,"column":38}},"12":{"start":{"line":146,"column":4},"end":{"line":146,"column":32}},"13":{"start":{"line":147,"column":4},"end":{"line":147,"column":34}},"14":{"start":{"line":148,"column":4},"end":{"line":148,"column":47}},"15":{"start":{"line":149,"column":4},"end":{"line":149,"column":42}},"16":{"start":{"line":150,"column":4},"end":{"line":150,"column":36}},"17":{"start":{"line":153,"column":4},"end":{"line":153,"column":21}},"18":{"start":{"line":155,"column":2},"end":{"line":155,"column":25}},"19":{"start":{"line":156,"column":23},"end":{"line":156,"column":102}},"20":{"start":{"line":157,"column":2},"end":{"line":157,"column":64}},"21":{"start":{"line":158,"column":2},"end":{"line":158,"column":40}},"22":{"start":{"line":159,"column":2},"end":{"line":159,"column":51}},"23":{"start":{"line":160,"column":2},"end":{"line":160,"column":50}},"24":{"start":{"line":161,"column":2},"end":{"line":161,"column":44}},"25":{"start":{"line":163,"column":22},"end":{"line":163,"column":102}},"26":{"start":{"line":164,"column":26},"end":{"line":164,"column":89}},"27":{"start":{"line":165,"column":24},"end":{"line":165,"column":87}},"28":{"start":{"line":166,"column":25},"end":{"line":166,"column":121}},"29":{"start":{"line":167,"column":29},"end":{"line":167,"column":145}},"30":{"start":{"line":169,"column":20},"end":{"line":174,"column":3}},"31":{"start":{"line":176,"column":2},"end":{"line":176,"column":95}},"32":{"start":{"line":177,"column":2},"end":{"line":177,"column":69}},"33":{"start":{"line":180,"column":12},"end":{"line":190,"column":1}},"34":{"start":{"line":181,"column":13},"end":{"line":181,"column":135}},"35":{"start":{"line":182,"column":2},"end":{"line":189,"column":3}},"36":{"start":{"line":183,"column":4},"end":{"line":188,"column":5}},"37":{"start":{"line":184,"column":20},"end":{"line":184,"column":146}},"38":{"start":{"line":185,"column":6},"end":{"line":185,"column":23}},"39":{"start":{"line":187,"column":6},"end":{"line":187,"column":20}},"40":{"start":{"line":193,"column":2},"end":{"line":200,"column":3}},"41":{"start":{"line":194,"column":4},"end":{"line":194,"column":23}},"42":{"start":{"line":195,"column":9},"end":{"line":200,"column":3}},"43":{"start":{"line":196,"column":4},"end":{"line":196,"column":53}},"44":{"start":{"line":197,"column":4},"end":{"line":197,"column":25}},"45":{"start":{"line":199,"column":4},"end":{"line":199,"column":10}},"46":{"start":{"line":203,"column":26},"end":{"line":215,"column":1}},"47":{"start":{"line":204,"column":24},"end":{"line":204,"column":95}},"48":{"start":{"line":205,"column":2},"end":{"line":214,"column":3}},"49":{"start":{"line":206,"column":4},"end":{"line":213,"column":5}},"50":{"start":{"line":207,"column":6},"end":{"line":207,"column":25}},"51":{"start":{"line":208,"column":11},"end":{"line":213,"column":5}},"52":{"start":{"line":209,"column":6},"end":{"line":209,"column":55}},"53":{"start":{"line":210,"column":6},"end":{"line":210,"column":31}},"54":{"start":{"line":212,"column":6},"end":{"line":212,"column":12}},"55":{"start":{"line":217,"column":29},"end":{"line":221,"column":1}},"56":{"start":{"line":218,"column":13},"end":{"line":218,"column":26}},"57":{"start":{"line":219,"column":2},"end":{"line":219,"column":20}},"58":{"start":{"line":220,"column":2},"end":{"line":220,"column":60}},"59":{"start":{"line":223,"column":17},"end":{"line":233,"column":1}},"60":{"start":{"line":224,"column":2},"end":{"line":224,"column":19}},"61":{"start":{"line":225,"column":20},"end":{"line":230,"column":3}},"62":{"start":{"line":231,"column":28},"end":{"line":231,"column":72}},"63":{"start":{"line":232,"column":2},"end":{"line":232,"column":56}},"64":{"start":{"line":235,"column":12},"end":{"line":235,"column":53}},"65":{"start":{"line":236,"column":23},"end":{"line":236,"column":82}},"66":{"start":{"line":236,"column":34},"end":{"line":236,"column":82}},"67":{"start":{"line":238,"column":16},"end":{"line":252,"column":1}},"68":{"start":{"line":239,"column":20},"end":{"line":239,"column":49}},"69":{"start":{"line":240,"column":12},"end":{"line":240,"column":14}},"70":{"start":{"line":241,"column":13},"end":{"line":247,"column":7}},"71":{"start":{"line":242,"column":4},"end":{"line":245,"column":5}},"72":{"start":{"line":243,"column":6},"end":{"line":243,"column":21}},"73":{"start":{"line":244,"column":6},"end":{"line":244,"column":24}},"74":{"start":{"line":246,"column":4},"end":{"line":246,"column":16}},"75":{"start":{"line":248,"column":2},"end":{"line":250,"column":4}},"76":{"start":{"line":249,"column":4},"end":{"line":249,"column":22}},"77":{"start":{"line":251,"column":2},"end":{"line":251,"column":38}},"78":{"start":{"line":254,"column":0},"end":{"line":260,"column":1}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":136,"column":19},"end":{"line":136,"column":20}},"loc":{"start":{"line":136,"column":141},"end":{"line":178,"column":1}},"line":136},"1":{"name":"(anonymous_1)","decl":{"start":{"line":180,"column":12},"end":{"line":180,"column":13}},"loc":{"start":{"line":180,"column":104},"end":{"line":190,"column":1}},"line":180},"2":{"name":"(anonymous_2)","decl":{"start":{"line":182,"column":9},"end":{"line":182,"column":10}},"loc":{"start":{"line":182,"column":29},"end":{"line":189,"column":3}},"line":182},"3":{"name":"swaggerInitFn","decl":{"start":{"line":192,"column":9},"end":{"line":192,"column":22}},"loc":{"start":{"line":192,"column":39},"end":{"line":201,"column":1}},"line":192},"4":{"name":"(anonymous_4)","decl":{"start":{"line":203,"column":26},"end":{"line":203,"column":27}},"loc":{"start":{"line":203,"column":54},"end":{"line":215,"column":1}},"line":203},"5":{"name":"(anonymous_5)","decl":{"start":{"line":205,"column":9},"end":{"line":205,"column":10}},"loc":{"start":{"line":205,"column":35},"end":{"line":214,"column":3}},"line":205},"6":{"name":"(anonymous_6)","decl":{"start":{"line":217,"column":29},"end":{"line":217,"column":30}},"loc":{"start":{"line":217,"column":40},"end":{"line":221,"column":1}},"line":217},"7":{"name":"(anonymous_7)","decl":{"start":{"line":223,"column":17},"end":{"line":223,"column":18}},"loc":{"start":{"line":223,"column":45},"end":{"line":233,"column":1}},"line":223},"8":{"name":"(anonymous_8)","decl":{"start":{"line":236,"column":23},"end":{"line":236,"column":24}},"loc":{"start":{"line":236,"column":34},"end":{"line":236,"column":82}},"line":236},"9":{"name":"(anonymous_9)","decl":{"start":{"line":238,"column":16},"end":{"line":238,"column":17}},"loc":{"start":{"line":238,"column":37},"end":{"line":252,"column":1}},"line":238},"10":{"name":"(anonymous_10)","decl":{"start":{"line":241,"column":33},"end":{"line":241,"column":34}},"loc":{"start":{"line":241,"column":55},"end":{"line":247,"column":3}},"line":241},"11":{"name":"(anonymous_11)","decl":{"start":{"line":248,"column":64},"end":{"line":248,"column":65}},"loc":{"start":{"line":248,"column":77},"end":{"line":250,"column":3}},"line":248}},"branchMap":{"0":{"loc":{"start":{"line":141,"column":2},"end":{"line":154,"column":3}},"type":"if","locations":[{"start":{"line":141,"column":2},"end":{"line":154,"column":3}},{"start":{"line":141,"column":2},"end":{"line":154,"column":3}}],"line":141},"1":{"loc":{"start":{"line":141,"column":6},"end":{"line":141,"column":38}},"type":"binary-expr","locations":[{"start":{"line":141,"column":6},"end":{"line":141,"column":10}},{"start":{"line":141,"column":14},"end":{"line":141,"column":38}}],"line":141},"2":{"loc":{"start":{"line":148,"column":17},"end":{"line":148,"column":47}},"type":"binary-expr","locations":[{"start":{"line":148,"column":17},"end":{"line":148,"column":30}},{"start":{"line":148,"column":34},"end":{"line":148,"column":47}}],"line":148},"3":{"loc":{"start":{"line":155,"column":12},"end":{"line":155,"column":25}},"type":"binary-expr","locations":[{"start":{"line":155,"column":12},"end":{"line":155,"column":19}},{"start":{"line":155,"column":23},"end":{"line":155,"column":25}}],"line":155},"4":{"loc":{"start":{"line":156,"column":23},"end":{"line":156,"column":102}},"type":"cond-expr","locations":[{"start":{"line":156,"column":36},"end":{"line":156,"column":38}},{"start":{"line":156,"column":41},"end":{"line":156,"column":102}}],"line":156},"5":{"loc":{"start":{"line":157,"column":14},"end":{"line":157,"column":64}},"type":"binary-expr","locations":[{"start":{"line":157,"column":14},"end":{"line":157,"column":46}},{"start":{"line":157,"column":50},"end":{"line":157,"column":64}}],"line":157},"6":{"loc":{"start":{"line":158,"column":18},"end":{"line":158,"column":40}},"type":"binary-expr","locations":[{"start":{"line":158,"column":18},"end":{"line":158,"column":31}},{"start":{"line":158,"column":35},"end":{"line":158,"column":40}}],"line":158},"7":{"loc":{"start":{"line":159,"column":20},"end":{"line":159,"column":51}},"type":"binary-expr","locations":[{"start":{"line":159,"column":20},"end":{"line":159,"column":35}},{"start":{"line":159,"column":39},"end":{"line":159,"column":51}}],"line":159},"8":{"loc":{"start":{"line":160,"column":19},"end":{"line":160,"column":50}},"type":"binary-expr","locations":[{"start":{"line":160,"column":19},"end":{"line":160,"column":33}},{"start":{"line":160,"column":37},"end":{"line":160,"column":50}}],"line":160},"9":{"loc":{"start":{"line":161,"column":17},"end":{"line":161,"column":44}},"type":"binary-expr","locations":[{"start":{"line":161,"column":17},"end":{"line":161,"column":29}},{"start":{"line":161,"column":33},"end":{"line":161,"column":44}}],"line":161},"10":{"loc":{"start":{"line":163,"column":22},"end":{"line":163,"column":102}},"type":"cond-expr","locations":[{"start":{"line":163,"column":38},"end":{"line":163,"column":88}},{"start":{"line":163,"column":91},"end":{"line":163,"column":102}}],"line":163},"11":{"loc":{"start":{"line":166,"column":67},"end":{"line":166,"column":120}},"type":"cond-expr","locations":[{"start":{"line":166,"column":78},"end":{"line":166,"column":115}},{"start":{"line":166,"column":118},"end":{"line":166,"column":120}}],"line":166},"12":{"loc":{"start":{"line":167,"column":76},"end":{"line":167,"column":144}},"type":"cond-expr","locations":[{"start":{"line":167,"column":91},"end":{"line":167,"column":139}},{"start":{"line":167,"column":142},"end":{"line":167,"column":144}}],"line":167},"13":{"loc":{"start":{"line":170,"column":16},"end":{"line":170,"column":39}},"type":"binary-expr","locations":[{"start":{"line":170,"column":16},"end":{"line":170,"column":26}},{"start":{"line":170,"column":30},"end":{"line":170,"column":39}}],"line":170},"14":{"loc":{"start":{"line":172,"column":16},"end":{"line":172,"column":39}},"type":"binary-expr","locations":[{"start":{"line":172,"column":16},"end":{"line":172,"column":26}},{"start":{"line":172,"column":30},"end":{"line":172,"column":39}}],"line":172},"15":{"loc":{"start":{"line":173,"column":17},"end":{"line":173,"column":41}},"type":"binary-expr","locations":[{"start":{"line":173,"column":17},"end":{"line":173,"column":28}},{"start":{"line":173,"column":32},"end":{"line":173,"column":41}}],"line":173},"16":{"loc":{"start":{"line":183,"column":4},"end":{"line":188,"column":5}},"type":"if","locations":[{"start":{"line":183,"column":4},"end":{"line":188,"column":5}},{"start":{"line":183,"column":4},"end":{"line":188,"column":5}}],"line":183},"17":{"loc":{"start":{"line":193,"column":2},"end":{"line":200,"column":3}},"type":"if","locations":[{"start":{"line":193,"column":2},"end":{"line":200,"column":3}},{"start":{"line":193,"column":2},"end":{"line":200,"column":3}}],"line":193},"18":{"loc":{"start":{"line":195,"column":9},"end":{"line":200,"column":3}},"type":"if","locations":[{"start":{"line":195,"column":9},"end":{"line":200,"column":3}},{"start":{"line":195,"column":9},"end":{"line":200,"column":3}}],"line":195},"19":{"loc":{"start":{"line":206,"column":4},"end":{"line":213,"column":5}},"type":"if","locations":[{"start":{"line":206,"column":4},"end":{"line":213,"column":5}},{"start":{"line":206,"column":4},"end":{"line":213,"column":5}}],"line":206},"20":{"loc":{"start":{"line":208,"column":11},"end":{"line":213,"column":5}},"type":"if","locations":[{"start":{"line":208,"column":11},"end":{"line":213,"column":5}},{"start":{"line":208,"column":11},"end":{"line":213,"column":5}}],"line":208},"21":{"loc":{"start":{"line":218,"column":13},"end":{"line":218,"column":26}},"type":"binary-expr","locations":[{"start":{"line":218,"column":13},"end":{"line":218,"column":20}},{"start":{"line":218,"column":24},"end":{"line":218,"column":26}}],"line":218},"22":{"loc":{"start":{"line":224,"column":9},"end":{"line":224,"column":19}},"type":"binary-expr","locations":[{"start":{"line":224,"column":9},"end":{"line":224,"column":13}},{"start":{"line":224,"column":17},"end":{"line":224,"column":19}}],"line":224},"23":{"loc":{"start":{"line":226,"column":16},"end":{"line":226,"column":39}},"type":"binary-expr","locations":[{"start":{"line":226,"column":16},"end":{"line":226,"column":26}},{"start":{"line":226,"column":30},"end":{"line":226,"column":39}}],"line":226},"24":{"loc":{"start":{"line":227,"column":19},"end":{"line":227,"column":44}},"type":"binary-expr","locations":[{"start":{"line":227,"column":19},"end":{"line":227,"column":38}},{"start":{"line":227,"column":42},"end":{"line":227,"column":44}}],"line":227},"25":{"loc":{"start":{"line":228,"column":16},"end":{"line":228,"column":37}},"type":"binary-expr","locations":[{"start":{"line":228,"column":16},"end":{"line":228,"column":31}},{"start":{"line":228,"column":35},"end":{"line":228,"column":37}}],"line":228},"26":{"loc":{"start":{"line":229,"column":17},"end":{"line":229,"column":46}},"type":"binary-expr","locations":[{"start":{"line":229,"column":17},"end":{"line":229,"column":33}},{"start":{"line":229,"column":37},"end":{"line":229,"column":46}}],"line":229},"27":{"loc":{"start":{"line":242,"column":4},"end":{"line":245,"column":5}},"type":"if","locations":[{"start":{"line":242,"column":4},"end":{"line":245,"column":5}},{"start":{"line":242,"column":4},"end":{"line":245,"column":5}}],"line":242}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":9,"8":4,"9":4,"10":4,"11":4,"12":4,"13":4,"14":4,"15":4,"16":4,"17":5,"18":9,"19":9,"20":9,"21":9,"22":9,"23":9,"24":9,"25":9,"26":9,"27":9,"28":9,"29":9,"30":9,"31":9,"32":9,"33":1,"34":8,"35":8,"36":4,"37":0,"38":0,"39":4,"40":21,"41":1,"42":20,"43":4,"44":4,"45":16,"46":1,"47":1,"48":1,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":1,"56":3,"57":3,"58":3,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":10,"69":10,"70":10,"71":417,"72":10,"73":10,"74":407,"75":10,"76":10,"77":10,"78":1},"f":{"0":9,"1":8,"2":4,"3":21,"4":1,"5":0,"6":3,"7":1,"8":1,"9":10,"10":417,"11":10},"b":{"0":[4,5],"1":[9,4],"2":[4,4],"3":[9,0],"4":[0,9],"5":[9,0],"6":[9,9],"7":[9,9],"8":[9,1],"9":[9,1],"10":[0,9],"11":[2,7],"12":[2,7],"13":[9,3],"14":[9,6],"15":[9,9],"16":[0,4],"17":[1,20],"18":[4,16],"19":[0,0],"20":[0,0],"21":[3,2],"22":[1,0],"23":[1,0],"24":[1,0],"25":[1,1],"26":[1,1],"27":[10,407]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"67e6638da4823b51b7438f1b87d9a9ea9238d589","contentHash":"d4cfa395d640e03c96d286cbd8892146f2dbc54e731eb4387681f10b9c169fd6"}}
1 change: 1 addition & 0 deletions .nyc_output/bd08283b-0c2d-4ee4-afb3-a3338eed383b.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"parent":"bd08283b-0c2d-4ee4-afb3-a3338eed383b","pid":74606,"argv":["/Users/henry.steinhauer/.asdf/installs/nodejs/10.1.0/bin/node","/Users/henry.steinhauer/Projekte/private_Projekte/swagger-ui-express/node_modules/mocha/bin/_mocha","test/test.spec.js","test/testapp"],"execArgv":[],"cwd":"/Users/henry.steinhauer/Projekte/private_Projekte/swagger-ui-express","time":1610703806034,"ppid":74604,"coverageFilename":"/Users/henry.steinhauer/Projekte/private_Projekte/swagger-ui-express/.nyc_output/9bba3810-e97f-46c5-ae00-ccdb2807135a.json","externalId":"","uuid":"9bba3810-e97f-46c5-ae00-ccdb2807135a","files":["/Users/henry.steinhauer/Projekte/private_Projekte/swagger-ui-express/index.js"]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"parent":null,"pid":74604,"argv":["/Users/henry.steinhauer/.asdf/installs/nodejs/10.1.0/bin/node","/Users/henry.steinhauer/Projekte/private_Projekte/swagger-ui-express/node_modules/.bin/mocha","test/test.spec.js","test/testapp"],"execArgv":[],"cwd":"/Users/henry.steinhauer/Projekte/private_Projekte/swagger-ui-express","time":1610703804065,"ppid":74573,"coverageFilename":"/Users/henry.steinhauer/Projekte/private_Projekte/swagger-ui-express/.nyc_output/bd08283b-0c2d-4ee4-afb3-a3338eed383b.json","externalId":"","uuid":"bd08283b-0c2d-4ee4-afb3-a3338eed383b","files":[]}
1 change: 1 addition & 0 deletions .nyc_output/processinfo/index.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"processes":{"9bba3810-e97f-46c5-ae00-ccdb2807135a":{"parent":"bd08283b-0c2d-4ee4-afb3-a3338eed383b","children":[]},"bd08283b-0c2d-4ee4-afb3-a3338eed383b":{"parent":null,"children":["9bba3810-e97f-46c5-ae00-ccdb2807135a"]}},"files":{"/Users/henry.steinhauer/Projekte/private_Projekte/swagger-ui-express/index.js":["9bba3810-e97f-46c5-ae00-ccdb2807135a"]},"externalIds":{}}
7 changes: 7 additions & 0 deletions .nycrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"reporter": [
"lcov",
"json-summary"
],
"all": true
}
27 changes: 25 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
# Swagger UI Express

| Statements | Branches | Functions | Lines |
| --------------------------- | ----------------------- | ------------------------- | -------------------- |
| ![Statements](https://img.shields.io/badge/Coverage-89.87%25-yellow.svg) | ![Branches](https://img.shields.io/badge/Coverage-78.57%25-red.svg) | ![Functions](https://img.shields.io/badge/Coverage-91.67%25-brightgreen.svg) | ![Lines](https://img.shields.io/badge/Coverage-89.74%25-yellow.svg) |

This module allows you to serve auto-generated [swagger-ui](https://swagger.io/tools/swagger-ui/) generated API docs from express, based on a `swagger.json` file. The result is living documentation for your API hosted from your API server via a route.

Swagger version is pulled from npm module swagger-ui-dist. Please use a lock file or specify the version of swagger-ui-dist you want to ensure it is consistent across environments.

You may be also interested in:

* [swagger-jsdoc](https://github.com/Surnet/swagger-jsdoc/blob/master/docs/GETTING-STARTED.md): Allows you to markup routes
* [swagger-jsdoc](https://github.com/Surnet/swagger-jsdoc): Allows you to markup routes
with jsdoc comments. It then produces a full swagger yml config dynamically, which you can pass to this module to produce documentation. See below under the usage section for more info.
* [swagger tools](https://github.com/swagger-api): Various tools, including swagger editor, swagger code gen etc.

@@ -235,7 +239,7 @@ const express = require('express');
const app = express();
const swaggerUi = require('swagger-ui-express');
const swaggerDocumentOne = require('./swagger-one.json');
const swaggerDocumentTwo = require('./swagger-one.json');
const swaggerDocumentTwo = require('./swagger-two.json');

var options = {}

@@ -244,6 +248,25 @@ app.use('/api-docs-one', swaggerUi.serveFiles(swaggerDocumentOne, options), swag
app.use('/api-docs-two', swaggerUi.serveFiles(swaggerDocumentTwo, options), swaggerUi.setup(swaggerDocumentTwo));
```

### Link to Swagger document

To render a link to the swagger document for downloading within the swagger ui - then serve the swagger doc as an endpoint and use the url option to point to it:

```javascript
const express = require('express');
const app = express();
const swaggerUi = require('swagger-ui-express');
const swaggerDocument = require('./swagger.json');

var options = {
swaggerOptions: {
url: "/api-docs/swagger.json",
},
}
app.get("/api-docs/swagger.json", (req, res) => res.json(swaggerDocument));
app.use('/api-docs', swaggerUi.serveFiles(null, options), swaggerUi.setup(null, options));
```


## Requirements

3 changes: 3 additions & 0 deletions coverage/coverage-summary.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{"total": {"lines":{"total":78,"covered":70,"skipped":0,"pct":89.74},"statements":{"total":79,"covered":71,"skipped":0,"pct":89.87},"functions":{"total":12,"covered":11,"skipped":0,"pct":91.67},"branches":{"total":56,"covered":44,"skipped":0,"pct":78.57}}
,"/Users/henry.steinhauer/Projekte/private_Projekte/swagger-ui-express/index.js": {"lines":{"total":78,"covered":70,"skipped":0,"pct":89.74},"functions":{"total":12,"covered":11,"skipped":0,"pct":91.67},"statements":{"total":79,"covered":71,"skipped":0,"pct":89.87},"branches":{"total":56,"covered":44,"skipped":0,"pct":78.57}}
}
224 changes: 224 additions & 0 deletions coverage/lcov-report/base.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
body, html {
margin:0; padding: 0;
height: 100%;
}
body {
font-family: Helvetica Neue, Helvetica, Arial;
font-size: 14px;
color:#333;
}
.small { font-size: 12px; }
*, *:after, *:before {
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
h1 { font-size: 20px; margin: 0;}
h2 { font-size: 14px; }
pre {
font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
margin: 0;
padding: 0;
-moz-tab-size: 2;
-o-tab-size: 2;
tab-size: 2;
}
a { color:#0074D9; text-decoration:none; }
a:hover { text-decoration:underline; }
.strong { font-weight: bold; }
.space-top1 { padding: 10px 0 0 0; }
.pad2y { padding: 20px 0; }
.pad1y { padding: 10px 0; }
.pad2x { padding: 0 20px; }
.pad2 { padding: 20px; }
.pad1 { padding: 10px; }
.space-left2 { padding-left:55px; }
.space-right2 { padding-right:20px; }
.center { text-align:center; }
.clearfix { display:block; }
.clearfix:after {
content:'';
display:block;
height:0;
clear:both;
visibility:hidden;
}
.fl { float: left; }
@media only screen and (max-width:640px) {
.col3 { width:100%; max-width:100%; }
.hide-mobile { display:none!important; }
}

.quiet {
color: #7f7f7f;
color: rgba(0,0,0,0.5);
}
.quiet a { opacity: 0.7; }

.fraction {
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
font-size: 10px;
color: #555;
background: #E8E8E8;
padding: 4px 5px;
border-radius: 3px;
vertical-align: middle;
}

div.path a:link, div.path a:visited { color: #333; }
table.coverage {
border-collapse: collapse;
margin: 10px 0 0 0;
padding: 0;
}

table.coverage td {
margin: 0;
padding: 0;
vertical-align: top;
}
table.coverage td.line-count {
text-align: right;
padding: 0 5px 0 20px;
}
table.coverage td.line-coverage {
text-align: right;
padding-right: 10px;
min-width:20px;
}

table.coverage td span.cline-any {
display: inline-block;
padding: 0 5px;
width: 100%;
}
.missing-if-branch {
display: inline-block;
margin-right: 5px;
border-radius: 3px;
position: relative;
padding: 0 4px;
background: #333;
color: yellow;
}

.skip-if-branch {
display: none;
margin-right: 10px;
position: relative;
padding: 0 4px;
background: #ccc;
color: white;
}
.missing-if-branch .typ, .skip-if-branch .typ {
color: inherit !important;
}
.coverage-summary {
border-collapse: collapse;
width: 100%;
}
.coverage-summary tr { border-bottom: 1px solid #bbb; }
.keyline-all { border: 1px solid #ddd; }
.coverage-summary td, .coverage-summary th { padding: 10px; }
.coverage-summary tbody { border: 1px solid #bbb; }
.coverage-summary td { border-right: 1px solid #bbb; }
.coverage-summary td:last-child { border-right: none; }
.coverage-summary th {
text-align: left;
font-weight: normal;
white-space: nowrap;
}
.coverage-summary th.file { border-right: none !important; }
.coverage-summary th.pct { }
.coverage-summary th.pic,
.coverage-summary th.abs,
.coverage-summary td.pct,
.coverage-summary td.abs { text-align: right; }
.coverage-summary td.file { white-space: nowrap; }
.coverage-summary td.pic { min-width: 120px !important; }
.coverage-summary tfoot td { }

.coverage-summary .sorter {
height: 10px;
width: 7px;
display: inline-block;
margin-left: 0.5em;
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
}
.coverage-summary .sorted .sorter {
background-position: 0 -20px;
}
.coverage-summary .sorted-desc .sorter {
background-position: 0 -10px;
}
.status-line { height: 10px; }
/* yellow */
.cbranch-no { background: yellow !important; color: #111; }
/* dark red */
.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
.low .chart { border:1px solid #C21F39 }
.highlighted,
.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
background: #C21F39 !important;
}
/* medium red */
.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
/* light red */
.low, .cline-no { background:#FCE1E5 }
/* light green */
.high, .cline-yes { background:rgb(230,245,208) }
/* medium green */
.cstat-yes { background:rgb(161,215,106) }
/* dark green */
.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
.high .chart { border:1px solid rgb(77,146,33) }
/* dark yellow (gold) */
.status-line.medium, .medium .cover-fill { background: #f9cd0b; }
.medium .chart { border:1px solid #f9cd0b; }
/* light yellow */
.medium { background: #fff4c2; }

.cstat-skip { background: #ddd; color: #111; }
.fstat-skip { background: #ddd; color: #111 !important; }
.cbranch-skip { background: #ddd !important; color: #111; }

span.cline-neutral { background: #eaeaea; }

.coverage-summary td.empty {
opacity: .5;
padding-top: 4px;
padding-bottom: 4px;
line-height: 1;
color: #888;
}

.cover-fill, .cover-empty {
display:inline-block;
height: 12px;
}
.chart {
line-height: 0;
}
.cover-empty {
background: white;
}
.cover-full {
border-right: none !important;
}
pre.prettyprint {
border: none !important;
padding: 0 !important;
margin: 0 !important;
}
.com { color: #999 !important; }
.ignore-none { color: #999; font-weight: normal; }

.wrapper {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -48px;
}
.footer, .push {
height: 48px;
}
79 changes: 79 additions & 0 deletions coverage/lcov-report/block-navigation.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/* eslint-disable */
var jumpToCode = (function init() {
// Classes of code we would like to highlight in the file view
var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];

// Elements to highlight in the file listing view
var fileListingElements = ['td.pct.low'];

// We don't want to select elements that are direct descendants of another match
var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `

// Selecter that finds elements on the page to which we can jump
var selector =
fileListingElements.join(', ') +
', ' +
notSelector +
missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`

// The NodeList of matching elements
var missingCoverageElements = document.querySelectorAll(selector);

var currentIndex;

function toggleClass(index) {
missingCoverageElements
.item(currentIndex)
.classList.remove('highlighted');
missingCoverageElements.item(index).classList.add('highlighted');
}

function makeCurrent(index) {
toggleClass(index);
currentIndex = index;
missingCoverageElements.item(index).scrollIntoView({
behavior: 'smooth',
block: 'center',
inline: 'center'
});
}

function goToPrevious() {
var nextIndex = 0;
if (typeof currentIndex !== 'number' || currentIndex === 0) {
nextIndex = missingCoverageElements.length - 1;
} else if (missingCoverageElements.length > 1) {
nextIndex = currentIndex - 1;
}

makeCurrent(nextIndex);
}

function goToNext() {
var nextIndex = 0;

if (
typeof currentIndex === 'number' &&
currentIndex < missingCoverageElements.length - 1
) {
nextIndex = currentIndex + 1;
}

makeCurrent(nextIndex);
}

return function jump(event) {
switch (event.which) {
case 78: // n
case 74: // j
goToNext();
break;
case 66: // b
case 75: // k
case 80: // p
goToPrevious();
break;
}
};
})();
window.addEventListener('keydown', jumpToCode);
Binary file added coverage/lcov-report/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
111 changes: 111 additions & 0 deletions coverage/lcov-report/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@

<!doctype html>
<html lang="en">

<head>
<title>Code coverage report for All files</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="prettify.css" />
<link rel="stylesheet" href="base.css" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
</style>
</head>

<body>
<div class='wrapper'>
<div class='pad1'>
<h1>All files</h1>
<div class='clearfix'>

<div class='fl pad1y space-right2'>
<span class="strong">89.87% </span>
<span class="quiet">Statements</span>
<span class='fraction'>71/79</span>
</div>


<div class='fl pad1y space-right2'>
<span class="strong">78.57% </span>
<span class="quiet">Branches</span>
<span class='fraction'>44/56</span>
</div>


<div class='fl pad1y space-right2'>
<span class="strong">91.67% </span>
<span class="quiet">Functions</span>
<span class='fraction'>11/12</span>
</div>


<div class='fl pad1y space-right2'>
<span class="strong">89.74% </span>
<span class="quiet">Lines</span>
<span class='fraction'>70/78</span>
</div>


</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
<td data-value="89.87" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 89%"></div><div class="cover-empty" style="width: 11%"></div></div>
</td>
<td data-value="89.87" class="pct high">89.87%</td>
<td data-value="79" class="abs high">71/79</td>
<td data-value="78.57" class="pct medium">78.57%</td>
<td data-value="56" class="abs medium">44/56</td>
<td data-value="91.67" class="pct high">91.67%</td>
<td data-value="12" class="abs high">11/12</td>
<td data-value="89.74" class="pct high">89.74%</td>
<td data-value="78" class="abs high">70/78</td>
</tr>

</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Fri Jan 15 2021 10:43:37 GMT+0100 (CET)
</div>
</div>
<script src="prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="sorter.js"></script>
<script src="block-navigation.js"></script>
</body>
</html>

860 changes: 860 additions & 0 deletions coverage/lcov-report/index.js.html

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions coverage/lcov-report/prettify.css
2 changes: 2 additions & 0 deletions coverage/lcov-report/prettify.js

Large diffs are not rendered by default.

Binary file added coverage/lcov-report/sort-arrow-sprite.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
170 changes: 170 additions & 0 deletions coverage/lcov-report/sorter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
/* eslint-disable */
var addSorting = (function() {
'use strict';
var cols,
currentSort = {
index: 0,
desc: false
};

// returns the summary table element
function getTable() {
return document.querySelector('.coverage-summary');
}
// returns the thead element of the summary table
function getTableHeader() {
return getTable().querySelector('thead tr');
}
// returns the tbody element of the summary table
function getTableBody() {
return getTable().querySelector('tbody');
}
// returns the th element for nth column
function getNthColumn(n) {
return getTableHeader().querySelectorAll('th')[n];
}

// loads all columns
function loadColumns() {
var colNodes = getTableHeader().querySelectorAll('th'),
colNode,
cols = [],
col,
i;

for (i = 0; i < colNodes.length; i += 1) {
colNode = colNodes[i];
col = {
key: colNode.getAttribute('data-col'),
sortable: !colNode.getAttribute('data-nosort'),
type: colNode.getAttribute('data-type') || 'string'
};
cols.push(col);
if (col.sortable) {
col.defaultDescSort = col.type === 'number';
colNode.innerHTML =
colNode.innerHTML + '<span class="sorter"></span>';
}
}
return cols;
}
// attaches a data attribute to every tr element with an object
// of data values keyed by column name
function loadRowData(tableRow) {
var tableCols = tableRow.querySelectorAll('td'),
colNode,
col,
data = {},
i,
val;
for (i = 0; i < tableCols.length; i += 1) {
colNode = tableCols[i];
col = cols[i];
val = colNode.getAttribute('data-value');
if (col.type === 'number') {
val = Number(val);
}
data[col.key] = val;
}
return data;
}
// loads all row data
function loadData() {
var rows = getTableBody().querySelectorAll('tr'),
i;

for (i = 0; i < rows.length; i += 1) {
rows[i].data = loadRowData(rows[i]);
}
}
// sorts the table using the data for the ith column
function sortByIndex(index, desc) {
var key = cols[index].key,
sorter = function(a, b) {
a = a.data[key];
b = b.data[key];
return a < b ? -1 : a > b ? 1 : 0;
},
finalSorter = sorter,
tableBody = document.querySelector('.coverage-summary tbody'),
rowNodes = tableBody.querySelectorAll('tr'),
rows = [],
i;

if (desc) {
finalSorter = function(a, b) {
return -1 * sorter(a, b);
};
}

for (i = 0; i < rowNodes.length; i += 1) {
rows.push(rowNodes[i]);
tableBody.removeChild(rowNodes[i]);
}

rows.sort(finalSorter);

for (i = 0; i < rows.length; i += 1) {
tableBody.appendChild(rows[i]);
}
}
// removes sort indicators for current column being sorted
function removeSortIndicators() {
var col = getNthColumn(currentSort.index),
cls = col.className;

cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
col.className = cls;
}
// adds sort indicators for current column being sorted
function addSortIndicators() {
getNthColumn(currentSort.index).className += currentSort.desc
? ' sorted-desc'
: ' sorted';
}
// adds event listeners for all sorter widgets
function enableUI() {
var i,
el,
ithSorter = function ithSorter(i) {
var col = cols[i];

return function() {
var desc = col.defaultDescSort;

if (currentSort.index === i) {
desc = !currentSort.desc;
}
sortByIndex(i, desc);
removeSortIndicators();
currentSort.index = i;
currentSort.desc = desc;
addSortIndicators();
};
};
for (i = 0; i < cols.length; i += 1) {
if (cols[i].sortable) {
// add the click event handler on the th so users
// dont have to click on those tiny arrows
el = getNthColumn(i).querySelector('.sorter').parentElement;
if (el.addEventListener) {
el.addEventListener('click', ithSorter(i));
} else {
el.attachEvent('onclick', ithSorter(i));
}
}
}
}
// adds sorting functionality to the UI
return function() {
if (!getTable()) {
return;
}
cols = loadColumns();
loadData();
addSortIndicators();
enableUI();
};
})();

window.addEventListener('load', addSorting);
167 changes: 167 additions & 0 deletions coverage/lcov.info
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
TN:
SF:index.js
FN:136,(anonymous_0)
FN:180,(anonymous_1)
FN:182,(anonymous_2)
FN:192,swaggerInitFn
FN:203,(anonymous_4)
FN:205,(anonymous_5)
FN:217,(anonymous_6)
FN:223,(anonymous_7)
FN:236,(anonymous_8)
FN:238,(anonymous_9)
FN:241,(anonymous_10)
FN:248,(anonymous_11)
FNF:12
FNH:11
FNDA:9,(anonymous_0)
FNDA:8,(anonymous_1)
FNDA:4,(anonymous_2)
FNDA:21,swaggerInitFn
FNDA:1,(anonymous_4)
FNDA:0,(anonymous_5)
FNDA:3,(anonymous_6)
FNDA:1,(anonymous_7)
FNDA:1,(anonymous_8)
FNDA:10,(anonymous_9)
FNDA:417,(anonymous_10)
FNDA:10,(anonymous_11)
DA:3,1
DA:4,1
DA:5,1
DA:7,1
DA:9,1
DA:90,1
DA:136,1
DA:141,9
DA:142,4
DA:143,4
DA:144,4
DA:145,4
DA:146,4
DA:147,4
DA:148,4
DA:149,4
DA:150,4
DA:153,5
DA:155,9
DA:156,9
DA:157,9
DA:158,9
DA:159,9
DA:160,9
DA:161,9
DA:163,9
DA:164,9
DA:165,9
DA:166,9
DA:167,9
DA:169,9
DA:176,9
DA:177,9
DA:180,1
DA:181,8
DA:182,8
DA:183,4
DA:184,0
DA:185,0
DA:187,4
DA:193,21
DA:194,1
DA:195,20
DA:196,4
DA:197,4
DA:199,16
DA:203,1
DA:204,1
DA:205,1
DA:206,0
DA:207,0
DA:208,0
DA:209,0
DA:210,0
DA:212,0
DA:217,1
DA:218,3
DA:219,3
DA:220,3
DA:223,1
DA:224,1
DA:225,1
DA:231,1
DA:232,1
DA:235,1
DA:236,1
DA:238,1
DA:239,10
DA:240,10
DA:241,10
DA:242,417
DA:243,10
DA:244,10
DA:246,407
DA:248,10
DA:249,10
DA:251,10
DA:254,1
LF:78
LH:70
BRDA:141,0,0,4
BRDA:141,0,1,5
BRDA:141,1,0,9
BRDA:141,1,1,4
BRDA:148,2,0,4
BRDA:148,2,1,4
BRDA:155,3,0,9
BRDA:155,3,1,0
BRDA:156,4,0,0
BRDA:156,4,1,9
BRDA:157,5,0,9
BRDA:157,5,1,0
BRDA:158,6,0,9
BRDA:158,6,1,9
BRDA:159,7,0,9
BRDA:159,7,1,9
BRDA:160,8,0,9
BRDA:160,8,1,1
BRDA:161,9,0,9
BRDA:161,9,1,1
BRDA:163,10,0,0
BRDA:163,10,1,9
BRDA:166,11,0,2
BRDA:166,11,1,7
BRDA:167,12,0,2
BRDA:167,12,1,7
BRDA:170,13,0,9
BRDA:170,13,1,3
BRDA:172,14,0,9
BRDA:172,14,1,6
BRDA:173,15,0,9
BRDA:173,15,1,9
BRDA:183,16,0,0
BRDA:183,16,1,4
BRDA:193,17,0,1
BRDA:193,17,1,20
BRDA:195,18,0,4
BRDA:195,18,1,16
BRDA:206,19,0,0
BRDA:206,19,1,0
BRDA:208,20,0,0
BRDA:208,20,1,0
BRDA:218,21,0,3
BRDA:218,21,1,2
BRDA:224,22,0,1
BRDA:224,22,1,0
BRDA:226,23,0,1
BRDA:226,23,1,0
BRDA:227,24,0,1
BRDA:227,24,1,0
BRDA:228,25,0,1
BRDA:228,25,1,1
BRDA:229,26,0,1
BRDA:229,26,1,1
BRDA:242,27,0,10
BRDA:242,27,1,407
BRF:56
BRH:44
end_of_record
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
@@ -15,7 +15,6 @@ var htmlTplString = `
<title><% title %></title>
<link rel="stylesheet" type="text/css" href="./swagger-ui.css" >
<% favIconString %>
<% customJs %>
<style>
html
{
@@ -78,6 +77,7 @@ var htmlTplString = `
<script src="./swagger-ui-bundle.js"> </script>
<script src="./swagger-ui-standalone-preset.js"> </script>
<script src="./swagger-ui-init.js"> </script>
<% customJs %>
<% customCssUrl %>
<style>
<% customCss %>
10 changes: 7 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "swagger-ui-express",
"version": "4.1.6",
"version": "4.3.0",
"description": "Swagger UI Express",
"main": "./index.js",
"files": [
@@ -12,6 +12,8 @@
],
"scripts": {
"test": "./node_modules/.bin/mocha test/*",
"coverage:report": "nyc ./node_modules/.bin/mocha test/* || exit 0",
"coverage:badge": "npm run coverage:report && istanbul-badges-readme --coverageDir='./coverage'",
"test-app": "node ./test/testapp/run.js "
},
"keywords": [
@@ -28,8 +30,10 @@
"devDependencies": {
"es6-shim": "0.35.2",
"express": "4.12.2",
"istanbul-badges-readme": "^1.2.0",
"mocha": "2.2.5",
"phantom": "2.1.21"
"nyc": "^15.1.0",
"puppeteer": "5.3.1"
},
"author": {
"name": "Stephen Scott",
@@ -46,7 +50,7 @@
},
"homepage": "https://github.com/scottie1984/swagger-ui-express",
"dependencies": {
"swagger-ui-dist": "^3.18.1"
"swagger-ui-dist": ">=4.1.3"
},
"peerDependencies": {
"express": ">=4.0.0"
198 changes: 58 additions & 140 deletions test/test.spec.js
Original file line number Diff line number Diff line change
@@ -1,174 +1,92 @@
var assert = require('assert');
var app = require('./testapp/app');
var http = require('http');
var phantom = require('phantom');
const assert = require('assert');
const app = require('./testapp/app');
const puppeteer = require('puppeteer');
require('es6-shim');

describe('integration', function() {
var server;
var browser = null;
var sitepage = null;
var phInstance = null;

before(function(done) {
app.set('port', 3001);

server = app.listen(app.get('port'), function() {
done();
});
});

after(function() {
after(async function() {
server.close();
sitepage.close();
phInstance.exit();
await sitepage.close();
await browser.close();
});

it('should have API Documentation hosted at /api-docs', function(done) {
it('should intialize browser', async function() {
this.timeout(30000);
phantom.create()
.then(function(instance) {
phInstance = instance;
return instance.createPage();
})
.then(function(page) {
sitepage = page;
return page.open('http://localhost:3001/api-docs/');
})
.then(function(status) {
setTimeout(function() {
assert.equal('success', status);
done();
}, 100);
})
.catch(function(err) {
done(err);
});
browser = await puppeteer.launch();
sitepage = await browser.newPage();
});

it('should have API Documentation hosted at /api-docs', async function() {
const httpResponse = await sitepage.goto('http://localhost:3001/api-docs/');
assert.ok(httpResponse.ok());
});

it('should contain the expected elements on the page', function(done) {
sitepage.property('title')
.then(function(title) {
assert.equal('Swagger UI', title);
return sitepage.evaluate(function() {
return document.querySelector('.swagger-ui').innerHTML;
});
})
.then(function(html) {
assert.ok(html);
assert.notEqual(html.indexOf('id="operations-/test-index"'), -1);
assert.notEqual(html.indexOf('id="operations-/test-impossible"'), -1);
done();
})
.catch(function(err) {
done(err);
});
it('should contain the expected elements on the page from /api-docs', async function() {
await sitepage.waitForSelector('.information-container', { timeout: 2000 });
assert.equal('Swagger UI', await sitepage.title());
const html = await sitepage.evaluate(() => document.querySelector('.swagger-ui').innerHTML);
assert.ok(html);
assert.notEqual(html.indexOf("id=\"operations-\\/test-index\""), -1);
assert.notEqual(html.indexOf("id=\"operations-\\/test-impossible\""), -1);
});

it('should have API Documentation hosted at /api-docs-from-url', function(done) {
sitepage.open('http://localhost:3001/api-docs-from-url/')
.then(function(status) {
setTimeout(function() {
assert.equal('success', status);
done();
}, 100);
})
.catch(function(err) {
done(err);
});
it('should have API Documentation hosted at /api-docs-from-url', async function() {
const httpResponse = await sitepage.goto('http://localhost:3001/api-docs-from-url/');
assert.ok(httpResponse.ok());
});

it('should contain the expected elements on the page', function(done) {
sitepage.property('title')
.then(function(title) {
assert.equal('Swagger UI', title);
return sitepage.evaluate(function() {
return document.querySelector('.swagger-ui').innerHTML;
});
})
.then(function(html) {
assert.ok(html);
assert.notEqual(html.indexOf('id="operations-/test-index"'), -1);
assert.notEqual(html.indexOf('id="operations-/test-impossible"'), -1);
done();
})
.catch(function(err) {
done(err);
});
it('should contain the expected elements on the page from /api-docs-from-url', async function() {
await sitepage.waitForSelector('.information-container', { timeout: 2000 });
assert.equal('Swagger UI', await sitepage.title());
const html = await sitepage.evaluate(() => document.querySelector('.swagger-ui').innerHTML);
assert.ok(html);
// console.log(`**** ${html}`);
assert.notEqual(html.indexOf("id=\"operations-\\/test-index\""), -1);
assert.notEqual(html.indexOf("id=\"operations-\\/test-impossible\""), -1);
});

it('should have API Documentation hosted at /api-docs-using-object', function(done) {
sitepage.open('http://localhost:3001/api-docs-using-object/')
.then(function(status) {
setTimeout(function() {
assert.equal('success', status);
done();
}, 100);
})
.catch(function(err) {
done(err);
});
it('should have API Documentation hosted at /api-docs-using-object', async function() {
const httpResponse = await sitepage.goto('http://localhost:3001/api-docs-using-object/');
assert.ok(httpResponse.ok());
});

it('should contain the expected elements on the page for api-docs-using-object', function(done) {
sitepage.property('title')
.then(function(title) {
assert.equal('Swagger UI', title);
return sitepage.evaluate(function() {
return document.querySelector('.swagger-ui').innerHTML;
});
})
.then(function(html) {
assert.ok(html);
assert.notEqual(html.indexOf('id="operations-/test-index"'), -1);
assert.notEqual(html.indexOf('id="operations-/test-impossible"'), -1);
done();
})
.catch(function(err) {
done(err);
});
it('should contain the expected elements on the page for api-docs-using-object', async function() {
await sitepage.waitForSelector('.information-container', { timeout: 2000 });
assert.equal('Swagger UI', await sitepage.title());
const html = await sitepage.evaluate(() => document.querySelector('.swagger-ui').innerHTML);
assert.ok(html);
assert.notEqual(html.indexOf("id=\"operations-\\/test-index\""), -1);
assert.notEqual(html.indexOf("id=\"operations-\\/test-impossible\""), -1);
});

it('should have API Documentation hosted at /api-docs-with-null', function(done) {
sitepage.open('http://localhost:3001/api-docs-with-null/')
.then(function(status) {
setTimeout(function() {
assert.equal('success', status);
done();
}, 100);
})
.catch(function(err) {
done(err);
});
it('should have API Documentation hosted at /api-docs-with-null', async function() {
const httpResponse = await sitepage.goto('http://localhost:3001/api-docs-with-null/');
assert.ok(httpResponse.ok());
});

it('should contain the expected elements on the page for api-docs-with-null', function(done) {
sitepage.property('title')
.then(function(title) {
assert.equal('Swagger UI', title);
return sitepage.evaluate(function() {
return document.querySelector('.swagger-ui').innerHTML;
});
})
.then(function(html) {
assert.ok(html);
assert.notEqual(html.indexOf('id="operations-/test-index"'), -1);
assert.notEqual(html.indexOf('id="operations-/test-impossible"'), -1);
done();
})
.catch(function(err) {
done(err);
});
it('should contain the expected elements on the page for api-docs-with-null', async function() {
await sitepage.waitForSelector('.information-container', { timeout: 2000 });
assert.equal('Swagger UI', await sitepage.title());
const html = await sitepage.evaluate(() => document.querySelector('.swagger-ui').innerHTML);
assert.ok(html);
assert.notEqual(html.indexOf("id=\"operations-\\/test-index\""), -1);
assert.notEqual(html.indexOf("id=\"operations-\\/test-impossible\""), -1);
});

it('should not leak package.json', function(done) {
sitepage.open('http://localhost:3001/api-docs/package.json')
.then(() => sitepage.evaluate(function () { return document.querySelector('body').innerText }))
.then(body => {
assert.equal('Not Found', body);
done()
})
.catch(function(err) {
done(err);
});
it('should not leak package.json', async function() {
await sitepage.goto('http://localhost:3001/api-docs/package.json');
const body = await sitepage.evaluate(() => document.querySelector('body').innerText);
assert.equal('Not Found', body);
});
});
});
4 changes: 3 additions & 1 deletion test/testapp/app.js
Original file line number Diff line number Diff line change
@@ -47,6 +47,8 @@ app.get('/bar', function(req, res) { res.json({ status: 'OKISH'}); });
app.use('/api-docs', swaggerUi.serve)
app.get('/api-docs', swaggerUi.setup(swaggerDocument, false, options, '.swagger-ui .topbar { background-color: red }'));

app.use('/api-docs-one', swaggerUi.serve, swaggerUi.setup(swaggerDocument, false, options, '.swagger-ui .topbar { background-color: red }'))

app.use('/api-docs-from-url', swaggerUi.serve)
app.get('/api-docs-from-url', swaggerUi.setup(null, false, options, '.swagger-ui .topbar { background-color: red }', null, '/swagger.json'));

@@ -81,7 +83,7 @@ app.get('/api-docs-with-null', swaggerUi.setup(swaggerDocument, null, options, '
app.use('/api-docs-split', swaggerUi.serve)
app.get('/api-docs-split', swaggerUi.setup(swaggerDocumentSplit, null, options, '.swagger-ui .topbar { background-color: orange }'));

app.use('/api-docs-with-opts/', swaggerUi.serveWithOptions({ redirect: false }))
app.use('/api-docs-with-opts/', swaggerUi.serveWithOptions({ redirect: false, cacheControl: false }))
app.get('/api-docs-with-opts/', swaggerUi.setup(swaggerDocumentSplit, null, options, '.swagger-ui .topbar { background-color: orange }'));

var swaggerHtml = swaggerUi.generateHTML(swaggerDocument, swaggerUiOpts)