{"_id":"@alt-javascript/boot-lambda","_rev":"8-91507e3d056356f27e4dde31f9729707","name":"@alt-javascript/boot-lambda","dist-tags":{"latest":"3.0.7"},"versions":{"3.0.0":{"name":"@alt-javascript/boot-lambda","version":"3.0.0","keywords":["alt-javascript","aws","lambda","serverless","boot","cdi","dependency-injection","controller","api-gateway"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-lambda@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-lambda#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"b60c1af93623d909d82911e8b4525a5c362bf134","tarball":"https://registry.npmjs.org/@alt-javascript/boot-lambda/-/boot-lambda-3.0.0.tgz","fileCount":7,"integrity":"sha512-JrKbN4C2TcaXWMBprd2BS14t2mnKtoa97XKLMWR7h+TPId8CnT3+USWKAaCisA71nMQ3KqW0mwrxBpqZOBVu6w==","signatures":[{"sig":"MEUCIAhggpNUTAbRDtA5g373lUAZHhAS5/Gvr41sTC/kenHFAiEA1AueUozbKBWKyaHFGIeSriQYbjMxqjbjyGLILf6gwFQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34023},"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-lambda"},"_npmVersion":"11.12.0","description":"AWS Lambda 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-lambda_3.0.0_1774062730676_0.7144734723932327","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@alt-javascript/boot-lambda","version":"3.0.1","keywords":["alt-javascript","aws","lambda","serverless","boot","cdi","dependency-injection","controller","api-gateway"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-lambda@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-lambda#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"7ce574ea549e4a58c5582cdb892362264865b0bc","tarball":"https://registry.npmjs.org/@alt-javascript/boot-lambda/-/boot-lambda-3.0.1.tgz","fileCount":7,"integrity":"sha512-jWcEe4Klu1YBBbbORZKR3aeh4g9DAvkoa8+fRtkXL7i7WYk1R2Byle7pnpm2rU1nP7bStatlY1o47OBfSX7y/Q==","signatures":[{"sig":"MEQCIAzXCBHfUaMj4T5JrxvyE5r0FOcp9c9lkTNtZeohcuPpAiB8sSVN9P9u5M5VaVnpn5Ya1rAxvoLIALwheiiVOmcJ+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34026},"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-lambda"},"_npmVersion":"11.12.0","description":"AWS Lambda 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-lambda_3.0.1_1774067476744_0.9047480122770848","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@alt-javascript/boot-lambda","version":"3.0.2","keywords":["alt-javascript","aws","lambda","serverless","boot","cdi","dependency-injection","controller","api-gateway"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-lambda@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-lambda#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"ed3a9ea5f2943b46fe03f478efddb6585b5b5f30","tarball":"https://registry.npmjs.org/@alt-javascript/boot-lambda/-/boot-lambda-3.0.2.tgz","fileCount":7,"integrity":"sha512-wo+uYecPi4ArBqVTao7vxOM3h4iGZdg+0myxMSGVpgy173PjCzruoxNHHrC5stWRyAa1aMv+FMYK1Ii89n5vgQ==","signatures":[{"sig":"MEQCICyGxoefdr6fwVydipepBzV5+rmA7auNUkXHeHFHtYFXAiBS23dtnvzJcSzBy7Ex4gTvLul2keJNecQUp5A2NlATYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34026},"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-lambda"},"_npmVersion":"11.12.0","description":"AWS Lambda 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-lambda_3.0.2_1774067776772_0.8379093090125977","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"@alt-javascript/boot-lambda","version":"3.0.3","keywords":["alt-javascript","aws","lambda","serverless","boot","cdi","dependency-injection","controller","api-gateway"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-lambda@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-lambda#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"81597f06fb452cb5f88e30b122905361479a8e9d","tarball":"https://registry.npmjs.org/@alt-javascript/boot-lambda/-/boot-lambda-3.0.3.tgz","fileCount":7,"integrity":"sha512-layiN64nZo37xpWHyfdpkebuttj4g79dUE6Yd3c/d8TLpjaJq5LdrJ0LOZiBd0datZglOCRZ/R1hMttfpBVdqg==","signatures":[{"sig":"MEUCIHy5Kk3ZJ2JSVQncC2REAHzVYJpUOBVIL6bhpYqLQtrsAiEA1JayRv6BnuP4oPNeOUcnjeCdu4D11QiJ4SJTeYAgw3o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34026},"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-lambda"},"_npmVersion":"11.12.0","description":"AWS Lambda 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-lambda_3.0.3_1774068665099_0.16337959503699295","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"@alt-javascript/boot-lambda","version":"3.0.4","keywords":["alt-javascript","aws","lambda","serverless","boot","cdi","dependency-injection","controller","api-gateway"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-lambda@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-lambda#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"d3228c7c7f3c1301912041598e217a78413ecb92","tarball":"https://registry.npmjs.org/@alt-javascript/boot-lambda/-/boot-lambda-3.0.4.tgz","fileCount":7,"integrity":"sha512-MWPjMQCsPzeEaQTqx45I/8ZKLeLdopu5+DGz9RByxlKGF3OxHyIzijC152mca1NjuZQlgB7AzGU/udXNjwHJbQ==","signatures":[{"sig":"MEUCIDYxf83B6YFZIVAoW6CAirurHQZ9c1H/89atXHY0aAOKAiEA1RVczv1L8pYPYXye/EYK326hb0SbbNLHli7Cb5b/HHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33617},"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-lambda"},"_npmVersion":"11.12.0","description":"AWS Lambda 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-lambda_3.0.4_1774422715593_0.16307172916416102","host":"s3://npm-registry-packages-npm-production"}},"3.0.5":{"name":"@alt-javascript/boot-lambda","version":"3.0.5","keywords":["alt-javascript","aws","lambda","serverless","boot","cdi","dependency-injection","controller","api-gateway"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-lambda@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-lambda#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"dc7b1252d9ebc015dc79d6346c9d7eb495bc7a5d","tarball":"https://registry.npmjs.org/@alt-javascript/boot-lambda/-/boot-lambda-3.0.5.tgz","fileCount":7,"integrity":"sha512-Txqg5dB5QGO3C9+/wPqSw8zBP7XZ7iLiKLzTocrN/aySjPm60ftX0ORUmr89GElZ8rfhpBoQK3tUUVzL3mqEBQ==","signatures":[{"sig":"MEUCIQCL6uvseM473kITnj1aVU7mVe7oeR8Nt7dMrEG/pXqchQIgQ3JwlhfHU9fv8atm1Y+bKzWnsxLe+ZLV9wQoDoFRSnw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33617},"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-lambda"},"_npmVersion":"11.12.0","description":"AWS Lambda 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-lambda_3.0.5_1774428774326_0.838513479245927","host":"s3://npm-registry-packages-npm-production"}},"3.0.6":{"name":"@alt-javascript/boot-lambda","version":"3.0.6","keywords":["alt-javascript","aws","lambda","serverless","boot","cdi","dependency-injection","controller","api-gateway"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/boot-lambda@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-lambda#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"dist":{"shasum":"d7d984249bb3053aef5886c656751f748fdda99f","tarball":"https://registry.npmjs.org/@alt-javascript/boot-lambda/-/boot-lambda-3.0.6.tgz","fileCount":7,"integrity":"sha512-gmhbICiZbwmqaRLIR+KG1/tRHrzUZOLm3gkIwFvR+vROmkLMj4tz0okOoY8hJ2jxdaKsWHumnjj1d/DwuWKmdQ==","signatures":[{"sig":"MEUCIQC1L3Nj6hLXsx8TV2bBnsV7H4ket7d6hqRNojwvYP64jwIgK4Tp388rHKWSv34TNTgt6zL/lmIVFff7oUd4UGwHZIc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33617},"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-lambda"},"_npmVersion":"11.12.1","description":"AWS Lambda 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-lambda_3.0.6_1774553435584_0.7202074397292504","host":"s3://npm-registry-packages-npm-production"}},"3.0.7":{"name":"@alt-javascript/boot-lambda","version":"3.0.7","description":"AWS Lambda 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","aws","lambda","serverless","boot","cdi","dependency-injection","controller","api-gateway"],"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-lambda"},"homepage":"https://github.com/alt-javascript/boot/tree/main/packages/boot-lambda#readme","bugs":{"url":"https://github.com/alt-javascript/boot/issues"},"engines":{"node":">=20"},"gitHead":"01bd2e99058af03b3213c09c07ba87985bfeeeca","_id":"@alt-javascript/boot-lambda@3.0.7","_nodeVersion":"24.14.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-T9mVE57YGX52cXbV/dST0mPxP2Bh3JhrdyXNnSygGLphF3hw9qsDsm0/zsZQum3130ayVJzTYGg8dVFeeRXqlw==","shasum":"e26f6e089c4d170681e8c5874f0a06d2982b43b8","tarball":"https://registry.npmjs.org/@alt-javascript/boot-lambda/-/boot-lambda-3.0.7.tgz","fileCount":7,"unpackedSize":37824,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAPDrQyX3yqtB+x1XOjF7e0JyXyYD58Qw/rrA4lOyZmtAiEAjzWt+x0DkEy4JRMklnd7sC2C+aQ5z9mWOgksCDHsfSk="}]},"_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-lambda_3.0.7_1774553620730_0.6239362774258455"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-21T03:12:10.564Z","modified":"2026-03-26T19:33:41.010Z","3.0.0":"2026-03-21T03:12:10.826Z","3.0.1":"2026-03-21T04:31:16.895Z","3.0.2":"2026-03-21T04:36:16.926Z","3.0.3":"2026-03-21T04:51:05.259Z","3.0.4":"2026-03-25T07:11:55.725Z","3.0.5":"2026-03-25T08:52:54.517Z","3.0.6":"2026-03-26T19:30:35.739Z","3.0.7":"2026-03-26T19:33:40.887Z"},"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-lambda#readme","keywords":["alt-javascript","aws","lambda","serverless","boot","cdi","dependency-injection","controller","api-gateway"],"repository":{"type":"git","url":"git+https://github.com/alt-javascript/boot.git","directory":"packages/boot-lambda"},"description":"AWS Lambda 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-lambda\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-lambda)](https://www.npmjs.com/package/@alt-javascript/boot-lambda)\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\nAWS Lambda adapter for the `@alt-javascript` framework. Handles API Gateway HTTP API v2 events with CDI-managed controllers and a CDI middleware pipeline for cross-cutting concerns.\n\nCDI boots once on cold start and is reused on warm invocations — the same pattern as Spring's `ApplicationContext` in a serverless launcher.\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-lambda\n```\n\n## Usage\n\n```javascript\n// handler.js (your Lambda entry point)\nimport { Boot } from '@alt-javascript/boot';\nimport { Context, Singleton } from '@alt-javascript/cdi';\nimport { lambdaStarter } from '@alt-javascript/boot-lambda';\nimport { TodoService } from './services.js';\nimport { TodoController } from './controllers.js';\n\nconst context = new Context([\n  ...lambdaStarter(),\n  new Singleton(TodoService),\n  new Singleton(TodoController),\n]);\n\n// Boot once — CDI is wired on cold start; run: false skips any HTTP server lifecycle\nconst appCtxPromise = Boot.boot({ contexts: [context], run: false });\n\nexport async function handler(event, lambdaContext) {\n  const appCtx = await appCtxPromise;\n  return appCtx.get('lambdaAdapter').handle(event, lambdaContext);\n}\n```\n\n## Controller Convention\n\nControllers use the same `__routes` metadata as all other adapters. Path parameters use API Gateway `{param}` syntax (Express-style `:param` is auto-converted):\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    { method: 'DELETE', path: '/todos/{id}', handler: 'remove' },\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  async remove(request) { return this.todoService.delete(request.params.id); }\n}\n```\n\nHandlers return a plain object (200 JSON), `{ statusCode, body }` (explicit status), or `null` / `undefined` (204 No Content).\n\n## Middleware Pipeline\n\n`lambdaStarter()` 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\nconst context = new Context([\n  ...lambdaStarter(),\n  new Singleton(AuthMiddleware), // auto-detected — no extra wiring\n  new Singleton(TodoController),\n]);\n```\n\n## Configuration\n\nConfig comes from `process.env` via `EnvPropertySource`. Use AWS SSM Parameter Store or Secrets Manager to inject environment variables at deploy time.\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## Testing\n\nTest the handler directly with API Gateway v2 event shapes — no AWS account needed:\n\n```javascript\nimport { handler } from '../handler.js';\n\nconst event = {\n  routeKey: 'GET /todos',\n  pathParameters: {},\n  queryStringParameters: {},\n  headers: { authorization: 'Bearer mytoken' },\n  body: null,\n  isBase64Encoded: false,\n};\n\nconst res = await handler(event, {});\nassert.equal(res.statusCode, 200);\n```\n\n## Spring Attribution\n\nThe cold-start / warm-reuse pattern maps to a Spring `ApplicationContext` held in a static field inside a serverless launcher — a common pattern for running Spring Boot in AWS Lambda.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}