{"_id":"dynamokv","_rev":"29-0845fc4b36058de48679d872fbfdd018","name":"dynamokv","description":"Wrapper to use dynamo as a simple key-value","dist-tags":{"latest":"0.4.1"},"versions":{"0.0.1":{"name":"dynamokv","version":"0.0.1","description":"Wrapper to use dynamo as a simple key-value","author":{"name":"Ivan Frade","email":"ivan.frade@gmail.com"},"dependencies":{"optimist":"","async":"","aws-sdk":"","fake-dynamo-gem":""},"devDependencies":{"should":"","mocha":"","istanbul":""},"main":"./lib/index.js","scripts":{"test":"./node_modules/istanbul/lib/cli.js test $1 ./node_modules/mocha/bin/_mocha -- -R spec test/unit"},"_id":"dynamokv@0.0.1","dist":{"shasum":"2d7db67bd2b57e8fa626cc78f5feaed97113dc89","tarball":"https://registry.npmjs.org/dynamokv/-/dynamokv-0.0.1.tgz","integrity":"sha512-jKZGQjvypFXVRvDYpEyUYDeWtevdsS8kK20o2VJ0bxurKAiJyuvy6CFHwyevahzUNtg/JDYmTQ3/b0jYnKgVYg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuojkcM+xC/2tUkfo8VTPiwo8DzOV3+CHRCxFbCJID/AIhAL5ij8eOKZhGIBrfXZZw3bRHRDl5MNZiy2igtrqDKZnB"}]},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"ifrade","email":"ivan.frade@gmail.com"},"maintainers":[{"name":"ifrade","email":"ivan.frade@gmail.com"}]},"0.0.2":{"name":"dynamokv","version":"0.0.2","description":"Wrapper to use dynamo as a simple key-value","author":{"name":"Ivan Frade","email":"ivan.frade@gmail.com"},"dependencies":{"optimist":"","async":"","aws-sdk":"","fake-dynamo-gem":""},"devDependencies":{"should":"","mocha":"","istanbul":""},"main":"./lib/index.js","scripts":{"test":"./node_modules/istanbul/lib/cli.js test $1 ./node_modules/mocha/bin/_mocha -- -R spec test/unit"},"_id":"dynamokv@0.0.2","dist":{"shasum":"383a614d63fe77cefea1028762a70f4e5c2c1eb9","tarball":"https://registry.npmjs.org/dynamokv/-/dynamokv-0.0.2.tgz","integrity":"sha512-KEhbPOfAoarQtuAcieYBSdlyOdA9IHCD7yKNxtGt1zqKDC1U+ESA7SRoSaLwLlWdQCQuRgrLIcwLwi+7VfiqyQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDck7GLEYCR3mTlkl8WnfSfQ1KcFeHhuhXAzJNDwfNUHAiAYAHpLEs2wdspVSQNsArGcHJlqHuj5mgYiAlE5UokD7w=="}]},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"ifrade","email":"ivan.frade@gmail.com"},"maintainers":[{"name":"ifrade","email":"ivan.frade@gmail.com"}]},"0.0.3":{"name":"dynamokv","version":"0.0.3","description":"Wrapper to use dynamo as a simple key-value","author":{"name":"Ivan Frade","email":"ivan.frade@gmail.com"},"dependencies":{"optimist":"","async":"","aws-sdk":"","fake-dynamo-gem":""},"devDependencies":{"should":"","mocha":"","istanbul":""},"main":"./lib/index.js","scripts":{"test":"./node_modules/istanbul/lib/cli.js test $1 ./node_modules/mocha/bin/_mocha -- -R spec test/unit"},"_id":"dynamokv@0.0.3","dist":{"shasum":"47283fcec740b6173076559d195d7ecafba451f8","tarball":"https://registry.npmjs.org/dynamokv/-/dynamokv-0.0.3.tgz"},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"ifrade","email":"ivan.frade@gmail.com"},"maintainers":[{"name":"ifrade","email":"ivan.frade@gmail.com"}]},"0.0.4":{"name":"dynamokv","version":"0.0.4","description":"Wrapper to use dynamo as a simple key-value","author":{"name":"Ivan Frade","email":"ivan.frade@gmail.com"},"dependencies":{"optimist":"","async":"","aws-sdk":"","fake-dynamo-gem":""},"devDependencies":{"should":"","mocha":"","istanbul":""},"main":"./lib/index.js","scripts":{"test":"./node_modules/istanbul/lib/cli.js test $1 ./node_modules/mocha/bin/_mocha -- -R spec test/unit"},"_id":"dynamokv@0.0.4","dist":{"shasum":"bd273e2974ae74e8d83e3d745a5287c14c08d905","tarball":"https://registry.npmjs.org/dynamokv/-/dynamokv-0.0.4.tgz"},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"ifrade","email":"ivan.frade@gmail.com"},"maintainers":[{"name":"ifrade","email":"ivan.frade@gmail.com"}]},"0.1.0":{"name":"dynamokv","version":"0.1.0","description":"Wrapper to use dynamo as a simple key-value","author":{"name":"Ivan Frade","email":"ivan.frade@gmail.com"},"dependencies":{"optimist":"","async":"","aws-sdk":"","fake-dynamo-gem":""},"devDependencies":{"should":"","mocha":"","istanbul":""},"main":"./lib/index.js","scripts":{"test":"./node_modules/istanbul/lib/cli.js test $1 ./node_modules/mocha/bin/_mocha -- -R spec test/unit"},"_id":"dynamokv@0.1.0","dist":{"shasum":"647ee67abcba52e2341dbf39dca16809018d3d30","tarball":"https://registry.npmjs.org/dynamokv/-/dynamokv-0.1.0.tgz","integrity":"sha512-eSiP3y25eaS0BVr273uXOZFct88zTXJf6Z9qivcICtZQz4S6E+yo3j7uNSEQKLAt2xOqDmqYJs/l9qKybauoYQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeny0cP9KxeScC34LpyTDcabCjhmEia6UUZzrdbhZfLAIhAPP8G3pDgfKfMRMcckT+hEfGLh47XWg1RxDOxr+myvua"}]},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"ifrade","email":"ivan.frade@gmail.com"},"maintainers":[{"name":"ifrade","email":"ivan.frade@gmail.com"}]},"0.2.0":{"name":"dynamokv","version":"0.2.0","description":"Wrapper to use dynamo as a simple key-value","author":{"name":"Ivan Frade","email":"ivan.frade@gmail.com"},"dependencies":{"optimist":"","async":"","aws-sdk":"","fake-dynamo-gem":""},"devDependencies":{"should":"","mocha":"","istanbul":""},"main":"./lib/index.js","scripts":{"test":"./node_modules/istanbul/lib/cli.js test $1 ./node_modules/mocha/bin/_mocha -- -R spec test/unit"},"_id":"dynamokv@0.2.0","dist":{"shasum":"724abe3898a10ed44058537a47270df5cf6cccf6","tarball":"https://registry.npmjs.org/dynamokv/-/dynamokv-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"ifrade","email":"ivan.frade@gmail.com"},"maintainers":[{"name":"ifrade","email":"ivan.frade@gmail.com"}]},"0.2.1":{"name":"dynamokv","version":"0.2.1","description":"Wrapper to use dynamo as a simple key-value","author":{"name":"Ivan Frade","email":"ivan.frade@gmail.com"},"dependencies":{"optimist":"","async":"","aws-sdk":"","fake-dynamo-gem":""},"devDependencies":{"should":"","mocha":"","istanbul":""},"main":"./lib/index.js","scripts":{"test":"./node_modules/istanbul/lib/cli.js test $1 ./node_modules/mocha/bin/_mocha -- -R spec test/unit"},"_id":"dynamokv@0.2.1","dist":{"shasum":"91e2d1186aa9168376d5ee739fd31a098923f3f1","tarball":"https://registry.npmjs.org/dynamokv/-/dynamokv-0.2.1.tgz","integrity":"sha512-b0bpApmUxcqSI9IYnJeFtdYIja2c9hf0PxFtemiiedsQn85QkC6RBxHDHAJq6ibQLbOCN5BlQDFXJHZlF3rGMQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGyERy4syOYiBele8rFGTWwFo/MrmtsmJ8AKC3pT06iEAiEA2d1sA7icFtqqyXfdHr5ZR1oplefAJSMvv5MAlFEiCjQ="}]},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"ifrade","email":"ivan.frade@gmail.com"},"maintainers":[{"name":"ifrade","email":"ivan.frade@gmail.com"}]},"0.2.2":{"name":"dynamokv","version":"0.2.2","description":"Wrapper to use dynamo as a simple key-value","author":{"name":"Ivan Frade","email":"ivan.frade@gmail.com"},"dependencies":{"optimist":"","async":"","aws-sdk":"","fake-dynamo-gem":""},"devDependencies":{"should":"","mocha":"","istanbul":""},"main":"./lib/index.js","scripts":{"test":"./node_modules/istanbul/lib/cli.js test $1 ./node_modules/mocha/bin/_mocha -- -R spec test/unit"},"_id":"dynamokv@0.2.2","dist":{"shasum":"f5f88106a39d6909bc97db4cbbac6836626b743d","tarball":"https://registry.npmjs.org/dynamokv/-/dynamokv-0.2.2.tgz","integrity":"sha512-TOzMgU/uw17HAGWxATeXtPjH1F3pQ2+2tJXwqwIpR/OeB64kX6JMnR0DMXlcWD8m5y3YOYwmO9meUf6c94rYvA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVoCaCqzTJhNIUiQ24i3r6XgU5YRDfzfZqub0ep24irAIgA+R5Rkb2h6Lv0+kTWu2gUBfZerndCUHjrp+I6i8cp+8="}]},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"ifrade","email":"ivan.frade@gmail.com"},"maintainers":[{"name":"ifrade","email":"ivan.frade@gmail.com"}]},"0.2.3":{"name":"dynamokv","version":"0.2.3","description":"Wrapper to use dynamo as a simple key-value","author":{"name":"Ivan Frade","email":"ivan.frade@gmail.com"},"dependencies":{"optimist":"","async":"","aws-sdk":"","fake-dynamo-gem":""},"devDependencies":{"should":"","mocha":"","istanbul":""},"main":"./lib/index.js","scripts":{"test":"./node_modules/istanbul/lib/cli.js test $1 ./node_modules/mocha/bin/_mocha -- -R spec test/unit"},"_id":"dynamokv@0.2.3","dist":{"shasum":"1b51fa09bd055090af5a0b1934539bc921b47d7f","tarball":"https://registry.npmjs.org/dynamokv/-/dynamokv-0.2.3.tgz","integrity":"sha512-mfiiDcUtroaENR6PG5pdOP8aZdQIxxWeefuFiWW66jOINd5yRHKODvx6kJbEDxOqXKslzCRIsKAxwzNOuxB2+g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBjC8VxaVXeziVGn8C3SnNH6f4mdSOp3xucmZy51xc51AiEAuwQnUCsiDpz6UdYrWlqUDsWehlySCi34FdA2x4NvJA4="}]},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"ifrade","email":"ivan.frade@gmail.com"},"maintainers":[{"name":"ifrade","email":"ivan.frade@gmail.com"}]},"0.3.0":{"name":"dynamokv","version":"0.3.0","description":"Wrapper to use dynamo as a simple key-value","author":{"name":"Ivan Frade","email":"ivan.frade@gmail.com"},"dependencies":{"optimist":"","async":"","aws-sdk":"","dynalite":""},"devDependencies":{"should":"","mocha":"","istanbul":""},"main":"./lib/index.js","scripts":{"test":"./node_modules/istanbul/lib/cli.js test $1 ./node_modules/mocha/bin/_mocha -- -R spec test/unit"},"_id":"dynamokv@0.3.0","dist":{"shasum":"55a38ab8e5105190c2b04e2f939844a76d95643e","tarball":"https://registry.npmjs.org/dynamokv/-/dynamokv-0.3.0.tgz","integrity":"sha512-Q0jTpdGj6ezKk154Dj+XrPOWohDVp0lYcQh9DYk34p7Gre1aKw89i2yh8tXviDbf3CCcY1zSto7Km2uXkZEQQg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICdKZS1MRQj2mZChRiRS8DRFOWjHkDpEwuVccjdNG6uXAiBCr2Zl+BikpBYf0IW9uAzXWymLhhOoYorNYzutdxgybg=="}]},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"ifrade","email":"ivan.frade@gmail.com"},"maintainers":[{"name":"ifrade","email":"ivan.frade@gmail.com"}]},"0.4.1":{"name":"dynamokv","version":"0.4.1","description":"Wrapper to use dynamo as a simple key-value","author":{"name":"Ivan Frade","email":"ivan.frade@gmail.com"},"dependencies":{"optimist":"","async":"","aws-sdk":"","dynalite":""},"devDependencies":{"should":"","mocha":"","istanbul":""},"main":"./lib/index.js","scripts":{"test":"./node_modules/istanbul/lib/cli.js test $1 ./node_modules/mocha/bin/_mocha -- -R spec test/unit"},"_id":"dynamokv@0.4.1","dist":{"shasum":"df0d575ff3840b401f4f6761384318dc8ee26d11","tarball":"https://registry.npmjs.org/dynamokv/-/dynamokv-0.4.1.tgz","integrity":"sha512-s91Kge00kGQMpQVtHhUJndYOLNqqWp6TOO20NUmO87d5Yh0UCv0KEFym2IwDCa+cGKK94hOJ2N6ttIXLYKAocw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFHMIohpu1wtmOUYxMXUn6Jv8jBITAN552ZZKkcwaPwiAiEAkO7bgei+tifxutdLuad3rbTpHBSlyOJ98gTyOggXC8I="}]},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"ifrade","email":"ivan.frade@gmail.com"},"maintainers":[{"name":"ifrade","email":"ivan.frade@gmail.com"}]}},"readme":"DynamoKV - Dynamo as simple Key-Value\n=====================================\n\nAmazon Dynamo is a key value, but its API is a bit more cumbersome that it should\nwhen all you need is just that: key and value.\n\nThis is a simple API to save and retrieve items based on a simple key.\n\nIn other words: this acts like a hash table on dynamo with a simple string hash key.\nSo far this module doesn't support non-string hash keys or range keys.\n\nAs a bonus, this module includes a DynamoHelper object that abstracts a running\ndynamo instance. It can be used for testing to switch between a real dynamo instance\nin the cloud, or a local fake_dynamo instance. See below for details.\n\n\nDynamoKV\n--------\n\nHow to get a DynamoKV instance:\n\n    var DynamoKV = require('dynamokv').DynamoKV;\n\n    DynamoKV.createDynamoKV(\"myTablePrefix\", tableDescriptions, function (err, dynamoKv) {\n        dynamoKV.xxxxx // here is the dynamoKV instance\n    };   \n\nWhat do you get depends on your environment variables. By default it will use the AWS environment\nvariables to connect to the real dynamo, but it can be redirected somewhere else. For example\nto a local instance of [fake_dynamo](https://github.com/ananthakumaran/fake_dynamo) using \nthe *FAKE_DYNAMO_ENDPOINT* env variable.\n\nFor example:\n\n    // Run fake_dynamo --port=4567 on your machine\n    $ export FAKE_DYNAMO_ENDPOINT=http://localhost:4567\n   \n    $ mycode.js // your code using DynamoKV, will now call fake_dynamo\n\nNow:\n\n    $ unset FAKE_DYNAMO_ENDPOINT\n    $ mycode.js // this code will connect to Amazon Dynamo\n\n\nNote that in the second case, AWS environment variables (like *AWS_ACCESS_KEY_ID*) must be set.\n\n\n\nDynamoHelper\n------------\n\nIs great to get your software running on dynamo, but cumbersome to test. Tests usually need\nclean tables (or in a specific state) and working on the real dynamo is slow (and consumes\nbandwith).\n\nThis can be solved using [fake_dynamo](https://github.com/ananthakumaran/fake_dynamo), an \nimplementation of dynamo API that can be run locally. Now the problem is to start/stop that\ninstance. Furthermore, code in the real cloud expect tables to exist, while in the tests\nwe need to create them.\n\nDynamoHelper to the rescue. If you want to use the real dynamo for the tests, it will just\ngo there. If you prefer to use the fake version of dynamo, it will run an instance, create\nthe required tables and stop it when the tests are done.\n\nThis means that adjusting environment variables, the same tests can run on a local dynamo\nor the real one.\n\nThis is how the code looks:\n\n    var DynamoHelper = require('dynamokv').DynamoHelper;\n\n    describe(\"my code with dynamo backend\", function () {\n        var dynamoInstance;\n  \n        before(function (done) {\n            DynamoHelper.getFakeDynamo(\"test-tables\", [\"A\", \"B\"], function (err, dynamo) {\n                dynamoInstance = dynamo;\n                done(err);\n            }); \n        });     \n\n        after(function (done) {\n            dynamoInstance.stop(done);\n        });     \n    }); \n\nThis code will create tables: *test-tables-A* and *test-tables-B* on dynamo.\n","maintainers":[{"name":"ifrade","email":"ivan.frade@gmail.com"}],"time":{"modified":"2022-06-30T11:58:07.421Z","created":"2013-11-25T20:00:59.768Z","0.0.1":"2013-11-25T20:01:01.799Z","0.0.2":"2013-12-05T17:38:39.655Z","0.0.3":"2013-12-09T22:00:48.994Z","0.0.4":"2013-12-10T19:49:42.653Z","0.1.0":"2013-12-11T01:03:11.679Z","0.2.0":"2013-12-16T17:50:22.915Z","0.2.1":"2014-01-13T23:01:37.647Z","0.2.2":"2014-01-15T18:45:51.824Z","0.2.3":"2014-02-14T22:39:15.796Z","0.3.0":"2014-03-31T22:53:41.057Z","0.4.1":"2014-04-03T17:47:41.908Z"},"author":{"name":"Ivan Frade","email":"ivan.frade@gmail.com"},"readmeFilename":"README.md"}