{"_id":"@anyhook/aws","_rev":"3-173ad32a7eb072ae7a5e3d8dbc1a5482","name":"@anyhook/aws","dist-tags":{"latest":"0.2.2"},"versions":{"0.2.0":{"name":"@anyhook/aws","version":"0.2.0","keywords":["anyhook","aws","lambda","dynamodb","sqs","webhooks"],"author":{"name":"Shantanu Sharma"},"license":"MIT","_id":"@anyhook/aws@0.2.0","maintainers":[{"name":"sns45","email":"notifyshantanu@gmail.com"}],"dist":{"shasum":"6d42eb44c49b1379c3b65add6767b627528d56c8","tarball":"https://registry.npmjs.org/@anyhook/aws/-/aws-0.2.0.tgz","fileCount":21,"integrity":"sha512-PvG6CTqy/zVM5wQHRyG80Rv2fdeXQayJSlUW/puE7eBUn94Or9yMbidgd5lv1sdGkuaz4lpGEa7x4MpavbZu4Q==","signatures":[{"sig":"MEUCIQCYGt1vDkZeImidA527k+TOcJ3daAtvWqq70vdnjzLEFAIgcPmqlvSOeJgQMiYCJm54BcEa2dmXJzF3gxGa53AXOxc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2006043},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b52f20c74ba626bcc43682bc8e746a9ca4b40b69","scripts":{"test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target node && bun run build:types","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","build:types":"tsc --emitDeclarationOnly --outDir dist"},"_npmUser":{"name":"sns45","email":"notifyshantanu@gmail.com"},"_npmVersion":"10.9.2","description":"AWS adapter for anyhook: SQS transport + single-table DynamoDB state + due_at-GSI scheduler with a fixed-interval sweeper","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@anyq/sqs":"^0.3.1","@anyhook/core":"0.2.0","@anyhook/signing":"0.2.0","@aws-sdk/client-sqs":"^3.650.0","@aws-sdk/lib-dynamodb":"^3.650.0","@aws-sdk/client-dynamodb":"^3.650.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.3.0","@types/aws-lambda":"^8.10.0","aws-sdk-client-mock":"^4.0.0"},"peerDependencies":{"@anyhook/core":"0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aws_0.2.0_1784916197509_0.19363232147435872","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@anyhook/aws","version":"0.2.1","keywords":["anyhook","aws","lambda","dynamodb","sqs","webhooks"],"author":{"name":"Shantanu Sharma"},"license":"MIT","_id":"@anyhook/aws@0.2.1","maintainers":[{"name":"sns45","email":"notifyshantanu@gmail.com"}],"dist":{"shasum":"7eabd233be4173e05c5c46fab7093aba6c9541ae","tarball":"https://registry.npmjs.org/@anyhook/aws/-/aws-0.2.1.tgz","fileCount":21,"integrity":"sha512-SAwrzj0MCX7nM3rqtuwoGLa+aGLMt3wPT588uDH0odwwkRZAL7cK1nkeSUuPvxocT/pb5pvJaZAad6Wd8b4pNQ==","signatures":[{"sig":"MEYCIQCH4GCiSJHYEsnEnrt4uo+6EOTUE1XsL4IJh9qH0SBcxQIhAINOO6tEG2xYhdHVF+QOlWWCQKAu+6I2aYExo3loRsUH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2006043},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b52f20c74ba626bcc43682bc8e746a9ca4b40b69","scripts":{"test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target node && bun run build:types","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","build:types":"tsc --emitDeclarationOnly --outDir dist"},"_npmUser":{"name":"sns45","email":"notifyshantanu@gmail.com"},"_npmVersion":"10.9.2","description":"AWS adapter for anyhook: SQS transport + single-table DynamoDB state + due_at-GSI scheduler with a fixed-interval sweeper","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@anyq/sqs":"^0.3.1","@anyhook/core":"0.2.1","@anyhook/signing":"0.2.1","@aws-sdk/client-sqs":"^3.650.0","@aws-sdk/lib-dynamodb":"^3.650.0","@aws-sdk/client-dynamodb":"^3.650.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.3.0","@types/aws-lambda":"^8.10.0","aws-sdk-client-mock":"^4.0.0"},"peerDependencies":{"@anyhook/core":"0.2.1"},"_npmOperationalInternal":{"tmp":"tmp/aws_0.2.1_1784916772160_0.9756912262015924","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@anyhook/aws","version":"0.2.2","description":"AWS adapter for anyhook: SQS transport + single-table DynamoDB state + due_at-GSI scheduler with a fixed-interval sweeper","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"bun build ./src/index.ts --outdir ./dist --target node && bun run build:types","build:types":"tsc --emitDeclarationOnly --outDir dist","typecheck":"tsc --noEmit","test":"bun test","clean":"rm -rf dist coverage"},"dependencies":{"@anyhook/core":"0.2.2","@anyhook/signing":"0.2.2","@anyq/sqs":"^0.3.1","@aws-sdk/client-dynamodb":"^3.650.0","@aws-sdk/lib-dynamodb":"^3.650.0","@aws-sdk/client-sqs":"^3.650.0"},"peerDependencies":{"@anyhook/core":"0.2.2"},"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.3.0","aws-sdk-client-mock":"^4.0.0","@types/aws-lambda":"^8.10.0"},"keywords":["anyhook","aws","lambda","dynamodb","sqs","webhooks"],"license":"MIT","author":"Shantanu Sharma","publishConfig":{"access":"public"},"_id":"@anyhook/aws@0.2.2","_integrity":"sha512-o/3PABNUwgj5tRCrO8VpibQu+JWXT3ZygUJyhreLirUfsbwtvcCJvA10y+ptaonJ9iZDS6rHNrJsI36Q6JxAuw==","_nodeVersion":"26.3.0","_npmVersion":"10.8.3","shasum":"324b81569bdfe0dfc33f735da5965c54509ec162","dist":{"integrity":"sha512-o/3PABNUwgj5tRCrO8VpibQu+JWXT3ZygUJyhreLirUfsbwtvcCJvA10y+ptaonJ9iZDS6rHNrJsI36Q6JxAuw==","shasum":"324b81569bdfe0dfc33f735da5965c54509ec162","tarball":"https://registry.npmjs.org/@anyhook/aws/-/aws-0.2.2.tgz","fileCount":21,"unpackedSize":1992180,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICjCZEBJFslzepbqJ41/8bnqY/jqvOKwfjhHyL3mYIEOAiEAzonqYw5/0A6ApIT0fomGC41em4awS879dNNI4huGNGM="}]},"_npmUser":{"name":"sns45","email":"notifyshantanu@gmail.com"},"directories":{},"maintainers":[{"name":"sns45","email":"notifyshantanu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aws_0.2.2_1788790453616_0.9266543669909353"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-24T18:03:17.400Z","modified":"2026-09-07T14:14:13.984Z","0.2.0":"2026-07-24T18:03:17.649Z","0.2.1":"2026-07-24T18:12:52.367Z","0.2.2":"2026-09-07T14:14:13.766Z"},"author":"Shantanu Sharma","license":"MIT","keywords":["anyhook","aws","lambda","dynamodb","sqs","webhooks"],"description":"AWS adapter for anyhook: SQS transport + single-table DynamoDB state + due_at-GSI scheduler with a fixed-interval sweeper","maintainers":[{"name":"sns45","email":"notifyshantanu@gmail.com"}],"readme":"# @anyhook/aws\n\nAWS adapter for [anyhook](https://github.com/sns45/anyhook): run the outbound webhook engine on Lambda with **no server to operate**.\n\n- **Transport:** [`@anyq/sqs`](https://www.npmjs.com/package/@anyq/sqs) over SQS (Lambda event-source consumer with partial-batch failures).\n- **State:** a single **DynamoDB** table (`PK = TENANT#<tenant>`), conditional writes for circuit + idempotency.\n- **Scheduler (D2):** retries ≤900s use native SQS `DelaySeconds`; longer retries persist a `due_at` row discovered by a fixed-interval **sweeper** that lease-claims each row before enqueue (crash-safe, at-least-once). DynamoDB TTL is GC-only.\n\n## Install\n\n```bash\nnpm i @anyhook/core @anyhook/aws\n```\n\n## Overview\n\nProvides `createAdapter(config)` / `buildEngine(config)` and Lambda handler factories:\n\n```ts\nimport { createIngestHandler, createDeliverHandler, createSweeperHandler } from '@anyhook/aws';\n\nexport const ingest = createIngestHandler(config);   // API Gateway → portal + send()\nexport const deliver = createDeliverHandler(config); // SQS event → engine.processMessage\nexport const sweep = createSweeperHandler(config);   // scheduled (~60s) → re-enqueue due retries\n```\n\nPoint `config` at your DynamoDB table (with a `due_at` GSI) and SQS queue. Mount the portal behind your own auth (see the root `docs/composition-auth.md`). MIT.\n","readmeFilename":"README.md"}