{"_id":"@alt-javascript/boot-cloudflare-worker","_rev":"8-769b89294a04d62a02506f0ac03fb415","name":"@alt-javascript/boot-cloudflare-worker","dist-tags":{"latest":"3.0.7"},"versions":{"3.0.0":{"name":"@alt-javascript/boot-cloudflare-worker","version":"3.0.0","keywords":["alt-javascript","cloudflare","workers","serverless","boot","cdi","dependency-injection"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-cloudflare-worker@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-cloudflare-worker#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"248dd5273d213f7e35059fcbfddb956d641acf76","tarball":"https://registry.npmjs.org/@alt-javascript/boot-cloudflare-worker/-/boot-cloudflare-worker-3.0.0.tgz","fileCount":5,"integrity":"sha512-6pO1IyQYSJufFJ6pY0gszWlCTYEG2xh+i2W1YeCVZt0m7GuFo6U0ope4wZY+rUiliyg3D9k+7szqb7hnpDtohA==","signatures":[{"sig":"MEUCIDyV4p9KzrtatLjxH8/EfsWq/a9Zzys7QeiuRU9oMtDEAiEAzhwHgn2bkgZi5SvDXxD/MksuxKowaX99mMesNCMO8AY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16217},"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-cloudflare-worker"},"_npmVersion":"11.12.0","description":"Cloudflare Workers adapter for @alt-javascript boot — CDI-managed serverless with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@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-cloudflare-worker_3.0.0_1774062721104_0.36729825414792105","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@alt-javascript/boot-cloudflare-worker","version":"3.0.1","keywords":["alt-javascript","cloudflare","workers","serverless","boot","cdi","dependency-injection"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-cloudflare-worker@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-cloudflare-worker#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"f4fafde4620dc397cff2b67792cdcf022d9d7b03","tarball":"https://registry.npmjs.org/@alt-javascript/boot-cloudflare-worker/-/boot-cloudflare-worker-3.0.1.tgz","fileCount":5,"integrity":"sha512-cc01vEC6OH9vRfm0I85xoUjCymtw8+M6TuDtzyB9fCMTfkV05zUQRBgPihvlN9f+EXmheyjamAkl9EN6lOMfJA==","signatures":[{"sig":"MEUCIQDJ2IfIRnaynv2lvfw3LLdGiUEq6AmYMiLTlwVFR4/cdwIgZ8CkBtxtz9QTVZ1ZLZ7N4qtpqlOIiJrxTHOXxsGJm7U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16220},"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-cloudflare-worker"},"_npmVersion":"11.12.0","description":"Cloudflare Workers adapter for @alt-javascript boot — CDI-managed serverless with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@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-cloudflare-worker_3.0.1_1774067468184_0.02659136666001749","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@alt-javascript/boot-cloudflare-worker","version":"3.0.2","keywords":["alt-javascript","cloudflare","workers","serverless","boot","cdi","dependency-injection"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-cloudflare-worker@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-cloudflare-worker#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"2d36d4e7000a6a3d6adec76e087b50406a2e400e","tarball":"https://registry.npmjs.org/@alt-javascript/boot-cloudflare-worker/-/boot-cloudflare-worker-3.0.2.tgz","fileCount":5,"integrity":"sha512-Xuz7KTr+S4hZibbVqurIPsli2xN4SU7V8p+XzyKCos1AJYjoLIFwLYK1S7MfkjX+o1kQmv+v9N1fQgyzu/ljiQ==","signatures":[{"sig":"MEQCIBBVO57AaEPDLtfS61dFiJj6xF0f8A7V0907jZWKqi9XAiAFfSFAj7ufuVmL+ZLmBHJTsyBOZi3PRlyL8zuCIzI92g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16220},"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-cloudflare-worker"},"_npmVersion":"11.12.0","description":"Cloudflare Workers adapter for @alt-javascript boot — CDI-managed serverless with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@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-cloudflare-worker_3.0.2_1774067769997_0.7431662248199371","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"@alt-javascript/boot-cloudflare-worker","version":"3.0.3","keywords":["alt-javascript","cloudflare","workers","serverless","boot","cdi","dependency-injection"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-cloudflare-worker@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-cloudflare-worker#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"ed5a0bdfbed19af9ab214a8ffb138b6fbdd65727","tarball":"https://registry.npmjs.org/@alt-javascript/boot-cloudflare-worker/-/boot-cloudflare-worker-3.0.3.tgz","fileCount":5,"integrity":"sha512-uRO5F3ePg+v2O2cWJ8nyZw1pUNfg3GToX8PynZT8eN6GEJnQ3EgfuckblV0NgX/S0ltBAT9LFAQdV9o0PZer9A==","signatures":[{"sig":"MEUCIHiQybjuz++xZx6nxVtkn1kS7wKnjaQj1Zfc4NqSangXAiEA1PZWe5JHg+2cqIHAwCRCmsbpr0zcdKRPEbSvSpHnpVI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16220},"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-cloudflare-worker"},"_npmVersion":"11.12.0","description":"Cloudflare Workers adapter for @alt-javascript boot — CDI-managed serverless with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@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-cloudflare-worker_3.0.3_1774068657650_0.025295917950415303","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"@alt-javascript/boot-cloudflare-worker","version":"3.0.4","keywords":["alt-javascript","cloudflare","workers","serverless","boot","cdi","dependency-injection"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-cloudflare-worker@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-cloudflare-worker#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"6d47319f8d8663f3394e2d38b1a211da95bd6a89","tarball":"https://registry.npmjs.org/@alt-javascript/boot-cloudflare-worker/-/boot-cloudflare-worker-3.0.4.tgz","fileCount":5,"integrity":"sha512-nJACOFlDYHjD2gB4PeYrl7+6/Qzx/gjx6Dp5piGFBm8uA1eKQxD2LR+OiOuOuqAs4ROOfYJZiE+es21LmBbtlA==","signatures":[{"sig":"MEUCIBLPr4MWqPC6o3YcpOEchOhhwQyVGGg+O2Y4TkHP1m22AiEAr6bGRw8vI8y3ryKGhru0V3Ndu+7PxAocrBGgveGuUk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17840},"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-cloudflare-worker"},"_npmVersion":"11.12.0","description":"Cloudflare Workers adapter for @alt-javascript boot — CDI-managed serverless with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@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-cloudflare-worker_3.0.4_1774422700746_0.7273470672397353","host":"s3://npm-registry-packages-npm-production"}},"3.0.5":{"name":"@alt-javascript/boot-cloudflare-worker","version":"3.0.5","keywords":["alt-javascript","cloudflare","workers","serverless","boot","cdi","dependency-injection"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-cloudflare-worker@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-cloudflare-worker#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"b7bdbd438ee56c2a43d1a3f112d2d1bae764f94c","tarball":"https://registry.npmjs.org/@alt-javascript/boot-cloudflare-worker/-/boot-cloudflare-worker-3.0.5.tgz","fileCount":5,"integrity":"sha512-36vrkFqEOxWlQAgL7Cp7lPfM9s9BIFZ8u6zBuEuTpb3zoVF0sTeM1hy3cwqO+nSL6V6PBMTRkPHvzLqgFBDwYg==","signatures":[{"sig":"MEQCIDdmxCimywu+FTP8VGo+NILR8xljXExMdzlKE4U22wLxAiAys8+P/5EM9uu3yrKoWKEQiAGD0mfgfmlThCfdHV58Fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17840},"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-cloudflare-worker"},"_npmVersion":"11.12.0","description":"Cloudflare Workers adapter for @alt-javascript boot — CDI-managed serverless with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@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-cloudflare-worker_3.0.5_1774428761912_0.7564008487982983","host":"s3://npm-registry-packages-npm-production"}},"3.0.6":{"name":"@alt-javascript/boot-cloudflare-worker","version":"3.0.6","keywords":["alt-javascript","cloudflare","workers","serverless","boot","cdi","dependency-injection"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-cloudflare-worker@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-cloudflare-worker#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"f30014277755001fe361a5c7293ad919513e4161","tarball":"https://registry.npmjs.org/@alt-javascript/boot-cloudflare-worker/-/boot-cloudflare-worker-3.0.6.tgz","fileCount":5,"integrity":"sha512-arFODrosQtG5f1UIB+O6fjqlpZMtzx/Gb/pJG533DMZm4SJDo0Z7QbdGD1fjAByLqdQhL/7smn73c0yFflWCsw==","signatures":[{"sig":"MEUCIC0+blTDTvYaIk8gAcNX+lOqjm3rM1TYwn2CPlxPLcSCAiEA7ZmbOn5TcKyMhIhLcKR/8Quf6MKB+i8K12HtwT3vX5c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17840},"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-cloudflare-worker"},"_npmVersion":"11.12.1","description":"Cloudflare Workers adapter for @alt-javascript boot — CDI-managed serverless with controller auto-registration","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@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-cloudflare-worker_3.0.6_1774553419811_0.8284945692421661","host":"s3://npm-registry-packages-npm-production"}},"3.0.7":{"name":"@alt-javascript/boot-cloudflare-worker","version":"3.0.7","description":"Cloudflare Workers adapter for @alt-javascript boot — CDI-managed serverless 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","cloudflare","workers","serverless","boot","cdi","dependency-injection"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"test":"mocha --recursive test/**/*.spec.js"},"dependencies":{"@alt-javascript/cdi":"3.0.7"},"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-cloudflare-worker"},"homepage":"https://github.com/alt-javascript/boot/tree/main/packages/boot-cloudflare-worker#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"engines":{"node":">=20"},"gitHead":"01bd2e99058af03b3213c09c07ba87985bfeeeca","_id":"@alt-javascript/boot-cloudflare-worker@3.0.7","_nodeVersion":"24.14.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-x8tXVKG7tvyWCKXOjTqowFS/XMyTrKS956r0DNsWDPpPdefzhkHuLRCKunyr/S/RQHjTQTJ2FUSvGAoiz4wG/Q==","shasum":"8986114db16787e75fba5120c4f230856aa22b0a","tarball":"https://registry.npmjs.org/@alt-javascript/boot-cloudflare-worker/-/boot-cloudflare-worker-3.0.7.tgz","fileCount":5,"unpackedSize":21474,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBCV3iqKCibndcwfyKsrNooIRWGh44wnuLqATgz7GvRzAiEA25Iz5NdeRxOvIqwZPWFlXn/CP8iDj6sqxUslxSl5dME="}]},"_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-cloudflare-worker_3.0.7_1774553610423_0.7267941237778988"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-21T03:12:01.036Z","modified":"2026-03-26T19:33:30.709Z","3.0.0":"2026-03-21T03:12:01.248Z","3.0.1":"2026-03-21T04:31:08.354Z","3.0.2":"2026-03-21T04:36:10.140Z","3.0.3":"2026-03-21T04:50:57.808Z","3.0.4":"2026-03-25T07:11:40.897Z","3.0.5":"2026-03-25T08:52:42.043Z","3.0.6":"2026-03-26T19:30:19.964Z","3.0.7":"2026-03-26T19:33:30.588Z"},"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-cloudflare-worker#readme","keywords":["alt-javascript","cloudflare","workers","serverless","boot","cdi","dependency-injection"],"repository":{"type":"git","url":"git+https://github.com/alt-javascript/boot.git","directory":"packages/boot-cloudflare-worker"},"description":"Cloudflare Workers adapter for @alt-javascript boot — CDI-managed serverless 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-cloudflare-worker\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-cloudflare-worker)](https://www.npmjs.com/package/@alt-javascript/boot-cloudflare-worker)\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\nCloudflare Workers adapter for the `@alt-javascript` framework. Handles `fetch(request, env, ctx)` events with CDI-managed controllers and a CDI middleware pipeline. Returns Web Standards `Response` objects.\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-cloudflare-worker\n```\n\n## Usage\n\n```javascript\n// src/worker.js\nimport { Boot } from '@alt-javascript/boot';\nimport { Context, Singleton } from '@alt-javascript/cdi';\nimport { cloudflareWorkerStarter } from '@alt-javascript/boot-cloudflare-worker';\nimport { TodoService } from './services.js';\nimport { TodoController } from './controllers.js';\n\nconst context = new Context([\n  ...cloudflareWorkerStarter(),\n  new Singleton(TodoService),\n  new Singleton(TodoController),\n]);\n\nconst appCtxPromise = Boot.boot({ contexts: [context], run: false });\n\nexport default {\n  async fetch(request, env, ctx) {\n    const appCtx = await appCtxPromise;\n    return appCtx.get('cloudflareWorkerAdapter').fetch(request, env, ctx);\n  },\n};\n```\n\n## Controller Convention\n\n```javascript\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```\n\nHandlers return a plain object (200 JSON), `{ statusCode, body }` (explicit status), or `null` / `undefined` (204). The adapter wraps the result in a Web Standards `Response`.\n\nCloudflare `env` bindings (KV namespaces, D1 databases, secrets) are available on `request.env` inside controller handlers.\n\n## Middleware Pipeline\n\n`cloudflareWorkerStarter()` registers three built-in middleware components:\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| `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"}