{"_id":"nestjs-docfy","_rev":"41-8d4f01c6f0b31dc172fe83cc6188810a","name":"nestjs-docfy","dist-tags":{"latest":"0.18.1"},"versions":{"0.1.0":{"name":"nestjs-docfy","version":"0.1.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.1.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"dist":{"shasum":"3c4e5aa5ced4135d443af52216a07c23b5f0a745","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.1.0.tgz","fileCount":23,"integrity":"sha512-YrxNhQZDQenOjL1JxrRCp90buBV//c8kC1lU4swIk56tDQhVag8gWJt2QVkfzN0vkU8hHn75BXH7dpng4qyTHg==","signatures":[{"sig":"MEUCIQDMuqP4gvMZbgAjtXHZt/yEi5wW0J4NfU4fcBUg2rsSrgIgCJddgr5zTWrFf3bkpt1WwhHl+nLQTsSsKIug+T7LZWc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31369},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"b06d27e5a3bffa0aeef6da0e7bb992229dfda713","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.9.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.1.0_1780849572886_0.15000596119030551","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"nestjs-docfy","version":"0.1.2","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.1.2","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"dist":{"shasum":"052e736968d3799fc25b1943adb36f9e4fb30bad","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.1.2.tgz","fileCount":23,"integrity":"sha512-/LAevfzwmhxGkCfrD9Xi39j87zJMG+Np4ekjfVJNoMlb7Id3XH/BQUqSO4Pigru5/MKW9g2nMEJOolXzHWhvbQ==","signatures":[{"sig":"MEYCIQD4c2Hm3Gc8WbzWcC81SVfuQbfsUpfPLsaX3/G7c4YRfwIhAIHNfKJuzl1/48C84EErup3jFXlkmO7EyK4lT+OXd32x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33320},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"bd47c29ddd71ff344bda321082185eafd92bbafb","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.9.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.1.2_1780855089040_0.14646284999910808","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"nestjs-docfy","version":"0.1.3","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.1.3","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"dist":{"shasum":"141efb3e284506c4604b1b70c908e78d38b6049d","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.1.3.tgz","fileCount":23,"integrity":"sha512-pZhdpwIrT0PZcKyYdPuQN++SW6GoAUfEdGNla85jfLEphIAs6Bc83iNvJBGhKN3tslJSzOdwa0AEf8LMURF1iA==","signatures":[{"sig":"MEQCIG7Ua+lY+LF/LiNaDJ1cj7Iaio9xni3WHAYKp7QHErivAiA1+kEVZat2J/WgIkfXt9eJIefgGJ/aXBCN0rG5uji5wg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33320},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"bdafa09a55ab7e66cc8254af5d613e04cf822103","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.9.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.1.3_1780863298779_0.5622699305111023","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"nestjs-docfy","version":"0.2.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.2.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"54f7ba5d587f19ede4eb10780391dc77d4730af1","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.2.0.tgz","fileCount":59,"integrity":"sha512-2iwtSbh58QjO8mEc608FS2QN3vggOD8sEVH5NDpLpywlVF4+3hCbDS0E3WxyZqQdxwZLc59aGeUrBP4LiStqFw==","signatures":[{"sig":"MEUCIFoVfG//mtQEgM2VDgAsD2p1GMNP96kApQDSnW5lTgBAAiEA91ATsLZTiDCBPLj7Hl6+2ESh/lNyvmejSAy5wZkqoQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132125},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"992bcbc60ffa8743f022485dd60933c2ddceafcc","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.9.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.2.0_1780957716224_0.531259484007556","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"nestjs-docfy","version":"0.2.1","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.2.1","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"e2c7ccf3f8aa5365a450cc6a4c7e2d4616a878f1","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.2.1.tgz","fileCount":59,"integrity":"sha512-B1DNKTDZSQnAwN+E0QdCGyBTdsUifQrr1uzaLb5mTm+n4UQk1Xg6qUSkMYH6e+oC46ctv36lfEdJqNb1zmX2dg==","signatures":[{"sig":"MEUCIEKNk25m2mHQdqpFsDzKtTwstFJnWqgqUsznyLm7JOBsAiEA8t83IhxEeUoVPSRyGKd5NNPhz+1Nixu2W8IUXoi0+SU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133009},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"021b3b3a3534ed1e4261d372dcc33a948e2520a1","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.9.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.2.1_1780958691809_0.6481226171412893","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"nestjs-docfy","version":"0.2.2","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.2.2","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"33b566caedcd5ce283f27892f54e16b3f56c9419","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.2.2.tgz","fileCount":59,"integrity":"sha512-8b+yduzrJ2RZZI9uYyp4j1mPn9QrJFQjpSJJkxX6ZszC21wOy4C/jivkncy018s65RAQoPiV+5QlEP+R1xl0Wg==","signatures":[{"sig":"MEUCIQCHZHLinTimguh8zT7uHaz9bq6ZfWrNU3UzCvOIPKZ96QIgNnke73SnGaTSCMcyocvhd6Ek1MK5nv7VSml3KOEYtOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142033},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"136588539e3f43ee12a8643d8ed3c487c2746a77","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.9.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.2.2_1780959598222_0.6255942230214504","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"nestjs-docfy","version":"0.2.3","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.2.3","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"b2d49b7eee46e12ab93ac7ccd14d9dc93efc1d56","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.2.3.tgz","fileCount":62,"integrity":"sha512-4xPQKlP+lTnFr4/P1HZnPXDxzKB1pVphcr8rSu2fCcxtF/FTczEtN1G0wuf6zcoB4HtcT4XCKUsQw6TFXfzcLg==","signatures":[{"sig":"MEUCIFrS12QsJiCCeSWl/RU7jgfR5uipz+hfgDhA7EgOr/UuAiEAmMuPUre2+oZZATB7sl+8egeJOHtYPGsP7bjvans65TU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165696},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"e4d1ca1d3f9da22fffe4d41ac391d7dfc09eed73","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.9.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.2.3_1780961265776_0.6384914004826128","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"nestjs-docfy","version":"0.2.4","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.2.4","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"fe8b171a19d847818c93ed2b250fa976c817869e","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.2.4.tgz","fileCount":62,"integrity":"sha512-fxDsCR4FZbGjZ5TPmAEXifIHnisvngwTwKbpzj2Sf1BytT+2ynMiC6k27Ri4O0ZWyzpoikYUU4PeED/MecH1WQ==","signatures":[{"sig":"MEQCIESSN95nXz/ZnR4sMDHS5/Sgj3zea+xYWRkrVmxz16TzAiAcN0j8Vph0GTm/+sHFYqSGvGLlS0Wj/p5zcGD+qP719w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179337},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"b23025068c88b3fc444596e1cf5baeac7c92cb34","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.9.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.2.4_1780962674657_0.8667149740600821","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"nestjs-docfy","version":"0.2.6","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.2.6","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"edadc6fc494ef0245f29875f1d8c0c2b9d4d9f90","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.2.6.tgz","fileCount":62,"integrity":"sha512-ezl847dBoGcFsod/IqK9lPTmThX2/hiFi5+cwzPOFqobjP+wG61QHkDcX5rFYP4bsKbrSpCYt2NsTQlb0SG2DQ==","signatures":[{"sig":"MEUCIQCs7mbCKiEwYhBi7lif0v/r4o18g5GdjXa+7xbpwf/a+gIgQIZSYTxxFNzVXjhTEXQ9a25sYo+JPj20TZOnsxSZ3qs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181084},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"b71808c3857052458a0013cf7f58fed6879621b5","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.9.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.2.6_1781041133851_0.5415649636730049","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"nestjs-docfy","version":"0.2.7","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.2.7","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"a4047f7a82eb576037a37ec0bd6c0abe02a83052","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.2.7.tgz","fileCount":62,"integrity":"sha512-xl/s8IfMooyGZTlV3CeYK63Vjd85igCZKX5Lf5qqh7O5ErsaEBTtiwJXuLca1UHqv/SsYl8wmwazLppVAerjCg==","signatures":[{"sig":"MEUCID2UH4uchiSE06BHWIWXVAiUzz63954FcemVDdeJEfiXAiEA/Q5gio8Jg3VPc3ZTl4kumfC3VTUeZ/7mRw7enG3OxJM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182186},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"e0c24ebe5b28156ccc04f51d0328fa008d4799ff","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.9.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.2.7_1781050920498_0.5345247060667264","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"nestjs-docfy","version":"0.2.8","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.2.8","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"8e2607ad7e414afb9d27eee4707ad09517a2823d","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.2.8.tgz","fileCount":65,"integrity":"sha512-1pthBDwLh8w87qkdLTc2AMv0iP2qZgNfh4Guc8tsDfZrwrSGkLWJlvWBQRjv1I+UGZzGzFzGYfIaFD1s+eUVnQ==","signatures":[{"sig":"MEUCIQDDMN/KnYSjCUlZdK1A1HcibGkfINJY23gDI7Zye63w0gIgF+3rxIHg5LksgwHiII8FcKaVd/g6txIY7JembVLK1x8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213671},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"c004dc68c33d1bb1be824675c9d71e644261aa5f","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.9.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.2.8_1781061169955_0.22696827481881487","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"nestjs-docfy","version":"0.3.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.3.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"ef0712bbd5422a56ec6ff4a922922fb697a4f60c","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.3.0.tgz","fileCount":101,"integrity":"sha512-SOmcmmPmD5Kp/IitSMH877W4NpFbm4l76QbGEequNl8VpB3OMqSEj0Gpm12YEdKa8er/vMNuLw2Ljj+Dt4+0Ow==","signatures":[{"sig":"MEUCIBBudwskDANX4FUIFGIloZ7fRF+NEP4Nxn1LuF0oQ9x8AiEAzCaIdohAiahuavltkcbtGm3aGvyy1rJ1ajCguK5qubk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":357681},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"172e16cc56914440a4378bced778e301a7ca7d84","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.9.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"24.14.0","dependencies":{"express":"^5.0.0","docfy-ui":"^0.0.1","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.3.0_1781750523932_0.41422204234443827","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"nestjs-docfy","version":"0.3.1","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.3.1","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"4a039797c8a278bb73f0bcdf08868516b190ac50","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.3.1.tgz","fileCount":101,"integrity":"sha512-Gi6MKoZkARBjtZAGLNebXvmKZCC46lRgpyVU1Tm38MEQ7/Sjm+4olgCfaIOrLPtv+UcHFpY6E3tL18EtrRZWNA==","signatures":[{"sig":"MEQCIDkbY4nO3GMQTKLvCu9ozk0xzdu64eYfZuRlcGVSMW2gAiBW+cchh+3HohvMboNuQlh9g1+Kb5u+YH7alTLg/6F9lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358389},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"8c93ee56e93c1c49253d3ce0462d0d93f6db7308","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"10.9.8","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0","docfy-ui":"^0.0.1","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.3.1_1781755987959_0.6885057047767427","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"nestjs-docfy","version":"0.3.2","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.3.2","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"086044e1a741bb1f911ca9ce2fe75266379c1329","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.3.2.tgz","fileCount":101,"integrity":"sha512-96+0uup27irP1fHMRgDiOjDLeXvloQwrhYsWzqO6FjJTAjBCgcPPO3VedU3/xZrdz+WdEAmKc81kXDCGZDJ8Rw==","signatures":[{"sig":"MEYCIQCBtpfGP89GMJGprPofl+RLmtvrmHiqmsoPkGb+DveHeQIhALGdQfNdqXiRr8ObA1OAPTOfV/7N/6pxwtu0cmB8kL61","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358389},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"d76099f5a7d7def47b3f7ee5bb54d3f7b898ea8a","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"10.9.8","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0","docfy-ui":"^0.0.1","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.3.2_1781756137502_0.9687885698729146","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"nestjs-docfy","version":"0.3.3","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.3.3","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"e58c9bb1e430be2479aa147af2bf7374d5c0e57c","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.3.3.tgz","fileCount":101,"integrity":"sha512-PugL5DS/78xvWApfiDV9YUOdJIHy+KpjxxRLxtqYqIz8LWeTi7XojtWHEJgU1zFyCmrDeyVp4oZe3qbUo1jztg==","signatures":[{"sig":"MEUCIQCjXFWuRfrFJ5jTW1I5jwUbeJTPzJ9FPcQLerhxkZvAlAIgekIAYXaZKbVoYR3DeFibNaZWjMgSFAvnXett5CMKJLQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358389},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"e422684408fc7022d7b403d6503c39a41b29a1c6","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"10.9.8","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0","docfy-ui":"^0.0.3","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.3.3_1781757301143_0.852024556674507","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"nestjs-docfy","version":"0.3.4","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.3.4","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"47727698145219c24398d0086b6b53dcf30255fa","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.3.4.tgz","fileCount":101,"integrity":"sha512-Bwbo+22ARc8U+JcVko6g4Mxe3QtSk399a+nqc9Jri3YygFek8pmb+iFA+ciofceQPcz2ANE03yXEa9NKjILWvw==","signatures":[{"sig":"MEUCIEgxVvQkH8jMRDIdO8VYiaQknmPUmi9KVIzbsqz43aNoAiEAopMCIEn4akCHgn3jwVRh6sEcGloVcZwlvyCfQ26nEXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358389},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"4fd1710134c3eabd293654509153c0062105409b","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"10.9.8","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0","docfy-ui":"^0.0.4","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.3.4_1781823112969_0.3567233597844168","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"nestjs-docfy","version":"0.3.5","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.3.5","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"6c0e247a85a3319ff00f03544eb418bb8826b0a8","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.3.5.tgz","fileCount":101,"integrity":"sha512-dCbQq4oaBdSpG26BaRGFC80c8zhJYB5Sgmua6oQS7Q5YnJ0+hO0Hl8dckLK+6iSxnLOTGU51BPyy49d/C0JIow==","signatures":[{"sig":"MEQCIBNfxoUcYS486fOsPwxWr3mLiDYCp0+TulcpxjI1XMkjAiBHhbGrpw1fhdbsO7c18NhgwQz7oKFleqOVxfh408muaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":359201},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js"}},"gitHead":"9d03e943ca476afa8d46ae759b4c96986c40f2cb","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"10.9.8","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0","docfy-ui":"^0.0.5","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.3.5_1781841584309_0.0794678494109573","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"nestjs-docfy","version":"0.3.6","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.3.6","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"d49f071e6704df0f6df3e18c5192c3b51419542a","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.3.6.tgz","fileCount":101,"integrity":"sha512-78jwZuGifDPxdIzNMoY0gKoNRgSS1Z3xQ55rgUSMhWplwW3qqfDWds/rb8amC4imc1gUfkb0NyxYHfiJijIJ7g==","signatures":[{"sig":"MEQCIA2Oy4OhgowfkaNhQ8YZsiiYOvrFLIV3CbQx36GJGYjwAiBtbIhldrH0zoYem2gk/DFdPVYFHpwxPN6nA5Xo2IYrug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":359275},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"e99853e5fd638b6e446df41aa5a6c0f09c039a42","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"10.9.8","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.0.5","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.3.6_1784497693543_0.580399852053451","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"nestjs-docfy","version":"0.4.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.4.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"d8466550b6d91333b666f780abecb067ec487ea8","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.4.0.tgz","fileCount":101,"integrity":"sha512-ExXsIpyCoMhWEi4l5EdEER/pUzTk8WzpyTNPYV/u1j3AjC2f2EWExCDeusfKAghf3g0hD9N56Blkx4IPGVt7CA==","signatures":[{"sig":"MEUCIQD3jU+jAXZpWeWY1cavkwutpjEB0N1E62Q6BhTJNGStIAIgYLccU8VwkDCCZZFSNZw8gJJQMhlBCJV5Avb8InvDYI0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":363507},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"7915306d64183072fdd3207dacd8055ade409d9c","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"10.9.8","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.0.5","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","fastify":"^5.10.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","@nestjs/platform-fastify":"^11.1.28"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.4.0_1784778696500_0.2866379014628584","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"nestjs-docfy","version":"1.0.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@1.0.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"c91bf35033ad089ec5689dff1f5d5a4cdc3c8919","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-1.0.0.tgz","fileCount":108,"integrity":"sha512-W5PhdObX7rfSylfQ55wjvbCcTYR8yaIhnzC3OSI0FRbg4OsLU4M/pCYxqoloIdLpnPBQ1jb9nFY2Q+IBJEDWsg==","signatures":[{"sig":"MEYCIQD6eOpOJcGNlqvikzd8cgR9QiRCzeYXpTuEauXXHXleAQIhANiLSWP5s0Yl8w8WGtOJ1zrN6zRKj/+UQP0fvA7ECPFL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":404538},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"f43534212f40dee8ac454db856c245a4b9c38d8d","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"deprecated":"Published in error due to a CI checkout bug (missing fetch-tags caused semantic-release to treat it as an initial release); use ^0.5.0 instead.","repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.0.5","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_1.0.0_1785023207596_0.3888811563340877","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"nestjs-docfy","version":"0.5.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.5.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"aca6d91ecaffa1751061aadf5185e05ee88c44e4","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.5.0.tgz","fileCount":111,"integrity":"sha512-uRWWIt7NpBvYh6n/XsXoI0n+5wVyAScDNRSNzeHDvNzh1oF00UozjA/JaEFAtQiqA7FlVw6QRe9q0lSgq/mlww==","signatures":[{"sig":"MEUCIQDdRYIgA0bDG1OIsAZnqZYVgi7jfrzBaG8kouhgJsZGagIgUxuGS6fDzk2k+cEeLr47RgNvm6uYJVOpGgWcSTPTtfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":413757},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"9ce6b5586d994c3475b7d060bd174d73a4cf94a2","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"10.9.8","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.0.5","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.5.0_1785028669564_0.8681973906979166","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"nestjs-docfy","version":"0.6.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.6.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"437a1792d14178934077950b6cf29c8f90dacc7a","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.6.0.tgz","fileCount":117,"integrity":"sha512-5lN/Ey9qmHlUDEDfSA27XAcn04OOHAfCHgiyMWpzk8F4/B/+4GSwWcC0hg20hS5AvJKjI9DXZRCNrfAPPojORA==","signatures":[{"sig":"MEUCICzed8T838A1JM+Ku5GSL3cqTq7H38O7WfTM0GobnDe0AiEAlfkGQ6yXpEw+LZog4aLEfppIYfxaSlyheW4CLgPloUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":433918},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"6e74c9d1dcefd9a2770a4db9d195125212650ab6","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.1.0","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.6.0_1785042737646_0.3400506508941703","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"nestjs-docfy","version":"0.6.1","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.6.1","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"b9046479cb6e9d5c15d78862940f49192794fce7","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.6.1.tgz","fileCount":117,"integrity":"sha512-Cg1vNafiqETWKBvxN7FPa9UIsQNiTHMFNSuR0Iu+1+L1O0XpGhtCW7klnVGjIPQ3F2t3sbUl2wK/AgOfLOoK9g==","signatures":[{"sig":"MEQCIHhRyGbUcxYMdeMnO3Dx/SP9IMxlEJSMO/JS6EtjRoSPAiANuIKznGQBX4EPJ+FFbRs+wLf8CASGo/8qsSRVdWOXZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436863},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"feedaff6f0183f35855991e26512c3544c6d962e","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.1.0","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.6.1_1785283684620_0.778280772240886","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"nestjs-docfy","version":"0.6.2","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.6.2","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"04b338aa758b61c52648623c6f92da7defcefa49","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.6.2.tgz","fileCount":117,"integrity":"sha512-h2a+X7wT7KjhpIOza12oAYLSdHxy41hRFrs6YeEvt030lItv3lovalH+CzAUi1FB319t18h8QRfn6VISDAilFw==","signatures":[{"sig":"MEUCIHnswMsBV9CGcF3gsOAGkkwYRAxvLIUktAzdu19gEU0xAiEAnFf+NDcYMmTdejB1f4ienKaaG0F452kzyPHvot3PIsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436863},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"1c7d38cfb963822d78c63ba08a5485d0fe071fe4","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.3.0","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.6.2_1785286277365_0.4327581140902763","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"nestjs-docfy","version":"0.6.3","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.6.3","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"8b2db39b1c6323fe851430c87ecab4658c89977a","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.6.3.tgz","fileCount":117,"integrity":"sha512-M4PGWRqv8S0gzIIh4Kvxst8Z5qr5jjt6ULDwz02pO7X/OQP1nOGk3XwEZ+lwGEVgF5TvuVorlWWLYi2ppzFEQg==","signatures":[{"sig":"MEUCIQC93y0mmNmwEjHCXq2ZS0r6cZg/e/WNDkzC8iXNlMbQIwIgfHCdd3z3907rrfZjyQKaeLMy4Afv6RBcagHojfztOHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":437840},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"f28cc538efba83463d3e39382aa2167e95bd1717","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.3.0","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.6.3_1785287350794_0.2914461749298025","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"nestjs-docfy","version":"0.7.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.7.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"2d0bca70b6d8e4495eb1374520dce665bb3b0f92","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.7.0.tgz","fileCount":123,"integrity":"sha512-obJbJHbJmNYyixDdGPX2cScnkZKWzrjLEUKwvGXuUzGVX7ZiXrh7Z+3L+qccaRLvAVj8QssXy/dcM6FpvAgT6Q==","signatures":[{"sig":"MEUCICAq458eTLoD5KiKskr/Rb0qCB/z7SCUKTAhg5VATokYAiEA2UtNYq6rDwRniXmcEi6XlXiJtrmg4xzu9pRXZ7hBYNE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":458478},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"ac25a51fe3492dc2abd64bea8e53c9491868ab53","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.3.0","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.7.0_1785288480046_0.05014043573151006","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"nestjs-docfy","version":"0.8.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.8.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"10c613c4d03bbe04a00bd79fcffe70064501f4d8","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.8.0.tgz","fileCount":126,"integrity":"sha512-nU9QWutkKaDPfVankA2hqq0+fo7iwV+CTLfIiSGDYjaEHce+DVdExsm8I2s2KYsimE42UtrK+P5CIub0AcWDyA==","signatures":[{"sig":"MEQCIE9zaY27eLOeHb0Sul9/TGP6b9ffA4ofoD+rpWV2nQBKAiAQigsondKO6g6x5hoy1q1gMoku7t86FH5EWuTi985jIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":478258},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"00134502b44182db9eac06805948c1591216a7d9","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.4.0","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.8.0_1785362296004_0.553312537478764","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"nestjs-docfy","version":"0.9.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.9.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"9591802226caf646bbd48ad1c5561d302ad1acca","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.9.0.tgz","fileCount":129,"integrity":"sha512-+87sM1uTYgPZutWRYy+Ys0NaWIsGAc747hPqHmhoIJyahlPIWYOhpQq5+HCmFdzglkAfGHKaA7w1HMXEJaNfyA==","signatures":[{"sig":"MEYCIQD61dDzh65cqyp3GFPe55rwoJ3+O6Oq2AMCnLj6j2R1fAIhAMkAtaAWF4wwjOV3pG3GvvCgDC9KgTgThgbxBrBYddCg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":489952},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"f47fe8d42a4dd805d89aca0e10ee510a77cfde90","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"10.9.8","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.5.0","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.9.0_1785372889645_0.027232012950437756","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"nestjs-docfy","version":"0.9.1","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.9.1","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"6632d7d54e5b23ebcccc8441ebb5f6aadf6fc3b4","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.9.1.tgz","fileCount":129,"integrity":"sha512-3up3gTRBpRlPr5Z03661cU06j8gqLeqXwwG4AmoHfJz9DYSS1J0eSD6GXHRCQHFdjJ8qJHa0AsBtslHRe89pLw==","signatures":[{"sig":"MEUCIBYbhK5H0OVMPGemGAogyIwqxc8/aWZvvsiJ3t7y9MUqAiEA9i0V/pmhG9lCOvgJFnIna2nUGVCeSsL1rKNksiVzSHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":484821},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"ea5626a67267ecc067f3b920f906e38e053c8895","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.5.0","ts-morph":"^28.0.0","commander":"^15.0.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.9.1_1785376446715_0.8765693002255306","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"nestjs-docfy","version":"0.10.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.10.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"f3bb98d477166910dda30c00be40b51091c14791","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.10.0.tgz","fileCount":129,"integrity":"sha512-u71FjQme+dVVkyHZJFsIbwZLGr00Sx1rsDV/qeh3dcLi6VSxEbhHB1GxpzK7Lgb0TzMJcQsJI/XwzAcWAbxJIw==","signatures":[{"sig":"MEUCIQC/hbDsSSoCwi99SIILQpykxDsi8hSIOtO4Tlwrlzuf2gIgY8TpgjWxwha98HTfUVRlEHTt1DJLuSO101qJB6PkuTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":487084},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"d15ddd91bbff3912dcb3bb6e27ff4b223a835798","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.5.1","ts-morph":"^28.0.0","commander":"^14.0.3","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","docfy-core":"^0.3.0","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.10.0_1785449841455_0.06776516799664556","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"nestjs-docfy","version":"0.11.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.11.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"eeea96cd82918be611bddc62962de613bfd5fee2","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.11.0.tgz","fileCount":135,"integrity":"sha512-f6GqqLu8N0q2pNnyARdX35TD2H5ldKkYtrh4kP18FZHLeOVxwXqXUEXXzSBVUV6Y2aMo8Pswub74H15aL3yCiw==","signatures":[{"sig":"MEUCIHFthIIK+JXqwjnGrSj2HuwQKWK/RjAUCAsZQgl/NUlHAiEAnSLzdVs1BKloZMq5nYd0OGmHp6Z/1spb2nSX+2gGxAo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":527908},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"f603382494ba4f11fc0ff86fe2cb33170206f443","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.6.0","ts-morph":"^28.0.0","commander":"^14.0.3","docfy-core":"^0.4.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.11.0_1785459308834_0.40055603225658976","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"nestjs-docfy","version":"0.12.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.12.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"cfc949c02746ca35a8b1fd9fc9b5505d9bffab01","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.12.0.tgz","fileCount":135,"integrity":"sha512-4iW4upUCyEqS5dvDJpobVtrM/HWr2bt5Cjdi3ZBBaiVnzgJt6XMpewyiWhfNCp/sQvDyONtCnp7nqtXswWW1EQ==","signatures":[{"sig":"MEUCIBRwZB3Wzt2ncq3+r+oLAYLRHWRcJmNNMJXRm6/YFSnqAiEA82u8gyWslCtZpcwPs1bHEz64wmZiaerRM8ymPri+5Z0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":537972},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"df08c3b4bcf009844bc205fd0919caed3179d004","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.7.0","ts-morph":"^28.0.0","commander":"^14.0.3","docfy-core":"^0.5.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.12.0_1785503671017_0.43833600012687524","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"nestjs-docfy","version":"0.13.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.13.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"b72a506f53bc7f3ac9b894aa7991d26836ae9596","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.13.0.tgz","fileCount":138,"integrity":"sha512-RExNV/hbNv122yyC9wJVFcNosdvtwh0qa7jih5piEXKr1MUvtTN3welaNMT55hDymbWfPlD+cVoxzccRHqQt3g==","signatures":[{"sig":"MEYCIQCH7bOVdwVtNnYrTbp3NOxT791hSaQ3Hv1Pd+KV7POjeQIhAL/qvSXvnn+/3Vwf3VEcOC2jNiUJJuYEVGX6Bp1DVWZW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":549568},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"09203751f7d7b1ae1637cd8a546ae17b83da66d4","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.7.0","ts-morph":"^28.0.0","commander":"^14.0.3","docfy-core":"^0.5.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.13.0_1785516997139_0.8655882781878281","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"nestjs-docfy","version":"0.14.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.14.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"7184d469ec6a98639de47b1d153064546e0d2f94","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.14.0.tgz","fileCount":141,"integrity":"sha512-tx5g09Kf8YGOoKql9Htc1vE6Swh4wgSetkdX2a/Wb6kofb8bsXjBtXJFsJExYi2SzkyWHVknS3343gReEZtiZQ==","signatures":[{"sig":"MEQCIDGPd7/nj095h0sdYM9x6qmZmDAtQ+ED1lPgboF0ORIsAiBGgd7QlGYey0PpTc1oDm/JDOTrsPKOAELaBcJv7+bphA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":558807},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"01dec583f9767a6b0be9124ed074f1571b16ca1e","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.8.0","ts-morph":"^28.0.0","commander":"^14.0.3","docfy-core":"^0.5.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.14.0_1785586961917_0.18076869394193396","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"nestjs-docfy","version":"0.15.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.15.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"1fbf4effcf51a501d30003d3ef77dd144656953a","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.15.0.tgz","fileCount":150,"integrity":"sha512-09bLtInUslRRb259jR+ftzamAT/TGDKW9eMT8nZksrce3TQc9ASmecb5Pi3E7jpuyNCncY8VWD5g6Q+TCiwAXw==","signatures":[{"sig":"MEUCICmlTTL9Zeu7cwtC03n58yWZDlVAhHBImWvbg51V6PEgAiEAvnAq/LL9qZyHVIEspgz2xiPnBDIIjtYSRE5jyWPdeQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":588719},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"fe7a8ffcebecf3590150fd3b3320c9e624329855","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.8.0","ts-morph":"^28.0.0","commander":"^14.0.3","docfy-core":"^0.5.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.15.0_1785595723277_0.8774191222045171","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"nestjs-docfy","version":"0.16.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.16.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"38c8950f2591540b252f54771d47dc3540a1b7ab","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.16.0.tgz","fileCount":150,"integrity":"sha512-01aa5EhGmsrMoBIHy+im3QjXF3ADq5A8thTYFnLvvc0L5ajWclzSn3cU2bIGJUwaocQt97/1L7ytHBH/sSjVEg==","signatures":[{"sig":"MEUCIEINdP/U00cpEPDXAaOYqwQt8Whwd6pxbm+H0h+ZgGl0AiEA7MK38IRkCjixNP3ApcY58x5O1Slumf/UWEavpIEADik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":605372},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"b7a6a9787531dbf6af1cfb1081124f115e3f3594","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.8.0","ts-morph":"^28.0.0","commander":"^14.0.3","docfy-core":"^0.5.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.16.0_1785773232786_0.18612853017001196","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"nestjs-docfy","version":"0.16.1","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.16.1","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"6164904b1cf41dae6ec8b5f2856b7e91851b7e7d","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.16.1.tgz","fileCount":150,"integrity":"sha512-ijh+qtAFJLcE/heOJdc45IsI+ltACMkb63zVvW/2OSSxpX66ec/cisKUUCBdA5oU3zENnhBj8zDiJ/mL68l26Q==","signatures":[{"sig":"MEYCIQD7aWjFUNkNZWKpx3sgz27RAm+05R6oenpN6h9/KsmE2AIhAIxyqZ/hg5HnpmbDW4SFMRaQf/lIVQYIpAu2Hb/B2ZO5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":610225},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"2b3808c94b516449cf994d087dcdca1fb4224c4a","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.8.0","ts-morph":"^28.0.0","commander":"^14.0.3","docfy-core":"^0.5.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.16.1_1785775422150_0.1484436833104703","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"nestjs-docfy","version":"0.17.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.17.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"c78f8d0d69041b66fded95f6144f4e5c9aef7513","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.17.0.tgz","fileCount":150,"integrity":"sha512-oj9y2CEHF8cu8bhtE+TU4sBZlLia4+cfuRGtetCIjIYiCj0zsN/HnwPEgA+2Ar/aTEFdn1qvMik/7GILvOUvAA==","signatures":[{"sig":"MEQCIHPNT0AcZp8duOFzCmnKy/UQ9WUATlv6zVy5oVBHxCJpAiAVm8GxHml54uoAJf4+tarRaAnBHExZsNs4MK8HXyBYyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":620122},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"276084418f8cd09ddccda15671c00eeb30aacf1e","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.18.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.8.0","ts-morph":"^28.0.0","commander":"^14.0.3","docfy-core":"^0.6.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.17.0_1786030795423_0.2595841542872446","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"nestjs-docfy","version":"0.18.0","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"license":"MIT","_id":"nestjs-docfy@0.18.0","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"bin":{"nestjs-docfy":"dist/cli/index.js"},"dist":{"shasum":"de15bd9807d00c85a3aed6947ff8b0bde6b31cf7","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.18.0.tgz","fileCount":150,"integrity":"sha512-CblPrUx0K7MZcWW/ZzpvUlUnIvBhBLO2KgGN5bGAV0+bBRba2iW1G29mPAvRLT8pRmXsZoBZnXfJw3+j06wmRQ==","signatures":[{"sig":"MEYCIQCnvgyl0TsWEtf9Bl6D+dPY6XZhZdYF2lJNTb+vknbPsQIhAMprLi0whx4p0qu6NRIQG0PjtRQrZPhu/ck6S96fyo37","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nestjs-docfy@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":628506},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","default":"./dist/plugin/index.js","require":"./dist/plugin/index.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js","require":"./dist/testing.js"}},"gitHead":"37540230bc1085391fd99de809cd17978a4444d1","scripts":{"lint":"eslint .","test":"jest","build":"tsc -p tsconfig.build.json","format":"prettier --write .","release":"semantic-release","lint:fix":"eslint . --fix","test:cov":"jest --coverage","test:watch":"jest --watch","build:watch":"tsc -p tsconfig.build.json --watch","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"overrides":{"js-yaml":"^4.3.1","swagger-ui-dist":"5.17.14"},"repository":{"url":"git+https://github.com/MarvinRF/nest-docfy.git","type":"git"},"_npmVersion":"11.19.0","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0","docfy-ui":"^0.8.0","ts-morph":"^28.0.0","commander":"^14.0.3","docfy-core":"^0.6.0","picocolors":"^1.1.1","source-map":"^0.6.1","openapi-typescript":"^7.13.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^10.8.0","fastify":"^5.10.0","globals":"^17.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@types/express":"^5.0.0","@fastify/static":"^9.3.0","@nestjs/swagger":"^11.0.0","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@semantic-release/git":"^11.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@nestjs/platform-fastify":"^11.1.28","@semantic-release/changelog":"^7.0.0"},"peerDependencies":{"@nestjs/common":">=9.0.0","@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nestjs-docfy_0.18.0_1786140390646_0.010646477190011883","host":"s3://npm-registry-packages-npm-production"}},"0.18.1":{"name":"nestjs-docfy","version":"0.18.1","description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js","default":"./dist/index.js"},"./testing":{"types":"./dist/testing.d.ts","require":"./dist/testing.js","default":"./dist/testing.js"},"./plugin":{"types":"./dist/plugin/index.d.ts","require":"./dist/plugin/index.js","default":"./dist/plugin/index.js"}},"bin":{"nestjs-docfy":"dist/cli/index.js"},"engines":{"node":">=16.0.0"},"scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","test":"jest","test:watch":"jest --watch","test:cov":"jest --coverage","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write .","format:check":"prettier --check .","prepublishOnly":"npm run build","release":"semantic-release"},"keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"author":{"name":"Marvin Rocha"},"repository":{"type":"git","url":"git+https://github.com/MarvinRF/nest-docfy.git"},"homepage":"https://github.com/MarvinRF/nest-docfy#readme","bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"license":"MIT","publishConfig":{"provenance":true},"peerDependencies":{"@fastify/static":"^8.0.0 || ^9.0.0","@nestjs/common":">=9.0.0","@nestjs/swagger":">=6.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"peerDependenciesMeta":{"@fastify/static":{"optional":true}},"devDependencies":{"@eslint/js":"^10.0.1","@fastify/static":"^9.3.0","@nestjs/common":"^11.0.0","@nestjs/core":"^11.0.0","@nestjs/platform-fastify":"^11.1.28","@nestjs/swagger":"^11.0.0","@semantic-release/changelog":"^7.0.0","@semantic-release/git":"^11.0.1","@types/express":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^22.0.0","eslint":"^10.8.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","fastify":"^5.10.0","globals":"^17.7.0","jest":"^29.7.0","prettier":"^3.9.6","reflect-metadata":"^0.2.2","semantic-release":"^25.0.8","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3","typescript-eslint":"^8.65.0"},"dependencies":{"commander":"^14.0.3","docfy-core":"^0.6.0","docfy-ui":"^0.8.0","express":"^5.0.0","openapi-typescript":"^7.13.0","picocolors":"^1.1.1","source-map":"^0.6.1","ts-morph":"^28.0.0"},"overrides":{"swagger-ui-dist":"5.17.14","js-yaml":"^4.3.1"},"gitHead":"3977f431ddb2eac252470723495ab99f257b4714","_id":"nestjs-docfy@0.18.1","_nodeVersion":"22.23.2","_npmVersion":"11.19.0","dist":{"integrity":"sha512-+VtcniHQSD2G9PvqyQcbiQGZpAv3Abtt7rBrXXmyJFuaYH/kaussXbHVRBRjT4+7/IVOfLyu8wSTNJ3Sb1FRug==","shasum":"4b20fed3cec4a892e8781e6e5b371f94aef8fcfe","tarball":"https://registry.npmjs.org/nestjs-docfy/-/nestjs-docfy-0.18.1.tgz","fileCount":153,"unpackedSize":656834,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nestjs-docfy@0.18.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC1YXN5yQQOiYHmW54fEibuZ7f9ckQ1s1uRQ04sMMmKwgIgd2LdqsoMqaNxx/TykV4EJPq3N9oIc064XLMSZ1xkmCY="}]},"_npmUser":{"name":"marvindev","email":"marvinvca@outlook.com"},"directories":{},"maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nestjs-docfy_0.18.1_1789265870345_0.39891189971774454"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-07T16:26:12.825Z","modified":"2026-09-13T02:17:50.802Z","0.1.0":"2026-06-07T16:26:13.024Z","0.1.2":"2026-06-07T17:58:09.202Z","0.1.3":"2026-06-07T20:14:58.913Z","0.2.0":"2026-06-08T22:28:36.363Z","0.2.1":"2026-06-08T22:44:51.990Z","0.2.2":"2026-06-08T22:59:58.369Z","0.2.3":"2026-06-08T23:27:45.949Z","0.2.4":"2026-06-08T23:51:14.781Z","0.2.6":"2026-06-09T21:38:53.989Z","0.2.7":"2026-06-10T00:22:00.678Z","0.2.8":"2026-06-10T03:12:50.098Z","0.3.0":"2026-06-18T02:42:04.146Z","0.3.1":"2026-06-18T04:13:08.157Z","0.3.2":"2026-06-18T04:15:37.665Z","0.3.3":"2026-06-18T04:35:01.305Z","0.3.4":"2026-06-18T22:51:53.105Z","0.3.5":"2026-06-19T03:59:44.471Z","0.3.6":"2026-07-19T21:48:13.691Z","0.4.0":"2026-07-23T03:51:36.657Z","1.0.0":"2026-07-25T23:46:47.749Z","0.5.0":"2026-07-26T01:17:49.706Z","0.6.0":"2026-07-26T05:12:17.795Z","0.6.1":"2026-07-29T00:08:04.805Z","0.6.2":"2026-07-29T00:51:17.526Z","0.6.3":"2026-07-29T01:09:10.956Z","0.7.0":"2026-07-29T01:28:00.276Z","0.8.0":"2026-07-29T21:58:16.183Z","0.9.0":"2026-07-30T00:54:49.801Z","0.9.1":"2026-07-30T01:54:06.872Z","0.10.0":"2026-07-30T22:17:21.609Z","0.11.0":"2026-07-31T00:55:08.976Z","0.12.0":"2026-07-31T13:14:31.197Z","0.13.0":"2026-07-31T16:56:37.293Z","0.14.0":"2026-08-01T12:22:42.111Z","0.15.0":"2026-08-01T14:48:43.438Z","0.16.0":"2026-08-03T16:07:13.020Z","0.16.1":"2026-08-03T16:43:42.398Z","0.17.0":"2026-08-06T15:39:55.617Z","0.18.0":"2026-08-07T22:06:30.820Z","0.18.1":"2026-09-13T02:17:50.525Z"},"bugs":{"url":"https://github.com/MarvinRF/nest-docfy/issues"},"author":{"name":"Marvin Rocha"},"license":"MIT","homepage":"https://github.com/MarvinRF/nest-docfy#readme","keywords":["nestjs","swagger","openapi","decorator","documentation","companion","nestjs-swagger","nestjs-openapi","nestjs-module","nestjs-decorator","nestjs-clean","swagger-decorator","swagger-companion","openapi-decorator","controller-docs","clean-controller","separation-of-concerns","developer-experience","dx","typescript","reflect-metadata"],"repository":{"type":"git","url":"git+https://github.com/MarvinRF/nest-docfy.git"},"description":"Keep your NestJS controllers clean — Swagger docs live in a separate companion file by naming convention","maintainers":[{"name":"marvindev","email":"marvinvca@outlook.com"}],"readme":"<p align=\"center\">\n  <img alt=\"nestjs-docfy banner\" src=\"./assets/banner.png\" width=\"100%\">\n</p>\n\n[![CI](https://github.com/MarvinRF/nest-docfy/actions/workflows/ci.yml/badge.svg)](https://github.com/MarvinRF/nest-docfy/actions/workflows/ci.yml)\n[![NPM version](https://img.shields.io/npm/v/nestjs-docfy.svg)](https://www.npmjs.com/package/nestjs-docfy)\n[![NPM downloads](https://img.shields.io/npm/dw/nestjs-docfy.svg)](https://www.npmjs.com/package/nestjs-docfy)\n[![GitHub last commit](https://img.shields.io/github/last-commit/MarvinRF/nest-docfy)](https://github.com/MarvinRF/nest-docfy/commits/main)\n[![GitHub issues](https://img.shields.io/github/issues/MarvinRF/nest-docfy.svg)](https://github.com/MarvinRF/nest-docfy/issues)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/MarvinRF/nest-docfy/blob/main/LICENSE)\n\nKeep your NestJS controllers clean. Swagger documentation lives in a dedicated companion file, by naming convention, with zero boilerplate.\n\n📖 **[Full documentation](https://www.nestdocfy.com/)**\n\n## Table of contents\n\n- [Motivation](#motivation)\n- [Installation](#installation)\n- [Quick start](#quick-start)\n  - [1. Import DocfyModule](#1-import-docfymodule)\n  - [2. Mark your controllers](#2-mark-your-controllers)\n  - [3. Generate companion docs files](#3-generate-companion-docs-files)\n  - [4. Fill in the docs file](#4-fill-in-the-docs-file)\n- [CLI: init](#cli-init)\n- [CLI: generate](#cli-generate)\n  - [Options](#options)\n  - [Project types](#project-types)\n  - [Idempotency: --force vs --overwrite](#idempotency---force-vs---overwrite)\n- [CLI: check](#cli-check)\n- [CLI: doctor](#cli-doctor)\n- [CLI: coverage](#cli-coverage)\n- [CLI: lint](#cli-lint)\n- [CLI: patch-spec](#cli-patch-spec)\n- [CLI: generate-client](#cli-generate-client)\n- [CLI: mock](#cli-mock)\n- [CLI: test](#cli-test)\n- [CLI: lint-spec](#cli-lint-spec)\n- [GitHub Actions: PR check](#github-actions-pr-check)\n- [API reference](#api-reference)\n  - [DocfyModule.forRoot()](#docfymoduleforrootoptions)\n  - [@WithDocs()](#withdocs)\n  - [docs()](#docscontrollerclass-config)\n  - [attachTagGroups()](#attachtaggroupsdocument)\n  - [applyDocfyMetadata()](#applydocfymetadatadocument-options)\n  - [DocfyUiModule.setup()](#docfyuimodulesetupmountpath-app-options)\n- [Interface-typed DTOs](#interface-typed-dtos)\n- [class-validator inference](#class-validator-inference)\n- [File uploads](#file-uploads)\n- [@HttpCode() support](#httpcode-support)\n- [Tag groups (x-tagGroups)](#tag-groups-x-taggroups)\n- [File naming convention](#file-naming-convention)\n  - [webpack: true build mode](#webpack-true-build-mode)\n- [Testing](#testing)\n- [How it works](#how-it-works)\n- [License](#license)\n\n## Motivation\n\nSwagger decorators are documentation. They have nothing to do with routing logic, validation, or business rules, yet they end up mixed into the same file, doubling its length and burying the code that actually matters.\n\n**Before**: Swagger decorators scattered across your controller.\n\n```ts\n// users.controller.ts\n@ApiTags('users')\n@Controller('users')\nexport class UsersController {\n  @Get()\n  @ApiOperation({ summary: 'List all users' })\n  @ApiResponse({ status: 200, description: 'OK', type: [UserEntity] })\n  findAll(): Promise<UserEntity[]> {\n    return this.usersService.findAll();\n  }\n\n  @Post()\n  @ApiOperation({ summary: 'Create a user' })\n  @ApiBody({ type: CreateUserDto })\n  @ApiResponse({ status: 201, description: 'Created', type: UserEntity })\n  @ApiResponse({ status: 400, description: 'Bad Request' })\n  create(@Body() dto: CreateUserDto): Promise<UserEntity> {\n    return this.usersService.create(dto);\n  }\n}\n```\n\n**After**: the controller expresses only behavior.\n\n```ts\n// users.controller.ts\n@WithDocs()\n@Controller('users')\nexport class UsersController {\n  findAll(): Promise<UserEntity[]> {\n    return this.usersService.findAll();\n  }\n\n  create(@Body() dto: CreateUserDto): Promise<UserEntity> {\n    return this.usersService.create(dto);\n  }\n}\n```\n\n```ts\n// users.controller.docs.ts: all documentation in one place\ndocs(UsersController, {\n  classDecorators: [ApiTags('users')],\n  methods: {\n    findAll: [\n      ApiOperation({ summary: 'List all users' }),\n      ApiResponse({ status: 200, description: 'OK', type: [UserEntity] }),\n    ],\n    create: [\n      ApiOperation({ summary: 'Create a user' }),\n      ApiBody({ type: CreateUserDto }),\n      ApiResponse({ status: 201, description: 'Created', type: UserEntity }),\n      ApiResponse({ status: 400, description: 'Bad Request' }),\n    ],\n  },\n});\n```\n\n`nestjs-docfy` enforces a clean boundary: controllers express behavior, docs files express documentation. The convention (`*.controller.docs.ts`) mirrors how NestJS already organizes specs (`*.controller.spec.ts`), so it feels natural from day one.\n\n## Installation\n\n```bash\nnpm install nestjs-docfy\n```\n\n**Peer dependencies** (already present in any NestJS project):\n\n```bash\nnpm install @nestjs/common @nestjs/swagger reflect-metadata\n```\n\n## Quick start\n\nFastest path: run `npx nestjs-docfy init` once — it wires `DocfyModule.forRoot()` into your root module, decorates every controller with `@WithDocs()`, registers the webpack CLI plugin if needed, adds `docs:generate`/`docs:preview` scripts to `package.json`, and generates the companion docs files, all in one shot (see [CLI: init](#cli-init)). The steps below are what it automates, useful if you want to do any of them by hand instead.\n\n### 1. Import DocfyModule\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { DocfyModule } from 'nestjs-docfy';\n\n@Module({\n  imports: [DocfyModule.forRoot()],\n})\nexport class AppModule {}\n```\n\nPass `{ strict: true }` to fail fast at startup when a controller has `@WithDocs()` but no companion file is found. Recommended for CI:\n\n```ts\nDocfyModule.forRoot({ strict: true });\n```\n\n### 2. Mark your controllers\n\n```ts\n// users.controller.ts\nimport { Controller, Get, Post, Body } from '@nestjs/common';\nimport { WithDocs } from 'nestjs-docfy';\n\n@WithDocs()\n@Controller('users')\nexport class UsersController {\n  // route handlers only, no Swagger decorators here\n}\n```\n\nOr let `generate --link-controller` add the import and `@WithDocs()` for you (opt-in, mutates the controller file — see [CLI: generate](#cli-generate)):\n\n```bash\nnpx nestjs-docfy generate --link-controller\n```\n\n### 3. Generate companion docs files\n\nRun the CLI to scan your project and generate a pre-filled `*.controller.docs.ts` for every controller:\n\n```bash\nnpx nestjs-docfy generate\n```\n\nThe CLI uses **static analysis only** (no code execution) and auto-detects your project layout: monorepos, Nx workspaces, and Nest CLI monorepos are all supported.\n\nTo preview what would be written without touching the filesystem:\n\n```bash\nnpx nestjs-docfy generate --dry-run\n```\n\n### 4. Fill in the docs file\n\nThe generated file comes pre-populated with inferred summaries, response types, and common error responses:\n\n```ts\n// Generated by nestjs-docfy@x.y.z. Edit freely, use --force to merge new methods, --overwrite to regenerate from scratch\nimport { docs } from 'nestjs-docfy';\nimport { ApiTags, ApiOperation, ApiResponse, ApiBody } from '@nestjs/swagger';\nimport { UsersController } from './users.controller';\nimport { CreateUserDto } from './dto/create-user.dto';\nimport { UserEntity } from './entities/user.entity';\n\ndocs(UsersController, {\n  classDecorators: [ApiTags('users')],\n  methods: {\n    // GET / → async findAll(): Promise<UserEntity[]>\n    findAll: [\n      ApiOperation({ summary: 'Find all' }),\n      ApiResponse({ status: 200, description: 'OK', type: [UserEntity] }),\n    ],\n\n    // POST / → async create(dto: CreateUserDto): Promise<UserEntity>\n    create: [\n      ApiOperation({ summary: 'Create' }),\n      ApiBody({ type: CreateUserDto }),\n      ApiResponse({ status: 201, description: 'Created', type: UserEntity }),\n      ApiResponse({ status: 400, description: 'Bad Request' }),\n    ],\n  },\n});\n```\n\nEdit the file freely; your changes are safe. Running `generate` again will skip existing files. Use `--force` to merge only **new** methods without touching existing ones, or `--overwrite` to discard the file entirely and regenerate it from scratch (e.g. after a `nestjs-docfy` upgrade that changed how a type maps to schema — `check` warns when a docs file predates the installed version).\n\nNo changes to `main.ts` are needed. `DocfyModule` applies all metadata before `SwaggerModule.createDocument()` is called.\n\n## CLI: init\n\n```bash\nnpx nestjs-docfy init [options]\n```\n\nOne-shot onboarding — bundles the whole Quick start above into a single command, for every app the project detects:\n\n1. Locates each app's bootstrap file (`main.ts`, resolved the same way `generate` detects apps — simple projects, Nx, Nest CLI monorepos, and generic monorepos) and the class passed to `NestFactory.create(...)`, then wires `DocfyModule.forRoot()` into that root module's `@Module({ imports: [...] })`. Static analysis only, same as everything else in this CLI — never executes your code. If the bootstrap file or the module can't be located with certainty (a dynamic `NestFactory.create(...)` argument, a non-standard `@Module(...)` shape), it warns and skips that app instead of guessing; add `DocfyModule.forRoot()` by hand in that case.\n2. Runs the same steps as `generate --link-controller --register-plugin`: decorates every controller with `@WithDocs()`, registers the webpack CLI plugin if `webpack: true` is set without it, and generates the companion `*.controller.docs.ts` files.\n3. Adds `docs:generate`/`docs:preview` scripts to the root `package.json`, without overwriting any script you already defined under those names.\n\nEvery step is independently idempotent (each one detects \"already done\" and skips), so running `init` again is always safe — useful after adding a new controller or a second app to the project.\n\n| Option              | Default              | Description                                       |\n| ------------------- | -------------------- | ------------------------------------------------- |\n| `--root <path>`     | `.`                  | Project root directory                            |\n| `--tsconfig <path>` | auto-detected        | Path to `tsconfig.json`                           |\n| `--pattern <glob>`  | `**/*.controller.ts` | Glob pattern to find controllers                  |\n| `--format`          | `ts`                 | Output format: `ts` or `js`                       |\n| `--dry-run`         | `false`              | Print what would change without writing any files |\n| `--quiet`           | `false`              | Suppress all output except errors                 |\n\n## CLI: generate\n\n```bash\nnpx nestjs-docfy generate [options]\n```\n\n### Options\n\n| Option              | Default                   | Description                                                                                                                                     |\n| ------------------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |\n| `--root <path>`     | `.`                       | Project root directory                                                                                                                          |\n| `--tsconfig <path>` | auto-detected             | Path to `tsconfig.json`                                                                                                                         |\n| `--pattern <glob>`  | `**/*.controller.ts`      | Glob pattern to find controllers                                                                                                                |\n| `--out <path>`      | alongside each controller | Output directory for generated files                                                                                                            |\n| `--force`           | `false`                   | Merge new methods into existing docs files (preserves user edits)                                                                               |\n| `--overwrite`       | `false`                   | Discard existing docs file content and regenerate it from scratch (takes precedence over `--force`)                                             |\n| `--dry-run`         | `false`                   | Print what would be generated without writing files                                                                                             |\n| `--quiet`           | `false`                   | Suppress all output except errors (CI-friendly)                                                                                                 |\n| `--format`          | `ts`                      | Output format: `ts` or `js`                                                                                                                     |\n| `--watch`           | `false`                   | Re-generate on controller file changes                                                                                                          |\n| `--register-plugin` | `false`                   | If `webpack: true` is set without the CLI plugin, add `nestjs-docfy` to `nest-cli.json`'s `compilerOptions.plugins`                             |\n| `--link-controller` | `false`                   | Insert `@WithDocs()` and its import into each controller automatically (opt-in, mutates controller source; idempotent — safe to run repeatedly) |\n\n### Project types\n\nThe CLI auto-detects your project layout, no configuration needed:\n\n| Layout            | Detected when                                                                                                                                            |\n| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Simple project    | `tsconfig.json` at root, no monorepo markers                                                                                                             |\n| Nx monorepo       | `nx.json` present                                                                                                                                        |\n| Nest CLI monorepo | `nest-cli.json` with `\"monorepo\": true`                                                                                                                  |\n| Generic monorepo  | `packages/`, `apps/`, `services/`, or any dir implied by root `package.json`'s `workspaces` field (e.g. `\"workspaces/*\"`), with sub-`package.json` files |\n\n`generate` also checks `nest-cli.json`'s `compilerOptions` and warns automatically when: `webpack: true` is set without the [CLI plugin](#webpack-true-build-mode) registered, or the CLI plugin is registered while building with the [SWC builder](#webpack-true-build-mode) without `\"typeCheck\": true` (where it's a silent no-op). In a Nest CLI monorepo, this check honors each project's own `compilerOptions` override (`projects.<name>.compilerOptions`, same precedence `@nestjs/cli` itself uses) — a project that overrides `webpack`/`builder`/`typeCheck` differently from the root gets checked and named individually, not just the root config.\n\n**TS project references**: if the resolved `tsconfig.json` is a \"solution style\" file (only `references`, no `compilerOptions`/`include` of its own) with a single reference, the CLI follows it to the real project automatically. With more than one reference it's ambiguous which one has your controllers, so nothing is guessed — pass `--tsconfig` pointing at the right one explicitly.\n\n### Idempotency: --force vs --overwrite\n\n| Scenario                                   | Behavior                                             |\n| ------------------------------------------ | ---------------------------------------------------- |\n| Run `generate` on a clean project          | Creates all docs files                               |\n| Run `generate` again (no changes)          | Skips all existing files, safe to run repeatedly     |\n| Add a new endpoint, run `generate --force` | Merges new method block, preserves existing arrays   |\n| Edit a method's decorators, run `--force`  | Your edits are preserved                             |\n| Run `generate --overwrite`                 | Discards the file entirely, regenerates from scratch |\n\nAdd to your `package.json` for convenience:\n\n```json\n{\n  \"scripts\": {\n    \"docs:generate\": \"nestjs-docfy generate\",\n    \"docs:preview\": \"nestjs-docfy generate --dry-run\"\n  }\n}\n```\n\n## CLI: check\n\nVerify that every controller is fully documented before merging. Exits with code `1` if any drift is detected, designed for CI pipelines.\n\n```bash\nnpx nestjs-docfy check [options]\n```\n\n| Option              | Default              | Description                                                                                                                                |\n| ------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |\n| `--root <path>`     | `.`                  | Project root directory                                                                                                                     |\n| `--tsconfig <path>` | auto-detected        | Path to `tsconfig.json`                                                                                                                    |\n| `--pattern <glob>`  | `**/*.controller.ts` | Glob pattern to find controllers                                                                                                           |\n| `--format <format>` | `ts`                 | Docs file format to look for: `ts` or `js`                                                                                                 |\n| `--json`            | `false`              | Output a single machine-readable JSON object instead of formatted text: `{ controllersChecked, issues, docfyUiPin, versionDrift, passed }` |\n| `--quiet`           | `false`              | Suppress all output except errors                                                                                                          |\n\n**What it checks:**\n\n- Controllers with HTTP methods but no companion docs file\n- Controllers that have methods added since the last `generate` run\n- Docs files stamped by an older `nestjs-docfy` version than the one installed (`versionDrift` — informational, doesn't fail the exit code; run `generate --overwrite` to refresh)\n\n**Example output:**\n\n```text\n✖ UsersController: undocumented methods: updateProfile, deleteAccount\n  → run nestjs-docfy generate --force to merge new methods\n\n✖ 2 controller(s) out of sync.\n```\n\n**CI integration:**\n\n```yaml\n# GitHub Actions example\n- name: Check docs are up to date\n  run: npx nestjs-docfy check\n```\n\nOr as an npm script:\n\n```json\n{\n  \"scripts\": {\n    \"docs:check\": \"nestjs-docfy check\"\n  }\n}\n```\n\n## CLI: doctor\n\nRun every nestjs-docfy diagnostic at once — everything `check` reports plus the webpack/SWC compiler-plugin misconfigurations that otherwise only surface incidentally while running `generate`/`init`. A pure diagnostic tool: unlike `check`, it always exits `0` (nothing to wire into a CI gate — use `check` for that).\n\n```bash\nnpx nestjs-docfy doctor [options]\n```\n\n| Option              | Default              | Description                                                              |\n| ------------------- | -------------------- | ------------------------------------------------------------------------ |\n| `--root <path>`     | `.`                  | Project root directory                                                   |\n| `--tsconfig <path>` | auto-detected        | Path to `tsconfig.json`                                                  |\n| `--pattern <glob>`  | `**/*.controller.ts` | Glob pattern to find controllers                                         |\n| `--format <format>` | `ts`                 | Docs file format to look for: `ts` or `js`                               |\n| `--json`            | `false`              | Output a single machine-readable JSON object with every diagnostic field |\n| `--quiet`           | `false`              | Suppress all output except errors                                        |\n\n**What it checks (all in one run):**\n\n- `webpack: true` without the `nestjs-docfy` compiler plugin registered\n- The compiler plugin registered but inert under SWC (`typeCheck` not set)\n- Controllers with no companion docs file, or with undocumented methods (same as `check`)\n- `docfy-ui` declared directly in your own `package.json` (has no effect — see [File naming convention](#file-naming-convention))\n- Docs files stamped by an older `nestjs-docfy` version than the one installed\n\n**Example output:**\n\n```text\nnestjs-docfy doctor\n  ✔ Project type: Simple project (1 app)\n  ⚠ Builds with \"webpack\": true, so @WithDocs()/DocfyModule runtime discovery does not work in that mode. Register nestjs-docfy under compilerOptions.plugins (run generate --register-plugin) or use patch-spec instead.\n  ✖ UsersController: no companion docs file found at src/users.controller.docs.ts\n\n⚠ Some diagnostics need attention — see above.\n```\n\n## CLI: coverage\n\nMeasure what percentage of your endpoints are documented. Useful as an objective quality metric and as a CI gate.\n\n```bash\nnpx nestjs-docfy coverage [options]\n```\n\n| Option              | Default              | Description                                                                                                                 |\n| ------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------- |\n| `--root <path>`     | `.`                  | Project root directory                                                                                                      |\n| `--tsconfig <path>` | auto-detected        | Path to `tsconfig.json`                                                                                                     |\n| `--pattern <glob>`  | `**/*.controller.ts` | Glob pattern to find controllers                                                                                            |\n| `--format <format>` | `ts`                 | Docs file format to look for: `ts` or `js`                                                                                  |\n| `--min <percent>`   | none                 | Minimum coverage required (0-100), exits `1` if below                                                                       |\n| `--json`            | `false`              | Output a single machine-readable JSON object instead of formatted text: the `CoverageReport` fields plus `min` and `passed` |\n| `--quiet`           | `false`              | Suppress all output except errors                                                                                           |\n\n**Example output:**\n\n```text\nControllers: 42\nEndpoints: 187\n\nDocumented: 174\nMissing docs: 13\n\nCoverage: 93.0%\n```\n\n**Enforcing a minimum in CI:**\n\n```bash\nnpx nestjs-docfy coverage --min 95\n```\n\nWhen coverage falls below `--min`, the command exits with code `1`, failing the build.\n\n```yaml\n# GitHub Actions example\n- name: Enforce documentation coverage\n  run: npx nestjs-docfy coverage --min 95\n```\n\nOr as an npm script:\n\n```json\n{\n  \"scripts\": {\n    \"docs:coverage\": \"nestjs-docfy coverage --min 95\"\n  }\n}\n```\n\n**PR bot**: this repo's own [`.github/workflows/pr-check.yml`](.github/workflows/pr-check.yml) is a real example of a GitHub Actions job that runs `check --json` and `coverage --json --min` against a project and posts (and updates, never spams) a single PR comment summarizing the result. See [`.github/scripts/pr-comment.mjs`](.github/scripts/pr-comment.mjs) for the comment logic, built entirely on `--json` output and native `fetch`, no extra dependencies.\n\n## CLI: lint\n\nChecks documentation **quality**, not just presence. Catches incomplete `ApiOperation`, `ApiResponse`, and `ApiBody` decorators that `check` and `coverage` wouldn't flag (the method is documented, just incompletely).\n\n```bash\nnpx nestjs-docfy lint [options]\n```\n\n| Option              | Default              | Description                                |\n| ------------------- | -------------------- | ------------------------------------------ |\n| `--root <path>`     | `.`                  | Project root directory                     |\n| `--tsconfig <path>` | auto-detected        | Path to `tsconfig.json`                    |\n| `--pattern <glob>`  | `**/*.controller.ts` | Glob pattern to find controllers           |\n| `--format <format>` | `ts`                 | Docs file format to look for: `ts` or `js` |\n| `--quiet`           | `false`              | Suppress all output except errors          |\n\n**What it checks**, for every method already present in a docs file:\n\n- `ApiOperation` missing a `summary`\n- Endpoints with a `@Body()` parameter missing a `400` `ApiResponse`\n- Endpoints with a `@Body()` parameter missing an `ApiBody` `description`\n\nControllers without a companion docs file, or methods not yet documented at all, are left to `check`. `lint` only judges the quality of what's already there.\n\n**Example output:**\n\n```text\n✖ POST /users\n  Missing 400 response\n\n✖ GET /users\n  Missing operation summary\n\n✖ PATCH /users/:id\n  Missing request body description\n\n✖ 3 issue(s) found.\n```\n\nExits with code `1` if any issue is found, designed for CI pipelines, same as `check`.\n\n```yaml\n# GitHub Actions example\n- name: Lint documentation quality\n  run: npx nestjs-docfy lint\n```\n\nOr as an npm script:\n\n```json\n{\n  \"scripts\": {\n    \"docs:lint\": \"nestjs-docfy lint\"\n  }\n}\n```\n\n## CLI: patch-spec\n\nPatches an **already-built** OpenAPI document with every controller's companion docs file, entirely via static analysis (`ts-morph`). No `require()` of any docs file, no decorators applied to any class, no dependency on a live class reference matching the one the running app actually uses.\n\nThis is a manual, CI-driven way to work around the one thing `DocfyModule`'s runtime pipeline structurally cannot do: work under NestJS CLI's `webpack: true` build mode (see [`webpack: true` build mode](#webpack-true-build-mode) for why, and for the **CLI plugin**, which does the same analysis automatically on every build instead of a separate step). `patch-spec` sidesteps the webpack wall by matching on **path + HTTP method**, computed the same way `check`/`coverage`/`lint` already do, instead of needing the live controller class.\n\n```bash\nnpx nestjs-docfy patch-spec --spec <path-or-url> [options]\n```\n\n| Option               | Default              | Description                                                         |\n| -------------------- | -------------------- | ------------------------------------------------------------------- |\n| `--spec <path\\|url>` | _(required)_         | A local `openapi.json`, or a URL (e.g. a running app's `/api-json`) |\n| `--out <path>`       | stdout               | Where to write the patched document                                 |\n| `--root <path>`      | `.`                  | Project root directory                                              |\n| `--tsconfig <path>`  | auto-detected        | Path to `tsconfig.json`                                             |\n| `--pattern <glob>`   | `**/*.controller.ts` | Glob pattern to find controllers                                    |\n| `--format <format>`  | `ts`                 | Docs file format to look for: `ts` or `js`                          |\n| `--quiet`            | `false`              | Suppress all output except errors                                   |\n\n```bash\n# Patch a running app's served document\nnpx nestjs-docfy patch-spec --spec http://localhost:3000/api-json --out openapi.json\n\n# Patch a file already written to disk\nnpx nestjs-docfy patch-spec --spec dist/openapi.json --out dist/openapi.json\n```\n\n**What gets merged**, matched by `path` + HTTP method against the base document:\n\n- `ApiTags` → unioned into `tags` (never drops tags the base document already had)\n- `ApiOperation({ summary, description, deprecated })` → overwrites those fields\n- `ApiResponse({ status, description, schema, example, examples })` → merged per status code (other status codes untouched); when no `schema`/`type` is given, falls back to the method's own resolved return type, the same DTO/class-validator/interface inference `generate` already does, including a `oneOf` of `$ref`s when the return type is a union of ≥2 named DTOs/entities (e.g. `Promise<UserDto | AdminDto>`)\n- `ApiBody({ schema, examples })` → sets `requestBody`, with the same return-type-style fallback to the `@Body()` parameter's resolved type, including the same union → `oneOf` handling (`example` is intentionally not read here, since `@nestjs/swagger`'s real `ApiBodyOptions` type only has `examples`, unlike `ApiResponse`, which supports both)\n- `ApiBearerAuth()` → appended to `security`\n- `ApiParam` / `ApiQuery` / `ApiHeader` → merged into `parameters` by name + location: a genuinely new parameter is appended, but one that already exists (e.g. `@nestjs/swagger` auto-generates a bare `required: true` entry from reflection alone for any `@Query()`/`@Param()`-decorated argument, with zero `@Api*` decorators needed) gets its fields overlaid, not discarded. An `ApiQuery({ enum, required: false })` in a docs file for a parameter Nest already knew about actually takes effect. `enum` is read from an array literal (`enum: ['a', 'b']`) or a reference to a TS `enum`, including one imported from another file (`enum: Role`), and the schema's `type` is inferred as `number` when every resolved value is numeric, `string` otherwise\n\n`example`/`examples` (and `schema`) are only applied when every value inside them is a literal. If even one nested value is a variable, function call, or other non-literal expression, the whole field is left out rather than risk leaking an internal \"unresolved\" marker into the document as if it were real data.\n\n**What this does _not_ do** (yet, since this command is intentionally scoped, not a full reimplementation of `@nestjs/swagger`'s decorator semantics): `anyOf` (no TS construct maps onto \"any of\" the way a union type naturally maps onto `oneOf`), `links`/`callbacks` (`@nestjs/swagger` itself has no decorator option for either, so there's nothing in a `.docs.ts` file to read), and any decorator argument that isn't a literal (a variable, a function call, a spread) are left alone rather than guessed at. It's better to leave a field as the base document already had it than patch in something wrong. A union return type or `@Body()` payload only becomes a `oneOf` when _every_ branch resolves to a named DTO/entity. A partial guess is avoided by leaving the field alone entirely (falling back to no schema, same as an unresolvable type) if even one branch doesn't resolve. Routes a docs file documents that don't exist in `--spec` are reported as warnings, not silently dropped or errored on.\n\n## CLI: export\n\nBoots the project's **own** Nest app and writes the OpenAPI document it produces, without binding a port. Unlike `patch-spec`, this builds the base document too (via a real `SwaggerModule.createDocument()`) — it doesn't need one to already exist.\n\nThe one thing `SwaggerModule.createDocument()` structurally needs is a fully-initialized Nest app — its DI container has to have resolved every provider before route/DTO metadata exists to introspect. That does **not** require `.listen()` (no port bound), and in practice usually doesn't require live infrastructure either: most `TypeOrmModule`/`ioredis`/`kafkajs`-style clients connect lazily rather than blocking bootstrap, so `export` tends to work with the database, Redis, Kafka, etc. all stopped. A provider with a genuinely eager, hard-failing connection in its constructor or `onModuleInit` won't benefit from this — nothing here can change how your own providers connect.\n\nYou provide a small **entry file** — the same handful of lines your `main.ts` already has, minus `.listen()` and anything unrelated to the document itself:\n\n```ts\n// docfy-export.ts\nimport { NestFactory } from '@nestjs/core';\nimport { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';\nimport { AppModule } from './app.module';\n\nexport default async function () {\n  const app = await NestFactory.create(AppModule, { logger: false });\n  const config = new DocumentBuilder().setTitle('My API').setVersion('1.0.0').build();\n  const document = SwaggerModule.createDocument(app, config);\n  return { app, document }; // `app` gets closed for you afterward\n}\n```\n\n```bash\nnpx nestjs-docfy export --entry docfy-export.ts --out openapi.json\n```\n\n| Option           | Default      | Description                                                       |\n| ---------------- | ------------ | ----------------------------------------------------------------- |\n| `--entry <path>` | _(required)_ | `.ts`/`.js` file whose default export returns `{ app, document }` |\n| `--out <path>`   | stdout       | Where to write the document                                       |\n| `--root <path>`  | `.`          | Project root — where `ts-node`/`tsconfig-paths` are resolved from |\n| `--quiet`        | `false`      | Suppress informational output (errors still go to stderr)         |\n\nA `.ts` entry file needs `ts-node` as a devDependency of your project (for `tsconfig-paths` support too, if your project uses path aliases like `@app/common`). Informational output always goes to stderr, never stdout — safe to pipe: `npx nestjs-docfy export --entry docfy-export.ts > openapi.json`.\n\n## CLI: generate-client\n\nGenerates a typed TypeScript client from an OpenAPI document, a thin wrapper over [`openapi-typescript`](https://openapi-ts.dev) (types) and [`openapi-fetch`](https://openapi-ts.dev/openapi-fetch) (the runtime client), not a from-scratch code generator.\n\n> **Requires Node >=22.12.** `openapi-typescript` eagerly requires an ESM-only transitive dependency (`parse-json@8`) — this needs native `require(esm)` interop, unsupported on older Node versions. Every other command in this package works down to Node 16, per `engines` in `package.json`.\n\n```bash\nnpx nestjs-docfy generate-client --spec <path-or-url> [options]\n```\n\n| Option               | Default              | Description                                                         |\n| -------------------- | -------------------- | ------------------------------------------------------------------- |\n| `--spec <path\\|url>` | _(required)_         | A local `openapi.json`, or a URL (e.g. a running app's `/api-json`) |\n| `--out <path>`       | `./generated-client` | Output directory for `schema.d.ts` and `client.ts`                  |\n| `--root <path>`      | `.`                  | Project root directory                                              |\n| `--quiet`            | `false`              | Suppress all output except errors                                   |\n\n```bash\nnpx nestjs-docfy generate-client --spec http://localhost:3000/api-json --out src/api-client\n```\n\nWrites two files:\n\n- **`schema.d.ts`**: the generated types (`paths`, `components`, `operations`), via `openapi-typescript`.\n- **`client.ts`**: a small wrapper exporting `createApiClient(baseUrl)`, typed against `schema.d.ts`.\n\n```ts\nimport { createApiClient } from './api-client/client';\n\nconst api = createApiClient('https://api.example.com');\nconst { data, error } = await api.GET('/users/{id}', { params: { path: { id: '123' } } });\n```\n\n`openapi-fetch` is **not** a dependency of `nestjs-docfy` itself, since only the generated `client.ts` imports it, so install it in your own project: `npm install openapi-fetch`.\n\n## CLI: mock\n\nStarts a throwaway HTTP server that answers every endpoint in an OpenAPI document with its generated example response — the same deterministic, type-token example (`\"name\": \"string\"`) `buildSchemaExample()` already produces for \"Copy for AI\", never fake-but-plausible data. Unblocks a frontend against an API that isn't running yet, no export/import step needed.\n\n```bash\nnpx nestjs-docfy mock --spec <path-or-url> [options]\n```\n\n| Option               | Default      | Description                                                         |\n| -------------------- | ------------ | ------------------------------------------------------------------- |\n| `--spec <path\\|url>` | _(required)_ | A local `openapi.json`, or a URL (e.g. a running app's `/api-json`) |\n| `--port <port>`      | `4010`       | Port to listen on                                                   |\n| `--host <host>`      | `127.0.0.1`  | Host to bind to                                                     |\n| `--root <path>`      | `.`          | Project root directory                                              |\n\n```bash\nnpx nestjs-docfy mock --spec ./openapi.json --port 4010\n# Mocking 12 endpoint(s) at http://127.0.0.1:4010\n```\n\n`{param}` path segments are converted to Express `:param` routes and resolved automatically; an endpoint declared under multiple `tags` is only registered once. No request validation, no auth, no state — a `POST` never affects what a later `GET` returns. Not a Prism/Swagger UI replacement, just enough to unblock frontend work.\n\n## CLI: test\n\nFires a real request at every endpoint in an OpenAPI document (path/query params and the request body filled in with the same generated examples `mock` uses) and validates the live response against its declared schema — a Postman-collection-runner-equivalent driven straight off the spec, zero setup.\n\n```bash\nnpx nestjs-docfy test --spec <path-or-url> --base-url <url> [options]\n```\n\n| Option                  | Default      | Description                                                            |\n| ----------------------- | ------------ | ---------------------------------------------------------------------- |\n| `--spec <path\\|url>`    | _(required)_ | A local `openapi.json`, or a URL (e.g. a running app's `/api-json`)    |\n| `--base-url <url>`      | _(required)_ | Base URL of the running server to test against                         |\n| `--header <name:value>` | —            | Extra header sent with every request (e.g. auth), repeatable           |\n| `--root <path>`         | `.`          | Project root directory                                                 |\n| `--json`                | `false`      | Output a single machine-readable JSON object instead of formatted text |\n| `--quiet`               | `false`      | Suppress all output except errors                                      |\n\n```bash\nnpx nestjs-docfy test --spec ./openapi.json --base-url http://localhost:3000 --header \"Authorization:Bearer xyz\"\n```\n\n```text\n✔ 8 endpoint(s) matched their schema cleanly.\nℹ 2 endpoint(s) had no schema declared for the live status — nothing to check.\n⚠ 1 endpoint(s) returned a status not declared in the spec (informational, not a failure).\n```\n\nA response whose status isn't declared in the spec at all, or is declared with no schema, is reported but **never** counted as a failure — a fabricated ID legitimately 404ing isn't a contract break, and there's nothing to structurally check against for a schema-less response. Only real schema mismatches (missing/renamed field, wrong type — via `docfy-core`'s `validateAgainstSchema()`) and request failures (server unreachable) affect the exit code, so this is safe to wire into CI:\n\n```bash\nnpx nestjs-docfy test --spec ./openapi.json --base-url http://localhost:3000 --json\n# exits 1 if any endpoint has a schema mismatch or a request failure, 0 otherwise\n```\n\n## CLI: lint-spec\n\nChecks OpenAPI spec _quality_ — not decorator/controller coverage (`check`/`lint` above work from source `.docs.ts` files) but the final document itself: missing summaries/descriptions, undocumented tags, no error response declared, responses with no description, and duplicate `operationId`s. A Redocly-CLI/Spectral-style governance check, via `docfy-core`'s `lintSpec()`. Works against any spec, generated by this library or not.\n\n```bash\nnpx nestjs-docfy lint-spec --spec <path-or-url> [options]\n```\n\n| Option               | Default      | Description                                                            |\n| -------------------- | ------------ | ---------------------------------------------------------------------- |\n| `--spec <path\\|url>` | _(required)_ | A local `openapi.json`, or a URL (e.g. a running app's `/api-json`)    |\n| `--root <path>`      | `.`          | Project root directory                                                 |\n| `--json`             | `false`      | Output a single machine-readable JSON object instead of formatted text |\n| `--quiet`            | `false`      | Suppress all output except errors                                      |\n\n```bash\nnpx nestjs-docfy lint-spec --spec ./openapi.json\n```\n\n```text\n✖ GET /users: [missing-summary] no summary declared\n✖ GET /users: [no-error-response] no 4xx/5xx response declared\n\n✖ 2 spec quality issue(s) found.\n```\n\nExits `0` when the spec passes every check, `1` otherwise — safe to wire into CI (`--json` gives `{ issuesFound, issues, passed }`).\n\n## GitHub Actions: PR check\n\nA reusable workflow that runs `check`/`coverage` — and, when given an [export entry file](#cli-export), a breaking-change spec diff against the PR's base commit — and posts (and updates, never spams) a single summary comment on the PR.\n\n```yaml\n# .github/workflows/docfy.yml\nname: docfy\non:\n  pull_request:\n    branches: [main]\n\njobs:\n  docfy:\n    uses: MarvinRF/nest-docfy/.github/workflows/docfy-pr-check-reusable.yml@main\n    with:\n      root: . # project root, relative to your repo root (default: \".\")\n      export-entry: docfy-export.ts # optional — omit to skip the spec diff\n      min-coverage: 80\n```\n\n| Input           | Default  | Description                                              |\n| --------------- | -------- | -------------------------------------------------------- |\n| `root`          | `.`      | Project root, relative to the repo root                  |\n| `export-entry`  | _(none)_ | Path to an export entry file; enables the spec-diff step |\n| `min-coverage`  | `80`     | Minimum coverage percentage, fails the job if below      |\n| `node-version`  | `22.x`   | Node.js version to run the checks with                   |\n| `docfy-version` | `latest` | `nestjs-docfy` npm dist-tag/version to run               |\n\nThe job fails if `check` finds drift or `coverage` is below `min-coverage`; the spec diff is informational only (breaking changes are sometimes intentional) and never fails the job on its own.\n\n## API reference\n\n### `DocfyModule.forRoot(options?)`\n\nRegisters the module and loads all companion docs files for controllers marked with `@WithDocs()`.\n\n| Option   | Type      | Default | Description                                                                                    |\n| -------- | --------- | ------- | ---------------------------------------------------------------------------------------------- |\n| `strict` | `boolean` | `false` | Throw at startup if a `@WithDocs()` controller has no companion docs file. Recommended for CI. |\n\n### `@WithDocs()`\n\nClass decorator that marks a controller for companion file discovery. Pair with `@Controller()`.\n\n```ts\n@WithDocs()\n@Controller('products')\nexport class ProductsController { ... }\n```\n\nAlso sets `DOCFY_MARKER` metadata on the class, available for external introspection:\n\n```ts\nimport { DOCFY_MARKER } from 'nestjs-docfy';\n\nReflect.getMetadata(DOCFY_MARKER, ProductsController); // true\n```\n\n### `docs(controllerClass, config)`\n\nApplies Swagger decorators to a controller class from outside its file. Call at the top level of a `*.controller.docs.ts` file; runs as a side effect on import.\n\nFully type-safe: `config.methods` only accepts keys that exist on the controller class. Typos are caught at compile time.\n\n```ts\ndocs(UsersController, {\n  classDecorators: [ApiTags('users')],\n  methods: {\n    findAll: [...],    // ✔ exists on UsersController\n    typoMethod: [...], // ✖ TypeScript error\n  },\n});\n```\n\n**`config.classDecorators`** (`ClassDecorator[]`): applied to the class constructor (e.g. `ApiTags`, `ApiBearerAuth`).\n\n**`config.methods`** (`Partial<Record<keyof T, MethodDecorator[]>>`): decorator arrays per method name, applied in order.\n\n**`config.group`** (`string`): logical group name for ReDoc's `x-tagGroups` extension. See [Tag groups](#tag-groups-x-taggroups).\n\n**`config.tags`** (`string[]`): tag names associated with `group`. Should match what you pass to `ApiTags()`.\n\nIf a method key does not exist on the controller at runtime, a warning is logged and that entry is skipped. The rest of the docs file still applies.\n\n### `attachTagGroups(document)`\n\nAdds the `x-tagGroups` extension to a Swagger document, built from groups registered via `docs({ group, tags })`. Call after `SwaggerModule.createDocument()` and before `SwaggerModule.setup()`. Returns the document unchanged if no groups were registered. See [Tag groups](#tag-groups-x-taggroups) for a full example.\n\n### `applyDocfyMetadata(document, options?)`\n\nMerges the build-time metadata produced by the `nestjs-docfy` [CLI plugin](#webpack-true-build-mode) into an already-built OpenAPI document. Call after `SwaggerModule.createDocument()`, same as `attachTagGroups()`. This is the automatic, `webpack: true`-compatible alternative to manually running `patch-spec`.\n\n```ts\nimport { applyDocfyMetadata } from 'nestjs-docfy';\n\nconst document = SwaggerModule.createDocument(app, config);\nSwaggerModule.setup('api', app, applyDocfyMetadata(document));\n```\n\n| Option         | Type      | Default                                              | Description                                                            |\n| -------------- | --------- | ---------------------------------------------------- | ---------------------------------------------------------------------- |\n| `metadataPath` | `string`  | `docfy-metadata.json` next to the running entry file | Where to read the plugin-generated metadata from.                      |\n| `strict`       | `boolean` | `false`                                              | Throw instead of warning when the metadata file is missing or invalid. |\n\nIf the metadata file isn't found (e.g. the plugin isn't registered in `nest-cli.json`), it warns and returns the document unchanged, the same fail-open default as `DocfyModule.forRoot()`.\n\n### `DocfyUiModule.setup(mountPath, app, options?)`\n\nServes [`docfy-ui`](https://www.npmjs.com/package/docfy-ui) (the AI-first documentation UI companion to this package) at `mountPath`, the same role `SwaggerModule.setup()` + `swagger-ui-express` play for raw Swagger UI. Works on both Express (`@nestjs/platform-express`) and Fastify (`@nestjs/platform-fastify`) apps. On Fastify, static asset serving needs the optional peer dependency [`@fastify/static`](https://www.npmjs.com/package/@fastify/static) (`npm install @fastify/static`), the same package `@nestjs/swagger` itself relies on for Fastify Swagger UI support.\n\n```ts\nimport { NestFactory } from '@nestjs/core';\nimport { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';\nimport { DocfyUiModule } from 'nestjs-docfy';\n\nconst app = await NestFactory.create(AppModule);\n\nDocfyUiModule.setup('/docs', app); // before SwaggerModule.setup, see staticSpecPath below\n\nconst document = SwaggerModule.createDocument(app, new DocumentBuilder().build());\nSwaggerModule.setup('api', app, document); // exposes /api-json, which docfy-ui fetches by default\n\nawait app.listen(3000);\n```\n\nVisit `/docs`: no further configuration needed, since `docfy-ui` fetches `/api-json` same-origin by default.\n\n| Option                   | Type                                         | Default | Description                                                                                                                            |\n| ------------------------ | -------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- |\n| `staticSpecPath`         | `string`                                     | —       | Path to a pre-built OpenAPI JSON file, served at `/api-json` _instead of_ the app's live one.                                          |\n| `specs`                  | `{ name: string; url: string }[]`            | —       | Extra OpenAPI specs to offer in `docfy-ui`'s spec switcher, so one deployed instance can browse more than one service's documentation. |\n| `openApiDocument`        | `{ servers?: { url: string }[] }`            | —       | Enables the \"Try it out\" same-origin proxy — pass the same object you already have from `SwaggerModule.createDocument()`. See below.   |\n| `additionalProxyOrigins` | `string[]`                                   | —       | Extra origins the proxy is allowed to forward requests to, beyond what `openApiDocument.servers` declares.                             |\n| `llmsTxt`                | `true \\| { document, title?, description? }` | —       | Serves `llms.txt`/`llms-full.txt` at `mountPath`. See below.                                                                           |\n| `guides`                 | `{ slug, title, content }[]`                 | —       | Narrative markdown pages at `{mountPath}/guides/:slug`, listed in the sidebar. See below.                                              |\n\n**`staticSpecPath`: needed if your app builds with `\"webpack\": true`, and you're not using the [CLI plugin](#webpack-true-build-mode).** `DocfyModule`'s runtime metadata pipeline cannot apply docs files there, so the live `/api-json` will be missing everything docs files would otherwise add. Generate a patched document ahead of time:\n\n```bash\nnpx nestjs-docfy patch-spec --spec http://localhost:3000/api-json --out openapi.patched.json\n```\n\nThen serve that instead:\n\n```ts\nDocfyUiModule.setup('/docs', app, { staticSpecPath: './openapi.patched.json' });\n```\n\nCall this **before** `SwaggerModule.setup()`: Express resolves routes in registration order, so the static, patched document takes precedence over the live one for any request to `/api-json`.\n\n> **Fastify caveat**: `SwaggerModule.setup()` also registers its own `/api-json` route by default. On Express, whichever route is registered first silently wins. On Fastify, registering the same exact route twice throws `FST_ERR_DUPLICATED_ROUTE` at startup instead. Registration order does not save you. When using `staticSpecPath` together with Fastify, point `SwaggerModule.setup()` at a different `jsonDocumentUrl`, or pass `{ raw: false }`, so it doesn't also claim `/api-json`.\n>\n> `docfy-ui` reads the mount prefix `DocfyUiModule.setup()` injects (`window.__DOCFY_BASE_PATH__`) and passes it as `BrowserRouter`'s `basename`, so deep client-side routes (e.g. reloading an endpoint's detail page directly) resolve correctly at any `mountPath`, not just `/`.\n\n**`openApiDocument` / `additionalProxyOrigins`: enables `docfy-ui`'s \"Try it out\" same-origin proxy.** Without it, \"Try it out\" does a direct `fetch()` from the browser to the target API, subject to that API's own CORS policy. With it, the browser instead calls a same-origin route this module registers (`POST {mountPath}/__docfy_proxy`), and the proxy makes the real request server-to-server — CORS never applies.\n\n```ts\nconst document = SwaggerModule.createDocument(app, new DocumentBuilder().build());\nSwaggerModule.setup('api', app, document);\nDocfyUiModule.setup('/docs', app, { openApiDocument: document });\n```\n\nThe proxy's allowlist is built **only** from absolute URLs in the OpenAPI document's `servers[]` array (plus anything in `additionalProxyOrigins`) — a request for any other origin gets rejected with `403` and an `X-Docfy-Proxy-Error: origin_not_allowed` response header. There is deliberately no implicit \"same origin as this request\" fallback: that would have to be derived from client-controlled request headers (`Host`), which is a classic SSRF vector — someone hitting the proxy endpoint directly (not through a browser, no CORS involved) could forge it to reach an internal-only origin. Declare `servers[]` in your `DocumentBuilder` config to opt an origin in; without any absolute `servers[]` entry, the route exists but always returns `403`.\n\nEvery other proxy failure (target unreachable, timeout) also sets `X-Docfy-Proxy-Error`, so `docfy-ui` can tell a proxy-level failure apart from a real `4xx`/`5xx` response coming from your API — those pass through untouched, with their real status/headers/body.\n\n**`llmsTxt`: opt-in, serves `llms.txt`/`llms-full.txt` at `mountPath`** (the [llmstxt.org](https://llmstxt.org) convention) — lets an agent discover the API's endpoints with a plain `curl`/`fetch`, no MCP server required. `llms.txt` lists one bullet per endpoint (linking to its `docfy-ui` page); `llms-full.txt` expands each into its full \"Copy for AI\" text, the same content [`docfy-mcp`](../docfy-mcp)'s `get_endpoint` tool returns. Never registered unless this option is set.\n\n```ts\n// Reuses the already-loaded staticSpecPath document — requires that option too\nDocfyUiModule.setup('/docs', app, { staticSpecPath: './openapi.patched.json', llmsTxt: true });\n\n// Or pass a live SwaggerModule-produced spec explicitly\nconst document = SwaggerModule.createDocument(app, new DocumentBuilder().build());\nDocfyUiModule.setup('/docs', app, { llmsTxt: { document } });\n```\n\nVisiting `/docs/llms.txt` then returns something like:\n\n```text\n# My API\n\n## Users\n- [GET /users](/docs/Users/listUsers): List all users\n```\n\n`title`/`description` default to the spec's own `info.title`/`info.description`, overridable via `llmsTxt: { document, title, description }`.\n\n**`guides`: opt-in, renders narrative markdown pages** (onboarding, tutorials — anything that isn't \"here's an endpoint\") at `{mountPath}/guides/:slug`, listed in `docfy-ui`'s sidebar above the endpoint tag tree. Pass the already-read file contents, not a path — this module has no opinion on where guide files live in your project:\n\n```ts\nimport * as fs from 'fs';\n\nDocfyUiModule.setup('/docs', app, {\n  guides: [\n    {\n      slug: 'getting-started',\n      title: 'Getting Started',\n      content: fs.readFileSync('./guides/getting-started.md', 'utf8'),\n    },\n  ],\n});\n```\n\nRendered via [`react-markdown`](https://github.com/remarkjs/react-markdown) + GFM support in `docfy-ui` — tables, code blocks (via the same `CodeBlock` component the rest of the UI uses), links, everything you'd expect from markdown. Omit `guides` entirely to leave the sidebar unchanged — no new routes, no new UI.\n\nA guide can also embed a live, runnable request via a ` ```docfy-try ` fenced block (single line: `METHOD /path` matching an endpoint in the current spec) — renders the endpoint's real `RequestPanel` (Code/Try it out, real auth) inline in the narrative instead of just linking to its page. See [`docfy-ui`'s README](https://github.com/MarvinRF/docfy-ui#embedded-try-it-out-docfy-try-blocks) for the exact syntax.\n\n## Interface-typed DTOs\n\nWhen a response or body type is a TypeScript `interface` (not a class), Swagger cannot use it as a `type:` value because interfaces are erased at runtime. `nestjs-docfy` detects this automatically and generates an inline `schema:` object instead. **No changes to your code required.**\n\n```ts\n// Your existing interface, no need to convert to a class\nexport interface RegisterResponseDto {\n  success: boolean;\n  message: string | null;\n}\n```\n\nGenerated output:\n\n```ts\nApiResponse({\n  status: 201,\n  description: 'Created',\n  schema: {\n    type: 'object',\n    properties: {\n      success: { type: 'boolean' },\n      message: { type: 'string', nullable: true },\n    },\n    required: ['success'],\n  },\n}),\n```\n\nSupports: primitives, nullable unions (`T | null`), arrays, nested interfaces, and optional properties (excluded from `required`).\n\n**Generic types** (e.g. `Promise<PaginatedResponse<UserDto>>`) resolve the real type argument in place of `T` — a `PaginatedResponse<string>`'s `items: T[]` property correctly becomes `items: { type: 'array', items: { type: 'string' } }`, and likewise when `T` is an `interface` (inlined the same way as above). When `T` is a `class`, the property still falls back to `items: { type: 'array', items: { type: 'object' } }` — classes are never inlined into _nested_ properties (only a method's own top-level return type gets its full class-derived schema), so this is the same pre-existing limitation any nested class reference has, not something specific to generics.\n\n## class-validator inference\n\nWhen a DTO class uses `class-validator` decorators and does **not** already have `@ApiProperty` on its properties, `nestjs-docfy` infers a full JSON Schema from the validator decorators. No manual annotation required.\n\n```ts\n// create-user.dto.ts\nimport { IsString, IsEmail, MinLength, IsOptional } from 'class-validator';\n\nexport class CreateUserDto {\n  @IsString()\n  @MinLength(2)\n  name: string;\n\n  @IsEmail()\n  email: string;\n\n  @IsOptional()\n  @IsString()\n  bio?: string;\n}\n```\n\nGenerated output:\n\n```ts\nApiBody({\n  schema: {\n    type: 'object',\n    properties: {\n      name:  { type: 'string', minLength: 2 },\n      email: { type: 'string', format: 'email' },\n      bio:   { type: 'string' },\n    },\n    required: ['name', 'email'],\n  },\n}),\n```\n\nSupported decorators: `@IsString`, `@IsEmail`, `@IsUrl`, `@IsUUID`, `@IsDateString`, `@IsNumber`, `@IsInt`, `@IsBoolean`, `@IsArray`, `@Min`, `@Max`, `@MinLength`, `@MaxLength`, `@IsOptional`.\n\n> If any property in the class already has `@ApiProperty`, inference is skipped and `type: ClassName` is used instead. Your existing Swagger annotations are never overwritten.\n\n## File uploads\n\nA parameter decorated with `@UploadedFile()`/`@UploadedFiles()` automatically gets `@ApiConsumes('multipart/form-data')` plus a binary-format `@ApiBody` schema — the exact pattern `@nestjs/swagger`'s own docs recommend for file uploads. No manual annotation required.\n\n```ts\n// users.controller.ts\n@Post(':id/avatar')\n@UseInterceptors(FileInterceptor('file'))\nuploadAvatar(@Param('id') id: string, @UploadedFile() file: Express.Multer.File) { ... }\n```\n\nGenerated output:\n\n```ts\nuploadAvatar: [\n  ApiOperation({ summary: 'Upload avatar' }),\n  ApiParam({ name: 'id', type: String }),\n  ApiConsumes('multipart/form-data'),\n  ApiBody({ schema: { type: 'object', properties: { file: { type: 'string', format: 'binary' } } } }),\n  ApiResponse({ status: 201, description: 'Created' }),\n],\n```\n\n`@UploadedFiles()` generates an array schema instead: `files: { type: 'array', items: { type: 'string', format: 'binary' } } }`.\n\nThe schema property is always the generic name `file`/`files` — it isn't inferred from `FileInterceptor('fieldName')`, so rename it by hand in the generated stub if your field is named differently.\n\n> When the method also has a `@Body()` DTO param (form-data with both fields and a file), only `@ApiConsumes` is auto-generated — the DTO's own `@ApiBody({ type: ... })` is left as-is rather than guessing a merged schema. Add the file field to that schema manually.\n\n## @HttpCode() support\n\nNestJS's `@HttpCode()` decorator overrides the default HTTP status code for a route handler. `nestjs-docfy` reads it automatically and uses the correct code in the generated `ApiResponse`.\n\n```ts\n// users.controller.ts\n@Post('logout')\n@HttpCode(204)\nlogout(): void { ... }\n```\n\nGenerated output:\n\n```ts\nlogout: [\n  ApiOperation({ summary: 'Logout' }),\n  ApiResponse({ status: 204, description: 'No Content' }),\n],\n```\n\nWithout `@HttpCode()`, the default codes apply: `201` for `@Post`, `200` for all other HTTP verbs.\n\n## Tag groups (x-tagGroups)\n\nPass `group` and `tags` to `docs()` to organize controllers under logical sections in tools that support the `x-tagGroups` OpenAPI extension, most notably [ReDoc](https://github.com/Redocly/redoc).\n\n```ts\n// users.controller.docs.ts\ndocs(UsersController, {\n  classDecorators: [ApiTags('users')],\n  group: 'Administration',\n  tags: ['users'],\n});\n\n// roles.controller.docs.ts\ndocs(RolesController, {\n  classDecorators: [ApiTags('roles')],\n  group: 'Administration',\n  tags: ['roles'],\n});\n```\n\n`tags` should match what you already pass to `ApiTags()`. `nestjs-docfy` does not call `ApiTags` for you, it only builds the `x-tagGroups` mapping from what you declare.\n\nTo actually attach the groups to the generated document, call `attachTagGroups()` after `SwaggerModule.createDocument()`:\n\n```ts\n// main.ts\nimport { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';\nimport { attachTagGroups } from 'nestjs-docfy';\n\nconst config = new DocumentBuilder().setTitle('My API').build();\nconst document = SwaggerModule.createDocument(app, config);\n\nSwaggerModule.setup('api', app, attachTagGroups(document));\n```\n\nGenerated extension:\n\n```yaml\nx-tagGroups:\n  - name: Administration\n    tags:\n      - users\n      - roles\n```\n\nMultiple `docs()` calls can contribute to the same group; tags are merged and deduplicated. `attachTagGroups()` is a no-op (returns the document unchanged) when no controller declares a `group`.\n\n## File naming convention\n\nDiscovery is automatic. `DocfyModule` locates each controller's source file via Node's module cache and resolves the companion path. This works identically in `ts-node` (development) and compiled `dist/` (production).\n\n| Controller file       | Companion docs file        |\n| --------------------- | -------------------------- |\n| `users.controller.ts` | `users.controller.docs.ts` |\n| `users.controller.js` | `users.controller.docs.js` |\n\n> **Barrel re-exports**: if your controller is also exported from an `index.ts` barrel, make sure the class is exported directly from its own module file. `nestjs-docfy` prefers `.controller.ts` over barrel files.\n\n### `webpack: true` build mode\n\nIf your `nest-cli.json` has `\"webpack\": true` under `compilerOptions` (the documented default for monorepos with multiple apps), `DocfyModule`'s **runtime** pipeline (the `@WithDocs()` + `require.cache` discovery described above) will not work, and there is no configuration that makes it work. This is architectural, not a bug to be patched around:\n\n- Webpack inlines every module into one bundle file and never populates Node's `require.cache` with an entry per original source file, which is what the discovery mechanism above depends on. You'll see `Could not locate source file for X` for every `@WithDocs()` controller.\n- Even if that lookup is worked around (e.g. by recovering the original path from the bundle's source map, sidestepping `require.cache` entirely), there's a second, unavoidable wall: a docs file required from outside the bundle creates a structurally different class object than the one the running app actually uses internally. Decorating that fresh copy has no effect on the document `SwaggerModule.createDocument()` actually serves, silently, with no error. This path-recovery layer was built and tested before discovering this; it isn't shipped, because \"looks like it loaded, does nothing\" is worse than the current loud, accurate warning.\n- The only way around this would be for the controller's own file to import its `.docs.ts` companion (forcing webpack to bundle them together), which defeats the entire point of the convention: zero coupling between a controller and its documentation.\n\nThere are two ways to get full docs under `webpack: true`, in order of preference:\n\n#### 1. The CLI plugin (recommended): fixes it at the root, automatically, on every build\n\nRegister `nestjs-docfy` as a NestJS CLI compiler plugin in `nest-cli.json`:\n\n```json\n{\n  \"compilerOptions\": {\n    \"webpack\": true,\n    \"plugins\": [\"nestjs-docfy\"]\n  }\n}\n```\n\nThis is the same mechanism `@nestjs/swagger`'s own CLI plugin uses to work under `webpack: true`. That's why `@ApiProperty()` isn't required on every DTO property even in a webpack build. The Nest CLI feeds a TypeScript compiler-plugin hook (`compilerOptions.plugins`) into both the `tsc` and the `webpack` (`ts-loader`) builder identically. `nestjs-docfy`'s plugin doesn't rewrite any decorator syntax or touch the AST at all. On every compilation it re-runs the exact same static analysis `generate`/`check`/`patch-spec` already do (via `ts-morph`, against the source tree, not the bundle) and writes the resulting patch to `docfy-metadata.json` next to your build output. There's no `require.cache` involved and no bundled-class-identity problem, because it never needs the running app to compute anything.\n\nThen, right after `SwaggerModule.createDocument()`, merge that file into the document:\n\n```ts\nimport { applyDocfyMetadata } from 'nestjs-docfy';\n\nconst document = SwaggerModule.createDocument(app, config);\nSwaggerModule.setup('api', app, applyDocfyMetadata(document));\n```\n\n`applyDocfyMetadata()` reads `docfy-metadata.json` from next to your compiled entry file by default. Pass `{ metadataPath }` to point somewhere else. If the file is missing (e.g. the plugin isn't registered), it warns and returns the document unchanged; pass `{ strict: true }` to throw instead, the same `strict` convention `DocfyModule.forRoot()` already uses.\n\n**The SWC builder (`\"builder\": \"swc\"`) needs `\"typeCheck\": true`.**","readmeFilename":"README.md"}