{"_id":"roachjs","_rev":"29-9f97770abc5b2880d7193c69f7a0fc04","name":"roachjs","description":"Node.js driver for cockroachdb.","dist-tags":{"latest":"0.2.20"},"versions":{"0.0.1":{"name":"roachjs","version":"0.0.1","description":"Node.js driver for cockroachdb.","main":"index.js","scripts":{"test":"npm test"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["cockroachdb","roachdb","roachjs","cockroach"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","_id":"roachjs@0.0.1","_shasum":"d449fafe1c13b656b90f867dc46a51318656253f","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"d449fafe1c13b656b90f867dc46a51318656253f","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.0.1.tgz","integrity":"sha512-IInIYhuEH2dmLtZPTFp+ZkScfFsR06/oxrj/EUbhhi/67ZU58fsORyvlkYTXS9peeUBfkvQ1Tt+9s+9utoDL0g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyYsvnaiiKr4PHSGsELIRTpJChzRxOu0kGxfH17OrFsQIhAIOqsjG/KQ7ty4sUTT8IuSB/79J9RZpzQUS0UMtT9Whs"}]}},"0.1.0":{"name":"roachjs","version":"0.1.0","description":"Node.js driver for cockroachdb.","main":"index.js","scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["cockroachdb","roachdb","roachjs","cockroach"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","dependencies":{"protobufjs":"^3.8.2"},"devDependencies":{"nock":"^0.52.4","nodeunit":"^0.9.0"},"_id":"roachjs@0.1.0","_shasum":"639406aa94048ced5ccefdf813aee0495adb555e","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"639406aa94048ced5ccefdf813aee0495adb555e","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.1.0.tgz","integrity":"sha512-ipo9LifNuOdxGJMiQs0SLSP+o+cpBnDor0VEcHt0xi0e+Z/sZb+6YfJv72dRRBrndM4uryi/7VR5hc+LBEEVXw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGhmBQzUxuBDrqY0pboTHYzA6oF7Pqgo/UNJmr3qNNXQIhAIt+Sg4GDItmEB+2V5QMqIlA6WOxvK7ijRLEB2PFYYg6"}]}},"0.1.10":{"name":"roachjs","version":"0.1.10","description":"Node.js driver for cockroachdb.","main":"index.js","scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["cockroachdb","roachdb","roachjs","cockroach"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nock":">= 0.52.x","nodeunit":">= 0.9.x"},"_id":"roachjs@0.1.10","_shasum":"25fa90c0b9fddbf129fd85ca9f5ec55eb78c6c32","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"25fa90c0b9fddbf129fd85ca9f5ec55eb78c6c32","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.1.10.tgz","integrity":"sha512-5XUjbr4TLFg3gBxrJ5N68yg/JxHRgxSxb5McmVJlH1LR8GNo+jUlR/i0O+D397UKj9BWGCWHAvgXSG6DzY5qSA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjqjFJUGSgiVGtgeeIHnuVaLxHsgCnfLWNbe5TQRN0QQIgXJctfupuW5j7iRUCdjy72KgfXroddrCkxzuwESE3IH8="}]}},"0.1.12":{"name":"roachjs","version":"0.1.12","description":"Node.js driver for cockroachdb.","main":"index.js","scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["cockroachdb","roachdb","roachjs","cockroach"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"_id":"roachjs@0.1.12","dist":{"shasum":"7e7564c2d2830bb3f7f8c31c30c651c6ef7ffb5c","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.1.12.tgz","integrity":"sha512-yM10pinGR+eMrlihbZ4LO1PIzlVuzpEPvh1OO8yUPaDnU/dlUgq78os/49L3v4a8eL49jP/1a6l6nCAMDGw12w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDSmt7tZ3+NWlurBBAPaiXU0TID7T0jrnTybbqLXUi6yAiB2ckReDXCjqeD8a6lJ93posw8s8b3Qk+fxBqNtNm0iDA=="}]},"_from":".","_npmVersion":"1.2.30","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}]},"0.1.13":{"name":"roachjs","version":"0.1.13","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["cockroachdb","roachdb","roachjs","cockroach"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.1.0"},"optionalDependencies":{"microtime":"~1.1.0"},"gitHead":"b2ff8841d6ea5e13536bae3b0eddf959afd89b65","_id":"roachjs@0.1.13","_shasum":"8cb583e73f4d4f464ca91aa86d3744cdd487b16c","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"8cb583e73f4d4f464ca91aa86d3744cdd487b16c","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.1.13.tgz","integrity":"sha512-HJ+ercDC3kiXSnwDFqH0fWKIB/e6pQVMtpoOEKhlNWK+PqF7/F2guHAqL7wgeEcXXjcWsXFjvzMfLBQ48ClJiw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGYKgBBmBweEGUChKkzY13N8qyeOF2PKuTNm1YinBFRyAiEA+nvYXPsdHfuXGSuvRkCAkC3AJzQhl6VRvLw4gk1tsdU="}]}},"0.2.0":{"name":"roachjs","version":"0.2.0","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["cockroachdb","roachdb","roachjs","cockroach"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.1.0"},"optionalDependencies":{"microtime":"~1.1.0"},"_id":"roachjs@0.2.0","_shasum":"0dd3e0a64461935391dc8937d42e062526db3c38","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"0dd3e0a64461935391dc8937d42e062526db3c38","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.2.0.tgz","integrity":"sha512-JPB0wQApJ+ebLd9IwYPEL+L65l6SSOWsD1n+6y4feZGtt9qPo5BorYBvtX9H39JeTpLli+Rpp1DSRiA7Cl4FYw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOWpzw11MjeGF2gQR3+WXOzhKK7eTtUNtVg6tVj382rAIhAOwlJKHqFbkl4jsQHrgQCyK5ET6EIzh6FDIAcACVgyue"}]}},"0.2.1":{"name":"roachjs","version":"0.2.1","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["cockroachdb","roachdb","roachjs","cockroach"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.1.0"},"optionalDependencies":{"microtime":"~1.1.0"},"gitHead":"e12777df918357f35e9426c36e9d6a43ce0895a2","_id":"roachjs@0.2.1","_shasum":"81ad21b7b555c488d426500bc85fc221da0ee939","_from":".","_npmVersion":"2.7.3","_nodeVersion":"0.10.29","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"81ad21b7b555c488d426500bc85fc221da0ee939","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.2.1.tgz","integrity":"sha512-zgeo1cSoEOZt7X65398xkwHN0nlcT/LVbj8lh/LR62ClVhCrb8WdnxyATY5Wp4bNNTVvebGdQ+YDKmY+OpA5OA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAIOXNManpuHM1uVAdfgyqiw58OwCS+c+0BuD9VbBkX7AiB1HRVDfInUWImUrw+cYGGetCJYpz2oVV0d0fQ+orJOmg=="}]}},"0.2.11":{"name":"roachjs","version":"0.2.11","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["cockroachdb","roachdb","roachjs","cockroach"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.1.0"},"optionalDependencies":{"microtime":"~1.1.0"},"gitHead":"a52ddd186565289e0bb03e9926363357a9aceb3f","_id":"roachjs@0.2.11","_shasum":"d27ab2a88ab3bbab885f60ab27a0557d2a06fe42","_from":".","_npmVersion":"2.7.3","_nodeVersion":"0.10.29","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"d27ab2a88ab3bbab885f60ab27a0557d2a06fe42","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.2.11.tgz","integrity":"sha512-JLSukuLU4fOSRyxq+dMaxkEL2CXduj7L1r+Z6HCx6/6d2qh5+1oLDk3TRo1s1ovYSiHobGHX/j9Izz0NZac0jw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyNmPBsUv6EAqfSLXq9QC2HyQP4UXP7SV1dRgbEgRvZwIgRg2/acSs80j8PgDcbaLIsEktAMW7J5wNfzk6ZBRiWEc="}]}},"0.2.12":{"name":"roachjs","version":"0.2.12","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["cockroachdb","roachdb","roachjs","cockroach"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.1.0"},"optionalDependencies":{"microtime":"~1.1.0"},"gitHead":"e95c152bf6b2cec8facf6d144e9476be9d7c0357","_id":"roachjs@0.2.12","_shasum":"f9f238c6052e635a8dc2272672c4ab3e3b6441a0","_from":".","_npmVersion":"2.7.3","_nodeVersion":"0.10.29","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"f9f238c6052e635a8dc2272672c4ab3e3b6441a0","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.2.12.tgz","integrity":"sha512-jtlPWWPpkKcWbwlKiSwEghW0/TjA7sEsgb1EAxCUU3qKU8Hu/73UMUs5iEVvPhGnHAEgbXUdLQ6QQmewKgzq0w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHReWsNitxDerS8IpoGLY9mi2n0V7vAISxJKYGJdvINdAiEAlYvBwpJFxw5SUgKD/xqHWF/QzWCFgcb/KifIYGiEO+U="}]}},"0.2.13":{"name":"roachjs","version":"0.2.13","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["roachjs","cockroachdb","cockroach","driver","client"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.1.0"},"optionalDependencies":{"microtime":"~1.1.0"},"gitHead":"9f894bcb611d495d8200c936878637b3394501d5","_id":"roachjs@0.2.13","_shasum":"17278a189dc52f0cf39eed8a2a5ed4369dca2d92","_from":".","_npmVersion":"2.7.3","_nodeVersion":"0.10.29","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"17278a189dc52f0cf39eed8a2a5ed4369dca2d92","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.2.13.tgz","integrity":"sha512-yn093HWL6NvCJHThHzJVEWFF7VUEFBuBCS37ZRC7LGvYvAMJknqZIr8lY7hu94/heCkFt2PioZDbEfjIi3+c7A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICaEoutCRA8OVVUZPmwee4TniHsWtk286GBvHDV/ok0cAiEA9gdU5NMW0WmAvFCZq9b1x68Xe0VcZ09UN5CiJj4ARy0="}]}},"0.2.14":{"name":"roachjs","version":"0.2.14","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js","build-proto":"npm run-script build-proto-api && echo \"Built proto files to ./lib/proto\"","build-proto-api":"./node_modules/protobufjs/bin/proto2js cockroach-proto/cockroach/proto/api.proto -commonjs=\"cockroach.proto\" -path=cockroach-proto/ > ./lib/proto/api.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["roachjs","cockroachdb","cockroach","driver","client"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.1.0"},"optionalDependencies":{"microtime":"~1.1.0"},"gitHead":"5edb6018f031d3fd8bde056fa53716c6e7ce5d2c","_id":"roachjs@0.2.14","_shasum":"f746bd995fb9de32f674cc414084f23c632c823e","_from":".","_npmVersion":"2.7.3","_nodeVersion":"0.10.29","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"f746bd995fb9de32f674cc414084f23c632c823e","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.2.14.tgz","integrity":"sha512-4Popur4SWOyzo5y19ALnQkq+Z6hQ3wMhYNgjuMUYCq3luMexF2gllhRopnmdgsoNfXGRrgMKuEPlfsW2jvMqPg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBjLxfCfpFJUTh3wB+3F9aGzYYgAMY2xuJe1sAXyQw3zAiEAmHzrclFcIwowXva9eismaomo1Q1DBNjJlfxZu0vkFZ8="}]}},"0.2.15":{"name":"roachjs","version":"0.2.15","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js","build-proto":"npm run-script build-proto-api && echo \"Built proto files to ./lib/proto\"","build-proto-api":"./node_modules/protobufjs/bin/proto2js cockroach-proto/cockroach/proto/api.proto -commonjs=\"cockroach.proto\" -path=cockroach-proto/ > ./lib/proto/api.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["roachjs","cockroachdb","cockroach","driver","client"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.4.1"},"optionalDependencies":{"microtime":"~1.4.1"},"gitHead":"6c602a9a84bb363b7f41065c8205e103095fa266","_id":"roachjs@0.2.15","_shasum":"0a72310b9d6ba26e3359e9bf1a194314c059757c","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"0a72310b9d6ba26e3359e9bf1a194314c059757c","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.2.15.tgz","integrity":"sha512-Tx6FuUx9EXnWFtBgXeW0IBSDYvt5YKxlg+tzHlw6bwifoC6h/htiswnnIx9jcx0jlNnRDPAOB2Sm/TqQXzpwsA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEAbDCOpAMcqgpb/xKAA66ErSlkNqLNizya8gHxvV5UAIhAM0fElt5rHtXpR5J5hy63d7GtlsDazIdxW3+KxNYghu4"}]}},"0.2.16":{"name":"roachjs","version":"0.2.16","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js","build-proto":"npm run-script build-proto-api && echo \"Built proto files to ./lib/proto\"","build-proto-api":"./node_modules/protobufjs/bin/proto2js cockroach-proto/cockroach/proto/api.proto -commonjs=\"cockroach.proto\" -path=cockroach-proto/ > ./lib/proto/api.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["roachjs","cockroachdb","cockroach","driver","client"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.4.1"},"optionalDependencies":{"microtime":"~1.4.1"},"gitHead":"78b392e9d82edc0c33be00a063083dfc33de2859","_id":"roachjs@0.2.16","_shasum":"76b954579bf573b592d40e8b700845a129f2f626","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"76b954579bf573b592d40e8b700845a129f2f626","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.2.16.tgz","integrity":"sha512-YIWkeiXnWUG9FRnECdBWgoklrbvhzpABz75PF8vR4LQhWqEm+5I35Mnf+OYdQYMxN2KNcYCVpCFQiGnePHZdMA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGsdWGXKTBRZNigYYO9C8EWmnukznzlegXrvWz4wRI3FAiEA/I6lEGwHALLJVKdnChPicUOqVsMsKoJEaCGconwMDJU="}]}},"0.2.17":{"name":"roachjs","version":"0.2.17","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js","build-proto":"npm run-script build-proto-api && echo \"Built proto files to ./lib/proto\"","build-proto-api":"./node_modules/protobufjs/bin/proto2js cockroach-proto/cockroach/proto/api.proto -commonjs=\"cockroach.proto\" -path=cockroach-proto/ > ./lib/proto/api.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["roachjs","cockroachdb","cockroach","driver","client"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.4.1"},"optionalDependencies":{"microtime":"~1.4.1"},"gitHead":"8957bb080547046053d6542446b9b1cf1d4c94db","_id":"roachjs@0.2.17","_shasum":"e2d8d26c1f57b0f1e4992f76fac995fa90c7e612","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"e2d8d26c1f57b0f1e4992f76fac995fa90c7e612","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.2.17.tgz","integrity":"sha512-3kYeDh1IX0IZwjqFOnH61m/vHnEpytcynwxRQgrQE9kXPs9g+JAmUKo5w5jH813o6T4tktNvE88LBf6K7DYQwQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYAVybhHn6ldOTY7C9puCz3mFkFr1TJthTxHk7nIGU6AIhAIHbF1WD0MjkxPgo9Sz+3wOg42WuHp749aXathzuA9jC"}]}},"0.2.18":{"name":"roachjs","version":"0.2.18","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js","build-proto":"npm run-script build-proto-api && echo \"Built proto files to ./lib/proto\"","build-proto-api":"./node_modules/protobufjs/bin/proto2js cockroach-proto/cockroach/proto/api.proto -commonjs=\"cockroach.proto\" -path=cockroach-proto/ > ./lib/proto/api.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["roachjs","cockroachdb","cockroach","driver","client"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.4.1"},"optionalDependencies":{"microtime":"~1.4.1"},"gitHead":"38d2ddabbb9593ffe3df9e36af9439ea3b27f187","_id":"roachjs@0.2.18","_shasum":"5e19d7a5d12bea9e1850838198145fe88a12ebe0","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"5e19d7a5d12bea9e1850838198145fe88a12ebe0","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.2.18.tgz","integrity":"sha512-Qa8Q69q7cV1suaMk28eONYYg+gwKtSCm+JImikc5JGOUUpCvEd6BhK55B7jffq8YTFsFrV5lXiz1b0Rcx+2svw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEX2g8C1v7ey0cKhlBEdapJKPtOO+RBHYUvkl1+AiXvRAiEAzkYLMb29S+kgZ2D0DcsKzGIuIhpkcZ4qj9RNbO9QxXA="}]}},"0.2.19":{"name":"roachjs","version":"0.2.19","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js","build-proto":"npm run-script build-proto-api && echo \"Built proto files to ./lib/proto\"","build-proto-api":"./node_modules/protobufjs/bin/proto2js cockroach-proto/cockroach/proto/api.proto -commonjs=\"cockroach.proto\" -path=cockroach-proto/ > ./lib/proto/api.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["roachjs","cockroachdb","cockroach","driver","client"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.4.1"},"optionalDependencies":{"microtime":"~1.4.1"},"gitHead":"8578c379bd2e70e914034a94129e3d335f3eebfe","_id":"roachjs@0.2.19","_shasum":"eb3abbc38f5e544afe77bf1f5f6ca56ec5257a4e","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"eb3abbc38f5e544afe77bf1f5f6ca56ec5257a4e","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.2.19.tgz","integrity":"sha512-KPU+W2oXHhT0vaDY7TLYeOYWqNwzGApKUpGNFyagU2msDsf+oYyG2Vl3r1NAebzIbYk3ck3ANDekYJmLXncoZQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmk3UtC6wDAjA/HwHj7UsUoYNIlzLt1Z1EAvKHTmGYeAIhAM22roN/nh/pAt3Piy0ggFaxb7fSTm7W/8hVU2RQqDHi"}]}},"0.2.20":{"name":"roachjs","version":"0.2.20","description":"Node.js driver for cockroachdb.","main":"index.js","engines":{"node":">=0.8"},"scripts":{"test":"node ./node_modules/.bin/nodeunit lib/*_test.js","build-proto":"npm run-script build-proto-api && echo \"Built proto files to ./lib/proto\"","build-proto-api":"./node_modules/protobufjs/bin/proto2js cockroach-proto/cockroach/proto/api.proto -commonjs=\"cockroach.proto\" -path=cockroach-proto/ > ./lib/proto/api.js"},"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"keywords":["roachjs","cockroachdb","cockroach","driver","client"],"author":{"name":"herenow"},"license":"MIT","bugs":{"url":"https://github.com/herenow/roachjs/issues"},"homepage":"https://github.com/herenow/roachjs","devDependencies":{"nodeunit":"~0.9.0"},"dependencies":{"protobufjs":"~3.8.2","microtime":"~1.4.1"},"optionalDependencies":{"microtime":"~1.4.1"},"gitHead":"9cd092115d77b6ff4c69608516638194366c63cd","_id":"roachjs@0.2.20","_shasum":"1d9c097202f1124cc29593477ab12b2885550372","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"herenow","email":"leonardoshiro@gmail.com"},"maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"dist":{"shasum":"1d9c097202f1124cc29593477ab12b2885550372","tarball":"https://registry.npmjs.org/roachjs/-/roachjs-0.2.20.tgz","integrity":"sha512-VWVx3B4CLxP5iHwLBdZzCUyFgm1SuICdVillsemJ4rfm5pxcTI2XuWStSaGNqlEVjh71pIBlyjXOjbydWM/Hrw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDq3Gi94vDW+Qbgjpw9vu6FAZCiihjqord0nq4abBcA1AIgFatcfpNA4i02KpeSYemGzrDfjdEPLZBlw7OMRYhyGW4="}]}}},"readme":"# RoachJS - CockroachDB Driver\n\n[![NPM](https://nodei.co/npm/roachjs.png?downloads=true&stars=true)](https://nodei.co/npm/roachjs/)\n\n[![Build Status](https://travis-ci.org/herenow/roachjs.svg?branch=master)](https://travis-ci.org/herenow/roachjs)\n\n* [Introduction](#introduction)\n* [Installation](#installation)\n* [Documentation](#documentation)\n* [CockroachDB](https://github.com/cockroachdb/cockroach)\n\n## <a name=\"introduction\"></a>Introduction\n\nThis client is a port from the original [Golang client](http://godoc.org/github.com/cockroachdb/cockroach/client).\nInternally it's is more or less the same, but this driver provides a friendlier javascript interface.\n\n## <a name=\"installation\"></a> Installation\n\n```bash\n$ npm install roachjs\n```\n\n## <a name=\"documentation\"></a> Documentation\n\n* [Examples](#examples)\n    * [Initiating a client](#example-init-client)\n    * [Basic client usage I](#example-basic-1)\n    * [Advanced client usage I (Prepare & Flush)](#example-advanced-1)\n    * [Advanced client usage II (Transactions)](#example-advanced-2)\n* [Interface](#interface)\n    * [new Client(opts)](#client)\n        * [.get(key, callback)](#client-get)\n        * [.put(key, value, callback)](#client-put)\n        * [.conditionalPut(key, value, ifValue, callback)](#client-conditionalPut)\n        * [.increment(key, increment, callback)](#client-increment)\n        * [.contains(key, callback)](#client-contains)\n        * [.scan(start_key, end_key, limit, callback)](#client-scan)\n        * [.delete(key, callback)](#client-delete)\n        * [.deleteRange(start_key, end_key, limit, callback)](#client-deleteRange)\n        * [.prepare()](#client-prepare)\n            * [.flush(callback)](#prep-client-flush)\n        * [.runTransaction(opts, transaction, callback)](#client-runTransaction)\n* [Extra](#extra)\n    * [Response properties](#res-structure)\n    * [Transaction function](#retryable-function)\n    * [Compiling .proto files](#compile-proto-files)\n    * [Custom clock module](#custom-clock-module)\n\n## <a name=\"examples\"></a>Examples\n\n### <a name=\"example-init-client\"></a> Initiating a client\n```javascript\nvar Roach = require('roachjs')\n\nvar client = new Roach({\n    uri: 'https://localhost:8080'\n})\n\nmodule.exports = client\n```\n\n### <a name=\"example-basic-1\"></a> Basic client usage I\n```javascript\nclient.get(\"sample_key\", function(err, value, res) {\n    if(err) throw err\n\n    client.put(\"other_key\", value, function(err, res) {\n        if(err) {\n            // Failed\n        }\n        else {\n            // Sucess\n        }\n    })\n})\n```\n\n### <a name=\"example-advanced-1\"></a> Advanced client usage I (Prepare & Flush)\n```javascript\n// You should prepare your queries and send them in a single batch\n// For optimal performance\nvar c = client.prepare()\n\n// This callback will be the first to be executed\nc.get(\"sample_key\", function(err, value, res) {\n    if(err) throw err\n\n    // Do something...\n})\n\nc.get(\"sample_key2\", function(err, value, res) {\n    if(err) throw err\n\n    // Do something...\n})\n\nc.put(\"some_key\", \"some_value\", function(err) {\n    if(err) throw err\n\n    // Do something\n})\n\n// The flush callback is the last one to be called\nc.flush(function(err, res) {\n    if(err) throw err\n\n    console.log('Sucessfuly flushed %d queries.', res.responses.length)\n})\n```\n\n### <a name=\"example-advanced-2\"></a> Advanced client usage II (Transactions)\n```javascript\nvar opts = {\n    name: \"transaction example\",\n}\n\nvar errNoApples = new Error('Insufficient apples!')\n\nvar transaction = function(txn, commit, abort) {\n    txn.get(\"applesInStock\", function(err, value, res) {\n        if(err || applesInStock.err) {\n                return abort(err)\n            }\n\n            var dispatch = 5\n            var inStock = parseInt(applesInStock.value)\n\n            if(inStock < dispatch) {\n                return abort(errNoApples)\n        }\n\n        // Upgrade for a prepared client\n        txn = txn.prepare()\n\n        txn.increment(\"applesInStock\", -dispatch)\n        txn.increment(\"applesInRoute\", +dispatch)\n\n        // Commit automatically flushes\n        commit()\n    })\n}\n\nclient.runTransaction(opts, transaction, function(err, res) {\n    if(err === errNoApples) {\n        // Alert user there are no more apples...\n    }\n    else if(err) {\n        // Transaction failed...\n    }\n    else {\n        // Transaction commited...\n    }\n})\n```\n\n## <a name=\"interface\"></a> Interface\n\n### <a name=\"client\"></a> new Client(opts)\n\nReturns a new roachjs client with [options](#client-options).\n\n##### Parameters\n\nname | type | description\n--- | --- | ----\n`opts` | object | [see](#client-options)\n\n##### <a name=\"client-options\"></a> Client options\n\nopt | description | default\n--- | --- | ---\n`uri` | uri to the cockroach http endpoint | `https://localhost:8080/`\n`host` | host or ip to the cockroach http endpoint | `localhost`\n`port` | port to the cockroach http endpoint | `8080`\n`ssl` | connect throught https | `true`\n`user` | user to run the requests with | `root`\n`retry` | retry requests when cockroach responds with a busy signal | `true`\n`http` | http module to use | `require('https')`\n`agent` | http agent to use on the requests ([read more](https://nodejs.org/api/http.html#http_class_http_agent)) | `new http.Agent()`\n`clock` | clock module to use ([read more](#custom-clock-module))| internal clock module\n\n##### <a name=\"client-methods\"></a> Methods\n\n| method |\n| --- |\n| [get](#client-get) |\n| [put](#client-put) |\n| [conditionalPut](#client-conditionalPut) |\n| [contains](#client-contains) |\n| [increment](#client-increment) |\n| [scan](#client-scan) |\n| [delete](#client-delete) |\n| [deleteRange](#client-deleteRange) |\n| [prepare](#client-prepare) |\n| [runTransaction](#client-runTransaction) |\n\n### <a name=\"client-get\"></a> client.get(key, callback)\n\nGets a single entry from the datastore, specified by `key`.\n\n##### Parameters\n\nname | type | description\n--- | --- | ----\n`key` | string |\n`callback` | callback | `function(err, value, res) {}`\n\n##### Callback\n\nname | type | description\n--- | --- | ----\n`err` | Error() |\n`value` | Buffer |\n`res` | object | [see](#res-struct)\n\n##### Example\n```javascript\nclient.get(\"key\", function(err, value, res) {})\n```\n\n### <a name=\"client-put\"></a> client.put(key, value, callback)\n\nPuts a value in the datastore in the specified `key`. Ideally you\nshould send in buffers, but you can pass a string, preferably an utf-8 encoded string.\n\n##### Parameters\n\nname | type | description\n--- | --- | ----\n`key` | string |\n`value` | Buffer, string |\n`callback` | callback | `function(err, res) {}`\n\n##### Callback\n\nname | type | description\n--- | --- | ----\n`err` | Error() |\n`res` | object | [see](#res-struct)\n\n##### Example\n```javascript\nclient.put(\"key\", \"value\", function(err, res) {})\n```\n\n### <a name=\"client-conditionalPut\"></a> client.conditionalPut(key, value, ifValue, callback)\n\nConditionalPut sets the `value` for a `key` if the existing value matches the `ifValue`.\nSpecifying an empty or null `ifValue` means the entry must not yet exist.\n\n##### Parameters\n\nname | type | description\n--- | --- | ----\n`key` | string |\n`value` | Buffer, string |\n`ifValue` | Buffer, string, null | use `null` to put if entry doens't exists\n`callback` | callback | `function(err, res) {}`\n\n##### Callback\n\nname | type | description\n--- | --- | ----\n`err` | Error() |\n`actualValue` | Buffer | If conditional put fails this value is set\n`res` | object | [see](#res-struct)\n\n##### Example\n```javascript\nclient.conditionalPut(\"status\", \"running\", \"stopped\", function(err, actualValue, res) {})\nclient.conditionalPut(\"status\", \"new\", null, function(err, actualValue, res) {})\n```\n\n### <a name=\"client-contains\"></a> client.contains(key, callback)\n\nContains determines if a `key` exists in the datastore.\n\n##### Parameters\n\nname | type | description\n--- | --- | ----\n`key` | string |\n`callback` | callback | `function(err, exists, res) {}`\n\n##### Callback\n\nname | type | description\n--- | --- | ----\n`err` | Error() |\n`exists` | boolean |\n`res` | object | [see](#res-struct)\n\n##### Example\n```javascript\nclient.contains(\"john\", function(err, exists, res) {\n    if(exists === true) {\n        // john exists in the datastore\n    }\n})\n```\n\n### <a name=\"client-increment\"></a> client.increment(key, increment, callback)\n\nIncrement increments the value at the specified `key` by some `increment` value.\nOnce called for a `key`, Put & Get will return errors; only Increment will continue to be a valid command.\nThe value must be deleted before it can be reset using Put.\n\n##### Parameters\n\nname | type | description\n--- | --- | ----\n`key` | string |\n`increment` | integer |\n`callback` | callback | `function(err, newValue, res) {}`\n\n##### Callback\n\nname | type | description\n--- | --- | ----\n`err` | Error() |\n`newValue` | integer |  the new value for this counter, after the increment operation\n`res` | object | [see](#res-struct)\n\n##### Example\n```javascript\nclient.increment(\"counter\", 5, function(err, newValue, res) {\n    console.log('counter current value is', newValue)\n})\n```\n\n### <a name=\"client-scan\"></a> client.scan(start_key, end_key, limit, callback)\n\nScan the datastore for keys in the range of the `start_key` and `end_key`, limiting the result by `limit`.\n\n##### Parameters\n\nname | type | description\n--- | --- | ----\n`key` | string |\n`start_key` | string |\n`end_key` | string |\n`limit` | integer |\n`callback` | callback | `function(err, rows, res) {}`\n\n##### Callback\n\nname | type | description\n--- | --- | ----\n`err` | Error() |\n`rows` | array |\n`res` | object | [see](#res-struct)\n\n##### Example\n```javascript\nclient.scan(\"a\", \"Z\", 100, function(err, rows, res) {\n    for(row as rows) {\n        console.log(row)\n    }\n})\n```\n\n### <a name=\"client-delete\"></a> client.delete(key, callback)\n\nDelete an entry from the datastore specified by `key`.\n\n##### Parameters\n\nname | type | description\n--- | --- | ----\n`key` | string |\n`callback` | callback | `function(err, res) {}`\n\n##### Callback\n\nname | type | description\n--- | --- | ----\n`err` | Error() |\n`res` | object | [see](#res-struct)\n\n##### Example\n```javascript\nclient.delete(\"key\", function(err, res) {})\n```\n\n### <a name=\"client-deleteRange\"></a> client.deleteRange(start_key, end_key, limit, callback)\n\nDelete all keys found in a range, from `start_key` to `end_key`, limited by `limit`.\n\n##### Parameters\n\nname | type | description\n--- | --- | ----\n`key` | string |\n`start_key` | string |\n`end_key` | string |\n`limit` | integer |\n`callback` | callback | `function(err, deleted, res) {}`\n\n##### Callback\n\nname | type | description\n--- | --- | ----\n`err` | Error() |\n`deleted` | integer | number of entries deleted\n`res` | object | [see](#res-struct)\n\n##### Example\n```javascript\nclient.deleteRange(\"a\", \"Z\", 100, function(err, deleted, res) {\n    console.log('deleted %d entries', deleted)\n})\n```\n\n### <a name=\"client-prepare\"></a> client.prepare()\n\nReturn you a new *prepared* client. It has all the [methods](#client-methods) from the original [client](#client).\nRead [Advanced client usage II](#example-advanced-2) to understand how to use this client.\nYou should always use this client when sending in multiple queries, this will batch them together in a single request.\n\n##### <a name=\"prep-client-methods\"></a> Methods\n\n| method | description |\n| --- | --- |\n| [flush](#prep-client-flush) | Flush the prepared queries |\n\n\n##### Example\n```javascript\nvar c = client.prepare()\n\nc.get(\"key\", function(err, value, res) {\n    // Do something...\n})\n\nc.get(\"key2\", function(err, value, res) {\n    // Do something...\n})\n\nc.put(\"key3\", \"value\", function(err, res) {\n    // Do something...\n})\n\nc.flush()\n```\n\n### <a name=\"prep-client-flush\"></a> client.flush(callback)\n\nFlush the prepared queries buffer, and send it as a batch request.\n\n##### Parameters\n\nname | type | description\n--- | --- | ----\n`callback` | callback | optional\n\n\n##### Callback\n\nname | type | description\n--- | --- | ----\n`err` | Error() | batch request failed\n`res` | object | [see](#res-struct)\n\n##### Example\n```javascript\nclient.flush(function(err, res) {\n    if(err) {\n        // Flush failed..\n    }\n    else {\n        console.log('flushed %d queries.', res.responses.length)\n    }\n})\n```\n\n##### Returns\n\nReturns an response object.\n\nproperty | type | description\n--- | --- | ----\n`err` | Error() | is null if no error was returned\n`value` | string, number, boolean | general response value\n`res` | object | [see](#res-struct)\n\n### <a name=\"client-runTransaction\"></a> client.runTransaction(opts, transaction, callback)\n\nRunTransaction executes a retryable `transaction` function in\nthe context of a distributed transaction. The transaction is\nautomatically aborted if retryable function returns any error aside from\nrecoverable internal errors, and is automatically committed otherwise.\nretryable should have no side effects which could cause problems in the event\nit must be run more than once. The `opts` contains transaction settings.\n\n##### Parameters\n\nname | type | description\n--- | --- | ----\n`opts` | object | [options](#transaction-options)\n`transacation` | [retryable function](#retryable-function) | `function(txn, commit, abort) {}`\n`callback` | callback | `function(err, res) {}`\n\n##### <a name=\"transaction-options\"></a> Transaction options\n\nopt | description | default\n--- | --- | ---\n`name` | transaction name for debugging | `\"\"`\n`isolation` |  | `0`\n\n\n##### Callback\n\nname | type | description\n--- | --- | ----\n`err` | Error() | if transaction fails\n`res` | object | [see](#res-struct)\n\n## <a name=\"extra\"></a>Extra\n\n### <a name=\"res-struct\"></a> Response properties\n\nThe `res` argument contains the full database response, each database command can\ncontain a different set of properties. This document will try to state some of the possible properties.\n\n##### Properties\n\nproperty | type | description\n--- | --- | ---\n`timestamp` | integer | timestamp of the returned entry\n`wall_time` | integer | timestamp of when the read or write operation was performed\n\n### <a name=\"retryable-function\"></a> Transaction function\n\nThe transaction function is an retryable function, it may be\nexecuted more than once. This function should never forget to\ncall `commit` or `abort`. Throwing an error inside this\nfunction also aborts the transaction.\n\n##### Arguments\nname | type | description\n--- | --- | ----\n`txn` | [Prepared client](#client-prepare) | this client is the same as `client.prepare()`, you can flush yourself if you don't wan't to commit yet.\n`commit` | callback | to try to commit transaction\n`abort` | callback | to abort transaction\n\n* `abort()` accepts an optional `Error`. This error will be passed to the\n[.runTransaction](#client-runTransaction) callback.\n\n##### Example\n\n```javascript\nvar transaction = function(txn, commit, abort) {\n    txn = txn.prepare()\n\n    for(var i = 0; i < 100; i++) {\n        var key = i.toString()\n\n        txn.put(key, \"hello\")\n    }\n\n    // Commit automatically flushes\n    // the prepared transaction.\n    commit()\n}\n```\n\n### <a name=\"compile-proto-files\"></a> Compiling .proto files\n\nCockroachdb's protocol buffer files are mantained at a repository called [cockroachdb/cockroach-proto](http://github.com/cockroachdb/cockroach-proto), this is\nmaintained as a `subtree` in this library, in case you need to manually update or change them, follow this steps.\n\n##### If you want to sync them with the latest proto files\n\nYou will need to update the folder **cockroach-proto** with the latest content of the [cockroachdb/cockroach-proto](http://github.com/cockroachdb/cockroach-proto) repository, you could do this with:\n```bash\n$ git subtree pull -P cockroach-proto git@github.com:cockroachdb/cockroach-proto.git master --squash\n```\n* Notice: I'm not sure if this is a good pattern, just be sure to update the folder contents.\n\n##### Recompile the .proto files\n\nRun the following npm script to compile the .proto files to javascript, it will automatically place the files in the lib folder.\n```bash\n$ npm run build-proto\n```\n\n### <a name=\"custom-clock-module\"></a> Custom clock module\n\nYou may wan't to use a custom clock module in some cases, you can pass it through the `clock` option, when instantiating a `new Client`.\nYour clock module should have a `now` method, and this method should return the current timestamp in **nanoseconds**, here is an example:\n\n```javascript\nvar clockModule = module.exports = {\n    now: function TimestampNanoseconds() {\n        // Should return the current timestamp in nanoseconds\n        return ...;\n    }\n}\n\nvar client = new Client({\n    clock: clockModule\n})\n```\n\n## Maintainers\n\n* [herenow](/herenow)\n","maintainers":[{"name":"herenow","email":"leonardoshiro@gmail.com"}],"time":{"modified":"2022-06-26T13:42:23.906Z","created":"2014-12-17T16:35:21.156Z","0.0.1":"2014-12-17T16:35:21.156Z","0.1.0":"2015-01-05T08:17:39.433Z","0.1.10":"2015-01-06T01:44:51.819Z","0.1.12":"2015-01-06T02:43:45.719Z","0.1.13":"2015-01-14T21:29:47.658Z","0.2.0":"2015-01-21T08:41:39.318Z","0.2.1":"2015-04-06T02:40:51.838Z","0.2.11":"2015-04-10T19:20:18.423Z","0.2.12":"2015-04-22T01:24:15.637Z","0.2.13":"2015-04-30T19:31:50.342Z","0.2.14":"2015-05-07T21:36:59.288Z","0.2.15":"2015-05-14T12:22:20.308Z","0.2.16":"2015-05-19T01:01:06.673Z","0.2.17":"2015-05-22T16:29:34.642Z","0.2.18":"2015-05-23T22:33:57.721Z","0.2.19":"2015-05-23T22:43:52.420Z","0.2.20":"2015-05-25T02:56:57.734Z"},"homepage":"https://github.com/herenow/roachjs","keywords":["roachjs","cockroachdb","cockroach","driver","client"],"repository":{"type":"git","url":"http://github.com/herenow/roachjs"},"author":{"name":"herenow"},"bugs":{"url":"https://github.com/herenow/roachjs/issues"},"license":"MIT","readmeFilename":"README.md","users":{"onestone":true,"shanewholloway":true}}