{"_id":"@alt-javascript/boot-fastify","_rev":"8-c84b714a686bffe8517f4e1cddfcec49","name":"@alt-javascript/boot-fastify","dist-tags":{"latest":"3.0.7"},"versions":{"3.0.0":{"name":"@alt-javascript/boot-fastify","version":"3.0.0","keywords":["alt-javascript","fastify","boot","cdi","dependency-injection","controller","mvc"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-fastify@3.0.0","maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"contributors":[{"url":"Anthropic","name":"Claude"}],"homepage":"https://github.com/alt-javascript/boot/tree/main/packages/boot-fastify#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"c1f03337b319d8d3b6e874b62d9994a191eac67a","tarball":"https://registry.npmjs.org/@alt-javascript/boot-fastify/-/boot-fastify-3.0.0.tgz","fileCount":7,"integrity":"sha512-TUypKmXjoeZlZy5haNquWMMZiIala3DXqYVJMqqx3Q706NnSaKBuRj+5TAA4u9gYTzfkAlqH36xuKHTjfgYwhw==","signatures":[{"sig":"MEQCID6PlW6IGs7PH6yRaNnpL3WP1ZzrOPE5P7tLQ6+FMELQAiBxJG8CVNneKamqGC6gEVTUDagsKkanb9ygtZzzhiGeRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23002},"main":"index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./index.js"},"gitHead":"6bc9996e5d4f03d52e441c7d89e4132d0cfbeebb","scripts":{"test":"mocha --recursive test/**/*.spec.js"},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"repository":{"url":"git+https://github.com/alt-javascript/boot.git","type":"git","directory":"packages/boot-fastify"},"_npmVersion":"11.12.0","description":"Fastify adapter for @alt-javascript boot — CDI-managed Fastify with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"fastify":"^5.0.0","@alt-javascript/cdi":"3.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.7","mocha":"^11.7.5","@alt-javascript/boot":"3.0.0","@alt-javascript/config":"3.0.0","@alt-javascript/logger":"3.0.0","@alt-javascript/jsdbc-sqljs":"^1.0.0","@alt-javascript/jsdbc-template":"3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/boot-fastify_3.0.0_1774062724703_0.14389994553243968","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@alt-javascript/boot-fastify","version":"3.0.1","keywords":["alt-javascript","fastify","boot","cdi","dependency-injection","controller","mvc"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-fastify@3.0.1","maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"contributors":[{"url":"Anthropic","name":"Claude"}],"homepage":"https://github.com/alt-javascript/boot/tree/main/packages/boot-fastify#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"54c5f9099873c616d42a6e6c64179058fa3d4c4d","tarball":"https://registry.npmjs.org/@alt-javascript/boot-fastify/-/boot-fastify-3.0.1.tgz","fileCount":7,"integrity":"sha512-PRv0jqz2H1gFJJnm2k61k1aJ1AXm6qAkPUKElMnC85ho0PBPM+VVCAwgIBrXXSB+HWM79UTl1WYTq0V51CNSbw==","signatures":[{"sig":"MEUCIHsri9RshIxV/s1SkXTfxwlyD7kfX31EP9z0XXZlZfCtAiEA3Ir6iVOTYvROHns1n/r8aHoERZHj65vrf7pOt2SHM9Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23005},"main":"index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./index.js"},"gitHead":"59023df5b83098ff9e536f4b5821dd38b053d6be","scripts":{"test":"mocha --recursive test/**/*.spec.js"},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"repository":{"url":"git+https://github.com/alt-javascript/boot.git","type":"git","directory":"packages/boot-fastify"},"_npmVersion":"11.12.0","description":"Fastify adapter for @alt-javascript boot — CDI-managed Fastify with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"fastify":"^5.0.0","@alt-javascript/cdi":"3.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.7","mocha":"^11.7.5","@alt-javascript/boot":"3.0.1","@alt-javascript/config":"3.0.1","@alt-javascript/logger":"3.0.1","@alt-javascript/jsdbc-sqljs":"^1.0.0","@alt-javascript/jsdbc-template":"3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/boot-fastify_3.0.1_1774067471611_0.34866686949465686","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@alt-javascript/boot-fastify","version":"3.0.2","keywords":["alt-javascript","fastify","boot","cdi","dependency-injection","controller","mvc"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-fastify@3.0.2","maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"contributors":[{"url":"Anthropic","name":"Claude"}],"homepage":"https://github.com/alt-javascript/boot/tree/main/packages/boot-fastify#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"f332bcd8c5b901801b82994742c7bca569bf63e9","tarball":"https://registry.npmjs.org/@alt-javascript/boot-fastify/-/boot-fastify-3.0.2.tgz","fileCount":7,"integrity":"sha512-P4G0CVY6NQ8A1XyGE9obVc1RI2MJsS/1DgMd7nHvbIXo4LOoSGz/+/patzG6Q3wGaJqG5U5jFDAJyVMGX02mXw==","signatures":[{"sig":"MEQCIBsYIMr98JzDgaRdzPgL3k74YhNJ6i4GOrc7seyvizVCAiBee9aHu6ii+veq/cPVNnL9w7fZaOX7dlHw+a47Oe44qg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23005},"main":"index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./index.js"},"gitHead":"df365b8a2ff98a6a5f18da02ee01007ea5baa69b","scripts":{"test":"mocha --recursive test/**/*.spec.js"},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"repository":{"url":"git+https://github.com/alt-javascript/boot.git","type":"git","directory":"packages/boot-fastify"},"_npmVersion":"11.12.0","description":"Fastify adapter for @alt-javascript boot — CDI-managed Fastify with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"fastify":"^5.0.0","@alt-javascript/cdi":"3.0.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.7","mocha":"^11.7.5","@alt-javascript/boot":"3.0.2","@alt-javascript/config":"3.0.2","@alt-javascript/logger":"3.0.2","@alt-javascript/jsdbc-sqljs":"^1.0.0","@alt-javascript/jsdbc-template":"3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/boot-fastify_3.0.2_1774067772745_0.05370361261490264","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"@alt-javascript/boot-fastify","version":"3.0.3","keywords":["alt-javascript","fastify","boot","cdi","dependency-injection","controller","mvc"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-fastify@3.0.3","maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"contributors":[{"url":"Anthropic","name":"Claude"}],"homepage":"https://github.com/alt-javascript/boot/tree/main/packages/boot-fastify#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"d3f5318c8b68a32037ca10e5c6b2ce5d9cd93ae3","tarball":"https://registry.npmjs.org/@alt-javascript/boot-fastify/-/boot-fastify-3.0.3.tgz","fileCount":7,"integrity":"sha512-TOu2jYD4GbJCQlX58QL0hiUrgjfAPmqnHpvMY/nevnaVLU/v99PqA6aF0qMEkNXxpfPZXZF0NJTgGHuadq2IXw==","signatures":[{"sig":"MEUCIDeZooZNJxqPBPQ3sJkwA3mXz3gyUZpNV3NeK1T2lPZUAiEAprO7IYmbrk7h1YKzkvWkU0J1Am27tSf3A7n2QDEmbWM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23005},"main":"index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./index.js"},"gitHead":"e64fbbad53825fef88c3a0976208f27893822519","scripts":{"test":"mocha --recursive test/**/*.spec.js"},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"repository":{"url":"git+https://github.com/alt-javascript/boot.git","type":"git","directory":"packages/boot-fastify"},"_npmVersion":"11.12.0","description":"Fastify adapter for @alt-javascript boot — CDI-managed Fastify with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"fastify":"^5.0.0","@alt-javascript/cdi":"3.0.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.7","mocha":"^11.7.5","@alt-javascript/boot":"3.0.3","@alt-javascript/config":"3.0.3","@alt-javascript/logger":"3.0.3","@alt-javascript/jsdbc-sqljs":"^1.0.0","@alt-javascript/jsdbc-template":"3.0.3"},"_npmOperationalInternal":{"tmp":"tmp/boot-fastify_3.0.3_1774068660766_0.12344259922501344","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"@alt-javascript/boot-fastify","version":"3.0.4","keywords":["alt-javascript","fastify","boot","cdi","dependency-injection","controller","mvc"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-fastify@3.0.4","maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"contributors":[{"url":"Anthropic","name":"Claude"}],"homepage":"https://github.com/alt-javascript/boot/tree/main/packages/boot-fastify#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"e929f8f9ee922ce3be6100811fdaf4bb9c44bbcd","tarball":"https://registry.npmjs.org/@alt-javascript/boot-fastify/-/boot-fastify-3.0.4.tgz","fileCount":7,"integrity":"sha512-adFTKdhT6MfUEyquylFknXoYUiNQsmBgY+Bq8qyGZ0p70yo6AUQeEWAnDmxl0V4m1QNFRuDx1A0oZV7sER5mlQ==","signatures":[{"sig":"MEQCIEfRYjzCLWQGzrbHo1fgd2QNt4QXa9Lo5V9nkEtJRaczAiAdiAssraoU3+efe6qGV7l8CkkTnQ8rpALqMgld8xEvqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23365},"main":"index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./index.js"},"gitHead":"d8de2e8b94151a92fd0c9259d906dfe6d66e11f5","scripts":{"test":"mocha --recursive test/**/*.spec.js"},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"repository":{"url":"git+https://github.com/alt-javascript/boot.git","type":"git","directory":"packages/boot-fastify"},"_npmVersion":"11.12.0","description":"Fastify adapter for @alt-javascript boot — CDI-managed Fastify with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"fastify":"^5.0.0","@alt-javascript/cdi":"3.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.7","mocha":"^11.7.5","@alt-javascript/boot":"3.0.4","@alt-javascript/config":"3.0.4","@alt-javascript/logger":"3.0.4","@alt-javascript/boot-jsdbc":"3.0.4","@alt-javascript/jsdbc-sqljs":"^1.0.0","@alt-javascript/jsdbc-template":"*"},"_npmOperationalInternal":{"tmp":"tmp/boot-fastify_3.0.4_1774422704539_0.7717057757289247","host":"s3://npm-registry-packages-npm-production"}},"3.0.5":{"name":"@alt-javascript/boot-fastify","version":"3.0.5","keywords":["alt-javascript","fastify","boot","cdi","dependency-injection","controller","mvc"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-fastify@3.0.5","maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"contributors":[{"url":"Anthropic","name":"Claude"}],"homepage":"https://github.com/alt-javascript/boot/tree/main/packages/boot-fastify#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"1f978801af2ab9a568da8240f6f7fbe3a313ed3c","tarball":"https://registry.npmjs.org/@alt-javascript/boot-fastify/-/boot-fastify-3.0.5.tgz","fileCount":7,"integrity":"sha512-EukuxfTAWVPcvq81Wje/w0kULtapMpaLtqizznUTxxkyGBQ9Q3UfYxAeCsPP2TggoP2S7mi6LJLApDCoMc1ypQ==","signatures":[{"sig":"MEUCIQDVBVfekwuv1nLOXmh16vUHxcC8qSNEBQhrzBfkfYDjCwIgEXJpmrgfvFObrrBeDgeYX59vOrQJ8Lli4FyfdRlwyno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23365},"main":"index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./index.js"},"gitHead":"925db7483dcdfbfdb2571e74d3ae4bbfa494a126","scripts":{"test":"mocha --recursive test/**/*.spec.js"},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"repository":{"url":"git+https://github.com/alt-javascript/boot.git","type":"git","directory":"packages/boot-fastify"},"_npmVersion":"11.12.0","description":"Fastify adapter for @alt-javascript boot — CDI-managed Fastify with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"fastify":"^5.0.0","@alt-javascript/cdi":"3.0.5"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.7","mocha":"^11.7.5","@alt-javascript/boot":"3.0.5","@alt-javascript/config":"3.0.5","@alt-javascript/logger":"3.0.5","@alt-javascript/boot-jsdbc":"3.0.5","@alt-javascript/jsdbc-sqljs":"^1.0.0","@alt-javascript/jsdbc-template":"*"},"_npmOperationalInternal":{"tmp":"tmp/boot-fastify_3.0.5_1774428765241_0.4123281350899428","host":"s3://npm-registry-packages-npm-production"}},"3.0.6":{"name":"@alt-javascript/boot-fastify","version":"3.0.6","keywords":["alt-javascript","fastify","boot","cdi","dependency-injection","controller","mvc"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-fastify@3.0.6","maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"contributors":[{"url":"Anthropic","name":"Claude"}],"homepage":"https://github.com/alt-javascript/boot/tree/main/packages/boot-fastify#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"e2eed4ec0235e2d9ced4cc017e03d7bcf78eee8a","tarball":"https://registry.npmjs.org/@alt-javascript/boot-fastify/-/boot-fastify-3.0.6.tgz","fileCount":7,"integrity":"sha512-y334LNSxm1fjxfMzB87KOyUs/SyKcvglb+NNJefXYekHhJW7qsNlV3Q2kpvYKOlKB4T3l1TPEtysBLixlxJlSg==","signatures":[{"sig":"MEYCIQCMILGvwhkV8S/6sokIv6H5otDgH438EKMc0p+iSOTFXgIhANK9+I3ouFuylLWTq7adAdWe1B/5k2IeKRgtqHH6eDuJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23365},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"ba43e8807bc28583f98edddce84849875544bd51","scripts":{"test":"mocha --recursive test/**/*.spec.js"},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"repository":{"url":"git+https://github.com/alt-javascript/boot.git","type":"git","directory":"packages/boot-fastify"},"_npmVersion":"11.12.1","description":"Fastify adapter for @alt-javascript boot — CDI-managed Fastify with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"fastify":"^5.0.0","@alt-javascript/cdi":"3.0.6"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.7","mocha":"^11.7.5","@alt-javascript/boot":"3.0.6","@alt-javascript/config":"3.0.6","@alt-javascript/logger":"3.0.6","@alt-javascript/boot-jsdbc":"3.0.6","@alt-javascript/jsdbc-sqljs":"^1.0.0","@alt-javascript/jsdbc-template":"*"},"_npmOperationalInternal":{"tmp":"tmp/boot-fastify_3.0.6_1774553424255_0.8142026286790369","host":"s3://npm-registry-packages-npm-production"}},"3.0.7":{"name":"@alt-javascript/boot-fastify","version":"3.0.7","description":"Fastify adapter for @alt-javascript boot — CDI-managed Fastify with controller auto-registration","type":"module","main":"index.js","exports":{".":"./index.js"},"author":{"name":"Craig Parravicini"},"contributors":[{"name":"Claude","url":"Anthropic"},{"name":"Spring Framework","url":"VMware/Broadcom"}],"keywords":["alt-javascript","fastify","boot","cdi","dependency-injection","controller","mvc"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"test":"mocha --recursive test/**/*.spec.js"},"dependencies":{"@alt-javascript/cdi":"3.0.7","fastify":"^5.0.0"},"devDependencies":{"@alt-javascript/boot":"3.0.7","@alt-javascript/config":"3.0.7","@alt-javascript/jsdbc-template":"*","@alt-javascript/jsdbc-sqljs":"^1.0.0","@alt-javascript/logger":"3.0.7","chai":"^4.3.7","mocha":"^11.7.5","@alt-javascript/boot-jsdbc":"3.0.7"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/alt-javascript/boot.git","directory":"packages/boot-fastify"},"homepage":"https://github.com/alt-javascript/boot/tree/main/packages/boot-fastify#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"engines":{"node":">=20"},"gitHead":"01bd2e99058af03b3213c09c07ba87985bfeeeca","_id":"@alt-javascript/boot-fastify@3.0.7","_nodeVersion":"24.14.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-cqp9Uglz8j4fGUPtbqMMPTQ7kJ1P39IqexFHHc368B0pYauM/e9/8UzzKkkSBHVaHY03CXSPeEdP0Ux9Mhl2PA==","shasum":"13bce0c125cfa93ed657090518d7acd6171f8533","tarball":"https://registry.npmjs.org/@alt-javascript/boot-fastify/-/boot-fastify-3.0.7.tgz","fileCount":7,"unpackedSize":28341,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBt5Defx8BVnJPXGMlKs/QTuGq713J+RnsvKGtANRn02AiEAx1ty2ZXDDWkJ4rxNWDN+n9tvZUqaZEfssdhNgc48IFY="}]},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"directories":{},"maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/boot-fastify_3.0.7_1774553612990_0.4395029474809622"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-21T03:12:04.580Z","modified":"2026-03-26T19:33:33.299Z","3.0.0":"2026-03-21T03:12:04.924Z","3.0.1":"2026-03-21T04:31:11.765Z","3.0.2":"2026-03-21T04:36:12.872Z","3.0.3":"2026-03-21T04:51:00.913Z","3.0.4":"2026-03-25T07:11:44.689Z","3.0.5":"2026-03-25T08:52:45.398Z","3.0.6":"2026-03-26T19:30:24.402Z","3.0.7":"2026-03-26T19:33:33.123Z"},"bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"author":{"name":"Craig Parravicini"},"license":"MIT","homepage":"https://github.com/alt-javascript/boot/tree/main/packages/boot-fastify#readme","keywords":["alt-javascript","fastify","boot","cdi","dependency-injection","controller","mvc"],"repository":{"type":"git","url":"git+https://github.com/alt-javascript/boot.git","directory":"packages/boot-fastify"},"description":"Fastify adapter for @alt-javascript boot — CDI-managed Fastify with controller auto-registration","contributors":[{"name":"Claude","url":"Anthropic"},{"name":"Spring Framework","url":"VMware/Broadcom"}],"maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"readme":"# @alt-javascript/boot-fastify\n\n[![Language](https://img.shields.io/badge/language-JavaScript-yellow.svg)](https://developer.mozilla.org/en-US/docs/Web/JavaScript)\n[![npm version](https://img.shields.io/npm/v/%40alt-javascript%2Fboot-fastify)](https://www.npmjs.com/package/@alt-javascript/boot-fastify)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![CI](https://github.com/alt-javascript/boot/actions/workflows/node.js.yml/badge.svg)](https://github.com/alt-javascript/boot/actions/workflows/node.js.yml)\n\nFastify adapter for the `@alt-javascript` framework. Bridges CDI-managed controllers to Fastify routes with a CDI middleware pipeline for cross-cutting concerns.\n\n**Part of the [@alt-javascript](https://github.com/alt-javascript/boot) monorepo.**\n\n## Install\n\n```bash\nnpm install @alt-javascript/boot-fastify fastify\n```\n\n## Usage\n\n```javascript\nimport { Boot } from '@alt-javascript/boot';\nimport { Context, Singleton } from '@alt-javascript/cdi';\nimport { fastifyStarter } from '@alt-javascript/boot-fastify';\n\nclass TodoController {\n  static __routes = [\n    { method: 'GET',  path: '/todos',     handler: 'list'   },\n    { method: 'POST', path: '/todos',     handler: 'create' },\n    { method: 'GET',  path: '/todos/:id', handler: 'get'    },\n  ];\n\n  constructor() { this.todoService = null; } // autowired\n\n  async list(request, reply)   { return this.todoService.findAll(); }\n  async create(request, reply) { return this.todoService.create(request.body); }\n  async get(request, reply)    { return this.todoService.findById(request.params.id); }\n}\n\nconst context = new Context([\n  ...fastifyStarter(),\n  new Singleton(TodoService),\n  new Singleton(TodoController),\n]);\n\nawait Boot.boot({ contexts: [context] });\n```\n\nThe CDI context is available as `fastify.ctx` (instance decorator) and `request.ctx` (request decorator).\n\n## Controller Patterns\n\n### Declarative (`__routes`)\n\nHandlers receive native Fastify `(request, reply)` arguments.\n\n### Imperative (`routes(fastify, ctx)`)\n\n```javascript\nclass ImperativeController {\n  routes(fastify, ctx) {\n    fastify.get('/custom', async (request, reply) => {\n      return { from: ctx.get('myService').doSomething() };\n    });\n  }\n}\n```\n\n## Middleware Pipeline\n\n`fastifyStarter()` registers three built-in middleware components automatically:\n\n| Component | Order | Behaviour |\n|---|---|---|\n| `RequestLoggerMiddleware` | 10 | Logs `[METHOD] /path → status (Xms)` |\n| `ErrorHandlerMiddleware` | 20 | Converts thrown errors to JSON error responses |\n| `NotFoundMiddleware` | 30 | Returns 404 for unmatched routes |\n\nAdd custom middleware by declaring `static __middleware = { order: N }`:\n\n```javascript\nclass AuthMiddleware {\n  static __middleware = { order: 5 };\n\n  async handle(request, next) {\n    const token = request.headers.authorization?.replace('Bearer ', '');\n    if (!token) return { statusCode: 401, body: { error: 'Unauthorized' } };\n    return next({ ...request, user: { token } });\n  }\n}\n```\n\n## Configuration\n\n| Key | Default | Description |\n|---|---|---|\n| `server.port` | `3000` | Port to listen on |\n| `server.host` | `0.0.0.0` | Host to bind |\n| `middleware.requestLogger.enabled` | `true` | Enable request logging |\n| `middleware.errorHandler.enabled` | `true` | Enable error handler |\n| `middleware.notFound.enabled` | `true` | Enable 404 handler |\n\n## Testing\n\nUse Fastify's built-in `inject()` for testing without a network:\n\n```javascript\nconst fastify = appCtx.get('fastifyAdapter').fastify;\nconst response = await fastify.inject({ method: 'GET', url: '/todos' });\nassert.equal(response.statusCode, 200);\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}