{"_id":"@aller/express-swagger","_rev":"22-a917e7dd9c58585b6a58a5fff7902aa4","name":"@aller/express-swagger","dist-tags":{"latest":"0.3.3"},"versions":{"0.0.1":{"name":"@aller/express-swagger","version":"0.0.1","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.0.1","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"df31861bbb53857844badff9d66eefbb26affe83","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.0.1.tgz","fileCount":8,"integrity":"sha512-3gyi+k1FR3QcGfZKaxvGNbhq2qz5EpBao/M/oYFIp/nK1WqxYEnH9gmexGLirsZI+s0K9IzEHls0af/vUFe9Ag==","signatures":[{"sig":"MEQCIGhA1XZ3pwz/M58niEavLoA/+BRBFp0i+n6P7U8KyKrBAiA6RMz/O9AcETZpbRw+UtpKBi0Kc9q8IFzDOnme0gb48w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179792},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"b2ddce2725c39a802857faa625e1ca39f4f5cece","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && dts-buddy && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json"},"_npmUser":{"name":"paed01","email":"pal.edman@outlook.com"},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.7","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"22.22.2","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.7.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.0.1_1777550528670_0.4997644388687086","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@aller/express-swagger","version":"0.0.2","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.0.2","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"2edb5d7e6bade6d6c89aa2f9ddba2abf3c418f55","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.0.2.tgz","fileCount":8,"integrity":"sha512-cQtjxuDN97moiY1Y4VxDqw3vw8hpfXIb3PHAQLsJQtPcvUjVyodqnrYB8C4QENPBBlT7gvG9VWp9A0u5MXwYyg==","signatures":[{"sig":"MEUCIA7YTsEzYZuJ7brddkm2OCglrK0bG9uU/To/nOHqK7PEAiEAueMSHyHqP8BUM8qonW5+ykiIeV2fZNERSSbS2EXmkhc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181022},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"e579642a41b82564b522a16901623b73bb7c669d","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && dts-buddy && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.13.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.7.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.0.2_1777560099514_0.725442061881115","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@aller/express-swagger","version":"0.0.3","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.0.3","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"0df49d15e3eab772d73e48740599ad7188c459ac","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.0.3.tgz","fileCount":8,"integrity":"sha512-6z0kHNa0yjwHwjWUGuAgP3fp0OlF6X/JNpcm7voEgbaUWP4MthS08GuZXJLhvjzzWfsrwjMYqVx9ZJL1DMfQSw==","signatures":[{"sig":"MEQCIGP31dy0VLUEauRHUj3XHrtTmi0138xMWkopWat+myo1AiAis9cicU9B4/gaUOtOSlvm7I+EmhDPXB0288pIuzfQvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":183090},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"84db7bc06ab64deebcd7284d83f0d4e9e6aa497e","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && dts-buddy && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.13.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.7.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.0.3_1777746579531_0.5851767511898973","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@aller/express-swagger","version":"0.0.4","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.0.4","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"10aed2256f353137b8868af4b03755d79376cb32","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.0.4.tgz","fileCount":8,"integrity":"sha512-Rw2rKOLfl0pgOcesDf+LacFz3Fn7/sokxmmFZXyUkOGpQBUAnCVitxBH/eKwGFOXeMsSMyAGKjJnI8xW+nc/Dw==","signatures":[{"sig":"MEQCIHYghosJNXFU1G9zzEZyfTqgMjx7xIE4lud2Zbj3+H30AiAV9YtlBBzCE75z41hk5xLTtgLbgmPmmVQD9u9ybZmthg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":186884},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"d27fc792a1b021d8aa5027a06d16780c2bd4d9e2","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && dts-buddy && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.13.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.7.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.0.4_1777748623079_0.08979681420685859","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@aller/express-swagger","version":"0.0.5","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.0.5","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"26f15523f1d3090a6eca928a0a1072c87b1b5d13","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.0.5.tgz","fileCount":8,"integrity":"sha512-vJiAUHRJ8SQNwc8jpRFLYS+fwGSm2UcsqCzIKYQLDFDaZlUBrHG0jicl2JRfvEFHlFLl37xJvMxlfhubfB1DPw==","signatures":[{"sig":"MEUCICE6iFzUOFvi8O1xjhm3GFl8UsRm6H8NP1aUc3FtYZaNAiEAyqupWyzOYDitZnLoujjszgWya4/8VbtvGELewykhd9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":188188},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"43221d4e2f4bdd758767342e6f606cca93535950","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && dts-buddy && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.13.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.7.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.0.5_1777750694299_0.3056276800824378","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@aller/express-swagger","version":"0.0.6","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.0.6","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"73bafa25a879e4c2e080c7f698c775ade0f6b5ed","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.0.6.tgz","fileCount":8,"integrity":"sha512-zZ6Oa7oRFTsABz3Ae+VNRaVM6mNJGphWmESwVfd3S/bn6cQEpjXwAai5SIYLmZQTRy1cDW6Uk1/Ms/p0YY+PTw==","signatures":[{"sig":"MEUCIQD5acNjWY2t/YkKdyGY+vZf4II0DfnAJxvaZn6ov54KlAIgUWnobjtaNzljH/FAjOBG9/lfs/JQPxoT7N49YCbx9Vc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":193115},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"41a489fc4522469b443f08d37c2417868f6859ff","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && dts-buddy && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.13.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.7.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.0.6_1777798485989_0.8592663278214776","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@aller/express-swagger","version":"0.0.7","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.0.7","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"ef1dbc9ab071d72c52345a328fc061f829613993","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.0.7.tgz","fileCount":8,"integrity":"sha512-V5TIvMNgtAOFLriypwjzoa2fOPah9DV4lMxetXSBNB9Ro9tU5OBGnAPWpTizqkFqoNHaz3yPgpbNBB2GBtsmmw==","signatures":[{"sig":"MEQCIGkjHtGrBTQKBhqDTyd0DLXP2E2r7DPqO6tGN8tqzt6SAiB3kMwWyqGO8ZwDMwm31E80k9lLc6FL7DNradAk0FWbow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211048},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"04840b384afe2aa28bba935e61be7ea3e5d8add8","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && dts-buddy && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.13.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.7.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.0.7_1777805622882_0.6308976324897617","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@aller/express-swagger","version":"0.0.8","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.0.8","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"206d7064851b3517d1536a2fed7cf44bca5431b2","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.0.8.tgz","fileCount":8,"integrity":"sha512-hV4HmTmIeN7mD0UuZDrdWIf2JMxDWwn1QOGxYRsIsJi+2TAbzJQkWCnELNwtEkASxHx5UibNfpXAe06dQS5A6w==","signatures":[{"sig":"MEUCIQDLldFVWSpVF8xdt8cZ2psZSZwgAgQP1tI5ANMTUhRP+wIgJ+57KyzaqXsTsZGT2hM24salWJrPwFrEWT8YBYyWUUI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":217361},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"bbb8f147195569e9b8d3c85d7ff9801e95d958ed","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.13.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.7.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.0.8_1777868374510_0.25136825316508515","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@aller/express-swagger","version":"0.0.9","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.0.9","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"76cde0744ef85f87068b55ff26b61add7a5b05f7","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.0.9.tgz","fileCount":8,"integrity":"sha512-8WUeMkoGSyghCO9P730C8jAZM7Y5Cnu3tyDTTTBIO+cZYEnt2L6+XOmSKKjRfby7zR7W/cnbZ7LspmnJXdU9Fw==","signatures":[{"sig":"MEUCIQDjDb2NFkGk8LBCOthwOFMomr5h4WAE/yGSDeUgk1xtJQIgeUNTniHoJ40s9K+SAVjHCdxHou6LzAPUAclT4TMBGFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":220475},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"9565c9a1ef44c31b49598107443a2d7b72f1dac4","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.13.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.7.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.0.9_1777870043048_0.4033305740134281","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@aller/express-swagger","version":"0.0.10","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.0.10","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"76f3b237b7278400a2262e63f77d72ebd5774001","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.0.10.tgz","fileCount":8,"integrity":"sha512-ezfDCK4MuFOhon0ruXEg/WG3M5abAEkf7MVbOc8JRmG+0gQXfrzHy3mTCeFH54TCGfQ4H0REas8YLechMrOQWQ==","signatures":[{"sig":"MEUCIFzk4lJJRfRK6HF83dRWtjgh+8yrQmgY+PW8u4kkIzm1AiEA+oo+4TKBlj3d4eI18Gjw9fr2MM6bwK9tnji/P6oSyIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":222454},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"13858a85484d17018ee58bdaf1353445e0c45b1a","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.14.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.7.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.0.10_1778159939699_0.4719779473340957","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@aller/express-swagger","version":"0.0.11","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.0.11","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"33b2f4315ad3ab7220f55ff4386872b41c9770b1","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.0.11.tgz","fileCount":8,"integrity":"sha512-eh4pxonildrPfuOQPjvMqXzlt/Rw/sllrNBORqTaF2Boh2sYzy/nhu/TFsEp2ZsOypcvdhV6RH/hT2T/Kp3cOw==","signatures":[{"sig":"MEYCIQDgvdj51yg7T+n4vA5mqY2Kda4oyCGEfdifpQPHMBhqcAIhAJ/DuG5XCn+XbD+BdQiqHOZeTaLXw0JIi5PLMgZ3k4HS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":223280},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"1d2e483fd070d6a6bbeb636da06a3ce83d14f67b","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.14.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.7.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.0.11_1778248524349_0.21669962124315245","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@aller/express-swagger","version":"0.0.12","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.0.12","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"vnorvik","email":"vnorvik@gmail.com"},{"name":"robinwa","email":"robin.wasjo@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"7323ddfba3d5158c6fdcc640a038d71b891f98fd","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.0.12.tgz","fileCount":8,"integrity":"sha512-qdIErGTK/q9s6LBjDxc1vi/lH1rTADdzwCObgDVP+i8oseBneAw0mdEO0ZmtvwcbsDKIkHcValdZ9Omd5jQowQ==","signatures":[{"sig":"MEUCIQCGDX+93VtaNtSSvFFiVc4SXfJ+pKcLvDsvWRLBmLk5BgIgOGyEyijC+Z3wNkdjoSnUpE23EzvSDtrYiYUT4CqSHWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":224334},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"761cd972b1989a958079cd73a2fe24a078199451","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check && npm run build","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.14.1","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.8.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.0.12_1779276627598_0.3492683168411299","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@aller/express-swagger","version":"0.1.0","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.1.0","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"vnorvik","email":"vnorvik@gmail.com"},{"name":"robinwa","email":"robin.wasjo@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"94033f3552e9adc60408359325ebdf3a307e596b","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.1.0.tgz","fileCount":8,"integrity":"sha512-UpXHH3DGD8XsorSD2uokL97x1+PiasWrFLehZVmmA9r5UG/uHItpBrAM4hEQ9lAwosv2lks9ransZP/ebm3s2w==","signatures":[{"sig":"MEQCIBVmomjl7Ivmt2xjDuRxG7XCT++Dh99nop5lzioJxqRTAiAzrU1gBIhbYdhyMT9XgammDD4GWDJCpEX5gpnOhe87Lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":234529},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"bd0760987a2214dac5df5b64da298affb1897ede","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check && npm run build","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json","example-ts:prebuild":"node --experimental-strip-types --no-warnings bin/express-swagger.js example-ts/index.ts --out example-ts/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example","example-ts"],"_npmVersion":"11.16.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.8.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.1.0_1779960089415_0.20755536378755624","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aller/express-swagger","version":"0.1.1","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.1.1","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"vnorvik","email":"vnorvik@gmail.com"},{"name":"robinwa","email":"robin.wasjo@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"9c9e274ffd8a61ac568947b3cc336fb111d08f57","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.1.1.tgz","fileCount":8,"integrity":"sha512-OgCKZEF8EOVte+IZ6VkWwk1vKGwKcR0mWaAXKa61czFyVH5WpDpjsgYl8Hob3h8ua/mALas4HINtjU/FaG+SIQ==","signatures":[{"sig":"MEUCIBIFL+iVk1b6v6/LxMmSXcArk5VzjBgPyrlIHNJ/EKy1AiEAlCHsy+ma/4auHRhJ0nXHw+YEqJXr59lBdVgn5TXy+ac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":240282},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"f047d9a98af2fbb82444a6ba0b5ab2e3c98da11e","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check && npm run build","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json","example-ts:prebuild":"node --experimental-strip-types --no-warnings bin/express-swagger.js example-ts/index.ts --out example-ts/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example","example-ts"],"_npmVersion":"11.16.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.8.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.1.1_1779968168774_0.5769718270858248","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aller/express-swagger","version":"0.1.2","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.1.2","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"vnorvik","email":"vnorvik@gmail.com"},{"name":"robinwa","email":"robin.wasjo@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"cf910391b6b3d59413f39b05c5d61a357b66a487","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.1.2.tgz","fileCount":8,"integrity":"sha512-HkPrDE6KIdpRKs4lg8tdG06EM9kpgHiaxUu6vqDfZX/Lc5rMVz+6G3PA2oAQIIWbegpI5aRmQSatEgB7dfW6jA==","signatures":[{"sig":"MEUCIQCxiu7pDGQv6y4rpqq7NquZ/ons62o+AqqmvJxIxjuLoAIgRC+ljPWzQ91QHbXUT40XUJCVRaLlMy4mNevQxlRxioI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":240922},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"10e17b6ef8ae20dd6f63582159b528d629dd1273","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check && npm run build","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json","example-ts:prebuild":"node --experimental-strip-types --no-warnings bin/express-swagger.js example-ts/index.ts --out example-ts/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example","example-ts"],"_npmVersion":"11.16.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.8.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.1.2_1780043944704_0.869194606339196","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aller/express-swagger","version":"0.2.0","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.2.0","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"vnorvik","email":"vnorvik@gmail.com"},{"name":"robinwa","email":"robin.wasjo@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"1f14b3401dad45133b383619f3f7ed45862bd115","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.2.0.tgz","fileCount":8,"integrity":"sha512-NFcsRKoVfwjlQwaWezFlRWUcKLn7hp9rSk8AJB0G5g3coBZqieT+7rlRs9RxHfr7vG36+P+JCX2HyqWHE51WsA==","signatures":[{"sig":"MEYCIQDHi/wuIZfsUdTdtzc8bIzcyfImMe+L0F8wI/Hq6JXwuAIhAPekq3w2SlgVVHx5WXA0zY07ByVuMNcPkbMor0pdIYsM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":256405},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"833e1c04143f494cee99736fa6986066f75b12c3","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check && npm run build","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json","example-ts:prebuild":"node --experimental-strip-types --no-warnings bin/express-swagger.js example-ts/index.ts --out example-ts/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example","example-ts"],"_npmVersion":"11.16.0","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.8.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.2.0_1781187837836_0.5704819798217864","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aller/express-swagger","version":"0.3.0","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.3.0","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"vnorvik","email":"vnorvik@gmail.com"},{"name":"robinwa","email":"robin.wasjo@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"7e08980237c31ce214f835c31483c23ec7c6722a","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.3.0.tgz","fileCount":8,"integrity":"sha512-WGktKQWjb+2TbgPpUtlI2dhdOiKt562NoNn+6VJzPpth0PqZo6YGi4+DwcuAoBVZsh1Bu9rFzsQWtnuuL89fLQ==","signatures":[{"sig":"MEQCIBloY2suUWNlQ9Tf/oijj6zhtTUd6aAlEip7L8Atwk2hAiBlMI6+6GdYP3t8CbsnksJZ14uGnsU1hqDnwXWgRcd4Qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":265220},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"8572e80c85ffd726b66fd63c86dae5c66f9aa731","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check && npm run build","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json","example-ts:prebuild":"node --experimental-strip-types --no-warnings bin/express-swagger.js example-ts/index.ts --out example-ts/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example","example-ts"],"_npmVersion":"12.0.1","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.8.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0 <7"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.3.0_1784008157706_0.7774089197231207","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aller/express-swagger","version":"0.3.1","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.3.1","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"vnorvik","email":"vnorvik@gmail.com"},{"name":"robinwa","email":"robin.wasjo@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"36a5a8469b6d9d5da22e43c10cee629ef0436c26","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.3.1.tgz","fileCount":8,"integrity":"sha512-uLUpU4qyz1BUgelOaEWBBbkLq+8pSg5OJj9BFVp7Q54zsfihVfc/aQ6eLMyryqPwwU3yUmdp2XIaWLS9RFIu5g==","signatures":[{"sig":"MEYCIQDlFqO7I+rYPWFREHYjgl97GRUciCppblK4IyuxGxu1tgIhAJitGZoFEFu+tGpQmNLZOBohS4uK0Hq4RjRBjpq+JXer","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":270382},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"5ec01e3c09aa1c3c045755455d8ba65e0bb5189c","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check && npm run build","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json","example-ts:prebuild":"node --experimental-strip-types --no-warnings bin/express-swagger.js example-ts/index.ts --out example-ts/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example","example-ts"],"_npmVersion":"12.0.1","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","multer":"^2.1.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.8.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","@types/multer":"^2.1.0","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0 <7"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.3.1_1784183698364_0.5831064669981474","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@aller/express-swagger","version":"0.3.2","keywords":["swagger","express","openapi"],"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","_id":"@aller/express-swagger@0.3.2","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"vnorvik","email":"vnorvik@gmail.com"},{"name":"robinwa","email":"robin.wasjo@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"homepage":"https://github.com/allernordic/express-swagger","bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"bin":{"express-swagger":"bin/express-swagger.js"},"dist":{"shasum":"a90f705ffdb285e00f73364c986435cb07ff083c","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.3.2.tgz","fileCount":8,"integrity":"sha512-kVAss8lvtnWtl3peAjAX8uXpU+b2+cixCVP3SZyC74kAP17/aa+xwr7hiXWfVEMS9I9Go+AS4rlriK1iIYzyZQ==","signatures":[{"sig":"MEYCIQDzrRn8dziuvCYr9zthOpICOxF2CQ0C+UX1zfij9SSPFgIhAK5F/d0zzPskfKzmQER2Cic5FUYA5w62WH+/RX6AfwRZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":279376},"main":"./lib/index.cjs","type":"module","types":"./types/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"6fca21a6cd4be72606c5dcbbc3cbeabb4d38d9bf","scripts":{"toc":"node ./scripts/toc.js","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js && npm run toc","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run lint && npm run example:check && npm run build","example:check":"texample ./README.md","prepublishOnly":"npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json","example-ts:prebuild":"node --experimental-strip-types --no-warnings bin/express-swagger.js example-ts/index.ts --out example-ts/public/swagger.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"overrides":{"mocha":{"yargs":"^18.1.0"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example","example-ts"],"_npmVersion":"12.0.2","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","dts-buddy":"^0.8.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0 <7"},"_npmOperationalInternal":{"tmp":"tmp/express-swagger_0.3.2_1788958463990_0.0588814995195186","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"_id":"@aller/express-swagger@0.3.3","bin":{"express-swagger":"bin/express-swagger.js"},"bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"dist":{"shasum":"eac03f9489e78634932b94dcb27abc8d2ae4bca7","tarball":"https://registry.npmjs.org/@aller/express-swagger/-/express-swagger-0.3.3.tgz","fileCount":8,"integrity":"sha512-us/k+zOZt10Y6SoHnvIHD6HG/BTSzY2GHopBI7M8rsW+qWzasTAvv+dh/e0vNyoZiio10CO67yDeB26A3cEugw==","signatures":[{"sig":"MEYCIQCHmd/P4suFDv//oX6DSZ9Z0JxANyuj5MW98zBF3HuslwIhALK/TcWh7VtvAZgvUbsjEkCjc8T79FgC8mLD7VPW0s7t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDTKBcumnMIq4rzSQDEa4JpB4HhCGL/7yOEX+8R59G7OgIhAJ5mKTFBM+RNxH4fEAVLUZxtKudugsnUI55IBB8Cw4WY"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aller%2fexpress-swagger@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":279595},"main":"./lib/index.cjs","name":"@aller/express-swagger","type":"module","types":"./types/index.d.ts","author":{"url":"https://github.com/allernordic","name":"Aller Media"},"module":"./src/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js","require":"./lib/index.cjs"}},"gitHead":"61c7b6acac5329325b388e4799a21eac40001ebb","license":"MIT","scripts":{"toc":"toc README.md","tsc":"tsc --noEmit && tsc -p test","lint":"eslint . --cache && prettier . -c","test":"mocha","build":"rollup -c && node ./scripts/build-types.js","test:md":"texample ./README.md","cov:html":"c8 -n src -r html -r text mocha","posttest":"npm run toc && npm run lint && npm run tsc && npm run test:md && npm run build","prepublishOnly":"npm run toc && npm run build","example:prebuild":"node bin/express-swagger.js example/index.js --out example/public/swagger.json","example-ts:prebuild":"node --experimental-strip-types --no-warnings bin/express-swagger.js example-ts/index.ts --out example-ts/public/swagger.json"},"version":"0.3.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6d299a45-1b3d-491a-b588-838deef1e5a2"}},"homepage":"https://github.com/allernordic/express-swagger","keywords":["swagger","express","openapi"],"overrides":{"mocha":{"yargs":"^18.1.0","serialize-javascript":"^7.1.1"}},"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"workspaces":["example","example-ts"],"_npmVersion":"12.0.2","description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","directories":{},"maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"vnorvik","email":"vnorvik@gmail.com"},{"name":"robinwa","email":"robin.wasjo@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","chai":"^6.2.2","mocha":"^11.7.5","eslint":"^10.2.1","rollup":"^4.60.2","express":"^5.2.1","globals":"^17.5.0","prettier":"^3.8.3","texample":"^1.0.0","@0dep/toc":"^1.0.1","dts-buddy":"^0.8.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/chai":"^5.2.3","@types/node":"^22.19.17","@types/debug":"^4.1.13","@types/mocha":"^10.0.10","mocha-cakes-2":"^3.3.0","@types/express":"^5.0.6","@types/supertest":"^7.2.1","@rollup/plugin-json":"^6.1.0","@rollup/plugin-commonjs":"^29.0.2","openapi-schema-validator":"^12.1.3"},"peerDependencies":{"debug":"^4.0.0","typescript":">=5.0.0 <7"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/express-swagger_0.3.3_1789560760966_0.3195565561875182"}}},"time":{"created":"2026-04-30T12:02:08.588Z","modified":"2026-09-16T12:12:41.438Z","0.0.1":"2026-04-30T12:02:08.836Z","0.0.2":"2026-04-30T14:41:39.663Z","0.0.3":"2026-05-02T18:29:39.666Z","0.0.4":"2026-05-02T19:03:43.219Z","0.0.5":"2026-05-02T19:38:14.448Z","0.0.6":"2026-05-03T08:54:46.157Z","0.0.7":"2026-05-03T10:53:43.008Z","0.0.8":"2026-05-04T04:19:34.651Z","0.0.9":"2026-05-04T04:47:23.248Z","0.0.10":"2026-05-07T13:18:59.836Z","0.0.11":"2026-05-08T13:55:24.507Z","0.0.12":"2026-05-20T11:30:27.743Z","0.1.0":"2026-05-28T09:21:29.552Z","0.1.1":"2026-05-28T11:36:08.934Z","0.1.2":"2026-05-29T08:39:04.838Z","0.2.0":"2026-06-11T14:23:57.995Z","0.3.0":"2026-07-14T05:49:17.858Z","0.3.1":"2026-07-16T06:34:58.542Z","0.3.2":"2026-09-09T12:54:24.127Z","0.3.3":"2026-09-16T12:12:41.092Z"},"bugs":{"url":"https://github.com/allernordic/express-swagger/issues"},"author":{"url":"https://github.com/allernordic","name":"Aller Media"},"license":"MIT","homepage":"https://github.com/allernordic/express-swagger","keywords":["swagger","express","openapi"],"repository":{"url":"git+https://github.com/allernordic/express-swagger.git","type":"git"},"description":"Adds a Swagger / OpenAPI v3 specification to an Express application, derived automatically from the types of the routes registered on the app.","maintainers":[{"name":"jimoe","email":"jon3828@gmail.com"},{"name":"lobunto","email":"marius.ibsen@gmail.com"},{"name":"goodleby","email":"goodleby@gmail.com"},{"name":"konrad-j","email":"konrad.jorgensen@gmail.com"},{"name":"roninjc","email":"jesus.castanocandela@gmail.com"},{"name":"toremeek","email":"tore.meek@aller.com"},{"name":"vnorvik","email":"vnorvik@gmail.com"},{"name":"robinwa","email":"robin.wasjo@aller.com"},{"name":"paed01","email":"pal.edman@outlook.com"},{"name":"kuhanloh","email":"kuhanloh@gmail.com"}],"readme":"# @aller/express-swagger\n\n[![Build](https://github.com/allernordic/express-swagger/actions/workflows/build.yaml/badge.svg)](https://github.com/allernordic/express-swagger/actions/workflows/build.yaml)[![Build (Windows)](https://github.com/allernordic/express-swagger/actions/workflows/build-windows.yaml/badge.svg)](https://github.com/allernordic/express-swagger/actions/workflows/build-windows.yaml)\n\nBuilds an OpenAPI 3 document for an Express application, derived from the app's registered routes and the JSDoc types those routes declare. You choose how to serve the result — pre-build once and serve it as a static file, or build on demand inside a request handler.\n\n<!-- toc -->\n\n- [What it does](#what-it-does)\n- [Installation](#installation)\n- [Annotating routes](#annotating-routes)\n  - [TypeScript source](#typescript-source)\n- [Declaring response types](#declaring-response-types)\n  - [Success responses](#success-responses)\n    - [Pinning the success status on the handler signature](#pinning-the-success-status-on-the-handler-signature)\n  - [Error responses](#error-responses)\n    - [Multi-status success via `@throws {CreatedResponse<T>}`](#multi-status-success-via-throws-createdresponset)\n- [Non-JSON request and response bodies](#non-json-request-and-response-bodies)\n  - [Response media type](#response-media-type)\n  - [Request media type — form and multipart bodies](#request-media-type--form-and-multipart-bodies)\n- [Type-to-schema notes](#type-to-schema-notes)\n  - [Default values](#default-values)\n  - [Open string unions](#open-string-unions)\n  - [Deriving a type with `Omit` / `Pick` / `Partial`](#deriving-a-type-with-omit--pick--partial)\n  - [Sharing a type declared in a dependency](#sharing-a-type-declared-in-a-dependency)\n- [Using the CLI to pre-build `swagger.json`](#using-the-cli-to-pre-build-swaggerjson)\n  - [Loading the generated `swagger.json` from your app](#loading-the-generated-swaggerjson-from-your-app)\n- [Writing your own pre-build script](#writing-your-own-pre-build-script)\n  - [Security example](#security-example)\n- [Serving on demand](#serving-on-demand)\n- [Smallest working example](#smallest-working-example)\n- [Debug](#debug)\n\n<!-- /toc -->\n\n## What it does\n\n- Walks the Express app's router and emits one OpenAPI operation per `(method, path)` pair — multiple methods on the same path share a single path entry.\n- Reads per-route request / response / path-params / query types from JSDoc `@param` tags or TypeScript parameter type annotations on each handler; error responses come from JSDoc `@throws`.\n- When given a `tsconfig.json`, compiles it with TypeScript's programmatic API and turns each type referenced from a handler into a JSON Schema under `components.schemas`. Without one, the doc still builds — request/response bodies fall back to `{ type: 'object' }` stubs.\n- Success status and error status codes are both driven by the response body type — no method-based heuristics, no `res.status(N)` sniffing.\n\nRequires `typescript` as a peer dependency.\n\n## Installation\n\n```bash\nnpm install @aller/express-swagger\nnpm install --save-dev typescript\n```\n\n## Annotating routes\n\nRoutes are annotated inline via a JSDoc comment on the handler. Body shapes are declared with `@typedef` (or pulled from a `.d.ts` via `import(...)`); the response status is pinned via `ApiResponse<Body, NNN>` and error responses are declared with `@throws`:\n\n```js\n/** @typedef {{ name: string, email: string }} CreateUserBody */\n/** @typedef {{ id: string, name: string, email: string }} UserRecord */\n/** @typedef {{ message: string }} ErrorBody */\n\n/**\n * `Request<P, ResBody, …>` already pins the response body, so leaving\n * `@param {Response} res` bare reuses it — emits 200 with `UserRecord[]`.\n * @param {import('express').Request<{}, UserRecord[]>} _req\n * @param {import('express').Response} _res\n */\nfunction listUsers(_req, _res) {\n  /* ... */\n}\napp.get('/users', listUsers);\n\n/**\n * @param {import('express').Request<{ id: string }, UserRecord>} _req\n * @param {import('express').Response<UserRecord>} _res\n * @throws {import('@aller/express-swagger').NotFoundResponse<ErrorBody>}\n */\nfunction getUser(_req, _res) {\n  /* ... */\n}\napp.get('/users/:id', getUser);\n\n/**\n * `ApiResponse<Body, NNN>` extends Express's `Response<Body>` and pins the\n * success status to the literal `, 201`.\n * @param {import('express').Request<{}, UserRecord, CreateUserBody>} _req\n * @param {import('@aller/express-swagger').ApiResponse<UserRecord, 201>} _res\n * @throws {import('@aller/express-swagger').BadRequestResponse<ErrorBody>}\n */\nfunction createUser(_req, _res) {\n  /* ... */\n}\napp.post('/users', createUser);\n\n/**\n * @param {import('express').Request<{ id: string }, UserRecord, CreateUserBody>} _req\n * @param {import('express').Response<UserRecord>} _res\n * @throws {import('@aller/express-swagger').NotFoundResponse<ErrorBody>}\n * @throws {import('@aller/express-swagger').BadRequestResponse<ErrorBody>}\n */\nfunction updateUser(_req, _res) {\n  /* ... */\n}\napp.put('/users/:id', updateUser);\n\napp.delete(\n  '/users/:id',\n  /**\n   * `Response<NoContentResponse>` → 204 with no `content` block.\n   * @param {import('express').Request<{ id: string }>} _req\n   * @param {import('express').Response<import('@aller/express-swagger').NoContentResponse>} _res\n   * @throws {import('@aller/express-swagger').NotFoundResponse<ErrorBody>}\n   */\n  (_req, _res) => {\n    /* ... */\n  }\n);\n```\n\nWhat you get back: `GET /users` → 200 with `UserRecord[]`, `GET /users/{id}` → 200 + 404, `POST /users` → 201 + 400, `PUT /users/{id}` → 200 + 400 + 404, `DELETE /users/{id}` → 204 + 404. `components.schemas` carries `UserRecord`, `CreateUserBody`, and `ErrorBody`.\n\nSignals the library reads from a handler:\n\n| Source                                                                | Meaning                                                                                                                                                                                                                                                                                                             |\n| --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `@param {Request<Params, ResBody, ReqBody, Query>} req [description]` | Path-param / response-body / request-body / query-string schema types (any slot is optional). Trailing free text becomes the requestBody description.                                                                                                                                                               |\n| `@param {Response<Body>} res [description]`                           | Response body schema — also drives the success status (see below). Trailing free text becomes the success-response description.                                                                                                                                                                                     |\n| `@type {RequestHandler<Params, ResBody, ReqBody, Query>}`             | Pin all four slot types on the handler itself instead of writing one `@param` per parameter. Equivalent to `@param {Request<Params, ResBody, ReqBody, Query>} req`. Recognized on `function` declarations, `const`-bound arrows, and `import('express').RequestHandler<…>` import-type forms.                       |\n| `@returns {RequestHandler<Params, ResBody, ReqBody, Query>}`          | Same as `@type`, but on a higher-order factory whose return value is the handler — `app.METHOD(path, makeHandler(deps))`. The library reads the four slot types off the factory's `@returns`.                                                                                                                       |\n| `@throws {TypeName} [description]`                                    | Error response. `TypeName` must resolve to a library error type (see below). Trailing free text becomes the response description.                                                                                                                                                                                   |\n| `@tag <name>`                                                         | OpenAPI tag for grouping endpoints. Repeat the tag for multiple values (order is preserved).                                                                                                                                                                                                                        |\n| `@security <scheme> [arg …]`                                          | Security requirement. `<scheme>` must match a declared `securitySchemes` key. For `apiKey` the next token is the header name; for `openIdConnect` an `https?://…` token is taken as the issuer URL (both auto-emit the scheme). All remaining tokens are OAuth2/OIDC scopes. Repeat the tag for OR.                 |\n| `@deprecated [message]`                                               | Sets `deprecated: true`. An optional message is appended to `description` as `**Deprecated:** …`.                                                                                                                                                                                                                   |\n| `@example <json>`                                                     | Request-body example, emitted as `requestBody.content[<media-type>].example`. Body is parsed as JSON; optional Markdown fences are stripped (triple-backtick with or without a language tag, or single-backtick on a one-liner). Malformed JSON is dropped and a warn is logged under `aller-express-swagger:warn`. |\n| `@private` / `@ignore` / `@protected` / `@internal`                   | Skip this handler — it's omitted from the OpenAPI doc entirely. Any of the four tags works (`@internal` matches TypeScript's `stripInternal` convention).                                                                                                                                                           |\n\nPath parameters are extracted from the Express path (`/users/:id` → `/users/{id}`) and their schema is taken from the `Params` slot of `Request<…>`. Without a `Params` type, each `:name` parameter defaults to `{ type: 'string' }`.\n\nA `@throws` whose type doesn't ultimately resolve to one of the library's error types is silently dropped — the entry is ignored rather than emitted as an unknown status.\n\nIf `@param {Request<Params, ResBody, …>}` already pins the response body, you can leave the `@param {Response} res` bare (no generic) and the library will reuse `ResBody` from the request slot — saves writing the same type twice. An explicit `Response<X>` always wins when present.\n\n### TypeScript source\n\nThe same signals are read from `.ts` source. Handler parameter type annotations replace `@param` tags, and exported `interface` / `type alias` / `enum` declarations are registered as named schemas without needing JSDoc `@typedef`s:\n\n```ts\nimport type { Request, Response } from 'express';\nimport type { ApiResponse, NotFoundResponse } from '@aller/express-swagger';\n\nexport interface UserRecord {\n  id: string;\n  name: string;\n  email: string;\n}\nexport interface ErrorBody {\n  message: string;\n}\n\napp.get(\n  '/users/:id',\n  /** @throws {NotFoundResponse<ErrorBody>} */\n  (req: Request<{ id: string }, UserRecord>, res: Response<UserRecord>) => {\n    /* ... */\n  }\n);\n\napp.post('/users', (req: Request<{}, UserRecord, CreateUserBody>, res: ApiResponse<UserRecord, 201>) => {\n  /* ... */\n});\n```\n\nJSDoc tags still apply to TS handlers — `@throws`, `@tag`, `@security`, `@deprecated`, `@private`, and the free-text description block all read the same way. JSDoc `@param` / `@type` annotations take precedence over TS parameter types when both are present.\n\n## Declaring response types\n\nThe library exports a small set of types whose names carry status-code meaning. Reference them either directly or via a chain (type alias or `interface … extends …`); chains of any depth are walked.\n\n### Success responses\n\n| Library type         | Status | Wire body                                            |\n| -------------------- | ------ | ---------------------------------------------------- |\n| `CreatedResponse<T>` | 201    | `T` (identity alias — the wire body is `T` as-is)    |\n| `NoContentResponse`  | 204    | _none_ — aliased to `never`, forcing `res.end()` use |\n| _anything else_      | 200    | The response body type declared in `Response<…>`.    |\n\n`NoContentResponse = never` is deliberate: it makes `res.json(…)` uncallable in typed handlers, so a 204 endpoint must use `res.status(204).end()`.\n\n#### Pinning the success status on the handler signature\n\n`ApiResponse<ResBody, StatusCode>` extends Express's `Response<ResBody>`, so a handler typed with it keeps `.send` / `.json` / `.status` etc. (and `_res.send({…})` validates against `ResBody`) while the second type parameter drives the OpenAPI success status:\n\n```js\n/**\n * @param {import('express').Request<{ id: string }>} _req\n * @param {import('@aller/express-swagger').ApiResponse<UserRecord, 202>} _res\n */\nfunction putAvatar(_req, _res) {\n  /* ... */\n}\napp.put('/users/:id/avatar', putAvatar);\n```\n\nThe `, 202` literal pins the operation's success status. Without an explicit pin, the existing rules apply: the response body type's chain to `ApiResponse<T, NNN>` wins (e.g. `CreatedResponse<T>` → 201), otherwise 200. The schema walk short-circuits on the `ApiResponse` symbol before descending into Express's `Response` chain, so inherited methods never leak into emitted schemas.\n\nExample — declaring a 204 endpoint:\n\n```ts\n// types.d.ts\nimport type { NoContentResponse } from '@aller/express-swagger';\n\nexport type DeleteUserResponse = NoContentResponse;\n```\n\n```js\n// routes.js\n/** @typedef {import('./types.js').DeleteUserResponse} DeleteUserResponse */\n\napp.delete(\n  '/users/:id',\n  /**\n   * @param {import('express').Request<{ id: string }>} _req\n   * @param {import('express').Response<DeleteUserResponse>} res\n   */\n  (_req, res) => {\n    res.status(204).end();\n  }\n);\n```\n\nThe emitted operation has `responses: { '204': { description: '' } }` with no `content` block.\n\n### Error responses\n\nDeclared via `@throws {YourErrorType}`. The type must ultimately refer to one of:\n\n| Library type                     | Status |\n| -------------------------------- | ------ |\n| `BadRequestResponse<T>`          | 400    |\n| `UnauthorizedResponse<T>`        | 401    |\n| `ForbiddenResponse<T>`           | 403    |\n| `NotFoundResponse<T>`            | 404    |\n| `ConflictResponse<T>`            | 409    |\n| `InternalServerErrorResponse<T>` | 500    |\n| `BadGatewayResponse<T>`          | 502    |\n\nAll extend `ErrorResponse<T, NNN>` and carry the body on a `body` property. The second generic on `ErrorResponse` pins the HTTP status as a numeric literal — declare your own error type with any code you need and the library reads the status straight off the type chain:\n\n```ts\nimport type { ErrorResponse } from '@aller/express-swagger';\n\nexport interface TeapotResponse<T> extends ErrorResponse<T, 418> {}\nexport type CreateUserTeapotResponse = TeapotResponse<ErrorBody>;\n```\n\nA handler annotated with `@throws {CreateUserTeapotResponse}` gets a `418` response in the OpenAPI doc — no need to wait for a registry update or pass anything to `options.security`/`options.statuses`.\n\n#### Multi-status success via `@throws {CreatedResponse<T>}`\n\n`@throws` accepts any library status type, not just error types. To document a POST endpoint that returns either `200` or `201` depending on whether a record already existed, declare the success body via `Response<T>` (defaults to 200) and add `@throws {CreatedResponse<U>}` to surface the alternative 201:\n\n```js\napp.post(\n  '/notes',\n  /**\n   * @param {import('express').Request<{}, NoteRecord, CreateNoteRequest>} req\n   * @param {import('express').Response<NoteRecord>} res\n   * @throws {import('@aller/express-swagger').CreatedResponse<NoteRecord>}\n   */\n  (req, res) => {\n    /* ... */\n  }\n);\n```\n\nThe doc emits both responses: `200` with `NoteRecord` (the default success) and `201` with `NoteRecord` (from the throws). Same trick works with `NoContentResponse` — `@throws {NoContentResponse}` adds a bodyless `204` next to whatever the handler's `Response<…>` declares.\n\nExample — declare the fixture types once, reuse them across handlers:\n\n```ts\n// types.d.ts\nimport type {\n  BadRequestResponse,\n  ConflictResponse,\n  CreatedResponse,\n  ForbiddenResponse,\n  InternalServerErrorResponse,\n  NoContentResponse,\n  NotFoundResponse,\n  UnauthorizedResponse,\n} from '@aller/express-swagger';\n\nexport interface UserRecord {\n  id: string;\n  name: string;\n  email: string;\n}\nexport interface ErrorBody {\n  error: string;\n}\n\nexport type CreateUserResponse = CreatedResponse<UserRecord>;\nexport type DeleteUserResponse = NoContentResponse;\nexport type CreateUserNotFoundResponse = NotFoundResponse<ErrorBody>;\nexport type CreateUserConflictResponse = ConflictResponse<ErrorBody>;\n\n// Alias / extends chains work too — the library walks them.\ntype AliasedBadRequest = BadRequestResponse<ErrorBody>;\nexport type LoginBadRequestResponse = AliasedBadRequest;\nexport interface DeleteUserBadRequestResponse extends BadRequestResponse<ErrorBody> {}\n```\n\n## Non-JSON request and response bodies\n\nThe default wire content type is `application/json` on both sides. Override it through the type system rather than via JSDoc tags — the library reads literal string types off the chain the same way it reads literal status codes.\n\n### Response media type\n\n`ApiResponse<ResBody, StatusCode, MediaType>` accepts a third generic. A string-literal `MediaType` flows off the chain into the emitted `responses[N].content[M]` key:\n\n```js\n/**\n * @param {import('express').Request} _req\n * @param {import('@aller/express-swagger').ApiResponse<import('@aller/express-swagger').Binary, 200, 'image/png'>} res\n */\n(_req, res) => res.status(200).type('png').end();\n```\n\nFor the most common non-JSON response — HTML — the library ships a `HtmlResponse<T = string>` brand (`extends ApiResponse<T, 200, 'text/html'>`):\n\n```js\n/**\n * @param {import('express').Request} _req\n * @param {import('@aller/express-swagger').HtmlResponse<string>} res\n */\n(_req, res) => res.status(200).type('html').send('<h1>hi</h1>');\n```\n\n### Request media type — form and multipart bodies\n\nTwo brand wrappers switch the request body's content key:\n\n| Library type       | Request `content[…]` key            | When to use                                           |\n| ------------------ | ----------------------------------- | ----------------------------------------------------- |\n| `FormBody<T>`      | `application/x-www-form-urlencoded` | Classic HTML form posts (`<form>` without `enctype`). |\n| `MultipartBody<T>` | `multipart/form-data`               | File uploads (multer / busboy / formidable et al.).   |\n\nWrap your payload type as the `ReqBody` slot of `Request<P, ResBody, ReqBody>` — the library peels the wrapper before resolving the body schema, so `T` documents the wire shape directly.\n\nFor file fields on a multipart body, use the library's `Binary` brand. A property typed `Binary` emits as `{ type: 'string', format: 'binary' }` — the standard OpenAPI shape for upload fields:\n\n```ts\n// types.d.ts\nimport type { Binary } from '@aller/express-swagger';\n\nexport interface DeploymentBody {\n  name: string;\n  /** BPMN source uploaded as multipart binary. */\n  file: Binary;\n}\n```\n\n```js\n// routes.js\napp.post(\n  '/deployments',\n  /**\n   * @param {import('express').Request<{}, unknown, import('@aller/express-swagger').MultipartBody<import('./types.js').DeploymentBody>>} _req\n   * @param {import('express').Response} res\n   */\n  (_req, res) => res.status(201).json({})\n);\n```\n\nThe emitted operation's `requestBody.content` is keyed by `multipart/form-data` (not `application/json`) and the `file` property carries `format: binary`.\n\n## Type-to-schema notes\n\nMost TypeScript types map cleanly to OpenAPI 3 schemas. A handful of corner cases are worth knowing:\n\n| Source type                                                  | Schema                                                                                                                                                                                     |\n| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `bigint`                                                     | `{ type: 'number' }` — OpenAPI 3 has no bigint type.                                                                                                                                       |\n| `Date`                                                       | `{ type: 'string', format: 'date-time' }` (instance methods aren't walked).                                                                                                                |\n| `Number` / `String` / `Boolean` (deprecated wrapper objects) | Coerced to their primitive equivalents.                                                                                                                                                    |\n| `Symbol` / `Object` (deprecated wrapper objects), `symbol`   | Properties of these types are dropped from the schema; standalone, the schema collapses to `{}`. The lowercase `symbol` primitive can't be JSON-serialized, so it gets the same treatment. |\n| `Binary` (library brand)                                     | `{ type: 'string', format: 'binary' }` — for file-upload fields and raw binary bodies.                                                                                                     |\n| `any` / `unknown` / `never` / `void`                         | `{}` (matches anything).                                                                                                                                                                   |\n\nPrefer the lowercase primitives (`number`, `string`, `boolean`) — the uppercase variants are JS constructor types, not value types, and most linters flag them.\n\n### Default values\n\nA property tagged with `@default <value>` in its JSDoc/TSDoc emits an OpenAPI `default`. The tag value is parsed as JSON first, so any JSON-expressible literal works:\n\n```ts\nexport interface Result {\n  /**\n   * Whether the operation completed without errors.\n   * @default false\n   */\n  ok: boolean;\n  /** @default 10 */\n  retries: number;\n  /** @default \"pending\" */\n  status: string;\n  /** @default SE */\n  country: string;\n}\n```\n\nA value that isn't valid JSON (the bare `@default SE` above) is taken verbatim as a string, but only when the property is string-typed — a plain `string`, a literal union, or an [open string union](#open-string-unions). On any other property type an unparsable value is ignored and no `default` keyword is emitted.\n\n### Open string unions\n\n`'a' | 'b' | (string & {})` — the idiom for \"these values, but any string is accepted\" — emits a two-member `anyOf`: the literals as an `enum`, plus a plain `string`. OpenAPI has no open-enum construct, so this is the closest honest shape:\n\n```ts\nexport type Country = 'SE' | 'NO' | 'DK' | (string & {});\n```\n\n```json\n{ \"anyOf\": [{ \"type\": \"string\", \"enum\": [\"SE\", \"NO\", \"DK\"] }, { \"type\": \"string\" }] }\n```\n\nA lone `string & {}` is a plain `string`.\n\n### Deriving a type with `Omit` / `Pick` / `Partial`\n\nA type whose shape is `Omit<Base, K>`, `Pick<Base, K>`, or `Partial<Base>` is expanded to the underlying members, including when `Base` carries a string index signature (`extends Record<string, …>`):\n\n```ts\nexport interface AccountSession extends Record<string, any> {\n  id: string;\n  active?: boolean;\n  identity?: object; // large field we don't want on the wire\n}\n\n// Expands to id / active (+ `additionalProperties: true` from the base),\n// with `identity` dropped — not collapsed to an empty object.\nexport interface IdentitySession extends Omit<AccountSession, 'identity'> {}\n```\n\nThis works around a TypeScript subtlety: `Omit<T, K>` desugars to `Pick<T, Exclude<keyof T, K>>`, and when `T` has an index signature `keyof T` widens to `string | number`, so the checker's view of the type loses every named member. The library recovers them from `Base`'s declaration. Notes:\n\n- `Pick<T, 'a' | 'b'>` maps over an explicit literal-key union, so — per TypeScript — it does **not** inherit `T`'s index signature; the result is a closed object (`additionalProperties: false`).\n- The `Omit`/`Pick` key argument must be string literals (`'a'` or `'a' | 'b'`); an aliased key type isn't resolved.\n- A derived interface may add its own properties on top of the `Omit`/`Pick`/`Partial`; those merge with the recovered members.\n\n### Sharing a type declared in a dependency\n\nOnly type declarations in your own project files are registered as named schemas under `#/components/schemas/`. A type imported from a dependency (anything under `node_modules/`) is expanded inline at every use site instead of becoming one shared `$ref` — walking a dependency's full `.d.ts` set is expensive, so it's skipped by default.\n\nTo surface a dependency's type as a shared component, name it from one of your project files. A named re-export works:\n\n```ts\n// types.ts (a project file)\nexport type { ActivityStatus } from 'bpmn-elements';\n```\n\nas does a local type alias:\n\n```ts\nexport type ActivityStatus = import('bpmn-elements').ActivityStatus;\n```\n\nEither way, `activityStatus` properties then emit `{ \"$ref\": \"#/components/schemas/ActivityStatus\" }` instead of an inline schema repeated across schemas.\n\nOnly named forms are read. A rename (`export { ActivityStatus as Status } from 'bpmn-elements'`) registers under the exported name (`Status`). Wildcard re-exports (`export * from 'bpmn-elements'`) are skipped — that would pull the dependency's entire type surface, the cost the `node_modules` boundary exists to avoid.\n\n## Using the CLI to pre-build `swagger.json`\n\n```bash\nnpx express-swagger <app-module> [options]\n```\n\n| Argument / option   | Description                                                                   | Default                                                            |\n| ------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------ |\n| `<app-module>`      | Path to the module that exports the Express app (or a factory returning one). | _required_                                                         |\n| `--export <name>`   | Named export to treat as the app or app factory (falls back to `default`).    | `setupApp`                                                         |\n| `--tsconfig <path>` | `tsconfig.json` to use for type extraction.                                   | nearest `tsconfig.json` walking up from the app module's directory |\n| `--out <path>`      | Where to write the resulting OpenAPI JSON.                                    | `swagger.json`                                                     |\n| `--minify`          | Write JSON on a single line without indentation.                              | indented with two spaces                                           |\n| `--help`            | Show usage.                                                                   |                                                                    |\n\n**Example** — produce `public/swagger.json` and serve it as a static file:\n\n```bash\nnpx express-swagger src/app.js --out public/swagger.json\n```\n\n```js\n// src/app.js\nimport express from 'express';\nimport path from 'node:path';\n\nexport function setupApp() {\n  const app = express();\n  app.use(express.json());\n  // ...annotated routes...\n  app.use(express.static(path.resolve('public')));\n  return app;\n}\n```\n\nThe static middleware then serves the pre-built doc at `/swagger.json` — no runtime type compilation cost.\n\n### Loading the generated `swagger.json` from your app\n\nIf you want to inline the doc into a handler (e.g. to feed Swagger UI / Scalar from the same process that serves the API), prefer dynamic `await import(...)` over a static top-of-module import:\n\n```js\n// src/routes/swagger.js — recommended\nimport { Router } from 'express';\n\nexport function swaggerRouter() {\n  const router = Router();\n  router.get('/swagger.json', async (_req, res) => {\n    const { default: doc } = await import('../../public/swagger.json', { with: { type: 'json' } });\n    res.json(doc);\n  });\n  return router;\n}\n```\n\nWhy dynamic import: a static `import doc from '../../public/swagger.json' with { type: 'json' }` is evaluated when the module is **loaded**, which is also when the CLI imports your app to walk its routes. If the JSON file doesn't exist yet (first build, CI cold cache, etc.) the static import fails before the CLI gets a chance to write it. The CLI does pre-create an empty placeholder to keep this case from breaking, but the loaded value is then stale `{}` until the process is restarted.\n\n`await import(...)` evaluates per-request, so each call reads whatever the on-disk file says — including the doc the CLI just wrote. Same applies to `JSON.parse(await readFile(path, 'utf8'))` if you want explicit FS semantics.\n\nIf you'd rather use a plain static import:\n\n```js\nimport doc from '../../public/swagger.json' with { type: 'json' };\n```\n\n…that's fine — just **commit `public/swagger.json` to the repo**. Then the file is guaranteed to exist at module-load time, both for the CLI's own walk and for `node` starting the server. Re-running the CLI overwrites the file in place, so the next server start picks up changes. This is the simplest pattern when the doc only changes alongside source changes (i.e., it's already part of code review).\n\n## Writing your own pre-build script\n\nFor more control than the CLI offers — multiple apps, custom doc shaping, pipeline integration — call `buildSwaggerDocument` directly:\n\n```javascript\n// build-swagger.js — wired against the example app that ships with this repo\nimport { writeFile } from 'node:fs/promises';\nimport { buildSwaggerDocument } from '@aller/express-swagger';\nimport { setupApp } from './example/index.js';\n\nconst doc = await buildSwaggerDocument(setupApp(), {\n  tsconfig: new URL('./example/tsconfig.json', import.meta.url),\n});\n\nawait writeFile('./example/public/swagger.json', JSON.stringify(doc, null, 2));\n```\n\n`buildSwaggerDocument(app, options)`:\n\n- `app` — an Express app with routes already registered.\n- `options.tsconfig` — `string | URL` pointing at a `tsconfig.json`. Optional; when omitted, the document ships without a `components.schemas` section and request / response bodies fall back to `{ type: 'object' }` stubs. The program only needs the files that register routes (including any `app.use('/prefix', …)` mounts) and the types they reference; `exclude` your server bootstrap and docs-UI wiring so their dependencies' declaration trees don't slow the build (the example app excludes `app.js` and `docs.js` for this reason).\n- `options.security` — `Record<string, OpenAPISecurityScheme>` to declare under `components.securitySchemes`. Each handler tagged with `@security <name>` references one of these keys. Conventional names — `bearerAuth` (`{ type: 'http', scheme: 'bearer' }`) and `basicAuth` (`{ type: 'http', scheme: 'basic' }`) — auto-emit a default scheme when referenced without an explicit declaration; explicit `options.security` entries always override the defaults.\n- `info.title` is read from the nearest `package.json` `description` (walking up from the tsconfig's directory), falling back to `\"API\"`. `info.version` defaults to `\"0.0.0\"`.\n- Returns `Promise<OpenAPIDocument>`.\n\n### Security example\n\nSchemes can be declared explicitly via `options.security`, or, for the conventional names below, auto-emitted from the JSDoc itself:\n\n| `@security` form                                 | Auto-emitted scheme                                                             |\n| ------------------------------------------------ | ------------------------------------------------------------------------------- |\n| `@security bearerAuth`                           | `{ type: 'http', scheme: 'bearer' }`                                            |\n| `@security basicAuth`                            | `{ type: 'http', scheme: 'basic' }`                                             |\n| `@security apiKey <header-name>`                 | `{ type: 'apiKey', in: 'header', name: '<header-name>' }`                       |\n| `@security openIdConnect <issuer-url> [scope …]` | `{ type: 'openIdConnect', openIdConnectUrl: '<issuer-url>' }` (scopes optional) |\n\nExplicit `options.security` always wins. Custom names that don't match an auto-default must be declared in `options.security`.\n\n**Explicit declaration:**\n\n```js\nconst doc = await buildSwaggerDocument(app, {\n  tsconfig,\n  security: {\n    bearer: { type: 'http', scheme: 'bearer' },\n  },\n});\n\napp.get(\n  '/me',\n  /**\n   * @param {import('express').Request} _req\n   * @param {import('express').Response<UserRecord>} res\n   * @security bearer\n   */\n  (_req, res) => res.json(currentUser)\n);\n```\n\n**Auto-emitted apiKey via the `@security apiKey <header>` shorthand** — no `options.security` entry needed:\n\n```js\napp.get(\n  '/users',\n  /**\n   * @param {import('express').Request} _req\n   * @param {import('express').Response<UserRecord[]>} res\n   * @security apiKey x-my-key-header\n   */\n  (_req, res) => res.json(users)\n);\n```\n\nThe above auto-registers `components.securitySchemes.apiKey = { type: 'apiKey', in: 'header', name: 'x-my-key-header' }` on the document and adds `security: [{ apiKey: [] }]` to the operation. Other operations can reference the same scheme by writing the bare `@security apiKey` (no header arg) — the first occurrence to provide a header name wins.\n\n**Auto-emitted OpenID Connect via `@security openIdConnect <issuer-url> [scope …]`:**\n\n```js\napp.get(\n  '/me',\n  /**\n   * @param {import('express').Request} _req\n   * @param {import('express').Response<UserRecord>} res\n   * @security openIdConnect https://issuer.example.com/.well-known/openid-configuration openid email\n   */\n  (_req, res) => res.json(currentUser)\n);\n```\n\nThe issuer URL is detected by its `https?://` prefix, so it's optional — omit it (`@security openIdConnect openid email`) when the scheme is already declared via `options.security` and you only want to attach scopes. With the URL present, the library auto-registers `components.securitySchemes.openIdConnect = { type: 'openIdConnect', openIdConnectUrl: '<url>' }`. Per-op security carries any trailing scope tokens: `security: [{ openIdConnect: ['openid', 'email'] }]`.\n\n## Serving on demand\n\nFor dev workflows where you don't want a build step, expose a route that builds the doc each time it's hit:\n\n```js\nimport { buildSwaggerDocument } from '@aller/express-swagger';\n\napp.get('/swagger/live', async (_req, res) => {\n  const doc = await buildSwaggerDocument(app, { tsconfig: TSCONFIG_PATH });\n  res.json(doc);\n});\n```\n\nEach request re-runs the TypeScript compile — fine for local development, not recommended for production traffic.\n\n## Smallest working example\n\nA self-contained smoke test of `buildSwaggerDocument` — instantiate an Express app, register a route, build the doc, and assert on the result. No tsconfig is passed, so the doc ships without `components.schemas` and request/response bodies fall back to `{ type: 'object' }` stubs:\n\n```javascript\nimport express from 'express';\nimport { strict as assert } from 'node:assert';\n\nimport { buildSwaggerDocument } from '@aller/express-swagger';\n\nconst app = express();\napp.get('/hello', (_req, res) => res.json({ greeting: 'hi' }));\n\nconst doc = await buildSwaggerDocument(app);\n\nassert.equal(doc.openapi, '3.0.0');\nassert.ok(doc.paths['/hello'].get.responses['200'], 'expected a 200 response on GET /hello');\n```\n\nThe block above is executed in CI via [`texample`](https://www.npmjs.com/package/texample) (`npm run example:check`) — any drift in the public API surface trips the assertions.\n\n## Debug\n\nEnable [`debug`](https://www.npmjs.com/package/debug) logging under the namespace `aller-express-swagger`:\n\n```bash\nDEBUG=aller-express-swagger* npx express-swagger src/app.js\n```\n","readmeFilename":"README.md"}