{"_id":"@alt-javascript/jsnosqlc-dynamodb","_rev":"3-447419b6e386b59cfdaec4a87a570feb","name":"@alt-javascript/jsnosqlc-dynamodb","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@alt-javascript/jsnosqlc-dynamodb","version":"1.0.0","keywords":["jsnoslqc","nosql","dynamodb","aws","driver","database"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/jsnosqlc-dynamodb@1.0.0","maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"contributors":[{"url":"Anthropic","name":"Claude"}],"homepage":"https://github.com/alt-javascript/jsnosqlc/tree/main/packages/dynamodb#readme","bugs":{"url":"https://github.com/alt-javascript/jsnosqlc/issues"},"dist":{"shasum":"4046ba027a4a0ba89eff4cfa158aeffa148e599a","tarball":"https://registry.npmjs.org/@alt-javascript/jsnosqlc-dynamodb/-/jsnosqlc-dynamodb-1.0.0.tgz","fileCount":8,"integrity":"sha512-JTIZmuHp19EhMYhHjh6C2RNNtXo64H5VA5ruqH0PaQvEzeOQ7fty/PubhggkhmapzMtQzApAdCchJ38cr+o0Xg==","signatures":[{"sig":"MEYCIQCYNMuuWAy+dT1HoxT/1JNVtPEmd4WOJIsdQWYnLkW1ygIhAJKhKLwn8cZcclTpmxsijknm7W6yQQrP3ITmjuzGGLAW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alt-javascript%2fjsnosqlc-dynamodb@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21324},"main":"index.js","type":"module","gitHead":"80cfedbe5f530e7635cfab7c720cbc230731406c","scripts":{"test":"mocha --recursive 'test/**/*.spec.js' --timeout 20000"},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"repository":{"url":"git+https://github.com/alt-javascript/jsnosqlc.git","type":"git","directory":"packages/dynamodb"},"_npmVersion":"10.8.2","description":"JSNOSLQC DynamoDB driver via @aws-sdk/client-dynamodb","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@aws-sdk/lib-dynamodb":"^3.500.0","@aws-sdk/client-dynamodb":"^3.500.0","@alt-javascript/jsnosqlc-core":"*"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.7","mocha":"^10.2.0"},"_npmOperationalInternal":{"tmp":"tmp/jsnosqlc-dynamodb_1.0.0_1774353599413_0.7069074438504839","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alt-javascript/jsnosqlc-dynamodb","version":"1.0.1","keywords":["jsnosqlc","nosql","dynamodb","aws","driver","database"],"author":{"name":"Craig Parravicini"},"license":"MIT","_id":"@alt-javascript/jsnosqlc-dynamodb@1.0.1","maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"contributors":[{"url":"Anthropic","name":"Claude"}],"homepage":"https://github.com/alt-javascript/jsnosqlc/tree/main/packages/dynamodb#readme","bugs":{"url":"https://github.com/alt-javascript/jsnosqlc/issues"},"dist":{"shasum":"ccea89398286be0833f3871119ddbb488fbad01a","tarball":"https://registry.npmjs.org/@alt-javascript/jsnosqlc-dynamodb/-/jsnosqlc-dynamodb-1.0.1.tgz","fileCount":8,"integrity":"sha512-ZTHfTydI+/rL8mnOajXaXJX0rgwS/WUuhhTR4C70+RjVo9OicuUkPqdUh8vlfCFxOTAjdjfbfftSsic9lckDjQ==","signatures":[{"sig":"MEUCIQDRcEunqm+9z8C/YQiPvUhYVQiRvLXydCb6vS5c7pLG8AIgQkVaRvlaxpQ9R4iE3B+xTHSZLA9v8HB/xOSnJV49i/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alt-javascript%2fjsnosqlc-dynamodb@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21324},"main":"index.js","type":"module","gitHead":"8aa2fa0b3c0e0ab1bf7252b331fd5f468690fcf1","scripts":{"test":"mocha --recursive 'test/**/*.spec.js' --timeout 20000"},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"repository":{"url":"git+https://github.com/alt-javascript/jsnosqlc.git","type":"git","directory":"packages/dynamodb"},"_npmVersion":"10.8.2","description":"JSNOSLQC DynamoDB driver via @aws-sdk/client-dynamodb","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@aws-sdk/lib-dynamodb":"^3.500.0","@aws-sdk/client-dynamodb":"^3.500.0","@alt-javascript/jsnosqlc-core":"*"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.7","mocha":"^10.2.0"},"_npmOperationalInternal":{"tmp":"tmp/jsnosqlc-dynamodb_1.0.1_1774354022619_0.22340862591706379","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@alt-javascript/jsnosqlc-dynamodb","version":"1.1.1","description":"JSNOSLQC DynamoDB driver via @aws-sdk/client-dynamodb","keywords":["jsnosqlc","nosql","dynamodb","aws","driver","database"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"homepage":"https://github.com/alt-javascript/jsnosqlc/tree/main/packages/dynamodb#readme","repository":{"type":"git","url":"git+https://github.com/alt-javascript/jsnosqlc.git","directory":"packages/dynamodb"},"type":"module","main":"index.js","scripts":{"test":"mocha --recursive 'test/**/*.spec.js' --timeout 20000"},"dependencies":{"@alt-javascript/jsnosqlc-core":"*","@aws-sdk/client-dynamodb":"^3.500.0","@aws-sdk/lib-dynamodb":"^3.500.0"},"devDependencies":{"chai":"^4.3.7","mocha":"^10.2.0"},"author":{"name":"Craig Parravicini"},"contributors":[{"name":"Claude","url":"Anthropic"}],"license":"MIT","_id":"@alt-javascript/jsnosqlc-dynamodb@1.1.1","gitHead":"20256a64a39eb4643b126a3996f360ade0aad2da","bugs":{"url":"https://github.com/alt-javascript/jsnosqlc/issues"},"_nodeVersion":"20.20.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-FmTcjMn5WfhQRvBkfhIFzqPoTCg9nEmGLyzcXajVr342QDg8OxVri5M7qjTUcATgXQGnBmTfMzX3zFx79Q6llg==","shasum":"29e71c66b4dc01fdf2a5f588eb92f00717ab72fa","tarball":"https://registry.npmjs.org/@alt-javascript/jsnosqlc-dynamodb/-/jsnosqlc-dynamodb-1.1.1.tgz","fileCount":8,"unpackedSize":21324,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alt-javascript%2fjsnosqlc-dynamodb@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCS2Qo6pqJ0R/1Bm0Un5Pgde0rdgvUg2UB4RFDGB6ZSUwIgexsKgdDfkBciZg/VrZ9e5d2aMAZIb9UFOhVwwOxreXI="}]},"_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/jsnosqlc-dynamodb_1.1.1_1774503252036_0.47570411994894757"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-24T11:59:59.350Z","modified":"2026-03-26T05:34:12.520Z","1.0.0":"2026-03-24T11:59:59.579Z","1.0.1":"2026-03-24T12:07:02.771Z","1.1.1":"2026-03-26T05:34:12.195Z"},"bugs":{"url":"https://github.com/alt-javascript/jsnosqlc/issues"},"author":{"name":"Craig Parravicini"},"license":"MIT","homepage":"https://github.com/alt-javascript/jsnosqlc/tree/main/packages/dynamodb#readme","keywords":["jsnosqlc","nosql","dynamodb","aws","driver","database"],"repository":{"type":"git","url":"git+https://github.com/alt-javascript/jsnosqlc.git","directory":"packages/dynamodb"},"description":"JSNOSLQC DynamoDB driver via @aws-sdk/client-dynamodb","contributors":[{"name":"Claude","url":"Anthropic"}],"maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"readme":"# @alt-javascript/jsnosqlc-dynamodb\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%2Fjsnosqlc-dynamodb)](https://www.npmjs.com/package/@alt-javascript/jsnosqlc-dynamodb)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![CI](https://github.com/alt-javascript/jsnosqlc/actions/workflows/node.js.yml/badge.svg)](https://github.com/alt-javascript/jsnosqlc/actions/workflows/node.js.yml)\n\nJSNOSLQC driver for AWS DynamoDB via the [@aws-sdk/client-dynamodb](https://www.npmjs.com/package/@aws-sdk/client-dynamodb) v3 SDK.\n\n**Part of the [@alt-javascript/jsnosqlc](https://github.com/alt-javascript/jsnosqlc) monorepo.**\n\n## Install\n\n```bash\nnpm install @alt-javascript/jsnosqlc-core @alt-javascript/jsnosqlc-dynamodb\n```\n\n## Usage\n\n```javascript\nimport { DriverManager, Filter } from '@alt-javascript/jsnosqlc-core';\nimport '@alt-javascript/jsnosqlc-dynamodb'; // self-registers with DriverManager\n\n// Local DynamoDB (DynamoDB Local)\nconst client = await DriverManager.getClient('jsnosqlc:dynamodb:us-east-1', {\n  endpoint: 'http://localhost:8000',\n  credentials: { accessKeyId: 'local', secretAccessKey: 'local' },\n});\n\n// AWS production — uses standard AWS credential chain\nconst client = await DriverManager.getClient('jsnosqlc:dynamodb:us-east-1');\n\nconst orders = client.getCollection('orders');\n\nawait orders.store('ord-001', { customerId: 'c1', amount: 59.99, status: 'pending' });\nconst order = await orders.get('ord-001');\n\nconst id = await orders.insert({ customerId: 'c2', amount: 120.00, status: 'shipped' });\nawait orders.update(id, { status: 'delivered' });\n\nconst filter = Filter.where('status').eq('pending').build();\nconst cursor = await orders.find(filter);\nconst pending = cursor.getDocuments();\n\nawait client.close();\n```\n\n## URL Scheme\n\n```\njsnosqlc:dynamodb:<region>\n```\n\n| URL | Description |\n|---|---|\n| `jsnosqlc:dynamodb:us-east-1` | AWS DynamoDB in us-east-1 |\n| `jsnosqlc:dynamodb:eu-west-1` | AWS DynamoDB in eu-west-1 |\n\n## Connection Properties\n\n| Property | Description |\n|---|---|\n| `endpoint` | Override endpoint URL (for DynamoDB Local or LocalStack) |\n| `credentials` | `{ accessKeyId, secretAccessKey }` (falls back to standard AWS credential chain) |\n\n```javascript\nconst client = await DriverManager.getClient('jsnosqlc:dynamodb:us-east-1', {\n  endpoint: process.env.DYNAMODB_ENDPOINT, // e.g. 'http://localhost:8000'\n});\n```\n\n## Table Management\n\nTables are created automatically when a collection is first used. Each collection maps to a DynamoDB table with a single String hash key named `pk`.\n\nTo use an existing table, ensure it has `pk` (String) as its partition key.\n\n## Local Development with Docker\n\n```bash\ndocker run --rm -d -p 8000:8000 amazon/dynamodb-local:latest\nexport DYNAMODB_ENDPOINT=http://localhost:8000\n```\n\n```javascript\nconst client = await DriverManager.getClient('jsnosqlc:dynamodb:us-east-1', {\n  endpoint: process.env.DYNAMODB_ENDPOINT,\n  credentials: { accessKeyId: 'local', secretAccessKey: 'local' },\n});\n```\n\n## Filter Translation\n\nDynamoDB uses FilterExpressions for Scan operations. The driver translates the JSNOSLQC AST:\n\n| JSNOSLQC | DynamoDB FilterExpression |\n|---|---|\n| `eq` | `#field = :val` |\n| `ne` | `#field <> :val` |\n| `gt` / `gte` | `#field > / >= :val` |\n| `lt` / `lte` | `#field < / <= :val` |\n| `contains` | `contains(#field, :val)` |\n| `in` | `(#field = :v0 OR #field = :v1 ...)` |\n| `nin` | `(#field <> :v0 AND #field <> :v1 ...)` |\n| `exists` (true) | `attribute_exists(#field)` |\n| `exists` (false) | `attribute_not_exists(#field)` |\n| `and` | `(expr AND expr)` |\n| `or` | `(expr OR expr)` |\n| `not` | `NOT (expr)` |\n\nAll `find()` calls use DynamoDB `Scan` with a FilterExpression. For large tables, add a secondary index and query by index key for production use cases.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}