{"_id":"@alt-javascript/boot-koa","_rev":"8-a09932cdcf0c08afd67470ce33ba71d6","name":"@alt-javascript/boot-koa","dist-tags":{"latest":"3.0.7"},"versions":{"3.0.0":{"name":"@alt-javascript/boot-koa","version":"3.0.0","keywords":["alt-javascript","koa","boot","cdi","dependency-injection","controller"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-koa@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-koa#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"cf8f423080a8f6a05c6321d9838063f50ea11b28","tarball":"https://registry.npmjs.org/@alt-javascript/boot-koa/-/boot-koa-3.0.0.tgz","fileCount":6,"integrity":"sha512-qzK2xOMJ4dyiAb6US/FsFniSsO82tMB0ThahJeYmtL8vkSJDsPYC3kREv9uYKK3Hhht41/JYSOUspYOGT847UA==","signatures":[{"sig":"MEYCIQDz35mizKhWC8kXay83I+ag3dXfcSrRmY6JWJnd6M2IVgIhAJZ9nTT+1w7pkvm5Rc/9K60UEhqH9HNT4T1XHVAF44wh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15904},"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-koa"},"_npmVersion":"11.12.0","description":"Koa adapter for @alt-javascript boot — CDI-managed Koa with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"koa":"^2.15.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","supertest":"^7.0.0","@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-koa_3.0.0_1774062728343_0.22134582027076322","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@alt-javascript/boot-koa","version":"3.0.1","keywords":["alt-javascript","koa","boot","cdi","dependency-injection","controller"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-koa@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-koa#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"2aba3fb8371a49ebc96d24244a68ca6a2abd4fef","tarball":"https://registry.npmjs.org/@alt-javascript/boot-koa/-/boot-koa-3.0.1.tgz","fileCount":6,"integrity":"sha512-KuKNC6sxJ7zbSKSQl683ghY2VPQFEfP3xDpQu8gT/IAhA64JesGjEWc6Vi1C31sgZ+Znh3C8WzbsQzhZiIcn1A==","signatures":[{"sig":"MEQCIHZfkWt1Iob+K6yIn9+yBmqZ+W7o2vs8FNBcgs7jaHdjAiBWGpfmwHsDdwzRJLtLnAOpski0q4IdduD4fBoS2K2Ysg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15907},"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-koa"},"_npmVersion":"11.12.0","description":"Koa adapter for @alt-javascript boot — CDI-managed Koa with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"koa":"^2.15.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","supertest":"^7.0.0","@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-koa_3.0.1_1774067475299_0.44488825616100525","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@alt-javascript/boot-koa","version":"3.0.2","keywords":["alt-javascript","koa","boot","cdi","dependency-injection","controller"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-koa@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-koa#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"f57c06532d84572f8c1140b0bf32f1fd27020e0e","tarball":"https://registry.npmjs.org/@alt-javascript/boot-koa/-/boot-koa-3.0.2.tgz","fileCount":6,"integrity":"sha512-mjsv01xIhOCJCyTDufNFHoaM+UFJ3Sl/4Yp3awG72/B+rqhBx9/59X4BFYZphdrGFMR4OLwy8NhPLEL6LElCFw==","signatures":[{"sig":"MEQCIFiMxlp0M5JXo9EVLHBuxdi9pVP3PKjQnQMSNfsJXCDNAiB2UiZ1n2qBY2Ovd2O+Qy2VTCf6P5Y57KtKeWAjxQF7TA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15907},"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-koa"},"_npmVersion":"11.12.0","description":"Koa adapter for @alt-javascript boot — CDI-managed Koa with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"koa":"^2.15.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","supertest":"^7.0.0","@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-koa_3.0.2_1774067775568_0.7206262952918645","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"@alt-javascript/boot-koa","version":"3.0.3","keywords":["alt-javascript","koa","boot","cdi","dependency-injection","controller"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-koa@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-koa#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"f93f10a2ead3820d38e093b2b7d82ca6659d4f10","tarball":"https://registry.npmjs.org/@alt-javascript/boot-koa/-/boot-koa-3.0.3.tgz","fileCount":6,"integrity":"sha512-XCSrgHwH3mce1FxI8PUJKGLTkcK0MONuY3T8c7xpybtl9v2RS5fer/iggUZue7XAU01jEcmMC8sdCFi55UQ7Uw==","signatures":[{"sig":"MEUCIQC3n4FooJiNyOph/xT3aQpFdqNop0j5QnI2Rq+lqp6YxAIgIlr83BtIw1wgSd93aHn8kDxZ6uA+A68JzEr/iE8ouF0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15907},"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-koa"},"_npmVersion":"11.12.0","description":"Koa adapter for @alt-javascript boot — CDI-managed Koa with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"koa":"^2.15.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","supertest":"^7.0.0","@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-koa_3.0.3_1774068663456_0.38911233741644113","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"@alt-javascript/boot-koa","version":"3.0.4","keywords":["alt-javascript","koa","boot","cdi","dependency-injection","controller"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-koa@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-koa#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"5cd1255ab0766444960c4535ddb5e2af1e154077","tarball":"https://registry.npmjs.org/@alt-javascript/boot-koa/-/boot-koa-3.0.4.tgz","fileCount":6,"integrity":"sha512-GyRwE6vaPni/RuhmykR5lRGriiyfbj/bY1Nu8Upf4SqErCJGr+0C7TJkC0EHJpfk6nkYCoW0EVAjHxz0vh+EyQ==","signatures":[{"sig":"MEUCIQCZcJFtqNNSfiXFDbo/J/nblfa161wv6WYpc2WJ4aDx3QIgQQL5EwlktAisg9aiw7/USJ5i2wX3P5MTQNU3n4L2evc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16706},"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-koa"},"_npmVersion":"11.12.0","description":"Koa adapter for @alt-javascript boot — CDI-managed Koa with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"koa":"^2.15.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","supertest":"^7.0.0","@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-koa_3.0.4_1774422714143_0.6002783917497005","host":"s3://npm-registry-packages-npm-production"}},"3.0.5":{"name":"@alt-javascript/boot-koa","version":"3.0.5","keywords":["alt-javascript","koa","boot","cdi","dependency-injection","controller"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-koa@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-koa#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"0e278096f806df69d6a02ce3cb30d7847c28d72a","tarball":"https://registry.npmjs.org/@alt-javascript/boot-koa/-/boot-koa-3.0.5.tgz","fileCount":6,"integrity":"sha512-AtaWU2wWLXM4v6okHpBVVGGdSgj2kfdu+E0UZzhhfnDwN2/vTbsbl2mOG/No4p/mJ8O0BPjAarQBaSA/WSnK+g==","signatures":[{"sig":"MEYCIQCnTNLhAAmTPFYgnXq+KxRhui8gKfMmh94O9R+qMRmOhQIhAI9YjfF1a6bFy49fQnfHx9etGJr1+LRaj4vkGOqWsrCW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16706},"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-koa"},"_npmVersion":"11.12.0","description":"Koa adapter for @alt-javascript boot — CDI-managed Koa with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"koa":"^2.15.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","supertest":"^7.0.0","@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-koa_3.0.5_1774428772756_0.41215122831246664","host":"s3://npm-registry-packages-npm-production"}},"3.0.6":{"name":"@alt-javascript/boot-koa","version":"3.0.6","keywords":["alt-javascript","koa","boot","cdi","dependency-injection","controller"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-koa@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-koa#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"1d0586f0f44d1b7e988a26ea9c04f6774c77aad5","tarball":"https://registry.npmjs.org/@alt-javascript/boot-koa/-/boot-koa-3.0.6.tgz","fileCount":6,"integrity":"sha512-JqNXQXNJTxYSCeuyGJf9e1gMxpSiqhfBy/lmWPoHkP4AqN3ZzF5S/YTcTS7xcw9Wo0YHEilK63v+fomiUdbHUg==","signatures":[{"sig":"MEQCIB9A6mrRrhG0lBIv15zEHOYGEqPdkARs0bEsUgtTBDekAiAZMJ7+KmRxKzhWBT8jD1qvuQ5CRM9D8YQDm5ZAQQH6CA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16706},"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-koa"},"_npmVersion":"11.12.1","description":"Koa adapter for @alt-javascript boot — CDI-managed Koa with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"koa":"^2.15.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","supertest":"^7.0.0","@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-koa_3.0.6_1774553431820_0.5524756141429117","host":"s3://npm-registry-packages-npm-production"}},"3.0.7":{"name":"@alt-javascript/boot-koa","version":"3.0.7","description":"Koa adapter for @alt-javascript boot — CDI-managed Koa 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","koa","boot","cdi","dependency-injection","controller"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"test":"mocha --recursive test/**/*.spec.js"},"dependencies":{"@alt-javascript/cdi":"3.0.7","koa":"^2.15.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","supertest":"^7.0.0","@alt-javascript/boot-jsdbc":"3.0.7"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/alt-javascript/boot.git","directory":"packages/boot-koa"},"homepage":"https://github.com/alt-javascript/boot/tree/main/packages/boot-koa#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"engines":{"node":">=20"},"gitHead":"01bd2e99058af03b3213c09c07ba87985bfeeeca","_id":"@alt-javascript/boot-koa@3.0.7","_nodeVersion":"24.14.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-H926LG0A17TtWSXsV5HEwl/YHwhQI5fA9nZi5owyRiKrbnQnlszBK+w9sDrDyQ+QQ4aRjJzGMXmXDHgxqmRDCg==","shasum":"f1fbc2fe612c19ef593520eeb4c3514aad2136f5","tarball":"https://registry.npmjs.org/@alt-javascript/boot-koa/-/boot-koa-3.0.7.tgz","fileCount":6,"unpackedSize":19964,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDSnYA9+jxef0gIxetT/z1AKb8AZWmFPqwysY5EXF5UFQIhANS8AB/aKvV3tgjAIbZbg/VdBw6b2VlBMkNVFR50Kxfa"}]},"_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-koa_3.0.7_1774553619678_0.03159930280620871"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-21T03:12:08.272Z","modified":"2026-03-26T19:33:40.005Z","3.0.0":"2026-03-21T03:12:08.464Z","3.0.1":"2026-03-21T04:31:15.439Z","3.0.2":"2026-03-21T04:36:15.715Z","3.0.3":"2026-03-21T04:51:03.608Z","3.0.4":"2026-03-25T07:11:54.295Z","3.0.5":"2026-03-25T08:52:52.900Z","3.0.6":"2026-03-26T19:30:31.976Z","3.0.7":"2026-03-26T19:33:39.871Z"},"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-koa#readme","keywords":["alt-javascript","koa","boot","cdi","dependency-injection","controller"],"repository":{"type":"git","url":"git+https://github.com/alt-javascript/boot.git","directory":"packages/boot-koa"},"description":"Koa adapter for @alt-javascript boot — CDI-managed Koa 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-koa\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-koa)](https://www.npmjs.com/package/@alt-javascript/boot-koa)\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\nKoa adapter for the `@alt-javascript` framework. Bridges CDI-managed controllers to Koa routes with a built-in JSON body parser and CDI middleware pipeline.\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-koa koa\n```\n\n## Usage\n\n```javascript\nimport { Boot } from '@alt-javascript/boot';\nimport { Context, Singleton } from '@alt-javascript/cdi';\nimport { koaStarter } from '@alt-javascript/boot-koa';\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)   { return this.todoService.findAll(); }\n  async create(request) { return this.todoService.create(request.body); }\n  async get(request)    { return this.todoService.findById(request.params.id); }\n}\n\nconst context = new Context([\n  ...koaStarter(),\n  new Singleton(TodoService),\n  new Singleton(TodoController),\n]);\n\nawait Boot.boot({ contexts: [context] });\n```\n\nControllers receive a normalised request object `{ params, query, headers, body, ctx, koaCtx }`. The built-in JSON body parser handles `application/json` content — no need for `koa-bodyparser`. The CDI context is available as `koaCtx.cdiContext`.\n\n## Middleware Pipeline\n\n`koaStarter()` 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## License\n\nMIT\n","readmeFilename":"README.md"}