{"_id":"@authuser/nest-fastify-kit","_rev":"9-c9e93ecdb79d15f54a87b54fe4709c40","name":"@authuser/nest-fastify-kit","dist-tags":{"latest":"0.1.8"},"versions":{"0.1.0":{"name":"@authuser/nest-fastify-kit","version":"0.1.0","license":"MIT","_id":"@authuser/nest-fastify-kit@0.1.0","maintainers":[{"name":"jscodex","email":"sgonzalez@jscode.es"}],"dist":{"shasum":"d012cd0801b79ac62a5f5f1bbf1e85a784e329ca","tarball":"https://registry.npmjs.org/@authuser/nest-fastify-kit/-/nest-fastify-kit-0.1.0.tgz","fileCount":40,"integrity":"sha512-X7xLcQMRHZZYtvxTWvCckh9cPTvASzBPn2iTLBhVw6CcqzQv3AiKJX+ULWIDzT5vyv6Fs2zwTsoVZpO78VXz5w==","signatures":[{"sig":"MEUCIQDX5XWtURnH4FDH3y/yDLTGQueLD94MzX+xbBJHqqfumAIgNlT4cJSgCoklNXoEwCcw1t/JFCKPqkRPtQdxIwvuQDE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49031},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"jscodex","email":"sgonzalez@jscode.es"},"overrides":{"@nestjs/platform-fastify":{"fastify":"5.8.2"}},"_npmVersion":"11.5.2","description":"Reusable NestJS + Fastify HTTP foundation kit","directories":{},"_nodeVersion":"22.19.0","dependencies":{"pino":"^9.0.0","@fastify/helmet":"^13.0.0","@fastify/compress":"^8.0.0","@fastify/rate-limit":"^10.0.0","@fastify/request-context":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"^7.8.0","rimraf":"^6.0.0","vitest":"^4.0.18","fastify":"^5.0.0","typescript":"^5.7.0","@types/node":"^20.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","@nestjs/terminus":"^11.0.0","reflect-metadata":"^0.2.0","@nestjs/platform-fastify":"^11.0.0"},"peerDependencies":{"rxjs":"^7.8.0","fastify":"5.8.2","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","@nestjs/terminus":"^11.0.0","reflect-metadata":"^0.2.0","@nestjs/platform-fastify":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nest-fastify-kit_0.1.0_1773079029336_0.8545556418802369","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@authuser/nest-fastify-kit","version":"0.1.1","license":"MIT","_id":"@authuser/nest-fastify-kit@0.1.1","maintainers":[{"name":"jscodex","email":"sgonzalez@jscode.es"}],"dist":{"shasum":"8efb35bcd56fc0b666759ca12e860c691ca99028","tarball":"https://registry.npmjs.org/@authuser/nest-fastify-kit/-/nest-fastify-kit-0.1.1.tgz","fileCount":40,"integrity":"sha512-fO0h/6l1CMO4j2mx9kzOkGDUOKUjJgmoFpW8zHIah3e2tfVHL230OzoTfdinkbEyMAzqAI5/yFyDUbcmFTL3MQ==","signatures":[{"sig":"MEUCIQD4chGl4z7wg6mw64mz50bCLLwUjGpdtx9F87k/WftKzgIgD08tOeRjmCFFsYNyaWNvIuQo1VsmMh4XeuN09s7xMF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48956},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"jscodex","email":"sgonzalez@jscode.es"},"overrides":{"@nestjs/platform-fastify":{"fastify":"5.8.2"}},"_npmVersion":"11.5.2","description":"Reusable NestJS + Fastify HTTP foundation kit","directories":{},"_nodeVersion":"22.19.0","dependencies":{"pino":"^9.0.0","@fastify/helmet":"^13.0.0","@fastify/compress":"^8.0.0","@fastify/rate-limit":"^10.0.0","@fastify/request-context":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"^7.8.0","rimraf":"^6.0.0","vitest":"^4.0.18","fastify":"^5.0.0","typescript":"^5.7.0","@types/node":"^20.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","@nestjs/terminus":"^11.0.0","reflect-metadata":"^0.2.0","@nestjs/platform-fastify":"^11.0.0"},"peerDependencies":{"rxjs":"^7.8.0","fastify":"5.8.2","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","@nestjs/terminus":"^11.0.0","reflect-metadata":"^0.2.0","@nestjs/platform-fastify":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nest-fastify-kit_0.1.1_1773079196461_0.8233790459248045","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@authuser/nest-fastify-kit","version":"0.1.2","license":"MIT","_id":"@authuser/nest-fastify-kit@0.1.2","maintainers":[{"name":"jscodex","email":"sgonzalez@jscode.es"}],"dist":{"shasum":"64fd34512f21050d91377d7933a0d706c4c86612","tarball":"https://registry.npmjs.org/@authuser/nest-fastify-kit/-/nest-fastify-kit-0.1.2.tgz","fileCount":40,"integrity":"sha512-c99XRwo9+VjI4tKSZ2k/kI73zVtivF4iTSkNzXIZnFq3PqI95lMcAC6O3kZ/q8VGAUmI4wnIN69euCntIno5Tw==","signatures":[{"sig":"MEUCIHT3FRL/1b2VXyCifOHkF1dU+lHG0B4YS9ZfM1XWWEouAiEA+d9/GfNGVUQZdz4S8nlDx7k+gJ00IV772TdK2qihWLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49205},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"jscodex","email":"sgonzalez@jscode.es"},"overrides":{"@nestjs/platform-fastify":{"fastify":"5.8.2"}},"_npmVersion":"11.5.2","description":"Reusable NestJS + Fastify HTTP foundation kit","directories":{},"_nodeVersion":"22.19.0","dependencies":{"pino":"^9.0.0","rxjs":"^7.8.0","fastify":"^5.8.2","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@fastify/helmet":"^13.0.0","@nestjs/swagger":"^11.0.0","@nestjs/terminus":"^11.0.0","reflect-metadata":"^0.2.0","@fastify/compress":"^8.0.0","@fastify/rate-limit":"^10.0.0","@fastify/request-context":"^6.0.0","@nestjs/platform-fastify":"^11.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"^7.8.0","rimraf":"^6.0.0","vitest":"^4.0.18","fastify":"^5.0.0","typescript":"^5.7.0","@types/node":"^20.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/swagger":"^11.0.0","@nestjs/terminus":"^11.0.0","reflect-metadata":"^0.2.0","@nestjs/platform-fastify":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nest-fastify-kit_0.1.2_1773080754880_0.557915153264422","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@authuser/nest-fastify-kit","version":"0.1.3","license":"MIT","_id":"@authuser/nest-fastify-kit@0.1.3","maintainers":[{"name":"jscodex","email":"sgonzalez@jscode.es"}],"dist":{"shasum":"6940d13ae5d1303abafedd59085f12d751a044cc","tarball":"https://registry.npmjs.org/@authuser/nest-fastify-kit/-/nest-fastify-kit-0.1.3.tgz","fileCount":50,"integrity":"sha512-/jZCNoCggeSd54LqG2CsENpk4+rjrhfXykEjRR78mSU+/18fFyyY3h1nyeC2agYgei/4QFoATzKQBcprqW6TIQ==","signatures":[{"sig":"MEQCID/pXFVz5oDlVT9kp/EyZFj95BukuvIY5bJgLqMNdKrDAiByij/YMrow5EBUuGISzzpmYt2WxehEuxsCaBGzkAiJrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63673},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"jscodex","email":"sgonzalez@jscode.es"},"overrides":{"@nestjs/platform-fastify":{"fastify":"5.8.2"}},"_npmVersion":"11.5.2","description":"Reusable NestJS + Fastify HTTP foundation kit","directories":{},"_nodeVersion":"22.19.0","dependencies":{"pino":"^9.0.0","@fastify/helmet":"^13.0.0","@fastify/compress":"^8.0.0","@fastify/rate-limit":"^10.0.0","@fastify/request-context":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"^7.8.0","rimraf":"^6.0.0","vitest":"^4.0.18","fastify":"^5.0.0","typescript":"^5.7.0","@types/node":"^20.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.0","@nestjs/swagger":"^11.0.0","class-validator":"^0.14.1","@nestjs/terminus":"^11.0.0","reflect-metadata":"^0.2.0","class-transformer":"^0.5.1","@nestjs/platform-fastify":"^11.0.0"},"peerDependencies":{"rxjs":"^7.8.0","fastify":"^5","@nestjs/core":"^11","@nestjs/common":"^11","@nestjs/config":"^4","@nestjs/swagger":"^11","class-validator":"^0.14","@nestjs/terminus":"^11","reflect-metadata":"^0.2.0","class-transformer":"^0.5","@nestjs/platform-fastify":"^11"},"peerDependenciesMeta":{"@nestjs/config":{"optional":true},"@nestjs/swagger":{"optional":true},"@nestjs/terminus":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nest-fastify-kit_0.1.3_1773081770822_0.6890957486960567","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@authuser/nest-fastify-kit","version":"0.1.4","license":"MIT","_id":"@authuser/nest-fastify-kit@0.1.4","maintainers":[{"name":"jscodex","email":"sgonzalez@jscode.es"}],"dist":{"shasum":"07528b691f3bdf670157746fcc14af8cb25bb59c","tarball":"https://registry.npmjs.org/@authuser/nest-fastify-kit/-/nest-fastify-kit-0.1.4.tgz","fileCount":50,"integrity":"sha512-n5J0qU+eHTC1CLtMGwPT6XXzyXBm14Bex7+h9vy91pDW1/rp8Jnt2zavLcgFl94EO5kDdc41A3XPMtMw1tPnsA==","signatures":[{"sig":"MEQCIHSI1IujG2TOEAqSKJL3jnHYxTngT8siEE1bbsg3AoZDAiAXlC3WZ0FOONGwpqOsV84kVzA53hweuJYXCNW9onggYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63974},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"jscodex","email":"sgonzalez@jscode.es"},"overrides":{"@nestjs/platform-fastify":{"fastify":"5.8.2"}},"_npmVersion":"11.5.2","description":"Reusable NestJS + Fastify HTTP foundation kit","directories":{},"_nodeVersion":"22.19.0","dependencies":{"pino":"^9.0.0","@fastify/helmet":"^13.0.0","@fastify/compress":"^8.0.0","@fastify/rate-limit":"^10.0.0","@fastify/request-context":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"^7.8.0","rimraf":"^6.0.0","vitest":"^4.0.18","fastify":"^5.0.0","typescript":"^5.7.0","@types/node":"^20.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.0","@nestjs/swagger":"^11.0.0","class-validator":"^0.14.1","@nestjs/terminus":"^11.0.0","reflect-metadata":"^0.2.0","class-transformer":"^0.5.1","@nestjs/platform-fastify":"^11.0.0"},"peerDependencies":{"rxjs":"^7.8.0","fastify":"^5","@nestjs/core":"^11","@nestjs/common":"^11","@nestjs/config":"^4","@nestjs/swagger":"^11","class-validator":"^0.14","@nestjs/terminus":"^11","reflect-metadata":"^0.2.0","class-transformer":"^0.5","@nestjs/platform-fastify":"^11"},"peerDependenciesMeta":{"@nestjs/config":{"optional":true},"@nestjs/swagger":{"optional":true},"@nestjs/terminus":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nest-fastify-kit_0.1.4_1773082323482_0.9332304196689774","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@authuser/nest-fastify-kit","version":"0.1.5","license":"MIT","_id":"@authuser/nest-fastify-kit@0.1.5","maintainers":[{"name":"jscodex","email":"sgonzalez@jscode.es"}],"dist":{"shasum":"f68074a97a68ed932975d988caedef5f50bea9d9","tarball":"https://registry.npmjs.org/@authuser/nest-fastify-kit/-/nest-fastify-kit-0.1.5.tgz","fileCount":50,"integrity":"sha512-TMG7a+C303DFKng/GIkKN+hDriOPoBMhfHT0TlcGkvnM1qEjiSVIBDQvtMTTWpMCVADK9QYl9U0NnawIuTqncw==","signatures":[{"sig":"MEQCICDWGgtNuIDTR5mYW22b4x1532ue8SZWE6HCs0vrYyxHAiAFSygDpt5SkkSjH+Zsh2oiCb4Lh7K2/zq3a11HymX5KA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64494},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"jscodex","email":"sgonzalez@jscode.es"},"overrides":{"@nestjs/platform-fastify":{"fastify":"5.8.2"}},"_npmVersion":"11.5.2","description":"Reusable NestJS + Fastify HTTP foundation kit","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@fastify/helmet":"^13.0.0","@fastify/compress":"^8.0.0","@fastify/rate-limit":"^10.0.0","@fastify/request-context":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"^7.8.0","rimraf":"^6.0.0","vitest":"^4.0.18","fastify":"^5.0.0","typescript":"^5.7.0","@types/node":"^20.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.0","@nestjs/swagger":"^11.0.0","class-validator":"^0.14.1","@nestjs/terminus":"^11.0.0","reflect-metadata":"^0.2.0","class-transformer":"^0.5.1","@nestjs/platform-fastify":"^11.0.0"},"peerDependencies":{"rxjs":"^7.8.0","fastify":"^5","@nestjs/core":"^11","@nestjs/common":"^11","@nestjs/config":"^4","@nestjs/swagger":"^11","class-validator":"^0.14","@nestjs/terminus":"^11","reflect-metadata":"^0.2.0","class-transformer":"^0.5","@nestjs/platform-fastify":"^11"},"peerDependenciesMeta":{"@nestjs/config":{"optional":true},"@nestjs/swagger":{"optional":true},"@nestjs/terminus":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nest-fastify-kit_0.1.5_1773082826565_0.529881403407197","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@authuser/nest-fastify-kit","version":"0.1.6","license":"MIT","_id":"@authuser/nest-fastify-kit@0.1.6","maintainers":[{"name":"jscodex","email":"sgonzalez@jscode.es"}],"dist":{"shasum":"4a51ec37ccc4a4dbdcabb7a26297bf1968fb9103","tarball":"https://registry.npmjs.org/@authuser/nest-fastify-kit/-/nest-fastify-kit-0.1.6.tgz","fileCount":52,"integrity":"sha512-nWeGfFa7gcPuLj03xtPDHT3nzgHlm/BN9dlSjrtC5+JoifgUZgisgE0vkNNG9UHoWBA9CNlDmlZKGE5zLwYaLw==","signatures":[{"sig":"MEYCIQCIO7i51KnMvec3besFL3bBkuOTFIHMeE4TygsBTXtgSwIhAMtVhRuClyAYU5ROx2le6aQpYWUBjMwDSwSdauiEeIrF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67785},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"jscodex","email":"sgonzalez@jscode.es"},"overrides":{"@nestjs/platform-fastify":{"fastify":"5.8.2"}},"_npmVersion":"11.5.2","description":"Reusable NestJS + Fastify HTTP foundation kit","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@fastify/helmet":"^13.0.0","@fastify/compress":"^8.0.0","@fastify/rate-limit":"^10.0.0","@fastify/request-context":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"^7.8.0","rimraf":"^6.0.0","vitest":"^4.0.18","fastify":"^5.0.0","typescript":"^5.7.0","@types/node":"^20.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.0","@nestjs/swagger":"^11.0.0","class-validator":"^0.14.1","@nestjs/terminus":"^11.0.0","reflect-metadata":"^0.2.0","class-transformer":"^0.5.1","@nestjs/platform-fastify":"^11.0.0"},"peerDependencies":{"rxjs":"^7.8.0","fastify":"^5","@nestjs/core":"^11","@nestjs/common":"^11","@nestjs/config":"^4","@nestjs/swagger":"^11","class-validator":"^0.14","@nestjs/terminus":"^11","reflect-metadata":"^0.2.0","class-transformer":"^0.5","@nestjs/platform-fastify":"^11"},"peerDependenciesMeta":{"@nestjs/config":{"optional":true},"@nestjs/swagger":{"optional":true},"@nestjs/terminus":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nest-fastify-kit_0.1.6_1773084025287_0.3076730345567511","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@authuser/nest-fastify-kit","version":"0.1.7","license":"MIT","_id":"@authuser/nest-fastify-kit@0.1.7","maintainers":[{"name":"jscodex","email":"sgonzalez@jscode.es"}],"dist":{"shasum":"37ed37e32ef03e1cf7445816d4fe92fd77944d35","tarball":"https://registry.npmjs.org/@authuser/nest-fastify-kit/-/nest-fastify-kit-0.1.7.tgz","fileCount":52,"integrity":"sha512-N7lFqGyCsdMc8SES5RVVAydcrTSKdMZPVvYIuYwVJvXRah5MvYIfwb06HXzW0IZD9Y7Q/eZtTSXZbKf2KQYtZQ==","signatures":[{"sig":"MEQCIG8ASZ2rmQi/l0FmXa/6l4jGoiUFVqm80exErrR3U6H3AiAvkNdxjNshzeFKYrPhP2wx60hpLZT6x/CuQjxvaGKKUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68559},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"jscodex","email":"sgonzalez@jscode.es"},"overrides":{"@nestjs/platform-fastify":{"fastify":"5.8.2"}},"_npmVersion":"11.5.2","description":"Reusable NestJS + Fastify HTTP foundation kit","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@fastify/helmet":"^13.0.0","@fastify/compress":"^8.0.0","@fastify/rate-limit":"^10.0.0","@fastify/request-context":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"^7.8.0","rimraf":"^6.0.0","vitest":"^4.0.18","fastify":"^5.0.0","typescript":"^5.7.0","@types/node":"^20.0.0","@nestjs/core":"^11.0.0","@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.0","@nestjs/swagger":"^11.0.0","class-validator":"^0.14.1","@nestjs/terminus":"^11.0.0","reflect-metadata":"^0.2.0","class-transformer":"^0.5.1","@nestjs/platform-fastify":"^11.0.0"},"peerDependencies":{"rxjs":"^7.8.0","fastify":"^5","@nestjs/core":"^11","@nestjs/common":"^11","@nestjs/config":"^4","@nestjs/swagger":"^11","class-validator":"^0.14","@nestjs/terminus":"^11","reflect-metadata":"^0.2.0","class-transformer":"^0.5","@nestjs/platform-fastify":"^11"},"peerDependenciesMeta":{"@nestjs/config":{"optional":true},"@nestjs/swagger":{"optional":true},"@nestjs/terminus":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nest-fastify-kit_0.1.7_1773085164570_0.5025076944541409","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@authuser/nest-fastify-kit","version":"0.1.8","description":"Reusable NestJS + Fastify HTTP foundation kit","license":"MIT","type":"commonjs","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit","test":"vitest run"},"overrides":{"@nestjs/platform-fastify":{"fastify":"5.8.2"}},"peerDependencies":{"@nestjs/common":"^11","@nestjs/config":"^4","@nestjs/core":"^11","@nestjs/platform-fastify":"^11","@nestjs/swagger":"^11","@nestjs/terminus":"^11","class-transformer":"^0.5","class-validator":"^0.14","fastify":"^5","reflect-metadata":"^0.2.0","rxjs":"^7.8.0"},"peerDependenciesMeta":{"@nestjs/config":{"optional":true},"@nestjs/swagger":{"optional":true},"@nestjs/terminus":{"optional":true}},"dependencies":{"@fastify/compress":"^8.0.0","@fastify/helmet":"^13.0.0","@fastify/rate-limit":"^10.0.0","@fastify/request-context":"^6.0.0"},"devDependencies":{"@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.0","@nestjs/core":"^11.0.0","@nestjs/platform-fastify":"^11.0.0","@nestjs/swagger":"^11.0.0","@nestjs/terminus":"^11.0.0","@types/node":"^20.0.0","class-transformer":"^0.5.1","class-validator":"^0.14.1","fastify":"^5.0.0","reflect-metadata":"^0.2.0","rimraf":"^6.0.0","rxjs":"^7.8.0","typescript":"^5.7.0","vitest":"^4.0.18"},"_id":"@authuser/nest-fastify-kit@0.1.8","_nodeVersion":"22.19.0","_npmVersion":"11.5.2","dist":{"integrity":"sha512-h97FchYdSUCLzQpuNgfJmZW6gqPcGA/4KqJncxxloLi15hzij3LYRJ7AQpKpV9g2reA4MQNXQ6rqUUZOMdeMEQ==","shasum":"20f5c27539ae745f84077d6178e4b17b41e6c6d8","tarball":"https://registry.npmjs.org/@authuser/nest-fastify-kit/-/nest-fastify-kit-0.1.8.tgz","fileCount":52,"unpackedSize":59164,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBOdvBYFb4ZEp4auTFqXDLDKa/XZ2zafsRGL9Pq4/W0GAiAXwvM1H6d1IL+1w8DsCjmHREgIByBe3qssahpDKtetrw=="}]},"_npmUser":{"name":"jscodex","email":"sgonzalez@jscode.es"},"directories":{},"maintainers":[{"name":"jscodex","email":"sgonzalez@jscode.es"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nest-fastify-kit_0.1.8_1773089883684_0.5054399729004939"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-09T17:57:09.244Z","modified":"2026-03-09T20:58:03.949Z","0.1.0":"2026-03-09T17:57:09.479Z","0.1.1":"2026-03-09T17:59:56.616Z","0.1.2":"2026-03-09T18:25:55.028Z","0.1.3":"2026-03-09T18:42:51.023Z","0.1.4":"2026-03-09T18:52:03.655Z","0.1.5":"2026-03-09T19:00:26.713Z","0.1.6":"2026-03-09T19:20:25.468Z","0.1.7":"2026-03-09T19:39:24.737Z","0.1.8":"2026-03-09T20:58:03.830Z"},"license":"MIT","description":"Reusable NestJS + Fastify HTTP foundation kit","maintainers":[{"name":"jscodex","email":"sgonzalez@jscode.es"}],"readme":"<br><br>\n\n<div align=\"center\">\n\t<h1>@authuser/nest-fastify-kit</h1>\n\t<p><strong>Production-ready HTTP foundation for NestJS + Fastify</strong></p>\n</div>\n\n<p align=\"center\">\n\tSecure, high-performance bootstrap layer for NestJS APIs with sensible defaults.\n</p>\n\n<p align=\"center\">\n\t<a href=\"https://www.npmjs.com/package/@authuser/nest-fastify-kit\"><b>npm</b></a> •\n\t<a href=\"#quick-start\"><b>Quick Start</b></a> •\n\t<a href=\"#configuration\"><b>Configuration</b></a> •\n\t<a href=\"#faq\"><b>FAQ</b></a>\n</p>\n\n<div align=\"center\">\n\n[![npm version](https://img.shields.io/npm/v/%40authuser%2Fnest-fastify-kit?style=flat-square)](https://www.npmjs.com/package/@authuser/nest-fastify-kit)\n[![npm downloads](https://img.shields.io/badge/npm%20downloads-pending-lightgrey?style=flat-square)](https://www.npmjs.com/package/@authuser/nest-fastify-kit)\n[![npm bundle size](https://img.shields.io/badge/bundle%20size-pending-lightgrey?style=flat-square)](https://www.npmjs.com/package/@authuser/nest-fastify-kit)\n[![license](https://img.shields.io/badge/license-MIT-green?style=flat-square)](#license)\n[![node](https://img.shields.io/badge/node-%3E%3D20-339933?style=flat-square&logo=node.js&logoColor=white)](https://nodejs.org/)\n[![nestjs](https://img.shields.io/badge/nestjs-v11-E0234E?style=flat-square&logo=nestjs&logoColor=white)](https://nestjs.com/)\n[![fastify](https://img.shields.io/badge/fastify-v5-000000?style=flat-square&logo=fastify&logoColor=white)](https://fastify.dev/)\n\n</div>\n\n---\n\n## Table of contents\n\n- [Features](#features)\n- [Installation](#installation)\n- [Quick start](#quick-start)\n- [Public API](#public-api)\n- [Configuration](#configuration)\n- [Presets](#presets)\n- [Advanced guide](#advanced-guide)\n- [TypeScript support](#typescript-support)\n- [Security notes](#security-notes)\n- [FAQ](#faq)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Features\n\n- Fast bootstrap with `NestFactory` + `FastifyAdapter`\n- Strongly typed app options (`CreateHttpAppOptions`)\n- Secure defaults with configurable presets\n- Global validation, filters, and interceptors\n- Nest native logging\n- Request ID propagation via request context\n- Optional Swagger docs and health endpoints\n- Minimal configuration, extensible architecture\n\n## Installation\n\n```bash\nnpm install @authuser/nest-fastify-kit\n```\n\nPeer dependencies expected in your app:\n\n- `@nestjs/common` `^11`\n- `@nestjs/core` `^11`\n- `@nestjs/platform-fastify` `^11`\n- `fastify` `^5`\n- `class-transformer` `^0.5`\n- `class-validator` `^0.14`\n- `reflect-metadata`\n- `rxjs`\n\nOptional peer dependencies (for optional features):\n\n- `@nestjs/config`\n- `@nestjs/swagger`\n- `@nestjs/terminus`\n\n## Quick start\n\n```ts\nimport { createHttpApp } from '@authuser/nest-fastify-kit';\nimport { AppModule } from './app.module';\n\nasync function bootstrap() {\n\tconst app = await createHttpApp({\n\t\trootModule: AppModule,\n\t\tappName: 'users-api',\n\t\tpreset: 'secure',\n\t\tapiPrefix: 'api',\n\t\tapiVersioning: true,\n\t\tdocs: process.env.NODE_ENV !== 'production',\n\t});\n\n\tawait app.listen(3000, '0.0.0.0');\n}\n\nvoid bootstrap();\n```\n\n## Public API\n\n```ts\nexport { createHttpApp } from './bootstrap/create-http-app';\nexport { Public } from './security/auth/decorators/public.decorator';\nexport { Roles } from './security/auth/decorators/roles.decorator';\nexport * from './types/create-http-app-options';\n```\n\n### `createHttpApp(options)`\n\nCreates and configures a `NestFastifyApplication` with common production defaults.\n\n```ts\ncreateHttpApp(options: CreateHttpAppOptions): Promise<NestFastifyApplication>\n```\n\n## Configuration\n\n```ts\ninterface CreateHttpAppOptions {\n\trootModule: unknown;\n\tappName: string;\n\n\tpreset?: 'minimal' | 'secure' | 'full';\n\n\tapiPrefix?: string;\n\tapiVersioning?: boolean;\n\n\tdocs?: boolean;\n\n\tconfig?: {\n\t\tenabled?: boolean;\n\t\tisGlobal?: boolean;\n\t\tignoreEnvFile?: boolean;\n\t\tenvFilePath?: string | string[];\n\t\tvalidate?: (config: Record<string, unknown>) => Record<string, unknown>;\n\t};\n\n\tcors?: {\n\t\torigin: string[] | boolean;\n\t\tcredentials?: boolean;\n\t};\n\n\tsecurity?: {\n\t\thelmet?: boolean;\n\t\tcsp?: boolean;\n\t\thidePoweredBy?: boolean;\n\t\trateLimit?: {\n\t\t\tmax: number;\n\t\t\ttimeWindow: string;\n\t\t\texcludePaths?: string[];\n\t\t};\n\t};\n\n\tnetwork?: {\n\t\ttrustProxy?: boolean | string | number;\n\t};\n\n\tauth?: {\n\t\tenabled?: boolean;\n\t\tuserProperty?: string;\n\t};\n\n\tlifecycle?: {\n\t\tshutdownHooks?: boolean;\n\t};\n\n\tobservability?: {\n\t\tlogger?: {\n\t\t\tlevel?: 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace';\n\t\t};\n\t\trequestLogging?: boolean;\n\t\tstartupLog?: boolean;\n\t\tmetrics?: boolean;\n\t\ttracing?: boolean;\n\t};\n}\n```\n\nFull options reference and defaults are documented in:\n\n- [`docs/advanced.md`](docs/advanced.md)\n\n## Presets\n\n### `minimal`\n\n- Fastify adapter\n- Global validation\n- Logging setup\n\n### `secure` (default)\n\n- Everything in `minimal`\n- Helmet\n- Rate limiting\n- Built-in rate-limit exclusions for `/health` and `/docs`\n- Strict CORS default (`origin: false`) if `cors` is not provided\n- `x-powered-by` header removal\n\n### `full`\n\n- Everything in `secure`\n- Swagger enabled by default (`docs: true`)\n- Health module enabled by default\n- Metrics flag enabled by default (`observability.metrics: true`)\n\n## Advanced guide\n\nDetailed runtime behavior and advanced recipes are available in:\n\n- [`docs/advanced.md`](docs/advanced.md)\n\n## TypeScript support\n\nThis package is built with strict TypeScript settings and publishes declaration files (`dist/*.d.ts`).\n\n## Security notes\n\n- Security defaults are opinionated but not universal.\n- Helmet Content Security Policy is enabled by default (`security.csp: true`).\n- Set `security.csp: false` only when a specific integration requires a temporary relaxation.\n- Always validate CORS origins for your environment.\n- Tune rate limiting based on traffic profile and endpoint sensitivity.\n- Keep dependencies updated in consuming services.\n\n## FAQ\n\n### Does this replace NestJS app architecture?\n\nNo. It standardizes HTTP bootstrap concerns but keeps Nest modules, providers, controllers, and DI patterns intact.\n\n### Can I disable built-in features?\n\nYes. Use `preset: 'minimal'` or override specific options (`security.helmet`, `security.rateLimit`, `docs`, etc.).\n\n### Can I still register my own Fastify/Nest plugins?\n\nYes. `createHttpApp` returns a regular `NestFastifyApplication`.\n\n### Can I customize middleware, proxy behavior, and hooks?\n\nYes.\n\n- Configure proxy trust with `network.trustProxy`.\n- Register your own Fastify plugins/hooks after `createHttpApp(...)` and before `app.listen(...)`.\n- Add regular Nest customizations (global interceptors, filters, pipes, guards) on the returned app instance.\n\n```ts\nconst app = await createHttpApp({\n\trootModule: AppModule,\n\tappName: 'users-api',\n\tnetwork: { trustProxy: true },\n});\n\nconst fastify = app.getHttpAdapter().getInstance();\nawait fastify.register(myFastifyPlugin);\nfastify.addHook('onRequest', myOnRequestHook);\n\napp.useGlobalInterceptors(new MyInterceptor());\n\nawait app.listen(3000, '0.0.0.0');\n```\n\n## Contributing\n\n```bash\nnpm install\nnpm run test\nnpm run typecheck\nnpm run build\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}