{"_id":"hull-client","_rev":"31-6de5d35ba28606f63f6f1d6009be9251","name":"hull-client","description":"A barebones Node.js API client for hull.io","dist-tags":{"latest":"1.2.4","beta":"2.0.0-beta.3"},"versions":{"1.0.0":{"name":"hull-client","version":"1.0.0","description":"A Node.js client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-node.git"},"homepage":"https://github.com/hull/hull-node","bugs":{"url":"https://github.com/hull/hull-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:units","test:lint":"eslint src","test:modules":"npm outdated --depth=0","test:units":"NODE_ENV=test mocha --require babel-register -R spec ./tests/* ./tests/**/* ./spec/*","test:flow":"flow check","update":"updtr","clean":"rimraf lib","coverage":"gulp coverage","build":"gulp build","watch":"gulp watch","prepublish":"npm run build"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.13.1","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.5.2","babel-cli":"^6.24.1","babel-eslint":"^7.1.1","babel-plugin-lodash":"^3.2.0","babel-preset-es2015":"^6.9.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","bluebird":"^3.4.7","chai":"^3.5.0","del":"^2.2.1","eslint":"^3.2.2","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","flow-bin":"^0.45.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-load-plugins":"^1.2.0","gulp-mocha":"^4.3.1","gulp-plumber":"^1.1.0","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^3.0.0","node-mocks-http":"^1.6.1","rimraf":"^2.6.0","sinon":"^2.2.0","sinon-chai":"^2.10.0","updtr":"^1.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"af4490800c8c15e5b56f02493349e8f21b103772","_id":"hull-client@1.0.0","_shasum":"4b435cf0d00593200b43e718d3b3ca54d3945ae0","_from":".","_npmVersion":"4.0.3","_nodeVersion":"7.2.1","_npmUser":{"name":"rdardour","email":"romain@hull.io"},"dist":{"shasum":"4b435cf0d00593200b43e718d3b3ca54d3945ae0","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.0.0.tgz","integrity":"sha512-JuunmlUBKUlJpaQgqGhXbNYc/XKbVn1DYnouATxYPcUW+RfFLSezubGtdkzzLhyn3KvLuVBEN9g1Vu1r3Iy7GQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBHGgtrkVBhZUy0icDHoUNybXXyG6QMAEhS2Rg+HFa0RAiBzAZ8J5S7jS0yeYiRXcVUZpl1q0p5VdFea9t9thkc+EQ=="}]},"maintainers":[{"name":"rdardour","email":"romain@hull.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client-1.0.0.tgz_1497956929203_0.8766746525652707"},"directories":{}},"1.0.1":{"name":"hull-client","version":"1.0.1","description":"A Node.js client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-node.git"},"homepage":"https://github.com/hull/hull-node","bugs":{"url":"https://github.com/hull/hull-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:units","test:lint":"eslint src","test:modules":"npm outdated --depth=0","test:units":"NODE_ENV=test mocha --require babel-register -R spec ./tests/* ./tests/**/* ./spec/*","test:flow":"flow check","update":"updtr","clean":"rimraf lib","coverage":"gulp coverage","build":"gulp build","watch":"gulp watch","prepublish":"npm run build"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.13.1","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.5.2","babel-cli":"^6.24.1","babel-eslint":"^7.1.1","babel-plugin-lodash":"^3.2.0","babel-preset-es2015":"^6.9.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","bluebird":"^3.4.7","chai":"^3.5.0","del":"^2.2.1","eslint":"^3.2.2","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","flow-bin":"^0.45.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-load-plugins":"^1.2.0","gulp-mocha":"^4.3.1","gulp-plumber":"^1.1.0","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^3.0.0","node-mocks-http":"^1.6.1","rimraf":"^2.6.0","sinon":"^2.2.0","sinon-chai":"^2.10.0","updtr":"^1.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"9cb724c07daf139ea1ab75a9b9f2df097dbb972f","_id":"hull-client@1.0.1","_shasum":"fd90f025d830453a1b4916df8697a61dbafc0f37","_from":".","_npmVersion":"4.0.3","_nodeVersion":"7.2.1","_npmUser":{"name":"rdardour","email":"romain@hull.io"},"dist":{"shasum":"fd90f025d830453a1b4916df8697a61dbafc0f37","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.0.1.tgz","integrity":"sha512-/NdpInPfloIgvHNzWJtyCe+WjSvleUmU+uMsZyDC63DDQ6JQiAk4k8uFJsNqC0Qhyb+aHxMPalmDaherxR6I9g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGeFm3YLcfP1as9DyfHOYkLSkSp8SBAbQ9C+VONw7bFEAiEA3WpcYMmKl85YSWFthdREdUGRG+DCqxg8eDIkVoZBj9I="}]},"maintainers":[{"name":"rdardour","email":"romain@hull.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client-1.0.1.tgz_1497961862451_0.8942428915761411"},"directories":{}},"1.0.2":{"name":"hull-client","version":"1.0.2","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:units","test:lint":"eslint src","test:modules":"npm outdated --depth=0","test:units":"NODE_ENV=test mocha --require babel-register -R spec ./tests/* ./tests/**/* ./spec/*","test:flow":"flow check","update":"updtr","clean":"rimraf lib","coverage":"gulp coverage","build":"gulp build","watch":"gulp watch","prepublish":"npm run build"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.13.1","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.5.2","babel-cli":"^6.24.1","babel-eslint":"^7.1.1","babel-plugin-lodash":"^3.2.0","babel-preset-es2015":"^6.9.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","bluebird":"^3.4.7","chai":"^3.5.0","del":"^2.2.1","eslint":"^3.2.2","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","flow-bin":"^0.45.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-load-plugins":"^1.2.0","gulp-mocha":"^4.3.1","gulp-plumber":"^1.1.0","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^3.0.0","node-mocks-http":"^1.6.1","rimraf":"^2.6.0","sinon":"^2.2.0","sinon-chai":"^2.10.0","updtr":"^1.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"a97c5abbac3819ea925c6f0a887328d7cd15805e","_id":"hull-client@1.0.2","_shasum":"a7b92826637f75a0b388220e18d83a32053145d5","_from":".","_npmVersion":"4.0.3","_nodeVersion":"7.2.1","_npmUser":{"name":"rdardour","email":"romain@hull.io"},"dist":{"shasum":"a7b92826637f75a0b388220e18d83a32053145d5","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.0.2.tgz","integrity":"sha512-GoJioig6IB8XyEhvszULLq5o2V7Y4TreXylmTGdDhCTI07hPDtUDfELtO4V22CrkD1Mfa+W/GaZzk275Ay4TNg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEuEueRl6hlG6jkX5NX5jR28pI57HcPqvqGgGpCtdEQjAiBCPydwQIk46yA6OpHSJ4M/46PMan/U6lVxAJoLBs2wpw=="}]},"maintainers":[{"name":"rdardour","email":"romain@hull.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client-1.0.2.tgz_1497961934893_0.42443192820064723"},"directories":{}},"1.0.3":{"name":"hull-client","version":"1.0.3","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:units","test:lint":"eslint src","test:modules":"npm outdated --depth=0","test:units":"NODE_ENV=test mocha --require babel-register -R spec ./tests/* ./tests/**/* ./spec/*","test:flow":"flow check","update":"updtr","clean":"rimraf lib","coverage":"gulp coverage","build":"gulp build","watch":"gulp watch","prepublish":"npm run build"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.13.1","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.5.2","babel-cli":"^6.24.1","babel-eslint":"^7.1.1","babel-plugin-lodash":"^3.2.0","babel-preset-es2015":"^6.9.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","bluebird":"^3.4.7","chai":"^3.5.0","del":"^2.2.1","eslint":"^3.2.2","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","flow-bin":"^0.45.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-load-plugins":"^1.2.0","gulp-mocha":"^4.3.1","gulp-plumber":"^1.1.0","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^3.0.0","node-mocks-http":"^1.6.1","rimraf":"^2.6.0","sinon":"^2.2.0","sinon-chai":"^2.10.0","updtr":"^1.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"911f8784a70bcfe5d59d55fe02ea54c3e5439bc0","_id":"hull-client@1.0.3","_shasum":"7ad3ba671452ca7a5bbe0a4b24763fe796aeece9","_from":".","_npmVersion":"4.0.3","_nodeVersion":"7.2.1","_npmUser":{"name":"rdardour","email":"romain@hull.io"},"dist":{"shasum":"7ad3ba671452ca7a5bbe0a4b24763fe796aeece9","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.0.3.tgz","integrity":"sha512-Ib5Iigt0wyMAuD5+Uai07rvUOxdMOUl0eoTKH2lXHthT9nh2Ylif+OA8IZrb04VN70PTjIVMogeTuM778E0/uA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGkQ3lHxBR5R0wSuNPwC7ClqsOXWY7fI9V4lgxtfAOb2AiEAkiu2ZSfs9kR6uzCAfcN0yKMTEXWWd+Yorx7UfW8ZSeA="}]},"maintainers":[{"name":"rdardour","email":"romain@hull.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client-1.0.3.tgz_1497962721790_0.10238733515143394"},"directories":{}},"1.0.5":{"name":"hull-client","version":"1.0.5","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:units","test:lint":"eslint src","test:modules":"npm outdated --depth=0","test:units":"NODE_ENV=test mocha --require babel-register -R spec ./tests/* ./tests/**/* ./spec/*","test:flow":"flow check","update":"updtr","clean":"rimraf lib","coverage":"gulp coverage","build":"gulp build","watch":"gulp watch","prepublish":"npm run build"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.13.1","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.5.2","babel-cli":"^6.24.1","babel-eslint":"^7.1.1","babel-plugin-lodash":"^3.2.0","babel-preset-es2015":"^6.9.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","bluebird":"^3.4.7","chai":"^3.5.0","del":"^2.2.1","eslint":"^3.2.2","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","flow-bin":"^0.45.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-load-plugins":"^1.2.0","gulp-mocha":"^4.3.1","gulp-plumber":"^1.1.0","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^3.0.0","node-mocks-http":"^1.6.1","rimraf":"^2.6.0","sinon":"^2.2.0","sinon-chai":"^2.10.0","updtr":"^1.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"2207ce7e64aa3bcc413f099f232fd77cd38f355e","_id":"hull-client@1.0.5","_shasum":"1ec4c2e05298844f98dd20d2762bd56284ed3f48","_from":".","_npmVersion":"4.0.3","_nodeVersion":"7.2.1","_npmUser":{"name":"rdardour","email":"romain@hull.io"},"dist":{"shasum":"1ec4c2e05298844f98dd20d2762bd56284ed3f48","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.0.5.tgz","integrity":"sha512-/fsH2OIa6uTVFksy8WysBsKP0iBdi7R5FZYtdIk9Xp1xI9rBZs42fRSVSyZ5RIMO7IywPzfmgLxasHgFOCGqhQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDt9KzajERHSY4QM5hh/TPyuGv/enOrQs7Avv8xzV0cswIhAO5S+LysX5Fz0yJph3OtEDPUyIUY5Zi+v/pL/AT9zux5"}]},"maintainers":[{"name":"rdardour","email":"romain@hull.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client-1.0.5.tgz_1498060579059_0.6997289611026645"},"directories":{}},"1.1.0":{"name":"hull-client","version":"1.1.0","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:units","test:lint":"eslint src","test:modules":"npm outdated --depth=0","test:units":"NODE_ENV=test mocha --require babel-register -R spec ./tests/* ./tests/**/* ./spec/*","test:flow":"flow check","update":"updtr","clean":"rimraf lib","coverage":"gulp coverage","build":"gulp build","watch":"gulp watch","prepublish":"npm run build"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.13.1","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.5.2","babel-cli":"^6.24.1","babel-eslint":"^7.1.1","babel-plugin-lodash":"^3.2.0","babel-preset-es2015":"^6.9.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","bluebird":"^3.4.7","chai":"^3.5.0","del":"^2.2.1","eslint":"^3.2.2","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","flow-bin":"^0.45.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-load-plugins":"^1.2.0","gulp-mocha":"^4.3.1","gulp-plumber":"^1.1.0","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^3.0.0","node-mocks-http":"^1.6.1","rimraf":"^2.6.0","sinon":"^2.2.0","sinon-chai":"^2.10.0","updtr":"^1.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"b734333996ceb120c3e4a8f4c987fbcce810f4b9","_id":"hull-client@1.1.0","_shasum":"a69f5430fad7e5208d9e2d01138b47addb4bb81b","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"sbellity","email":"sbellity@gmail.com"},"dist":{"shasum":"a69f5430fad7e5208d9e2d01138b47addb4bb81b","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.1.0.tgz","integrity":"sha512-5TDnsXAQhrUQiz2BRukK0vBpChp57iBYvsbKvy73WiRzIRaYMi7JPUxcqlZtui6RL1t98hFnYQfaJp7EOT4OXA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDwHMPeIahjn99RsyOH+xuoJjIInq9mXk20Vft6yddRlAiAPqRMJ8DQtpt0JJ5G2i+ATALmMvwd+vBBp5DLwX7+WcA=="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client-1.1.0.tgz_1500373214871_0.7322798471432179"},"directories":{}},"1.1.1":{"name":"hull-client","version":"1.1.1","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:units","test:lint":"eslint src","test:modules":"npm outdated --depth=0","test:units":"NODE_ENV=test mocha --require babel-register -R spec ./tests/* ./tests/**/* ./spec/*","test:flow":"flow check","update":"updtr","clean":"rimraf lib","coverage":"gulp coverage","build":"gulp build","watch":"gulp watch","prepublish":"npm run build"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.13.1","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.5.2","babel-cli":"^6.24.1","babel-eslint":"^7.1.1","babel-plugin-lodash":"^3.2.0","babel-preset-es2015":"^6.9.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","bluebird":"^3.4.7","chai":"^3.5.0","del":"^2.2.1","eslint":"^3.2.2","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","flow-bin":"^0.45.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-load-plugins":"^1.2.0","gulp-mocha":"^4.3.1","gulp-plumber":"^1.1.0","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^3.0.0","node-mocks-http":"^1.6.1","rimraf":"^2.6.0","sinon":"^2.2.0","sinon-chai":"^2.10.0","updtr":"^1.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"c2ebf1889196d231a5af49ce4e3d8b33c7c6acdb","_id":"hull-client@1.1.1","_shasum":"389687940c3de355f93ac5a876c10c81670cc16f","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"sbellity","email":"sbellity@gmail.com"},"dist":{"shasum":"389687940c3de355f93ac5a876c10c81670cc16f","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.1.1.tgz","integrity":"sha512-VNy8WvNYjZ1koQrJte2CzKK/F/zNH7QDadgef2VYmxa6OnC1ziTr7aag1Blxerybq2P1aSt3c2GZxcVRdqzs1Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC9l89nY7RjGZQLedsRp0fjXPmCPgMvb4SaRxQ2MjqB0AiEA4ULx+5w2cN0pM34okZFhC9gCWrdyA8JJSUTB1nZDQ4o="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client-1.1.1.tgz_1500629102922_0.08024014113470912"},"directories":{}},"1.1.2":{"name":"hull-client","version":"1.1.2","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:units","test:lint":"eslint src","test:modules":"npm outdated --depth=0","test:units":"NODE_ENV=test mocha --require babel-register -R spec ./tests/* ./tests/**/* ./spec/*","test:flow":"flow check","update":"updtr","clean":"rimraf lib","coverage":"gulp coverage","build":"gulp build","watch":"gulp watch","prepublish":"npm run build"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.13.1","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.5.2","babel-cli":"^6.24.1","babel-eslint":"^7.1.1","babel-plugin-lodash":"^3.2.0","babel-preset-es2015":"^6.9.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","bluebird":"^3.4.7","chai":"^3.5.0","del":"^2.2.1","eslint":"^3.2.2","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","flow-bin":"^0.45.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-load-plugins":"^1.2.0","gulp-mocha":"^4.3.1","gulp-plumber":"^1.1.0","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^3.0.0","node-mocks-http":"^1.6.1","rimraf":"^2.6.0","sinon":"^2.2.0","sinon-chai":"^2.10.0","updtr":"^1.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"fb83bb9b5538e459f543810fe21e78464391f784","_id":"hull-client@1.1.2","_npmVersion":"5.3.0","_nodeVersion":"6.10.3","_npmUser":{"name":"michaloo","email":"michal@raczka.me"},"dist":{"integrity":"sha512-ZzVlIF9bi73l7gr6nhwsQZKQR8YjqSg2+L/NN06eA+jKyJ0UPQ/Yl2I0Xp9vt4UmmihVdc2n5bYxM1hcELYNXg==","shasum":"e9347b78bc9dba058b5d75312d54b8f9038f03f3","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.1.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAo5AsvFXMoo1cyfznLgeJ0EWmz16PDc70pU43g3lU7yAiEAx4r+s9ZxvFKLAWz2Hh5wx9gXf1YsUW7xdvOpLx1kz1c="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client-1.1.2.tgz_1502967827378_0.6749256507027894"},"directories":{}},"1.1.3":{"name":"hull-client","version":"1.1.3","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:units","test:lint":"eslint src","test:modules":"npm outdated --depth=0","test:units":"NODE_ENV=test mocha --require babel-register -R spec ./tests/* ./tests/**/* ./spec/*","test:flow":"flow check","update":"updtr","clean":"rimraf lib","coverage":"gulp coverage","build":"npm run clean && gulp build","watch":"gulp watch","prepublish":"npm run build"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.13.1","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.5.2","babel-cli":"^6.24.1","babel-eslint":"^7.1.1","babel-plugin-lodash":"^3.2.0","babel-preset-es2015":"^6.9.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","bluebird":"^3.4.7","chai":"^3.5.0","del":"^2.2.1","eslint":"^3.2.2","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","flow-bin":"^0.45.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-load-plugins":"^1.2.0","gulp-mocha":"^4.3.1","gulp-plumber":"^1.1.0","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^3.0.0","node-mocks-http":"^1.6.1","rimraf":"^2.6.0","sinon":"^2.2.0","sinon-chai":"^2.10.0","updtr":"^1.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"bf8f1ec8e8f695bb4b453a466ff1420ee8cc90f4","_id":"hull-client@1.1.3","_npmVersion":"5.3.0","_nodeVersion":"6.10.3","_npmUser":{"name":"michaloo","email":"michal@raczka.me"},"dist":{"integrity":"sha512-EQCJK1ZBy59pxquWEWfAxSUz1AytB5895fCAW6ENhGmFpht09uY4SP22DeC5/gw1/VNHJqVoP3nHNQSyF/2H3g==","shasum":"8ea45749bfbcbf51067f80414e4febebef2cc76f","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.1.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID54RL4LrufDfhF3qu0926ekzoL6u7EyNOgiuBrneidXAiEAhj2Srb+M2VcWS4mfrVrcCgsPi/1mEGldZQ/ruBwS8es="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client-1.1.3.tgz_1503653776020_0.8220805281307548"},"directories":{}},"1.1.4":{"name":"hull-client","version":"1.1.4","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:units","test:lint":"eslint src","test:modules":"npm outdated --depth=0","test:units":"NODE_ENV=test mocha --require babel-register -R spec ./tests/* ./tests/**/* ./spec/*","test:flow":"flow check","update":"updtr","clean":"rimraf lib","coverage":"gulp coverage","build":"npm run clean && gulp build","watch":"gulp watch","prepublish":"npm run build"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.13.1","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.5.2","babel-cli":"^6.24.1","babel-eslint":"^7.1.1","babel-plugin-lodash":"^3.2.0","babel-preset-es2015":"^6.9.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","bluebird":"^3.4.7","chai":"^3.5.0","del":"^2.2.1","eslint":"^3.2.2","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","flow-bin":"^0.45.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-load-plugins":"^1.2.0","gulp-mocha":"^4.3.1","gulp-plumber":"^1.1.0","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^3.0.0","node-mocks-http":"^1.6.1","rimraf":"^2.6.0","sinon":"^2.2.0","sinon-chai":"^2.10.0","updtr":"^1.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"b3a97afddf4904d03cd29198f8154cec24833bec","_id":"hull-client@1.1.4","_shasum":"3a79aa983f44abeec962255bf7de2d980ea94eb2","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.1","_npmUser":{"name":"sbellity","email":"sbellity@gmail.com"},"dist":{"shasum":"3a79aa983f44abeec962255bf7de2d980ea94eb2","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.1.4.tgz","integrity":"sha512-eskE8Nghdls1gEZGP6+d/aV+ukyEC023FLH5NfSev9+48Od2znnXewMg8Fs7CfYPYbshwBwGK6jPpX5TfpT8ew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDD8t/k0NBio1JpAzvAoUrsW9u/CxPHYr0M7fWPM4te+gIgJfiExgluTU+3STsBbukcaqFRBDKL0Y6RkjKpZNbWBdk="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client-1.1.4.tgz_1511781977554_0.48924197419546545"},"directories":{}},"1.1.5":{"name":"hull-client","version":"1.1.5","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:units","test:lint":"eslint src","test:modules":"npm outdated --depth=0","test:units":"NODE_ENV=test mocha --require babel-register -R spec ./tests/* ./tests/**/* ./spec/*","test:flow":"flow check","update":"updtr","clean":"rimraf lib","coverage":"gulp coverage","build":"npm run clean && gulp build","watch":"gulp watch","prepublish":"npm run build"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.13.1","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.5.2","babel-cli":"^6.24.1","babel-eslint":"^7.1.1","babel-plugin-lodash":"^3.2.0","babel-preset-es2015":"^6.9.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","bluebird":"^3.4.7","chai":"^3.5.0","del":"^2.2.1","eslint":"^3.2.2","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","flow-bin":"^0.45.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-load-plugins":"^1.2.0","gulp-mocha":"^4.3.1","gulp-plumber":"^1.1.0","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^3.0.0","node-mocks-http":"^1.6.1","rimraf":"^2.6.0","sinon":"^2.2.0","sinon-chai":"^2.10.0","updtr":"^1.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"f2b70230d7f6add3b415fffbdce4d6eb6688e3b2","_id":"hull-client@1.1.5","_npmVersion":"5.5.1","_nodeVersion":"6.12.0","_npmUser":{"name":"michaloo","email":"michal@raczka.me"},"dist":{"integrity":"sha512-vreGbDYzZZWkodl7RglRroua4gcuJgX+jf5sqGbrNuegZL3veJlXtfKlcCVY4jn9lRMs380EMlAbddHrNnRT9w==","shasum":"f01d5179f0297b69a33c70405e437d5b4b95b3bb","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.1.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQbp8l5L2lSEG8kQyqOVGq+4yGaQckxNyWv0tCW/VGeQIgYmhb81DQ4rb+RwPlTVCsd5f3paqSNidN7eGqcXcubgI="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client-1.1.5.tgz_1512982029340_0.0634462721645832"},"directories":{}},"1.2.0":{"name":"hull-client","version":"1.2.0","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:unit && npm run test:integration","test:lint":"eslint src && documentation lint src","test:dependencies":"npm outdated --depth=0","test:unit":"NODE_ENV=test mocha --require babel-register --exit -R spec ./tests/unit/** ./test/unit/*","test:integration":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/integration/* ./test/integration/**","test:flow":"flow check","clean":"rimraf lib","build":"npm run clean && babel src -d lib && npm run documentation","prepublish":"npm run build","documentation":"documentation build src -f md -o API.md --access public","precommit":"npm run documentation && git add API.md"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.17.5","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.23.0","babel-cli":"^6.24.1","babel-eslint":"^8.2.2","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-register":"^6.26.0","bluebird":"^3.5.1","chai":"^4.1.2","documentation":"^6.1.0","eslint":"^4.18.2","eslint-config-airbnb-base":"^12.1.0","eslint-plugin-flowtype":"^2.46.1","eslint-plugin-flowtype-errors":"^3.5.1","eslint-plugin-import":"^2.9.0","flow-bin":"^0.67.1","husky":"^0.14.3","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^5.0.4","rimraf":"^2.6.2","sinon":"^4.4.5","sinon-chai":"^3.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"2d3f0cbcea654fa53e2de313e43b64614bd3c899","_id":"hull-client@1.2.0","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"michaloo","email":"michal@raczka.me"},"dist":{"integrity":"sha512-SzDUTQmkhCCZhMir1IpafYHGcuOw2yUYo5AkdaTCrWT/IAz1AwR51O7wr+W7NRv8VT2hCPCqx4cjp6YC+P1BZw==","shasum":"415ce855a060ec686e3e9bb5d581e5eb276dfe23","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.2.0.tgz","fileCount":30,"unpackedSize":126501,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHvaHjwe0nCrmmwDeO9x+RH4clFcspwZiO9jFZ1452ScAiEA4GxBR6vg7Ka0ngIeJ6PtrZZ6iqwQ4FNYJQhLM7JQIQQ="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client_1.2.0_1521485968402_0.4135917225208734"},"_hasShrinkwrap":false},"1.2.2":{"name":"hull-client","version":"1.2.2","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:unit && npm run test:integration","test:lint":"eslint src && documentation lint src","test:dependencies":"npm outdated --depth=0","test:unit":"NODE_ENV=test mocha --require babel-register --exit -R spec ./tests/unit/** ./test/unit/*","test:integration":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/integration/* ./test/integration/**","test:flow":"flow check","clean":"rimraf lib","build":"npm run clean && babel src -d lib && npm run documentation","prepublish":"npm run build","documentation":"documentation build src -f md -o API.md --access public --markdownToc=false","precommit":"npm run documentation && git add API.md"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.17.5","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.23.0","babel-cli":"^6.24.1","babel-eslint":"^8.2.2","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-register":"^6.26.0","bluebird":"^3.5.1","chai":"^4.1.2","documentation":"^6.1.0","eslint":"^4.18.2","eslint-config-airbnb-base":"^12.1.0","eslint-plugin-flowtype":"^2.46.1","eslint-plugin-flowtype-errors":"^3.5.1","eslint-plugin-import":"^2.9.0","flow-bin":"^0.67.1","husky":"^0.14.3","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^5.0.4","rimraf":"^2.6.2","sinon":"^4.4.5","sinon-chai":"^3.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"d38e8ba931c53e2cc9d21cf84bb4a8a69fa2bb9e","_id":"hull-client@1.2.2","_npmVersion":"5.6.0","_nodeVersion":"8.10.0","_npmUser":{"name":"sbellity","email":"sbellity@gmail.com"},"dist":{"integrity":"sha512-KFsBGwL/Q6jH33kRA+9F8cY+xvfkWBru+7oJpHMpQ4C4cBMi79yqQFhukUQyxanoS4pS8m9CGHR3rQKFlJYfdw==","shasum":"9e75db326957513babd4c793482e7d0903cdf490","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.2.2.tgz","fileCount":30,"unpackedSize":314850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa/wXXCRA9TVsSAnZWagAAJNkQAKBqpbXkjjlYWB+z6lSn\npln6+kZwkFJhotP/7LUqNBKquPL5FETeCXaxnKL11cg+/72uV2KEgxlIkxbl\n2NSTV9Hllk36ceK/dOBJF1Q3vSW5hFOygEH/PhzMFW0SJ1PUtisZNSFYUm08\nDYvS3mF7SnXGRsnzbzKHvzhOm+Dnzr4dC27I8ZH5hi1V9iikP88fwnOoSbb+\nKFaLsEf7Il4EDeGgBKbmspYcVMN4UI1+5H8WiU1LMr1VbDRXqAu+OseWXeAk\n/gELShv8QGAdj8JGhcomKpYd9KjA9YKfZf8HDC0k7SqEE14/ZsGu5E1dSCU8\nAokR1rmURCXjM4dLDWnt1qeVRkehhP5eRKZhCnSnZJA3RzcTxu6HDweoxKL/\n+AQ2Z/odlp5FrhuxAmk1ifhF95HT15BIc4SwHLOKDlxU1UQb2kgwErLUpmpb\ndlwT3mzY9S8qMV/d8PYY0h5YKepKklcCFdabvJsHrE4ToszaZcn6I/BoJxre\nhcUx8UxSiMPGZLVwYUc3VqDa1TXUBITTEHpR6r2zC54pGhXhqlhRW/DrJVP+\nCuTFa7XjJjE7UaIoVIwOi7QRaHNLvNLc5k/NQmPwXkA+/+QlKOpyUisP2XlF\nxAHWBDfdV/p2OdY3AIs8CeVdrOKkKxmLNdVUjPlvR0XKxCheu5ooDh+lB4GM\nrGoP\r\n=IbV3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPJCcs+1iMQCtKkNUMJzkbGoFlzLt1mseKw9yUpgZ4cQIhAMdI4ylwt+Ru8GVEkh0h+hDTDFFrHi/GtzStjs/2pvei"}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client_1.2.2_1526662613900_0.9749912009372741"},"_hasShrinkwrap":false},"2.0.0-beta.1":{"name":"hull-client","version":"2.0.0-beta.1","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:unit && npm run test:integration","test:lint":"eslint src && documentation lint src","test:dependencies":"npm outdated --depth=0","test:unit":"NODE_ENV=test mocha --require babel-register --exit -R spec ./tests/unit/** ./test/unit/*","test:integration":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/integration/* ./test/integration/**","test:flow":"flow check","clean":"rimraf lib","build":"npm run clean && babel src -d lib && npm run documentation","prepublish":"npm run build","documentation":"documentation build src -f md -o API.md --access public --markdownToc=false","precommit":"npm run documentation && git add API.md"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.17.5","superagent":"^3.8.3","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.23.0","babel-cli":"^6.24.1","babel-eslint":"^8.2.2","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-register":"^6.26.0","bluebird":"^3.5.1","chai":"^4.1.2","documentation":"^6.1.0","eslint":"^4.18.2","eslint-config-airbnb-base":"^12.1.0","eslint-plugin-flowtype":"^2.46.1","eslint-plugin-flowtype-errors":"^3.5.1","eslint-plugin-import":"^2.9.0","flow-bin":"^0.71.0","flow-typed":"^2.4.0","husky":"^0.14.3","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^5.0.4","rimraf":"^2.6.2","sinon":"^4.4.5","sinon-chai":"^3.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"readme":"# Overview\n\n## In this package:\n\n### [Hull Client](#hull)\n\nA low level Hull Platform API client. Refer to it's documentation for more details\n\n```javascript\nconst hullClient = new Hull.Client({ configuration });\n```\n\n## In the hull-node package (which embeds this one):\n\n### [Hull Middleware](https://github.com/hull/hull-node)\n\nA bridge between Hull Client and a NodeJS HTTP application (e.g. express) which initializes context for every HTTP request:\n\n```javascript\napp.use(Hull.Middleware({ configuration }));\n```\n\n### [Hull Connector](https://github.com/hull/hull-node)\n\n\n```javascript\nconst connector = new Hull.Connector({ configuration });\n```\n\nA complete toolkit which is created next to ExpressJS server instance. Includes Hull Middleware and a set of official patterns to build highly scalable and efficient Connectors.\n\n![hull node core components](/docs/assets/hull-node-components.png)\n\n---\n\n# HullClient\n\nThis library makes it easy to interact with the Hull API, track Events and set attributes on Users and Accounts.\n\nCreating a new Hull client is pretty straightforward:\n\n`npm install -s hull-client`\n\n```js\nconst HullClient = require(\"hull-client\");\n\nconst hullClient = new HullClient({\n  id: \"5aafb6ccc32b617846000001\",\n  secret: \"cbo128745o12786345goc12475\",\n  organization: \"xxx.hullapp.io\"\n});\n```\n\nFind all required and optional constructor options in [API REFERENCE](./API.md#hullclient).\n\n## Calling the API\n\nOnce you have instantiated a `HullClient`, you can use one of the `get`, `post`,\n`put`or `del` methods to perform actions of Hull's [HTTP REST API](https://www.hull.io/docs/references/api/).\n\n```js\n// `client.api.get` works too.\nconst params = {};\nhullClient.get(path, params)\n  .then(function(response) {\n    console.log(response);\n  })\n  .catch(function(err) {\n    console.log(err);\n  });\n```\n\nThe first parameter is the path, the second is the set of parameters you want\nto send with the request. They all return Promises so you can use the `.then()` syntax.\n\nFind detailed description of those api methods in [API REFERENCE](./API.md#api).\n\n## Scoping HullClient to User or Account identity\n\nA common use case is to interact with the API identified as a User or Account. To get a scoped HullClient use `asUser` or `asAccount` methods just like below:\n\n```js\n// if you have a user id from your database, use the `external_id` field\nconst user = hullClient.asUser({ external_id: \"dkjf565wd654e\" });\n\n// if you have a Hull Internal User Id:\nconst user = hullClient.asUser({ id: \"5718b59b7a85ebf20e000169\" });\n// or just as a string:\nconst user = hullClient.asUser(\"5718b59b7a85ebf20e000169\");\n\n// Constant `user` is an instance of HullClient, scoped to a specific user\n// perform an API call with the user access token\nuser.get(\"/me\").then((me) => {\n  console.log(me);\n});\n\n// store attributes on this user identity\nuser.traits({ foo: \"bar \"})\n\n\n// get the access token value\nuser.token();\n\n// client for an account identified by its domain name\nconst account = hullClient.asAccount({ domain: 'hull.io' });\naccount.traits({ name: \"Hull inc\" });\n```\n\nTo identify a User, you can use an internal Hull `id`, an ID from your own system of records or database that we call `external_id`, an `email` address or `anonymous_id`. See more examples of picking and using different User claims below.\n\nTo identify an account, you can use a Hull `id`, an `external_id` or a `domain`.\n\nUsing `asUser` and `asAccount` methods doesn't make an API call, it just returns scoped instance of `HullClient` which comes with additional methods (see [API REFERENCE](./API.md#scopedhullclient)).\n\nThe second parameter lets you define additional options (JWT claims) passed to the user resolution script which customize how platform identity resolution mechanism will work (see [API REFERENCE](./API.md#asuser)).\n\n### Examples\n\n> Return a `HullClient` scoped to the user identified by its Hull ID. Not lazily created. Needs an existing User.\n\n```js\nhullClient.asUser(userId, { create: false });\n```\n\n> Return a `HullClient` scoped to the user identified by its External ID and email. Lazily created if not present before.\n\n```js\nhullClient.asUser({ external_id: \"dkjf565wd654e\" });\n```\n\n```js\nhullClient.asUser({ email: \"user@email.com\" });\n```\n\n> Return a `HullClient` scoped to the user identified by only by an anonymousId. Lets you start tracking and storing properties from a user before you have a UserID ready for him. Lazily created if [Guest Users](http://www.hull.io/docs/users/guest_users) are enabled\n> When you have a UserId, just pass both to link them.\n\n```js\nhullClient.asUser({ anonymous_id: \"44564-EJVWE-1CE56SE-SDVE879VW8D4\" });\n```\n\n> Return a hull `HullClient` authenticated as the user but with admin privileges\n\n```js\nhullClient.asUser({ email: \"user@email.com\" }, { scopes: [\"admin\"] });\n```\n\nFind detailed description of those claims scoping methods in [API REFERENCE](./API.md#asuser).\n\n## Methods for User or Account scoped instance\n\n```js\nconst externalId = \"dkjf565wd654e\";\nconst anonymousId = \"44564-EJVWE-1CE56SE-SDVE879VW8D4\";\n\nconst user = client.asUser({ external_id: externalId, anonymous_id: anonymousId });\n```\n\nWhen you do this, you get a new client that has a different behaviour. It's now behaving as a User would. It means it does API calls as a user and has new methods to track and store properties\n\n### Tracking User Events\n\nStores a new event.\n\n```js\nconst user = hullClient.asUser({ email: \"foo@hull.io\" });\nuser.track(\"new support ticket\", {\n  messages: 3,\n  priority: \"high\"\n}, {\n  source: \"zendesk\",\n  type: 'ticket',\n  event_id: 'uuid1234' // Pass a unique ID to ensure event de-duplication\n  ip: null, // don't store ip - it's a server call\n  referer: null, // don't store referer - it's a server call\n  created_at: '2013-02-08 09:30:26.123+07:00' // ISO 8601. moment.js does it very well\n});\n```\n\nFind detailed information about `track` method in [API REFERENCE](./API.md#track).\n\n### Updating User or Account Attributes\n\nStores Attributes on the user:\n\n```js\nuser.traits({\n  opened_tickets: 12\n}, { source: \"zendesk\" });\n// 'source' is optional. Will store the traits grouped under the source name.\n\n// Alternatively, you can send properties for multiple groups with the flat syntax:\nuser.traits({ \"zendesk/opened_tickets\": 12, \"clearbit/name\": \"foo\" });\n```\n\nFind detailed information about `traits` method in [API REFERENCE](./API.md#traits).\n\n## Utils\n\n`HullClient` comes with a set of utilities to simplify working with Hull REST API:\n\n- `util.settings.update` - allows to update only part of connector settings, [see details](./API.md#settingsupdate)\n- `util.properties.get` - parse list of attributes stored on organization level, [see details](./API.md#propertiesget)\n- `util.traits.group` - allows to transform a flat list of attributes to nested object, [see details](./API.md#traitsgroup)\n\n## Logging\n\n`HullClient` comes with a built-in logger utility exposed as `hullClient.logger`  which emits a standardised output that captures the context of the `HullClient` instance (initial constructor configuration, additional User or Account claims etc.)\n\nThe Logger comes in two flavors, `HullClient.logger.xxx` and `hullClient.logger.xxx` - The first one is a generic logger, the second is contextual to the current instance of `HullClient` and captures the ship id organization and current User or Account identifiers.\n\nThe Logger is implemented with [Winston](https://github.com/winstonjs/winston). By default it comes with console stdout/stderr transport which will show logs from `info` level.\n\n```js\nHullClient.logger.info(\"message\", { object }); // Class logging method,\nhullClient.logger.info(\"message\", { object }); // Instance logging method, adds Ship ID and Organization to Context. Use if available.\n\n// Debug works the same way but by default they won't be logged, adjust the log level in following way:\nHull.logger.transports.console.level = \"debug\";\n\nHullClient.logger.debug(\"message\", { object }); // Class logging method,\nhullClient.logger.debug(\"message\", { object });\n\n// You can add more logging destinations like this:\nconst winstonSlacker = require(\"winston-slacker\");\nHullClient.logger.add(winstonSlacker,  { ... });\n```\n\n### Logs scoped to specific User or Account\n\nYou can also have a user or account scoped logger. Claims used in `asUser` and `asAccount` methods will be added to the log context.\n\n```js\nconst user = hullClient.asUser({ email: \"john@coltrane.com\" });\nuser.logger.info(\"hello\");\n\n// it will produce following log line:\n{\"context\":{\"organization\":\"xxx.hullapp.io\",\"id\":\"5aafb6ccc32b617846000001\",\"user_email\":\"john@coltrane.com\"},\"level\":\"info\",\"message\":\"hello\"}\n```\n\n### Setting a requestId in the logs context\n\nYou can decorate all your logs context with a `request_id` which allows you to group all logs related to a particular request or transaction.\n\nThis identifier can be passed a `requestId` param at the initialization of the Client.\n\n```js\nconst client = new Hull({\n  organization: \"xxx.hullapp.io\",\n  id: \"5aafb6ccc32b617846000001\",\n  secret: \"change-me-please\",\n  requestId: \"123\"\n});\n\nclient.logger.info(\"hello\");\n```\n\nwill log the following line\n\n```js\n{\"context\":{\"organization\":\"193a8881.hullapp.io\",\"id\":\"59e99ec13cd60e5c9d000037\",\"request_id\":\"123\"},\"level\":\"info\",\"message\":\"hello\"}\n```\n","readmeFilename":"README.md","gitHead":"1e1b83ebb662c50924598967f3547d1383980fe9","_id":"hull-client@2.0.0-beta.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"michaloo","email":"michal@raczka.me"},"dist":{"integrity":"sha512-FcU6lwF276lLwnpJHb2WdHFZ5NtlZLSOmk8/MdC7Spi5FR2fAaQL/R1QMCfbSBSef9qdvzyaCMme7VQYfrngqQ==","shasum":"1a90fed75157dc34375cb0a89f2521b63561b8c9","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-2.0.0-beta.1.tgz","fileCount":377,"unpackedSize":6219195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbA+ymCRA9TVsSAnZWagAAmzQP/RluQKy6F6/kBnAtmwE3\nq+as6q3FrpNbpzPwDiBk+koeZHe13pun5632LkfcnrXmREEsKXXhq6Gc/Lpj\n+0CKkDEd6pn93IhSLWDt0sjOx/ocKod1JjCznavwmSnmRAarpu3k3amU5QUj\n6wEA8Ug5KuatGlk//5KBFExZD5dPMKSNUzZfY27A7EmV9Om/cKqrv+Rf1IT8\nWloXh1UaRjBjketv3VBllWuK0HvvJac2dnb+8HQ61SnL0GMRqDOJ/TC3VVfX\nBuaT2PbWIvN+yP7ubOXmf/vSAgQiJiix1+LZbzmD5fA30O8OLt7e3GRmTM7+\nkXq6GqfKC4kNUylLYrnGdrc+J5BLrx1br0htXIDmwoObgYLaohhMH4/ShJZl\n5n5yir+y+W0cL5V5nA4uOcQzAqgCZHFfSzO8eqzdcR/zpo8N9DDzOfaeXu1t\ny/GnQZNJAGh1vUG9W8oK/XyqOCkn9slNvJ3MXhJ11kpY1HpBGjmVz/5GIrZx\nouJbYngEkPtQ5QNrFmnLQrJq1HlacSDEzNA/FK2fyij+kpCTaAiBPAW9TYLj\nQ2MsGbY8lKumJcf6mNGzROb9cA2GBrl/5pR09xC2xKDu7ZdiCBigKacDHcoN\nWDtURAn3ppCb8jMFc0yCJ0ApqHiJus05p5uuTZvC9gxZRlWiaJjD7uvKBpZL\n6lrT\r\n=duNv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICJpK2axaXk9HrUC6xXMrEKkc7fdlb4o2vHGHfBmrTV3AiAMNz1jl8DH8RbBV51byeACS05+pxNoHcZCsc6svrdWtA=="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client_2.0.0-beta.1_1526983844162_0.5319973122065296"},"_hasShrinkwrap":false},"2.0.0-beta.2":{"name":"hull-client","version":"2.0.0-beta.2","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:unit && npm run test:integration","test:lint":"eslint src && documentation lint src","test:dependencies":"npm outdated --depth=0","test:unit":"NODE_ENV=test mocha --require babel-register --exit -R spec ./tests/unit/** ./test/unit/*","test:integration":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/integration/* ./test/integration/**","test:flow":"flow check","clean":"rimraf lib","build":"npm run clean && babel src -d lib && npm run documentation","prepublish":"npm run build","documentation":"documentation build src -f md -o API.md --access public --markdownToc=false","precommit":"npm run documentation && git add API.md"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.17.5","superagent":"^3.8.3","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.23.0","babel-cli":"^6.24.1","babel-eslint":"^8.2.2","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-register":"^6.26.0","bluebird":"^3.5.1","chai":"^4.1.2","documentation":"^6.1.0","eslint":"^4.18.2","eslint-config-airbnb-base":"^12.1.0","eslint-plugin-flowtype":"^2.46.1","eslint-plugin-flowtype-errors":"^3.5.1","eslint-plugin-import":"^2.9.0","flow-bin":"^0.71.0","flow-typed":"^2.4.0","husky":"^0.14.3","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^5.0.4","rimraf":"^2.6.2","sinon":"^4.4.5","sinon-chai":"^3.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"readme":"# Overview\n\n## In this package:\n\n### [Hull Client](#hull)\n\nA low level Hull Platform API client. Refer to it's documentation for more details\n\n```javascript\nconst hullClient = new Hull.Client({ configuration });\n```\n\n## In the hull-node package (which embeds this one):\n\n### [Hull Middleware](https://github.com/hull/hull-node)\n\nA bridge between Hull Client and a NodeJS HTTP application (e.g. express) which initializes context for every HTTP request:\n\n```javascript\napp.use(Hull.Middleware({ configuration }));\n```\n\n### [Hull Connector](https://github.com/hull/hull-node)\n\n\n```javascript\nconst connector = new Hull.Connector({ configuration });\n```\n\nA complete toolkit which is created next to ExpressJS server instance. Includes Hull Middleware and a set of official patterns to build highly scalable and efficient Connectors.\n\n![hull node core components](/docs/assets/hull-node-components.png)\n\n---\n\n# HullClient\n\nThis library makes it easy to interact with the Hull API, track Events and set attributes on Users and Accounts.\n\nCreating a new Hull client is pretty straightforward:\n\n`npm install -s hull-client`\n\n```js\nconst HullClient = require(\"hull-client\");\n\nconst hullClient = new HullClient({\n  id: \"5aafb6ccc32b617846000001\",\n  secret: \"cbo128745o12786345goc12475\",\n  organization: \"xxx.hullapp.io\"\n});\n```\n\nFind all required and optional constructor options in [API REFERENCE](./API.md#hullclient).\n\n## Calling the API\n\nOnce you have instantiated a `HullClient`, you can use one of the `get`, `post`,\n`put`or `del` methods to perform actions of Hull's [HTTP REST API](https://www.hull.io/docs/references/api/).\n\n```js\n// `client.api.get` works too.\nconst params = {};\nhullClient.get(path, params)\n  .then(function(response) {\n    console.log(response);\n  })\n  .catch(function(err) {\n    console.log(err);\n  });\n```\n\nThe first parameter is the path, the second is the set of parameters you want\nto send with the request. They all return Promises so you can use the `.then()` syntax.\n\nFind detailed description of those api methods in [API REFERENCE](./API.md#api).\n\n## Scoping HullClient to User or Account identity\n\nA common use case is to interact with the API identified as a User or Account. To get a scoped HullClient use `asUser` or `asAccount` methods just like below:\n\n```js\n// if you have a user id from your database, use the `external_id` field\nconst user = hullClient.asUser({ external_id: \"dkjf565wd654e\" });\n\n// if you have a Hull Internal User Id:\nconst user = hullClient.asUser({ id: \"5718b59b7a85ebf20e000169\" });\n// or just as a string:\nconst user = hullClient.asUser(\"5718b59b7a85ebf20e000169\");\n\n// Constant `user` is an instance of HullClient, scoped to a specific user\n// perform an API call with the user access token\nuser.get(\"/me\").then((me) => {\n  console.log(me);\n});\n\n// store attributes on this user identity\nuser.traits({ foo: \"bar \"})\n\n\n// get the access token value\nuser.token();\n\n// client for an account identified by its domain name\nconst account = hullClient.asAccount({ domain: 'hull.io' });\naccount.traits({ name: \"Hull inc\" });\n```\n\nTo identify a User, you can use an internal Hull `id`, an ID from your own system of records or database that we call `external_id`, an `email` address or `anonymous_id`. See more examples of picking and using different User claims below.\n\nTo identify an account, you can use a Hull `id`, an `external_id` or a `domain`.\n\nUsing `asUser` and `asAccount` methods doesn't make an API call, it just returns scoped instance of `HullClient` which comes with additional methods (see [API REFERENCE](./API.md#scopedhullclient)).\n\nThe second parameter lets you define additional options (JWT claims) passed to the user resolution script which customize how platform identity resolution mechanism will work (see [API REFERENCE](./API.md#asuser)).\n\n### Examples\n\n> Return a `HullClient` scoped to the user identified by its Hull ID. Not lazily created. Needs an existing User.\n\n```js\nhullClient.asUser(userId, { create: false });\n```\n\n> Return a `HullClient` scoped to the user identified by its External ID and email. Lazily created if not present before.\n\n```js\nhullClient.asUser({ external_id: \"dkjf565wd654e\" });\n```\n\n```js\nhullClient.asUser({ email: \"user@email.com\" });\n```\n\n> Return a `HullClient` scoped to the user identified by only by an anonymousId. Lets you start tracking and storing properties from a user before you have a UserID ready for him. Lazily created if [Guest Users](http://www.hull.io/docs/users/guest_users) are enabled\n> When you have a UserId, just pass both to link them.\n\n```js\nhullClient.asUser({ anonymous_id: \"44564-EJVWE-1CE56SE-SDVE879VW8D4\" });\n```\n\n> Return a hull `HullClient` authenticated as the user but with admin privileges\n\n```js\nhullClient.asUser({ email: \"user@email.com\" }, { scopes: [\"admin\"] });\n```\n\nFind detailed description of those claims scoping methods in [API REFERENCE](./API.md#asuser).\n\n## Methods for User or Account scoped instance\n\n```js\nconst externalId = \"dkjf565wd654e\";\nconst anonymousId = \"44564-EJVWE-1CE56SE-SDVE879VW8D4\";\n\nconst user = client.asUser({ external_id: externalId, anonymous_id: anonymousId });\n```\n\nWhen you do this, you get a new client that has a different behaviour. It's now behaving as a User would. It means it does API calls as a user and has new methods to track and store properties\n\n### Tracking User Events\n\nStores a new event.\n\n```js\nconst user = hullClient.asUser({ email: \"foo@hull.io\" });\nuser.track(\"new support ticket\", {\n  messages: 3,\n  priority: \"high\"\n}, {\n  source: \"zendesk\",\n  type: 'ticket',\n  event_id: 'uuid1234' // Pass a unique ID to ensure event de-duplication\n  ip: null, // don't store ip - it's a server call\n  referer: null, // don't store referer - it's a server call\n  created_at: '2013-02-08 09:30:26.123+07:00' // ISO 8601. moment.js does it very well\n});\n```\n\nFind detailed information about `track` method in [API REFERENCE](./API.md#track).\n\n### Updating User or Account Attributes\n\nStores Attributes on the user:\n\n```js\nuser.traits({\n  opened_tickets: 12\n}, { source: \"zendesk\" });\n// 'source' is optional. Will store the traits grouped under the source name.\n\n// Alternatively, you can send properties for multiple groups with the flat syntax:\nuser.traits({ \"zendesk/opened_tickets\": 12, \"clearbit/name\": \"foo\" });\n```\n\nFind detailed information about `traits` method in [API REFERENCE](./API.md#traits).\n\n## Utils\n\n`HullClient` comes with a set of utilities to simplify working with Hull REST API:\n\n- `util.settings.update` - allows to update only part of connector settings, [see details](./API.md#settingsupdate)\n- `util.properties.get` - parse list of attributes stored on organization level, [see details](./API.md#propertiesget)\n- `util.traits.group` - allows to transform a flat list of attributes to nested object, [see details](./API.md#traitsgroup)\n\n## Logging\n\n`HullClient` comes with a built-in logger utility exposed as `hullClient.logger`  which emits a standardised output that captures the context of the `HullClient` instance (initial constructor configuration, additional User or Account claims etc.)\n\nThe Logger comes in two flavors, `HullClient.logger.xxx` and `hullClient.logger.xxx` - The first one is a generic logger, the second is contextual to the current instance of `HullClient` and captures the ship id organization and current User or Account identifiers.\n\nThe Logger is implemented with [Winston](https://github.com/winstonjs/winston). By default it comes with console stdout/stderr transport which will show logs from `info` level.\n\n```js\nHullClient.logger.info(\"message\", { object }); // Class logging method,\nhullClient.logger.info(\"message\", { object }); // Instance logging method, adds Ship ID and Organization to Context. Use if available.\n\n// Debug works the same way but by default they won't be logged, adjust the log level in following way:\nHull.logger.transports.console.level = \"debug\";\n\nHullClient.logger.debug(\"message\", { object }); // Class logging method,\nhullClient.logger.debug(\"message\", { object });\n\n// You can add more logging destinations like this:\nconst winstonSlacker = require(\"winston-slacker\");\nHullClient.logger.add(winstonSlacker,  { ... });\n```\n\n### Logs scoped to specific User or Account\n\nYou can also have a user or account scoped logger. Claims used in `asUser` and `asAccount` methods will be added to the log context.\n\n```js\nconst user = hullClient.asUser({ email: \"john@coltrane.com\" });\nuser.logger.info(\"hello\");\n\n// it will produce following log line:\n{\"context\":{\"organization\":\"xxx.hullapp.io\",\"id\":\"5aafb6ccc32b617846000001\",\"user_email\":\"john@coltrane.com\"},\"level\":\"info\",\"message\":\"hello\"}\n```\n\n### Setting a requestId in the logs context\n\nYou can decorate all your logs context with a `request_id` which allows you to group all logs related to a particular request or transaction.\n\nThis identifier can be passed a `requestId` param at the initialization of the Client.\n\n```js\nconst client = new Hull({\n  organization: \"xxx.hullapp.io\",\n  id: \"5aafb6ccc32b617846000001\",\n  secret: \"change-me-please\",\n  requestId: \"123\"\n});\n\nclient.logger.info(\"hello\");\n```\n\nwill log the following line\n\n```js\n{\"context\":{\"organization\":\"193a8881.hullapp.io\",\"id\":\"59e99ec13cd60e5c9d000037\",\"request_id\":\"123\"},\"level\":\"info\",\"message\":\"hello\"}\n```\n","readmeFilename":"README.md","gitHead":"c7fe65cf922bea5a529a6407505e56c996cb1ae0","_id":"hull-client@2.0.0-beta.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"michaloo","email":"michal@raczka.me"},"dist":{"integrity":"sha512-A0Gr1mY6oYDWHbiS2zJN79oBwWm0JGXfMK+IYJ+8gHt4u9LJZkDDHnZQVu4pHZzGOYKcr+c9D3+qtHFo6mtmKg==","shasum":"dcbacba259de341248959574e00341c8af6615f6","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-2.0.0-beta.2.tgz","fileCount":377,"unpackedSize":6221401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDBYlCRA9TVsSAnZWagAAkMYP/3ljGwx/Mhhh81lZZMhd\nVosSB5R20Iuji2EWCd5Q9EFJvmdlOSGo55ROkwNQc6axfF62ivgRSL7XB6H1\nsCIKFPuZcN/ZFFwXN/Z7oxwy0NVdmri/NcqZIiYY3eJeo7Ls+YEcNJRRuhtb\nWSpnkEbhqzs0jX8/Z1pwmHhtkaMnA+BRt7/88o0aMZrcy4d1ECDeLFPp4bNe\n+2p4tlRo1VLHuw+hqG98aASn0gM8xIYxu33UXsroyekBvwKDqwHh1XtpkMGg\nxg4Kj6aqp/jlAZJ175Bjdn6iCznOxfPJPyReeBkFblR84fpNU+TOmQHewvcb\ntCLqg/cto270uCOKvOsUucnysM75R4v2KrHYxcRTBz+yGvRdAzVGAjBrFANf\nPtgCsVRLb043+0ElLD/xkakO0F/t7dVaYKFo6RiH2zqnzI/1oTnKuOEw4Htk\n9WbM35h1WlIIKrC/pxetaOgkpK6qr/uIYtvkAe1JjM4JkQTealzFVeveB/4e\nb8FaRZU20F11P4qerPyOwJqNaqrIFR/UziAhQbibwq0yWV3XKFc+tmHA62jS\n1QSEtautTXWlMIvb7mzp1f0zH1NmZB4nD06mozXLQkxX1ZKKwyVrLRDmdCk4\nVlOkIfcQcey/JEgVoCqDYcVx+Ra6VTqY8ZqkJBbhEtodkpeusY3bd5KTwOcM\n0DAj\r\n=9eDP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGXfcky3TvklTZQqUanGAMSD0CKL9p8frZ693JbE0qQIAiEA+QDOlzb1pl0tPLQITt6/C56z+LwF4GtZfUbmVxH8dwU="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client_2.0.0-beta.2_1527518756391_0.4638908780273783"},"_hasShrinkwrap":false},"2.0.0-beta.3":{"name":"hull-client","version":"2.0.0-beta.3","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:unit && npm run test:integration","test:lint":"eslint src && documentation lint src","test:dependencies":"npm outdated --depth=0","test:unit":"NODE_ENV=test mocha --require babel-register --exit -R spec ./tests/unit/** ./test/unit/*","test:integration":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/integration/* ./test/integration/**","test:flow":"flow check","clean":"rimraf lib","build":"npm run clean && babel src -d lib && npm run documentation","prepublish":"npm run build","documentation":"documentation build src -f md -o API.md --access public --markdownToc=false","precommit":"npm run documentation && git add API.md"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.17.5","superagent":"^3.8.3","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.23.0","babel-cli":"^6.24.1","babel-eslint":"^8.2.2","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-register":"^6.26.0","bluebird":"^3.5.1","chai":"^4.1.2","documentation":"^6.1.0","eslint":"^4.18.2","eslint-config-airbnb-base":"^12.1.0","eslint-plugin-flowtype":"^2.46.1","eslint-plugin-flowtype-errors":"^3.5.1","eslint-plugin-import":"^2.9.0","flow-bin":"^0.71.0","flow-typed":"^2.4.0","husky":"^0.14.3","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^5.0.4","rimraf":"^2.6.2","sinon":"^4.4.5","sinon-chai":"^3.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"readme":"# Overview\n\n## In this package:\n\n### [Hull Client](#hull)\n\nA low level Hull Platform API client. Refer to it's documentation for more details\n\n```javascript\nconst hullClient = new Hull.Client({ configuration });\n```\n\n## In the hull-node package (which embeds this one):\n\n### [Hull Middleware](https://github.com/hull/hull-node)\n\nA bridge between Hull Client and a NodeJS HTTP application (e.g. express) which initializes context for every HTTP request:\n\n```javascript\napp.use(Hull.Middleware({ configuration }));\n```\n\n### [Hull Connector](https://github.com/hull/hull-node)\n\n\n```javascript\nconst connector = new Hull.Connector({ configuration });\n```\n\nA complete toolkit which is created next to ExpressJS server instance. Includes Hull Middleware and a set of official patterns to build highly scalable and efficient Connectors.\n\n![hull node core components](/docs/assets/hull-node-components.png)\n\n---\n\n# HullClient\n\nThis library makes it easy to interact with the Hull API, track Events and set attributes on Users and Accounts.\n\nCreating a new Hull client is pretty straightforward:\n\n`npm install -s hull-client`\n\n```js\nconst HullClient = require(\"hull-client\");\n\nconst hullClient = new HullClient({\n  id: \"5aafb6ccc32b617846000001\",\n  secret: \"cbo128745o12786345goc12475\",\n  organization: \"xxx.hullapp.io\"\n});\n```\n\nFind all required and optional constructor options in [API REFERENCE](./API.md#hullclient).\n\n## Calling the API\n\nOnce you have instantiated a `HullClient`, you can use one of the `get`, `post`,\n`put`or `del` methods to perform actions of Hull's [HTTP REST API](https://www.hull.io/docs/references/api/).\n\n```js\n// `client.api.get` works too.\nconst params = {};\nhullClient.get(path, params)\n  .then(function(response) {\n    console.log(response);\n  })\n  .catch(function(err) {\n    console.log(err);\n  });\n```\n\nThe first parameter is the path, the second is the set of parameters you want\nto send with the request. They all return Promises so you can use the `.then()` syntax.\n\nFind detailed description of those api methods in [API REFERENCE](./API.md#api).\n\n## Scoping HullClient to User or Account identity\n\nA common use case is to interact with the API identified as a User or Account. To get a scoped HullClient use `asUser` or `asAccount` methods just like below:\n\n```js\n// if you have a user id from your database, use the `external_id` field\nconst user = hullClient.asUser({ external_id: \"dkjf565wd654e\" });\n\n// if you have a Hull Internal User Id:\nconst user = hullClient.asUser({ id: \"5718b59b7a85ebf20e000169\" });\n// or just as a string:\nconst user = hullClient.asUser(\"5718b59b7a85ebf20e000169\");\n\n// Constant `user` is an instance of HullClient, scoped to a specific user\n// perform an API call with the user access token\nuser.get(\"/me\").then((me) => {\n  console.log(me);\n});\n\n// store attributes on this user identity\nuser.traits({ foo: \"bar \"})\n\n\n// get the access token value\nuser.token();\n\n// client for an account identified by its domain name\nconst account = hullClient.asAccount({ domain: 'hull.io' });\naccount.traits({ name: \"Hull inc\" });\n```\n\nTo identify a User, you can use an internal Hull `id`, an ID from your own system of records or database that we call `external_id`, an `email` address or `anonymous_id`. See more examples of picking and using different User claims below.\n\nTo identify an account, you can use a Hull `id`, an `external_id` or a `domain`.\n\nUsing `asUser` and `asAccount` methods doesn't make an API call, it just returns scoped instance of `HullClient` which comes with additional methods (see [API REFERENCE](./API.md#scopedhullclient)).\n\nThe second parameter lets you define additional options (JWT claims) passed to the user resolution script which customize how platform identity resolution mechanism will work (see [API REFERENCE](./API.md#asuser)).\n\n### Examples\n\n> Return a `HullClient` scoped to the user identified by its Hull ID. Not lazily created. Needs an existing User.\n\n```js\nhullClient.asUser(userId, { create: false });\n```\n\n> Return a `HullClient` scoped to the user identified by its External ID and email. Lazily created if not present before.\n\n```js\nhullClient.asUser({ external_id: \"dkjf565wd654e\" });\n```\n\n```js\nhullClient.asUser({ email: \"user@email.com\" });\n```\n\n> Return a `HullClient` scoped to the user identified by only by an anonymousId. Lets you start tracking and storing properties from a user before you have a UserID ready for him. Lazily created if [Guest Users](http://www.hull.io/docs/users/guest_users) are enabled\n> When you have a UserId, just pass both to link them.\n\n```js\nhullClient.asUser({ anonymous_id: \"44564-EJVWE-1CE56SE-SDVE879VW8D4\" });\n```\n\n> Return a hull `HullClient` authenticated as the user but with admin privileges\n\n```js\nhullClient.asUser({ email: \"user@email.com\" }, { scopes: [\"admin\"] });\n```\n\nFind detailed description of those claims scoping methods in [API REFERENCE](./API.md#asuser).\n\n## Methods for User or Account scoped instance\n\n```js\nconst externalId = \"dkjf565wd654e\";\nconst anonymousId = \"44564-EJVWE-1CE56SE-SDVE879VW8D4\";\n\nconst user = client.asUser({ external_id: externalId, anonymous_id: anonymousId });\n```\n\nWhen you do this, you get a new client that has a different behaviour. It's now behaving as a User would. It means it does API calls as a user and has new methods to track and store properties\n\n### Tracking User Events\n\nStores a new event.\n\n```js\nconst user = hullClient.asUser({ email: \"foo@hull.io\" });\nuser.track(\"new support ticket\", {\n  messages: 3,\n  priority: \"high\"\n}, {\n  source: \"zendesk\",\n  type: 'ticket',\n  event_id: 'uuid1234' // Pass a unique ID to ensure event de-duplication\n  ip: null, // don't store ip - it's a server call\n  referer: null, // don't store referer - it's a server call\n  created_at: '2013-02-08 09:30:26.123+07:00' // ISO 8601. moment.js does it very well\n});\n```\n\nFind detailed information about `track` method in [API REFERENCE](./API.md#track).\n\n### Updating User or Account Attributes\n\nStores Attributes on the user:\n\n```js\nuser.traits({\n  opened_tickets: 12\n}, { source: \"zendesk\" });\n// 'source' is optional. Will store the traits grouped under the source name.\n\n// Alternatively, you can send properties for multiple groups with the flat syntax:\nuser.traits({ \"zendesk/opened_tickets\": 12, \"clearbit/name\": \"foo\" });\n```\n\nFind detailed information about `traits` method in [API REFERENCE](./API.md#traits).\n\n## Utils\n\n`HullClient` comes with a set of utilities to simplify working with Hull REST API:\n\n- `util.settings.update` - allows to update only part of connector settings, [see details](./API.md#settingsupdate)\n- `util.properties.get` - parse list of attributes stored on organization level, [see details](./API.md#propertiesget)\n- `util.traits.group` - allows to transform a flat list of attributes to nested object, [see details](./API.md#traitsgroup)\n\n## Logging\n\n`HullClient` comes with a built-in logger utility exposed as `hullClient.logger`  which emits a standardised output that captures the context of the `HullClient` instance (initial constructor configuration, additional User or Account claims etc.)\n\nThe Logger comes in two flavors, `HullClient.logger.xxx` and `hullClient.logger.xxx` - The first one is a generic logger, the second is contextual to the current instance of `HullClient` and captures the ship id organization and current User or Account identifiers.\n\nThe Logger is implemented with [Winston](https://github.com/winstonjs/winston). By default it comes with console stdout/stderr transport which will show logs from `info` level.\n\n```js\nHullClient.logger.info(\"message\", { object }); // Class logging method,\nhullClient.logger.info(\"message\", { object }); // Instance logging method, adds Ship ID and Organization to Context. Use if available.\n\n// Debug works the same way but by default they won't be logged, adjust the log level in following way:\nHull.logger.transports.console.level = \"debug\";\n\nHullClient.logger.debug(\"message\", { object }); // Class logging method,\nhullClient.logger.debug(\"message\", { object });\n\n// You can add more logging destinations like this:\nconst winstonSlacker = require(\"winston-slacker\");\nHullClient.logger.add(winstonSlacker,  { ... });\n```\n\n### Logs scoped to specific User or Account\n\nYou can also have a user or account scoped logger. Claims used in `asUser` and `asAccount` methods will be added to the log context.\n\n```js\nconst user = hullClient.asUser({ email: \"john@coltrane.com\" });\nuser.logger.info(\"hello\");\n\n// it will produce following log line:\n{\"context\":{\"organization\":\"xxx.hullapp.io\",\"id\":\"5aafb6ccc32b617846000001\",\"user_email\":\"john@coltrane.com\"},\"level\":\"info\",\"message\":\"hello\"}\n```\n\n### Setting a requestId in the logs context\n\nYou can decorate all your logs context with a `request_id` which allows you to group all logs related to a particular request or transaction.\n\nThis identifier can be passed a `requestId` param at the initialization of the Client.\n\n```js\nconst client = new Hull({\n  organization: \"xxx.hullapp.io\",\n  id: \"5aafb6ccc32b617846000001\",\n  secret: \"change-me-please\",\n  requestId: \"123\"\n});\n\nclient.logger.info(\"hello\");\n```\n\nwill log the following line\n\n```js\n{\"context\":{\"organization\":\"193a8881.hullapp.io\",\"id\":\"59e99ec13cd60e5c9d000037\",\"request_id\":\"123\"},\"level\":\"info\",\"message\":\"hello\"}\n```\n","readmeFilename":"README.md","gitHead":"6ef588956e9841055ed1c564a8ce0a26af3ddadd","_id":"hull-client@2.0.0-beta.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"michaloo","email":"michal@raczka.me"},"dist":{"integrity":"sha512-rYBh9NfJkRtEI2vn+I5ijWhYUDiPYN7A9ORcIsnTKtTThSmOP59Nig4TLbTaN/P/bybTtaqpD53JSnqhRX+SHg==","shasum":"0fe83f5bef150142ad9a5b88596dc33dcc6e3269","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-2.0.0-beta.3.tgz","fileCount":378,"unpackedSize":6223443,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFjwfCRA9TVsSAnZWagAA1WYP/iqrJFs/Ak6Iot1m4hkA\nJftImz1siwNdH6ZefTtyNgYvY8u3Axwfu+xZVca0Isox6k7o8u0EuyNdGD89\nZRTWa/FqARN2iMIhRRu8S4YuCCl6wvXxZUtyQD/cvOk6PQ0anXN7MsiTmfjG\n0JsdGrVG0FPeeEY8Vak2lA1ePsOVNvF8L2yb3CLNw2L2Tp9C5fPUPy3nMGpC\nzDsJDmIOAdr0zJvhGjBuwl013K6r05+vzRvXoP4a/EJCP1RCTR2vE+6B9xkT\neteCTRsYKtS6hn0fbYD4X0/QarCprOHZNuGVXULJWdYj8lAXoQ5l0AnZlIUh\nSHwSHPMm1fpOQdJeRtDgWhOj44VvKX7ZdEIZamHrPjuqaLtT7gJYMvv/mBgO\nvga18lYjT7qTNg8BOnG6hnsaanwn8+QKdCI//CFH3h8chkNkRfHAAA0RR/sX\nSlUHjk0jLZyo34gUAaZ9Owwq4oNeBKuOgpudrQYsrttgJssaYU2Y2Gy9Ly0I\nC5wqeeTjWpRaWd80x1BUeyWD0+HAXY8ALTAXJC4UCMukhaXF/FfPmKqW7GeE\nvvzF40WpjNi7jMpCvVzWimYbqhEsiGP0sZcf+oeLlIffyQJftQ8EUml3SV8+\nV/p0W8weE1ewr1wwIMDUfTXBjYelnAIY6P1RcXffCZcttEmSciQWApvEsr5Y\ngosS\r\n=Ccpj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChDJtYSZ2SBbR2jtgSG4pBiVLSrzrxVT9NErbSpkJdmwIgFjUxdk7We36DRQ8K604rAzQW5tId8X8ulEviMWYr9mo="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client_2.0.0-beta.3_1528183838365_0.7786829948661751"},"_hasShrinkwrap":false},"2.0.0":{"name":"hull-client","version":"2.0.0","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:unit && npm run test:integration","test:lint":"eslint src && documentation lint src","test:dependencies":"npm outdated --depth=0","test:unit":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/unit/** ./test/unit/*","test:integration":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/integration/* ./test/integration/**","test:flow":"flow check","clean":"rimraf lib","build":"npm run clean && babel src -d lib && npm run documentation","prepublish":"npm run build","documentation":"documentation build src -f md -o API.md --access public --markdownToc=false --config documentation.yml","precommit":"npm run documentation && git add API.md"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.17.5","superagent":"^3.8.3","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.23.0","babel-cli":"^6.24.1","babel-eslint":"^8.2.2","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-register":"^6.26.0","bluebird":"^3.5.1","chai":"^4.1.2","documentation":"^6.1.0","eslint":"^4.18.2","eslint-config-airbnb-base":"^12.1.0","eslint-plugin-flowtype":"^2.46.1","eslint-plugin-flowtype-errors":"^3.5.1","eslint-plugin-import":"^2.9.0","flow-bin":"^0.71.0","flow-typed":"^2.4.0","husky":"^0.14.3","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^5.0.4","rimraf":"^2.6.2","sinon":"^4.4.5","sinon-chai":"^3.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"0e971ef5123a0df1f7d3deca83fb8da2b98eb74b","_id":"hull-client@2.0.0","_npmVersion":"6.1.0","_nodeVersion":"8.11.3","_npmUser":{"name":"michaloo","email":"michal@raczka.me"},"dist":{"integrity":"sha512-S6w66rAoHz4a8GLrBZAyDE1+1u/pJT8C6Ujpmr4XyhMcKWadLAt8e3qsOC9Vj5a+i7vhs2xIIi6PVrUx3K4zlg==","shasum":"0ce20d053d84a5bcc4e5ad3b041bc17111771e90","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-2.0.0.tgz","fileCount":36,"unpackedSize":336770,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbI584CRA9TVsSAnZWagAAvVAP/3wUKjqbV6TU7jBtphhK\n3+X12Wm1oYpr6yJCLnnUMJyJdc529AuE/loP0Dm/fvkuTXCSIsouVmu/rPuZ\nH8cBjLkloI3j4pnw0mAK9xhXJJ0VNnHTcPV+KR6WHYtq1MhOWIxvmu+T+rQR\n+djbn8A1bx4E/wWodJSQEAk4bp4AedduaCzgDpg+LFr0XNmNqBnJAUIRtXrh\negZRHxRDbHJBhHd9QdgGLcTinzhepOX4gv0XL4lbx71ehSLBJc4AMUcNhYIt\nWzrDhiFWI65jjeNbetIFj62PiAojncxTPegXNGjXZfu8rOqyd3H4VjKcB/cg\nLM8zPkGdmYJwdaTafnvvKT2pirubbdwkzBtLExaWu+iU/ts0WDTT1lsfKc3P\n6tjurTC/nnVVtrRpFrVbW8m2YgW1d1iBFIAhNFezZoweEbl6yB9yau63uMEk\nOA/9gAuODkHIJewLKk9X0552AZWLFKP5XLKWGCxBWY24WrL/2+JDbyJkUHbr\nWBYAKoI8atLhM+4jukKTCGh0xaSqW1PHgGlCEXKtiWeCIEH98aqvyeREJstL\n6EhRiF308xlbrZdwf8enBNtsM1IA/GTVdm/xuURPoL9VHzbsJEHlvkGI1HY4\nHOHDZ23GGGzhjWqQ4cFfvj+Tq7jkYvesqCDIBGjn0UqPILXt83x+75nZ71AX\npF0P\r\n=SsIm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICjdWtJ01vofgEyxlbbnwCQPC5dU4B4NIug0/VocK9WlAiEAzXY29t60UwcMydrBfYLeWgnRdiQrII/fYvVpyDWnniQ="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client_2.0.0_1529061174587_0.35199510612136"},"_hasShrinkwrap":false},"2.0.1":{"name":"hull-client","version":"2.0.1","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:unit && npm run test:integration","test:lint":"eslint src && documentation lint src","test:dependencies":"npm outdated --depth=0","test:unit":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/unit/** ./test/unit/*","test:integration":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/integration/* ./test/integration/**","test:flow":"flow check","clean":"rimraf lib","build":"npm run clean && babel src -d lib && npm run documentation","prepublish":"npm run build","documentation":"documentation build src -f md -o API.md --access public --markdownToc=false --config documentation.yml","precommit":"npm run documentation && git add API.md"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.17.5","superagent":"^3.8.3","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.23.0","babel-cli":"^6.24.1","babel-eslint":"^8.2.2","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-register":"^6.26.0","bluebird":"^3.5.1","chai":"^4.1.2","documentation":"^6.1.0","eslint":"^4.18.2","eslint-config-airbnb-base":"^12.1.0","eslint-plugin-flowtype":"^2.46.1","eslint-plugin-flowtype-errors":"^3.5.1","eslint-plugin-import":"^2.9.0","flow-bin":"^0.71.0","flow-typed":"^2.4.0","husky":"^0.14.3","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^5.0.4","rimraf":"^2.6.2","sinon":"^4.4.5","sinon-chai":"^3.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"807a94c05e8e70512758256a19320f73812b7a1a","_id":"hull-client@2.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"michaloo","email":"michal@raczka.me"},"dist":{"integrity":"sha512-nbuD0ZVjE1b+DWbreyyvoyzaNaxSmo48cJEEEoeiWjsNejx8QTW9mKc4yTCx6R4embL5TrcrbkRSqfcrrqYTsA==","shasum":"200f7bc04f1e590082150d467499202c9507af13","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-2.0.1.tgz","fileCount":36,"unpackedSize":337522,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbtIrZCRA9TVsSAnZWagAA2HwP/0rLkBB3lRBL8BH5YsL5\nxYWOuuJlkuIRU+2xF1xRKHgmILAIbYXGoSfM5yzp8h1LKywvauRRorzx74yz\neMXISZpRcOIYPsRdqsVdahVzXnY66ZQYSBynSjl34VbRfYJe/tmzCw4enSdb\nvr7mh/u1sZwlzirlrudwORRGjIWmN6Rve2WPCehMtZePc67Un+vqj0/oldf8\noo7WUDS9vY9cbB9kFD49fKq8BbkvoxF8VosbnRCrtqG/dsbK4KA/HhQ7SNO5\n/qkr3oDi86B+vwGxD0j70VuE2PBQ9Xf5+9z4bi/964kElaPv7IkHfFB9TXN9\naMldykJrJkFkrniV9MErefdXWXKNOVmP8Ko/Wet4GCjEOJxWBU91kvtOUxNr\nki1hl+Gx2rAkWdwlKoCsZF/ENIUUaDVi4LTycnjw/LIZz1oKaGnKvE2WWOz7\nk0sOKERCXpwpDfkGFTbruMaIrE5Xw6KPfmVC2dTss3nCrv5oFNtw2hakNk0R\ne7SHWmOjXx9mvK+Bqjn8/4SjN+Ox+2bfSUSZ8LvIQuiFTs+14nJ+MohCP/Xn\nQ+OXfBKkgqtaP1t870mNUrKTrr1YH/uLiYI/3qua5ivDTWDaZXmvdINil8re\n6JKpE+j+37yuqf57OZwBChEubfc9H72XYUT/vSw3AYIEQRltm2oAeu8dBRRc\nj2mr\r\n=njQL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGX73/oyok/FZQzcMh9U/LdCCNxfY0Nv36OFQ2HUPeBcAiAGkf9CjZuJQEr61Dd0HP2HkVoINc3rSbwB1dwcox3TLA=="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client_2.0.1_1538558680556_0.16989550504587236"},"_hasShrinkwrap":false},"2.0.2":{"name":"hull-client","version":"2.0.2","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:unit && npm run test:integration","test:lint":"eslint src && documentation lint src","test:dependencies":"npm outdated --depth=0","test:unit":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/unit/** ./test/unit/*","test:integration":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/integration/* ./test/integration/**","test:flow":"flow check","clean":"rimraf lib","build":"npm run clean && babel src -d lib && npm run documentation","prepublish":"npm run build","documentation":"documentation build src -f md -o API.md --access public --markdownToc=false --config documentation.yml","precommit":"npm run documentation && git add API.md"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.17.5","superagent":"^3.8.3","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.23.0","babel-cli":"^6.24.1","babel-eslint":"^8.2.2","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-register":"^6.26.0","bluebird":"^3.5.1","chai":"^4.1.2","documentation":"^6.1.0","eslint":"^4.18.2","eslint-config-airbnb-base":"^12.1.0","eslint-plugin-flowtype":"^2.46.1","eslint-plugin-flowtype-errors":"^3.5.1","eslint-plugin-import":"^2.9.0","flow-bin":"^0.71.0","flow-typed":"^2.4.0","husky":"^0.14.3","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^5.0.4","rimraf":"^2.6.2","sinon":"^4.4.5","sinon-chai":"^3.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"dc3e7e0721413461ecc1b7fa30a146fe1cbef28f","_id":"hull-client@2.0.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"sbellity","email":"sbellity@gmail.com"},"dist":{"integrity":"sha512-C2Qm1WlJUF0Oz0CbLl5yHMrNecOHzi4KfD5uSAH13CgaYpjxry5BS92YJCg17H6V7DDxgqf0gXzFWOfXFoISBg==","shasum":"9d9f7335f17e9fd46701fba6a8daab26d7b4cede","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-2.0.2.tgz","fileCount":36,"unpackedSize":549031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJci1tcCRA9TVsSAnZWagAA90cQAIflYoef4ZCCWWvHEXum\nhnB8+pWMAD2nkBwzFRq2NgycHA+hcZ/DVa+PcPb7snNzHqv1L3HqoErVVv/M\nwZ7J/v7vUF9VkJ0nZT1slgwDDwkMUaynkgN6U5VJHebKKLWsgMRegTZ8d+WW\nHoJyYj4+X8tUzz/g9YNmYl5KyLREWcJDycnyvnn2/kyNX21jGFV/6kwYLILu\nOtxK4bG68rH0ZjfECtiSqLLau+vAblB7UoZBDTjIb+PKOVa+UE1PTz+EdqOv\nRHdauh6BN9UVhsnCC7rCUXi6kL8tKpcPXK1gsCX8rI+zKYN1KKZ9GnAcsxQH\n11FhnC/V0RfXgwtYdMIxiudNO+YjwDivhY9pmovbfx/SitL8SHBxthzF5WCH\nULDeeAcGQQZ/dQE2ExWylosZq3W1crW/tMqjATVmmsxszAnLsQ8mponQKgs/\n5owthQO+++892JZMEm0WntdOQvhJpb7+S4MXVezVkilMEZtHFuyDf4dlKTzB\nY7L7FxE8myp69iu3ipGhg+98oxorC8+HVmfT7G/koLJNrKtECf8UhgVO4Y8U\nsWXPR9zNlnCR7q7RcBeFsZdLNDcN3K14XeXW8X8gzFBllb5DOZmznYG6BOdd\niXO3FKaathptNftFBOVbwuu+xrRL4jJmyc+ZpMKUDdoyLh8eZvqgSHoyBzrC\nKrgo\r\n=DX7N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfwbxMrfT+YNZTKfN2yyURkqLzIYpdZf1B8Y73PjTxxwIgO4XOSvTgErbkdgJfAINnjJDJW3C83GIv+oaUGn/kKCs="}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client_2.0.2_1552636763367_0.8585924429462772"},"_hasShrinkwrap":false},"1.2.3":{"name":"hull-client","version":"1.2.3","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:unit && npm run test:integration","test:lint":"eslint src && documentation lint src","test:dependencies":"npm outdated --depth=0","test:unit":"NODE_ENV=test mocha --require babel-register --exit -R spec ./tests/unit/** ./test/unit/*","test:integration":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/integration/* ./test/integration/**","test:flow":"flow check","clean":"rimraf lib","build":"npm run clean && babel src -d lib && npm run documentation","prepublish":"npm run build","documentation":"documentation build src -f md -o API.md --access public --markdownToc=false","precommit":"npm run documentation && git add API.md"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.17.5","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.23.0","babel-cli":"^6.24.1","babel-eslint":"^8.2.2","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-register":"^6.26.0","bluebird":"^3.5.1","chai":"^4.1.2","documentation":"^6.1.0","eslint":"^4.18.2","eslint-config-airbnb-base":"^12.1.0","eslint-plugin-flowtype":"^2.46.1","eslint-plugin-flowtype-errors":"^3.5.1","eslint-plugin-import":"^2.9.0","flow-bin":"^0.67.1","husky":"^0.14.3","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^5.0.4","rimraf":"^2.6.2","sinon":"^4.4.5","sinon-chai":"^3.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"a31a4ebda3314df467b0db2e2aef0d5957f85ddb","_id":"hull-client@1.2.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"sbellity","email":"sbellity@gmail.com"},"dist":{"integrity":"sha512-PAEFa+OQmtFnasqfykvgf8Tjh1r/Z9jz1Zz1DUmqIJteviNK5exh6H/3/jk+tCp0mVkv4/Qp0EyDUGm8JrtLgg==","shasum":"6bd0c33def81a1e8d62f725031582249b1b885aa","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.2.3.tgz","fileCount":30,"unpackedSize":315952,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJci2Y/CRA9TVsSAnZWagAA0L4P/jEgKtyZqgsY+g01YPB9\nJQrx5EzbtkfWb9WZnanIcx1U+9SxrAuLdVenzPjjQemMivAUufXpsdO96l+m\nM8kAZElaQnrqvoqQ3W1Y0Hg8XRgVHv4cf89x50HsH49WXdfdR3Z6kznTadhI\nm+/RRaKASBX2V2ePWsviEWVPyVZf7kNsCMNTQOXuCZIYNK9ciJhXAYY03KQ/\nJ6++R0jG02vSh6/GzbfIABhC+FxKT0KoBZLC/ABqDdwn5FcElYUKb9ohQjhv\n/Hnh1+etYv418aGQELE5kFxR+y7TQGd/SNxNHjqwfS31QU/QEfEpXMhh5rCB\nMxUgFBs9HymnDRJEy26oXrCmQBc+2AuWVguQ/QAfsdelglQjSTgwRQKI4aaR\nLR2lX9Z9rEx2TrkRHzh8mNZeqyWsaDuJyjhyixeQNmpYR5cGwbcKWHY2JFo2\nf0ycuHyFJ/T6PisD9qdLV414+Qi04dA0l1KETDBI1v/+6jZkfhYOyQymrfRr\nd0R+RyOvAh6aTJ3xAo4mMPeG/+Yo1qQ39T1Zmlu++YOHvs5nfeGEwTeNp8Bo\nHyULhwaQ5nVO+bcoGBu06hkktWas9he04Sz7eTOoPG33DjoH6uVCBODastLw\ni/CHv3Vvcmqm6bESrr1JhjZpz2yW6FgJ1j3mK509b1W2eT/N/ikkCdV2OHzk\nYEsP\r\n=aAhf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD568pS+oW4xf5CVj2NwpUMS3M0YKhgIUhoDsyiIwL+bgIhAOZhIFaY3Ohy2ms8NPol294cEr5gvtpthQMy/ogpdk/L"}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client_1.2.3_1552639550391_0.4751363283881145"},"_hasShrinkwrap":false},"2.0.4":{"name":"hull-client","version":"2.0.4","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:unit && npm run test:integration","test:lint":"eslint src && documentation lint src","test:dependencies":"npm outdated --depth=0","test:unit":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/unit/** ./test/unit/*","test:integration":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/integration/* ./test/integration/**","test:flow":"flow check","clean":"rimraf lib","build":"npm run clean && babel src -d lib && npm run documentation","prepublish":"npm run build","documentation":"documentation build src -f md -o API.md --access public --markdownToc=false --config documentation.yml","precommit":"npm run documentation && git add API.md"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.17.5","superagent":"^3.8.3","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.23.0","babel-cli":"^6.24.1","babel-eslint":"^8.2.2","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-register":"^6.26.0","bluebird":"^3.5.1","chai":"^4.1.2","documentation":"^6.1.0","eslint":"^4.18.2","eslint-config-airbnb-base":"^12.1.0","eslint-plugin-flowtype":"^2.46.1","eslint-plugin-flowtype-errors":"^3.5.1","eslint-plugin-import":"^2.9.0","flow-bin":"^0.71.0","flow-typed":"^2.4.0","husky":"^0.14.3","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^5.0.4","rimraf":"^2.6.2","sinon":"^4.4.5","sinon-chai":"^3.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"072df0512abf72e0f93fc5c3b1148b0ae1ada0a1","_id":"hull-client@2.0.4","_nodeVersion":"8.15.1","_npmVersion":"6.10.3","dist":{"integrity":"sha512-7LSVKXdSbCOgUJGEcTIvq5Yamsq1CgQi6Moe1gCrE/l7uC6TX1YFQd1UWRarjU7gI6lia2zmBvZl9fsE7kwpCQ==","shasum":"881ec86b19e9515220a87f9e7a8492ba97886637","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-2.0.4.tgz","fileCount":14,"unpackedSize":76869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgeVXCRA9TVsSAnZWagAAqBEP/0MOHeg7OO4v+J2mEjee\nVCTitw+Q6uyGFiR+duIAsuiwpqhIDUp0DuIsnhZn8fuZYOA1Uzpe8TvSg4CJ\nyj/xNcWQKb+YN0K1xba0M+CZNLkF8fp//juWrKttscE/32TSG54dbPoFJYP/\nrkkkgD+QO8/LHYIYowctDA5GoGyyA2TWHskG8UJglBb/HUSbXlgZ20GPSu0W\nb2fxRwWSIXC1tysMLJmx7q/yeHkukyNk5BnVVMtAwLIeKlmChHf1a+zVJ53H\n2L7xSBIIS7rJkabakXvsvzCSb0Yz5U+Gvw+LC3SgcNZB41imLf5gvLoAe7wx\ny9gss1gWqUbELberVJsBys4G81+Cgbiiea898G3GMZDVonFzZXbtr/pcY05A\nTRXMn+etrZt1xshUhjrAMXRdlitGbP2PK8SBFxIqGyq5b7M5ucHN+0Bi1NNm\nsOs2/5gM0+rPOH3BBKlJehuyFJEljn+gU0oBsgRn4N5qhRjMKjkZgAyPOrS1\nWxjbF0kG6quOl/sZwaFsVLIx47nWDRaHGQWZCd+eyeD9SddjnfN3RM09f+G/\n5I8SoXNgrWVNRUUa96ZqLZkxjyScuhlmRkpoBZzPaKM//cu0zKYU8sKL4+Kq\nfwHm0OCKqirzvAl1aBQ6+LZi6ab2nXmzWRNAfcEMDfESlQb6U/dEZPybqqd5\n93Qw\r\n=DhWn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIGjWEIEquRA24rRa34/u5fj0xadguyD5s+VQ13xFShwIhAKd01kb1ooGmNP0iosMEYE/UThEPi+NEIptMp/cmXEbl"}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"_npmUser":{"name":"sbellity","email":"sbellity@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client_2.0.4_1568793943248_0.08364171839026424"},"_hasShrinkwrap":false},"1.2.4":{"name":"hull-client","version":"1.2.4","description":"A barebones Node.js API client for hull.io","main":"lib","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"homepage":"https://github.com/hull/hull-client-node","bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"license":"MIT","scripts":{"test":"npm run test:lint && npm run test:flow && npm run test:unit && npm run test:integration","test:lint":"eslint src && documentation lint src","test:dependencies":"npm outdated --depth=0","test:unit":"NODE_ENV=test mocha --require babel-register --exit -R spec ./tests/unit/** ./test/unit/*","test:integration":"NODE_ENV=test mocha --require babel-register --exit -R spec ./test/integration/* ./test/integration/**","test:flow":"flow check","clean":"rimraf lib","build":"npm run clean && babel src -d lib && npm run documentation","prepublish":"npm run build","documentation":"documentation build src -f md -o API.md --access public --markdownToc=false","precommit":"npm run documentation && git add API.md"},"dependencies":{"jwt-simple":"^0.5.0","lodash":"^4.17.5","restler":"^3.4.0","urijs":"^1.18.7","uuid":"^3.0.1","winston":"^2.2.0"},"devDependencies":{"babel":"^6.23.0","babel-cli":"^6.24.1","babel-eslint":"^8.2.2","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-register":"^6.26.0","bluebird":"^3.5.1","chai":"^4.1.2","documentation":"^6.1.0","eslint":"^4.18.2","eslint-config-airbnb-base":"^12.1.0","eslint-plugin-flowtype":"^2.46.1","eslint-plugin-flowtype-errors":"^3.5.1","eslint-plugin-import":"^2.9.0","flow-bin":"^0.67.1","husky":"^0.14.3","isparta":"^4.0.0","minihull":"0.0.7","mkdirp":"^0.5.1","mocha":"^5.0.4","rimraf":"^2.6.2","sinon":"^4.4.5","sinon-chai":"^3.0.0"},"nodeBoilerplateOptions":{"mochaGlobals":["stub","spy","expect"]},"gitHead":"99b3b2034bb43387590327afa1d61e1d34e6729d","_id":"hull-client@1.2.4","_nodeVersion":"8.15.1","_npmVersion":"6.10.3","dist":{"integrity":"sha512-AcON3AsV+1Zecy7gjCrjRiWTMschKbHFFnu2PRko6olNvM19UfkvNKs/1WSZTXc0LW3yuW0w9XfCTn5X+kgKRA==","shasum":"755365c0cdc1ab199f353cecfb9cd8737a387dee","tarball":"https://registry.npmjs.org/hull-client/-/hull-client-1.2.4.tgz","fileCount":12,"unpackedSize":58681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgeahCRA9TVsSAnZWagAAFAYP+wXd39tqvXQvL0l7ub3K\nfpnuu0xDoUBoT9QbM1Ymk5aLL17Rb67ANzj9qTp2EzSNV8AOyvULZ4yMKE7y\n3ricCbynook+Oo78sl6RhkYUm4I6x9McW5cwc78raAsaWESOM63deQkZGrd1\nd7lDJayXteCqf6uMjrCMHEh+PYVXwevAtXGVPUBhvBsLSFYZC+XAaxME87tz\n5eZLMv4qyk8E+3L5Rsp/2KMgVVLJd20DfVNRZC8gesykoCdnEXK/BtZp/z2n\nIl0t00DzSPPT3m8IeZsUEWRUKhnDsyGjoUvu9S7KEkDDcuraMkswSnApVBKv\nx4N6KCUghFZnAdro31x6kFTzmzTGqSqnevHWUWrvf0sONMjO5T9NxUCOdrPa\nCSHAI7s58uEarmNwxKE08S17cvxbJohOXYCETKKGNQ0lihH/x/VPEGdMwIfv\nnAOUVIImzrpRnNNv9ianlBngXZpOr5mXQLxdPreFf3kPDU07VrpJVmbBb8Bc\n8/ggz3Ld21FSOQC+FTv6R8TlyjQhLjsRIEL2urLykTTwbBdBugdU+2drVueR\nBXsHvguOK3BfLlTQSc3ruDrqRlkAeahULj+5dmsNNpxRQvcJAo7cNLFvtnkO\nMx3oITN0+/YosExUfotsYsUnprsnrXEaL1VmvUbip1/Swj95wwWMj/giHXlA\nqlGH\r\n=QgZj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtlnZmR6FyNi1bTDR3KLmLv13vl57pQ7JZR8u3I9uKpQIhAKMtwVpms4vJaaQ1ENSZC/AGmVD5FKDjhRCMOjCfVmDD"}]},"maintainers":[{"name":"michaloo","email":"michal@raczka.me"},{"name":"rdardour","email":"romain@hull.io"},{"name":"sbellity","email":"sbellity@gmail.com"}],"_npmUser":{"name":"sbellity","email":"sbellity@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hull-client_1.2.4_1568794273143_0.5756600693492833"},"_hasShrinkwrap":false}},"readme":"# Overview\n\n## In this package:\n\n### [Hull Client](#hull)\n\nA low level Hull Platform API client. Refer to it's documentation for more details\n\n```javascript\nconst hullClient = new Hull.Client({ configuration });\n```\n\n## In the hull-node package (which embeds this one):\n\n### [Hull Middleware](https://github.com/hull/hull-node)\n\nA bridge between Hull Client and a NodeJS HTTP application (e.g. express) which initializes context for every HTTP request:\n\n```javascript\napp.use(Hull.Middleware({ configuration }));\n```\n\n### [Hull Connector](https://github.com/hull/hull-node)\n\n\n```javascript\nconst connector = new Hull.Connector({ configuration });\n```\n\nA complete toolkit which is created next to ExpressJS server instance. Includes Hull Middleware and a set of official patterns to build highly scalable and efficient Connectors.\n\n![hull node core components](/docs/assets/hull-node-components.png)\n\n---\n\n# HullClient\n\nThis library makes it easy to interact with the Hull API, track Events and set attributes on Users and Accounts.\n\nCreating a new Hull client is pretty straightforward:\n\n`npm install -s hull-client`\n\n```js\nconst HullClient = require(\"hull-client\");\n\nconst hullClient = new HullClient({\n  id: \"5aafb6ccc32b617846000001\",\n  secret: \"cbo128745o12786345goc12475\",\n  organization: \"xxx.hullapp.io\"\n});\n```\n\nFind all required and optional constructor options in [API REFERENCE](./API.md#hullclient).\n\n## Calling the API\n\nOnce you have instantiated a `HullClient`, you can use one of the `get`, `post`,\n`put`or `del` methods to perform actions of Hull's [HTTP REST API](https://www.hull.io/docs/references/api/).\n\n```js\n// `client.api.get` works too.\nconst params = {};\nhullClient.get(path, params)\n  .then(function(response) {\n    console.log(response);\n  })\n  .catch(function(err) {\n    console.log(err);\n  });\n```\n\nThe first parameter is the path, the second is the set of parameters you want\nto send with the request. They all return Promises so you can use the `.then()` syntax.\n\nFind detailed description of those api methods in [API REFERENCE](./API.md#api).\n\n## Scoping HullClient to User or Account identity\n\nA common use case is to interact with the API identified as a User or Account. To get a scoped HullClient use `asUser` or `asAccount` methods just like below:\n\n```js\n// if you have a user id from your database, use the `external_id` field\nconst user = hullClient.asUser({ external_id: \"dkjf565wd654e\" });\n\n// if you have a Hull Internal User Id:\nconst user = hullClient.asUser({ id: \"5718b59b7a85ebf20e000169\" });\n// or just as a string:\nconst user = hullClient.asUser(\"5718b59b7a85ebf20e000169\");\n\n// Constant `user` is an instance of HullClient, scoped to a specific user\n// perform an API call with the user access token\nuser.get(\"/me\").then((me) => {\n  console.log(me);\n});\n\n// store attributes on this user identity\nuser.traits({ foo: \"bar \"})\n\n\n// get the access token value\nuser.token();\n\n// client for an account identified by its domain name\nconst account = hullClient.asAccount({ domain: 'hull.io' });\naccount.traits({ name: \"Hull inc\" });\n```\n\nTo identify a User, you can use an internal Hull `id`, an ID from your own system of records or database that we call `external_id`, an `email` address or `anonymous_id`. See more examples of picking and using different User claims below.\n\nTo identify an account, you can use a Hull `id`, an `external_id` or a `domain`.\n\nUsing `asUser` and `asAccount` methods doesn't make an API call, it just returns scoped instance of `HullClient` which comes with additional methods (see [API REFERENCE](./API.md#scopedhullclient)).\n\nThe second parameter lets you define additional options (JWT claims) passed to the user resolution script which customize how platform identity resolution mechanism will work (see [API REFERENCE](./API.md#asuser)).\n\n### Examples\n\n> Return a `HullClient` scoped to the user identified by its Hull ID. Not lazily created. Needs an existing User.\n\n```js\nhullClient.asUser(userId, { create: false });\n```\n\n> Return a `HullClient` scoped to the user identified by its External ID and email. Lazily created if not present before.\n\n```js\nhullClient.asUser({ external_id: \"dkjf565wd654e\" });\n```\n\n```js\nhullClient.asUser({ email: \"user@email.com\" });\n```\n\n> Return a `HullClient` scoped to the user identified by only by an anonymousId. Lets you start tracking and storing properties from a user before you have a UserID ready for him. Lazily created if [Guest Users](http://www.hull.io/docs/users/guest_users) are enabled\n> When you have a UserId, just pass both to link them.\n\n```js\nhullClient.asUser({ anonymous_id: \"44564-EJVWE-1CE56SE-SDVE879VW8D4\" });\n```\n\n> Return a hull `HullClient` authenticated as the user but with admin privileges\n\n```js\nhullClient.asUser({ email: \"user@email.com\" }, { scopes: [\"admin\"] });\n```\n\nFind detailed description of those claims scoping methods in [API REFERENCE](./API.md#asuser).\n\n## Methods for User or Account scoped instance\n\n```js\nconst externalId = \"dkjf565wd654e\";\nconst anonymousId = \"44564-EJVWE-1CE56SE-SDVE879VW8D4\";\n\nconst user = client.asUser({ external_id: externalId, anonymous_id: anonymousId });\n```\n\nWhen you do this, you get a new client that has a different behaviour. It's now behaving as a User would. It means it does API calls as a user and has new methods to track and store properties\n\n### Tracking User Events\n\nStores a new event.\n\n```js\nconst user = hullClient.asUser({ email: \"foo@hull.io\" });\nuser.track(\"new support ticket\", {\n  messages: 3,\n  priority: \"high\"\n}, {\n  source: \"zendesk\",\n  type: 'ticket',\n  event_id: 'uuid1234' // Pass a unique ID to ensure event de-duplication\n  ip: null, // don't store ip - it's a server call\n  referer: null, // don't store referer - it's a server call\n  created_at: '2013-02-08 09:30:26.123+07:00' // ISO 8601. moment.js does it very well\n});\n```\n\nFind detailed information about `track` method in [API REFERENCE](./API.md#track).\n\n### Updating User or Account Attributes\n\nStores Attributes on the user:\n\n```js\nuser.traits({\n  opened_tickets: 12\n}, { source: \"zendesk\" });\n// 'source' is optional. Will store the traits grouped under the source name.\n\n// Alternatively, you can send properties for multiple groups with the flat syntax:\nuser.traits({ \"zendesk/opened_tickets\": 12, \"clearbit/name\": \"foo\" });\n```\n\nFind detailed information about `traits` method in [API REFERENCE](./API.md#traits).\n\n## Utils\n\n`HullClient` comes with a set of utilities to simplify working with Hull REST API:\n\n- `util.settings.update` - allows to update only part of connector settings, [see details](./API.md#settingsupdate)\n- `util.properties.get` - parse list of attributes stored on organization level, [see details](./API.md#propertiesget)\n- `util.traits.group` - allows to transform a flat list of attributes to nested object, [see details](./API.md#traitsgroup)\n\n## Logging\n\n`HullClient` comes with a built-in logger utility exposed as `hullClient.logger`  which emits a standardised output that captures the context of the `HullClient` instance (initial constructor configuration, additional User or Account claims etc.)\n\nThe Logger comes in two flavors, `HullClient.logger.xxx` and `hullClient.logger.xxx` - The first one is a generic logger, the second is contextual to the current instance of `HullClient` and captures the ship id organization and current User or Account identifiers.\n\nThe Logger is implemented with [Winston](https://github.com/winstonjs/winston). By default it comes with console stdout/stderr transport which will show logs from `info` level.\n\n```js\nHullClient.logger.info(\"message\", { object }); // Class logging method,\nhullClient.logger.info(\"message\", { object }); // Instance logging method, adds Ship ID and Organization to Context. Use if available.\n\n// Debug works the same way but by default they won't be logged, adjust the log level in following way:\nHull.logger.transports.console.level = \"debug\";\n\nHullClient.logger.debug(\"message\", { object }); // Class logging method,\nhullClient.logger.debug(\"message\", { object });\n\n// You can add more logging destinations like this:\nconst winstonSlacker = require(\"winston-slacker\");\nHullClient.logger.add(winstonSlacker,  { ... });\n```\n\n### Logs scoped to specific User or Account\n\nYou can also have a user or account scoped logger. Claims used in `asUser` and `asAccount` methods will be added to the log context.\n\n```js\nconst user = hullClient.asUser({ email: \"john@coltrane.com\" });\nuser.logger.info(\"hello\");\n\n// it will produce following log line:\n{\"context\":{\"organization\":\"xxx.hullapp.io\",\"id\":\"5aafb6ccc32b617846000001\",\"user_email\":\"john@coltrane.com\"},\"level\":\"info\",\"message\":\"hello\"}\n```\n\n### Setting a requestId in the logs context\n\nYou can decorate all your logs context with a `request_id` which allows you to group all logs related to a particular request or transaction.\n\nThis identifier can be passed a `requestId` param at the initialization of the Client.\n\n```js\nconst client = new Hull({\n  organization: \"xxx.hullapp.io\",\n  id: \"5aafb6ccc32b617846000001\",\n  secret: \"change-me-please\",\n  requestId: \"123\"\n});\n\nclient.logger.info(\"hello\");\n```\n\nwill log the following line\n\n```js\n{\"context\":{\"organization\":\"193a8881.hullapp.io\",\"id\":\"59e99ec13cd60e5c9d000037\",\"request_id\":\"123\"},\"level\":\"info\",\"message\":\"hello\"}\n```\n","maintainers":[{"email":"romain@unity.fr","name":"rdardour"},{"email":"sbellity@gmail.com","name":"sbellity"},{"email":"mathieu.ravaux@gmail.com","name":"mathieuravaux"},{"email":"louis.jahn@messagebird.com","name":"louis.jahn.hull"}],"time":{"modified":"2022-06-18T23:08:56.984Z","created":"2017-06-20T11:08:50.523Z","1.0.0":"2017-06-20T11:08:50.523Z","1.0.1":"2017-06-20T12:31:03.791Z","1.0.2":"2017-06-20T12:32:16.362Z","1.0.3":"2017-06-20T12:45:23.177Z","1.0.5":"2017-06-21T15:56:20.303Z","1.1.0":"2017-07-18T10:20:16.160Z","1.1.1":"2017-07-21T09:25:04.640Z","1.1.2":"2017-08-17T11:03:48.598Z","1.1.3":"2017-08-25T09:36:17.359Z","1.1.4":"2017-11-27T11:26:18.763Z","1.1.5":"2017-12-11T08:47:10.549Z","1.2.0":"2018-03-19T18:59:28.535Z","1.2.2":"2018-05-18T16:56:54.048Z","2.0.0-beta.1":"2018-05-22T10:10:46.190Z","2.0.0-beta.2":"2018-05-28T14:45:56.843Z","2.0.0-beta.3":"2018-06-05T07:30:38.779Z","2.0.0":"2018-06-15T11:12:54.657Z","2.0.1":"2018-10-03T09:24:40.846Z","2.0.2":"2019-03-15T07:59:23.500Z","1.2.3":"2019-03-15T08:45:50.514Z","2.0.3":"2019-09-18T07:57:44.450Z","2.0.4":"2019-09-18T08:05:43.448Z","1.2.4":"2019-09-18T08:11:13.277Z"},"homepage":"https://github.com/hull/hull-client-node","repository":{"type":"git","url":"git+https://github.com/hull/hull-client-node.git"},"author":{"name":"Romain Dardour","email":"romain@hull.io"},"bugs":{"url":"https://github.com/hull/hull-client-node/issues"},"license":"MIT","readmeFilename":"README.md"}