{"_id":"@buenojs/bueno","_rev":"12-f4a8a96000ff1ebf7643f0f089888069","name":"@buenojs/bueno","dist-tags":{"latest":"0.8.11"},"versions":{"0.8.0":{"name":"@buenojs/bueno","version":"0.8.0","keywords":["bun","framework","fullstack","http","router","rpc"],"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","_id":"@buenojs/bueno@0.8.0","maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"bin":{"bueno":"dist/cli/index.js"},"dist":{"shasum":"56e20621f2f4b7093c202734915954f7f94b5c9d","tarball":"https://registry.npmjs.org/@buenojs/bueno/-/bueno-0.8.0.tgz","fileCount":120,"integrity":"sha512-ebt03R8MKFtEtKWGdVvkSKoaGmjriZ0JebrpcKQVZi+2de9cWLSuc19vF5OXJ240NebPK6IPr7NFMNiPY4KvOA==","signatures":[{"sig":"MEYCIQDAYLrua2LfFng3xSeTYivX4WZOLWmiKzHt4vMS236bYwIhAKbrhTZmyYlCk0ZAJG3kJ5FNigAzbz+MHUvC2PGeH7Rc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1683008},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"}},"gitHead":"f742084d705ae4e409de7aa014b635e7360a0e6f","scripts":{"cli":"bun run src/cli/bin.ts","dev":"bun run --watch src/index.ts","lint":"bunx biome check ./src","test":"bun test","build":"bun build ./src/index.ts ./src/cli/bin.ts --outdir ./dist --target bun && mv ./dist/cli/bin.js ./dist/cli/index.js","build:cli":"bun build ./src/cli/bin.ts --outdir ./dist/cli --target bun && mv ./dist/cli/bin.js ./dist/cli/index.js","typecheck":"tsc --noEmit","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"sivarajd","email":"sivaraj@synamen.com"},"_npmVersion":"11.6.4","description":"A Bun-Native Full-Stack Framework","directories":{},"_nodeVersion":"22.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","arktype":"^2.0.0","valibot":"^1.0.0","@types/bun":"latest","typescript":"^5.3.0","@biomejs/biome":"^1.9.0"},"peerDependencies":{"zod":"","typia":"^7.0.0","arktype":"","valibot":""},"peerDependenciesMeta":{"zod":{"optional":true},"typia":{"optional":true},"arktype":{"optional":true},"valibot":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bueno_0.8.0_1771489342653_0.035756302930368467","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@buenojs/bueno","version":"0.8.1","keywords":["bun","framework","fullstack","http","router","rpc"],"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","_id":"@buenojs/bueno@0.8.1","maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"bin":{"bueno":"dist/cli/index.js"},"dist":{"shasum":"cca4ffbd00dae628f4852b884f0e6a3f43be0f62","tarball":"https://registry.npmjs.org/@buenojs/bueno/-/bueno-0.8.1.tgz","fileCount":120,"integrity":"sha512-MO9dTiRxFJkxtb2y5X5TOB+FjdJ5lBVrizxLeecZ4EmlNogdgmeLmZJFX3wX3IFRw9VM/V6auGhqT1DJbSx/BQ==","signatures":[{"sig":"MEQCIEV3vVmszJ+ZHJbnK3nze+2Kh72Nu7SZQ108tZCapCUmAiBIOARrQV/AOh001I5MKSu1hComGKdMp2qsJu29l79p4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1683448},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"}},"gitHead":"920863ff9b2979f61f647573a835aeff535aa619","scripts":{"cli":"bun run src/cli/bin.ts","dev":"bun run --watch src/index.ts","lint":"bunx biome check ./src","test":"bun test","build":"bun build ./src/index.ts ./src/cli/bin.ts --outdir ./dist --target bun && mv ./dist/cli/bin.js ./dist/cli/index.js","build:cli":"bun build ./src/cli/bin.ts --outdir ./dist/cli --target bun && mv ./dist/cli/bin.js ./dist/cli/index.js","typecheck":"tsc --noEmit","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"sivarajd","email":"sivaraj@synamen.com"},"_npmVersion":"11.6.4","description":"A Bun-Native Full-Stack Framework","directories":{},"_nodeVersion":"22.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","arktype":"^2.0.0","valibot":"^1.0.0","@types/bun":"latest","typescript":"^5.3.0","@biomejs/biome":"^1.9.0"},"peerDependencies":{"zod":"","typia":"^7.0.0","arktype":"","valibot":""},"peerDependenciesMeta":{"zod":{"optional":true},"typia":{"optional":true},"arktype":{"optional":true},"valibot":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bueno_0.8.1_1771519270490_0.8040373087378347","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@buenojs/bueno","version":"0.8.2","keywords":["bun","framework","fullstack","http","router","rpc"],"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","_id":"@buenojs/bueno@0.8.2","maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"bin":{"bueno":"dist/cli/index.js"},"dist":{"shasum":"9cce61161ad23c9ce8318f774ed052c0b94065c7","tarball":"https://registry.npmjs.org/@buenojs/bueno/-/bueno-0.8.2.tgz","fileCount":120,"integrity":"sha512-9LuuCAC1nK+b+kmduby3+ee6cHEfixELQ4qxNfLvAhVN24jS81ZGo+OmzCc/vPeQlbKDWIKM5yiVn5GYbXfooQ==","signatures":[{"sig":"MEUCIQDbxD16CjCl5VCJGogLB8Kep7ewX49lU5JHaHZnnN7FcgIgL3R8LpW250X5qUX1w5WAln6Pr9yO+oQLUE3FbE6djKs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1690236},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"}},"gitHead":"f70e66ea0f8fca012343c12cc69359ae887d10a2","scripts":{"cli":"bun run src/cli/bin.ts","dev":"bun run --watch src/index.ts","lint":"bunx biome check ./src","test":"bun test","build":"bun build ./src/index.ts ./src/cli/bin.ts --outdir ./dist --target bun && mv ./dist/cli/bin.js ./dist/cli/index.js","build:cli":"bun build ./src/cli/bin.ts --outdir ./dist/cli --target bun && mv ./dist/cli/bin.js ./dist/cli/index.js","typecheck":"tsc --noEmit","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"sivarajd","email":"sivaraj@synamen.com"},"_npmVersion":"11.6.4","description":"A Bun-Native Full-Stack Framework","directories":{},"_nodeVersion":"22.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","arktype":"^2.0.0","valibot":"^1.0.0","@types/bun":"latest","typescript":"^5.3.0","@biomejs/biome":"^1.9.0"},"peerDependencies":{"zod":"","typia":"^7.0.0","arktype":"","valibot":""},"peerDependenciesMeta":{"zod":{"optional":true},"typia":{"optional":true},"arktype":{"optional":true},"valibot":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bueno_0.8.2_1771526484512_0.2339467217365987","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@buenojs/bueno","version":"0.8.3","keywords":["bun","framework","fullstack","http","router","rpc"],"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","_id":"@buenojs/bueno@0.8.3","maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"bin":{"bueno":"dist/cli/index.js"},"dist":{"shasum":"a0cf75dd6501fe7f61090d840cc42a4d473db248","tarball":"https://registry.npmjs.org/@buenojs/bueno/-/bueno-0.8.3.tgz","fileCount":120,"integrity":"sha512-/rd1ccPq/4FYzSXC1jxXGIVdcuFdnkCEyctZnWh300LN6owYON2eykgLrNhopFIqU8dAnTAk+Kx94UbFBycqfw==","signatures":[{"sig":"MEUCIQDA72H8Xr+cQs5XtdNLGf6zsl8Oicg6HDUwljRNGvPDJQIgU1EEohxXOrEHKUFn83OIjubIfeCveQIC74UN3Z+o9gE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1689595},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"}},"gitHead":"cb27f67aca9c2a7b8796169884eb4a4112c18094","scripts":{"cli":"bun run src/cli/bin.ts","dev":"bun run --watch src/index.ts","lint":"bunx biome check ./src","test":"bun test","build":"bun build ./src/index.ts ./src/cli/bin.ts --outdir ./dist --target bun && mv ./dist/cli/bin.js ./dist/cli/index.js","build:cli":"bun build ./src/cli/bin.ts --outdir ./dist/cli --target bun && mv ./dist/cli/bin.js ./dist/cli/index.js","typecheck":"tsc --noEmit","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"sivarajd","email":"sivaraj@synamen.com"},"_npmVersion":"11.6.4","description":"A Bun-Native Full-Stack Framework","directories":{},"_nodeVersion":"22.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","arktype":"^2.0.0","valibot":"^1.0.0","@types/bun":"latest","typescript":"^5.3.0","@biomejs/biome":"^1.9.0"},"peerDependencies":{"zod":"","typia":"^7.0.0","arktype":"","valibot":""},"peerDependenciesMeta":{"zod":{"optional":true},"typia":{"optional":true},"arktype":{"optional":true},"valibot":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bueno_0.8.3_1771527123635_0.11303817516768455","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"@buenojs/bueno","version":"0.8.4","keywords":["bun","framework","fullstack","http","router","rpc"],"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","_id":"@buenojs/bueno@0.8.4","maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"bin":{"bueno":"dist/cli/index.js"},"dist":{"shasum":"4e05e9210ea1a878cdbc10b40af9048f0b05cd52","tarball":"https://registry.npmjs.org/@buenojs/bueno/-/bueno-0.8.4.tgz","fileCount":141,"integrity":"sha512-G0dlRjCQgu2glucdHr/QJobQqlueCB5+PGN+TMd571/agDm0PSnC6u+xQrvjA6Vc9uxuLhZ6E7bFVXdeBLWxsA==","signatures":[{"sig":"MEQCIH3Dehgu2uWOqlHwDlF17ocTQ3aXRuudQXP8Q9VO1iLGAiB5NPtrZB14jl4B2fepT2Z/bE4EXEQBEmZaAYHV3RXHvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1775593},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"}},"gitHead":"cb27f67aca9c2a7b8796169884eb4a4112c18094","scripts":{"cli":"bun run src/cli/bin.ts","dev":"bun run --watch src/index.ts","lint":"bunx biome check ./src","test":"bun test","build":"bun build ./src/index.ts ./src/cli/bin.ts --outdir ./dist --target bun && mv ./dist/cli/bin.js ./dist/cli/index.js","build:cli":"bun build ./src/cli/bin.ts --outdir ./dist/cli --target bun && mv ./dist/cli/bin.js ./dist/cli/index.js","typecheck":"tsc --noEmit","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"sivarajd","email":"sivaraj@synamen.com"},"_npmVersion":"11.6.4","description":"A Bun-Native Full-Stack Framework","directories":{},"_nodeVersion":"22.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","arktype":"^2.0.0","valibot":"^1.0.0","@types/bun":"latest","typescript":"^5.3.0","@biomejs/biome":"^1.9.0"},"peerDependencies":{"zod":"","typia":"^7.0.0","arktype":"","valibot":""},"peerDependenciesMeta":{"zod":{"optional":true},"typia":{"optional":true},"arktype":{"optional":true},"valibot":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bueno_0.8.4_1771658884955_0.4680218171586781","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"@buenojs/bueno","version":"0.8.5","keywords":["bun","framework","fullstack","http","router","rpc"],"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","_id":"@buenojs/bueno@0.8.5","maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"bin":{"bueno":"dist/cli/index.js"},"dist":{"shasum":"abc4be1e21cf0dea38467af40efe153d5000fd29","tarball":"https://registry.npmjs.org/@buenojs/bueno/-/bueno-0.8.5.tgz","fileCount":255,"integrity":"sha512-vMMW7pbwLq0Ww7hQU2wXRyAg5MXYhMnPL+KJqB80SC2d2F8xNzE/UarxB2tBIJXrOPN/8AtMAIDvNtAYXkvryQ==","signatures":[{"sig":"MEUCIQC8ka94UCYLRj27jtepmyzzY7Xc2RU9Pl9wibLajFqXJwIgBGg5q9dHHjNkXM9BN52wzfjmagRY64uSImg0v353EgY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3178259},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"},"./orm":{"types":"./dist/orm/index.d.ts","import":"./dist/orm/index.js"},"./rpc":{"types":"./dist/rpc/index.d.ts","import":"./dist/rpc/index.js"},"./ssg":{"types":"./dist/ssg/index.d.ts","import":"./dist/ssg/index.js"},"./i18n":{"types":"./dist/i18n/index.d.ts","import":"./dist/i18n/index.js"},"./jobs":{"types":"./dist/jobs/index.d.ts","import":"./dist/jobs/index.js"},"./lock":{"types":"./dist/lock/index.d.ts","import":"./dist/lock/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./health":{"types":"./dist/health/index.d.ts","import":"./dist/health/index.js"},"./logger":{"types":"./dist/logger/index.d.ts","import":"./dist/logger/index.js"},"./router":{"types":"./dist/router/index.d.ts","import":"./dist/router/index.js"},"./schema":{"types":"./dist/schema/index.d.ts","import":"./dist/schema/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js"},"./metrics":{"types":"./dist/metrics/index.d.ts","import":"./dist/metrics/index.js"},"./modules":{"types":"./dist/modules/index.d.ts","import":"./dist/modules/index.js"},"./openapi":{"types":"./dist/openapi/index.d.ts","import":"./dist/openapi/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./database":{"types":"./dist/database/index.d.ts","import":"./dist/database/index.js"},"./frontend":{"types":"./dist/frontend/index.d.ts","import":"./dist/frontend/index.js"},"./security":{"types":"./dist/security/index.d.ts","import":"./dist/security/index.js"},"./template":{"types":"./dist/template/index.d.ts","import":"./dist/template/index.js"},"./container":{"types":"./dist/container/index.d.ts","import":"./dist/container/index.js"},"./telemetry":{"types":"./dist/telemetry/index.d.ts","import":"./dist/telemetry/index.js"},"./websocket":{"types":"./dist/websocket/index.d.ts","import":"./dist/websocket/index.js"},"./middleware":{"types":"./dist/middleware/index.d.ts","import":"./dist/middleware/index.js"},"./migrations":{"types":"./dist/migrations/index.d.ts","import":"./dist/migrations/index.js"},"./validation":{"types":"./dist/validation/index.d.ts","import":"./dist/validation/index.js"},"./notification":{"types":"./dist/notification/index.d.ts","import":"./dist/notification/index.js"},"./observability":{"types":"./dist/observability/index.d.ts","import":"./dist/observability/index.js"}},"gitHead":"5aa2c8311d57ec32f7225a23093b7a4ce3f23066","scripts":{"cli":"bun run src/cli/bin.ts","dev":"bun run --watch src/index.ts","lint":"bunx biome check ./src","test":"bun test","build":"rm -rf dist && bun build ./src/index.ts ./src/database/index.ts ./src/schema/index.ts ./src/migrations/index.ts ./src/orm/index.ts ./src/jobs/index.ts ./src/templates/index.ts ./src/template/index.ts ./src/openapi/index.ts ./src/notification/index.ts ./src/i18n/index.ts ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts ./src/telemetry/index.ts ./src/observability/index.ts ./src/lock/index.ts ./src/health/index.ts ./src/logger/index.ts ./src/metrics/index.ts ./src/rpc/index.ts ./src/context/index.ts ./src/container/index.ts ./src/testing/index.ts ./src/types/index.ts --outdir ./dist --target bun && test -d dist/src && (cp -r dist/src/* dist/ && rm -rf dist/src) || true","coverage":"bun test --coverage coverage/lcov.info","build:cli":"bun build ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts --outdir ./dist/cli --target bun","typecheck":"tsc --noEmit","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"sivarajd","email":"sivaraj@synamen.com"},"_npmVersion":"11.6.4","description":"A Bun-Native Full-Stack Framework","directories":{},"_nodeVersion":"22.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.3.0","@biomejs/biome":"^1.9.0"},"_npmOperationalInternal":{"tmp":"tmp/bueno_0.8.5_1772285019701_0.5385627341919845","host":"s3://npm-registry-packages-npm-production"}},"0.8.6":{"name":"@buenojs/bueno","version":"0.8.6","keywords":["bun","framework","fullstack","http","router","rpc"],"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","_id":"@buenojs/bueno@0.8.6","maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"bin":{"bueno":"dist/cli/index.js"},"dist":{"shasum":"4940e6404cab692ddbd473d19229dcf8cb9864c0","tarball":"https://registry.npmjs.org/@buenojs/bueno/-/bueno-0.8.6.tgz","fileCount":268,"integrity":"sha512-ib9J4ZLzF51wT6vYbJZSyLXCOoBRUEN0ZWzsU72C0jGILaw/2vv4H2ZG3zBKMxZS2J8qqZnAYhcoQr3oyTlGpQ==","signatures":[{"sig":"MEQCIApH9HwRHN5q6szmK2XQt5bq5iNGgcnOMtXhuDUBdtwuAiBIt3hmOgVsEDG1vuMpQ55AzFd3MD71A9Q19Fxh5T+L/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3376913},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"},"./orm":{"types":"./dist/orm/index.d.ts","import":"./dist/orm/index.js"},"./rpc":{"types":"./dist/rpc/index.d.ts","import":"./dist/rpc/index.js"},"./ssg":{"types":"./dist/ssg/index.d.ts","import":"./dist/ssg/index.js"},"./i18n":{"types":"./dist/i18n/index.d.ts","import":"./dist/i18n/index.js"},"./jobs":{"types":"./dist/jobs/index.d.ts","import":"./dist/jobs/index.js"},"./lock":{"types":"./dist/lock/index.d.ts","import":"./dist/lock/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./health":{"types":"./dist/health/index.d.ts","import":"./dist/health/index.js"},"./logger":{"types":"./dist/logger/index.d.ts","import":"./dist/logger/index.js"},"./router":{"types":"./dist/router/index.d.ts","import":"./dist/router/index.js"},"./schema":{"types":"./dist/schema/index.d.ts","import":"./dist/schema/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js"},"./graphql":{"types":"./dist/graphql/index.d.ts","import":"./dist/graphql/index.js"},"./metrics":{"types":"./dist/metrics/index.d.ts","import":"./dist/metrics/index.js"},"./modules":{"types":"./dist/modules/index.d.ts","import":"./dist/modules/index.js"},"./openapi":{"types":"./dist/openapi/index.d.ts","import":"./dist/openapi/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./database":{"types":"./dist/database/index.d.ts","import":"./dist/database/index.js"},"./frontend":{"types":"./dist/frontend/index.d.ts","import":"./dist/frontend/index.js"},"./security":{"types":"./dist/security/index.d.ts","import":"./dist/security/index.js"},"./template":{"types":"./dist/template/index.d.ts","import":"./dist/template/index.js"},"./container":{"types":"./dist/container/index.d.ts","import":"./dist/container/index.js"},"./telemetry":{"types":"./dist/telemetry/index.d.ts","import":"./dist/telemetry/index.js"},"./websocket":{"types":"./dist/websocket/index.d.ts","import":"./dist/websocket/index.js"},"./middleware":{"types":"./dist/middleware/index.d.ts","import":"./dist/middleware/index.js"},"./migrations":{"types":"./dist/migrations/index.d.ts","import":"./dist/migrations/index.js"},"./validation":{"types":"./dist/validation/index.d.ts","import":"./dist/validation/index.js"},"./notification":{"types":"./dist/notification/index.d.ts","import":"./dist/notification/index.js"},"./observability":{"types":"./dist/observability/index.d.ts","import":"./dist/observability/index.js"}},"gitHead":"4dfa95d426046e3ab8e4bb97f94bf4cb51b67771","scripts":{"cli":"bun run src/cli/bin.ts","dev":"bun run --watch src/index.ts","lint":"bunx biome check ./src","test":"bun test","build":"rm -rf dist && bun build ./src/index.ts ./src/database/index.ts ./src/schema/index.ts ./src/migrations/index.ts ./src/orm/index.ts ./src/jobs/index.ts ./src/templates/index.ts ./src/template/index.ts ./src/openapi/index.ts ./src/notification/index.ts ./src/i18n/index.ts ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts ./src/telemetry/index.ts ./src/observability/index.ts ./src/graphql/index.ts ./src/lock/index.ts ./src/health/index.ts ./src/logger/index.ts ./src/metrics/index.ts ./src/rpc/index.ts ./src/context/index.ts ./src/container/index.ts ./src/testing/index.ts ./src/types/index.ts --outdir ./dist --target bun && test -d dist/src && (cp -r dist/src/* dist/ && rm -rf dist/src) || true","coverage":"bun test --coverage coverage/lcov.info","build:cli":"bun build ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts --outdir ./dist/cli --target bun","typecheck":"tsc --noEmit","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"sivarajd","email":"sivaraj@synamen.com"},"_npmVersion":"11.6.4","description":"A Bun-Native Full-Stack Framework","directories":{},"_nodeVersion":"22.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.3.0","@biomejs/biome":"^1.9.0"},"_npmOperationalInternal":{"tmp":"tmp/bueno_0.8.6_1772308218340_0.2419020251278401","host":"s3://npm-registry-packages-npm-production"}},"0.8.7":{"name":"@buenojs/bueno","version":"0.8.7","keywords":["bun","framework","fullstack","http","router","rpc"],"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","_id":"@buenojs/bueno@0.8.7","maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"bin":{"bueno":"dist/cli/index.js"},"dist":{"shasum":"bbe7df35f262cb9c1a5e96ee98cd89ef5782963d","tarball":"https://registry.npmjs.org/@buenojs/bueno/-/bueno-0.8.7.tgz","fileCount":653,"integrity":"sha512-x0OFpLKghMoE4JRlcZ3UUuDV62MzwkE60W9LeovOpq8U3Kjwj7kypVq6RZLT033gh4rtEAIhOWOE60tFCugi4w==","signatures":[{"sig":"MEUCIE2mDNWhAYvROixVspko8jB/UgnqVzK4j1BWq6IOvlw+AiEArovk8guVsneZPIqF0M9hnTJQizWgWrLytRSgkAJUee8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4296732},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"},"./orm":{"types":"./dist/orm/index.d.ts","import":"./dist/orm/index.js"},"./rpc":{"types":"./dist/rpc/index.d.ts","import":"./dist/rpc/index.js"},"./ssg":{"types":"./dist/ssg/index.d.ts","import":"./dist/ssg/index.js"},"./i18n":{"types":"./dist/i18n/index.d.ts","import":"./dist/i18n/index.js"},"./jobs":{"types":"./dist/jobs/index.d.ts","import":"./dist/jobs/index.js"},"./lock":{"types":"./dist/lock/index.d.ts","import":"./dist/lock/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./health":{"types":"./dist/health/index.d.ts","import":"./dist/health/index.js"},"./logger":{"types":"./dist/logger/index.d.ts","import":"./dist/logger/index.js"},"./router":{"types":"./dist/router/index.d.ts","import":"./dist/router/index.js"},"./schema":{"types":"./dist/schema/index.d.ts","import":"./dist/schema/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js"},"./graphql":{"types":"./dist/graphql/index.d.ts","import":"./dist/graphql/index.js"},"./metrics":{"types":"./dist/metrics/index.d.ts","import":"./dist/metrics/index.js"},"./modules":{"types":"./dist/modules/index.d.ts","import":"./dist/modules/index.js"},"./openapi":{"types":"./dist/openapi/index.d.ts","import":"./dist/openapi/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./database":{"types":"./dist/database/index.d.ts","import":"./dist/database/index.js"},"./frontend":{"types":"./dist/frontend/index.d.ts","import":"./dist/frontend/index.js"},"./security":{"types":"./dist/security/index.d.ts","import":"./dist/security/index.js"},"./template":{"types":"./dist/template/index.d.ts","import":"./dist/template/index.js"},"./container":{"types":"./dist/container/index.d.ts","import":"./dist/container/index.js"},"./telemetry":{"types":"./dist/telemetry/index.d.ts","import":"./dist/telemetry/index.js"},"./websocket":{"types":"./dist/websocket/index.d.ts","import":"./dist/websocket/index.js"},"./middleware":{"types":"./dist/middleware/index.d.ts","import":"./dist/middleware/index.js"},"./migrations":{"types":"./dist/migrations/index.d.ts","import":"./dist/migrations/index.js"},"./validation":{"types":"./dist/validation/index.d.ts","import":"./dist/validation/index.js"},"./notification":{"types":"./dist/notification/index.d.ts","import":"./dist/notification/index.js"},"./observability":{"types":"./dist/observability/index.d.ts","import":"./dist/observability/index.js"}},"gitHead":"8c8607a178f81e9cfc15b4c99e565b5e10457e48","scripts":{"cli":"bun run src/cli/bin.ts","dev":"bun run --watch src/index.ts","lint":"bunx biome check ./src","test":"bun test","build":"rm -rf dist && bun build ./src/index.ts ./src/database/index.ts ./src/schema/index.ts ./src/migrations/index.ts ./src/orm/index.ts ./src/jobs/index.ts ./src/templates/index.ts ./src/template/index.ts ./src/openapi/index.ts ./src/notification/index.ts ./src/i18n/index.ts ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts ./src/telemetry/index.ts ./src/observability/index.ts ./src/graphql/index.ts ./src/lock/index.ts ./src/health/index.ts ./src/logger/index.ts ./src/metrics/index.ts ./src/rpc/index.ts ./src/context/index.ts ./src/container/index.ts ./src/testing/index.ts ./src/types/index.ts --outdir ./dist --target bun && test -d dist/src && (cp -r dist/src/* dist/ && rm -rf dist/src) || true && tsc --project tsconfig.declaration.json 2>&1 || true","coverage":"bun test --coverage coverage/lcov.info","build:cli":"bun build ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts --outdir ./dist/cli --target bun","typecheck":"tsc --noEmit","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"sivarajd","email":"sivaraj@synamen.com"},"_npmVersion":"11.6.4","description":"A Bun-Native Full-Stack Framework","directories":{},"_nodeVersion":"22.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.3.0","@biomejs/biome":"^1.9.0"},"_npmOperationalInternal":{"tmp":"tmp/bueno_0.8.7_1772350837738_0.4695881726245865","host":"s3://npm-registry-packages-npm-production"}},"0.8.8":{"name":"@buenojs/bueno","version":"0.8.8","keywords":["bun","framework","fullstack","http","router","rpc"],"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","_id":"@buenojs/bueno@0.8.8","maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"bin":{"bueno":"dist/cli/bin.js"},"dist":{"shasum":"c004af2b92786f0054ccf8c6547ed7acad4b6e1c","tarball":"https://registry.npmjs.org/@buenojs/bueno/-/bueno-0.8.8.tgz","fileCount":653,"integrity":"sha512-PfB/GcqJ+LIMemxOKUhtL7vJezI2WsP8UHJ2cEepXNkoMPdaBOZ1/6/C6vIztB2Kp07L/VemQ6VEwlt57ebbtw==","signatures":[{"sig":"MEQCIBHMdHGEem/xx2SVhgIWPBcdIroFKz83z+CLGQALZeUpAiA/gxaX5dQTXSyDhI0kQbJH//O5kWr0EHZJlJYUSMa2KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4296730},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"},"./orm":{"types":"./dist/orm/index.d.ts","import":"./dist/orm/index.js"},"./rpc":{"types":"./dist/rpc/index.d.ts","import":"./dist/rpc/index.js"},"./ssg":{"types":"./dist/ssg/index.d.ts","import":"./dist/ssg/index.js"},"./i18n":{"types":"./dist/i18n/index.d.ts","import":"./dist/i18n/index.js"},"./jobs":{"types":"./dist/jobs/index.d.ts","import":"./dist/jobs/index.js"},"./lock":{"types":"./dist/lock/index.d.ts","import":"./dist/lock/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./health":{"types":"./dist/health/index.d.ts","import":"./dist/health/index.js"},"./logger":{"types":"./dist/logger/index.d.ts","import":"./dist/logger/index.js"},"./router":{"types":"./dist/router/index.d.ts","import":"./dist/router/index.js"},"./schema":{"types":"./dist/schema/index.d.ts","import":"./dist/schema/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js"},"./graphql":{"types":"./dist/graphql/index.d.ts","import":"./dist/graphql/index.js"},"./metrics":{"types":"./dist/metrics/index.d.ts","import":"./dist/metrics/index.js"},"./modules":{"types":"./dist/modules/index.d.ts","import":"./dist/modules/index.js"},"./openapi":{"types":"./dist/openapi/index.d.ts","import":"./dist/openapi/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./database":{"types":"./dist/database/index.d.ts","import":"./dist/database/index.js"},"./frontend":{"types":"./dist/frontend/index.d.ts","import":"./dist/frontend/index.js"},"./security":{"types":"./dist/security/index.d.ts","import":"./dist/security/index.js"},"./template":{"types":"./dist/template/index.d.ts","import":"./dist/template/index.js"},"./container":{"types":"./dist/container/index.d.ts","import":"./dist/container/index.js"},"./telemetry":{"types":"./dist/telemetry/index.d.ts","import":"./dist/telemetry/index.js"},"./websocket":{"types":"./dist/websocket/index.d.ts","import":"./dist/websocket/index.js"},"./middleware":{"types":"./dist/middleware/index.d.ts","import":"./dist/middleware/index.js"},"./migrations":{"types":"./dist/migrations/index.d.ts","import":"./dist/migrations/index.js"},"./validation":{"types":"./dist/validation/index.d.ts","import":"./dist/validation/index.js"},"./notification":{"types":"./dist/notification/index.d.ts","import":"./dist/notification/index.js"},"./observability":{"types":"./dist/observability/index.d.ts","import":"./dist/observability/index.js"}},"gitHead":"2bd40212ce9440336df06c9743b8f0830a9868b1","scripts":{"cli":"bun run src/cli/bin.ts","dev":"bun run --watch src/index.ts","lint":"bunx biome check ./src","test":"bun test","build":"rm -rf dist && bun build ./src/index.ts ./src/database/index.ts ./src/schema/index.ts ./src/migrations/index.ts ./src/orm/index.ts ./src/jobs/index.ts ./src/templates/index.ts ./src/template/index.ts ./src/openapi/index.ts ./src/notification/index.ts ./src/i18n/index.ts ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts ./src/telemetry/index.ts ./src/observability/index.ts ./src/graphql/index.ts ./src/lock/index.ts ./src/health/index.ts ./src/logger/index.ts ./src/metrics/index.ts ./src/rpc/index.ts ./src/context/index.ts ./src/container/index.ts ./src/testing/index.ts ./src/types/index.ts --outdir ./dist --target bun && test -d dist/src && (cp -r dist/src/* dist/ && rm -rf dist/src) || true && tsc --project tsconfig.declaration.json 2>&1 || true","coverage":"bun test --coverage coverage/lcov.info","build:cli":"bun build ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts --outdir ./dist/cli --target bun","typecheck":"tsc --noEmit","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"sivarajd","email":"sivaraj@synamen.com"},"_npmVersion":"11.6.4","description":"A Bun-Native Full-Stack Framework","directories":{},"_nodeVersion":"22.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.3.0","@biomejs/biome":"^1.9.0"},"_npmOperationalInternal":{"tmp":"tmp/bueno_0.8.8_1772388473212_0.2130897929681459","host":"s3://npm-registry-packages-npm-production"}},"0.8.9":{"name":"@buenojs/bueno","version":"0.8.9","keywords":["bun","framework","fullstack","http","router","rpc"],"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","_id":"@buenojs/bueno@0.8.9","maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"bin":{"bueno":"dist/cli/bin.js"},"dist":{"shasum":"2fd33fddfa081cc9b95b7f4dcae7220a9763df81","tarball":"https://registry.npmjs.org/@buenojs/bueno/-/bueno-0.8.9.tgz","fileCount":271,"integrity":"sha512-nXkY2P/jHyssHQ/5ZOVMJNg8+pXatuOwekRd+1E2FsIv7ufn9C17pOsNubNP0HkYwmHmLrvWvRNVl2FZUVE/ag==","signatures":[{"sig":"MEUCIGwTJKua8FS2ENfbliNIGCrlL77MsBeXNcJYGLUSfbmzAiEAjKfgMxjsOW31G37UsPuPB4aJ8c2F/IhMg3oMQgo83d0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3404354},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"},"./orm":{"types":"./dist/orm/index.d.ts","import":"./dist/orm/index.js"},"./rpc":{"types":"./dist/rpc/index.d.ts","import":"./dist/rpc/index.js"},"./ssg":{"types":"./dist/ssg/index.d.ts","import":"./dist/ssg/index.js"},"./i18n":{"types":"./dist/i18n/index.d.ts","import":"./dist/i18n/index.js"},"./jobs":{"types":"./dist/jobs/index.d.ts","import":"./dist/jobs/index.js"},"./lock":{"types":"./dist/lock/index.d.ts","import":"./dist/lock/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./health":{"types":"./dist/health/index.d.ts","import":"./dist/health/index.js"},"./logger":{"types":"./dist/logger/index.d.ts","import":"./dist/logger/index.js"},"./router":{"types":"./dist/router/index.d.ts","import":"./dist/router/index.js"},"./schema":{"types":"./dist/schema/index.d.ts","import":"./dist/schema/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js"},"./graphql":{"types":"./dist/graphql/index.d.ts","import":"./dist/graphql/index.js"},"./metrics":{"types":"./dist/metrics/index.d.ts","import":"./dist/metrics/index.js"},"./modules":{"types":"./dist/modules/index.d.ts","import":"./dist/modules/index.js"},"./openapi":{"types":"./dist/openapi/index.d.ts","import":"./dist/openapi/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./database":{"types":"./dist/database/index.d.ts","import":"./dist/database/index.js"},"./frontend":{"types":"./dist/frontend/index.d.ts","import":"./dist/frontend/index.js"},"./security":{"types":"./dist/security/index.d.ts","import":"./dist/security/index.js"},"./template":{"types":"./dist/template/index.d.ts","import":"./dist/template/index.js"},"./container":{"types":"./dist/container/index.d.ts","import":"./dist/container/index.js"},"./telemetry":{"types":"./dist/telemetry/index.d.ts","import":"./dist/telemetry/index.js"},"./websocket":{"types":"./dist/websocket/index.d.ts","import":"./dist/websocket/index.js"},"./middleware":{"types":"./dist/middleware/index.d.ts","import":"./dist/middleware/index.js"},"./migrations":{"types":"./dist/migrations/index.d.ts","import":"./dist/migrations/index.js"},"./validation":{"types":"./dist/validation/index.d.ts","import":"./dist/validation/index.js"},"./notification":{"types":"./dist/notification/index.d.ts","import":"./dist/notification/index.js"},"./observability":{"types":"./dist/observability/index.d.ts","import":"./dist/observability/index.js"}},"gitHead":"3190a288ef4dd5cba01b5731a0e3e0386ee260d2","scripts":{"cli":"bun run src/cli/bin.ts","dev":"bun run --watch src/index.ts","lint":"bunx biome check ./src","test":"bun test","build":"rm -rf dist && bun build ./src/index.ts ./src/database/index.ts ./src/schema/index.ts ./src/migrations/index.ts ./src/orm/index.ts ./src/jobs/index.ts ./src/templates/index.ts ./src/template/index.ts ./src/openapi/index.ts ./src/notification/index.ts ./src/i18n/index.ts ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts ./src/telemetry/index.ts ./src/observability/index.ts ./src/graphql/index.ts ./src/lock/index.ts ./src/health/index.ts ./src/logger/index.ts ./src/metrics/index.ts ./src/rpc/index.ts ./src/context/index.ts ./src/container/index.ts ./src/testing/index.ts ./src/types/index.ts --outdir ./dist --target bun && test -d dist/src && (cp -r dist/src/* dist/ && rm -rf dist/src) || true","coverage":"bun test --coverage coverage/lcov.info","build:cli":"bun build ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts --outdir ./dist/cli --target bun","typecheck":"tsc --noEmit","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"sivarajd","email":"sivaraj@synamen.com"},"_npmVersion":"11.6.4","description":"A Bun-Native Full-Stack Framework","directories":{},"_nodeVersion":"22.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.3.0","@biomejs/biome":"^1.9.0"},"_npmOperationalInternal":{"tmp":"tmp/bueno_0.8.9_1772390901929_0.986643316715561","host":"s3://npm-registry-packages-npm-production"}},"0.8.10":{"name":"@buenojs/bueno","version":"0.8.10","keywords":["bun","framework","fullstack","http","router","rpc"],"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","_id":"@buenojs/bueno@0.8.10","maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"bin":{"bueno":"dist/cli/bin.js"},"dist":{"shasum":"70fb1ab93e0cbd3d92d13187887cf3900bb2b514","tarball":"https://registry.npmjs.org/@buenojs/bueno/-/bueno-0.8.10.tgz","fileCount":271,"integrity":"sha512-RkzhMz3/60ChZ7E7gp+09lwUUU7nNW9eYJcAzC0SjHjkakDF5B8W/10GH+D128wTS2VayzJ7fEeEfX+30LQzbA==","signatures":[{"sig":"MEYCIQDNDBCvBhlWYLSyI8ONqcoWx4JwMUTXs/mQvE35/XgE8gIhALptU8/6V74GHXb764E0PaMtiI/Cj80zpfnTGFWc1FtG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3404381},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"},"./orm":{"types":"./dist/orm/index.d.ts","import":"./dist/orm/index.js"},"./rpc":{"types":"./dist/rpc/index.d.ts","import":"./dist/rpc/index.js"},"./ssg":{"types":"./dist/ssg/index.d.ts","import":"./dist/ssg/index.js"},"./i18n":{"types":"./dist/i18n/index.d.ts","import":"./dist/i18n/index.js"},"./jobs":{"types":"./dist/jobs/index.d.ts","import":"./dist/jobs/index.js"},"./lock":{"types":"./dist/lock/index.d.ts","import":"./dist/lock/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./health":{"types":"./dist/health/index.d.ts","import":"./dist/health/index.js"},"./logger":{"types":"./dist/logger/index.d.ts","import":"./dist/logger/index.js"},"./router":{"types":"./dist/router/index.d.ts","import":"./dist/router/index.js"},"./schema":{"types":"./dist/schema/index.d.ts","import":"./dist/schema/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js"},"./graphql":{"types":"./dist/graphql/index.d.ts","import":"./dist/graphql/index.js"},"./metrics":{"types":"./dist/metrics/index.d.ts","import":"./dist/metrics/index.js"},"./modules":{"types":"./dist/modules/index.d.ts","import":"./dist/modules/index.js"},"./openapi":{"types":"./dist/openapi/index.d.ts","import":"./dist/openapi/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./database":{"types":"./dist/database/index.d.ts","import":"./dist/database/index.js"},"./frontend":{"types":"./dist/frontend/index.d.ts","import":"./dist/frontend/index.js"},"./security":{"types":"./dist/security/index.d.ts","import":"./dist/security/index.js"},"./template":{"types":"./dist/template/index.d.ts","import":"./dist/template/index.js"},"./container":{"types":"./dist/container/index.d.ts","import":"./dist/container/index.js"},"./telemetry":{"types":"./dist/telemetry/index.d.ts","import":"./dist/telemetry/index.js"},"./websocket":{"types":"./dist/websocket/index.d.ts","import":"./dist/websocket/index.js"},"./middleware":{"types":"./dist/middleware/index.d.ts","import":"./dist/middleware/index.js"},"./migrations":{"types":"./dist/migrations/index.d.ts","import":"./dist/migrations/index.js"},"./validation":{"types":"./dist/validation/index.d.ts","import":"./dist/validation/index.js"},"./notification":{"types":"./dist/notification/index.d.ts","import":"./dist/notification/index.js"},"./observability":{"types":"./dist/observability/index.d.ts","import":"./dist/observability/index.js"}},"gitHead":"17ef8f58c8ced1cb81f460b8d3a236d63419c57a","scripts":{"cli":"bun run src/cli/bin.ts","dev":"bun run --watch src/index.ts","lint":"bunx biome check ./src","test":"bun test","build":"rm -rf dist && bun build ./src/index.ts ./src/database/index.ts ./src/schema/index.ts ./src/migrations/index.ts ./src/orm/index.ts ./src/jobs/index.ts ./src/templates/index.ts ./src/template/index.ts ./src/openapi/index.ts ./src/notification/index.ts ./src/i18n/index.ts ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts ./src/telemetry/index.ts ./src/observability/index.ts ./src/graphql/index.ts ./src/lock/index.ts ./src/health/index.ts ./src/logger/index.ts ./src/metrics/index.ts ./src/rpc/index.ts ./src/context/index.ts ./src/container/index.ts ./src/testing/index.ts ./src/types/index.ts --outdir ./dist --target bun && test -d dist/src && (cp -r dist/src/* dist/ && rm -rf dist/src) || true","coverage":"bun test --coverage coverage/lcov.info","build:cli":"bun build ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts --outdir ./dist/cli --target bun","typecheck":"tsc --noEmit","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"sivarajd","email":"sivaraj@synamen.com"},"_npmVersion":"11.6.4","description":"A Bun-Native Full-Stack Framework","directories":{},"_nodeVersion":"22.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.3.0","@biomejs/biome":"^1.9.0"},"_npmOperationalInternal":{"tmp":"tmp/bueno_0.8.10_1772397034879_0.7953710912824348","host":"s3://npm-registry-packages-npm-production"}},"0.8.11":{"name":"@buenojs/bueno","version":"0.8.11","description":"A Bun-Native Full-Stack Framework","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","publishConfig":{"access":"public"},"bin":{"bueno":"dist/cli/bin.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./database":{"types":"./dist/database/index.d.ts","import":"./dist/database/index.js"},"./schema":{"types":"./dist/schema/index.d.ts","import":"./dist/schema/index.js"},"./migrations":{"types":"./dist/migrations/index.d.ts","import":"./dist/migrations/index.js"},"./orm":{"types":"./dist/orm/index.d.ts","import":"./dist/orm/index.js"},"./jobs":{"types":"./dist/jobs/index.d.ts","import":"./dist/jobs/index.js"},"./notification":{"types":"./dist/notification/index.d.ts","import":"./dist/notification/index.js"},"./template":{"types":"./dist/template/index.d.ts","import":"./dist/template/index.js"},"./openapi":{"types":"./dist/openapi/index.d.ts","import":"./dist/openapi/index.js"},"./i18n":{"types":"./dist/i18n/index.d.ts","import":"./dist/i18n/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"},"./frontend":{"types":"./dist/frontend/index.d.ts","import":"./dist/frontend/index.js"},"./router":{"types":"./dist/router/index.d.ts","import":"./dist/router/index.js"},"./middleware":{"types":"./dist/middleware/index.d.ts","import":"./dist/middleware/index.js"},"./modules":{"types":"./dist/modules/index.d.ts","import":"./dist/modules/index.js"},"./validation":{"types":"./dist/validation/index.d.ts","import":"./dist/validation/index.js"},"./websocket":{"types":"./dist/websocket/index.d.ts","import":"./dist/websocket/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js"},"./security":{"types":"./dist/security/index.d.ts","import":"./dist/security/index.js"},"./ssg":{"types":"./dist/ssg/index.d.ts","import":"./dist/ssg/index.js"},"./telemetry":{"types":"./dist/telemetry/index.d.ts","import":"./dist/telemetry/index.js"},"./observability":{"types":"./dist/observability/index.d.ts","import":"./dist/observability/index.js"},"./graphql":{"types":"./dist/graphql/index.d.ts","import":"./dist/graphql/index.js"},"./lock":{"types":"./dist/lock/index.d.ts","import":"./dist/lock/index.js"},"./health":{"types":"./dist/health/index.d.ts","import":"./dist/health/index.js"},"./logger":{"types":"./dist/logger/index.d.ts","import":"./dist/logger/index.js"},"./metrics":{"types":"./dist/metrics/index.d.ts","import":"./dist/metrics/index.js"},"./rpc":{"types":"./dist/rpc/index.d.ts","import":"./dist/rpc/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js"},"./container":{"types":"./dist/container/index.d.ts","import":"./dist/container/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"}},"scripts":{"dev":"bun run --watch src/index.ts","test":"bun test","test:watch":"bun test --watch","test:coverage":"bun test --coverage","coverage":"bun test --coverage coverage/lcov.info","build":"rm -rf dist && tsc --noEmit false --skipLibCheck true 2>/dev/null || true && bun build ./src/index.ts ./src/database/index.ts ./src/schema/index.ts ./src/migrations/index.ts ./src/orm/index.ts ./src/jobs/index.ts ./src/templates/index.ts ./src/template/index.ts ./src/openapi/index.ts ./src/notification/index.ts ./src/i18n/index.ts ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts ./src/telemetry/index.ts ./src/observability/index.ts ./src/graphql/index.ts ./src/lock/index.ts ./src/health/index.ts ./src/logger/index.ts ./src/metrics/index.ts ./src/rpc/index.ts ./src/context/index.ts ./src/container/index.ts ./src/testing/index.ts ./src/types/index.ts --outdir ./dist --target bun && test -d dist/src && (cp -r dist/src/* dist/ && rm -rf dist/src) || true","build:cli":"tsc --noEmit false --skipLibCheck true 2>/dev/null || true && bun build ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts --outdir ./dist/cli --target bun","typecheck":"tsc --noEmit","lint":"bunx biome check ./src","cli":"bun run src/cli/bin.ts"},"keywords":["bun","framework","fullstack","http","router","rpc"],"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","devDependencies":{"@biomejs/biome":"^1.9.0","@types/bun":"latest","typescript":"^5.3.0"},"engines":{"bun":">=1.3.0"},"gitHead":"d12f56334ed53264c872dbb65b1aba2a13b69d75","_id":"@buenojs/bueno@0.8.11","_nodeVersion":"22.17.0","_npmVersion":"11.6.4","dist":{"integrity":"sha512-1Rjyo04Mg/xIlYpG56FXjU2mzoqCxORBWqdeJWdtjz+lTNMulipBzOHt4bQvhv2cLrtGYp6iThQv9FV+9l4iJQ==","shasum":"8004e8573ed3829d78365dabc9b0a9b51f92ba1e","tarball":"https://registry.npmjs.org/@buenojs/bueno/-/bueno-0.8.11.tgz","fileCount":963,"unpackedSize":6397844,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDE2iTI0stJHvda0T5LT1Tj2fT1s7VPgGo45j3LTNMIZAiEAuGZt5hT4Du39RRaWTX+8ehUWu/ahjsAVCI3yldUx2Do="}]},"_npmUser":{"name":"sivarajd","email":"sivaraj@synamen.com"},"directories":{},"maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bueno_0.8.11_1775280015248_0.6049481471001994"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-19T08:22:22.586Z","modified":"2026-04-04T05:20:15.594Z","0.8.0":"2026-02-19T08:22:22.928Z","0.8.1":"2026-02-19T16:41:10.712Z","0.8.2":"2026-02-19T18:41:24.782Z","0.8.3":"2026-02-19T18:52:03.825Z","0.8.4":"2026-02-21T07:28:05.208Z","0.8.5":"2026-02-28T13:23:39.943Z","0.8.6":"2026-02-28T19:50:18.553Z","0.8.7":"2026-03-01T07:40:37.941Z","0.8.8":"2026-03-01T18:07:53.434Z","0.8.9":"2026-03-01T18:48:22.247Z","0.8.10":"2026-03-01T20:30:35.106Z","0.8.11":"2026-04-04T05:20:15.425Z"},"author":{"name":"Sivaraj D","email":"sivarajd@gmail.com"},"license":"MIT","keywords":["bun","framework","fullstack","http","router","rpc"],"description":"A Bun-Native Full-Stack Framework","maintainers":[{"name":"sivarajd","email":"sivaraj@synamen.com"}],"readme":"# Bueno\n\nA Bun-Native Full-Stack Framework\n\n[![Build Status](https://img.shields.io/github/actions/workflow/status/buenojs/bueno/ci.yml?branch=main&label=Tests)](https://github.com/buenojs/bueno/actions)\n[![Test Coverage](https://img.shields.io/codecov/c/gh/buenojs/bueno?label=Coverage)](https://codecov.io/gh/buenojs/bueno)\n[![npm version](https://img.shields.io/npm/v/@buenojs/bueno)](https://www.npmjs.com/package/@buenojs/bueno)\n[![License](https://img.shields.io/badge/license-MIT-green)](https://github.com/buenojs/bueno/blob/main/LICENSE)\n[![Bun Version](https://img.shields.io/badge/bun-%3E%3D1.3.0-black)](https://bun.sh)\n[![Activity](https://img.shields.io/github/commit-activity/m/buenojs/bueno)](https://github.com/buenojs/bueno/graphs/commit-activity)\n[![Last Commit](https://img.shields.io/github/last-commit/buenojs/bueno/main)](https://github.com/buenojs/bueno/commits/main)\n\n## Why Bueno?\n\nBueno is a **Bun-native** full-stack framework designed from the ground up to leverage Bun's exceptional performance and modern JavaScript capabilities. Bueno embraces Bun's APIs, resulting in:\n\n- **Blazing Fast Performance**: Built on Bun's native HTTP server and optimized runtime\n- **Zero Dependencies**: True zero-dependency framework with built-in validation, ORM, caching, and jobs\n- **Zero Configuration**: Sensible defaults that work out of the box\n- **Full-Stack Integration**: Seamless frontend and backend development\n- **Type Safety**: End-to-end TypeScript with full type inference\n- **Modern DX**: Hot module replacement, fast testing, and intuitive APIs\n\n## Installation\n\n### Quick Start (New Project)\n\n```bash\n# Create a new project (recommended)\nbunx create-bueno my-app\ncd my-app\nbun install\nbun dev\n```\n\n### Add to Existing Project\n\n```bash\n# As a dependency\nbun add @buenojs/bueno\n```\n\n### Global CLI Installation\n\n```bash\n# Install globally\nbun install -g @buenojs/bueno\n\n# Use CLI commands anywhere\nbueno dev\nbueno build\n```\n\n## Quick Start\n\n```typescript\nimport { createServer, Router } from '@buenojs/bueno';\n\nconst router = new Router();\n\nrouter.get('/hello', (ctx) => {\n  return ctx.json({ message: 'Hello, World!' });\n});\n\nconst server = createServer();\nserver.router = router;\nserver.listen(3000);\n```\n\n## CLI Commands\n\n### `bueno new <name>`\n\nCreate a new Bueno project with automatic frontend setup for fullstack template.\n\n```bash\nbueno new my-app\nbueno new my-api --template api\nbueno new my-fullstack --template fullstack --framework react\nbueno new my-app --database postgresql --docker\n```\n\n**Two-Stage Fullstack Creation:**\nWhen using `--template fullstack`, Bueno creates your project in two stages:\n1. **Stage 1**: Creates the API backend with your chosen database\n2. **Stage 2**: Automatically runs `add:frontend` with your selected framework\n\n```bash\n# Creates API + React frontend together\nbueno new my-app --template fullstack --framework react\n\n# Creates API + Vue frontend together\nbueno new my-app --template fullstack --framework vue --database postgresql\n```\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `--template` | `default` | Project template (`default`, `minimal`, `fullstack`, `api`, `website`) |\n| `--framework` | `react` | Frontend framework (`react`, `vue`, `svelte`, `solid`) |\n| `--database` | `sqlite` | Database type (`sqlite`, `postgresql`, `mysql`) |\n| `--docker` | `false` | Generate Docker configuration |\n| `--deploy` | - | Deployment target (`render`, `fly`, `railway`) |\n| `--skip-install` | `false` | Skip dependency installation |\n| `--skip-git` | `false` | Skip git initialization |\n| `--yes` | `false` | Use default options |\n\n### `bueno add:frontend <framework>`\n\nAdd a frontend framework to an existing Bueno project.\n\n```bash\n# Interactive prompt to choose framework\nbueno add:frontend\n\n# Add React frontend\nbueno add:frontend react\n\n# Add Vue frontend\nbueno add:frontend vue\n\n# Add Svelte frontend\nbueno add:frontend svelte\n\n# Add SolidJS frontend\nbueno add:frontend solid\n\n# Skip dependency installation\nbueno add:frontend react --skip-install\n```\n\n**What Gets Added:**\n- `client/` directory with full frontend setup\n- Framework-specific entry point (`main.tsx` or `main.ts`)\n- Example components and styles\n- Tailwind CSS + PostCSS configuration\n- Bun bundler configuration (framework-optimized)\n- TypeScript configuration for client\n- Development scripts: `dev:server`, `dev:client`, `dev` (concurrent)\n- Build script: `build:client`\n\n**Supported Frameworks:**\n| Framework | Entry Point | JSX Mode |\n|-----------|-------------|----------|\n| React | `client/src/main.tsx` | `react-jsx` |\n| Vue | `client/src/main.ts` | N/A |\n| Svelte | `client/src/main.ts` | N/A |\n| SolidJS | `client/src/main.tsx` | `preserve` |\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `framework` (positional) | (interactive) | Frontend framework (`react`, `vue`, `svelte`, `solid`) |\n| `-f, --framework` | - | Frontend framework as option |\n| `--skip-install` | `false` | Skip dependency installation |\n\n### `bueno dev`\n\nStart the development server with Hot Module Replacement (HMR).\n\n```bash\nbueno dev\nbueno dev --port 4000 --host 0.0.0.0\nbueno dev --no-hmr --open\n```\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `-p, --port` | `3000` | Server port |\n| `-H, --host` | `localhost` | Server host |\n| `--no-hmr` | `false` | Disable Hot Module Replacement |\n| `--no-watch` | `false` | Disable file watching |\n| `-o, --open` | `false` | Open browser automatically |\n| `-c, --config` | `bueno.config.ts` | Configuration file path |\n\n### `bueno build`\n\nBuild your application for production.\n\n```bash\nbueno build\nbueno build --target node --outdir ./dist\nbueno build --compile --cross-compile\n```\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `-t, --target` | `bun` | Build target (`bun`, `node`, `standalone`) |\n| `-o, --outdir` | `./dist` | Output directory |\n| `--no-minify` | `false` | Disable minification |\n| `--sourcemap` | `false` | Generate source maps |\n| `--analyze` | `false` | Analyze bundle size |\n| `--compile` | `false` | Compile to executable |\n| `--cross-compile` | `false` | Cross-compile for other platforms |\n| `--executable-name` | `app` | Executable name |\n\n### `bueno start`\n\nStart the production server.\n\n```bash\nbueno start\nbueno start --port 8080 --workers 4\n```\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `-p, --port` | `3000` | Server port |\n| `-H, --host` | `0.0.0.0` | Server host |\n| `-w, --workers` | `1` | Number of worker threads |\n| `-c, --config` | `bueno.config.ts` | Configuration file path |\n\n### `bueno generate <type> <name>`\n\nGenerate code artifacts (alias: `g`).\n\n```bash\nbueno generate controller UserController\nbueno g service AuthService --module auth\nbueno g dto CreateUserDTO --dry-run\n```\n\n| Type | Description |\n|------|-------------|\n| `controller` | HTTP controller |\n| `service` | Injectable service |\n| `module` | Feature module |\n| `guard` | Authentication/authorization guard |\n| `interceptor` | Request/response interceptor |\n| `pipe` | Validation/transformation pipe |\n| `filter` | Exception filter |\n| `dto` | Data Transfer Object |\n| `middleware` | Custom middleware |\n| `migration` | Database migration |\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `-m, --module` | - | Parent module for the artifact |\n| `--path` | - | Custom output path |\n| `--dry-run` | `false` | Preview without writing |\n| `--force` | `false` | Overwrite existing files |\n\n### `bueno migration <action>`\n\nManage database migrations.\n\n```bash\nbueno migration create add_users_table\nbueno migration up\nbueno migration down --steps 2\nbueno migration reset\nbueno migration status\n```\n\n| Action | Description |\n|--------|-------------|\n| `create <name>` | Create a new migration |\n| `up` | Run pending migrations |\n| `down` | Rollback migrations |\n| `reset` | Reset database and re-run all migrations |\n| `refresh` | Reset and re-seed database |\n| `status` | Show migration status |\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `-n, --steps` | `1` | Number of migrations to rollback |\n| `--dry-run` | `false` | Preview without executing |\n\n### `bueno help`\n\nDisplay help information.\n\n```bash\nbueno help\nbueno help dev\nbueno generate --help\n```\n\n### Global Options\n\n| Option | Description |\n|--------|-------------|\n| `--help, -h` | Show help |\n| `--version, -v` | Show version |\n| `--verbose` | Enable verbose output |\n| `--quiet` | Suppress output |\n| `--no-color` | Disable colored output |\n\n## Core Features\n\n### Background Jobs\nJob queue system with Redis and memory drivers.\n\n```typescript\nimport { JobQueue, createJobQueue, startWorker } from '@buenojs/bueno/jobs';\n\n// Create a job queue\nconst queue = createJobQueue({\n  driver: 'redis',\n  redisUrl: 'redis://localhost:6379',\n});\n\n// Define a job handler\nqueue.registerHandler('send-email', async (job) => {\n  const { to, subject, body } = job.data;\n  await emailService.send(to, subject, body);\n  return { success: true };\n});\n\n// Start a worker\nstartWorker(queue, { concurrency: 5 });\n\n// Add a job to the queue\nawait queue.add('send-email', {\n  to: 'user@example.com',\n  subject: 'Welcome!',\n  body: 'Thank you for joining our platform.',\n});\n```\n\n### Notifications\nMulti-channel notification system with support for email, SMS, WhatsApp, and push notifications.\n\n```typescript\nimport { NotificationService, createNotificationService, EmailChannelService } from '@buenojs/bueno/notification';\n\n// Create notification service\nconst notificationService = createNotificationService({\n  channels: [\n    new EmailChannelService({\n      smtp: {\n        host: 'smtp.gmail.com',\n        port: 587,\n        auth: {\n          user: 'your-email@gmail.com',\n          pass: 'your-password',\n        },\n      },\n    }),\n  ],\n});\n\n// Send a notification\nawait notificationService.send({\n  to: 'user@example.com',\n  subject: 'Welcome!',\n  body: 'Thank you for joining our platform.',\n  channel: 'email',\n});\n```\n\n### Observability\nStructured error tracking and observability integration.\n\n```typescript\nimport { createApp } from '@buenojs/bueno';\nimport { ObservabilityModule } from '@buenojs/bueno/observability';\n\nconst app = createApp(AppModule);\n\n// Wire observability with custom reporter (e.g., Sentry)\nconst obs = ObservabilityModule.setup(app, {\n  reporter: new MyReporter(),\n  breadcrumbsSize: 20,\n  ignoreStatusCodes: [404, 401],\n  tags: { environment: 'production' },\n});\n\nawait app.listen(3000);\n```\n\n### Metrics\nRuntime metrics collection for memory, CPU, and event loop lag.\n\n```typescript\nimport { MetricsCollector, createMetricsCollector, toPrometheusFormat } from '@buenojs/bueno/metrics';\n\n// Create metrics collector\nconst collector = createMetricsCollector({\n  maxHistorySize: 100,\n  measureEventLoopLag: true,\n});\n\n// Collect metrics periodically\ncollector.startPeriodicCollection(5000);\n\n// Get metrics\nconst metrics = collector.getLatest();\nconsole.log(toPrometheusFormat(metrics));\n```\n\n### i18n\nInternationalization support with translation loading and locale negotiation.\n\n```typescript\nimport { I18n, createI18n, i18nMiddleware } from '@buenojs/bueno/i18n';\n\n// Create i18n instance\nconst i18n = createI18n({\n  defaultLocale: 'en',\n  locales: ['en', 'fr', 'es'],\n  translations: {\n    en: {\n      welcome: 'Welcome!',\n      goodbye: 'Goodbye!',\n    },\n    fr: {\n      welcome: 'Bienvenue!',\n      goodbye: 'Au revoir!',\n    },\n  },\n});\n\n// Use middleware\nserver.use(i18nMiddleware(i18n));\n```\n\n### HTTP & Routing\n\nBueno provides a powerful and intuitive routing system with full HTTP method support.\n\n```typescript\nimport { createServer, Router } from '@buenojs/bueno';\n\nconst router = new Router();\n\n// All HTTP methods\nrouter.get('/users', getUsers);\nrouter.post('/users', createUser);\nrouter.put('/users/:id', updateUser);\nrouter.patch('/users/:id', patchUser);\nrouter.delete('/users/:id', deleteUser);\n\n// Path parameters\nrouter.get('/users/:id', (ctx) => {\n  const { id } = ctx.params;\n  return ctx.json({ userId: id });\n});\n\n// Query parameters\nrouter.get('/search', (ctx) => {\n  const { q, page, limit } = ctx.query;\n  return ctx.json({ query: q, page, limit });\n});\n\n// Wildcard routes\nrouter.get('/files/*', (ctx) => {\n  const path = ctx.params['*'];\n  return ctx.json({ filePath: path });\n});\n\n// Route groups\nrouter.group('/api/v1', (api) => {\n  api.get('/users', getUsers);\n  api.post('/users', createUser);\n});\n\nconst server = createServer();\nserver.router = router;\nserver.listen(3000);\n```\n\n### Dependency Injection\n\nBuilt-in IoC container inspired by NestJS for clean, testable code.\n\n```typescript\nimport { Container, createToken, Injectable, Inject } from '@buenojs/bueno';\n\n// Create tokens\nconst ILogger = createToken<Logger>('Logger');\nconst IUserRepository = createToken<UserRepository>('UserRepository');\n\n// Define injectable services\n@Injectable()\nclass UserRepository {\n  constructor(@Inject(ILogger) private logger: Logger) {}\n  \n  async findById(id: string) {\n    this.logger.debug(`Finding user ${id}`);\n    // ...\n  }\n}\n\n// Register and resolve\nconst container = new Container();\ncontainer.register(ILogger, ConsoleLogger);\ncontainer.register(IUserRepository, UserRepository);\n\nconst repo = container.resolve(IUserRepository);\n```\n\n### Middleware\n\nComprehensive middleware system with built-in utilities and custom middleware support.\n\n#### Built-in Middleware\n\n```typescript\nimport { \n  logger, \n  cors, \n  requestId, \n  timing, \n  securityHeaders, \n  rateLimit, \n  compression \n} from '@buenojs/bueno/middleware';\n\nconst server = createServer();\n\n// Add middleware\nserver.use(logger());\nserver.use(cors({ origin: ['https://example.com'] }));\nserver.use(requestId());\nserver.use(timing());\nserver.use(securityHeaders());\nserver.use(rateLimit({ windowMs: 60000, max: 100 }));\nserver.use(compression());\n```\n\n#### Custom Middleware\n\n```typescript\nimport { compose, createPipeline } from '@buenojs/bueno/middleware';\n\n// Compose multiple middleware\nconst apiMiddleware = compose([\n  authMiddleware,\n  rateLimitMiddleware,\n  loggingMiddleware\n]);\n\n// Create custom pipeline\nconst pipeline = createPipeline()\n  .use(authMiddleware)\n  .use(validationMiddleware)\n  .use(handler);\n\nserver.use('/api', apiMiddleware);\n```\n\n### Modules System\n\nNestJS-inspired modular architecture with decorators.\n\n```typescript\nimport { Module, Controller, Injectable, Get, Post, Body } from '@buenojs/bueno/modules';\n\n@Injectable()\nclass UserService {\n  private users: User[] = [];\n  \n  findAll() {\n    return this.users;\n  }\n  \n  create(data: CreateUserDTO) {\n    const user = { id: crypto.randomUUID(), ...data };\n    this.users.push(user);\n    return user;\n  }\n}\n\n@Controller('/users')\nclass UserController {\n  constructor(private userService: UserService) {}\n  \n  @Get()\n  findAll() {\n    return this.userService.findAll();\n  }\n  \n  @Post()\n  create(@Body() data: CreateUserDTO) {\n    return this.userService.create(data);\n  }\n}\n\n@Module({\n  controllers: [UserController],\n  providers: [UserService],\n})\nclass UserModule {}\n```\n\n### Database\n\nMulti-database support with migrations and schema builder.\n\n```typescript\nimport { Database, createConnection, SchemaBuilder } from '@buenojs/bueno/database';\n\n// Create connection\nconst db = createConnection({\n  type: 'postgresql', // 'sqlite' | 'mysql' | 'postgresql'\n  host: 'localhost',\n  port: 5432,\n  database: 'myapp',\n  username: 'user',\n  password: 'pass',\n});\n\n// Query builder\nconst users = await db.table('users')\n  .where('active', true)\n  .orderBy('created_at', 'desc')\n  .limit(10)\n  .get();\n\n// Schema builder\nconst schema = new SchemaBuilder(db);\nawait schema.createTable('users', (table) => {\n  table.uuid('id').primary();\n  table.string('email').unique().notNullable();\n  table.string('name').notNullable();\n  table.timestamp('created_at').default('now()');\n  table.index(['email', 'name']);\n});\n```\n\n### Validation\n\nBueno includes a **zero-dependency** built-in validation system for common use cases, with optional support for external libraries like Zod, Valibot, and ArkType via the Standard Schema adapter.\n\n#### Built-in Validation (No Dependencies)\n\n```typescript\nimport { Schema, Fields, validate, validateBody } from '@buenojs/bueno/validation';\n\n// Define schema with built-in validators\nconst UserSchema = Schema.object({\n  name: Fields.string({ min: 1, max: 100 }),\n  email: Fields.string({ email: true }),\n  age: Fields.number({ positive: true, optional: true }),\n  role: Fields.enum(['admin', 'user', 'guest']),\n});\n\n// Validate in route\nrouter.post('/users', async (ctx) => {\n  const result = await validateBody(ctx, UserSchema);\n\n  if (!result.success) {\n    return ctx.status(400).json({\n      error: 'Validation failed',\n      issues: result.issues\n    });\n  }\n\n  const user = result.data; // Fully typed!\n});\n```\n\n#### Built-in Field Validators\n\n```typescript\nimport { Fields } from '@buenojs/bueno/validation';\n\nFields.string({\n  min: 1,           // Minimum length\n  max: 255,         // Maximum length\n  pattern: /regex/, // Regex validation\n  email: true,      // Email format\n  url: true,        // URL format\n  uuid: true,       // UUID format\n  optional: true,   // Allow undefined/null\n})\n\nFields.number({\n  min: 0,           // Minimum value\n  max: 100,         // Maximum value\n  integer: true,    // Must be integer\n  positive: true,   // Must be > 0\n  optional: true,   // Allow undefined/null\n})\n\nFields.boolean({ optional: true })\n\nFields.array({\n  min: 1,           // Minimum items\n  max: 10,          // Maximum items\n  itemValidator: Fields.string(), // Validate each item\n  optional: true,\n})\n\nFields.enum(['admin', 'user'], { optional: true })\n\nFields.custom(\n  (value) => typeof value === 'string' && value.length > 0,\n  'Custom validation message'\n)\n```\n\n#### Middleware Validation\n\n```typescript\nimport { createValidator } from '@buenojs/bueno/validation';\n\nconst validateUserInput = createValidator({\n  body: UserSchema,\n  query: QuerySchema,\n  params: ParamsSchema,\n  headers: HeadersSchema,\n});\n\nrouter.post('/users/:id', validateUserInput, async (ctx) => {\n  const user = ctx.get('validatedBody');\n  const params = ctx.get('validatedParams');\n  // All validated and typed!\n});\n```\n\n#### Optional: Use External Validators (Zod, Valibot, ArkType)\n\nBueno supports **any Standard Schema-compatible library**. Install your preferred validator and use it with Bueno's validation functions:\n\n```bash\n# Install your chosen validator (optional)\nbun add zod\n# or\nbun add valibot\n# or\nbun add arktype\n```\n\n```typescript\nimport { validate, validateBody } from '@buenojs/bueno/validation';\nimport { z } from 'zod'; // Optional, use any Standard Schema library\n\n// Use Zod schema (or Valibot, ArkType, Typia)\nconst UserSchema = z.object({\n  name: z.string().min(2),\n  email: z.string().email(),\n  age: z.number().int().positive().optional(),\n});\n\n// Works seamlessly with Bueno validators\nrouter.post('/users', async (ctx) => {\n  const result = await validateBody(ctx, UserSchema);\n\n  if (!result.success) {\n    return ctx.status(400).json({\n      error: 'Validation failed',\n      issues: result.issues\n    });\n  }\n\n  const user = result.data;\n});\n```\n\n#### Supported External Libraries\n\n| Library | Minimum Version | Status |\n|---------|-----------------|--------|\n| Zod | 4.0+ | ✅ Supported |\n| Valibot | 1.0+ | ✅ Supported |\n| ArkType | 2.0+ | ✅ Supported |\n| Typia | 7.0+ | ✅ Supported |\n\nAll libraries using the **Standard Schema** interface are supported automatically.\n\n### Security\n\nComprehensive security features out of the box.\n\n```typescript\nimport { \n  hashPassword, \n  verifyPassword,\n  createJWT,\n  verifyJWT,\n  csrf,\n  auth,\n  rbac,\n  apiKey\n} from '@buenojs/bueno/security';\n\n// Password hashing\nconst hashedPassword = await hashPassword('user-password');\nconst isValid = await verifyPassword(hashedPassword, 'user-password');\n\n// JWT\nconst token = createJWT({ userId: '123' }, { expiresIn: '1h' });\nconst payload = verifyJWT(token);\n\n// CSRF protection\nserver.use(csrf());\n\n// Auth middleware\nserver.use(auth({ \n  strategy: 'jwt',\n  secret: process.env.JWT_SECRET \n}));\n\n// RBAC\nserver.use(rbac({\n  roles: ['admin', 'user', 'guest'],\n  permissions: {\n    admin: ['*'],\n    user: ['read', 'write'],\n    guest: ['read']\n  }\n}));\n\n// API Key middleware\nserver.use('/api', apiKey({\n  header: 'X-API-Key',\n  validate: async (key) => await findApiKey(key)\n}));\n```\n\n### RPC Client\n\nType-safe API client generation for seamless frontend-backend communication.\n\n```typescript\n// server/routes.ts\nimport { defineRoutes } from '@buenojs/bueno/rpc';\n\nexport const routes = defineRoutes((r) => ({\n  getUsers: r.get('/users').response<User[]>(),\n  getUser: r.get('/users/:id').response<User>(),\n  createUser: r.post('/users').body<CreateUserDTO>().response<User>(),\n}));\n\n// client/api.ts\nimport { createClient } from '@buenojs/bueno/rpc';\nimport { routes } from '../shared/routes';\n\nconst api = createClient('http://localhost:3000', routes);\n\n// Fully typed!\nconst users = await api.getUsers();\nconst user = await api.getUser({ id: '123' });\nconst newUser = await api.createUser({ name: 'John', email: 'john@example.com' });\n```\n\n### Caching & Sessions\n\nRedis-backed caching and session management.\n\n```typescript\nimport { Cache, SessionStore, createRedisClient } from '@buenojs/bueno/cache';\n\n// Redis cache\nconst redis = createRedisClient({ url: 'redis://localhost:6379' });\nconst cache = new Cache(redis);\n\nawait cache.set('user:123', userData, { ttl: 3600 });\nconst user = await cache.get<User>('user:123');\n\n// Session store\nconst sessions = new SessionStore(redis);\nconst session = await sessions.create({ userId: '123' });\nconst data = await sessions.get(session.id);\nawait sessions.destroy(session.id);\n```\n\n### Distributed Locking\n\nCoordinate distributed operations with Redis or in-memory locks.\n\n```typescript\nimport { RedisLock, MemoryLock } from '@buenojs/bueno/lock';\n\n// Redis-based distributed lock\nconst lock = new RedisLock(redis);\nawait lock.acquire('resource:123', { ttl: 5000 });\ntry {\n  // Critical section\n  await processResource();\n} finally {\n  await lock.release('resource:123');\n}\n\n// In-memory lock for single-instance apps\nconst memoryLock = new MemoryLock();\n```\n\n### Static Site Generation (SSG)\n\nGenerate static sites with markdown support.\n\n```typescript\nimport { SSG, markdownParser } from '@buenojs/bueno/ssg';\n\nconst ssg = new SSG({\n  contentDir: './content',\n  outputDir: './dist',\n  templates: './templates',\n});\n\n// Parse markdown\nssg.parser.use(markdownParser());\n\n// Generate static pages\nawait ssg.build();\n```\n\n### Storage\n\nS3-compatible storage and secrets management.\n\n```typescript\nimport { Storage, SecretsManager } from '@buenojs/bueno/storage';\n\n// S3-compatible storage\nconst storage = new Storage({\n  provider: 's3',\n  bucket: 'my-bucket',\n  region: 'us-east-1',\n  credentials: {\n    accessKeyId: process.env.AWS_ACCESS_KEY,\n    secretAccessKey: process.env.AWS_SECRET_KEY,\n  },\n});\n\nawait storage.upload('uploads/file.pdf', fileBuffer);\nconst file = await storage.download('uploads/file.pdf');\n\n// Secrets management\nconst secrets = new SecretsManager({\n  provider: 'aws-secrets-manager',\n  secretId: 'my-app/secrets',\n});\n\nconst dbPassword = await secrets.get('DATABASE_PASSWORD');\n```\n\n### WebSocket\n\nReal-time communication with WebSocket support.\n\n```typescript\nimport { WebSocketServer, WebSocketClient, PubSub } from '@buenojs/bueno/websocket';\n\n// Server\nconst wss = new WebSocketServer({ port: 3001 });\n\nwss.on('connection', (client) => {\n  console.log('Client connected');\n  \n  client.on('message', (data) => {\n    // Broadcast to all clients\n    wss.broadcast({ type: 'chat', data });\n  });\n});\n\n// PubSub\nconst pubsub = new PubSub(redis);\npubsub.subscribe('channel:updates', (message) => {\n  wss.broadcast(message);\n});\n\n// Client\nconst ws = new WebSocketClient('ws://localhost:3001');\nws.on('message', (data) => console.log(data));\nws.send({ type: 'chat', message: 'Hello!' });\n```\n\n### Logging\n\nFlexible logging with multiple transports.\n\n```typescript\nimport { Logger, ConsoleTransport, FileTransport } from '@buenojs/bueno/logger';\n\nconst logger = new Logger({\n  level: 'debug',\n  transports: [\n    new ConsoleTransport({ colorize: true }),\n    new FileTransport({ path: './logs/app.log' }),\n  ],\n});\n\nlogger.info('Server started');\nlogger.error('Database connection failed', { error: err });\nlogger.debug('Request received', { method, path });\n```\n\n### Health Checks\n\nBuilt-in health check endpoints for monitoring.\n\n```typescript\nimport { HealthChecker, DatabaseCheck, CacheCheck, TCPCheck, HTTPCheck } from '@buenojs/bueno/health';\n\nconst health = new HealthChecker();\n\nhealth.addCheck('database', new DatabaseCheck(db));\nhealth.addCheck('redis', new CacheCheck(redis));\nhealth.addCheck('api', new HTTPCheck('https://api.example.com/health'));\nhealth.addCheck('smtp', new TCPCheck('smtp.example.com', 25));\n\n// Health endpoint\nrouter.get('/health', async (ctx) => {\n  const result = await health.check();\n  return ctx.json(result, result.healthy ? 200 : 503);\n});\n```\n\n### Testing\n\nComprehensive testing utilities for unit and integration tests.\n\n```typescript\nimport { AppTester, mock, assertions } from '@buenojs/bueno/testing';\nimport { describe, it, expect, beforeEach } from 'bun:test';\n\ndescribe('UserController', () => {\n  let tester: AppTester;\n  \n  beforeEach(async () => {\n    tester = await AppTester.create(AppModule);\n  });\n  \n  it('should create user', async () => {\n    const response = await tester\n      .post('/users')\n      .body({ name: 'John', email: 'john@example.com' })\n      .execute();\n    \n    expect(response.status).toBe(201);\n    expect(response.json()).toMatchObject({\n      name: 'John',\n      email: 'john@example.com'\n    });\n  });\n  \n  it('should validate input', async () => {\n    const response = await tester\n      .post('/users')\n      .body({ name: '' }) // Invalid\n      .execute();\n    \n    expect(response.status).toBe(400);\n  });\n});\n```\n\n## Frontend Support\n\nBueno provides first-class support for modern frontend frameworks with built-in Bun bundler integration, SSR, SSG, and Island Architecture.\n\n### Getting Started with Frontend\n\n**Option 1: Two-Stage Fullstack (Recommended)**\n```bash\n# Creates API backend + chosen frontend automatically\nbueno new my-app --template fullstack --framework react\n```\n\n**Option 2: Add Frontend to Existing Project**\n```bash\nbueno add:frontend react\n# or with other frameworks\nbueno add:frontend vue\nbueno add:frontend svelte\nbueno add:frontend solid\n```\n\n### Supported Frameworks\n\n- **React** - Full support with SSR and hydration, Tailwind CSS included\n- **Vue** - Server-side rendering with Vue 3, Tailwind CSS included\n- **Svelte** - SvelteKit-like experience, Tailwind CSS included\n- **SolidJS** - SolidJS with SSR, Tailwind CSS included\n\n### Built-in Features\n\n| Feature | Description |\n|---------|-------------|\n| **Bun Bundler** | Native Bun bundler with zero additional dependencies |\n| **Tailwind CSS** | Pre-configured with PostCSS and autoprefixer |\n| **TypeScript** | Full TypeScript support for client and server |\n| **HMR** | Hot module replacement for instant updates during development |\n| **Dev Scripts** | Convenient scripts for concurrent server/client development |\n| **Framework-Specific** | Optimized loader configurations for each framework |\n\n### Development Workflow\n\nAfter creating a fullstack project, you get two development modes:\n\n```bash\n# Terminal 1: Backend API\nbun run dev:server\n\n# Terminal 2: Frontend bundler\nbun run dev:client\n\n# Or run both concurrently\nbun run dev\n```\n\n### Project Structure (Fullstack)\n\n```\nmy-bueno-app/\n├── server/              # Backend API\n│   ├── main.ts\n│   ├── modules/\n│   └── database/\n├── client/              # Frontend application\n│   ├── src/\n│   │   ├── main.tsx/main.ts  # Entry point\n│   │   ├── App.tsx/vue/svelte # Main component\n│   │   └── styles/            # Global styles (Tailwind)\n│   ├── public/          # Static assets\n│   ├── index.html       # HTML template\n│   ├── bun.bundler.ts   # Bun bundler config\n│   ├── tailwind.config.ts\n│   ├── postcss.config.js\n│   └── tsconfig.json\n├── bueno.config.ts\n├── package.json\n└── tsconfig.json\n```\n\n### Example\n\n```typescript\n// client/pages/index.tsx\nimport { definePage } from '@buenojs/bueno/frontend';\n\nexport default definePage({\n  async loader() {\n    const posts = await fetch('/api/posts').then(r => r.json());\n    return { posts };\n  },\n  \n  render({ posts }) {\n    return (\n      <main>\n        <h1>Blog Posts</h1>\n        {posts.map(post => (\n          <article key={post.id}>\n            <h2>{post.title}</h2>\n            <p>{post.excerpt}</p>\n          </article>\n        ))}\n      </main>\n    );\n  }\n});\n```\n\n## Project Structure\n\n```\nmy-bueno-app/\n├── server/\n│   ├── main.ts                    # Application entry point\n│   ├── modules/                   # Feature modules\n│   │   ├── user/\n│   │   │   ├── user.module.ts\n│   │   │   ├── user.controller.ts\n│   │   │   ├── user.service.ts\n│   │   │   └── user.dto.ts\n│   │   └── auth/\n│   │       ├── auth.module.ts\n│   │       ├── auth.controller.ts\n│   │       └── auth.guard.ts\n│   ├── common/                    # Shared utilities\n│   │   ├── middleware/\n│   │   ├── decorators/\n│   │   └── utils/\n│   ├── config/                    # Configuration\n│   │   ├── index.ts\n│   │   └── database.ts\n│   └── database/                  # Database files\n│       ├── migrations/\n│       ├── seeds/\n│       └── schema.ts\n├── client/                        # Frontend application\n│   ├── pages/                     # File-based routes\n│   ├── components/                # UI components\n│   ├── layouts/                   # Page layouts\n│   └── main.tsx                   # Entry point\n├── shared/                        # Shared types and utilities\n│   ├── types/\n│   └── routes.ts\n├── tests/                         # Test files\n│   ├── unit/\n│   └── integration/\n├── bueno.config.ts                # Framework configuration\n├── package.json\n└── tsconfig.json\n```\n\n## NPM Scripts\n\n| Script | Description |\n|--------|-------------|\n| `bun run dev` | Start development server with watch mode |\n| `bun test` | Run test suite |\n| `bun test --watch` | Run tests in watch mode |\n| `bun test --coverage` | Run tests with coverage |\n| `bun build` | Build for production |\n| `bun run typecheck` | TypeScript type checking |\n\n## Framework Comparison\n\nBueno combines the best ideas from popular frameworks while being optimized for Bun:\n\n| Feature | Bueno | Hono | Express | NestJS | Next.js |\n|---------|-------|------|---------|--------|---------|\n| **Runtime** | Bun | Multi | Node | Node | Node |\n| **Zero Dependencies** | ✅ | ✅ | ❌ | ❌ | ❌ |\n| **Router** | ✅ | ✅ | ✅ | ✅ | ✅ |\n| **DI Container** | ✅ | ❌ | ❌ | ✅ | ❌ |\n| **Decorators** | ✅ | ❌ | ❌ | ✅ | ❌ |\n| **Built-in Validation** | ✅ | ❌ | ❌ | ❌ | ❌ |\n| **Built-in ORM** | ✅ | ❌ | ❌ | ❌ | ❌ |\n| **Built-in Caching** | ✅ | ❌ | ❌ | ❌ | ❌ |\n| **Built-in Jobs** | ✅ | ❌ | ❌ | ❌ | ❌ |\n| **SSR** | ✅ | ❌ | ❌ | ❌ | ✅ |\n| **SSG** | ✅ | ❌ | ❌ | ❌ | ✅ |\n| **WebSocket** | ✅ | ✅ | Plugin | ✅ | ❌ |\n| **CLI** | ✅ | ❌ | ❌ | ✅ | ✅ |\n\n**Migration Notes:**\n- **From Express**: Similar middleware patterns, but with native async/await and TypeScript\n- **From Hono**: Compatible routing API with additional DI and modules system\n- **From NestJS**: Familiar decorators and module structure, but Bun-native performance\n- **From Next.js**: Similar file-based routing and SSR capabilities, but backend-first approach\n\n## Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](https://github.com/buenojs/bueno/blob/main/CONTRIBUTING.md) for details.\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/buenojs/bueno.git\ncd bueno\n\n# Install dependencies\nbun install\n\n# Run tests\nbun test\n\n# Start development\nbun dev\n```\n\n## Links\n\n- **Documentation**: [https://buenojs.github.io](https://buenojs.github.io)\n- **GitHub**: [https://github.com/buenojs/bueno](https://github.com/buenojs/bueno)\n- **Issues**: [https://github.com/buenojs/bueno/issues](https://github.com/buenojs/bueno/issues)\n- **npm**: [https://www.npmjs.com/package/@buenojs/bueno](https://www.npmjs.com/package/@buenojs/bueno)\n\n## License\n\nMIT © [Sivaraj D](mailto:sivarajd@gmail.com)","readmeFilename":"README.md"}