{"_id":"cloudant-envoy","_rev":"29-4387bd5f45016d0cf3356a9161d8b99a","name":"cloudant-envoy","dist-tags":{"latest":"0.4.4"},"versions":{"0.1.0":{"name":"cloudant-envoy","version":"0.1.0","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.1.0","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"ed7833e2f2e54858c54461851acc1364d8cb58d2","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.1.0.tgz","integrity":"sha512-+SVbnsRzBbf6UAIH6DCMX05LPvdP5bqNx+tDsytTbhc21ce+rBXKs48gPhXzvQpw3KxkogolpYB8r+Yex7ENNA==","signatures":[{"sig":"MEYCIQCMYwEPkSJfb5B+cGaEhVc5go2d8/rrEmyoa17TX4g3qAIhANQaoLrBNzzlQWWiINIsNUSRBOsMF6KKlaE8XRzfzLXT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"ed7833e2f2e54858c54461851acc1364d8cb58d2","engines":{"node":">=4.2.0"},"gitHead":"a58b488b9822d84b9e51154e475db710d8d9e1dc","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.6.0","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.6.0","dependencies":{"uuid":"^2.0.2","async":"^1.5.2","cfenv":"^1.0.3","morgan":"^1.6.1","express":"^4.13.3","request":"^2.72.0","cloudant":"^1.4.2","basic-auth":"^1.0.3","body-parser":"^1.14.2","compression":"^1.6.2","express-session":"^1.13.0","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"2.5.3","chance":"^1.0.3","jshint":"2.9.2","pouchdb":"^5.2.1","istanbul":"^0.4.3"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.1.0.tgz_1467712349838_0.8452548258937895","host":"packages-12-west.internal.npmjs.com"}},"0.1.1":{"name":"cloudant-envoy","version":"0.1.1","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.1.1","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"e8060a470e281123aea5d0f3f86a04ad492476c0","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.1.1.tgz","integrity":"sha512-6TQ1kXocu8X6ozBO3hAnAcMcFYfU0VoZWnOr0aHcO4v24XIf3hWO/32b7th65Dra76rTQG4qNYTZBzOfuw/KGA==","signatures":[{"sig":"MEYCIQDOjgOkp55OhPSbwHkonbarvyKkDyN3iPaLUjSgxPWoegIhAKPanASADM0xTTCXqjcsZIaNStpmFI0TI5bF9K/621+x","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"e8060a470e281123aea5d0f3f86a04ad492476c0","engines":{"node":">=4.2.0"},"gitHead":"0b1218edc73140f4abecdd5becc1fbac72978d48","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"xpqz","email":"stefan.kruger@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.6.0","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.6.0","dependencies":{"uuid":"^2.0.2","async":"^1.5.2","cfenv":"^1.0.3","morgan":"^1.6.1","express":"^4.13.3","request":"^2.72.0","cloudant":"^1.4.2","basic-auth":"^1.0.3","body-parser":"^1.14.2","compression":"^1.6.2","express-session":"^1.13.0","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"2.5.3","chance":"^1.0.3","jshint":"2.9.2","pouchdb":"^5.2.1","istanbul":"^0.4.3"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.1.1.tgz_1467716071527_0.2610300723463297","host":"packages-12-west.internal.npmjs.com"}},"0.1.3":{"name":"cloudant-envoy","version":"0.1.3","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.1.3","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"8a46148b49d29f496399e47f38ae6aae233af9bf","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.1.3.tgz","integrity":"sha512-XiJRox9+RoRgw4XP7jiE06kpOG86K35LKiPxVXSd5PnfGYZ5Ozqm8uhvVftDqvR7V8XU6dtFdeBSjAmuGcyCrw==","signatures":[{"sig":"MEUCIEX4FZM4b3AnDSEhv2SVwU2FZs7Qj3xXj+G68m1nn1SqAiEAt5r0fu0edJoDHIWmQrCU1zBdHP4DjRmDleU7lII/47o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_shasum":"8a46148b49d29f496399e47f38ae6aae233af9bf","engines":{"node":">=4.2.0"},"gitHead":"552e6c971bb33643ef3a4d93e852483c2101ff8e","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.8.6","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.12.0","dependencies":{"uuid":"^2.0.2","async":"^2.0.1","cfenv":"^1.0.3","morgan":"^1.6.1","express":"^4.13.3","request":"^2.72.0","cloudant":"^1.4.2","basic-auth":"^1.0.3","body-parser":"^1.14.2","compression":"^1.6.2","express-session":"^1.13.0","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"3.0.2","chance":"^1.0.3","jshint":"2.9.2","pouchdb":"^5.2.1","istanbul":"^0.4.3","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.1.3.tgz_1471427895130_0.9342319190036505","host":"packages-12-west.internal.npmjs.com"}},"0.1.4":{"name":"cloudant-envoy","version":"0.1.4","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.1.4","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"88d01d639c7b6fe3ac2d5541eb7cd535f1d30882","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.1.4.tgz","integrity":"sha512-uAesBvm+nL7ID+tDSfnfmqmw7c2XFWbQKFWY8rnnUAFBpOyDdSNf8wnsmg71gt7UghsnIoRudK8+aSspzV3Jlg==","signatures":[{"sig":"MEUCIDTANvBoc5LZ6ktXwXeS7jttt+OQ4+xITYl0EvQpbg6aAiEAkn80PE1TUHaaQkqpUuqnb853rlfqF9mNTSxAp/99l4g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"88d01d639c7b6fe3ac2d5541eb7cd535f1d30882","engines":{"node":">=4.2.0"},"gitHead":"f23b16d24b289061a6d1e161a21fcd2fa0e35edc","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.8.6","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.12.0","dependencies":{"uuid":"^2.0.2","async":"^2.0.1","cfenv":"^1.0.3","morgan":"^1.6.1","express":"^4.13.3","request":"^2.72.0","cloudant":"^1.4.2","basic-auth":"^1.0.3","body-parser":"^1.14.2","compression":"^1.6.2","express-session":"^1.13.0","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"3.0.2","chance":"^1.0.3","jshint":"2.9.2","pouchdb":"^5.2.1","istanbul":"^0.4.3","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.1.4.tgz_1472123164560_0.05478324764408171","host":"packages-12-west.internal.npmjs.com"}},"0.2.0":{"name":"cloudant-envoy","version":"0.2.0","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.2.0","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"299769ded0ca12bb9cf1266ce1874f50df5726a7","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.2.0.tgz","integrity":"sha512-Qgsvb36cKHKupeV+Q9+MHSuAEKMLnCvIH30J+rG8IA8EO/d2lnuxWg+TmTHPQSkGqDMGqKj35ol/b68q8vg8CQ==","signatures":[{"sig":"MEUCIQDetxWhay4v+OiYWxsJ2EUzP2fsdMMGzBHhlipt0Q87SgIgGDhYk9anfyhx16tc2emDLzWi/Ft6Zfpl3qjZ9XmU9M4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"299769ded0ca12bb9cf1266ce1874f50df5726a7","engines":{"node":">=4.2.0"},"gitHead":"3073a3d26f1b0876408d82e0b96bf2341da8f8b2","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.8.6","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.12.0","dependencies":{"uuid":"^2.0.2","async":"^2.0.1","cfenv":"^1.0.3","morgan":"^1.6.1","express":"^4.13.3","request":"^2.72.0","cloudant":"^1.4.2","basic-auth":"^1.0.3","body-parser":"^1.14.2","compression":"^1.6.2","express-session":"^1.13.0","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"3.0.2","chance":"^1.0.3","jshint":"2.9.2","pouchdb":"^5.2.1","istanbul":"^0.4.3","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.2.0.tgz_1472226819012_0.2741201026365161","host":"packages-16-east.internal.npmjs.com"}},"0.2.1":{"name":"cloudant-envoy","version":"0.2.1","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.2.1","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"fa6328fafa634283f5dfb7c7e9cdf2a3424a0a57","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.2.1.tgz","integrity":"sha512-2xU8NTXDCweOYzvJGuXRpnSFrDzBC5EwTyRND8hYy+spcTPN7vKX9YXfZS+aThglytK5FFfDFQXlxwYj5RUX/g==","signatures":[{"sig":"MEUCIQCCKdtWs44BEnT8kJcnJ+SEAviw2sNqyfrAK39iIW11bAIgKgVAlzhuU+ejFeHU2YfDYMHnoRFvTo0VWMHK1NDo6Ac=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"fa6328fafa634283f5dfb7c7e9cdf2a3424a0a57","engines":{"node":">=4.2.0"},"gitHead":"4379dc26d24dc76a0f11abe5af6b6ea268f974b0","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.8.6","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.12.0","dependencies":{"uuid":"^2.0.2","async":"^2.0.1","cfenv":"^1.0.3","morgan":"^1.6.1","express":"^4.13.3","request":"^2.72.0","cloudant":"^1.4.2","basic-auth":"^1.0.3","body-parser":"^1.14.2","compression":"^1.6.2","express-session":"^1.13.0","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"3.0.2","chance":"^1.0.3","jshint":"2.9.2","pouchdb":"^5.2.1","istanbul":"^0.4.3","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.2.1.tgz_1472653301407_0.2622141167521477","host":"packages-16-east.internal.npmjs.com"}},"0.2.2":{"name":"cloudant-envoy","version":"0.2.2","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.2.2","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"61c979259812551e4a33e80fd73092165ff96a05","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.2.2.tgz","integrity":"sha512-GS/BNhIhcCteT+97Rbna5ZXJQ97UtxujsfXibrQYhrt1U2RLct1oZqA0VQ1zKMIANKP8VsAoUzVXczyrf3QDFQ==","signatures":[{"sig":"MEUCICUG96vZM81i2XEbBSKIK5mtHtEUM9bw06KR3uILfIkeAiEAsJjG1jbCiYYATgs79hYU07Q+OyjOjKK4A0ptc4gG6aY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"61c979259812551e4a33e80fd73092165ff96a05","engines":{"node":">=4.2.0"},"gitHead":"3981afe865b9fa27d0c2ea8ef3bc2cefed391497","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.8.6","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.12.0","dependencies":{"uuid":"^2.0.2","async":"^2.0.1","cfenv":"^1.0.3","morgan":"^1.6.1","express":"^4.13.3","request":"^2.72.0","cloudant":"^1.4.2","basic-auth":"^1.0.3","body-parser":"^1.14.2","compression":"^1.6.2","express-session":"^1.13.0","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"3.0.2","chance":"^1.0.3","jshint":"2.9.2","pouchdb":"^5.2.1","istanbul":"^0.4.3","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.2.2.tgz_1473080842907_0.2198537413496524","host":"packages-16-east.internal.npmjs.com"}},"0.2.3":{"name":"cloudant-envoy","version":"0.2.3","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.2.3","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"1d533f9d188789377c61b3413eb27c74425de533","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.2.3.tgz","integrity":"sha512-hf2hVCU8f6pQXHgpOjFjrBr/JrdDT8HOV72POiTTSD82j9lmGzwZhkM4AEAZfYhk77AAJHNYBayUfNmhx8Qjyg==","signatures":[{"sig":"MEYCIQDgi143omASxoHb7Y7pcycFjHFHJ+3ydpbNv7dYPNKRtwIhAJ3RUBAdrynCYZEhI1dzjtujKHJDASWnLRZ2fvJ3fJY5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"1d533f9d188789377c61b3413eb27c74425de533","engines":{"node":">=4.2.0"},"gitHead":"a91c0ec2daf75bb077046f8c0d8118ccd6bea1a8","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.8.6","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.12.0","dependencies":{"uuid":"^2.0.2","async":"^2.0.1","cfenv":"^1.0.3","morgan":"^1.6.1","express":"^4.13.3","request":"^2.72.0","cloudant":"^1.4.2","basic-auth":"^1.0.3","body-parser":"^1.14.2","compression":"^1.6.2","express-session":"^1.13.0","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"3.0.2","chance":"^1.0.3","jshint":"2.9.2","pouchdb":"^6.0.4","istanbul":"^0.4.3","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.2.3.tgz_1473344462734_0.033753118477761745","host":"packages-12-west.internal.npmjs.com"}},"0.2.4":{"name":"cloudant-envoy","version":"0.2.4","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.2.4","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"cf80ea2a2b65b8ee7da1a17b97c177c2ffd916c1","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.2.4.tgz","integrity":"sha512-Met9fSOZWVvNsxWhT7jH16HScHUDnRmlK/MdFeuAf1PuMJg6TIBwft2IXjSXlAVNijQOSmO1Qw2uJZDW6eonBA==","signatures":[{"sig":"MEYCIQCT3uwWd03bCepTe8uc5MBIH5I+1ql17TcMYexjuqAD9QIhALIxov0d+n9PXR0Xd3kVSGCdu5cwNWkRyXyUbKMeWjnz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"cf80ea2a2b65b8ee7da1a17b97c177c2ffd916c1","engines":{"node":">=4.2.0"},"gitHead":"fb1f1b1f91e501d95a7f74bdbfea55de30f13cf7","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.8.6","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.12.0","dependencies":{"uuid":"^2.0.3","async":"^2.0.1","cfenv":"^1.0.3","morgan":"^1.6.1","express":"^4.13.3","request":"^2.75.0","cloudant":"^1.5.0","basic-auth":"^1.0.3","body-parser":"^1.14.2","compression":"^1.6.2","express-session":"^1.13.0","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"3.1.0","chance":"^1.0.3","jshint":"2.9.3","pouchdb":"^6.0.6","istanbul":"^0.4.3","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.2.4.tgz_1475247480436_0.7135015055537224","host":"packages-12-west.internal.npmjs.com"}},"0.2.5":{"name":"cloudant-envoy","version":"0.2.5","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.2.5","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"216bd7b103054ca7cc3bbda8c0571d9265fc0ff1","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.2.5.tgz","integrity":"sha512-BfOH0UzkAdw2B9IYWj5abn73if9JcGYHZnqhfqI6k9rONAB+rXAqifA+Cq17/uzBSGBWr/5CiBcVZbpSKyPRAg==","signatures":[{"sig":"MEUCIQCX0Eny2SRXtqXUUhJEHlMJ1Ae7GqAeMkq8t/UGYIs3ywIgSXSFQTt6t43li87W6mYXCd2QOAINhyGycGh3gWoYNDc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"216bd7b103054ca7cc3bbda8c0571d9265fc0ff1","engines":{"node":">=4.2.0"},"gitHead":"1f1201f242ccc81394bece5aaf1e5b80fa5951cf","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.8.6","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.12.0","dependencies":{"uuid":"^2.0.3","async":"^2.0.1","cfenv":"^1.0.3","morgan":"^1.6.1","express":"^4.13.3","request":"^2.75.0","cloudant":"^1.5.0","basic-auth":"^1.0.3","body-parser":"^1.14.2","compression":"^1.6.2","express-session":"^1.13.0","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"3.1.0","chance":"^1.0.3","jshint":"2.9.3","pouchdb":"^6.0.6","istanbul":"^0.4.3","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.2.5.tgz_1475589976808_0.24779962562024593","host":"packages-12-west.internal.npmjs.com"}},"0.3.0":{"name":"cloudant-envoy","version":"0.3.0","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.3.0","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"9655379598468a43ed6c5cb218f9a4ecb386226f","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.3.0.tgz","integrity":"sha512-uN1+z01D0NCgfxljdz6go9DwgLMn09jWMK5lMSn0eQHQwythR22ZcIxr0JF3kWCGaC2YF65rPwu/iwtoxQRKEw==","signatures":[{"sig":"MEYCIQDVa8BE3TG6XGIrkHmTtQdBoHsOfuc45v4vs6R3PR4b6AIhAM96kqn/qWsc3miQ+EF3Zau0TKajreO15keNo115eYmV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"9655379598468a43ed6c5cb218f9a4ecb386226f","engines":{"node":">=4.2.0"},"gitHead":"e8a151fefdde749c090629536283523b0641bf62","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.8.6","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.12.0","dependencies":{"uuid":"^2.0.3","async":"^2.1.2","cfenv":"^1.0.3","morgan":"^1.7.0","express":"^4.14.0","request":"^2.76.0","cloudant":"^1.5.1","basic-auth":"^1.0.4","body-parser":"^1.15.2","compression":"^1.6.2","express-session":"^1.14.2","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"3.1.2","chance":"^1.0.3","jshint":"2.9.4","pouchdb":"^6.0.6","istanbul":"^0.4.3","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.3.0.tgz_1478107774783_0.8124159171711653","host":"packages-12-west.internal.npmjs.com"}},"0.3.1":{"name":"cloudant-envoy","version":"0.3.1","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.3.1","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"d97b0d9021351ada2b945ca832849eb11c53c240","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.3.1.tgz","integrity":"sha512-5VQCXvxcFW0A9bEzLWnyD+t3QNufSfuXmxGEytGBHivMn4/UBC9+U3CGcrMy8XxuewJirjmCv/NBPbe9xNal6Q==","signatures":[{"sig":"MEUCIQCkcigTQxLf5R1CXZcQsJWTYGJVXD5x4DCRFerh7GswzgIgGsOL7JXzGObgONNuWOiFiFoLv+gdvPE9lNCZwHA2lSI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"d97b0d9021351ada2b945ca832849eb11c53c240","engines":{"node":">=4.2.0"},"gitHead":"004c32011a9f8ebe179f0ba298bd7f3d7b10a897","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.8.6","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.12.0","dependencies":{"uuid":"^2.0.3","async":"^2.1.2","cfenv":"^1.0.3","morgan":"^1.7.0","express":"^4.14.0","request":"^2.78.0","cloudant":"^1.6.2","basic-auth":"^1.0.4","body-parser":"^1.15.2","compression":"^1.6.2","express-session":"^1.14.2","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"3.1.2","chance":"^1.0.3","jshint":"2.9.4","pouchdb":"^6.0.6","istanbul":"^0.4.3","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.3.1.tgz_1479296560811_0.1829215984325856","host":"packages-12-west.internal.npmjs.com"}},"0.4.0":{"name":"cloudant-envoy","version":"0.4.0","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.4.0","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"3c2ce237cf9b08b1939684163307128abf6be895","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.4.0.tgz","integrity":"sha512-UUfNFR+pgng9EvfBs5i5NI8HFbWC51Dv3wpyCZ7TcTO7CpcFOEr1CDJ1DZjkkL7urk8i8+F2adw9+dO6+YtZuQ==","signatures":[{"sig":"MEUCIQDBoYgPvTLdmcNp1Y6qxSZffxq32gLiULdXYQCXzBTEhwIgGKWdKFpAwFkB1CTOusg5RQfrDsWmAkxoLL1MN/eHYD4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"3c2ce237cf9b08b1939684163307128abf6be895","engines":{"node":">=4.2.0"},"gitHead":"e72cf813c8bc6809733eac27d72cdd465272aa42","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.8.6","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.12.0","dependencies":{"uuid":"^3.0.0","async":"^2.1.2","cfenv":"^1.0.3","morgan":"^1.7.0","express":"^4.14.0","request":"^2.78.0","cloudant":"^1.7.0","basic-auth":"^1.0.4","body-parser":"^1.16.0","compression":"^1.6.2","express-session":"^1.14.2","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"3.2.0","chance":"^1.0.3","jshint":"2.9.4","pouchdb":"6.1.0","istanbul":"^0.4.3","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.4.0.tgz_1484926080885_0.6253335913643241","host":"packages-12-west.internal.npmjs.com"}},"0.4.1":{"name":"cloudant-envoy","version":"0.4.1","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.4.1","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"9f90e44deb583b8367000251eb92ac14d20074f1","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.4.1.tgz","integrity":"sha512-r3CHaOcOY70F4INDjGkloXQI4RrmoBGtKzi+/MwvblcPl37agzoHg90Bx7H1afktm7lFzOaIicu8b8wZOHNO3Q==","signatures":[{"sig":"MEYCIQDEaKT7Oqk5ps0cXPqrG2wZCAEiOKNNPa6bhGttVVgmygIhAOPXV69DJqFuOq3lWFYGnA1fxrnj7N7OkxCVBIVkj5Ho","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"9f90e44deb583b8367000251eb92ac14d20074f1","engines":{"node":">=4.2.0"},"gitHead":"551639014c8a3aaad9b069bf5f4b66abe0e0918e","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.8.6","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"5.12.0","dependencies":{"uuid":"^3.0.0","async":"^2.1.2","cfenv":"^1.0.3","morgan":"^1.7.0","express":"^4.14.0","request":"^2.78.0","cloudant":"^1.7.0","basic-auth":"^1.0.4","body-parser":"^1.16.0","compression":"^1.6.2","express-session":"^1.14.2","cf-deployment-tracker-client":"^0.1.1"},"devDependencies":{"mocha":"3.2.0","chance":"^1.0.3","jshint":"2.9.4","pouchdb":"6.1.2","istanbul":"^0.4.3","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.4.1.tgz_1486567157177_0.021074125543236732","host":"packages-18-east.internal.npmjs.com"}},"0.4.2":{"name":"cloudant-envoy","version":"0.4.2","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.4.2","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"a1dd5268283e843fe9e59f2d657e7f3ba00cba18","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.4.2.tgz","integrity":"sha512-34jmxSRdy9pxrSZhf07AZvbn/iEMsnmpqChH6BFj3+Tf6ado6MWzj0TfKga8Ck90knaNHZXjr+dseLz8uSOcJw==","signatures":[{"sig":"MEQCIBZcZiTnFfnsdaIDYXahxb7UmzM2aVSj++u6HtwZmj94AiAu2xdSEID/yowtj/shkcK7K/r8BKcIsz/UilD6ziq2rw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"a1dd5268283e843fe9e59f2d657e7f3ba00cba18","engines":{"node":">=4.2.0"},"gitHead":"4cabe9bbab02f921cf95959ea35af3c87f061012","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.10.10","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"6.9.5","dependencies":{"uuid":"^3.0.1","async":"^2.1.5","cfenv":"^1.0.4","morgan":"^1.8.1","express":"^4.15.0","request":"^2.79.0","cloudant":"^1.7.1","basic-auth":"^1.1.0","body-parser":"^1.17.0","compression":"^1.6.2","express-session":"^1.15.1","cf-deployment-tracker-client":"^0.1.3"},"devDependencies":{"mocha":"3.2.0","chance":"^1.0.6","jshint":"2.9.4","pouchdb":"6.1.2","istanbul":"^0.4.5","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.4.2.tgz_1488445094843_0.6202127409633249","host":"packages-12-west.internal.npmjs.com"}},"0.4.4":{"name":"cloudant-envoy","version":"0.4.4","keywords":["backend","node","cloudant"],"license":"Apache-2.0","_id":"cloudant-envoy@0.4.4","maintainers":[{"name":"glynnbird","email":"glynn.bird@gmail.com"},{"name":"willholley","email":"willholley@gmail.com"},{"name":"xpqz","email":"stefan.kruger@gmail.com"}],"contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"},{"url":"https://www.danieldent.com/","name":"Daniel Dent"}],"homepage":"https://github.com/cloudant-labs/envoy#readme","bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"bin":{"envoy":"./bin/www"},"dist":{"shasum":"5e4193db162f15933f3e00fd404ce484e52ca4c3","tarball":"https://registry.npmjs.org/cloudant-envoy/-/cloudant-envoy-0.4.4.tgz","integrity":"sha512-9dJL/2jOIKp9BkggnC6J0gLE6QY0R7Lrqw2jwguKP9WtkykaIgyKDofrlI/hCH7kfgrDyo/5vNfAX618M04puA==","signatures":[{"sig":"MEYCIQC/FJDdACiMkn4mQG7kLTEy8qp1Y3l03q8zUkNvYAxRsgIhAPHI3ij/33lZWbAXIc4TUXI2te93H/baBdPCjEcLBYS4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"app.js","_from":".","_shasum":"5e4193db162f15933f3e00fd404ce484e52ca4c3","engines":{"node":">=4.2.0"},"gitHead":"c94f88694b13416dd2070855fdd430ab17386811","scripts":{"perf":"mocha perf_test","test":"bash scripts/run_couchdb_on_travis.sh; npm run mocha","mocha":"mocha test -t 20000","start":"node ./bin/www","jshint":"jshint -c .jshintrc lib/","coverage":"./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -t 30000"},"_npmUser":{"name":"glynnbird","email":"glynn.bird@gmail.com"},"deprecated":"no longer supported. 10 years since last update","repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"_npmVersion":"3.10.10","description":"A mobile backend shim to Cloudant","directories":{},"_nodeVersion":"6.9.5","dependencies":{"uuid":"^3.0.1","async":"^2.3.0","cfenv":"^1.0.4","morgan":"^1.8.1","express":"^4.15.2","request":"^2.81.0","cloudant":"^1.7.1","basic-auth":"^1.1.0","body-parser":"^1.17.1","compression":"^1.6.2","express-session":"^1.15.2","cf-deployment-tracker-client":"^0.1.3"},"devDependencies":{"mocha":"3.3.0","chance":"^1.0.6","jshint":"2.9.4","pouchdb":"6.2.0","istanbul":"^0.4.5","pouchdb-envoy":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cloudant-envoy-0.4.4.tgz_1493369624345_0.22956300526857376","host":"packages-18-east.internal.npmjs.com"}}},"time":{"created":"2016-07-05T09:52:32.103Z","modified":"2026-08-21T13:01:30.041Z","0.1.0":"2016-07-05T09:52:32.103Z","0.1.1":"2016-07-05T10:54:33.803Z","0.1.3":"2016-08-17T09:58:17.028Z","0.1.4":"2016-08-25T11:06:06.628Z","0.2.0":"2016-08-26T15:53:39.971Z","0.2.1":"2016-08-31T14:21:43.270Z","0.2.2":"2016-09-05T13:07:25.480Z","0.2.3":"2016-09-08T14:21:04.458Z","0.2.4":"2016-09-30T14:58:02.463Z","0.2.5":"2016-10-04T14:06:18.829Z","0.3.0":"2016-11-02T17:29:36.814Z","0.3.1":"2016-11-16T11:42:43.160Z","0.4.0":"2017-01-20T15:28:02.971Z","0.4.1":"2017-02-08T15:19:17.949Z","0.4.2":"2017-03-02T08:58:16.975Z","0.4.4":"2017-04-28T08:53:44.972Z"},"bugs":{"url":"https://github.com/cloudant-labs/envoy/issues"},"license":"Apache-2.0","homepage":"https://github.com/cloudant-labs/envoy#readme","keywords":["backend","node","cloudant"],"repository":{"url":"git+https://github.com/cloudant-labs/envoy.git","type":"git"},"description":"A mobile backend shim to Cloudant","contributors":[{"name":"Stefan Kruger","email":"stefan.kruger@gmail.com"},{"name":"Will Holley","email":"willholley@gmail.com"},{"name":"Glynn Bird","email":"glynn.bird@gmail.com"},{"name":"Tom Blench"},{"name":"Simon Metson"},{"name":"Mike Rhodes"},{"url":"https://www.danieldent.com/","name":"Daniel Dent"}],"maintainers":[{"email":"sam.smith@uk.ibm.com","name":"smithsz"},{"email":"glynn.bird@gmail.com","name":"glynnbird"},{"email":"ricellis@uk.ibm.com","name":"ricellis"},{"email":"cldtsdks@us.ibm.com","name":"cloudant-sdks-automation"},{"email":"willholley@apache.org","name":"willholley"},{"email":"stefan.kruger@gmail.com","name":"xpqz"}],"readme":"# Cloudant Envoy (beta)\n\n[![Build Status](https://api.travis-ci.org/cloudant-labs/envoy.svg?branch=master)](https://api.travis-ci.org/cloudant-labs/envoy.svg?branch=master) [![npm version](https://badge.fury.io/js/cloudant-envoy.svg)](https://badge.fury.io/js/cloudant-envoy)\n\n## Beta software\n\nNote: this is beta; it's not battle tested or supported in any way. If you find bugs (of which there will be plenty), do let us know – or better, consider a pull request. You know what beta means, right?\n\n## Introduction\n\nCloudant Envoy is a microservice that acts as a replication target for your [PouchDB](https://pouchdb.com/) web app or [Cloudant Sync](https://cloudant.com/product/cloudant-features/sync/)-based native app. Envoy allows your client side code can adopt a \"one database per user\" design pattern, with a copy of a user's data stored on the mobile device and synced to the cloud when online, while invisibly storing all the users' data in one large database. This prevents the proliferation of database that occurs as users are added and facilitates simpler backup and server-side reporting.\n\nEnvoy implements a subset of the CouchDB API and can be used as a replication target for PouchDB or Cloudant Sync, or used with custom replicators such as [pouchdb-envoy](https://www.npmjs.org/package/pouchdb-envoy). \n\nEnvoy includes a demo web app (hosted at the `/demo/` path) which demonstrates how a basic offline-first, progressive web app can be deployed that scales easily as users are added.\n\n### Why Cloudant Envoy?\n\nDatabase-per-user is a common pattern with CouchDB when there is a requirement for each application user to have their own set of documents which can be synced (e.g. to a mobile device or browser). On the surface, this is a good solution - Cloudant handles a large number of databases within a single installation very well. However, there are some problems:\n\n 1. Querying data across many databases (e.g. for analytics) can be difficult. Cloudant does not have native support for a cross-database query and aggregating the data into a single database using e.g. replication can be resource intensive or require manual scheduling.\n 2. There is a high management cost of many (thousands of) databases. Consider backup, replication in cross-region scenarios, design document management. These all require coordination / resource management outside of Cloudant.\n\nEnvoy aims to work around these problems by emulating database-per-user using a single backend database and a proxy.\n\n### When should I consider Envoy instead of a db-per-user pattern?\n\n * you want to perform queries across all per-user databases.\n * you want to replicate all user data to a remote target (e.g. another Cloudant account or IBM dashDB).\n * you want to take advantage of additional HTTP features (e.g. compression) that are not natively supported by Cloudant.\n\n### When should I consider Envoy instead of a single database with filtered replication?\n\nCloudant Envoy is essentially performing a filtered replication under the hood (using the new Mango/Erlang native filtering supported in CouchDB 2.0). However, you may want to consider it if:\n\n * you do not want to give all users read/write access to other users data.\n * you want to take advantage of additional HTTP features (e.g. compression) that are not natively supported by Cloudant.\n\n### TODO / known limitations\n\n * multipart requests\n * document ownership is non-transferable (essentially the same as db per user)\n * _design documents cannot be created through the proxy (they will get saved as normal documents)\n\n## Installation\n\n### Via npm\n\nCloudant Envoy is published to npm. It can be installed and run if you have Node.js and npm installed:\n\n```sh\nnpm install -g cloudant-envoy\nexport COUCH_HOST='https://key:passwd@account.cloudant.com'\nenvoy\n```\n\n### Deploy to Bluemix\n\nDeploy *Cloudant Envoy* to Bluemix by clicking the **Deploy to Bluemix** button below.\n\n[![Deploy to Bluemix](https://deployment-tracker.mybluemix.net/stats/34c200255dfd02ea539780bb433da951/button.svg)](https://bluemix.net/deploy?repository=https://github.com/cloudant-labs/envoy)\n\n**Don't have a Bluemix account?** If you haven't already, you'll be prompted to sign up for a Bluemix account when you click the button.  Sign up, verify your email address, then return here and click the the **Deploy to Bluemix** button again. Your new credentials let you deploy to the platform and also to code online with Bluemix and Git. If you have questions about working in Bluemix, find answers in the [Bluemix Docs](https://www.ng.bluemix.net/docs/).\n\n### Manual installation\n\nTo install the code yourself, clone the repo and run `npm install`. The Envoy server needs admin credentials for the backing Cloudant database, and it expects a `COUCH_HOST` environment variable to be set:\n\n```bash\nexport COUCH_HOST='https://key:passwd@account.cloudant.com'\n```\n\nAfter those variables are set, you can start the Envoy server with `npm start`. Note that the port is the port that Envoy will listen to, not the port of the Cloudant server.\n\n## Configuration\n\n### Environment variables\n\n* PORT - the port number Envoy will listen on. When running in Bluemix, Envoy detects the Cloud Foundry port assigned to this app automatically. When running locally, you'll need to provide your own e.g. `export PORT=8001`\n* COUCH_HOST - The URL of the Cloudant service to connected to. Not required in Bluemix, as the attached Cloudant service is detected automatically. `COUCH_HOST` is required when running locally e.g. `export COUCH_HOST='https://key:passwd@account.cloudant.com'`\n* ENVOY_DATABASE_NAME - the name of the Cloudant database to use. Defaults to `envoy`\n* LOG_FORMAT - the type of logging to output. One of `combined`, `common`, `dev`, `short`, `tiny`, `off`. Defaults to `off`. (see https://www.npmjs.com/package/morgan)\n* DEBUG - see debugging section\n* ENVOY_AUTH - which authentication plugin to use. One of `default`, `couchdb_user`\n* ENVOY_ACCESS - which access control plugin to use. One of `default`, `id`, `meta`\n* PRODUCTION - when set to 'true', disables the `POST /_adduser` endpoint\n* ENVOY_STATIC - when set to a full path, this directory is served out as static content from the Envoy express app.\n* ENVOY_USERS_DATABASE_NAME - the name of the database to store users when using the `default` auth plugin. Defaults to `envoyusers`.\n\n## Using Envoy in your own app\n\nYou can install Envoy and run it from your own Node.js application by install the module:\n\n```sh\nnpm install --save cloudant-envoy\n```\n\nAnd then \"require\" it into your app:\n\n```js\n    var envoy = require('cloudant-envoy')();\n```\n\nwhere it will pick up its configuration from environment variables. You may also pass in object to Envoy on startup with your runtime options e.g.:\n\n```js\n    var opts = {\n      couchHost: 'http://username:password@mycluster.cloudant.com',\n      databaseName: 'myenvoy',\n      port: 9000,\n      logFormat: 'dev',\n      production: true\n    };\n    var envoy = require('cloudant-envoy')(opts);\n    envoy.events.on('listening', function() {\n      console.log('[OK]  Server is up');\n    });\n```\n\n### Sessions\n\nBy default Envoy uses the [Express Session](https://github.com/expressjs/session) session handler. This is an in-memory store and is only designed for test deployments. If you want to use any of the [compatible session stores](https://github.com/expressjs/session#compatible-session-stores) you may pass in a `sessionHandler` option at startup e.g.:\n\n```js\n    var session = require('express-session');\n    var RedisStore = require('connect-redis')(session);\n    var path = require('path');\n    var options = {\n      url: 'redis://127.0.0.1:6379/0'\n    };\n    var sessionHandler = session({\n      store: new RedisStore(options),\n      secret: 'oh my'\n    });\n    var opts = {\n      sessionHandler :sessionHandler,\n      port: 9000\n    };\n    var envoy = require('cloudant-envoy')(opts);\n```\n\n### Static files\n\nYou can get Envoy to server out static files for you. Simply pass in a 'static' option or use the ENVOY_STATIC environment variable:\n\n```js\n    var opts = {\n      port: 9000,\n      static: path.join(__dirname, './public')\n    };\n    var envoy = require('cloudant-envoy')(opts);\n```\n\n### Custom routes\n\nYou can supply your own custom routes to Envoy too:\n\n```js\nvar express = require('express'),\n  router = express.Router();\n\n// my custom route\nrouter.get('/myroute', function(req, res) {\n  res.send({ok:true});\n});\n\nvar opts = {\n    databaseName: dbName,\n    port: appEnv.port,\n    logFormat: 'dev',\n    production: true,\n    static: path.join(__dirname, './public'),\n    router: router\n};\n\nvar envoy = require('envoy')(opts);\n```\n\n### Custom middleware\n\nYou can supply your own custom middleware to Envoy\n\n```js\nvar myLogger = function (req, res, next) {\n  console.log('LOGGED')\n  next()\n};\nvar opts = {\n    databaseName: dbName,\n    port: appEnv.port,\n    logFormat: 'dev',\n    production: true,\n    static: path.join(__dirname, './public'),\n    router: router,\n    middleware: [myLogger]\n};\nvar envoy = require('envoy')(opts);\n```\n\nThe `middleware` property expects an array of Express middleware functions.\n\n## Debugging\n\nDebugging messages are controlled by the `DEBUG` environment variable. To see detailed debugging outlining the API calls being made between Envoy and Cloudant then set the `DEBUG` environment variable to `cloudant,nano` e.g\n\n```bash\nexport DEBUG=cloudant,nano\nnode app.js\n```\n\nor\n\n```bash\nDEBUG=cloudant,nano node app.js\n```\n\n## Envoy API end points\n\nEnvoy supports a subset of the [CouchDB API](http://docs.couchdb.org/en/1.6.1/api/), sufficient to support replication. Additionally, a new Envoy-specific endpoint `_add_user` is there to facilitate testing; see below.\n\n\n| Replication         | CRUD          | Utility        |\n|-------------------  |---------------|--------------  |\n| GET /db/_all_docs   | GET /db/id    | POST /_adduser |\n| POST /db/_all_docs  | POST /db      | GET /_auth     |\n| POST /db/_bulk_docs | POST /db/id   | GET /_logout   |\n| POST /db/_bulk_get  | PUT /db/id    | OPTIONS /*     |\n| GET /db/_bulk_get   | DELETE /db/id |                |\n| GET /db/_changes    | GET /         | *Search*       |\n| POST /db/_revs_diff | GET /db       | POST /db/_find |\n\n## Envoy-specic APIs\n\n### GET /_auth\n\nAllows a remote client to either check whether it is logged in or to establish a login session (credentials are passed using an HTTP Basic Authorization header):\n\n```sh\n# not logged in - Envoy returns 403 response\n> curl https://myenvoy.mybluemix.net/_auth\n# log in - Envoy returns 200 response and saves cookie\n> curl https://myenvoy.mybluemix.net/_auth --user glynn:password\n{\"loggedin\":true,\"username\":\"glynn\"}\n```\n\n### POST /_auth\n\nAllows a remote client to either check whether it is logged in or to establish a login session (credentials are passed via a JSON-formatted HTTP POST):\n\n```sh\n# not logged in - Envoy returns 403 response\n> curl https://myenvoy.mybluemix.net/_auth\n# log in - Envoy returns 200 response and saves cookie\n> curl -H \"Content-Type: application/json\" -X POST -d '{\"name\":\"glynn\",\"password\":\"password\"}' https://myenvoy.mybluemix.net/_auth\n{\"loggedin\":true,\"username\":\"glynn\"}\n```\n\n### GET /_logout\n\nAllows a remote client to logout of a session.\n\n```sh\n> curl https://myenvoy.mybluemix.net/_logout\n```\n\n### POST /_adduser\n\nAllows the creation of new Envoy users. Supply a `username` and `password` parameter in a form-encoded post e.g.\n\n```sh\n> curl -X POST -d 'username=rita&password=password' https://myenvoy.mybluemix.net/_adduser\n```\n\nThis API is only for evaluation purposes and should be disabled in production, by setting the `PRODUCTION` environment variable.\n\n## Plugins\n\nAt startup, *Envoy* can load in plugin modules to modify Envoy's behaviour. The plugin source code can be found in the `lib/plugins` directory, with two plugin types supported:\n\n* `auth` – controls how authentication occurs in Envoy.\n* `access` – controls how the ownership of a document is stored.\n\n### Default auth plugin\n\nThe `default` auth plugin uses the `envoyusers` database (by default) to store a database of users who are allowed to authenticate. Add a user to your `envoyusers` database with a document like this:\n\n```js\n{\n  \"_id\": \"glynn\",\n  \"_rev\": \"1-58bbb25716001c681febaccf6d48a9b8\",\n  \"type\": \"user\",\n  \"name\": \"glynn\",\n  \"roles\": [],\n  \"username\": \"glynn\",\n  \"salt\": \"monkey\",\n  \"password\": \"9ef16a44310564ecd1b6894c46d93c58281b07af\"\n}\n```\n\nWhere the `password` field is the `sha1` of the \"salt\" field concatenated with the user's password e.g. \n\n```js\n> sha1('monkey' + 'password')\n'9ef16a44310564ecd1b6894c46d93c58281b07af'\n```\n\nAdditional plugins can be selected using the `ENVOY_AUTH` environment variable. e.g. a value of \"couchdb_user\" will use the CouchDB \"_users\" database.\n\n### Default access plugin\n\nThe `default` access plugin stores the ownership of a document in the `_id` field of the document. If the owner of the document is `glynn`, then a document whose `_id` is `test` will actually get stored with an `_id` of \n\n`3d07659e67fa5a86a06945ec4cdb2754c9fc67bf-test` \n\nwhere \n\n`3d07659e67fa5a86a06945ec4cdb2754c9fc67bf` \n\nis the `sha1` hash of the username.\n\nThe replication client doesn't see this additional meta data – it is transparently added and stripped out on its way through Envoy – but it allows Envoy to efficiently store many users data in the same database and retrieve the data each user owns efficiently.\n\nAdditional plugins can be selected using the `ENVOY_ACCESS` environment variable.\n\n## Frequently Asked Questions\n\n## Help!\n\nIf you have an issue with Envoy, then please check to see if someone else has raised it already in our [issues page](https://github.com/cloudant-labs/envoy/issues). Please [raise an issue](https://github.com/cloudant-labs/envoy/issues/new) for any problems you encounter and we'll see if we can help.\n\n## Links\n\n* [source code](https://github.com/cloudant-labs/envoy)\n* [wiki](https://github.com/cloudant-labs/envoy/wiki)\n","readmeFilename":"README.md"}