{"_id":"uport-connect","_rev":"175-9b655e9b2334aa762fef081f1cdd06cd","name":"uport-connect","description":"Library for integrating uPort into your app frontend","dist-tags":{"latest":"1.1.11","next":"1.1.0-rc.5","next-minor":"0.7.5","test":"1.0.3-rc.0","experimental":"1.2.0-experimental2","dev":"1.1.12-dev.0"},"versions":{"0.1.0":{"name":"uport-connect","version":"0.1.0","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.2.1","web3-provider-engine":"^8.0.8"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.20.2","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"c3eef24ab6bf1783ceab40573cdd7965af72427e","_id":"uport-connect@0.1.0","_shasum":"74a8862bfcfe2ae6906f918dcf447f9900b0fdba","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"74a8862bfcfe2ae6906f918dcf447f9900b0fdba","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.1.0.tgz","integrity":"sha512-ZdGbzmdnpYx4nShfLxxjOUiYZkUQOUGSMjFETBeF3AIpsTDkckqJPuglxnfdK/DV8z938Xz98DYF0c5FMxMpyw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYxBwRoTayIobnicaxi4HAa9L4xJvVvpwdbCijFH9eXAIhAOcIG0knT+PMgcoZCU8j3d+FiqoG7w0F/Z2ekfk5MLlT"}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.1.0.tgz_1486138148296_0.16562714101746678"},"directories":{}},"0.2.0":{"name":"uport-connect","version":"0.2.0","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.2.2","web3-provider-engine":"^8.0.8"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"15efdd65e1d79379a0390186aefea93c8079ede7","_id":"uport-connect@0.2.0","_shasum":"c172293c43c13ef511dc4e2d40aa263a96eff74f","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"c172293c43c13ef511dc4e2d40aa263a96eff74f","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.2.0.tgz","integrity":"sha512-OwrC9llGwY23Itwv54Rtg18gUB+o9B/BrFpcQ7Xc0vnZ50+tfG82c1TYg5njD3nlBRuSRO1oPZ+4MOJYCLu6IQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC/JjZ+2hWK4eKd7bXzF/rW/al1bRHd4qJgg0OuATApUAiEA8/3oIOV07lRgf3iakuVsrvL5nkC7ph5nRJ7frVcYnCU="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.2.0.tgz_1486231471388_0.47605069843120873"},"directories":{}},"0.3.0":{"name":"uport-connect","version":"0.3.0","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.2.2","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"6383971bad864ef283439be2ba0d2c4d3a332568","_id":"uport-connect@0.3.0","_shasum":"aa4646b92bd616c3aab71493475f31c439ba44a3","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"aa4646b92bd616c3aab71493475f31c439ba44a3","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.3.0.tgz","integrity":"sha512-DqvWFmPgTzjOaasADifdcKLFfy4/x39ATIBy55qL02OSuwktnRvt7lc3CUfnQIJbUPDxPUv/TjBsHlnI8tRPwA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH7jL3Eufrh6gUZaVa0MSDC0J2M0lM9cO2cxqaIipYAOAiBFw9Grf13cvmej5P4VXdCHztMM9KsqQJOk/F7MdFReCg=="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.3.0.tgz_1486338239569_0.637942086905241"},"directories":{}},"0.3.1":{"name":"uport-connect","version":"0.3.1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.2.2","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"2c8d2cd9d7142f0702a8c2875e55195e79133f7b","_id":"uport-connect@0.3.1","_shasum":"e3e0676daf456a776568e89f9337829851e18925","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"e3e0676daf456a776568e89f9337829851e18925","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.3.1.tgz","integrity":"sha512-Edz9n/huTZWbFuUUFpmx1FZiI5pVIPAwsEpqenqmMGrUaJdsvxaxI5DU5IEZ4MHeXJtkoktJ2d1w5dTsAMGA6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtPeSagjNicLRrHwWOGLMaqqIDx5OK6MXJ82UGrneN/gIhAICeENqRIou0EPR/ByRig1S1IlDkuwoygSmx45TY4L87"}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.3.1.tgz_1486405130622_0.8153141192160547"},"directories":{}},"0.3.2":{"name":"uport-connect","version":"0.3.2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.2.2","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"19c726050d07712c90ca5746372ebb7ce1fc4431","_id":"uport-connect@0.3.2","_shasum":"db33cb22f9dfe960ca968539853e04363ec1f001","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"db33cb22f9dfe960ca968539853e04363ec1f001","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.3.2.tgz","integrity":"sha512-L5Go87UQDprParwul/HJS6/33J64rU80w9rbkZeHBJLuNR39974W7Ro1nftNBKoA6g5ATDyIP0RFY1XvwM4Lmw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFoza0/HdMuVJ62zrTR2S66BSxg15fv21hCxzoU0DhrmAiAHN/Lh4Y5ofaD0FXb6RDa6qLrYlNFmja5QHyZtJU6XmA=="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.3.2.tgz_1486433951611_0.7902941803913563"},"directories":{}},"0.4.0":{"name":"uport-connect","version":"0.4.0","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.2.2","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"3712e7194279269f2eb77de379f24669d9193744","_id":"uport-connect@0.4.0","_shasum":"8ab6d106aaf056a57429a04b5f9c07fa29021d3c","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"8ab6d106aaf056a57429a04b5f9c07fa29021d3c","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.4.0.tgz","integrity":"sha512-+rHZHbEvgHmvvEZusjHy8F8Wb3nJOU1rcDShHB/pxlRtDYy8HHIWuOsQti66+1y+zIu+J806V6T+eSl7DNOXoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6XTk/fxEMHGK5Kyha9usFW+zcjLjLKvORyTd1MXY2jAiBQqKLxDB8Amt31eyDx/blUQOH6OWA1+MJ8ub1rgZBqeg=="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/uport-connect-0.4.0.tgz_1486610983722_0.1741044723894447"},"directories":{}},"0.4.1":{"name":"uport-connect","version":"0.4.1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.3.0","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"c52fb4d539fabee7f8c7ac4108c5b92002d77dad","_id":"uport-connect@0.4.1","_shasum":"dc7b4e6864a30fe3139ec1afaea38b4f4f56c0be","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"dc7b4e6864a30fe3139ec1afaea38b4f4f56c0be","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.4.1.tgz","integrity":"sha512-Zl8jh3NyS6yN47uL7wJhfgIZLzHj6dtsjEehZFb1VbkfPhEFtGHSLh64d+i95qPimcIVfza3DffDlXOJx4x3lg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICEwRYYrQKlWg7hVdZtcTTqPDvWIroZLhZYNCPboyWFNAiBEfXUt7G0DhvcqUpW43fumzE8gnwqH3uOJ9+OkM3rIzw=="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/uport-connect-0.4.1.tgz_1486662441945_0.21164388325996697"},"directories":{}},"0.4.2":{"name":"uport-connect","version":"0.4.2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.3.0","uport-lite":"^0.2.2","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"ba6d9d0bc539a1c0428082c43d524e57bc6906fd","_id":"uport-connect@0.4.2","_shasum":"5fcb14c782f461365da29ce88d36e4133789b52b","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"5fcb14c782f461365da29ce88d36e4133789b52b","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.4.2.tgz","integrity":"sha512-reGWbBJ3W6nOSdGo9zUmy9dbTMxEk10+MlqIvqXuS1BLPtXlTd5UYsmXixCOkcQj1ygRoOOXKGSZQBm30SF/SA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKpyEQbgRmMcJNYGbcZBzS21A2ImI1suPB8zFSK8TnMQIhAN6v8kZAH+7+0Ur5D57bart+m/cTLNqDL9rzZrkXBch+"}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.4.2.tgz_1486847825858_0.11799592641182244"},"directories":{}},"0.4.3":{"name":"uport-connect","version":"0.4.3","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.3.1","uport-lite":"^0.2.2","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"b58fbee7339fef2d6642aaba9152d6d4450219f0","_id":"uport-connect@0.4.3","_shasum":"a5ac9643af145875b850c1695ef25b6406e35485","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"a5ac9643af145875b850c1695ef25b6406e35485","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.4.3.tgz","integrity":"sha512-OZbWInxRjdJujLUBES9Tm+xpLMtCKwt8F7yt7DdgTgif5M6zTfrMMSdSoLKQla7Mvct+m5iogdntMxQaEHvqjw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAo7uZSo0XUAYzy2Qv5Noa2i4MRLuybOZPDuzVabMDCbAiBmCpksYOxvfagWB95HBuUAUF2gbYI3qPgQ/muJJoQPog=="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.4.3.tgz_1487126354842_0.6448531888891011"},"directories":{}},"0.4.4":{"name":"uport-connect","version":"0.4.4","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.3.1","uport-lite":"^0.2.2","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"d56c4cf1612f6f0fb4413d8c6cb2207f9e3eac83","_id":"uport-connect@0.4.4","_shasum":"a9315076b91ea014aa412a18e2c999fd57e2791d","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"a9315076b91ea014aa412a18e2c999fd57e2791d","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.4.4.tgz","integrity":"sha512-EeoFbeVjSqGUkeUshQd/FC1FUCnC2djisF0BULvvfDAfZkEKHnJqYj+JzB60gEDpRcmPi1+7l95KPeRSHXHxMg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGw7qzlR7axbOs+VEkh7jYKphax0dNRn+Midd5YtpYEAIhAOYFcXXw1/329VSPshtE/ONz19SxqGUFwXYBftKVKLIq"}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.4.4.tgz_1487132031139_0.619840131374076"},"directories":{}},"0.4.5":{"name":"uport-connect","version":"0.4.5","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.3.1","uport-lite":"^0.2.3","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"eeb4cf5fc5c0f9d2a075c509f9fe1e96305a0adb","_id":"uport-connect@0.4.5","_shasum":"d2f907b8289c4554cb96ce2aa78312129d5c8b29","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"d2f907b8289c4554cb96ce2aa78312129d5c8b29","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.4.5.tgz","integrity":"sha512-K1c3WU9oXQanT61mBiM3yN+CT4BorxGi8mDZcafuFTViiord2X0KYW41jGFB8VhxIHXW6BBsyaevvlIWkRHKBQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1dLn8XP5sgidjx3f2mHsX5WXxFpSvhoDbff6E3QTRswIhAJqTWnULCwsLfNML1n/jbTnNu0WwAGIo5s1R2AdMW9G1"}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.4.5.tgz_1487206495108_0.455131393391639"},"directories":{}},"0.5.0":{"name":"uport-connect","version":"0.5.0","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.3.2","uport-lite":"^0.2.4","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"e98770a81b2732022cc9a8fc50962f580c2767fd","_id":"uport-connect@0.5.0","_shasum":"96e688cc8829950413a92ab0ac3d78b633feb5e5","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"96e688cc8829950413a92ab0ac3d78b633feb5e5","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.5.0.tgz","integrity":"sha512-EpsqI6wlAh7HGwkgA1iGX+OShDD5fd8WFtEgSOAL+2W2kiebzd26xUopTix7B1yNw1GY7+YcaeBieMvYSpHWZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCI+4Cb5CL7H+VQbgSzNqLyAjLkeyzrM1hMJOPZi5IBvgIgC5xLY/yezKxR8y3etU/FyzYkT+a7VZ9mhWIXFoMJhKs="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.5.0.tgz_1487971476437_0.8373686335980892"},"directories":{}},"0.5.1":{"name":"uport-connect","version":"0.5.1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.3.2","uport-lite":"^0.2.4","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"bfba822d5cc82886028d59dc6aef112dcda70761","_id":"uport-connect@0.5.1","_shasum":"08fd575b435df144cf53ee6f46342122b1f6b96b","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"08fd575b435df144cf53ee6f46342122b1f6b96b","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.5.1.tgz","integrity":"sha512-ywiVq1+56WhO9qKAkxdnUO1CU3jXv8pdVcwJC3feVj7Ey4qepIXUmd3qnpe6utJBtCXkSJTlW57FKy9wPzMtmw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvqo3TrglcTPpbaAZ6KuicBNdP7ugRJ9XMPTG1smCT0QIhAJS1H6NBIWcHTgS1/9E1pvQ3z/VXcKzDAAbtJOC2mN26"}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.5.1.tgz_1488129326897_0.5886703890282661"},"directories":{}},"0.5.2":{"name":"uport-connect","version":"0.5.2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.3.2","uport-lite":"^0.2.4","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"9767cf928cccec61f61b62e63ed77ba68a3021a2","_id":"uport-connect@0.5.2","_shasum":"1b4cd28892b5f4dcedf9ff5c6cada4f2e70fe064","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"1b4cd28892b5f4dcedf9ff5c6cada4f2e70fe064","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.5.2.tgz","integrity":"sha512-9Sg1Wgp0MEPbsdvPZZd3+0opNQJXDsZYSwwf6BHRNnxIR+DzZzPIEdeZkCHE6BCKTI61J0oQ43r9075T9ZaPVQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFGCE4bxo3H63yzKMzoTEhJF6Fn4LCyLYRMTjN0lOO9sAiEA/dGNudT55rZIeKNOIrJ5F/vDB9OESNpDqnwv7scrrYE="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.5.2.tgz_1488213448852_0.2140019335784018"},"directories":{}},"0.5.3":{"name":"uport-connect","version":"0.5.3","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.3.2","uport-lite":"^0.2.4","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"730166d0ae5d4e15085f460bcce11b826c61ab3d","_id":"uport-connect@0.5.3","_shasum":"a922151d9f42e25a5990dda1308a8aea239a1579","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"a922151d9f42e25a5990dda1308a8aea239a1579","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.5.3.tgz","integrity":"sha512-1CA7IUsUnJiN7zWqCwASt6LmeNEGS5Q6YnGOxivT+xEgZmKQPmbTpzwThsFJV7rsyTjsUvR48OrKEbPJXvqpKg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFYvXzY4TpADfjLeRNefZAIobMvwL0tW7B/+YvXeqEL+AiEA0pQJNh5YW2g4aFzywmkMLxxFOHCQRtWZLKZjtP259lc="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/uport-connect-0.5.3.tgz_1488993519754_0.9196209015790373"},"directories":{}},"0.5.4":{"name":"uport-connect","version":"0.5.4","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.3.3","uport-lite":"^0.2.4","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"910b78779d49be624e617c2395e12fc68866559c","_id":"uport-connect@0.5.4","_shasum":"003cf634befcd115b9dba84a0bc75076c284d19c","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"003cf634befcd115b9dba84a0bc75076c284d19c","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.5.4.tgz","integrity":"sha512-0SuUa+1la+dNJEC4EJ/LmVlgi7xq/MS2AuFMh1g/WdpDwfNn+7t7k8dujykRpKOX2Oz6iu+ZTsB4QY4HD+uWUw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0yj84imkrANhO4UkOkSVkjpPEPTIGGf6LVnNUSBxUKQIgaGdXnFHalxI702QH6Sw6ZUUQ+XLDg6l0k5prrVc5yK0="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/uport-connect-0.5.4.tgz_1490886488973_0.06579044787213206"},"directories":{}},"0.5.5":{"name":"uport-connect","version":"0.5.5","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.3.3","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"cb830714789a1339f0e023851daab05bb7ac4879","_id":"uport-connect@0.5.5","_shasum":"44f5fd8a6a10a0d98833a15e9f4f9a8daa3a48ae","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"44f5fd8a6a10a0d98833a15e9f4f9a8daa3a48ae","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.5.5.tgz","integrity":"sha512-T1l2SJWcqbwro9wbbI4Sa4Q9ERM+fSsQ7Te+OgyEj1T85GcUNPPdtnQK9FLwCado/saC6P1q3MMRAyoZjdShxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFYNasVaM8GN04AaO9kj3eF+ewgWJGJnB+CfONNK4VnnAiEA0YHcNG1Zt3iwylR94I2ccij2FSvCSUJaFbyRX6dNeKI="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/uport-connect-0.5.5.tgz_1490984580596_0.7364660114981234"},"directories":{}},"0.6.0-alpha-1":{"name":"uport-connect","version":"0.6.0-alpha-1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"next","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.13.3","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"ba4600f4a555361c8bf6e3bdf561e3ffbae4eecb","_id":"uport-connect@0.6.0-alpha-1","_shasum":"eafe6fd9d83632573bd0a4b832f380767a06762e","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"eafe6fd9d83632573bd0a4b832f380767a06762e","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.0-alpha-1.tgz","integrity":"sha512-CkdFyJoCbTIEySU3VLnnExs3GFHNge2Hc6l+fkUWZ7bqbjNkLSnuzGLD50uAys8oOxFI4Dx08zFcHwghEbfoBQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHH5vy/p0LWvasD0pHsqtgcCN8fjHiReXsB56dOFdtBGAiEA0XyvN2hm/s5ByOKuRaY3yEpJ95wg07SMUO3mRpyMz5w="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/uport-connect-0.6.0-alpha-1.tgz_1491447822921_0.0515861080493778"},"directories":{}},"0.5.6":{"name":"uport-connect","version":"0.5.6","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers PhantomJS","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI":"node karmawrapper start test/karma.conf.js --single-run --browsers PhantomJS","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"./node_modules/validate-commit-msg/index.js"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.3.3","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.11.9","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.3.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.8.0","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.8.2","webpack":"2.1.0-beta.15"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"3f3a6b3cc363e78eafe74cace0add07045fd7392","_id":"uport-connect@0.5.6","_shasum":"80880d9ec1bf572587210a6a76212c9a1a3fc4fb","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"80880d9ec1bf572587210a6a76212c9a1a3fc4fb","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.5.6.tgz","integrity":"sha512-hMMw8MFQo+gql9vhxVgGAr3t9whcpWF/a7EfGNCEHCeUNFObXXbZn3u9pG834wnQSRYXM20KnjVd2shOcJVNsQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFUBNYPAgr8Bhm1nMAxtRFUMpYn3dEC3d+ygzlao/UrwIgGhA3RyGAZMNqh7mOdkc7h67VtRsZ/nRjfJuMREedT/U="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/uport-connect-0.5.6.tgz_1491924787173_0.5003221940714866"},"directories":{}},"0.6.0-alpha-2":{"name":"uport-connect","version":"0.6.0-alpha-2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"next","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.13.3","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"172f9e540f7cee455df630731f7a8cf4ca132bdb","_id":"uport-connect@0.6.0-alpha-2","_shasum":"d7e94771fb20753cd340da94c2c4592d765b5515","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"d7e94771fb20753cd340da94c2c4592d765b5515","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.0-alpha-2.tgz","integrity":"sha512-cyj2rUhla6+ZBSftfPTroZGa7jSpks3Agv9v5TxtRp1JzUox9TWeTL1RKccK6kG6cjQh0ZlIcBytRUD/heLRQw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAegJwmHDuYsyQ+OOt2DSjk6Lfzl1OSexlwQFPg8qRPjAiEAsJSazI8IhYbtTjc6/t3J6QPduyzdLSKnBHf+FbnVmYo="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/uport-connect-0.6.0-alpha-2.tgz_1491925507781_0.08586643962189555"},"directories":{}},"0.6.0":{"name":"uport-connect","version":"0.6.0","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.4.0","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.13.3","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"74ba870d5a2b218a44ca30afbaedf6538a531a21","_id":"uport-connect@0.6.0","_shasum":"6f1c91fb23d8a7c35334bd909ca1751b9cba87fc","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"6f1c91fb23d8a7c35334bd909ca1751b9cba87fc","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.0.tgz","integrity":"sha512-5lfO+3RWVwRlD+5OX6msmH5ayByFFNhTUecxVEbpDI1UVUKIJ+0r88RnsnO1KAUQVKEXq+J/3BrM8fddw5bEGw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID1bp4F67w/tvtg7Rf7d3lgBf/3jYDAOQOHeqqsw+eoSAiBXIXcFsqgLQiJTSDkCaZxGWXN9B7EYoiEieYNRRe6X0Q=="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/uport-connect-0.6.0.tgz_1492802131834_0.1950710464734584"},"directories":{}},"0.6.1":{"name":"uport-connect","version":"0.6.1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build:yarn":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.4.0","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","husky":"^0.13.3","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","validate-commit-msg":"^2.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"4bc54d078ac4c1a35a809df0182e580c9d89d83b","_id":"uport-connect@0.6.1","_shasum":"3fa55ef82cd3a1521e4f9aaa9a774670cf08c83d","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"3fa55ef82cd3a1521e4f9aaa9a774670cf08c83d","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.1.tgz","integrity":"sha512-uj4ovaG+pHejisYwzUEMNnGMgTp0yS/qybQDwC9fha19uGjhSL9U4UgSEDJGQdZjqEN82l2oUnSs0fNEaK+T4g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEqCgEWz1cBd1V824rJd8ou6ujxQSnD0kMoxruIXn0KMAiBpeLKWi8WAjlZfUK9W9c5MNShIzRbl4ekOubujv1N8WA=="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect-0.6.1.tgz_1496599220356_0.14136506523936987"},"directories":{}},"0.6.2":{"name":"uport-connect","version":"0.6.2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.4.2","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"dbcde811c2f1b668fcb270da2a2345924343e237","_id":"uport-connect@0.6.2","_shasum":"3a2304c6e1922336e42e223c23eb8d664d8f4cb3","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"shasum":"3a2304c6e1922336e42e223c23eb8d664d8f4cb3","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.2.tgz","integrity":"sha512-CJktn2x3Vqi/JYtkmmnuXzHFxT5ple46H3GetZ1MKgdSB7s/aXxgKL/XAdEVIHTCmQU4LmABQg4VNmjK3Jt1Yg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCI/GVm2nyHZH1w+FF2hLSCivJGfNQQaen4jFkAg9CeSgIhAP9jJA2mxefOvlLgUmUKiGI6F9dW+HlKbdTSVGPzDf/Q"}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect-0.6.2.tgz_1496766896128_0.5319351518992335"},"directories":{}},"0.6.3":{"name":"uport-connect","version":"0.6.3","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.4.2","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"5866d30949066fdafad7f04ec1415729e7345083","_id":"uport-connect@0.6.3","_npmVersion":"5.0.3","_nodeVersion":"8.1.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"integrity":"sha512-YjGsvPIXyKiqS008ZYKyNgb2+5Axmj1HZAslkooXL+d8rwqay569OwGvaRy9D9sKy69s8wGJVL05A5VX/jtYkg==","shasum":"f0ae14bbc423dea62b4aa0230a929bda6fe97097","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICbn7Bss57Bnlabg3G7T5SzoFt1dExVUEWGU8vpWJgRqAiEAq2zBrOnRCs0SyOkQGwVShWZlsgNDBDw84Vz9raKXffM="}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect-0.6.3.tgz_1498587212678_0.9865380108822137"},"directories":{}},"0.6.4":{"name":"uport-connect","version":"0.6.4","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.4.2","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"5d8077d73e19deb3a2ce1239722b481b9daa4042","_id":"uport-connect@0.6.4","_npmVersion":"5.0.3","_nodeVersion":"8.1.3","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"integrity":"sha512-lMJljKzUlQjqyvNpqOFXSkiv1wrG0txp1kjSL8cXPDSwujb+ArkKsc7XIXV5stXPQiJ6Rxx+1F6AGE7p/w+F4g==","shasum":"89d13f4906d64850645ee5dca9ac67c5d4d677f1","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpzC/ulcek7R5mSWVxPsJmqLk+TqnH8H3+d7lk9iTriAIhAIaxA28B6DmVvqCVvDRJ++nXfIRo+MxnFs2K874nKuyr"}]},"maintainers":[{"name":"pelleb","email":"pelleb@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect-0.6.4.tgz_1499456703719_0.26921441219747066"},"directories":{}},"0.6.5":{"name":"uport-connect","version":"0.6.5","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.4.2","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"5f96d8affe2ae4e9502baba841e1566158c73029","_id":"uport-connect@0.6.5","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"localredhead","email":"levi.strope@gmail.com"},"dist":{"integrity":"sha512-mPqCaTC2VzTajw/sGR3sVmWbBISFfdOJrN1GBQhRpaWM5nYmIIYygF6SRFJfg+UAJNahwJgbHjGZW5B4SZiICA==","shasum":"dafff3a8430b5022ff80693448438f43de2cfbd6","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjvClKtv106STJUuX8TAVls4uU88oiOrA91o79AgTMVwIhAPVGAXxVRNYL5SQGxjE9jEFFmGN2fjPEUTON79kJ/oDT"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"pelleb@gmail.com","name":"pelleb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect-0.6.5.tgz_1503694936932_0.4546287504490465"},"directories":{}},"0.6.6":{"name":"uport-connect","version":"0.6.6","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.4.2","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"2ff25ced67b0fcab83060369f0185987a60c42fe","_id":"uport-connect@0.6.6","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-qp+nsxidLr3eWMWJ2gzR/8e/FrkCCoResYSM6CgjyxM7zmvi1UcYAnKaWcg33fOBQnTn9E044sCgEniPrbBwyw==","shasum":"fb6b49d7c55e9744346a7d2346ebaefca8025663","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDFwt2FKuLG6cZdfpAOksEAPzE+BFN2YfimU0Fga87qWAiAFZtZL+2/MXwOCciHTchZc5o/27fX22qTpSdkpshtZ6g=="}]},"maintainers":[{"email":"zachferland@gmail.com","name":"zachferland"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"pelleb@gmail.com","name":"pelleb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect-0.6.6.tgz_1505442382737_0.8672726720105857"},"directories":{}},"0.6.7-alpha-1":{"name":"uport-connect","version":"0.6.7-alpha-1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.6.0-alpha-3","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"7baefbd18dda1a4edb26bc00db370528ab340997","_id":"uport-connect@0.6.7-alpha-1","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-ZT3PK7Fe59O+zS4s/raxTbyenwj9XegwIUobW6A8yRW7LR0j3dLjpO8bBClAnHMtmoPDDMHpZJCRy/aeSzIjhg==","shasum":"8073bb29e2ce1eaa4c6beaac2c04da27241ee86e","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.7-alpha-1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEEMVDfzKw6NbyApSxY6s38jIUpPc8YlypAcP7+9WPDyAiEAyqS5C1qWV43OdJvNEXRGZ2mzMxNecrmtZqXvVLEwBfk="}]},"maintainers":[{"email":"zachferland@gmail.com","name":"zachferland"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"pelleb@gmail.com","name":"pelleb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect-0.6.7-alpha-1.tgz_1507047057748_0.12366360472515225"},"directories":{}},"0.6.7-alpha-2":{"name":"uport-connect","version":"0.6.7-alpha-2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.6.0-alpha-4","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"6d05b446eefa50a1a45518094699500af5c330da","_id":"uport-connect@0.6.7-alpha-2","_npmVersion":"5.4.2","_nodeVersion":"8.6.0","_npmUser":{"name":"oed","email":"oed3933@gmail.com"},"dist":{"integrity":"sha512-++SSlA+f5wNTWR7bPZsLQDfpPEY+m4r4hW2ulVW2I9gaIcUj4r96N4m7JBbs/haqf1CJdebfO0IwIBIBoF1bcg==","shasum":"14381a63ba9d3438d32220dc88c0ba1f123495a4","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.7-alpha-2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICzXjvv6lWxCuh+sLyWeWze2r8+OQH3IBd3fjm6pfyv8AiAhde7OKDvgbDP1Nbd315oUYjgpkVezjmee6YHOTuK1LQ=="}]},"maintainers":[{"email":"oed3933@gmail.com","name":"oed"},{"email":"zachferland@gmail.com","name":"zachferland"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"pelleb@gmail.com","name":"pelleb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect-0.6.7-alpha-2.tgz_1507131361608_0.4030151735059917"},"directories":{}},"0.6.7-alpha-3":{"name":"uport-connect","version":"0.6.7-alpha-3","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","jsontokens":"^0.6.5","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.6.0-alpha-4","web3":"^0.18.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"6d05b446eefa50a1a45518094699500af5c330da","_id":"uport-connect@0.6.7-alpha-3","_npmVersion":"5.4.2","_nodeVersion":"8.6.0","_npmUser":{"name":"oed","email":"oed3933@gmail.com"},"dist":{"integrity":"sha512-wMmDS5UovIlKcsWNsedPAdul6CyNXJuNVaPlJImtBWVMFUNuxNgopmcibCyLuL+EMM31RYVaMcHp3x1dGP1sXw==","shasum":"83749a6e6cd19e002036e178698d7a61f1db2572","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.7-alpha-3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG/EvK/leU6E/xNLn5rBww5bAZM6WudWGYVjO4WqukKbAiEAjjXvmLmAK5tfMATOsw2jcGiUmhdT6HolKeC5aohgNt8="}]},"maintainers":[{"email":"oed3933@gmail.com","name":"oed"},{"email":"zachferland@gmail.com","name":"zachferland"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"pelleb@gmail.com","name":"pelleb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect-0.6.7-alpha-3.tgz_1507546104464_0.4663794559892267"},"directories":{}},"0.6.7-alpha-4":{"name":"uport-connect","version":"0.6.7-alpha-4","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.6.0-alpha-4","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"39c7bed017a3cde2fa4089eb8db35687dfe0360c","_id":"uport-connect@0.6.7-alpha-4","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-78pYPewIU8aafc/khF8XDWEIRd7ALAxMJLSoW0uHyViVdmSpkQ+G/eE5ImgXDjf9sWYRogGSw5xnnwi2O/pzmw==","shasum":"bed5c1f8a6b28e768384b0ec3d09afca445ec31c","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.6.7-alpha-4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBJQCZEE67sVqoIJJSYVkHTdw6LrxKJ16ZQ6G3bkoW/7AiEA5NiuZxCE95VfO1Y1/8oewJswvoLCNubo8NdIq/cEbtk="}]},"maintainers":[{"email":"oed3933@gmail.com","name":"oed"},{"email":"zachferland@gmail.com","name":"zachferland"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"pelleb@gmail.com","name":"pelleb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect-0.6.7-alpha-4.tgz_1507814912856_0.25644577597267926"},"directories":{}},"0.7.0-alpha-1":{"name":"uport-connect","version":"0.7.0-alpha-1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.6.0-alpha-4","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"f8ab9ab17139c896c99b750e74ace45dd7f2622d","_id":"uport-connect@0.7.0-alpha-1","_npmVersion":"5.5.1","_nodeVersion":"8.7.0","_npmUser":{"name":"oed","email":"oed3933@gmail.com"},"dist":{"integrity":"sha512-1joWLZBWzja97WcrvoQUsV7EMWPdbX3KUck2bze+tlk7LpY6ntR7SmQq94N0TIgCpUI/WcR4bMfdVB4lCucQpQ==","shasum":"7af82758b2025802c796b41dee6381d5b9824940","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.0-alpha-1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA6jcYLF4wGXCxgxfWYdDOEylrRltiY5iNang61uqrfKAiEAjP7RNYhQfrlYvmDoIDaI+LZV7nGB7N2zNasEr7BQ4p4="}]},"maintainers":[{"email":"oed3933@gmail.com","name":"oed"},{"email":"zachferland@gmail.com","name":"zachferland"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"pelleb@gmail.com","name":"pelleb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect-0.7.0-alpha-1.tgz_1508782883770_0.009403506759554148"},"directories":{}},"0.7.0":{"name":"uport-connect","version":"0.7.0","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.6.0","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"e7c528fda9db6611445dccbb33d53396d25242ed","_id":"uport-connect@0.7.0","_npmVersion":"5.5.1","_nodeVersion":"8.7.0","_npmUser":{"name":"oed","email":"oed3933@gmail.com"},"dist":{"integrity":"sha512-0xy/2b3KuTHKuTbxOsDgjc2getmTIViSHp29MEKTmUG3UeD0DlHXjHmY9iD0IQl5q1UO21bbN5XOXvwfirEk8Q==","shasum":"58e5ea2a4dc78ad8ddbfae1f6b5c4756c3b5621c","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtU/iT1QOzzFRrNoTWczFLgqWb3WrjTa3Kh9WQLfrcSAIgdFy+5Epdf0bu8hD3Q4cLPBdS56bUnp5b6eLmdJvzqaQ="}]},"maintainers":[{"email":"oed3933@gmail.com","name":"oed"},{"email":"zachferland@gmail.com","name":"zachferland"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"pelleb@gmail.com","name":"pelleb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect-0.7.0.tgz_1509390944583_0.19984009256586432"},"directories":{}},"0.7.1":{"name":"uport-connect","version":"0.7.1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"wegit statbpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.6.2","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"^2.4.3","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"a0138919533df1f4176bf7ec80aeba0271aedf10","_id":"uport-connect@0.7.1","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"integrity":"sha512-wfEbYuX2mzt0FNvi4chyHtaWoXlRO5WSLel29BXlzjrIzHZ4J5XDm7koZrWty0NcYrMvWr97iA7s9lM4r1vICQ==","shasum":"b169f12e69bc7031ac2c54f14796fbcc575a7963","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.1.tgz","fileCount":35,"unpackedSize":19488958,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEFWjgEojGpJ5EGyfUG7x7pr0B4Lqy86RSjkaL8yZ22zAiEAhHI/hBz9A8GemQSrUIM9fTLbtxoknF3w7EUgLprGF5M="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.1_1519742037499_0.5395719598513737"},"_hasShrinkwrap":false},"0.7.2":{"name":"uport-connect","version":"0.7.2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.6.2","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"1ef4e78d5c65f350202a18e68486580e37a7fce2","_id":"uport-connect@0.7.2","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-P1s4BXhJvoourc08SLBHnC/kECQDQ5jLAaABvPRHbv6K66rLzDw9toUXq7A6MJdIRy3YmJKI+vv0B3X/0qtR7A==","shasum":"9c7fecc48ace6e959979b473ebb5004b659a302e","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.2.tgz","fileCount":35,"unpackedSize":19703606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa17OECRA9TVsSAnZWagAAQa0P/i+33PsLqNGXOX1fA6MW\nV1c+RvYXL+nQQEtsFkWPJ6jWgecJnCmneqtEGI7RDEZqnCA4s6cVRnwNheju\nmm6NI4cbZpIXlSsxDbvhxQVIaDPl96DSG2/5gwS4xkJo//pYuH+Y/BKUlxM3\nZu70AhsKxg4AUBnf/4G9ccOkDFHqeFrE1AdfFJtU67IzBR9H2bn01BZD1G+u\nELp1y4h9TvadBcN+BGzTAG8Ky33YQyRy+3qPcbzE10Dm3oQvaqRQB+4cd4ri\nhd/7SqpKeewprn0ydnJowKOiA+vzSzi5IIjtnoSKqzw0SKZkxoy9dviW8iA6\nNZCFhSMKMQhSWDKsaCJYOpAWIngjLzTMTYIvpDax3WXAVEbUr88ks6KEjhMQ\nPr9LA3RlTW4gCF6VXDeLihLenxbfaZ5iyWxlMyXLZTUiERBWJHKUVC1VSn6w\nqV1osXpc3ghc5uVuMQARy4aK9TpOyk8BrntbAopB8KcxAPOH8x2z92od7T2P\nqRn7ipedwuSabzXwEUtXvm5Ju2Z3oo5bqPhWUyymQCkkCIAYLNnfCLi8WlcD\nmudmSmet1PLD/k6s9CQdmCyCoG+UENStAYf4iEjjQg335mAWreQtz4sgkkMp\nfZcY8fc8vROCNHLY48tpsk5PCRqpCop59nXc3pOOzz3LHIGnyfeBxfyezr3A\nh5cs\r\n=16kv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCF8ksKDVF+gokmPIH83DudoPSBGvQhEtCurKKUQBqOqwIgZV0Lfe7XabycBfgjxu6XOKxWkFk4LpYcutDNV+GroyU="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.2_1524085634313_0.5372819071073118"},"_hasShrinkwrap":false},"0.7.3":{"name":"uport-connect","version":"0.7.3","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","json-loader":"^0.5.4","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","request":"^2.75.0","uport":"^0.6.2","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"5f7fdfa9b7a8f929c48e9b2af602e00687b8bccb","_id":"uport-connect@0.7.3","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-znuIEtMbX1Hxrlh8Ukcav4voy7ODTP70sdNiMejxvvYuU/mbGpZjLkjcJIDDF1lvZ4lCVggCxoEN6Ahpg1z1ww==","shasum":"4f553fc23ef6455d66f744f0ef74cfa9b4bd75a3","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.3.tgz","fileCount":36,"unpackedSize":19496856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4duACRA9TVsSAnZWagAAavoP/jmVW4J7wRb/hw5VMU4e\ngO5jXRLWTvFKAJGBz3//UslnuvmmXT5bd9spFR9qbHAxKUuenJB04y0znQmc\nr9J/pya7xfa+ODi6i9N9i2F+PMXHE/ojNDdUxOZAUe/M+u8IIJwTWODaG3sr\nFhC5sWZbJN1diK9KyOhRthw9acWc6DHDmrmenT+ZkyfKNEoj2/OvlYP8gLFo\n7O3emcloyusPO/9R+E7mShPJlpqZaaqr10AzNWk8ikP5qnOCT6c2uxKU9EST\nQd/vExYPuiaqexjDcitLSmkkcP8th3qodKbGo+sGr9cxdqtotghHksIRL3z7\nQg022YO9Rf9i3MLX23pUh4mdpJbQMJo/K9KlrIVcrJwNhbi7PjBlv7Ss8B+J\ncULVnjQV91RUPRdlBg8R/VLGuyZG6TRM1b/6YMA7peSsW5cdopbqz7VfRbZk\n6Nh9EP38rHevWS3a33GQ7xi1fhul6hwwKALIryQUG/WaruagQET6bXDS486T\n8Yq3sqk6QGhb/e30MutLyKRyEfesvkUmJmJiuN/SscJBjrZ7v4rt7U6+UA3D\nb0VM9qiNMW0RU3msCCow4i4uEuGZB823YMOQGajGWCksezMkQRh+o7QtLEUu\nyCJ5grJeP0sBtKf4Sf20qErdiwT9IrwFyiuj2wirCvn2W2ULzcOlOkivf8fe\nLHcD\r\n=wy2W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZA5gvSpumURv+WYC3EpdnekzLKGpR/+bsu8f5Rp1OPQIgcdFrkw3X7DqLxE6Dydzllm9FlGBFHdA/aTRm22dNCnY="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.3_1524751230319_0.16062817583266864"},"_hasShrinkwrap":false},"0.8.0":{"name":"uport-connect","version":"0.8.0","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"0.0.8","json-loader":"^0.5.4","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","uport":"^0.6.2","uport-core":"0.0.15","uport-did-resolver":"0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n---------------------------------------------\n\n## <a name=\"usage-guide\"></a> Usage Guide\n\nThe following Connect object is the primary interface you will use. All details and additional documentation can be found in [our docs](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md).\n\n* [Connect](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#Connect) ⇐ <code>[ConnectCore](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore)</code>\n    * [new Connect(appName, [opts])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#new_Connect_new)\n    * [.getWeb3()](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#Connect+getWeb3) ⇒ <code>web3</code>\n    * [.getProvider()](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+getProvider) ⇒ <code>[UportSubprovider](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#UportSubprovider)</code>\n    * [.requestCredentials([request], [uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+requestCredentials) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.requestAddress([uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+requestAddress) ⇒ <code>Promise.&lt;String, Error&gt;</code>\n    * [.attestCredentials(credential, [uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+attestCredentials) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.request(request)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+request) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.contract(abi)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+contract) ⇒ <code>Object</code>\n    * [.sendTransaction(txobj)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+sendTransaction) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n\n### <a name=\"communication\"></a> Communication\n\nThis library manages communication between your application and the mobile app. This communication channel differs depending on the environment in which your app runs and the parameters which you specify. In general, communication consist of a request and a response. This library helps you encode all supported requests. The mobile app understands requests encoded as Uniform Resource Identifier's (URI) with a set of params. These URIs are the strings which must be communicated to the mobile device. All functions which create a request will call a `uriHandler` function which consumes this URI string. This `uriHandler` allows both default and custom means of display and communication.\n\n#### <a name=\"default-qr\"></a> Default QR flow\n\nWhen the library is loaded on a non-mobile device the library will use QR codes to pass information to the mobile application. To receive a response the library will query a messaging server. You will be able to run your own messaging server or utilize other communication channels, but by default this is provided. We provide a default QR-code display function, which injects a `<div>` containing the QR-code into the DOM. Any function which makes a request to the mobile app will bring up this QR flow.\n\nUsing the default QR is the quickest way to start but in many cases you may want to change the QR display, embed the QR codes in different parts of your app, change the display depending on the request, or generate QR codes in once place and show them in another. We provide flexible configs to meet your needs. You can set a default `uriHandler` to be used with every request from the instantiated Connect object or you can can pass a `uriHandler` with each function call which makes a request. The functions which create a request should be clear from the docs.\n\nInstantiate a Connect object with a default `uriHandler`. This URI handler will be called with the request URI on every request.   \n\n```js\nconst uport = new Connect('MyDApp', {\n  uriHandler: (uri) => {\n    // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n  }\n})\n```\n\nEvery function which creates a request can be given a `uriHandler`. When given a URI handler it will ignore the default `uriHandler` with which the object was instantiated.\n\n```javascript\nconst uriHandler = (uri) => {\n  // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n}\nuport.requestCredentials({}, uriHandler).then((credentials) => {\n  // requestCredentials will call uriHandler with a request encoded as URI string\n})\n```\n\nURIs are not QR code URIs. If you want to generate a QR code from these request URIs, you can use the following function provided in this library.\n\n```javascript\nimport { QRUtil } from 'uport-connect'\n\nconst uriHandler = (uri) => {\n  // Creates a QR code URI, this is also a good place to you used any QR code library you prefer.\n  const qrCode = QRUtil.getQRDataURI(uri)\n  // A QR cod URI can then be used in a html img tag <img src=\"${qrCode}\"/>\n}\n```\n\n#### <a name=\"default-mobile\"></a> Default Mobile Requests\n\nBy default `uport-connect` will detect if the library is loaded on a mobile device. When on a mobile device it will call the default `mobileUriHandler` function which consumes a URI encoded request. When on a mobile device it assumes that the uPort app is on the same device, it will set the window URL to the request URI which will bring up a prompt to open that URI in the uPort app. To return a response the mobile app will call a URL which encodes the response and return control to the calling app. There is also a great deal of flexibility with the `mobileUriHandler`, the following options may be useful.\n\n\nInstantiate a Connect object with a default `mobileUriHandler`. This mobile URI handler will be called with the request URI on every request from a mobile device.   \n\n```js\nconst uport = new Connect('MyDApp', {\n  mobileUriHandler: (uri) => { ... }\n})\n```\n\nIf you want all requests to be handled by your own `uriHandler`. For example you many not want to rely on our default device detection and include your own or set different rules. If you know your application will always be run on a particular device, for example in a native app then this is also useful.\n\n```js\nconst uport = new Connect('MyDApp', {\n  isMobile: false\n})\n// Then set a default uriHandler or pass a uriHandler for each function which makes a request\n```\n\n#### <a name=\"push-notifications\"></a> Push Notifications\n\nAn alternative means to communicate with a user's uPort app is through push notifications. This requires an initializing request using one of the flow above, then all requests can be made with push notifications. Using push notification requests requires requesting an additional permission from a uPort user. Thus only use push notifications when you believe it improve your app's user experience and/or your application has some limiting factor that necessitates use. (for example requests which are too large to place in a QR code).\n\n```javascript\nuport.requestCredentials({\n  notifications: true\n}).then((credentials) => { ... })\n// Then all future requests will use push notifications if permission is granted.\n```\n\n### <a name=\"ethereum\"></a> Ethereum Interactions and Transactions\n\n`uport-connect` can be used to create a web3 object wrapped with uPort functionality. If you already have an existing application built on ethereum using web3 then this may be the simplest uPort integration. If you want to use alternatives to web3 then `uport-connect` can create a web3 style provider wrapped with uPort functionality and can be used in any library which supports these providers, for example [ethjs](https://github.com/ethjs/ethjs). If you have no need to use web3, or want more granular control over handling request URIs, then `uport-connect` provides a contract object similar to web3 which can be used to create transactions encoded as URI requests.\n\n#### <a name=\"web3\"></a> Using with web3\n\nWe provide a convenience method to create a uPort enabled version of the web3 object:\n\n```javascript\nlet web3 = uport.getWeb3()\n```\n\nAfter the above setup, you can now use the `web3` object as normal.\n\nThe following calls will initiate a uPort request, by default this will show a QR code.\n\n* `web3.eth.getCoinbase()` - returns your uport address, if not set already\n* `web3.eth.getAccounts()`- returns your uport address in a list, if not set already\n* `web3.eth.sendTransaction(txObj)` - returns a transaction hash\n* `myContract.myMethod()` - returns a transaction hash\n\n#### <a name=\"provider\"></a> Using a provider\n\nCreate a web3 style provider to use with web3 or other libraries which support these providers. Intercepts the same RPC calls as defined above for the web3 object.\n\n```js\nconst uportProvider = uport.getProvider()\n```\n\n#### <a name=\"contracts\"></a> Contract Object (without web3)\n\nPrimary reasons to use this object include; 1) You don't want/need to use web3 2) Using a web3 object will use your default URI handler for every request, if you want different URI handling for different contracts or different contract function calls then you should use this. Each contract function call consumes a `uriHandler` function.\n\nFunctionality and use similar to web3 contract object. This contract object is promised based.\n\n```js\n  const statusContractABI = [\n      {\n        \"constant\": false,\n        \"inputs\": [\n          {\n            \"name\": \"status\",\n            \"type\": \"string\"\n          }\n        ],\n        \"name\": \"updateStatus\",\n        \"outputs\": [],\n        \"type\": \"function\"\n      }\n    ]\n\n  const statusContract = uport.contract(statusContractABI)\n  const status = statusContract.at(\"0xB42E70a3c6dd57003f4bFe7B06E370d21CDA8087\")\n\n  const uriHandler = (uri) => {\n    // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n  } slack\n\n  status.updateStatus('hello', uriHandler).then(txhash => {\n    ...\n  })\n```\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a DOCS.md markdown file\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"4a5242c6f4934af5724f146c228ffd6e4050f02f","_id":"uport-connect@0.8.0","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-sSl7kuH6He9eJl4OmeeccSasS/CsVBwEzH4dOjen5GkOuWCVc3waw40a+RhuC6iLczkx49turfGxMSkOEquCGg==","shasum":"562a116f83f2b56327df92a022d130c93f5034bb","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.0.tgz","fileCount":15,"unpackedSize":10557301,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa75LDCRA9TVsSAnZWagAAPeAP/2XBFwIJUeCbcRxzyDIN\nXOLm3Bw4Pn0J9CJ/2+HU6CO0ur8W9SaAosIDFSMDF8ohj16WRf9XymXHeFk9\n9xsRVkrVCIl0BQ5WJxsdvkgbV3IJmZOjWigVdMEjJru9QEJIR3WH4NZdBLfX\nQbd2VV5tyWodhugCJy480rVayLgXoC+3qIe9wxWlj5d1DasWGn7DINEuhC01\nD65SRWzHPs9xSiGldqmQF0OD+9DBFTB/GfcAfKu3XtVVbb0GZ41F0APIOYQ9\nM1trSVJ4C1+w8ARmn/ARZ8o4q+nOlyZ4Gir9qUyL59j5cNfYs1u0zXZv2FY9\nuRGVDtvEDfsPoPzGe1vGbxpb/HapVsag99+IC1kW4FCNxFI6t+lHodYmBCIX\n5Thwod2VfU/ZGmH3Pr4I4yaDJiGSsr21pzW5D+vj6LT7YMCZhrBzDblQ2MPu\noWUtJJvq3/vwW0MBxv6wh4SSe5RUpaiiWqwKlCg1hu2i2W4Jvh1ucbYruZEQ\n1zerVLgDnQV/3keQYMKSQfqElj2Gzth9rBZaE5caffSD3ZWvcCBqOCaITUha\nhntyg963R/YYr/XGTwXxNu/KQY5PInJQ3ol3eFd0FDojYcTMzgTozNKeqxGH\nHz8rRD4T/cG0EzvUTTmkRMvoc5OBeIyC906kWdD4x982RpJUI7WcNGeal8aw\nYedq\r\n=PNqZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdkttWemEwnUdz/OYHFd8K5Nv8sKb28PuReChvvBnQjAIhAJL+Z3rLZM3yXfsGmD5XVL1pft2dQJ6VQXBfeb801B8I"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.0_1525650114658_0.4158323181086918"},"_hasShrinkwrap":false},"0.8.1":{"name":"uport-connect","version":"0.8.1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"0.0.8","json-loader":"^0.5.4","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","uport":"^0.6.2","uport-core":"0.0.15","uport-did-resolver":"0.0.2","uport-lite":"^1.0.2","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n---------------------------------------------\n\n## <a name=\"usage-guide\"></a> Usage Guide\n\nThe following Connect object is the primary interface you will use. All details and additional documentation can be found in [our docs](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md).\n\n* [Connect](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#Connect) ⇐ <code>[ConnectCore](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore)</code>\n    * [new Connect(appName, [opts])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#new_Connect_new)\n    * [.getWeb3()](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#Connect+getWeb3) ⇒ <code>web3</code>\n    * [.getProvider()](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+getProvider) ⇒ <code>[UportSubprovider](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#UportSubprovider)</code>\n    * [.requestCredentials([request], [uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+requestCredentials) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.requestAddress([uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+requestAddress) ⇒ <code>Promise.&lt;String, Error&gt;</code>\n    * [.attestCredentials(credential, [uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+attestCredentials) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.request(request)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+request) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.contract(abi)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+contract) ⇒ <code>Object</code>\n    * [.sendTransaction(txobj)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+sendTransaction) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n\n### <a name=\"communication\"></a> Communication\n\nThis library manages communication between your application and the mobile app. This communication channel differs depending on the environment in which your app runs and the parameters which you specify. In general, communication consist of a request and a response. This library helps you encode all supported requests. The mobile app understands requests encoded as Uniform Resource Identifier's (URI) with a set of params. These URIs are the strings which must be communicated to the mobile device. All functions which create a request will call a `uriHandler` function which consumes this URI string. This `uriHandler` allows both default and custom means of display and communication.\n\n#### <a name=\"default-qr\"></a> Default QR flow\n\nWhen the library is loaded on a non-mobile device the library will use QR codes to pass information to the mobile application. To receive a response the library will query a messaging server. You will be able to run your own messaging server or utilize other communication channels, but by default this is provided. We provide a default QR-code display function, which injects a `<div>` containing the QR-code into the DOM. Any function which makes a request to the mobile app will bring up this QR flow.\n\nUsing the default QR is the quickest way to start but in many cases you may want to change the QR display, embed the QR codes in different parts of your app, change the display depending on the request, or generate QR codes in once place and show them in another. We provide flexible configs to meet your needs. You can set a default `uriHandler` to be used with every request from the instantiated Connect object or you can can pass a `uriHandler` with each function call which makes a request. The functions which create a request should be clear from the docs.\n\nInstantiate a Connect object with a default `uriHandler`. This URI handler will be called with the request URI on every request.   \n\n```js\nconst uport = new Connect('MyDApp', {\n  uriHandler: (uri) => {\n    // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n  }\n})\n```\n\nEvery function which creates a request can be given a `uriHandler`. When given a URI handler it will ignore the default `uriHandler` with which the object was instantiated.\n\n```javascript\nconst uriHandler = (uri) => {\n  // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n}\nuport.requestCredentials({}, uriHandler).then((credentials) => {\n  // requestCredentials will call uriHandler with a request encoded as URI string\n})\n```\n\nURIs are not QR code URIs. If you want to generate a QR code from these request URIs, you can use the following function provided in this library.\n\n```javascript\nimport { QRUtil } from 'uport-connect'\n\nconst uriHandler = (uri) => {\n  // Creates a QR code URI, this is also a good place to you used any QR code library you prefer.\n  const qrCode = QRUtil.getQRDataURI(uri)\n  // A QR cod URI can then be used in a html img tag <img src=\"${qrCode}\"/>\n}\n```\n\n#### <a name=\"default-mobile\"></a> Default Mobile Requests\n\nBy default `uport-connect` will detect if the library is loaded on a mobile device. When on a mobile device it will call the default `mobileUriHandler` function which consumes a URI encoded request. When on a mobile device it assumes that the uPort app is on the same device, it will set the window URL to the request URI which will bring up a prompt to open that URI in the uPort app. To return a response the mobile app will call a URL which encodes the response and return control to the calling app. There is also a great deal of flexibility with the `mobileUriHandler`, the following options may be useful.\n\n\nInstantiate a Connect object with a default `mobileUriHandler`. This mobile URI handler will be called with the request URI on every request from a mobile device.   \n\n```js\nconst uport = new Connect('MyDApp', {\n  mobileUriHandler: (uri) => { ... }\n})\n```\n\nIf you want all requests to be handled by your own `uriHandler`. For example you many not want to rely on our default device detection and include your own or set different rules. If you know your application will always be run on a particular device, for example in a native app then this is also useful.\n\n```js\nconst uport = new Connect('MyDApp', {\n  isMobile: false\n})\n// Then set a default uriHandler or pass a uriHandler for each function which makes a request\n```\n\n#### <a name=\"push-notifications\"></a> Push Notifications\n\nAn alternative means to communicate with a user's uPort app is through push notifications. This requires an initializing request using one of the flow above, then all requests can be made with push notifications. Using push notification requests requires requesting an additional permission from a uPort user. Thus only use push notifications when you believe it improve your app's user experience and/or your application has some limiting factor that necessitates use. (for example requests which are too large to place in a QR code).\n\n```javascript\nuport.requestCredentials({\n  notifications: true\n}).then((credentials) => { ... })\n// Then all future requests will use push notifications if permission is granted.\n```\n\n### <a name=\"ethereum\"></a> Ethereum Interactions and Transactions\n\n`uport-connect` can be used to create a web3 object wrapped with uPort functionality. If you already have an existing application built on ethereum using web3 then this may be the simplest uPort integration. If you want to use alternatives to web3 then `uport-connect` can create a web3 style provider wrapped with uPort functionality and can be used in any library which supports these providers, for example [ethjs](https://github.com/ethjs/ethjs). If you have no need to use web3, or want more granular control over handling request URIs, then `uport-connect` provides a contract object similar to web3 which can be used to create transactions encoded as URI requests.\n\n#### <a name=\"web3\"></a> Using with web3\n\nWe provide a convenience method to create a uPort enabled version of the web3 object:\n\n```javascript\nlet web3 = uport.getWeb3()\n```\n\nAfter the above setup, you can now use the `web3` object as normal.\n\nThe following calls will initiate a uPort request, by default this will show a QR code.\n\n* `web3.eth.getCoinbase()` - returns your uport address, if not set already\n* `web3.eth.getAccounts()`- returns your uport address in a list, if not set already\n* `web3.eth.sendTransaction(txObj)` - returns a transaction hash\n* `myContract.myMethod()` - returns a transaction hash\n\n#### <a name=\"provider\"></a> Using a provider\n\nCreate a web3 style provider to use with web3 or other libraries which support these providers. Intercepts the same RPC calls as defined above for the web3 object.\n\n```js\nconst uportProvider = uport.getProvider()\n```\n\n#### <a name=\"contracts\"></a> Contract Object (without web3)\n\nPrimary reasons to use this object include; 1) You don't want/need to use web3 2) Using a web3 object will use your default URI handler for every request, if you want different URI handling for different contracts or different contract function calls then you should use this. Each contract function call consumes a `uriHandler` function.\n\nFunctionality and use similar to web3 contract object. This contract object is promised based.\n\n```js\n  const statusContractABI = [\n      {\n        \"constant\": false,\n        \"inputs\": [\n          {\n            \"name\": \"status\",\n            \"type\": \"string\"\n          }\n        ],\n        \"name\": \"updateStatus\",\n        \"outputs\": [],\n        \"type\": \"function\"\n      }\n    ]\n\n  const statusContract = uport.contract(statusContractABI)\n  const status = statusContract.at(\"0xB42E70a3c6dd57003f4bFe7B06E370d21CDA8087\")\n\n  const uriHandler = (uri) => {\n    // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n  } slack\n\n  status.updateStatus('hello', uriHandler).then(txhash => {\n    ...\n  })\n```\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a DOCS.md markdown file\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"4a5242c6f4934af5724f146c228ffd6e4050f02f","_id":"uport-connect@0.8.1","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-Z3LQIRRGW4xvoAbmy0/EoOtjreXMSjtUUfGYZIFEVBpZoL6nBfo7K0sG9/rfB8kkjCelZKzgAum+tTbosfwRSQ==","shasum":"7aff0a49d9e4e1ede01c348440ed7785aaa80cdc","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.1.tgz","fileCount":15,"unpackedSize":10560859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8fvACRA9TVsSAnZWagAAbd0QAJCVFvoWC+86RbK5Oof/\njwM+WwGBl3LEe+GUocVS3TFaiT7RTJC///g6zP3j87Dn7atUhn1pVvuWgEbA\nigJKVnWPdJMkPeiluzIu4EYHFIFw01O1xJTanbE8H1w92aGY2PJC49tdzCVV\nNo06iIEf16VyxPbGKqiJbFDFO0jTZDelrKSuX1QOc0PAFH2xaRboqIxVwohc\nEPb2TAkCot6aLgd8nqd0Ek4EE1cwXcBoG22tzm3fGgNVLAjw9dF5BJe+i7Y/\nRMXFxQGIyGIg6CnsV+IYYryvrWMBTNHJ/sBNy4+3TJOXK7oI2d/2cqcFwa2D\nvKNxMygQ5a1zTDoaib69MXHqdsrYBVWD3xO+cZaHnTz2f6J0Oy0hq6wfLnw7\nMc5YGZP0tefj73kiKzb8fhucs4iswyw/7LJOv8+Qni4PU5mFEHoeQsd6pG82\nY0nuYPvRClEimhjBrTlS2+2DKcIhV92V1uWXYgdlBao8EJQII1BD0G8gCDOu\naewSibltuIjKWuD1hOBkCsZwTZGXTsdGCH3hUJM/8+Q3Acbfkw7urp5VgmvK\nV4b/8jAzt2yOZGiKkxtBGBT5g3cIf8pnHNG1EA3xEXMqu2dtftR77tCLhgUD\nKvjPAXXImXhe5c0sbbmS2wdcwyezh5QUtyStpUBysdwJIGZ9X7A4Cbe5f4tZ\n5G64\r\n=AFHr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICuVqUJxfaPbALVn8vm95wuVifHjIwNYkuESKEwC/QMIAiB9lePtHpqruuApyBB3DAqq8s4dckG1SkZ0p260UMgewQ=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.1_1525808063000_0.12441675841383182"},"_hasShrinkwrap":false},"0.8.2":{"name":"uport-connect","version":"0.8.2","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"0.0.8","json-loader":"^0.5.4","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","uport":"^0.6.2","uport-core":"0.0.15","uport-did-resolver":"0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n---------------------------------------------\n\n## <a name=\"usage-guide\"></a> Usage Guide\n\nThe following Connect object is the primary interface you will use. All details and additional documentation can be found in [our docs](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md).\n\n* [Connect](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#Connect) ⇐ <code>[ConnectCore](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore)</code>\n    * [new Connect(appName, [opts])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#new_Connect_new)\n    * [.getWeb3()](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#Connect+getWeb3) ⇒ <code>web3</code>\n    * [.getProvider()](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+getProvider) ⇒ <code>[UportSubprovider](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#UportSubprovider)</code>\n    * [.requestCredentials([request], [uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+requestCredentials) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.requestAddress([uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+requestAddress) ⇒ <code>Promise.&lt;String, Error&gt;</code>\n    * [.attestCredentials(credential, [uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+attestCredentials) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.request(request)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+request) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.contract(abi)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+contract) ⇒ <code>Object</code>\n    * [.sendTransaction(txobj)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+sendTransaction) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n\n### <a name=\"communication\"></a> Communication\n\nThis library manages communication between your application and the mobile app. This communication channel differs depending on the environment in which your app runs and the parameters which you specify. In general, communication consist of a request and a response. This library helps you encode all supported requests. The mobile app understands requests encoded as Uniform Resource Identifier's (URI) with a set of params. These URIs are the strings which must be communicated to the mobile device. All functions which create a request will call a `uriHandler` function which consumes this URI string. This `uriHandler` allows both default and custom means of display and communication.\n\n#### <a name=\"default-qr\"></a> Default QR flow\n\nWhen the library is loaded on a non-mobile device the library will use QR codes to pass information to the mobile application. To receive a response the library will query a messaging server. You will be able to run your own messaging server or utilize other communication channels, but by default this is provided. We provide a default QR-code display function, which injects a `<div>` containing the QR-code into the DOM. Any function which makes a request to the mobile app will bring up this QR flow.\n\nUsing the default QR is the quickest way to start but in many cases you may want to change the QR display, embed the QR codes in different parts of your app, change the display depending on the request, or generate QR codes in once place and show them in another. We provide flexible configs to meet your needs. You can set a default `uriHandler` to be used with every request from the instantiated Connect object or you can can pass a `uriHandler` with each function call which makes a request. The functions which create a request should be clear from the docs.\n\nInstantiate a Connect object with a default `uriHandler`. This URI handler will be called with the request URI on every request.   \n\n```js\nconst uport = new Connect('MyDApp', {\n  uriHandler: (uri) => {\n    // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n  }\n})\n```\n\nEvery function which creates a request can be given a `uriHandler`. When given a URI handler it will ignore the default `uriHandler` with which the object was instantiated.\n\n```javascript\nconst uriHandler = (uri) => {\n  // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n}\nuport.requestCredentials({}, uriHandler).then((credentials) => {\n  // requestCredentials will call uriHandler with a request encoded as URI string\n})\n```\n\nURIs are not QR code URIs. If you want to generate a QR code from these request URIs, you can use the following function provided in this library.\n\n```javascript\nimport { QRUtil } from 'uport-connect'\n\nconst uriHandler = (uri) => {\n  // Creates a QR code URI, this is also a good place to you used any QR code library you prefer.\n  const qrCode = QRUtil.getQRDataURI(uri)\n  // A QR cod URI can then be used in a html img tag <img src=\"${qrCode}\"/>\n}\n```\n\n#### <a name=\"default-mobile\"></a> Default Mobile Requests\n\nBy default `uport-connect` will detect if the library is loaded on a mobile device. When on a mobile device it will call the default `mobileUriHandler` function which consumes a URI encoded request. When on a mobile device it assumes that the uPort app is on the same device, it will set the window URL to the request URI which will bring up a prompt to open that URI in the uPort app. To return a response the mobile app will call a URL which encodes the response and return control to the calling app. There is also a great deal of flexibility with the `mobileUriHandler`, the following options may be useful.\n\n\nInstantiate a Connect object with a default `mobileUriHandler`. This mobile URI handler will be called with the request URI on every request from a mobile device.   \n\n```js\nconst uport = new Connect('MyDApp', {\n  mobileUriHandler: (uri) => { ... }\n})\n```\n\nIf you want all requests to be handled by your own `uriHandler`. For example you many not want to rely on our default device detection and include your own or set different rules. If you know your application will always be run on a particular device, for example in a native app then this is also useful.\n\n```js\nconst uport = new Connect('MyDApp', {\n  isMobile: false\n})\n// Then set a default uriHandler or pass a uriHandler for each function which makes a request\n```\n\n#### <a name=\"push-notifications\"></a> Push Notifications\n\nAn alternative means to communicate with a user's uPort app is through push notifications. This requires an initializing request using one of the flow above, then all requests can be made with push notifications. Using push notification requests requires requesting an additional permission from a uPort user. Thus only use push notifications when you believe it improve your app's user experience and/or your application has some limiting factor that necessitates use. (for example requests which are too large to place in a QR code).\n\n```javascript\nuport.requestCredentials({\n  notifications: true\n}).then((credentials) => { ... })\n// Then all future requests will use push notifications if permission is granted.\n```\n\n### <a name=\"ethereum\"></a> Ethereum Interactions and Transactions\n\n`uport-connect` can be used to create a web3 object wrapped with uPort functionality. If you already have an existing application built on ethereum using web3 then this may be the simplest uPort integration. If you want to use alternatives to web3 then `uport-connect` can create a web3 style provider wrapped with uPort functionality and can be used in any library which supports these providers, for example [ethjs](https://github.com/ethjs/ethjs). If you have no need to use web3, or want more granular control over handling request URIs, then `uport-connect` provides a contract object similar to web3 which can be used to create transactions encoded as URI requests.\n\n#### <a name=\"web3\"></a> Using with web3\n\nWe provide a convenience method to create a uPort enabled version of the web3 object:\n\n```javascript\nlet web3 = uport.getWeb3()\n```\n\nAfter the above setup, you can now use the `web3` object as normal.\n\nThe following calls will initiate a uPort request, by default this will show a QR code.\n\n* `web3.eth.getCoinbase()` - returns your uport address, if not set already\n* `web3.eth.getAccounts()`- returns your uport address in a list, if not set already\n* `web3.eth.sendTransaction(txObj)` - returns a transaction hash\n* `myContract.myMethod()` - returns a transaction hash\n\n#### <a name=\"provider\"></a> Using a provider\n\nCreate a web3 style provider to use with web3 or other libraries which support these providers. Intercepts the same RPC calls as defined above for the web3 object.\n\n```js\nconst uportProvider = uport.getProvider()\n```\n\n#### <a name=\"contracts\"></a> Contract Object (without web3)\n\nPrimary reasons to use this object include; 1) You don't want/need to use web3 2) Using a web3 object will use your default URI handler for every request, if you want different URI handling for different contracts or different contract function calls then you should use this. Each contract function call consumes a `uriHandler` function.\n\nFunctionality and use similar to web3 contract object. This contract object is promised based.\n\n```js\n  const statusContractABI = [\n      {\n        \"constant\": false,\n        \"inputs\": [\n          {\n            \"name\": \"status\",\n            \"type\": \"string\"\n          }\n        ],\n        \"name\": \"updateStatus\",\n        \"outputs\": [],\n        \"type\": \"function\"\n      }\n    ]\n\n  const statusContract = uport.contract(statusContractABI)\n  const status = statusContract.at(\"0xB42E70a3c6dd57003f4bFe7B06E370d21CDA8087\")\n\n  const uriHandler = (uri) => {\n    // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n  } slack\n\n  status.updateStatus('hello', uriHandler).then(txhash => {\n    ...\n  })\n```\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a DOCS.md markdown file\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"4a5242c6f4934af5724f146c228ffd6e4050f02f","_id":"uport-connect@0.8.2","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-jKBiiYAsPtNEWu6mvaqKsZC/v8Y233TBmjuCD6ZMzM9iVj3+2O2ABSmoQ13yiePzZh6naFCIP9zo54zSni9U0w==","shasum":"4ef0267ddb4e8a89a5ddb35d1ac94f90ac1e6cfa","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.2.tgz","fileCount":15,"unpackedSize":10560846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8fy7CRA9TVsSAnZWagAALK4QAIgfiB6TtgArKdknsaru\nerfHonU7ErzL3MqB4ZTsToXP4njrmDtd/wTOjq6oo1SGXxlMuOrU3TvtAZS5\njoum0u6VzhVuhB6aKmFVRBdO+ai7xAmE7I/zw+9BkFcZFqYEh8EddT8VucjV\n/BCp4e2Dpo1iR5WvmvfHloSPagcyzoDe8eaBSv4z83eXC3Lg0BhFLm3qxSWJ\ns4uod9kl9/Zov8kNW8SRj0pygttIHnrQ2Gi2V3eZW6FJnrom5UiVpZk2Zxae\nttVePUmIjeAHJjsHr9pWeIF/eJC8+R1XGibzUMDuvcLcR7rJx1HgPPeiw6X6\nyEFBHuyNKd9yUTf8Q4720u+s0VSdBcIAZzGsiM976q6mVxGlnaV03kWz9vu5\nOkwEspVAPIp3d+6lN5nUKLk5UhxmYxhRsEmJlBrnItxh1ZOTme8WPWXjpwex\nKP6CPwjQlMQPl8pvF9zy5L1SjhZW/ITDyB/q/ofH9OqvbK7/A5+vGybvhO1E\ncNxcflHKDQ9Ymq0xHCDNw1fRaXOg8OyiRj1QrQwCY6QwQBNWLf3knhg6jKQs\nXil0wCEtVqaD7bSurh2u/2fXVpSWU1reBvpDtD+yrrzUuZYWsfuJoeMhYXPv\nYiDL32t67gCdITjtxXQb9dS0w+rCyxuM3s/nRUflx1g97D/QADZr3hzlIKb5\ngpTc\r\n=FpQt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBeV2NVrmZJotmG/IhlE8fWIDeAsbAfgVs5l1xwk3arhAiEAgu4Qb1wvwNF4XuOTj7GnfS1eNFGuhOI/as8SmpRd8o0="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.2_1525808314107_0.033532541196028776"},"_hasShrinkwrap":false},"0.8.3":{"name":"uport-connect","version":"0.8.3","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"0.0.8","json-loader":"^0.5.4","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","uport":"^0.6.2","uport-core":"0.0.15","uport-did-resolver":"0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n---------------------------------------------\n\n## <a name=\"usage-guide\"></a> Usage Guide\n\nThe following Connect object is the primary interface you will use. All details and additional documentation can be found in [our docs](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md).\n\n* [Connect](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#Connect) ⇐ <code>[ConnectCore](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore)</code>\n    * [new Connect(appName, [opts])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#new_Connect_new)\n    * [.getWeb3()](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#Connect+getWeb3) ⇒ <code>web3</code>\n    * [.getProvider()](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+getProvider) ⇒ <code>[UportSubprovider](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#UportSubprovider)</code>\n    * [.requestCredentials([request], [uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+requestCredentials) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.requestAddress([uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+requestAddress) ⇒ <code>Promise.&lt;String, Error&gt;</code>\n    * [.attestCredentials(credential, [uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+attestCredentials) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.request(request)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+request) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.contract(abi)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+contract) ⇒ <code>Object</code>\n    * [.sendTransaction(txobj)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+sendTransaction) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n\n### <a name=\"communication\"></a> Communication\n\nThis library manages communication between your application and the mobile app. This communication channel differs depending on the environment in which your app runs and the parameters which you specify. In general, communication consist of a request and a response. This library helps you encode all supported requests. The mobile app understands requests encoded as Uniform Resource Identifier's (URI) with a set of params. These URIs are the strings which must be communicated to the mobile device. All functions which create a request will call a `uriHandler` function which consumes this URI string. This `uriHandler` allows both default and custom means of display and communication.\n\n#### <a name=\"default-qr\"></a> Default QR flow\n\nWhen the library is loaded on a non-mobile device the library will use QR codes to pass information to the mobile application. To receive a response the library will query a messaging server. You will be able to run your own messaging server or utilize other communication channels, but by default this is provided. We provide a default QR-code display function, which injects a `<div>` containing the QR-code into the DOM. Any function which makes a request to the mobile app will bring up this QR flow.\n\nUsing the default QR is the quickest way to start but in many cases you may want to change the QR display, embed the QR codes in different parts of your app, change the display depending on the request, or generate QR codes in once place and show them in another. We provide flexible configs to meet your needs. You can set a default `uriHandler` to be used with every request from the instantiated Connect object or you can can pass a `uriHandler` with each function call which makes a request. The functions which create a request should be clear from the docs.\n\nInstantiate a Connect object with a default `uriHandler`. This URI handler will be called with the request URI on every request.   \n\n```js\nconst uport = new Connect('MyDApp', {\n  uriHandler: (uri) => {\n    // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n  }\n})\n```\n\nEvery function which creates a request can be given a `uriHandler`. When given a URI handler it will ignore the default `uriHandler` with which the object was instantiated.\n\n```javascript\nconst uriHandler = (uri) => {\n  // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n}\nuport.requestCredentials({}, uriHandler).then((credentials) => {\n  // requestCredentials will call uriHandler with a request encoded as URI string\n})\n```\n\nURIs are not QR code URIs. If you want to generate a QR code from these request URIs, you can use the following function provided in this library.\n\n```javascript\nimport { QRUtil } from 'uport-connect'\n\nconst uriHandler = (uri) => {\n  // Creates a QR code URI, this is also a good place to you used any QR code library you prefer.\n  const qrCode = QRUtil.getQRDataURI(uri)\n  // A QR cod URI can then be used in a html img tag <img src=\"${qrCode}\"/>\n}\n```\n\n#### <a name=\"default-mobile\"></a> Default Mobile Requests\n\nBy default `uport-connect` will detect if the library is loaded on a mobile device. When on a mobile device it will call the default `mobileUriHandler` function which consumes a URI encoded request. When on a mobile device it assumes that the uPort app is on the same device, it will set the window URL to the request URI which will bring up a prompt to open that URI in the uPort app. To return a response the mobile app will call a URL which encodes the response and return control to the calling app. There is also a great deal of flexibility with the `mobileUriHandler`, the following options may be useful.\n\n\nInstantiate a Connect object with a default `mobileUriHandler`. This mobile URI handler will be called with the request URI on every request from a mobile device.   \n\n```js\nconst uport = new Connect('MyDApp', {\n  mobileUriHandler: (uri) => { ... }\n})\n```\n\nIf you want all requests to be handled by your own `uriHandler`. For example you many not want to rely on our default device detection and include your own or set different rules. If you know your application will always be run on a particular device, for example in a native app then this is also useful.\n\n```js\nconst uport = new Connect('MyDApp', {\n  isMobile: false\n})\n// Then set a default uriHandler or pass a uriHandler for each function which makes a request\n```\n\n#### <a name=\"push-notifications\"></a> Push Notifications\n\nAn alternative means to communicate with a user's uPort app is through push notifications. This requires an initializing request using one of the flow above, then all requests can be made with push notifications. Using push notification requests requires requesting an additional permission from a uPort user. Thus only use push notifications when you believe it improve your app's user experience and/or your application has some limiting factor that necessitates use. (for example requests which are too large to place in a QR code).\n\n```javascript\nuport.requestCredentials({\n  notifications: true\n}).then((credentials) => { ... })\n// Then all future requests will use push notifications if permission is granted.\n```\n\n### <a name=\"ethereum\"></a> Ethereum Interactions and Transactions\n\n`uport-connect` can be used to create a web3 object wrapped with uPort functionality. If you already have an existing application built on ethereum using web3 then this may be the simplest uPort integration. If you want to use alternatives to web3 then `uport-connect` can create a web3 style provider wrapped with uPort functionality and can be used in any library which supports these providers, for example [ethjs](https://github.com/ethjs/ethjs). If you have no need to use web3, or want more granular control over handling request URIs, then `uport-connect` provides a contract object similar to web3 which can be used to create transactions encoded as URI requests.\n\n#### <a name=\"web3\"></a> Using with web3\n\nWe provide a convenience method to create a uPort enabled version of the web3 object:\n\n```javascript\nlet web3 = uport.getWeb3()\n```\n\nAfter the above setup, you can now use the `web3` object as normal.\n\nThe following calls will initiate a uPort request, by default this will show a QR code.\n\n* `web3.eth.getCoinbase()` - returns your uport address, if not set already\n* `web3.eth.getAccounts()`- returns your uport address in a list, if not set already\n* `web3.eth.sendTransaction(txObj)` - returns a transaction hash\n* `myContract.myMethod()` - returns a transaction hash\n\n#### <a name=\"provider\"></a> Using a provider\n\nCreate a web3 style provider to use with web3 or other libraries which support these providers. Intercepts the same RPC calls as defined above for the web3 object.\n\n```js\nconst uportProvider = uport.getProvider()\n```\n\n#### <a name=\"contracts\"></a> Contract Object (without web3)\n\nPrimary reasons to use this object include; 1) You don't want/need to use web3 2) Using a web3 object will use your default URI handler for every request, if you want different URI handling for different contracts or different contract function calls then you should use this. Each contract function call consumes a `uriHandler` function.\n\nFunctionality and use similar to web3 contract object. This contract object is promised based.\n\n```js\n  const statusContractABI = [\n      {\n        \"constant\": false,\n        \"inputs\": [\n          {\n            \"name\": \"status\",\n            \"type\": \"string\"\n          }\n        ],\n        \"name\": \"updateStatus\",\n        \"outputs\": [],\n        \"type\": \"function\"\n      }\n    ]\n\n  const statusContract = uport.contract(statusContractABI)\n  const status = statusContract.at(\"0xB42E70a3c6dd57003f4bFe7B06E370d21CDA8087\")\n\n  const uriHandler = (uri) => {\n    // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n  } slack\n\n  status.updateStatus('hello', uriHandler).then(txhash => {\n    ...\n  })\n```\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a DOCS.md markdown file\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"4a5242c6f4934af5724f146c228ffd6e4050f02f","_id":"uport-connect@0.8.3","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-110xqUHKmIBFX2Fadviw3nDGStGAnmYVmPpWx0cuzBxbqGGboBoVaNSkqHHXul5g3LoA4uNl1KI7b5z70DwaaQ==","shasum":"a415045367098a2e6b4133115602b98a4395e23b","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.3.tgz","fileCount":10,"unpackedSize":10512882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8f7WCRA9TVsSAnZWagAAIVYP/RSCnPMPGrWCFFWcaw1T\nTfJBRLvWofbskyVzHrveiBL0RJqTlxYT/lktN6TVajfLBBqpA44fK6NKddye\n89Gdos2Tj+mDssBPXBrf1wV6MdjZo33E618tigcpCcEXrgFZqIdcvU7Ok6DL\nSlXcCyvylKxc5rXW749+trV9d3He66D2adLffN6EObs/lljlVXpj0w9VJDzh\nExWtjMGAMJHY6w0c1xSgDX6klFFzhnhE9yCA/ubMFNq0rI9yDLoYdBKt0wIW\nTU2KOc6J72NYxboK8oEcilZ6CpqTCfwS59TD1vUWNKLUDkDQkcoAmA3julMo\nIP9o8qT5jSGVaJvSf4mgW7ic9kGNavc1+Ag3UT9KeTwIT5R2vM2K0tA29rV0\nQqSlYMvzEkjJiWvMai8qjhHtlWjISNOSznqGh9oAIonANx0uwM4x8F086dj0\nqZpgddti1oP2LOi54qvxelzCI9nzkrQplKmmg3RJJVj4/bmLTD+bwW6/8dvx\nWdY75xJ0QF8MLbjmB/cK1BSlCJlx6i4z55ezh5zetttLXIGqsbtrmI6ybtzf\nryukjTZnkCKlHbyj3E9ifupTLNmwoIUQvZjpStpY7RgNX8CoxUJOHOgGVQjn\njI1WK5hYxZ9dvEqDAEaOoq+QmlDTsbunXI8IPz9xZA+3MWtzdplHikbJ3uF3\nJBMy\r\n=VQec\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA6yXqJGASPMoKcpbQ7uTqdlfUPMoApP09T+yYljG98wAiEA47TmBcoS4ZVb2VGrS8FgR+vIJs0s6sN5IbDzb2RKO7U="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.3_1525808853739_0.7676930319561921"},"_hasShrinkwrap":false},"0.8.4":{"name":"uport-connect","version":"0.8.4","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"0.0.8","json-loader":"^0.5.4","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","uport":"^0.6.2","uport-core":"0.0.18","uport-did-resolver":"0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^1.5.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n---------------------------------------------\n\n## <a name=\"usage-guide\"></a> Usage Guide\n\nThe following Connect object is the primary interface you will use. All details and additional documentation can be found in [our docs](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md).\n\n* [Connect](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#Connect) ⇐ <code>[ConnectCore](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore)</code>\n    * [new Connect(appName, [opts])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#new_Connect_new)\n    * [.getWeb3()](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#Connect+getWeb3) ⇒ <code>web3</code>\n    * [.getProvider()](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+getProvider) ⇒ <code>[UportSubprovider](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#UportSubprovider)</code>\n    * [.requestCredentials([request], [uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+requestCredentials) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.requestAddress([uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+requestAddress) ⇒ <code>Promise.&lt;String, Error&gt;</code>\n    * [.attestCredentials(credential, [uriHandler])](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+attestCredentials) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.request(request)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+request) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n    * [.contract(abi)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+contract) ⇒ <code>Object</code>\n    * [.sendTransaction(txobj)](https://github.com/uport-project/uport-connect/blob/develop/DOCS.md#ConnectCore+sendTransaction) ⇒ <code>Promise.&lt;Object, Error&gt;</code>\n\n### <a name=\"communication\"></a> Communication\n\nThis library manages communication between your application and the mobile app. This communication channel differs depending on the environment in which your app runs and the parameters which you specify. In general, communication consist of a request and a response. This library helps you encode all supported requests. The mobile app understands requests encoded as Uniform Resource Identifier's (URI) with a set of params. These URIs are the strings which must be communicated to the mobile device. All functions which create a request will call a `uriHandler` function which consumes this URI string. This `uriHandler` allows both default and custom means of display and communication.\n\n#### <a name=\"default-qr\"></a> Default QR flow\n\nWhen the library is loaded on a non-mobile device the library will use QR codes to pass information to the mobile application. To receive a response the library will query a messaging server. You will be able to run your own messaging server or utilize other communication channels, but by default this is provided. We provide a default QR-code display function, which injects a `<div>` containing the QR-code into the DOM. Any function which makes a request to the mobile app will bring up this QR flow.\n\nUsing the default QR is the quickest way to start but in many cases you may want to change the QR display, embed the QR codes in different parts of your app, change the display depending on the request, or generate QR codes in once place and show them in another. We provide flexible configs to meet your needs. You can set a default `uriHandler` to be used with every request from the instantiated Connect object or you can can pass a `uriHandler` with each function call which makes a request. The functions which create a request should be clear from the docs.\n\nInstantiate a Connect object with a default `uriHandler`. This URI handler will be called with the request URI on every request.   \n\n```js\nconst uport = new Connect('MyDApp', {\n  uriHandler: (uri) => {\n    // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n  }\n})\n```\n\nEvery function which creates a request can be given a `uriHandler`. When given a URI handler it will ignore the default `uriHandler` with which the object was instantiated.\n\n```javascript\nconst uriHandler = (uri) => {\n  // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n}\nuport.requestCredentials({}, uriHandler).then((credentials) => {\n  // requestCredentials will call uriHandler with a request encoded as URI string\n})\n```\n\nURIs are not QR code URIs. If you want to generate a QR code from these request URIs, you can use the following function provided in this library.\n\n```javascript\nimport { QRUtil } from 'uport-connect'\n\nconst uriHandler = (uri) => {\n  // Creates a QR code URI, this is also a good place to you used any QR code library you prefer.\n  const qrCode = QRUtil.getQRDataURI(uri)\n  // A QR cod URI can then be used in a html img tag <img src=\"${qrCode}\"/>\n}\n```\n\n#### <a name=\"default-mobile\"></a> Default Mobile Requests\n\nBy default `uport-connect` will detect if the library is loaded on a mobile device. When on a mobile device it will call the default `mobileUriHandler` function which consumes a URI encoded request. When on a mobile device it assumes that the uPort app is on the same device, it will set the window URL to the request URI which will bring up a prompt to open that URI in the uPort app. To return a response the mobile app will call a URL which encodes the response and return control to the calling app. There is also a great deal of flexibility with the `mobileUriHandler`, the following options may be useful.\n\n\nInstantiate a Connect object with a default `mobileUriHandler`. This mobile URI handler will be called with the request URI on every request from a mobile device.   \n\n```js\nconst uport = new Connect('MyDApp', {\n  mobileUriHandler: (uri) => { ... }\n})\n```\n\nIf you want all requests to be handled by your own `uriHandler`. For example you many not want to rely on our default device detection and include your own or set different rules. If you know your application will always be run on a particular device, for example in a native app then this is also useful.\n\n```js\nconst uport = new Connect('MyDApp', {\n  isMobile: false\n})\n// Then set a default uriHandler or pass a uriHandler for each function which makes a request\n```\n\n#### <a name=\"push-notifications\"></a> Push Notifications\n\nAn alternative means to communicate with a user's uPort app is through push notifications. This requires an initializing request using one of the flow above, then all requests can be made with push notifications. Using push notification requests requires requesting an additional permission from a uPort user. Thus only use push notifications when you believe it improve your app's user experience and/or your application has some limiting factor that necessitates use. (for example requests which are too large to place in a QR code).\n\n```javascript\nuport.requestCredentials({\n  notifications: true\n}).then((credentials) => { ... })\n// Then all future requests will use push notifications if permission is granted.\n```\n\n### <a name=\"ethereum\"></a> Ethereum Interactions and Transactions\n\n`uport-connect` can be used to create a web3 object wrapped with uPort functionality. If you already have an existing application built on ethereum using web3 then this may be the simplest uPort integration. If you want to use alternatives to web3 then `uport-connect` can create a web3 style provider wrapped with uPort functionality and can be used in any library which supports these providers, for example [ethjs](https://github.com/ethjs/ethjs). If you have no need to use web3, or want more granular control over handling request URIs, then `uport-connect` provides a contract object similar to web3 which can be used to create transactions encoded as URI requests.\n\n#### <a name=\"web3\"></a> Using with web3\n\nWe provide a convenience method to create a uPort enabled version of the web3 object:\n\n```javascript\nlet web3 = uport.getWeb3()\n```\n\nAfter the above setup, you can now use the `web3` object as normal.\n\nThe following calls will initiate a uPort request, by default this will show a QR code.\n\n* `web3.eth.getCoinbase()` - returns your uport address, if not set already\n* `web3.eth.getAccounts()`- returns your uport address in a list, if not set already\n* `web3.eth.sendTransaction(txObj)` - returns a transaction hash\n* `myContract.myMethod()` - returns a transaction hash\n\n#### <a name=\"provider\"></a> Using a provider\n\nCreate a web3 style provider to use with web3 or other libraries which support these providers. Intercepts the same RPC calls as defined above for the web3 object.\n\n```js\nconst uportProvider = uport.getProvider()\n```\n\n#### <a name=\"contracts\"></a> Contract Object (without web3)\n\nPrimary reasons to use this object include; 1) You don't want/need to use web3 2) Using a web3 object will use your default URI handler for every request, if you want different URI handling for different contracts or different contract function calls then you should use this. Each contract function call consumes a `uriHandler` function.\n\nFunctionality and use similar to web3 contract object. This contract object is promised based.\n\n```js\n  const statusContractABI = [\n      {\n        \"constant\": false,\n        \"inputs\": [\n          {\n            \"name\": \"status\",\n            \"type\": \"string\"\n          }\n        ],\n        \"name\": \"updateStatus\",\n        \"outputs\": [],\n        \"type\": \"function\"\n      }\n    ]\n\n  const statusContract = uport.contract(statusContractABI)\n  const status = statusContract.at(\"0xB42E70a3c6dd57003f4bFe7B06E370d21CDA8087\")\n\n  const uriHandler = (uri) => {\n    // ex. show URI handler, create QR code or create a button to send a user to the mobile app\n  } slack\n\n  status.updateStatus('hello', uriHandler).then(txhash => {\n    ...\n  })\n```\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a DOCS.md markdown file\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"4a5242c6f4934af5724f146c228ffd6e4050f02f","_id":"uport-connect@0.8.4","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-8B+UkA3vi/+V/T+0d6F2+AyMmaj6nWqDeJp+cSeTBLNcRCjgXgFoWwwOh1JXPUk11Vxye4SNyuxMDt5sX53LIQ==","shasum":"839930397d23c9aae13dd07dc56fcb388726b948","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.4.tgz","fileCount":10,"unpackedSize":10512999,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa831oCRA9TVsSAnZWagAA9xIP/ixeb2f84/3rLZryUuvz\ns1En8jS0EESdMfCTI0K+/etGfZ3ifCAhsFvRzFkFZXKqNj/KjbCi3NoxNULC\nY/sNAY2L1BKx1udl3vDIzWiK/fGFVBw5xroUJPL5YgtySRRRDavLTsgNMirm\nk0e+hi+csQtkXN3wAc9sNjxgrVpXz05Trnye7ljM2kAfzgj5TPi4qaRuftZJ\naCEURB2VZgjwqiUgAhPrZxUha4Mzgi1x4iZZencCelS5Wp4bEDQFmFeQxZr2\nMeCxdb4grcUnizzZdBJv/zVOezBn1ZIdOJXSK+qh/yZZJh4wyakPaxmUpoAe\nXE7BoGrwnX1nYqmkEiaeRiC/dzpPGQjKSRsoKZpZeX4v+XCTzuGgoMcHtarj\ndF+4NZ5KGsLij4WDCrZnGYKUcfCQwb7ue/VwE3YTMvuFIDaGaoZbOV3S5q9C\nzoPQjjGD3SNJhJlrQSSCugPpBmfKPEwsvHHj5OLx0REqv+dNPRhv3w7f84LL\nsN4d5Obw9vYoz9tpJX/+zqYrj3HeHsKYfb7GJ78FvCsMm/+Q5C61bJBbQFGm\njKba2QE3asK71aDwXisEy0lappi98UO8Cknl4+TPxnMdWueJZLNr4ZBjxHqD\nGRsSfm4AigYslZfsKYHx/ZgY088ioNM/IlmjQDd0e4Bp2QaXfZJ5+ja/6C2L\nspva\r\n=tURc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsRPm7FnukSOfWZHn1F5PClBr7UIHNBRIo0NfuSyg3yAIgMdPPjKDVpZ6Co6KPUy+T9jl3tnIOyy35Pfn3PscCvJM="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.4_1525906791896_0.7312031765337714"},"_hasShrinkwrap":false},"0.8.5-alpha-5":{"name":"uport-connect","version":"0.8.5-alpha-5","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-3","uport-core":"0.0.25","uport-did-resolver":"0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.2","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"e7ebbbf5a28a367162a087e368e2626476ca8bd4","_id":"uport-connect@0.8.5-alpha-5","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-oftkMCMM4qyp6FmxJyyqVL4Xq6YUt81q7z4bYu7/b3SZ1uHVvcLLCbjpqAEbhuj9aYzw0GEAOMtgAZsvu0wT4A==","shasum":"fcba206930688fbf7fa246c5a9ca3a954c7a40c1","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.5-alpha-5.tgz","fileCount":8,"unpackedSize":2561691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFqvoCRA9TVsSAnZWagAAL+4P/2uDcsUf5WJFDfHuDXY4\nTKb9qloMMtbYO0v490UzY9tg5OAdkzUi4Va8ocWWH7zJf9vOC5xlpqTUBOsO\njLfeyYa534ig2T1f1vr/+t2t7FoxzR1XniLaYtpFgNWyMSmpMwuQdvZTIwmf\nghWPRb0LCirZMeUofjQ4ZX3sqxF8p1IKhglzik9PnOL4+rpKo4PwrzNvdaur\nufBQgFoD0GKVvaG2s7MXG/Sk+bpXb8shKT7zpeHTLXxEM6jcLuY8G/Pf/hEp\nJPmZLDncgVlSXigim1dBIf62bkuMl8yo/CviRa0muFXowNA/faFDwsDn5V2C\n3qD6R188usVHik5NLDdggSsNKmpD6QGPVmZBoTKnSiix2pZZm1UPvWuwEQbn\nGrPSrqU3crvtT3/vTlSzmRZFtLjJ4YsOJmq3Iw2BOTfanQvuaLAw8XAWyRaL\nkxWrdlMqxbDq9YtBcOfrb6I5NAZd6ujWVnzch0VQQRlnk1XULqDB2zpgx+ZG\nDTTvXKRilA1SI0x/2RltieV/rgadlhciSbAnxRdRo6xLTa1eNvukcAl3TMka\n3rZFckegIilUteoU3N5JsdhxeBPQNysdytDKOWee3ThO0VDEOWmUxD4V0fmP\n5hIAEu794EkJGWJDwpkHfj/DUUzmtd9/xVmcQI/pFySwNESn/8wVF4+G4s8s\nuTCr\r\n=SUqY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjoMeCdLdWN7NJeBD446QGRFNKS/jfRQLtxS57og2FJAIgPBVPPZSHRFsrgWOuTIqfg8hmsYXZpENy372aK7AHcU4="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.5-alpha-5_1528212456159_0.4418197125780807"},"_hasShrinkwrap":false},"0.8.6-alpha-6":{"name":"uport-connect","version":"0.8.6-alpha-6","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-3","uport-core":"0.0.25","uport-did-resolver":"0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.2","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"3ef02eb559648b81bae6ac0135c2152c32851c89","_id":"uport-connect@0.8.6-alpha-6","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-z1+RFp2WB6f+gl0vDpEJ7YmNoFsvCwL/E0Q+Kpbubk668cc3ZwN23YB6jc92vSYfb40EV/D8H0FBagbusm7JRw==","shasum":"a6c1d7f3a82e9f2a2e7735e903c003d76237f1e5","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.6-alpha-6.tgz","fileCount":8,"unpackedSize":2562424,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFtSfCRA9TVsSAnZWagAADvEP/0MQorizVkKkFp04zKOm\nENcdrmWxsu1UKR55TLIPfLCArxkrZrxMLmoEwj0G78P4YBLNlyHao4w9yrVS\ncie5N8KLkQWyji4yvK/s7SdviQVwqruKdp8zLm3N6aFxSUg36xLHyKDJ3vs9\niTkMSiqjIiq06w1iqsa9BQx125ZaDK/PzqxFD6ATB0+RfYwNjLXilK31kFi7\n/7QnwqtxHELBtLSaikt2Yde8Qmq9ciFn4yExz98ZzPjpOzRr9u2P2HQ3d7w/\niwE8AHJCKOP6PT7ZGKkp90J+h6xwZaEfnhQjQpeb0y0+ImsHqQSyQnzWwvni\n6f6LqVJ3BSIrJIxxNBksAB7OsLkEUk4CpKaFfQ0HND5GluJ1buEoCKhHNEN4\nYki1psnN8ZjEbDJlWvx44l1z89ASZTziZMl/5Rn6pM2kTsNs1Cv9bNgkwz5M\nb4qTnEtIb6ZPTSm8cu/ppt+TW0EcQ0lFpAd6oj2XTXYCXtbWsSbcSVP0HCaQ\nGpO7v/Lek/bkvbmZ4SvB5siL2wClyeoDJ1aSpzsOrkgCn/q3Txf0nARNEeI3\nInJOX5xHqrqrLnbo7NXpKS9ijIfpkLiND0vucLtqvBO0RJ0Q0fWHmVmnQ+IC\ne1w/7gdqk9DDzNx53DfFjCzJnU0Yc1hhmQ5c4y9vUW3tsmeIAtTVfHjDCQ6p\n97Mx\r\n=xd4Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG4w+Mxre0BpylspaK5+or+tjgjL+tP6z4kPd0dgsM4HAiEA4tC46dyS35K43AD7bCep/K4sDtgoabrUhrISNj4cf+I="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.6-alpha-6_1528222879429_0.8680312756047106"},"_hasShrinkwrap":false},"0.8.7-alpha-7":{"name":"uport-connect","version":"0.8.7-alpha-7","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-3","uport-core":"^0.0.31","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.2","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"3ef02eb559648b81bae6ac0135c2152c32851c89","_id":"uport-connect@0.8.7-alpha-7","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-QubpB/mRaTmBCRsWPIhY/81dP1j2GxMByF3pN5WUrex4w8G1hs7xMw47CkISE9TVzYJ+xqmG7Ufz/y6NojEvPg==","shasum":"13ab76e03c150d3a72bb120ff2681abb126afe4b","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.7-alpha-7.tgz","fileCount":8,"unpackedSize":2562428,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGoXTCRA9TVsSAnZWagAAd/MP/Ai7WVgBQHvn+l9KS6uz\nB1LeaiV6p0g6UcakKBLWiFlJnE7xUBum52XXJtBpZC7j4DdOKjg85uuBzANX\nYYQFhUFIBqnQqRinmPUbX335HHirC0PQZdhV447Lxz6tmSpdNQAApyGdXkGQ\nnagvj5aEmQplEc/ABn9V+ajuLYT43goUZMeiFeOc2DwM4AmZnph3By0aZ4jt\nYcm1xnwp1gnoyv71RPjmB1GGFckxul7PtfCk8IOF4sT94nFj5EyY7WVzGYBb\nkFCC+6OejdITUILy04pndj0a0dCDjduTEqr/DFmde5OiuYC0PHQ72lRS+PU1\njnSCOHKYxyo99vA4DvGPZlVwA6QQhtzSJ0utoPtlPp1GeTYvSG2a4uHadp9J\nRjwz9k9Di0N0ydecgoyYYCOz5sX0MRF9B1OH9AHSJbfOizH1keTJoHUGo1+Q\nAhrkq/fZZvWrBnoFfvFBYS/Ro4Hanpsc7g3gX9ZdUzbOFtuAcdFf7R4/nu6c\nnhgzaIZzpnoGQrxYsfNJ+H8fBHs/TlZTTGQfFtwSW4qXiuFLakc6MQsWMzQh\nyIw8/QmoVwGkkof8jD6JGcw5qFD+DQfsw3S1qtWHQ5bMnD2Rjo8jiHSnyPv8\n5geE0mIBvyQPsVSByl6FdfdS65vmYv7v2jnYRcv0/PAXuYCzrOzWVbExiGHu\n7ysT\r\n=amh3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDm52fezeW29y+G5o3DqY8qHuUZTqqQquq/Rme66iFSewIhAO54lbvhsoTF9TBtYSHqqL8kCKvTgURSD3mJi0nXjFpZ"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.7-alpha-7_1528464850421_0.33498864775122716"},"_hasShrinkwrap":false},"0.8.8-alpha-8":{"name":"uport-connect","version":"0.8.8-alpha-8","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-3","uport-core":"^0.0.35","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.2","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"7b42a5d79e782afc9bc15a9d635b1e8f06869c20","_id":"uport-connect@0.8.8-alpha-8","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-7+4lwBvyI4XmeGbDsXAXq3PcwfGHVEwdmINvFhD911QnC3fLDNeS1IGbeDi4sE+ue/LxhghGRN7/IiKxtqMTPw==","shasum":"6ce36284838210a0c34ac35c5286bf967b4e6e81","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.8-alpha-8.tgz","fileCount":8,"unpackedSize":2562806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHtnCCRA9TVsSAnZWagAA9vcP/R2Y1tp2CjNz5YjyKeS+\nW7p6wKEbtxfuvJ6wG6NMRQLutSXZ3oH9ISNOnnq7X+6A09QKZGVEy1v/NiAL\nG9oKB/0egVe7tbXsgTx0NlIRtB/x5rsdHSG+1rxnPCCnJ7LGwEoskpiwHMXG\nEUxo6SDcnbPPuwScwZbJ7THWGyVbQ6jwRAQaqPzp6Lq+MwjjMkdVXkRzb/VO\nS3OANkosJ7DhIOXSt9Sp9Fk7K7x5Y9waBEu46XUQfm69jFN4Sv4/PlQ7rGYc\nbiLeOCPpHFs32oQ1cI0HnoBaZP9y0329FVAv/lskHy41SQM0lOt2CvjzqAeV\n7IRFEV6/vwMLdiy1w5HoG6a1x3vbcV5BXN37ahR+f7orrtP1NfClbeiNZ44X\nghGPIwCi/Mz285P9sAIvIEo0vy/ySvsW316iE6cLORh4MG0913G87mexFEZ9\nbMBcSx2/Kie7Ufx5zNFK0+Hwkj6u1II/OwVfVCY29iNgNdCyzy20W4ZjxXpI\nHfx3MER9psI8JPpnP0DQpvZXasG77tg/ZbLS6vuz+rk0DJeQPwBbCkseVqL6\nQmce8qTewHgemFuk8ISjBmZPzXh3Vk8q/q8qeGdOf/Bfeh7hv9Qs+pmC9ULA\nQOADni6tBdYIVp1A6rDEZVb21XY2zgFGQsaKTP/dKUXWwdzvrDbelXagyAow\nqdoZ\r\n=TyXp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG5A1p/S9dyMXd6AW1T92UuYT17m6imb8QUJYRu2auE7AiEA6E6SNdZuFP1/iCn2G8Aaid3d1cAeYPbEUp3FLa0w9+M="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.8-alpha-8_1528748481504_0.9670261011255854"},"_hasShrinkwrap":false},"0.8.9-alpha-9":{"name":"uport-connect","version":"0.8.9-alpha-9","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-3","uport-core":"^0.0.35","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.2","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"7b42a5d79e782afc9bc15a9d635b1e8f06869c20","_id":"uport-connect@0.8.9-alpha-9","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-KBEe4T1m5r1XkJFa9whU8yPzDdCIrfOmyg0Y0N0H8akSqDWIqkhtfS3H1rruhtlkTzHIhMv0KPt3COXcnfe4LQ==","shasum":"22f0487b28c31ee47f9bcddc95922c3a739722df","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.9-alpha-9.tgz","fileCount":8,"unpackedSize":2563101,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbH9QfCRA9TVsSAnZWagAA+VEP/jmWTY5zWcVxWB8Gcoor\nMvXZjZStHGYqxLdcIFBVG5UablS1+TaRqZLkST4EgyX7uiIV7dzdjhiZ/QEX\nEbn4sol/vKtp1ZmStPJRt9gZD9/I0z1695ErHCUPvEwSBt8OERoRYX+UFpCB\nrzJJTgcNOjrcRZD0vXd94jv5ycDX8rAyV/1kRjAvcVMaIEEYRcKtgoUjOQIp\nGDs5rVHA4p96yRBASyZDwUz5vwBsImDo9PPpnSBgfycnPOdF3sTE/0J1X7I0\nyV1P97oKPC2rOnx5OdSFHtnsZqkyMjlWQUO5XPiGnmCYwMYza44xnoA8P/Le\nAt0jiWz3a05Kl2K+KxA8icOtz2IfeOpc/0izSYLi2jrSeWz1eoPjc9UBZsoi\nyg3fD4WvGRvUMEfgOxgKqywwtpbjxTqWJZeJwaS+P8e/Nxnvk09QSwA60KGr\n10HjsO2HzTIxac+rHpWJSdvN2tSZjLK0+rfKiI9SLIJiVnwuuLHHUHlVek7K\nSzg0jSy71g5lWRXMGnqku/oARDm21QwP37tu90ekmO7spffkwZcpCFfJHDBS\ncD5G22fZ4kdVqaJGjh7cktuTzUEh6q4L1epPBJR+tmnE8HarFfDwtVoOllrN\n3qkkF+n6IqOwi6YjVAT81pA9SOA9Vz0TRATmJiqQ901Awrv9DacPF/7ui0UF\nB/n5\r\n=wwiA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCygEWlXKxwYIH3U7MLtjRVQkIJ8Dw2EdVzDfoOhL2FtgIhAIJCF39mM/EyWe4ucY/FtdgYwTM0d0xXILWZwHPZcVSu"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.9-alpha-9_1528812574575_0.16863823339374462"},"_hasShrinkwrap":false},"0.8.10-alpha-10":{"name":"uport-connect","version":"0.8.10-alpha-10","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-4","uport-core":"^0.0.36","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.2","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"7b42a5d79e782afc9bc15a9d635b1e8f06869c20","_id":"uport-connect@0.8.10-alpha-10","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-6rhNsuxSY0VnIHvnVnEc7DMzdxPpHbhAymvJQSbXhGoFza+1E3C4FFAMOeicO7ycnl53uHPyI7WSPbZzAhjAjw==","shasum":"2f7fe5c409860f39693e0d3740b3e182dafa5516","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.10-alpha-10.tgz","fileCount":8,"unpackedSize":2567358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbH9SfCRA9TVsSAnZWagAARXkP/2gIP1eYAEc7iARRcocQ\nqU2vwtiqZac8b1nQxt1hruYkjpVMaVZ8V5ebCxQ58ja7yDU3wjuUkq/SODGB\nOtBmwD+MBNuH9dVEvuZXRJ23IdP5BS9qe81JVaHqqBcwuFqkl+64E3rUX3Ai\nzONg6kB51fj25kMK4QLJ+3gOAAo7qpZV43TAXGpG6Jz8ipih3nk77XfvKhdp\nt6F5bg+eR0429B8EinB867eUhsi8ZXFu6kRIBGDK0uDbpweXkCOOXNxjkfv5\nSlzvr9PTg9fcK9bY4wdrwdkjgnQfW4IawQu+vE1gJ/oCQEVQOOVdF6ed+GVs\nxvZjiJqEOfzlYtxBymvokwWd70AaFAm5qYKFpTmb/fN9ZoNUDL63v1pDfuJC\ntemPkVTrYN0RDLe9n/j2xbBoTxuhTqY1bmC1lweUK3EzencV1sTIBXdG/3Z5\nausoeqRe7KOBKhZbC1gOhahW4MRoBppwR97CFyvCfoW9s+Iu1IPkbM9+u3hH\nGWZ1ddAQOEFhYqyG8fZGxtPQfr6xM0c6p2vEw6oKO7QXArjHvEcNZ9lesdEt\nDmMI4CW88/OwMdvPHhZYAFJbYXiqfkgyecS3xjMJl6OVBHNL7ymlOPGiJt5q\njRO+O4kYTD1x/DSZzM4EG+l09dGnMrHzVyFqKq+baZ0SgNz5rVxqtMym4iuB\noP90\r\n=WkSS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEtK32Xe0mqJGBoJqrc+xgv+zUIeo3uEyYmoLIYmMqU2AiARbz18AKySEH+awTAT/XzqzxQ2YhZFYbEg6wVsmzhTlA=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.10-alpha-10_1528812702642_0.08033744064880222"},"_hasShrinkwrap":false},"0.8.11-alpha-11":{"name":"uport-connect","version":"0.8.11-alpha-11","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-4","uport-core":"^0.0.36","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.2","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"7b42a5d79e782afc9bc15a9d635b1e8f06869c20","_id":"uport-connect@0.8.11-alpha-11","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-38bFrwJxh8ZglOC5TvzMP4uT3oEPcvzKgbuakUGZbC8/kifTzgSYDUerxqyTjH00BYUVihOSTDtoHcaDKsWBNA==","shasum":"a5ffe05f6a4e4b8e3a11250b5fbc8151ca3915f2","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.11-alpha-11.tgz","fileCount":8,"unpackedSize":2567374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbH9aeCRA9TVsSAnZWagAAlpAP/2a6/MCZIB4Jx5Nn+v3O\nY9Gli9jQMRkug4V99XWqyLQlK2IBbd6VHkAntn7yd6Pa9o57uroXGfcncreh\nRU4UhaMW0nSvMli7UCjzFN+zDD7FJiVJYbOmiUgOI4PSBcsZ0Umz7oOAh4Xy\nQmcdLCZ0nqRoQ8obI5X+0agHUJZA5FTmeS5CgIT5JeGYSvEsvSjl3eIRixv1\n8FuiRin+uXpBALcmb+FgPIcpFtb729q6UADcOeQuFwnuwNywAjC5L9E5zRtN\nCdBpDeJZRUFA9DM++CtfpPn8lRUb/gz6H2gfQNuSzU5PMgD2Ztn/WMXFBmfF\nlIjqJ+4rOePI+GRRU/jAfuqQMZ9NVzvIXH837uJ2uG1TqcsZTKkDRePMRDIL\ntjUGoQAOL23m8fk8ZKqqb+5O4UAos2ItGg1ge8OL8lXEWag6OnelEVcdP8aK\nVTjlbSuE8AY40nQNUStpkRjNkClgigfqRp/zJ4gc145a7oM1VSGodUcMECs4\nclG5VWfoq+y+RMAomMOW/o+QLZhLce84bj0LcN1d1nyiEHjWLXY+BfTPHdEi\nXmLkrX6cpSeivhP2EVU7BYuenV28m/g2jtpDts4Cbt31Wkl6WrP+Ep/yhH0s\nVO8oyECIedJOzMQm0puviMJWt7z1qi4m2LUS8vjKFpkn/tN61JkDryvXtvYR\nereq\r\n=qANs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2STo9FqmB8l6DVkTYIt0QQU0ifmL1ZXc43hUbzMO23gIgXOAqiazwRO36nQMPUDViqkLhQStxb8p6alhO1xj1f54="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.11-alpha-11_1528813214296_0.21751256809986863"},"_hasShrinkwrap":false},"0.8.12-alpha-12":{"name":"uport-connect","version":"0.8.12-alpha-12","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-4","uport-core":"^0.0.36","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.2","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"7b42a5d79e782afc9bc15a9d635b1e8f06869c20","_id":"uport-connect@0.8.12-alpha-12","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-ygdXNVZRuCrcQOf8qG/fjFQ44miRTziAp7PIiBuOQJIjlBfb3KUJ+nyLtepO1laNPKy+Lw00AeiMRyU+M/i3DQ==","shasum":"a713f836ee01080b8710015b738f3a986f8cdb65","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.12-alpha-12.tgz","fileCount":8,"unpackedSize":2567382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbH92OCRA9TVsSAnZWagAAdfoP/iu/SZHyZlIUtjsWsXMP\nxK2XdN6UOUNFA1QxUsbWAqygOnftkWn9T3Yh4zPMOC8oCoOaUKobMU+IAljq\nP5p6Kj4jRJaMPyz0XeJNl2c8IL2AFCqcIYwe+prnkph5JYykNTU54Fk/ksFX\n7MxghsLtAFDl547RZR3oKZw0Jnbq4XOXBE1cbqyRgruVr8zM40SoZvdq2CQt\nqWNJ2drV9wqSHZH7r9QmmIjJ5DwJ3huaJSu5eXeWFtdsYxmAdym+3XGOOr6H\nROAyg9aIPyCwjemoPpVd8bIC2K+sq8WAIT04BGJEmUWS/OZLXT4bOe034ln3\niSkvVKPtxaGnEpPoj5Ip25P7DWCbgvv0Mdy5kIdO2RkU32duvQMr119T6BME\nMzIxtyBIfiMwP75ekk92KqkLqrjp4064Fw5zeT8e/74z0Fmqep6CN94zkdKA\nWRly0dROgfRCxqkr+VDKVeCeBOBK8nCUZpv54Zg8sYlRyDjQeNse4rzenZJ/\nd3DqjGnqPEz7b95q8yzUhMsFz/VoFtFn4spZPs40mIfmErfOX9qCdPpxBAxR\nOK1s5Lyw92kBuV3oU1jCJxnIbmt/Busuxq1qeUo8kbhUO36JwiXpreig2ctk\nUy8xyRghozQ+vI/pRlwCVJbi9hd9bcnB1PqrSAZW3o/0go/jx4benFbcKc9o\nGJdz\r\n=aEE0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHMLbf8mxtYdHQx1wTmEEpetxyhQ0wb2gY5mJSRdIR7wIgc+Jp+S5x5xdrmslTy4YEXFORNtUIEyjc1Ak6vjGkiU8="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.12-alpha-12_1528814989724_0.04309729568227105"},"_hasShrinkwrap":false},"0.8.13-alpha-13":{"name":"uport-connect","version":"0.8.13-alpha-13","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-5","uport-core":"^0.0.36","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.2","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"dec32cffd0feda4879f35bd9466059aacd321c07","_id":"uport-connect@0.8.13-alpha-13","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-JAgeC03wVS24kxCD9Oqv3gNdYcNg7QGYqLJFbxOF8LbeISTbldMdqerqXM10y6p+CLu0q+Pkm8EpDA+xyVOVZA==","shasum":"eff7ab6a3b549f27a50d3fb56ebc07f32bb8f213","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.13-alpha-13.tgz","fileCount":8,"unpackedSize":2567521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIBVJCRA9TVsSAnZWagAAzXIP/3gS5AlhwjESihpzOr2p\nmpPXVEqiU1LND8wsoQSjhtGm1eXNSK1DwicaeLpBDilYAcXAOddoLVLBLq3o\nkkr8VksS57UxUHN349gDjIpxrkMVP7tbD/SZJisrX8y6Q2RpEDHKhSpl+4vm\nha0xVGODIqlOOCG+zm9e0ywLivtkm8KAymtGOO4wKhKQJCNHCKNI8JkyDGJq\nqzZX8neY25SSRfNfRjtEGbFit4EeMmm77sg5IV5NeCEP2xtllF2rLB2/HgYQ\nDxLPBa2KSw1zKB0TfnGjWSAt68PP+qFUKFre9B8SGpfkyoO2aJWGUjjlsjH5\n1csg5Zxx3lFTdteWFzKoMKHr9atPTwazrx/r88KGvM/bsbGU7ElfHg6JAktL\nRD3do3hw2nfIs7ZzsDe2mSt/UyaSG6EzMFIi7Z44Sa4oMmtsM0+BxO/2jcl8\nhDshY7DEExhTOrglMIngWtBdJYpo2zqcNTpFBp6rxuLdv+P/uINwKGqz06Ir\nscCxiEl79rFF3uIou+hd5t8jyrg4RUwywoVAnLheIfjS8VvRpHi6/fwsCyOm\nN30npRAs6mvHfPk7p5j23gAD3P6CiAVrVoUHg/MMVzDIy67QSsYbspHWywF6\nLTnbuC3YzIZDnZGaHGy56/SxcFCUQzsWp8AqpOaooHiSW+PTT/RS2gLN0EGL\nzsKy\r\n=hWet\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFJ5BpcAke9kmYmjMODVW0DYtz8e1l4O7fAptNlHJfumAiEAwSOgJMKHcycygsvItCHy4s6haY+5kUryKvs+uwn2Nwo="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.13-alpha-13_1528829256570_0.3949030628490482"},"_hasShrinkwrap":false},"0.8.14-alpha-14":{"name":"uport-connect","version":"0.8.14-alpha-14","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-5","uport-core":"^0.0.36","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.2","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"dec32cffd0feda4879f35bd9466059aacd321c07","_id":"uport-connect@0.8.14-alpha-14","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-ZpSJohJbrSye8EL3CYEU+mNmmakpnlAZrT7luEHFdGmDSEOb71ctbk7bsuSVuS26fnPD5mVkmVGGTFJr42s5Wg==","shasum":"1ec6897b4e74ec46181ca3e43d57fca9ed467ffd","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-14.tgz","fileCount":8,"unpackedSize":2567652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIB5UCRA9TVsSAnZWagAAlcEP/RSrH8DxNaviE/ysQw+V\n704XO17f+9h04DLkPNP9TohfM4WQerclbdgrbtamNqMJxEpSsUsptSP6aPiQ\nMDet8vj6uo2SIN3NAwe6Iy689ujSyy+3Mz7IR4ZP7ALBoCiIE/CxlJjNsItG\nOx158vUqjWSa7QXRgbC90jPsixKpR/kctcsjbmpEW8ta1sPGkda4SgFAJnqv\nPi9zO8Ra2kImuBEnKLEVUGps2/h2FCeOVw9S9TZW5tEAbHpTS2yIO4ScucAf\nxnzgHC9VrkJr8wSt7RGiLk5nUFgHVuTl+QZTAo6Uo1k9cD19nvGZHAno25RE\n6zPHwoXZZWCpv5rHakPX+BcDHXX7SyXsOVd+L8+ZgqQCgLlRy+rFMd9TMAh3\nl25rGWdMmQNei/56Ov6e2WElhTgZ/Ot8GpUqdClDt1JkmUnoTAp9YZo1viSv\nrdEAcFmbmUzfX7gJ2S9gUs88bDwmjoK16LavKT56pdm16IZT3TMcs62g7Yu9\n0Emgz0JU0XUqb/n5lCDk5smwV29oE1/b1evAI8MguwOYvNmVN9QN5D7wsq08\nqJ2sMcN9jjvVrgEvGWJdWZ1BxFJPlE3VbQ7OhhPzPatpIvdXUUSTqb0UhHDz\n47b/35OnEJhh80hZHjite0rCIXk7SBAvfe+q9qA6LXn5TiZEiT7cwYBQS/d+\nZxEW\r\n=sxJK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpVyAJVEutWQHCx4ZJarwvmG96pDerjKv//8Km3s8fhgIhAIoxbo4tFdUWK8hNC5IOzztd9EoneOn56cNA1hqWFOx3"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-14_1528831571507_0.456187830982147"},"_hasShrinkwrap":false},"0.7.4-alpha-minor-1":{"name":"uport-connect","version":"0.7.4-alpha-minor-1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","did-jwt":"0.0.8","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","uport":"^0.7.0-alpha-minor-1","uport-core":"^0.0.36","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me/gettingstarted)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"2a1035fd3bf023bae58da587532a0baba3f84ac3","_id":"uport-connect@0.7.4-alpha-minor-1","_npmVersion":"5.0.3","_nodeVersion":"8.1.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-KCcXzfodgzGv7u6q+yDzkXRiEZ7DRqhRG5jLG2IcGP1MNoVCX+mWqkL8O9k3euc0fvbphKeFQO00a+01WwBmAw==","shasum":"4c87aa73628300ca9f921fb1fb6a2133eda2a433","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.4-alpha-minor-1.tgz","fileCount":35,"unpackedSize":24134673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbLQeNCRA9TVsSAnZWagAA+K4QAJfCRMNBefL7L41ipsgm\nbvUiyP1AkgrJ23C/7C4j9KRqO/kABFdoO+BR1Blmt3LMu5ND4g6IdPXhe8qv\n9ku1spWbTOT8jpRv9IVB2fZ0sB7zKj4OP2gayXdcw2suT9UKxxO+078PR6Tx\n787eX4u8JUHmHZo5ILFIwq6pfobDoHHmc6G5Ox0gRfSM+p8hERNmPQ38SwXg\nidD0QvPbcYHXiNDYn6KJA8t/eCYpxvYxWPjnCMvjkduf5xZboVbdZqVuF+Yk\nLlVEKxQeSF5R1U0EA8np2kdwmhjdcUpi+JRN5/zBk4KjL4ULb9juVUZnQ8w9\n05fzx9rngPghPTZQlt7yRDkLwc08bQFRoYhPGpL9/ixiGuQQQ8O9TT6gcjnN\n3MoRXoQRh1dkcQHEKpHvl9/zfmpTQ2oyMafN3G3Hc4ixCtsywm6hscokmIP7\nfiALKxPB+wE01mS7X/sqhfOtZpOc7lXK+5orbc0W2+FpBTgl2L5B7Ul10Y7M\nEksGCUCa/nXtWt6KLeXkjTmjqS12FDEAJqzUfAWKNuAHVk/J7AMo5K2NDkwN\nb+2AF/EFfmfAY/x2q9/4zJat0BJWnAypLN66d5z98Dgxm7jjUhmY3PRe4rnf\nHRFoZfUwbH98vP7tS3xL22cx+U8DPSzpZY6KbUyftaw8Ft0l120JrrmYbtXm\nyp6F\r\n=hRus\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCt7/zjOw1pouvvd59IOR+9MSK4LP2ap3VfDRd2lfRMMwIhAJiw34CvRDY3389wBhy3exuaRhTT3LMcfnK3NkH8uELO"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.4-alpha-minor-1_1529677708959_0.6897839753694264"},"_hasShrinkwrap":false},"0.7.4-alpha-minor-2":{"name":"uport-connect","version":"0.7.4-alpha-minor-2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","did-jwt":"0.0.8","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","uport":"^0.7.0-alpha-minor-4","uport-core":"^0.0.36","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me/gettingstarted)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"f3db68e75371bbd7d5e9831b8d3be774e10bc9bf","_id":"uport-connect@0.7.4-alpha-minor-2","_npmVersion":"5.0.3","_nodeVersion":"8.1.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-EtIDk4bHR2qstlV9H8z1m+JTJqSbgKRl5qybBiSvDO33OwNY7y0CQuwoxNiHF4WzYWs2mHJWolIphzhsIUSQgA==","shasum":"2f1e504cd2ad7bc77a441d7e2c42c6975b91092f","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.4-alpha-minor-2.tgz","fileCount":35,"unpackedSize":24136885,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbLV7KCRA9TVsSAnZWagAAPZkP/Rqw9OzNelcRleW/64JK\ndNHWrQE81gnVj2CU0a+Ph7QnsoG81d22THyEvsMHvShwkmQbnyNwK/1n64eL\nhA6dyi6cMniHhTzl8laBxPEmy1dX0hSNrXPbN1TI7JzLvwGaG0tKz/+3vuSh\nj3aLeYSf1t565PlDKHkpErUp649dgsNzfIEHRi+dSCV7+pf/nXaPtxQ6s+y6\nMr7QdonlVS+J+V3E8lP1SDUaDa1x6T2AQlkQZxBqJgYrkWD8gKeygdZNPH+p\nXOERHEWOdDsZFZ3mdQm4ahjhPV5yiunT0e6CeKz2l0fP4OraqUCg89DF0ooW\nuIG2tnbaGufCwgF21IJQq6m9juWHN6pCSt4ktORcCYnbZXpDQqtJPrQ20sKU\nB+XS+ebT4ibTUrZggXb5hDdUCxtHnN6glu6Tfg9nSk9gMmh198VodYH0E2ub\nw8wRJqekYincqTmmUOZQc5WWQxaWUQOaGBtbDTaQTzZdHhLtU78ufVidnoIl\nTcMLm2kxO2qf86ypJkZ0GaIz698lK7I3eednRQzOgPQa2nLnpFghR/8d6SoV\nX/dQbMqdmZ5k7eUVslmW5skVpJYkoW2enF5pUTkuWN3mMSTLDMXxFxl8MZ7S\nG7DW8V2Pjes1kQHwXj65kEyoVtLgwLBZTk23pMCVxeEZvOFH73/F1wGCJwRh\nEN9U\r\n=d8xD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVzHX5SFT7+xJl8tBbw6nuRNDLqddkijM2kjXNVY5sSwIhAPt50xg6OnwOcbLXVUIO1kOsWcXxFVkfo/N6/j73LLJ8"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.4-alpha-minor-2_1529700042015_0.08767979037698814"},"_hasShrinkwrap":false},"0.7.4-alpha-minor-3":{"name":"uport-connect","version":"0.7.4-alpha-minor-3","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","did-jwt":"0.0.8","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","uport":"^0.7.0-alpha-minor-10","uport-core":"^0.0.43","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me/gettingstarted)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"f3db68e75371bbd7d5e9831b8d3be774e10bc9bf","_id":"uport-connect@0.7.4-alpha-minor-3","_npmVersion":"5.0.3","_nodeVersion":"8.1.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-wA1dJ18nMmP2IuhSeS4ksHdaztVNqDDmn1VGs3YSmqQ5/AsN4/Dc9VpGWqB4th0gXc966pkuLi+LwLIZWJstIQ==","shasum":"7d8baca520c12c01f5fe590595d63763350f6428","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.4-alpha-minor-3.tgz","fileCount":35,"unpackedSize":24136886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbNSynCRA9TVsSAnZWagAAjUoQAIN70upErYQeff0jToWw\ny8f/Juj2tMzSshat2xZaVmxguLB1feoIM9jsO1ryXCSWEq66+sDMNJxfilSm\ne6bB1zXIA/4O0KCXmNl/foEF+Vtiyd/0TkpcqKqY4oFdNjpiq8MtqHnhIScv\nKWQV1NLB07maM7HJ5tuQ1sQc7NYoAudUkfv5JY0jShwITF8/fYbS8zkS3RgV\nncObW+UP+Jit/zlvJZ6Dchem1k8fI3KqK6Prgrk/0x3YXlqunlyCUZafExFe\nYTvPbjxA5eaCA/LPs9DmJQsm2VS8CvcXe1OHpoMU5xiPknskNV7NSp67rKuq\nVr2JOjR4sX0lSlAV5U2k2KvPZaeRi5vwtntOz2NfTyr4Uw70OL8TrYzjVJH8\ne055VVccHxhWeYIjYJx3C9CLP0z67NJdexPDkU79rXy6TyE4KIa36O3ZDLa+\nJQWmYRW+OfWhaS6OEyPG6xIM+fMM26N/0StPJIWeDj8cFxralMPi1TPhrLmF\n072flyKy5S1HXk3y+EXHBkUOuo0jn5eyl3/JGyuNrS8y1zOrg2iTRW2jJ3oT\n40cOzpVz90gjTNWY1TYcqEnotsTDp+sG3cEb2xOMfrUHi9o4/Q1D3GMSuKi5\nyDPjmXB9X4mJ95nVz06tkMLNdcazr1EFjh1PsOmGjfZV+VREAYIXAAx97hoz\nn1f6\r\n=89Yf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPrBHURtFsEcEqptdvY86jZPf7jTpVXDO123cmkM3/PgIgOMB5ClLd0i/zr/lq4GRsrh4IPmiKhVVkzNKlluFYRWM="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.4-alpha-minor-3_1530211495517_0.8201864943011594"},"_hasShrinkwrap":false},"0.7.4-alpha-minor-4":{"name":"uport-connect","version":"0.7.4-alpha-minor-4","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","did-jwt":"0.0.8","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","uport":"^0.7.0-alpha-minor-13","uport-core":"^0.0.43","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me/gettingstarted)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"f3cfa9d7b2c506a95b110a02c21aa8b7527e0978","_id":"uport-connect@0.7.4-alpha-minor-4","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-7PHMDk9h4Kl9p/rhXQQpU+DU2fYoPN8PncOpuEuMCk43gKrcmwVrtaAEV4XuMY2SKl/ldUpa9CUcV/GMnMgNow==","shasum":"204300fcac78cb18e2571cc3ebfbeba2fd912345","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.4-alpha-minor-4.tgz","fileCount":35,"unpackedSize":16239751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbSNaxCRA9TVsSAnZWagAAG5YP/1OoOM4y78GU3HimD3nb\nJ5ISZHOII4xS7FFt0DC4jfEsV0rzR0ORv6zA65oIrgS5QmBGgpwYcNt1UZYg\nq9Rdxa8mPRsBEX3KU/cwdPeEizXOQfTA095vkUkxzVhJs9CsXrbppAmrNU1l\nsw8dRTAYBulvB3V8BujFQzkEhFebvI9pLdM+Xo9l8R9kI0xFYwVKxCYR0Eny\nydm7gqjw8PC+4R/Sx18FqO04BU8t8Vl2KVvB9p93g6SeikGCHC3wu9cD/RMz\n7DUg/37/cZ4pkICvCcNe2SqR3KRZ0+LOkpEAm/ovGirvKRLTvXp1/01p0mMx\n0qC1AByu+tW4jjJ6Wmr5X5TCOKKH1Ji/kQZwTRexf3iKxt5VAAI490HKL090\nuxig4zDnaUQtH0KUW1tj5YmJsDHc5o6aMr9bFLHCOFpTU+3rQPBknLeXHnKu\nOETnL+MJWPd0kn6NmI0gaOVIdtMb3QyNr+ZLM423yPaO70c3qhWv8C5HcHiA\nxaTaiskMrwvXpWVIFTNZ+HpgrmHauzxtug/UtWD4C8LybYu6rtwNMChla2t4\npgpayGrTGro06ELrlXquk18Fvp9bcGuiL7EUorzllt161Oh7Dzc8vnjpSmE0\nv7kYzeKLJhn8MGLaxUka9tEZ+1dm+daJa/IPhrBPbyPYBEGLJ5mNxJIeukRs\nJMNr\r\n=j0dn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrblXXsq8JJDebPDotF3m+5QRFxVGkfyFbrpx++UXhuwIhAKfnP8Uh6Augc0YjyHtriyKW79WxII4A49rxx+HqXKYr"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.4-alpha-minor-4_1531500209819_0.3565153457298018"},"_hasShrinkwrap":false},"0.8.14-alpha-16":{"name":"uport-connect","version":"0.8.14-alpha-16","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-5","uport-core":"0.0.45","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.2","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"0449384d7875d2ee749b87987b26a6af0ae9f97c","_id":"uport-connect@0.8.14-alpha-16","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-h9x70lk3Z3132soyHviUg25SEf4Q6v9IgUOwLQ8Vhz9zUguxsJYd7+/7fRbmUnbMNWm/6+1qcvPXEg7k6vAeTg==","shasum":"c3e3bb07ba3a5e296f2e2a16ea00660c3226d2a8","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-16.tgz","fileCount":8,"unpackedSize":2592340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTV7CCRA9TVsSAnZWagAAOJQP+gMub+uQdVHHZ3nbu3fH\nFcv1nheLSK0wowq5pMLf0pww9b9OCJ3gjPlgV00cUt6of+ptLXbciZjKD9p+\nftlJ22v5vTTv5k0ZXbOc2HDZPfoW5SR0XKkC19HZMPfT6ac9qvm1ZmaLIEBW\nr4JcBTg80KAuNre2dFiMo+Hb4dIkyZJc0NO6O6jbdSzoXELZf5SrFtfYElhW\nzbq/WO/e0i8uuTp1GG8bQ7+YHtBwbGakg1NvdimNeCfryU8VlL5YzZLgMSc0\nvCukSGS/rrllLZ0OjJ444qxwEjhiOVzNAiYHSLNmBUfjMk03g0TwkBH88qJw\nLlB5F0YPjPR/M9xyozHuaBFoS7PZCczAGdi1sQvuRP9DrqU3v1elver6YAbN\nC7v2eNP6veexpjNBCal9yROnBlEs6387MpHfohM48uuyjJ3cvy/k4huFR+2K\npOCJIlu+aMCw51t3sjbx7ByZRtVnJ/kgpz2xWbarqAnqa3ECHmfp43LeJxm/\nUhh5lXL8nv0bOov06E6cDWgs2sjLrIGi1Kz8jEcOp8cZuhy/bcpsKJsgEU2H\nvWvbO67kFePP1xwYPsAdT5++9MoQ10c4qT6Q49JZlgV3j3z+GSzbMl2Yx89i\nhxHNcVVhvFFb7fpvnkPEOGJCwHJ9k5Yg9A+38BVSnsXqZsxmOUDsgKIY1kXo\n0VAq\r\n=dIX2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAujduD4hD8meHzzi5dreOqePHhPS3w9N4yETgyhS+AQAiEAlG7kRgkxgdIsjk7R/8FNAJsiv657SeOoWqL3k6x4TLs="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-16_1531797186262_0.21414726538454998"},"_hasShrinkwrap":false},"0.8.14-alpha-17":{"name":"uport-connect","version":"0.8.14-alpha-17","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-5","uport-core":"0.0.45","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","eth-lightwallet":"git+https://github.com/srirangan/eth-lightwallet.git","ethereumjs-testrpc":"^3.0.3","ethereumjs-tx":"^1.1.1","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.2","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/tutorial` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"c842b2a4c1fb1cb183455915d30b10cb5bba557c","_id":"uport-connect@0.8.14-alpha-17","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-8iPPEWlmSOJAlwCNp61SzoWXQjLX7TF6sQ+4zxivvnFjtbpOz5EsLeyDvILIGA/UvT3OcoRZdFO1HmB+PvOypQ==","shasum":"043a4699d1288ee12baca47bf9cfdf732d6c63ce","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-17.tgz","fileCount":8,"unpackedSize":2593383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTdv2CRA9TVsSAnZWagAAYfkQAI+Ayhz8kIYj4Uq8uCqb\ny1hi0ZoGTPYcq+NPcKG+f7Hnc+cpdzrT6BlfG6HT/ed0Yc4riQhKkcff99X2\nla8ruV6UUZ9mrikqObv08YPr7wgMFYdM2Mrv7dHB3CYoQWkKIiFRzZDi4e7x\nxE5UZZRrYozEsqXkWD/QtO5PXQ4pUyFlYdXwWvinPkm8i0MKhJJRMPR8wrLN\n2Ae3rdv8n19iIpUycr8bzeWiEy8sB+buA9j9PEZTTTMrVI0bH9YwFVyauYJ5\nU3yy+QJnYhZPWHpymnmcLHDmthoasQBInxYo2Uls/yaKRJgh1F3EedgHpZmp\ne7XerIIcxn3MRgXp4Iu3TRvcYMFUPfB860zdzU8UCMYVaH+XdG8JPXLMbn0s\nm7Ld3wIqYUZkaQ2PXkbWfBRwkikM0mG5bhdWZjvPStKDi6wtGMkjuuZNHwSD\nwIK6SwbsboOvxCHBTjTNG8kcZ+fMC4n+N6wGenYG0pWRZntYLM/HQunPd9EI\nHKfUSRPk/zrDRvRnFaerWVkqFsL9Q6Y/Uuc2dj+xhZrNiLLbVd7/1tp40ehL\nae7sY1bnAd4MIyus+IwamhdgA/L8OcCp+D7SckUx3N1yIbH59KNPk4/zKXjU\nntZ3XuUH1oVHoiFJPCFiH+7tTyGSAdH6Q4Oj78AbLuxm1VS4C585XnCk1Pb9\noqQC\r\n=pdHj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJnYUQsBtcGvU+uf5tH0BogBQsTuDznv2YvHLQ99bZ3AIgMwb+TkH3DH+x6omDVbMXYmXVC4aTbOZvz0OcF6bFMQE="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-17_1531829238443_0.8536960875020814"},"_hasShrinkwrap":false},"0.7.4-alpha-minor-5":{"name":"uport-connect","version":"0.7.4-alpha-minor-5","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","did-jwt":"0.0.8","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","uport":"^0.7.0-alpha-minor-17","uport-core":"^0.0.43","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me/gettingstarted)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"f3cfa9d7b2c506a95b110a02c21aa8b7527e0978","_id":"uport-connect@0.7.4-alpha-minor-5","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-tS7JXFjeJ24gsfnK5UOaB5TAjiIVpnXrFwuMkRC9dIk0buqPX+kAGxn5WfMIy2VxMSKj2t099Id39OqtFnMmvA==","shasum":"02b17ee63df136dc5db85d13c316b9b649f375a3","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.4-alpha-minor-5.tgz","fileCount":35,"unpackedSize":16242470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbUeTUCRA9TVsSAnZWagAA4AAP/1YulMV/3ptB1hdvsVJZ\n5wPea7VDLhpJGAHOXXcC0PxELzPiRjEkbPNKuiYogFCvgOLvB1Ty3Uoggirx\n6scct+gvoRDVyFTag1LqL3A1J1eZxYbLygVlNcmVdPAwZkRdLlQHQgO7w6JH\nBkgNPxVL7yEoZiu+nxul2GnoNkidWU5eBCTmDH8CizLbRteL0qbV3QzWoKwl\nz0Lpf1RVzgefdr/DSbELtG7gKQyrHHpJVM3K1A97jI+iShjDEpYposSMVVox\n5MBWWWRtTDWetJGLApE6qmcaFprj7vRVPET5AFqU6MP+vMHVmA/S/rO6eWqN\nlRKoD6LGZdpchcxRlJP1qYlRzXanPHVMNQS9f+Dk69Zs9Hp1hQn+KSravbjj\nYguth9BixpiLEyz7sfDEkJtMD8DmQaSCj1Y9bM2CoU/RwscJxGRCHUCc0tLG\nCPjToE6u8TucxH9CheDKczSoHzjDQUE7LC27Z/0vOCyh6GBfkkoFevPnB3ap\nBEDXxB8cbFLvS6LQoKgZtFpt3n7D8LKaHyoHqrmLe98Eo7jo0pt+tANJ27mD\nxKdHW2u8QHfnj3ZFpUDDEiWp/vZCLlYpNg5prDjh2M+nKgMEsuEUdCd1fkoX\nnDaukOD6+yThMlKmHB5vIP2StKMIRWeSycg1wF4B89RqgWlSXQxgDLGjv0HP\nSzCr\r\n=hmP7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSR2uCCA2hrhpjDqRSDAbtCDnqs5sMY1UEYDFCz1VaVAIhAJiYZMhdcd5OhYP+D9o6Hl2G3/BcDNTD05ifdVTcCsGb"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.4-alpha-minor-5_1532093652369_0.4956273474640698"},"_hasShrinkwrap":false},"0.7.4-alpha-minor-6":{"name":"uport-connect","version":"0.7.4-alpha-minor-6","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"ISC","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","did-jwt":"0.0.8","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","uport":"^0.7.0-alpha-minor-18","uport-core":"^0.0.43","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me/gettingstarted)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"f5077fb314dfc83fb8c86d4f8c96a3f75069e761","_id":"uport-connect@0.7.4-alpha-minor-6","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-RpYNtiI4IX1yj18htNp4BOV8F5TL7OM7RvajDlBavxsd9P7kXwvS6p8ipc5EZaG+sfwdrxPLs/cPDnQcn/0RHw==","shasum":"6038287ad4004cf81d5c85a14e9141caaf5b3f23","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.4-alpha-minor-6.tgz","fileCount":35,"unpackedSize":16241852,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbV4pKCRA9TVsSAnZWagAAsFAP/0G9uSgoqrzgvyeAWMcD\nqdYVsp+FTI9TvVWLHxLBmzkXtJti0ADbdUcCf7pYrcQ+MG0EQwznbXTlBR69\nxdkoSzIKL921z3kQO6I+GXdImEUcFXQ7Fa3OkCmxyUyt+2s4Zl/X2LynqxJ6\nhFdMac4GQu7J28mH9H691XLgiDOpdHx8Oy7/NXMRnIajKzxuuNly8zdsjnx1\n8ofExcdiDqShab2LJOx9qyYUgAZEGFC9N70Xr6ptNa2lKP1kxF5QIKsCKczb\naq1NtgZS/PkZ8pyLJY35B1Y0E3+SAbFjSwwo1D/kgRW4GmQmHxCyxQQDHj5k\nKQuLYrJ+z+NNMcl9UKr9Dz7HE1uxwYNS3uzfXg8kRuw3TnHlAYC37UD8dBaE\n6lYsWrVMSp1fezTB5VCdxpQGcszDNMxWqlMUPfQNFx56vjrJ9+gQoImCbDLz\nmOcPcJRW4iSjhJVZVa5tuos52yJX51lAU5URqdBktIP4kEnPS+C0xDQvYFgl\niWarXJEc0jCzviznbYWMs/xezRSqGYUAzJjSVVVGwX0+8TRLyActIIaZjUIX\ng0fnQMH3PBkel/7g3kfP5Z5brZORz1sUiOGIrmvUk5Mso7CflXv3ziTbdl8x\nNKILX+afsOXhSEVuW0rfLWFyYiAFmNvO053JkNj1aOJcyNQeUoW7Jj9cCQEE\n9bEB\r\n=CUZC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaORWvAUOxKbdt4lFTXTm2tJ5j4zrubNa1QN5du2PIkAIhAKJ5stTTUJlvTPbR+PbLV9x3RR8ZMctthbxyvg2+BGip"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.4-alpha-minor-6_1532463690232_0.4391218345695964"},"_hasShrinkwrap":false},"0.8.14-alpha-18":{"name":"uport-connect","version":"0.8.14-alpha-18","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-5","uport-core":"0.0.45","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"1a24c809a7c49ce7e6c9cc9c78245dc172bdde57","_id":"uport-connect@0.8.14-alpha-18","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-fjsy36lFmo50pBa+9owFOaSnS1eJcLLElXWgskjGpJdfEK5bxPwInlFREDl/70Br5ZJvdXssUTubHQBWvO5r7w==","shasum":"c452c5edff8863d213e8b8ee200668f9c206dd83","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-18.tgz","fileCount":8,"unpackedSize":2940010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWMxHCRA9TVsSAnZWagAAhBQP/iKXB4aTFDCNQJPiI0cM\nGXdy1DgGErXMAoKLn+UKpTQSdxC7XUNJU10c3SnccYmq0ixOVWc0VO9S/U7L\nbTqkaCZHZlN04kI28gC7ihmSo/8p8oZK7SgfOPgFTu0eLRPbHVyNpdKJiP3y\nFfvb0o4YrpPvs3MCFqeevovLn+VgBCeahL/sBuo7aiM8z7tZwJd0JljtfF6d\nVCI8PGjecSJEwYFD455YkjqNFCpO4OcwNCh95jPZWldJXtVc4vcnRqo6fVra\n5CMOJeqYLo8UoCneeYH7zp0eeqJRE5s5Bl9wZAOqjfASWB2w7EJm1g6e6YHO\nbcm3MHsPYYiBtvzMiKKZG8mHt6p1tTCwMiPYY5UhhuKlHMFjtR8uuhrefrtR\nr5ChHnH7xrTbvUUETZFYtUm5P+F+muAsZbeo+76RX/3ILQZMsQX7SWa1psmj\nmU+WF/zS4WNx+bhEvpFxKSJwJq8EU8uf8xUXRWlqWRn3nSgwEImBXYqPzQKI\nEXAL9zJtq0PCQSmzxa+zbFVEhcMpNIsyzevxfHjyIkq2bjonqHJAkDummeL7\nfMtqJ5c4sf4fIUfV2liprN1sbcAE/Koygzlj1ejpmFZAtiCkyxRIWClcGOYZ\nP87e1Wm8p4hIlckDXI73QBNrJR1Ksv4cRomB02KL6Uc5Qthg1aCNxSas4FK1\nDdZI\r\n=DEbp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCO1rXDmnNY9iI0Xu63yTA0Op79TodHlL6T1gAFCZRmigIhAOJlVi7AGpfgn1zzd3YidyzXUzHHs5Ax1MJ23DrKUO1c"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-18_1532546117734_0.909402594731004"},"_hasShrinkwrap":false},"0.8.14-alpha-19":{"name":"uport-connect","version":"0.8.14-alpha-19","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"http://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"http://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"http://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"http://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"http://consensys.net/"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-5","uport-core":"^0.0.48","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"1a24c809a7c49ce7e6c9cc9c78245dc172bdde57","_id":"uport-connect@0.8.14-alpha-19","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-L2d76BWUYwYwyOjOwZkT89Pc6A5usRYRPT3x5cplH/emUiG3jujmAv/hNISNd/ts0jGphOB75xeOE2P3aF10QA==","shasum":"97e5ddf9201a93864b7f342796c279b043eb8788","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-19.tgz","fileCount":8,"unpackedSize":2940031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWOGsCRA9TVsSAnZWagAAhskP/AoHakNFq6wy2ILUrBO8\nlxtav0nKIkKwPRcgHWt6HV5QU4w7rlwu1yrytmMNngF7opPT86aCTn4jjGsu\n8Ktx6T0kYrzYnDAIRUVeuDQ5jrUGMoHJUldVOz4lqur7Epo9GqOBI/vcviWF\nsuoib60QSfdPynLt2kNgocXR8YGHI7j82KlLgB9KdUoUGt2ilriBRonNcDfO\nKgL+BBv2ufdb5frjFJseVhMM+oms/V2g+vR9cXOfjTbEWmYXxHKKueQbVQlk\nxhgJVO8vQ+oOEwjWEf1cKtvpozQ3E+Hh4Z9llQRlBuTjfo3njczZGgCdlP/V\nAtmv7HgNjyxhWjd89iyfmzBsUXTfblGq3QS2MmeaePnZpNgWPOh4/hRzkWAs\nfUI4zz9q/0MoqVVzzLs4oR4566SexZCXiFuOhlT1DzXBJgNtSio8VZa/DSVJ\nidXp+Qw9thz88c3mlOA99bJVQSh2GWtllVg9BcV3gZQYgCcyAPrlnbHgC75/\noj4KOkYV5UDT+bO+Pjc1zjgota2Rk3S8pDEmYNi1GR8SWfq7yLTKQwRAAsMn\n4S1OpnVA/TkAK5h3tKI8GiB1r47sSOFZTaxfo7M6LbsMbkHiihR9vfKa1HsC\n1JwyrihHYk2YXSaqKjfKjmnGRgUzvzG5NE3jK0p0U7Renmst6R7l9t4efm52\nWRJh\r\n=BrOM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbeS0hzXGGpsrIeLYiIEi9+vBSJl/kkYEuzTuj8fXtJAIgGKWehUsNAX/4V88nvRVgwiFhyafP4qIrpDRopep7/mI="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-19_1532551596118_0.11135026726855624"},"_hasShrinkwrap":false},"0.7.4-alpha-minor-7":{"name":"uport-connect","version":"0.7.4-alpha-minor-7","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","did-jwt":"0.0.8","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","uport":"^0.7.0-alpha-minor-19","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me/gettingstarted)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"08185b903184a4bcb1082cb3e9ffa377e5587230","_id":"uport-connect@0.7.4-alpha-minor-7","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-XQ5H9zJRi3zqVJtReDC4+6S1eCR/yj24+VOH02apzUTTJmr+66ZDJhYV8Zmuw4cOLf2btC2Gwwrs3q4xlljeKw==","shasum":"fcb676877de4c0511348505e7441639b2d41ecc4","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.4-alpha-minor-7.tgz","fileCount":35,"unpackedSize":16242861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWcN5CRA9TVsSAnZWagAA0nEQAIVnLFNtpebi+JEEe/hw\nkHHipZzOksAww/NHcv8AXiPGMV7DMSjHBgc6JAC9/KCvZpT/xWzQ2Hj9afF+\nDIN/Ob+WcOqDVc7FzOgFMOumRORxloVJ4oVV0jQZW4JiLSKRqtkEODIUya45\nlSTzhJu1IcsqdlQKlPJOwo92zXo8LFD/QISTlS0NM+FIwQPlitCrddtQZQ/0\n/jWQ2NXpxcOfEUTemVEAajJRZnE61Ktzts5Ox2ovZHBJDkkWiYeVW5I+tC84\nOAf+L3JiVr3lFABJ2s4mf6nCyxGw1KtzveML3by9HD6Li/xlyLw4FolzR0tV\nf0oNuc23Heba7yVB6QNEJ63x+3NO0uN9hYXdkuV8nihX/I1ABL4Wv3RpRzse\nC77nPUO1UIgtVrYH0qyInaiP2mlnKYs2Si/kZPkxXHPhdY1/HChRfYGq6+x/\n+LgF/yoETSyD9ymrkOVJQjBBolXtavOX8TafiHoFpUBdPsznY0Z4AwcyvtZt\nTbz2BD0sZhScsjffB25AhgO8U9alFCemM/XuRvEScN+2KAoqxwBSXpmGBrso\nkYAdTCXvDXJrXoNbsPzvRCcyKhTwymQ0xaB7Tyj9Bc8wv85KRqnSoSt5q276\n0K/ViEoAo+BArjPIxDiV9ycWlTHyzHJKkUMQhDVGfAUJBN831CLPEC/rJux9\n54Ha\r\n=9pyQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdMOLlb59EJQOqtsTIRNMJPQvD0lBLaSPCqtuC4k2vIQIgAR73FyaxgGseiAzC1SHknprMe+WnYSM9uYMHiSh8qTI="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.4-alpha-minor-7_1532609401019_0.3772776385893841"},"_hasShrinkwrap":false},"0.7.4":{"name":"uport-connect","version":"0.7.4","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","did-jwt":"0.0.8","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","uport":"^0.7.0-alpha-minor-19","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, and a mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through the mobile app. It handles the communication channel between your app and the uPort mobile app, which can vary depending on the environment which your application runs. Over this communication channel you can create requests for a user's data, share credentials and generate transactions to be signed in the user's mobile app.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a quick start continue below.\n\nFor a more interactive quick start visit [developer.uport.me](https://developer.uport.me/gettingstarted)\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport { Connect } from 'uport-connect'\n\nconst uport = new Connect('MyDApp')\n```\n\nTo ask the user for their credentials use `requestCredentials()`. With no additional params this will return a user's public profile.\n\n```javascript\nuport.requestCredentials().then((credentials) => {\n  console.log(credentials)\n})\n```\n\nIf all we want is the address of the connected user we can use `requestAddress()`:\n\n```javascript\nuport.requestAddress().then((address) => {\n  console.log(address)\n})\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar uportconnect = window.uportconnect\nvar uport = new uportconnect.Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/index.js`\n\n```shell\n$ npm run build-es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build-dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build-dist-prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm run karma\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm run karma\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"5eee12ff1fc8d67cbea9598d9e56c8cc83f05875","_id":"uport-connect@0.7.4","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-rZ6jRLBOogDCsPWE2Pk5xlcO8CgmCv90FIguKdEu8SCMODMLpCHoKKqaDfewIj0B5unaQCFAQ4RZ7u9cBJkZcg==","shasum":"e7889af90308adaf99c51ace042ce062c2b73011","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.4.tgz","fileCount":35,"unpackedSize":16242846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWjuVCRA9TVsSAnZWagAA/60P/2fwO3gq7KjQp3dVQIPB\nTUer3Tv2kfIrmR54/0uNN0Rdbp+BSy5CFi9RZp+hV85+hqcP4ZB1QYPPmM3L\nJTq0bBPi/2EIv6u5Y0onXWtdXtjwcp+ofgBMnMSLq+QC7NY8Ex8qxiVYCN8n\nfKHokUeo/rErt0pLw1YASCcjtUjM/uHd0i23G04Q90WrOsDaUA8dAaYSoE8V\nD4tNlgSbws5itN1/mIL1s24qVs4DFgFE5r8e8P85j61SwG4ER+lOfiDYr149\nReAmvkekb5XDYHrz3gX6FDFE1A1dfH5I/u+YZ+2z8di8FkjiqpqIa3Oi0P0x\nFDh3QYAynH5+I2VUN7K6nKKVTRmytP0/bFlzdCdSgWegXjsESQtIzZiyq4fF\nmkFxW2LwUiMdim656Ed29ZZsXETuiSTFKrYwIHXv8XFBN3brFI/ef3pfzJQ6\nZFJN77HO8IPaa0H4M6oKFtI5gXPvA3dh+ShX1OGiO6F97V+QVgvNjgHbA5oy\nLinRg1SNrXNqwZHTgPSyPTg9TpEYCoUGqYaFMKJrNfxVH3cleFRptdVsqrFW\nlXH3GjeamKgLcSRQ42AzdryXZTUsWNnG5rhG35lCpfGu6BVJlKMJpL3Jp8ba\niA2hGJlSX3q2NtOJJnHAkXCYLF/mfyS7OLS6C+2KU9b8qO9rGrpLUcPFYD1G\nYS4x\r\n=nkzq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICXTp/PkU//LVMwqGJpQJhWQCzGh6+kySzfTwpWz2v7UAiEAg9tAlI/lxBS52nn7Jox9kXHL0ybSdz+7nrDtaeqIFAA="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.4_1532640148960_0.9112799724351195"},"_hasShrinkwrap":false},"0.7.5":{"name":"uport-connect","version":"0.7.5","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","did-jwt":"0.0.8","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ipfs-mini":"^1.0.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","uport":"^0.6.3","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"b818b6b2a5cefc39fdece155bc6132dd99b7b8e3","_id":"uport-connect@0.7.5","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-p9W0P8c6CRmoeA8TOe2Xoy07GzTfvFb6k+TiSNAcX0K+O4akLln+9CxEOQsbAVdkA4EwhA5sW6Knu370fqDOIg==","shasum":"9a6470582d744361df3ded864dc772bc77c4c885","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.5.tgz","fileCount":35,"unpackedSize":16242831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWj6cCRA9TVsSAnZWagAAqm8P/A8wdcJQJ+yBWonoGCA+\nHsG2IxaZaNu7pCpuyIy47pnyEcrzdrpJ15U9xnSRfiIsNUKqMNxDNjVQAEpA\nPUfurR3Lhn58ehZjDVsq4/7QUyVzau45C8TRRYVLupyztrzcNhH4ZEBfHHzU\nXDlxjzCR0xsJwCd2fkzlBknC0UaMrJsa5GKadu1npBujHs+i0eWYuaT/wP/e\noMpG4qWtRiDVsCi0Wr4b73Gimx1rxW/XBvw0YUtm+W1ZgpxvocRR0jjw9tm3\n+EKXDXPXbPF16ilKHWrmbdaKewjDVjqTnLTxhJksCbbXjSC4u5igxwOAEySD\n7hZaywuhKLXswNweL1ucpeON8q5nowB5qsIbYjlAlGbFpDnZl177nve342S5\ncn0+oeHeGRm/sQhVbCV742ZkwkkVKSUJZ8AQQ3vdusj62Cdas+Nsy4Ny4kuO\naJr7aBoRByfXNviMCaw4kIwCazNg5t0E4VvTLFfhNAwsDfDq7Hj3Y18ltQTd\neTnjY+jDg9P5CxgAavsjcNZZ1eiL72ZjuaoZl35UqbWUIkVkuti8ea5GIKV+\nwgJyJ1xfYdOyIaF4yeRp34QUmu4DZqClJJE6DzGYE15NPkQg40j2NSxGISXD\nvbEUCrllNR/T/Co6e1pRtDlejyzwgRQcy7fNbQxehRt9+B8DiT4i5ySeNazb\nzVDD\r\n=wr+Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB1pyCeb2kpYnLyjDzVjqE4bYS9k44drJPQPtd9GZQi5AiEA96ycpZ/EiyyD8NLIVzuY/wV8SkSOYKiPhaU9dEcydYs="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.5_1532640924014_0.3005148144087686"},"_hasShrinkwrap":false},"0.8.14-alpha-20":{"name":"uport-connect","version":"0.8.14-alpha-20","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-5","uport-core":"0.0.48","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"714e8688b3def5ec67b8fd770063a038403d6799","_id":"uport-connect@0.8.14-alpha-20","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-azqexnmdqVWnCfKDBLF2Fv3/2U77y5XftiamLgvXHcbVe6UNjS+zogZ04wMEUC13/GV+l/VLAbg1+YNG/QRaGA==","shasum":"2dafdf5a38ae49023b971e4e7b903eae7c42d983","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-20.tgz","fileCount":8,"unpackedSize":2928463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbW37SCRA9TVsSAnZWagAAzUoP/AwQfOwOCqxhWFdFtoLy\nChjp5nOaMwzct/8cm2vxsPytWwXdkVcnTj8n+HVCiTaoeqhT6i9O4ECtFNpO\nmmSUbVBbNpyUO78EQSNEzxRqijosBQYjQLNZY/oynvfsbL45hIOcMEC3dsZf\nYBdTDD4Zxt+FWPwL6g+9uHfkm5LREThSd5ng3JdnSVUdxmZOTL1pxvL0IyQ4\ncYg2Ecq1o8DHqaDfeEWO5CZgIxvH6oDNx1BAiyXDrFNLDKC+ha+zNFiQBYqZ\ngoeREh3hnIlz8hIlpzlAJL6YMohljm88GMu3bdZjThma1gx7Zxb45ZtJRgeU\nb9Pk2kc6HxIG1vD5YR1mBjUjeh7rpg4j9YkLyJYUemLzKl3h1Muv3+mxDXhY\neMagSsb5KdD+sUlWGDdWeHR5fyDg/3Q1EfOnNBVeOzSXWSiLMs43goNjISfH\n29RQX54ITr5GSRpSInlDgxOMUMzytp8pJrzGN6k0ECxsoX1e0HRRa7dceT/c\n/K5S5v4StODS7Lpz6vCBvpeLpO+kNjp0QxUIB7V/kA0dSq3B3b2e2wFJV3/n\n+nLoGwa4Y72fvuKLrbZeYBuH+0TtxP+GwA4etESYEmKw3Mmce2Pz9yrvGPoW\nYq3fTho+YcVKpcFg22i8XEiOQQnMdk7t/Xz8uDzSxW9ESspufUi+rS0ubGwN\n3stk\r\n=VGmg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGPMoQD7zPeg/S9gSdHJ3zhdXVXP2dtbYG4o3OWewk3QIhANHcPzKhGxLwuRe+1rxlpOxqApjeDXauW6+iahdGWKDJ"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-20_1532722897775_0.5432660854306677"},"_hasShrinkwrap":false},"0.8.14-alpha-21":{"name":"uport-connect","version":"0.8.14-alpha-21","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-5","uport-core":"0.0.48","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"22b0b6c4d395061614092bda66bf797908719756","_id":"uport-connect@0.8.14-alpha-21","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-onfLtgSjUKvovrq0Ez04YYEGXDvljfFItdzlVm/nNR3xEX+sRtKg3ppxiYDb3nT/rm6QZYlFjjXyXboJ83whGw==","shasum":"e1d4cc725741a89bcec40014858c439f67d56e27","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-21.tgz","fileCount":8,"unpackedSize":2941284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbXy5gCRA9TVsSAnZWagAA7ucP+wSRT9T2ZkEu84FdAPDm\nA8CtsqZOlF4mGx/UkKnhq/wyxd3FJFr2cjDTVWppcDTnddoF7pZR0zAjGzZQ\nQxXJaPlcm6VvlgTbyY1Bygv3EY89F5jgo/NZc0LSeZAX7+l2neX/5cBAXv/A\n/sW9nBeSmsbR6DMR4UzPYwNgaPS8chFDIlQ0+XzlTanUqSnS/HAvciUOir+I\nec3KEX/9R2jzjkBhaoEqGdvcXCpPfIFWTQbDi/dwL/VyUoE6+tRhxKCo5QAX\nclZLIFnY+n82b9/JegYMNKpxAre2I2qmnZ9zmplKhFYQZwT65dE/xcwD3yON\n0NzusXEQdu4HmHD4fwIIbznR+StcacP/iOcWQqiyRvEMh7PTa++6aM2bNKeU\nScgasC1WB7FxC3l2oa4zUr2Z3/eFwAQU/DBy0uBvLku6Gb1LoV7z/0E43mQw\ncNg7ocE7V3EtaGqZX2/8oKhua3e8laQwO2sD0YlrLPO3GgS28efqRinkRqx5\nHdkEux1vjXWXN8WoJVeN2SvY+yExCHPSYTTZn8N1+3NjtNYiADoepq+e+6Ay\nqFqhGkg6/ejXbuAsvC+HWRItFlxXkZxY78m/CQCOocK2CoXtlvNx/QynQU7u\n/tLN/LFRpd2iWGukaYPpSkBLTlHWdlrcnZFQPvXAxO8fGWZT6gTv/r2cmel+\nWLM2\r\n=+Yit\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG/ElCKQodGHvDOp11vig9WXfTf4DCoz5v4Q1VawwVEIAiEAxtgWHI3a5PLnZ1H5BNR2lsOsYzZdotpJwI6Clc1g9dk="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-21_1532964443451_0.4693578981089386"},"_hasShrinkwrap":false},"0.8.14-alpha-22":{"name":"uport-connect","version":"0.8.14-alpha-22","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-5","uport-core":"0.0.48","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"c0fb38e1566ea41b9d60dc4db7bc17cc979d3a40","_id":"uport-connect@0.8.14-alpha-22","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-UAybLV4Mfq1Ay0KqZfvI28io6ec0lKt//5r1F2ADD6zivVvyK6slP3a+1n9OY5tM8oA0eAoYtruQ+UYNdBW8zw==","shasum":"bd1ad4d5ce0882d9b8540f58db58c7e16939d3b7","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-22.tgz","fileCount":8,"unpackedSize":2948354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbX0jpCRA9TVsSAnZWagAAe9MP/RM8EC5sF+qNB4zF6CaF\nYEkJCRAvpGCkdNe2de94pjeXj0NKfG4+gOFXgXg2dJKqtieVGTr0Cc5XZfmb\n/eWtkmd2Uxbi9F41RvuZe5c+IlMGUOs0t0GLSt6KL+EfGJWiF5ZHnnqXOZDY\nEBCUynfrfODJetGkfI4UUsOyvLHGblQL3vfNdznHdF6RS2Bl0w779HWt5W67\nlexGabqxoUd20qjOva7FiATvsPz1F7Cr6MaB+R2qR6lzQKWUk5cDOM4tJblp\niYKEQQ/Oo1y3pKtQHQStQX0EmkB+InPPVx48CHU0kPc1xTUh4Mnu8+FKoGlT\n4iB3jp1jwBVZj7PCFDHx9PMsVhO9FowbAAeoFjOlwiCAnR2pN3uaB/ql+8c+\nJOZlVM5kEEpvCbd3TJ2VZDZ7Yyn41lgwzwVdFKieGjBDkyizkrBSz1rFs5zw\ntM+yPVNMbVBbBbxH7kvjt+0aaPk2M/QGFCy37Pgg/tpMMkNl0AcaOJEq8z7E\neMEAdc+wbzc8yCGjjwl6rkN58Lkgs3vt3SbM/sj0u1eqVhMdR7QSsQx9nZyF\n0wzwHNq+/tlxksEaYq2gVT/cvvcXvUg73AxEYxsh6Ms64wgTdy0TR+EyG7DI\ncP2bGiMgKVi9E2zQZZE3fTnU8RAUJqG9VtbWQM5U2AE37gyqn8bNeumDP0os\nr0dh\r\n=L8rD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEZ8BZK/ezu5SZnzhlIHXpoYX4lHueite5hvhpuPyRvAIhAKknjHpJh9qxm+yey0SXRE9oigezcTQ2mpGK+y4TqM1M"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-22_1532971241702_0.9925845960642052"},"_hasShrinkwrap":false},"0.8.14-alpha-23":{"name":"uport-connect","version":"0.8.14-alpha-23","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-6","uport-core":"0.0.48","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"c0fb38e1566ea41b9d60dc4db7bc17cc979d3a40","_id":"uport-connect@0.8.14-alpha-23","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-TIeia171G66hhTp9RnPeewMkg+zXwvZAyX2PT1P8SO/Qf6ow5V3E6Q9vleJKLqafkzuMNtn8WEGQuc4SQX7lrQ==","shasum":"31ea6ae3b70e72228e459a126199de92799eb8ed","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-23.tgz","fileCount":8,"unpackedSize":2948394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbX58ECRA9TVsSAnZWagAA8KgP/AxnMfoW6butpBX632nK\n4PEMkZPfkXsP4AK4eKOJkeMoHRfYgdoytTpAUAH4pNGTra/YvowyrsILHt60\ndbLZtx8QrgfEJhnDGvvOokY5lukFqt+61mIG/c4pfqitau8i1thhbl1otZnD\nj01sKf1ZUALiwpqEEyL6eeBKaG4CYFtANHaXHOf0P3pcJrYQKbVD9c3U7Syy\nSqltuKLxweCeTPtYxs+ZDuQQiHg2btdOPlFO7OwHsJyN1dhe2AaYUpu4KJyC\nig9lhzBk8GpfB2pxLfTYKyy+Ldj8unYclxjyEQitH0eS4tsnOaKrQ9O6WeaT\nJ7K5/v6kVsLBfICsVQK3vD6g0FOOSU1/5ih0kzPNoWe4AyhbtmI7ybTN8lz1\n0YwNra3HrSJ+2/kqney3c0j7ryVBpxcNzpmy49iEOd0OuDQSi4mDj1THF3fO\nLSLVBEhQwqMyI1hV8mLL1cYO2AoyQwoq9CfbfCD0gfH+bmydpU2mkEwPj9MJ\nhJY6eHIe4EVVudjHb9xCAJfKCtOX2YPDzxEPWlh/CpwDvE1w7seXJ0lF6Jfk\nx2F1QbpK0TY+3Gfqvl/8EFcMarXMSACNTAVfscvBJ/2hIiH4QWTylDxx/m5+\nlg1b5FsbdDyjGGbrDUNHGS6PQf5+zNmneoXgVWkvtStilHeV+N0ZfuitCzJd\n1+OY\r\n=sCDh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtg8QbnSN26cvzlJYNZ1uJ/Lo4roziiKE8ZlzxXbq2RQIhALSzHzs3x7BXELsyzyvgUu67EdTuQdU3mwWgbwaTSC4i"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-23_1532993284402_0.02731454130198907"},"_hasShrinkwrap":false},"0.8.14-alpha-24":{"name":"uport-connect","version":"0.8.14-alpha-24","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-6","uport-core":"0.0.48","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"d128fabcbe71622d924135ca1f0c6c30b3d0f155","_id":"uport-connect@0.8.14-alpha-24","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-2duNemyrlOtAwDd6dnpj0kVeyS2Iddk9LkGlDgPL/hi9x5tNUUnQZXupHpqZPB/g6t1C5fz5g+hbb21qvu9G7w==","shasum":"1fae316ff5a367f1ebe2d617c47d185891e829a1","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-24.tgz","fileCount":8,"unpackedSize":2947286,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYFw6CRA9TVsSAnZWagAAXh4P/2Gu2C+PRxjAdzQh5hIR\nXsbI4moUoo4C6yEuNVNGj9Qp7xNoqnHb7HUv4+FTKoec32fpENvGRgtxMPIO\nIugL6Ydarmn9b9tltWwXMQvTIelK9Z1gl7F3QIrlX4hrSo6FhCkUiFENWlS6\nZZfdb8KYRAC/o5aLQUgddFmlP+e8TEracJ+BWfFfDqbktr9MQerlah7ADIBl\nJciHdF3Jp4hvn0TKTJdRZvegOTKnQA/lXpQnQWNsPydqIbh3ZvXoL9XJl5c1\nzkw1bZzjLb6g56a/TDoNnU0cqVQSitPKxa5jHw87dX42wM1G2Y/HJabu7CB3\nWIDr+O/q752To3PaEq/S+/ygKI23gQ7zJBj1hHLjMmdxEQuEs41EYhtT2KQ4\n+Jl/SE8O8b2ICtHHe6+iG6705O0OKKagz0va4gae+TxAqylx4BWq2Bd4s/2S\nU2uK3oBRUuj+0EUm6Ovpp4Q5TKDxcg20ge2msTbWo5JrX4gF+OYpR4owTx0L\niedNrmDe0x3a35QbCi1E0H+WMnO9zdTWwrHfHVzaWw0xgv8iufqjp78+kdO1\n/JoBf8iDT1l9InJmRNf73z0YQKS4Lzo0Hy/qVz2TM1mgHtThg2odm3r3ejit\naQ+p68yrfB+dP+uKvt+nZLQ16VoH/OaaqntY8X8x5F59YiU+dNjGR2kToaFW\nPQCE\r\n=C1ZJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHtfb3ROW1t2uhdJ3ypPUaItjlqR9y7YaNrvO9v18PfTAiEAoOL1GCt+RxGIpleKNBc0jVGORlRij2zPAgrDy8+VfLk="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-24_1533041720740_0.3621615409957739"},"_hasShrinkwrap":false},"0.8.14-alpha-25":{"name":"uport-connect","version":"0.8.14-alpha-25","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-5","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2","uport-transports":"^0.0.46"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"fe40f28a7b5b03eaa2c42515d43587bd01007277","_id":"uport-connect@0.8.14-alpha-25","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-yqwDfZK3gk/d9Br1WV0pZvte9AbCETCtkVi9LGb4M7543NVrqdKaUmcC9THAw2ARbntgwnJv2EQspMx43WDlug==","shasum":"4b7119f1bd872543d24b9c42fae6082a0194f616","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-25.tgz","fileCount":8,"unpackedSize":2948001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYJfLCRA9TVsSAnZWagAAoz8P/iJwzS1K4qmRigfL2N9C\nSq/WUxYu8FojIEMUytmValVGpJIdUvq+Bl75ZvOT98WSaGQhfrVMAPxHijTZ\nxwNpo1XqZJglUr9urgXGvd+alEFyW7vgrivE2yr/aMcUdWOzotqJO+vxspuq\n5BPOBHR2t7QQg2Xf+OR4jsX2cLI8raV+xH3OV00j7Ssbiv9HdJWlfblZYDFM\nYkczkQBAqFL5TMHkgGHDC3pAic7nMFXsC2VguB99bmRWq0NbfgkJnCNhbyYF\nGfa0s8Bimz2IeWtypHZJReNyJyyhAEPoD5F8nDwJrBAD8tNjYFPXZ2xVDYgx\nOLs1Rudk9tkwulMUgN4JW9ni8iuzUxbGK5Ker4UVCfLrdLdNoJJlAdrdgg8x\nnRbSVFVVGGQK11+lF0rHPoCnUrB3aT258GnytUeQmtqYeLo9KHDe0nzU1Qmn\nzLJRGFS3XN963K+f+2aTqdDuHVntoQyY5Kp5iW4BWPwRqDJC8dFJrHj0rxB2\nyPViX6vwq8vnUFN+LFW6VF6PLs0JIvdlzN1+8GDmy36YwOrdWEiWR+mFBEA3\nZngGPt4dY63N2usKyL42u7Q41hdFsgwoPsCczKAuJyeM+yQFokLnibJjwUh/\n63gsFoA8kTYar4hfWzIz8bhbPWBWIXfFNoeD25CaZvLX5hSowkk1EfJ4P6py\nNGFg\r\n=1Eij\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGL/6Lna0NqV4F6aehFSuF1nHOKSz0FlfTzGpKJUHFSFAiEAsLJ4Q9X8BxyxYoRw7Vp+BXQTHfEqlQjHJLPFMJLTvOA="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-25_1533056971751_0.9586740611793603"},"_hasShrinkwrap":false},"0.8.14-alpha-26":{"name":"uport-connect","version":"0.8.14-alpha-26","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-7","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2","uport-transports":"^0.0.46"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"fe40f28a7b5b03eaa2c42515d43587bd01007277","_id":"uport-connect@0.8.14-alpha-26","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-2xZDmy2aTxIfY9uZ92RqhxjzE3DqmoQDMKblshgV30XX5Xm9DkCoEEmFCUxvY8S0+R/hCdM6BCjRB3Df9Rl8GA==","shasum":"5b7d05ad57814c49ce107c2fcf528b11cd82a60b","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-26.tgz","fileCount":8,"unpackedSize":2948170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYKKNCRA9TVsSAnZWagAAlu0P/12Nh6iwIbFfOk7ATQTU\nOmVMTK1zL/7htlEZCznOLvjiuVxn5cUuG8BG1OoF/sxKQUO5IsW5WmCRkI/e\nmPhcYXyHIwFMuys94mp8dEyiTKvmljZ3n/rtDkZ0EMCdpSTYkw3sg1j0THc1\nQzvj3NuLE6Tvj2cf1G6kVPOIe5hSrhybrZ8c58TFJkVGYBCdRAmtiKPxJhBJ\nQjbQkcZPu2ys31w6kClhZuBCbpbl7pq2ldMS4aQZEjGhxZIe++1s2vAaoiAO\nQrUdy/67T63xeRtNyfN+be0hwcM3rKpR+etxaCD9QIJC77KtgByMQcVgSu/Z\nbwixIZLn01hw2i2uh8Vjrhwdj11/OTnOdssFYWuOYlRrSSlYtGRgf1grqKHt\npUs4jXZg8NtTpykvT03FcuT0WrYZVru7nTAcrBe1nRKcSbKH//+4KOAx+izj\nMgZRY4CF3uKqsbxoQfwMxvya5QYAggZjUOKpcymcOE+XIBjtKDeosR3ieLmC\ngmvoKL8yusinEv1onHg4W3qQrO1px2xOFiFeCF0IoEMWPahdq8PlnAxZWwk2\no253ASlKGG4zBdKnAbvYjWkMUaQGvf1vEfP+qJEVV41tGGwGbxWcu2Gog6FL\nThS722+MPE3Z+WYEy/395cGpcheh+fIeNnXiHUjUCV6wHt72t9GKcXtP5Slr\n5iK9\r\n=f/QU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCt11k5TIlgjMZpWH/p4aQ0SgMWNc+gtm7LcFzUb62bkgIhAIo/RAIqw4IXgty5cjcFUGvQXOEe8LhatVM1F8DyFGSF"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-26_1533059725242_0.9912166167965195"},"_hasShrinkwrap":false},"0.8.14-alpha-27":{"name":"uport-connect","version":"0.8.14-alpha-27","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"^0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.0.46"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"fe40f28a7b5b03eaa2c42515d43587bd01007277","_id":"uport-connect@0.8.14-alpha-27","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-2olZXoEBnPCf2Q3IPsHuCO5b+B+TuPTCm4U2/D5FWnq5oMePt1rYlwuA7mQ7oKRfrnj84up1y79onOpdEj635g==","shasum":"cf125415936a8c119dc3b18c29f4000978b0ec6a","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-27.tgz","fileCount":8,"unpackedSize":2869753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYw3WCRA9TVsSAnZWagAAGxQP/Aw2UDKeQPxB9W5SlluE\nnutlchr3sPbYdaQOqDMVuMAhM3AoEMfeXrXHTBNo3gtplcNHJ5sBfoqDdzV3\nQWcckYCeu0e6F6FlAYhK2xGVtQJDIGQuIWGxc023T27fgNqJwFs81YxKPacX\nuwOeNPsX0xouv+knV3KxRUFfx6YHJ3ZfmBo/Wp9gCk1ewOwj7JnkzZxJ34FS\nL/6T3klQoFc4RXs0r9YcGX3UNtzEahga7/uCAfwrzgEu0bsIAVybzrKEEnhL\nzZE88MAGlYNxKLw2rBUhpEQRUrUiR9UTS2Set+863/2dEG4TWK8/laeXamL8\nCWnyv0u2fT0g73LYMtosgJJv21ECueIsUl1y51Mox8AJgq6y6pe/Ld+/shZL\nVx35e5oLFBpHGNZesqufOwl0qwtZd7nlypnLe07NMvtityl38jHjkycNZLvj\nkNoa1AIsucjkum1B/9Xd8hZfykVuRtEWR4oj1SFpumgKR35AVgqvYVR7/VEk\nfpo5DCISZHKNybMzacfm7LKViX2Q976IyshsAP9oHqtuXXB2rqbotYnvhakk\nSsok4K3Y7RZHAJ2b0wVO/etoEcSKJvju81hL/NIdgPwL8sBxmzp2AHsswhf3\n21FtiWqDxoLf69gqF+09nb3LV8/FRPa9CPFSyIU/0NvbyLFCKCPXLIxv6Wmx\nxlVx\r\n=CgZK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDrvIo6+zeukDLUEu8PXJCL3l3+8lmdETxvd+kvInzPRAiEAnPUw7Gpqf+1eYToA+IvW6eaaw4ZjEmqpaVwUHCROW5o="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-27_1533218253265_0.43031524713483416"},"_hasShrinkwrap":false},"0.8.14-alpha-28":{"name":"uport-connect","version":"0.8.14-alpha-28","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"^0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.0.46"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"4ce72ca216de3e9a1aca5cbb37fa4d00e6fd72e3","_id":"uport-connect@0.8.14-alpha-28","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-6k54dd22Kmz06+W7sBIJf59xPcu5X+yVxOW+J7Z6ejC0z8EmfVP84NqCRrW531hdIOnqEiSR4SpfJuQzh7aIyQ==","shasum":"8da358b964a2101dc65034de4774d882536ca750","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-28.tgz","fileCount":8,"unpackedSize":2869799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYzhgCRA9TVsSAnZWagAAavAQAI9ikZ++ijus5smNk3XE\n3qGZYqByNPOB8jZJG3OGkF5Py9OjI7Hqr1ZpHqCN1x6czJRbKQpbrSQ0Iyrr\ncrdWca4RtpFmNTHGUbQGNXqnBfZsQyc9jXGetRY+yehEPNE0LYj0fcov+brD\nQuOdUdSpRRk7N8FlWNFMA2UuoccQZRjgdWMMsapKDDKGQfE1DbgU/vdBKQev\nsUDXignPMjHILrhwIZzhKpbxN7QIGWrr6vrbOaQqG/LIk360Mchz3H6tTNiw\nkkLs7uOhh/g8D5Q8Q9XjuyQRPQwb99nAxa0iwNRAO/WTC2apaAEozVndeWrJ\n+gNpd1ufucLc7Gnq8h5SvRS/zMaUWjHSu/3AeOOJIff56poX3/aBjMyIlB5a\nHe/ALJeWsnwE8iKSBpj4grHVzFAD3ID4wy3zd3qWbY0TxPFtsWD2ZDdJIiNX\nucMx3BudJw5QiKItACWDthRMKEEarlbkMpSIPOBhy2A6mJbu6S3NrmMU0MUr\nI7eAXx55A3cNaRfWofx+qRqw7Tr1PJaQFtWgcrmNWosT7HZUOY9gRsNLowwk\na8YOwpkqzquCjSfTKFxCTNRqyTIv32c7n/TWdJtkbmfxKwDdiMxBTsHBPaDf\nRJa+fGr07K6lmTwsyvS0lz93kYpn6OahIo4Td8krp/ACNsIK9mF3w/uirIO1\nDAxs\r\n=Zuz3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrI1JqlslkhV4UNNy8b6kfJlnWAIPH3TJ/zQ6YiB+BmQIhAK8woEcBgD9GQ9PCaUkwYSNh8bBdwj9apo15kVOIJfwo"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-28_1533229151837_0.179461109166146"},"_hasShrinkwrap":false},"0.8.14-alpha-29":{"name":"uport-connect","version":"0.8.14-alpha-29","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"^0.7.0-alpha-5","uport-did-resolver":"^0.0.2","uport-lite":"^1.0.2","uport-transports":"^0.0.46"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"67516125bfc7dedb7e2f28557c1dc89c109f6e17","_id":"uport-connect@0.8.14-alpha-29","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-tNVMm0y7/DYePbSJGQDyUojETnjl8FY7cPzi5DSHrymK9Uv41kKDzDMljIXlqENDIOaFuiew6MBA+9uxhOWeQA==","shasum":"15cec673827e708e06d1a9b47bb6e79ba1695a6b","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-29.tgz","fileCount":8,"unpackedSize":3180084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZLP5CRA9TVsSAnZWagAAkXoP/A1PO9pGdkl7/hTkEPGj\nsJeUrklc47tkCvFlHbZ3fM8OdC2qzutpYh5okxrIl1hbVJAsk2P4iDlRglHh\na+Ior2s1V72nxPtRWFqV8oDp8xqK17Z55Puneb1ZuFD4XBwFavV7SArIZYEo\nm/zrNmYcWsZszSY1RFzAYCRQCyBV8Ltp0540OjIBUAuL3TQ75bAJv21oRbBz\nudyUxoQgbeIXzk9QSdkRNI3rBiNdtqktYU2tuHw0GcD0qOZ9tDgxDbuZSunz\n6i3bnmEV7bf+8Ze5sJdqEK+vEqNabEwH3GXyHjS+GWvOOZXmLWqn6+4RR8wY\nN5RJBrWVdzNb/pBWyNkmruw0A7NnHG0vzhUeGuS/QvuEq2NBfZohLHKgzR1B\nPF0RDvCJfvGmLerA8LuOwVCNbqNQxxoygVtjJDGAhtHJFP5qYbRGkvHbSpeY\nK/eim2LxoHipeLbjY+jOOJaWFjkclaX0hgnVkuSQ0USvDQwpBkjw/ZuWt+3c\nMORksv77LQJVJsPyIUFWbkiddprxC01SfUjlcnbL6bSa80Klb0tbrr5Zmwgo\nu8K2+rrAXEtUrQPKD4IY4sdPKQwtP4uGf/03z1oCrlWXPrFmFjJJ9vUZy5Qo\nyhX6vYl4QzOvZCL9h2a3rh6e1FZWWObMuucre3XgfLKSQFjN2QG4wt8EW7bA\nfuO9\r\n=VSYC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDVB4oApLrDWG241lvHvdH0pwdqfEmr6BSn4SHnsn4mwIhAIwx63l1K0XpXO6uRK2gwFUoKXSwC14GMFYr61o6bJx0"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-29_1533326328829_0.4423131609522408"},"_hasShrinkwrap":false},"0.8.14-alpha-30":{"name":"uport-connect","version":"0.8.14-alpha-30","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.47"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"13e587029b3c1239140fe4658967cb2496de36ab","_id":"uport-connect@0.8.14-alpha-30","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-Lql7SVpMC+lY2vUdv0Mnur4YL3FqHhXk+v/NMeyYRTV2Jo9cQoG5eDBaixuDEvC3rfpGasIzAdTl899G94/TYQ==","shasum":"42997c4e8ce8c6166f8b5ac712cf973de83c275f","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-30.tgz","fileCount":8,"unpackedSize":3180081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbaIwYCRA9TVsSAnZWagAAQeAP/2W2rKU/V1P7LtwlDi9a\nhpk8vj+MaBFyxZc1NYecBWP7SuvVL795k3iAoOzH3PjB3zYgax3d+69WviHX\ntQqA9lYAV40pzPqc374fZDLsDHpoGB6B3ujbN/3+aRE9Czpu72soI1ZsMQU8\nw+9H3xBE57O47mZiDVykku/+C5Fa+CUhAnxkJiLL457K/8VV2eRH71nx8mkK\n5NQp6b5oHocMTwGRDoBEYnZhy5heXDAETE0O4SS3clPrLFDDe5O1BfuW4Fw3\nrXVwErIicaRJIVUg4+VNHktbbC3nlHdPRwTCMMfjb+7dgzpMPbfePdFCCV8i\nEe7oUl5ukfT6Y1VaznG3Htjv0AkOf4UZJZ3NyKsFWOppzMlf7R08It6ZKUd0\nRf0w9MmMnaQ5xli16o3dT9AvdFZPaIJltgesTBc5C+WHUZxO9PtOtqEjOWRz\n7wvWfzTS+9FwuwMJONqfKzk98082a/TgqnyzMfiMIHO6D9q/uAyrcZdM1O0E\nYmpfRBZ8y1HjY7goQAifeXALU3W0ujPjHVo5KS+HK6ETez1RWDkilDHG1ErG\nR62pv4LXvZNcC9MZR0YDz0rfc0/EsrQbyoVpRjcd8G0etWJkmnAzl8sqE0hO\nFZeG2bhswbVTwgwpRjnL+Mx45ZEXgWjUYptzELyG5s88Tu9u6/rZtpFsjJjp\n+XXw\r\n=iINv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJpNzIyccDXUuoarQ1XpcV36vJPIPKCVKRFJKHYUsiYgIhAIBE7aLPMByCAYBKHVuOfP0q7twguVuul00TqvsjPIYG"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-30_1533578263862_0.9386136169700865"},"_hasShrinkwrap":false},"0.8.14-alpha-31":{"name":"uport-connect","version":"0.8.14-alpha-31","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.47"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"13e587029b3c1239140fe4658967cb2496de36ab","_id":"uport-connect@0.8.14-alpha-31","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-uklVw5Z6D1AZbhRYMoUxEL49UZ6FC8rqRNB1c5NaRlLBY76kBWzH37r9olIE4y5YZVL93Y0gLOZWMwUWMU0sQA==","shasum":"e7c2eed33b6ed51651037d6f1acc0592e9ceca53","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-31.tgz","fileCount":8,"unpackedSize":3154579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbaJfMCRA9TVsSAnZWagAAWM4P/RFgO/mbNpSudsIkhazi\nMgN4wFWU7ftBJ6bMJILb6XDomsBd3mbLdnhmUnMEVkWe8VL1T9Fjf/9ji8C4\nztU6lC8iULiDhwihIzsx6uWo2wgtwfOB3kNgFGkD3YN+ttVTYP+Xwzt6hETr\n4IluGUYPYxSSSnV3Io/oq14/KAtJRtRsORZFMtFAkRN4XX8RGzxegkZc5dwd\n3zTt+Yr3cIHNrYYPaNKyyJdjTHxjr68gl2Spq2Md8ixt2cxF2sbV7Eiv2jFh\nDM6F7LRzuBRImLjejjUE65xviuSfJ7n08l8WvRmyFcypxJNom93MXV187N9x\nmRutMIISUHZYf7/ZWVQt0UtmCONIhYHx/zmJ7D4hMj/R0Z6NvQ3s9NIzP5IT\nDJShl1nr3syAPk64tF5iyxpYJ6spx5JWcASbXjZLiWh8lPaqE0rHwRac8OAB\nmsFib3sfmbuJ3RlDAS72+1erSakwojmlN1bg1KZITKJ5tSszXEcOkkW+xCgD\n6zsFSB0c0nsOrjiaoLu+ElLF/R56Sr6wpLa+NDaNhFYrFcUXtY/wZLufnxNL\nX8e/iYCLou0cAI31ESHy8oNAEhckiPjzEqXxYlSJHNsVO8U1w0vsEdAZ4ttU\n/ygXyp/TKuEi+oSTiO9hiEqN7NY/lgwqgxiycZ6eSQaaHRuJ7rPjmQy9++5h\nXDi0\r\n=YrR/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG9I+ZzWhkYW6zASWCOlopuTnPR98RJ54G7AtxGMUia8AiEAu3unmooyEpi66eI/+3iKxQMBXVwSxg/38y3/lKDxsYk="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-31_1533581259853_0.9292432900904997"},"_hasShrinkwrap":false},"0.8.14-alpha-32":{"name":"uport-connect","version":"0.8.14-alpha-32","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.48"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"0.19.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"13e587029b3c1239140fe4658967cb2496de36ab","_id":"uport-connect@0.8.14-alpha-32","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-Wy+7KCmeZa2/QcQLRE1o61DCq3lnd0MuJ3BYAoL/fVN5fw65FblSabKSA17eFuxawGC3syzIaYpmc5AHerMsog==","shasum":"e8306d977103b2d2289b15339a419195b214dbcc","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-32.tgz","fileCount":8,"unpackedSize":3154579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbaJulCRA9TVsSAnZWagAAItEQAKRekmIpKaJFWbBLrjo4\nJupjHoHau/PogtKSO4JqtEe9veuTcHr3FblHavLkj+yRlXD8+h73a0GBwHIE\nAuHMdzAFsB1rKRcQ4kfgctx6O0GN5G6j9ndAVyE/axrXlawRkkHYa5Bx9/ov\ntuwkf1JNWkWfkv7oCZ9m1mwEKKVaq1+ojzgssQcRxzE8ZXMlFS/tDlODd7DW\n85qD8+VpVgopBdc/JaF5H+wjp7Kq/W+utOzdcRmGUqTUS98tTCi+XdeZ/0EH\nefAOfV/aAvhi0KCDPbKa8vC7G7KiDA0pFWRotV8JooiWS1Q5Z7aycgmClnZL\naXdvbTUTTfpWyy8jKvzSMcntGvSvxS88M4zGXkslER+JDnrUnr1Zxb8/4Xeg\nPxwQKXaEo8gRpKhp/t1pu7QpabkBZQRlOxl/c8ya6JtcKatU0GsijovdabhL\nfJ9VXUSQRdfRV5lRy2aq6h1BVMP7v4E+daK+atgXaUD8qhl++DrizD2Ahkdf\ng8IH67kIB0/qKkoDoRU4Osw1jYvz450I7KQo6CAfilSWfcfWIoTiyNnmLxFj\nGpQuDoUWRZdJdQoAEm7zd/oSpaHZKEQxqLjRcgFOulyiqK8J0l0uXk0I8KBV\nPEuPJM95mNRpo2/IGzo4MYABgoP71/Xgf9rJMcT7k4FU/N4jFKWaqAQNghR8\ncEBv\r\n=6uLU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGEYCH3tJFW9TLxZHW6IV0SZCQH2bohgbfFAxNKDzhw7AiEA15dSImDgTjeaoK6OTamgmiLsyQ1DNbtIBO0PIOSQElY="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-32_1533582245333_0.8633008753376696"},"_hasShrinkwrap":false},"0.8.14-alpha-33":{"name":"uport-connect","version":"0.8.14-alpha-33","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.48","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"13e587029b3c1239140fe4658967cb2496de36ab","_id":"uport-connect@0.8.14-alpha-33","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-1QCWji4Rux2vwwVfCyRCtpj/2hzb4VS+UzeWbC+691zio3ZFaVpudWOM8sYQyK/5NnlEDKcEUGaPogIZLoKX5g==","shasum":"65862d2f572a0ddb9d4222cced3514689051a63d","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-33.tgz","fileCount":8,"unpackedSize":3154666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbafaHCRA9TVsSAnZWagAAt+gP/2hiKuv1cxtut0atyrXO\n5SH4YBTNPa/q29WRxlKCFyYYBNm/DCOy5jVdM8maR1ZtNJv16zTGKGvXJtEf\nAreHrJBEJhzGkTkDMHOC1peKYZFS5HvyQU88AY9CThJ1MG1LAiY3FkgtyZFN\nfGVolFoEtOiP/oj4YFeA8I1jfEdLQuNVp7c/XL334Knl5z9zX1QIdw/S2V8i\nYk/LfbQ0ZhtlFcMnlYAzkVHWZCnid6w4ElZ+ZdnD/23XsA8F+gA56bY+ATD5\nVWZkPE1oGzCv3Yk03DxjgZwkPORRoH3H3UZXxpQJK5zjgOEYXDTcvvAFPpXr\nDv5T10as1hna43rRPRaeaJgzOfRe+k6MIhDhyYOKVr5qxcOLbJVyJ0whpWUy\nvCQBRfa4w4NScuDDTLA03UFmZrbAdBNF0HMy0YMxdZcUTRUUIyKAvf9X72ln\nZ8ty8j9GzT5dan2NXIJuUA6gG2oBS3Oz6lt33oPKOMlbWlChNtp06/eSSd5j\n4OWolvA7/kPKz6pKy1CwDw+z2I3fIaBKdW+r0HjGmiKsTCfSnj5n87YjByXS\nj9vyYGNl/8GY/IYw3hj+M+26A8+q8hov1hv0xsjCCN9+945N2T8K6rDvZm0f\nVcP10uXdAWgp2BLQdp/f6HpCLLNKQl7EisqsCY3dcQUSI1k7u4w2rckVKckp\n23ee\r\n=Nx//\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGUlrjR+sC6IkSG9H7pCttbenClxxjjy48ou9kJKk2WsAiEA+a0LYvzD7DlM2DGtLlN39xl4loYgXpd+Tc/+29lzohY="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-33_1533671047188_0.380841609590987"},"_hasShrinkwrap":false},"0.8.14-alpha-34":{"name":"uport-connect","version":"0.8.14-alpha-34","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.48","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"00eaa763b5c3f4d4babea5d5d08f67e2cffe0e29","_id":"uport-connect@0.8.14-alpha-34","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-fbwCUUAgVWmwxeAvXUzFK9TINvhMySi6C6Jz12k0w2hbWxr0RNjqF2J4fiKuZBcAtN+rDdpRpbxoaRitypNQMQ==","shasum":"8ef5f7cba8313451dbcef916900e7a96bb71867c","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-34.tgz","fileCount":8,"unpackedSize":3196405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbG4yCRA9TVsSAnZWagAA+LMQAJokh5tJ6IOWbGW/BS8L\nHUzGxMKcHtrh6VlbcZzF0hu5NCmWtQDgIR/Hfj1eYhJ9/3+lTx+RrdwVpX34\nh/3/q9fK2Io/jO5plry/N+k/tnPT7ecGFAvv7lHVVgxYiw9aOkmwN2QhS4fW\naU60dFhWGVQmDskxYO8Fd43CS50sgrqrH2uQqdnzpWHEPPwsSaFf08W2rK/L\no6tiIIGl+xvTMHOvdZHEbuRHvA9eGyzd6PvBefrwfF4HGvziJEeTRI5erzoo\neev0DzhO4laIgk2laaqxb/GJvZu3e4S5+h74Sn8VRFwmz/KD/dQkbf8D+6OY\n9EKYRLah3TKgNq4MWk9MDFRRDcTMLnYoJ4iN4vRMJZXgOvki5b/Xcjmu2/We\nUSx+EDz9d8YR59qggCk7vQ3IxAhmWRrYBMN4fIj72qjw+gO1y2zH/IlulGOk\nQeXXkPLe7A4HlYGFRQ5zyVyvsQKTGw2spZ3PamxCZfd4zJEgSsR8WZJGCdwm\nD+d9kJ8tSHBr63UL3RyEYqHP3vICHFVJbmKi1ILOvUeI83WD9vIYVgEMwgmo\ngFTBIt37A6Nwaxxwprsw867+MBVgYULMwmYujxaOHY51NkZ+TaJVcxUoMuAo\nqATfMkRk4M9ZTgoTwzs0i4/xKHWadQWKX/nWDBBWuA5WhEZL5xWXdGhFNnPF\nv2xP\r\n=ZQ2d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCne3BAxkcMPjzqbn2RgEfwcCZraWSycNRkc3CksX2x8wIhAKQ8k+CecDABPLa/Xyy8+bKG698I3cimYYpjkACzFxK1"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-34_1533832753758_0.9028529683081765"},"_hasShrinkwrap":false},"0.8.14-alpha-35":{"name":"uport-connect","version":"0.8.14-alpha-35","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.48","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"866f4ffd022e4ffb844a52587b6bdea9a4e78a6d","_id":"uport-connect@0.8.14-alpha-35","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-TPMVpakWFeX14lLxlpCMJwm291MsnSwRob830HvZ0mWR0jtDbEJVskmu6CfyRy291uK/ANEDK3z77YXaMr5yJg==","shasum":"faa19556ce21580c729176f7db63d950691717d5","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-35.tgz","fileCount":8,"unpackedSize":3206310,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbIraCRA9TVsSAnZWagAAi08P/1OgOdy7T7iek5ebr6Jr\nQxqrYAAa+s25dSlAwUWRuzOZ4EkwNgdyvQ0xRJLF5g8HbEvMfiwHcSzXXI9k\nVasoZv4Amj6uHUmpy5yiNDCG1PXo5SGcfn3Mn/3lKGt6wwNQ4gEEh6Pxo/ML\n7GG81mJ0PmX+rGB15O6cc68cfjpcbMeV+hx9S7+uZOg3c4o9b5PNy6C1KDrW\nHX+R4P7IbiOsamjhMlOF3n7W3hdnoVFH7RsTUAiqcDX8gPsLnd9twYt7OKP0\n1TNODF7X7rie2E2WuOiXsUWKfUet8pfzWfJEsVwHf8SWdE9LUiG+/frZfa0F\nrVgH2tqFjTV68dx7wx29SLofmE3gH4BVhddNcQRLom3yTJbJ3I0WV6AWIcGd\nWlekRZPrEHuIqCCZlgO1j0VcYgpUGJgT7CTZwfgd5MH/CD5mh5Ii9w2OQTcX\nUicMp9foTCtjkLEqogZOzT2rFv9xOb6mqQ8VrxS5sOZN5FzDRiX0XzrwSuEX\nmO+zXOsCvcGxdujactRa6cbuvyvqKB751+Rc5as3g0cuKTv6n7NlOyrHfFzD\nOuBK+ICoswgvEQ65awHhhZMk3nQ8cuPUVhhSvPluVBNti88g+gD3/HiVIa7f\ng0SbAGMfR5tD+x8F29YxQzue6Ju5PMDurxXaTVpbK6wsTqh83RazuI1Rbf3z\nsurR\r\n=r3bP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnT/1n5VhwIJ89xn6tB6CEJKxHIWT8LG40K/DjPAWybgIhAIML8IUzLnv6qZuu/uWziRvqlrKMaRJYLflvliwc+SWP"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-35_1533840090123_0.0951133468238552"},"_hasShrinkwrap":false},"0.8.14-alpha-36":{"name":"uport-connect","version":"0.8.14-alpha-36","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.48","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"efe7188b7fc24aaae36d95296c51a3dd21061dcc","_id":"uport-connect@0.8.14-alpha-36","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-hj6Dxybwc+iXFYusy/b6ucnslR8RxUMVhkvi1CIdEe/LG0cW/qx21akTnXni7FZpO3TV6zzrgMVFjRMhgTi4jA==","shasum":"e1bd0667c59997103f14cdbb268657313e69b6ce","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-36.tgz","fileCount":8,"unpackedSize":3189849,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbNbWCRA9TVsSAnZWagAATxQQAIflWSLceZ/wNiKBukYS\nYswWiTAG3jF2kAD1TgFyX3V5Q2WhIpBC8cXi+eUkpXFrh/Qt8EmBEXKkGUDU\nlD0eTCunLt5ExTbogwO1k71zUIy+HkBu6KpwXtjmWyLGMlVpWT1QNwCSbc7b\n6UuCuNCYtvYpidJsP0xZ0glXaYIah7op5O6kPaHY9Ec6PjpFyqMDg/oAu1y/\nJjmVS6UL9Kjx6VeauuFQj2gI0CHx0Yn91Z6jRXV5Qs6m5FOXJr46y7IUbw7I\ntXVVqyelPmNXrHXyM2NJA9uUlglEat2iiwfycjdJl4koNOrBC9q88iF9Iu2z\nccpZWKixcY40M25+POoDsM9ovCuPq+PUBEwAoV1fpGC51LRwhT99BzAkNuJq\n1RRBp7mrE7usfEtmwlyd0RWcQeseWeh5ImVVPlzG8fc86AIc+COV1DqXBEVo\nNrSLRUPDqJz46Cirml61MjlHjUjSOtF3a+iU4+kFQZLXRstfS0XwYd3rMkS9\nZazMTYHU08MhHZ92Ocvlgbe5d74LNSbqlxHmRICeX6/XQOiY3OmKmdW7JWFR\n3vkvRZ3xtI9NoSEDypu+CfMreKxKdEXkQ6c9Bm0drBqqBSnW7vio/h6wT1Zr\nfPJ9y8Be8RjO5uw9US5VAuwwI5F0CT0jv6piV2QbJktHDSdWLDZCFxCi+joJ\nTzvc\r\n=z3uc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPCIYGEnP09me6UGut6h8fK5Hi0a8kXEUWwljobA9T1gIgGqW9tlAHopBulGrupS6rBtIn9ciiV45A7A/nvIwG5KY="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-36_1533859541510_0.6414963647200875"},"_hasShrinkwrap":false},"0.8.14-alpha-37":{"name":"uport-connect","version":"0.8.14-alpha-37","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && node karmawrapper start package-test/karma.conf.js --single-run --browsers PhantomJS","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.48","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"725a3f9d5adf52d96c37534a1babed4a66af97e2","_id":"uport-connect@0.8.14-alpha-37","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-OeqH9cVb5JBSXBefZzAN6Cz74J4J5lnf/blmz42vUf2Oeg6NGZ+Viyky1PbdVC3ALuaiIs3700DCuMAxJaOK6g==","shasum":"3ef57da5a8eff927c1c87ebc81178dfe823ca574","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-37.tgz","fileCount":8,"unpackedSize":3185903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcbP5CRA9TVsSAnZWagAAaeEP/1T6ywSiXrkJ/clMRS0A\nyLb6ge4x9F82GLMIvnxxQPoXFWvdqpLl0qop4/rfnaozWDejZXef5xsD9aBm\nHwMxml/jUtla6x4ZkhL7n9e4Vzuhz5aPmNX0zO5lGZAV5YnxswCtG/wbIwaO\nO3WHRe0/0ypd14qIR8IJXometvhce4hgY8M1Txi7qnLF8dxi4nWrvgacAEhy\nQStvicbhJCKrzRhTBg9RnQR47yaYYsnp9m7sPgjDmO6KNGGw+ej6LpjxJUg1\nBcXbHmKgq1BTDBtOjD7/GpHNwzVfANwpYxl8M2eBNQQvJbSt2qv4Y3tm8v5Y\nDbRHTAsDo8aJk3eCOGTq9kolT616UtdFwLWq0KDF487TcK+PmB5IaUOYmZW/\n0GngdaPE9TwlvjutvrGRAGsdMBc9xF5vTSLPJj7GXYdC1syJnAIJ/iV0CffM\nRyva+31bVtmCk72jsV3GvzBhODJm2MCCPwVeFbglipsXRQQAba1EjsTHNWCL\ncgXsZbqWtdc1OWrWsdLEJ2acoP/1qmbnrBEemvwAd0Rr5LVdjoF5/O+AVf+d\nL57xc53SHWiIa4fCTtozbZTfJtbIrBPKwqJBdv0mT9nxYN4mZsI/M4F+aaT1\ngayRYZw0o0TcwvqXLorcMDO9/n1fqhW8tod65PizrvW3feCo8oeA/+z4cO/0\n+ctz\r\n=xnY1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEGhrTipj+Lq9uSMp2NhqBvnQg2rlvxTpyfuKw78rgbPAiEA3R2MMqKLpK874mKWg3mh6HNVsqLEygUWVRA6t9PUW4Y="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-37_1534178296922_0.2090641759827121"},"_hasShrinkwrap":false},"0.8.14-alpha-38":{"name":"uport-connect","version":"0.8.14-alpha-38","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.48","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"a955fdf074017248aa99b4ccaa4ca5819d6cf270","_id":"uport-connect@0.8.14-alpha-38","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-6ox+nouz5QqJvbxW7sSvS0BXWmu2L+gbs/O0NnxK0It2SLBSwuT3KHcjWYD+1+l+gAQxnFLGW/2aQOv2atFZLQ==","shasum":"75174d630a8cbadbdd1839c698c807df362521c2","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-38.tgz","fileCount":8,"unpackedSize":3198900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbceP0CRA9TVsSAnZWagAA68cP/38aPmpYtcHsQwAdQWtI\nz11SXdwH6qZ29hO4vPt3nLbmhu2jaFTrW8tzUB/JjktgB0L1jrmoZ4Xuz4WX\nyqA0q7GTx1HOTOlNPWmzFYJ9rfv+Jm4Kt5FZMJml/5ITuB83fXG0PO1VrwNj\nf9CkTESPE3NFECcDSW0rE7TpAAEsDvLvWxKTytP9OjcLCxYRV+VGAiMxsXUc\nciLo3KgQxcA/XXRqL3pS8M2Bidvpj77s0Hf1ESXlcnAPLNjNF5MKiKQhc+Zc\nP/EB+P97q+VKQuck2+A3dpdDUYv7RkJyhFuypIb9v74TPUsqhX+JaqLG+EmP\nCudPt69pQg9jJJRLz7gbxC6/yXqIeYGtOCCNwb2NWXADTUffUEL5AjOpviHG\nQeg0mf+qMGKjnwJm54hKY+dYIV7Vtu/DbN3i8GwI1lpfhEOsDAeK0jQ/0Cob\noH70hHRp37HL3B0ON9yuKK1hgsXPqU9smkavJ1UCKCzEpoYdWUN009aGnXtX\nZHoag/S2SvexYMcFeEIN3bBzzHsfBhS8iDMWzeMofMKPBjeCRqD5JhTzBxkb\nQxBcXTIjvjz0hVdwXHe1hqZ7Z0//kSgmuQshLxWCgjC+GjgHfsg8SRxjQVDp\npZ23HExxjXcsflmFN+yQhg2TZysJivYfgd+FmvsSGFqnyziPge9ZC9aCAm3B\nxtFD\r\n=uEL8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2rq5ANmpkfBKkiRB2vY6+HxcTd+Nx15mzHDz8kQwe2gIgTx2XcEcZk3hO2PDpdxe+dPVDZkxwR/Gra7AqJSpDaoc="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-38_1534190579685_0.10741271320847212"},"_hasShrinkwrap":false},"0.8.14-alpha-39":{"name":"uport-connect","version":"0.8.14-alpha-39","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.49","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"a955fdf074017248aa99b4ccaa4ca5819d6cf270","_id":"uport-connect@0.8.14-alpha-39","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-7b7rVIjUxfR71jX/+kH3KQp2e+eL3gXkLG2vYac4ue3m80I5LLXiFt+2g88MuwCJv0xvFklAXg9YFwAKYT1LEA==","shasum":"1f3a388807a017e19fd1439be0bfcb04c0caefa7","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-39.tgz","fileCount":8,"unpackedSize":3286497,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcxwdCRA9TVsSAnZWagAAT2oP/RLS00gdEuEYBlgdK15r\nmd8sFMAt4avI2l8jngut5rdAybJ4s/3n1vS8Y42ivUD4ifuc/a7ZrIgDo0DI\nhcluoslCdSZZ6+UvZD/tNBiQSWITeYukvxXr0ezb43koYhkh28wQdf6r14vA\nzKQT+66M43q/q0MrLKISo/UuxeLpnYLwp5bO70YKYKbewQYB52/aBcCIKb+W\nQ1Lq5Afx+RDD4wQ+aC69FzdGnod4cLIGNVP+wxms8JpD6wykUG2Sv2ZmPBh0\nn1NjXau9Kjs2xeuA3irMKoQVsYkqveyV7W+9SdBKsWQf/pynnf+8+zAK0GiW\nXewJnrYaoGdlFJKjUL2q0KxChC50WAJCe7DW2VIb3u82KWmnWtfoIOBOxDAb\nSXFhVytQ4TjYIfiJKQedfz0Gcis65yamEej02edNrPCxd2BsG3JAF/uuC4sQ\nZRpzCB+Ra2vOiGCqxKnLzbQDqn3sN1PiKt1ChI2ryYHP7Wk63agDD9i02ZpV\nZwvawPbR/xrwr+/cxYzde5JkLpKVTKmxO+yU9EHQWlkjiF5AfUOa2ym+pq2s\nNXJUDg3Q3ljuZXkDTf1VAYuf64p4c1wAEe6MH/0Ggs01lkPnMsQDKLCA7rx+\nDxqZUFSsvho2Ez+7XzSq9ppgENq/cBNW8LSMf8JB/r01agxYneyQsQVCzGZf\n7vwR\r\n=+xgF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHMBf9TfWt6ys0AiQnB2orEKzwRL0Ax671q3ez30z4ArAiEAvkoVFuWDD7LaVRezQxNT8YouCXM/Id48qaRDbg5/3nw="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-39_1534270492622_0.6955271823513267"},"_hasShrinkwrap":false},"0.8.14-alpha-40":{"name":"uport-connect","version":"0.8.14-alpha-40","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.50","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"a955fdf074017248aa99b4ccaa4ca5819d6cf270","_id":"uport-connect@0.8.14-alpha-40","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-IiQQ7ckuCWUyDxzU91lQCcoAp/gV/iddDWs9dJR4f+FfuozEstg5avaK8s/yniB7HQ/Szu3xSKXvw35VpsWr9w==","shasum":"49794e52622a72ad42615bc5d961a8873aa76254","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-40.tgz","fileCount":8,"unpackedSize":3286977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcyxcCRA9TVsSAnZWagAAhd8P/062xBSxw+XD2xv5rtb9\n9zi3xh/KQ6XQn6EQjaVKqZf3PL2B1uPwgQasMTd6XPGLUeFtCZycO337S4D9\nUYNiqpS1V7kWJn20Cfm3WNSvdzivCCtYCuSV2VFuI4WCMIa9il0i+hlhYm95\nYNFsFodV+Fz5SW772V/qJv91ayP5Aoa5eZkrPRZ/cyXlIhiZClaotQi5uj7Z\nnfi73oqYlFBbQVpIxtqXxdzC7JIszkeUe257fCQbwIEqMkMEJnONWT/zmd3H\nIKZmH9AC6Gj2sObEDqjI17ubHlCTtU6J/q+3am4U0qUmIuTA3TcsXwgb4Kv8\nq5FxU0nZkf1SpumfPdF7lNquWMmLO5HZMTLZe93Lx2xrnelL4Uh1hIhW3tB+\n82dHLlGEr2GE5wBiY5NR3hUaUgFcN/N0/VmizqU/zPOyLQUdhW2hebSih7On\nnpqZKNJfUCT0pdr9LyjLAQisJVTGjbTzv1VZ2Zsdze85+WA1jhMadohbNriU\nt0H6eNthhNdMRC+N7LprnL4FzIRbVLoHI/AQWV8ewFc31ZezbLHNl4aGwria\nw5u+/xcf/omMye15MWXY9yVssbfaBbHs1vFqWEXoaTu8uTg7y1gfBnp3ABNR\nx8+zNpzmUN6yGhBlzMFVzruQqrEbS2iqEEya1qWbL1dr0pItryY7agMiBJOC\netYl\r\n=LoAK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBaP77vQzQaCvQ+Afc2FfbCd34gKHMrWe7EkTQx+y9WLAiAKdfiXjB1EIFrXo+RpM/lN+B5AcuRnt5vz+KUlYmK6kQ=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-40_1534274651832_0.9591578597615367"},"_hasShrinkwrap":false},"0.8.14-alpha-41":{"name":"uport-connect","version":"0.8.14-alpha-41","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.52","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"a955fdf074017248aa99b4ccaa4ca5819d6cf270","_id":"uport-connect@0.8.14-alpha-41","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-BEk8QA//U5yvPpNkf62ZY7dKpY0ugQoTOtKLC+qZY02crmoT2ioSioSlvgh0PIpYxj/kMauodR8XdqfRYe4B2w==","shasum":"0325028422aea8f76c11e73d613d24e615356626","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-41.tgz","fileCount":8,"unpackedSize":3287076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdGN7CRA9TVsSAnZWagAAFbkP/jbujFEsoFrAigYHGcqa\nVnl0gagdgcSrRPgf4bHiOGlUZc2RbBp7u7MC0YM/WSZk8fyh7EI+Cz6E3q49\n5ud1YGkGI8faVIlbuz3uVuiDXKiT9m+zdQxF93Vw5VgW50M+MeraFQqXEXIs\noFCeMpoSNV0TCyJmkGwqO/Aoxif7DMlN7BHz4AcP5A/UvvNifMTPvebikLoY\nIslmAcsIgkcprBiEI0t+uztat3VZPDykY4ItnhaIzRj3rm9i9cFOyzavbO45\nFK5waWDlLCJmYeviBEiuPCGxNARZm1OQs8X3s7audx0qg8YZjHHlLoK/NXZZ\nIT/pcHuVjung9sdSsacph+lh5oK4/3D4jAqISM5uSOfZtYLt3OZNHLwwbX9n\nNqOfvvaNNGXEx9d1IoWQEzdI/Qyw4TDgWjsjQc0UwbfFrQcLvEIusebf+gB8\n9KWN1lP39D7TwJiT8JTkjE06+h8qnI7HrueCZBvrwExLzvwycPlt0syT6P2T\nEcYdo0Z+UWFRL2NRpp/hl3nxesVgf7jqRj8QaGYJeenaWGXr1eEcWazz/VsN\n2prFSoil2zct7ngnpCPP6nlgH/3nGvRqr1RXcweBG/i6qb9KX36rL9mysHPT\n7pcX4WOBcXqztxC2AYDEDO21f91Aw/2ZoCsKVifqyOJWcilqSS+NRoB34v6T\nhvNa\r\n=+HrC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcxmsrAvlKuuRYfsRJ69rLNpvCYaMOXBLjw//SSr5RhAIhAM9WBQ/e7z7WTyJULJUgcAzZi1DSNMeWLDpNypQ6P1CB"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-41_1534354299085_0.16370933082118366"},"_hasShrinkwrap":false},"0.8.14-alpha-42":{"name":"uport-connect","version":"0.8.14-alpha-42","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.52","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"a955fdf074017248aa99b4ccaa4ca5819d6cf270","_id":"uport-connect@0.8.14-alpha-42","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-2bZ5vyA1wVxPQBG+ZfBUy/N2O6O2cphQeC2xaCgOg8N9Ho+jBSFEuPOhwiGZdgZjUH0H0C28847I2HujqAa++A==","shasum":"589f7b726fbaa1913eaa5df930cbb002ec958d94","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-42.tgz","fileCount":8,"unpackedSize":3287086,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdGTtCRA9TVsSAnZWagAABEkP/2i/cbwq45Y1NsydHhQA\nu/nB1OLfpr3de7MIgQ8HVtjk1LCbsSpphNpysmTg8Gvm9+/slsw4bs2jm0il\nV6aEoQIsJW8SNrFypJK/qR+7Y/d5nP6N2is+lNslcM/k0NIZmvzZ4bpBC257\nIZ8H7+AJjYeWzMlBBC9x42SwAYPUqRK5Etx9c5qAIxI+FcrDod8R80JFWaS+\nD4W8R6EH2wnwno6aR+vvwV1neVRgYkLjyHI0Epx8Xtnuvnd/UrWvOT6H1frL\nP0y1O6qCpPnv8KchaZVpDCk6AuzgbEhDSINPTiM1GjMXNJ62YeSF+/gLRdbL\n5/xZVCBYLOBWMcGdsJN1WlMzsDfUvlCQF03Ot26KRXxfo2xEYJT6XgY9cGAT\nm0C0QLHYFo583cRmZI49/vIUJv8u5uVFwOLo3yZ/FwUxY2evoe+EpMvVExnW\nfqhYmkRCekaiuHh3DG2fGgbYc1KU8UoBrwBgAMx1BAI5StHeySzzXdbWlG90\nTfbOkHfvQBlWE+31XXjg3hVv9n6njL+66nrQOf2sVdR/7cl3Fob+1JFCa81W\nrR28awwUGcXMz3BBUOUV6NyH1AyQMb/EndIFcVELvh8clJSq10gKHn/p3Une\n7B5pJA/qgg9pmqF33sG0bmytat6/YwZn4qzN1naQHgG4H90v3FBKMqhMBcxg\nZtgt\r\n=WH8L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHVcMOmoIBKdNkZ5wfl+x20DaiDf/AHFvatc4RtG3645AiBPb0TzADuKWQwm3tA8vqbX2+ZW47eQ7xqdFRRaIM2wmw=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-42_1534354669070_0.09836887070477784"},"_hasShrinkwrap":false},"0.8.14-alpha-43":{"name":"uport-connect","version":"0.8.14-alpha-43","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.53","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"a955fdf074017248aa99b4ccaa4ca5819d6cf270","_id":"uport-connect@0.8.14-alpha-43","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-/uTHskYYkaQevN4QRRII5MuLOvVPgOcxecToQitiOPAwq+LksHC694V2UxFM4RLA2VqRGqWk+Yoaus8WcQDh2A==","shasum":"91184e34b7a3a70e0f504b5eefa51f51ca18d1fe","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-43.tgz","fileCount":8,"unpackedSize":3287159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdGjACRA9TVsSAnZWagAA1dQQAIrBpUdQla1JyrgcTts/\n5Bu++Y2S1AxPqKCkO36v+nQ1iMNHLYNjMBvOio9P/w1d6akYLi+YDNcnRK9g\nQIVj+HI3/Ktmbdj2xcK4q0QoJGp6dkSphlFlVvlK8NZ0cHKyQpp14z1eigB9\njvJXd7RmVK/ZV50vxSbm6XC4ByeB/9STZn2D44geIY/0IvwCSgcWq5m83SOT\npl9vfutwfbM+LKjo3bEQA5Kmt2eLjkZ9IuVzQxqTdsMgWT7mntqk+ZTelJsj\nkocmVa5nWWNOdqVm3PkXqO3dkqrmpBFPG5vUr3zrt0ejJWWSc59blwGhTMvQ\nnSs0E7eLtOh0dnb2Qqwg9JUa5g7nPd0CKapVB7T9YxB0HDZJO+/znqt/VCdp\nPpXhipB56j0IcmLgRL2m4bhY44sC36ztWXgqXEijrrmFJFTuf1tuxvp+1F7U\nKaa++3wTXNhd9tSfEYNnYsLKGKG0a/XGsd09wbThmOlNAoh93JdCw82QxTrR\nxD252JrF67iCdIXgsHYL7IEWFnpRYruKIcdt4fOEWI94Uh4ihaCTnSITwFXW\n6Q0Okp2WtN1w8TSfDi5QezuEd6MnZJvv6X4lgvyeQBjMR3B+Ir5QvjmtnxfY\nJ6mWuGCIZt2XJlIp8+Ooa99VRergjRiluXWUBeZw4mkh5hrgAhuyJYxKo0N3\nqzDt\r\n=ZO/+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDm4ypuXF5r2hqMMwiMvMgMlmrjNXiE70Cpy1aNb1VWkgIhAIgDArdqludCJU+HQrfQymBvzNCfo0rKtEQIiQwLmoN1"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-43_1534355648788_0.6908039978002185"},"_hasShrinkwrap":false},"0.8.14-alpha-44":{"name":"uport-connect","version":"0.8.14-alpha-44","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.54","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"61b1b0ae6493ecdbe95466b33a9dfa6932d29e80","_id":"uport-connect@0.8.14-alpha-44","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-B0u3APNPTAvCPjbGrxi/J+X7xYdMzM7uN7jVBgJw5DALBAU+T8Vpe4NlOOkGX04cPQpuMmpQxgc9L8Wk3DXJLA==","shasum":"eaa124829c7732465c362eb62027f0bb9e75c3d3","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-44.tgz","fileCount":8,"unpackedSize":3287330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdHT/CRA9TVsSAnZWagAAbb8P/i2ummU6FByjmhMNZB99\nkIQFOV/A26lFiFUZuuFpnM2gyWXmsHwuJhfMekpnSp9ZlogPUpcLxTkwEsG+\nw4LeKm1+usRx81KuGPK3xmUAQ01CZCVwluYQ5Ez6qLPq8AySAW5ExrtfnDsL\n7O9FAOxRK4lmwzbxPLW3Y//3rKBe9xsnsfBCjxRxfr7sXsx11udUk38F07+V\nqJcrU7Z5N0k1tx42RaPto9AdP6By9dShE3Q3f/17ylZKpEIT7GG/TcmeB50/\nNxAutH+NLQukWQ1gSGk+68SageHKk6Ins7CTPGLfez1KsT09g9LU3OiPgeeE\n+PhDvEh1uOm+nHnhLmb5hqa1OqlfYMRJCRCWmEjuX96bGJXljLrbmf66m6A1\nUORedJFCBmR8UyYF4gGAasiLWx1Aysm91xoVAl44R9TAuj3kJr8qf14Qb2F2\nf7FH5qfJlv0WtP9I6ZuVBV8V/VZHVOg6QMChF0XIZMJUSnEqUr5cnvKmeUg3\nlG8EOq8fzEex+ttg1DISJkfiWieGjKPJttHZrdFLBFNirB98QizFr85rTSRa\nM5yD6kwwCbWfeE17SnXlZmt5RLu7Z6mQ30hi/nPV77XPfSQ0wfL8qMyA7GHC\nobWlKNNVKuGIJUvixdyLrSXBpmzkdjCu3uNn5qK6fhKQbAoShTq6xxR1bH4G\nn+if\r\n=JLFf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkUGNu4epc4NB4aF5E2kSbn7f1Rgt+TWDW/a252EemXgIhAJMWZYYt/6/mFTg6Oqce8KYNyULGVwsPXpNZ6N3JhNy6"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-44_1534358783483_0.06304082865573202"},"_hasShrinkwrap":false},"0.8.14-alpha-45":{"name":"uport-connect","version":"0.8.14-alpha-45","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.55","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"61b1b0ae6493ecdbe95466b33a9dfa6932d29e80","_id":"uport-connect@0.8.14-alpha-45","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-3jByqq/yQ7TfYx60zQlcRYx9pRuqiU/P4U66flFwWj3rIyuuwQNohfYzB8hR2Zy8diol8i0j/8P0lEqJshxgsA==","shasum":"ec6eafe31228c5677ce8ed9f8f29925840336ba1","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-45.tgz","fileCount":8,"unpackedSize":3287323,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdHvkCRA9TVsSAnZWagAAtKwP/1OovDn3nrjzd5V2vMx5\nNdKL5yt9QiKKKbyGgu4Mihp23CSlnWPHe6jubL210+qBl6BVrIWv/NlU3b9R\ngPuLqntJu/s1N8aa8RCIKVKJ+luU/2C/4Kw3BB6vmIuzuBHnfKs1AxOBWI6G\n/YWyX2omA2dDLklEIbNzHuBP3fLtuWY4b8x8ixG+ezTPNm5L3cIW3RuiYGXm\n3xt7zkEiRTZZTsFuaZP1youccpepXTN+AEEnqyWhgzSvm6n5NGO9ivh4buJU\nIJQyHMgmFrNVihJ81Kqw7vZtxfxvmyBB34jqIEAhAV/NGm+ntq2IeTy2j0Ro\niiluc+AzCeIw7dsxvziZ5p6uFQiVbDpYZCJKODx/TxlgGNcfpdn/M9joXCVy\nA3qUUPeCoFGNRNPMkTdkeFPc2tEYOqGGLzP4IaxxYFXjg/qNMlepKuSUM8Am\npVd02v6pwPtnUB1O72B6jrPiuoQ9YZvkVzdLHJwuNIuG1ej69VZfOnYJSwgP\nXSaNexIryHD59j1wiEfjbTC7mgdDkpTgrXEPgWDOAa5P2yMpF+alb3szNuKG\nh+Ku9SFofAY0zouw5dAavrAnz0VpRW45eQoTYSW4edxTQ9FsgBTJP7k8/in3\nc7W1+vR9NR7rZh/jWCYQby2/GKsxMx5iq0jSvsgHtsI8Go6+Dw8rGcNI9Zl4\nm+u2\r\n=W43r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGgUCqKF2FXsS4x/yfw8FBkMy07tta0l17MSywkZwg+jAiEAhoShEUXrUJLZpBffs0/xtcyWqNVhh6j7H7qPy63qta0="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-45_1534360548522_0.22100329372954874"},"_hasShrinkwrap":false},"0.8.14-alpha-46":{"name":"uport-connect","version":"0.8.14-alpha-46","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.56","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"61b1b0ae6493ecdbe95466b33a9dfa6932d29e80","_id":"uport-connect@0.8.14-alpha-46","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-C37s+aaVRiTucTnW4OhEJgZhUwx91+yX4jwcQwP4Ol0uDRFLUuLk1SZ6rS9QW7PwLGgtujoLWnICBtCst62LXg==","shasum":"318e02a3285b40794844c0800efb6a34898e0502","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-46.tgz","fileCount":8,"unpackedSize":3287801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdH7qCRA9TVsSAnZWagAASKEP/2BbcryIG5RjxAAHkB+L\n9dAulcwuCRO+jRKFkw3KyUoO/tyGaFu1DJ+XS8PAsfFPfkpzMVLUGvIIqrFP\nDfHez4xGYc3In11BtZ9u74n3BcaSPUByRQ6Aw/v93YZcKMOwV6nEpjNj0GZ0\nAaqMgd6FXxiI8CuTbqJSKvzFArdrfBKh43sK/1A2/BAofPC8YgOePB5MsUeL\nz6ChlQQ2gt0Cxpw96huVvA1MuT52epQrRQdyAC7Ca8nWZTk3BNvZjtrbt21S\nwIcJBSxFkbaEajySJnjFstCd+AzBB1NHwEhOZp1YirwCEPI82JBIU81XlmOI\n4K8xiFZmMvaG4LgpWY87KKEZsyZddBOSBUPSaPZU9NuVO5wT8Sz18OBa8ENY\n7+oq2xZoeGqWgUAAkaPXOGXFro5JAukfkOcqmO40xh7OCTmpLA9PcN5LF346\nVviigrTITFV9EnhXuiuUDNx0Las9ALKgkl2fsntEuhOkvxvjq5RohX08Kib+\naawxPvSITXN9aTO+5DvWfSIqKWwFvyY/Z3EHK5Gn8QAfoZX3Gd7dHvj6HYGI\n7e5aL9LXwh7Q1ZORpDSitPObDQ/PKq6ZC1hvA9bElnpATjnjAyGO9sCZAniP\nM74yCq9Xwx1n+dEYVoq9TI4h7DaEclNfmv8aof39pUWcr8tevEr31dq3/XFf\n/hOW\r\n=zqI4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsf2e+wT5Ftk472XP4jAojlHRaH2qYWn1MAzPN00vemgIhAKIa6DVNMBxC0ty7Bx5zfkeSObxzaxoivcyNjr/FCTpu"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-46_1534361322479_0.5630923328979835"},"_hasShrinkwrap":false},"0.8.14-alpha-47":{"name":"uport-connect","version":"0.8.14-alpha-47","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.57","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"61b1b0ae6493ecdbe95466b33a9dfa6932d29e80","_id":"uport-connect@0.8.14-alpha-47","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-qGHF6xloU4DXrFXAlGvUazB6s3d3uDvqQ1cFYkdNIXa+Z9rz2GK/v+3WVdSj7TLSi5IrPFjFzOHtbDGjtT6kmg==","shasum":"ebc0a93c8aa6f5d7d5e1aae6fcb7fa4ceca53149","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-47.tgz","fileCount":8,"unpackedSize":3287957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdIGOCRA9TVsSAnZWagAAqRAQAIFivBUfFwjCrQXFL2Ev\nkvYku/1Y9h7aYVP7V04pckeHfebZVK6k5GMqpRwBJYdaTWt8xKJ0jEi68Yrt\nsjOeleGH37JFAmHDE+YNVE79O3d97TmUohJpLFCyOy/A2sCDFWzH+W+/zPRn\nXjqGmcIzyka3kBU5/7nQTzM2zyO2s7u0kM89dwEODmJnkyqMSgNJyrBjDFXo\nuVkkqNjusIwZBEjY3xA+8+OR/7JBcV+0IHqKi/xcqSVpeiFYSSPPJmGxCxL5\nNWjd/ts6MUHEZs01UJQEj8eF9JqhYTgUinK/GWFroovM0Plx1LrrWilY6ozl\ngHurXyzzntWisPnBWMOb8+6eXLmmk0CtTnFhzTGezmFDpgGajbDMijajHdZX\nDAHU6IyP6E+NmNRu7pp9M59QgwMtK+zz1LKzK/WjvEqxKDdFbjk5aPDILlcW\nwO9Aagj0Gn1I0vnSO6aaGHBYDalJs2AbmOsv6gAVttrfUH5llHcm8Hhme0Gg\nwLYHmNV/cy6tR47p+CX2Oo/itT1hoNHk0SAdYETjLv5FMz5rl1qZmwUQdv5y\n/pXBsR/qneLR/XQomH1le7+NDZv1rzS9T3L0mmU6M6wjQ1NNJ5XD/9VUcYz3\nMS7CQSOY/iwTZkbQmwk9wOi9fYrZXHmeOhM6qq+wYUpb5S81PS/2rrgznqeZ\n8GoN\r\n=nyR/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAa6atT+G+/FgEdDs6vDZP6HPgG5m45RVfUjcYePHm3DAiB/cQXy5WGAQTNOjfDb9qCJX+RMo0vYWf/rVHxEJuW5bg=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-47_1534361998707_0.36284358717390774"},"_hasShrinkwrap":false},"0.8.14-alpha-48":{"name":"uport-connect","version":"0.8.14-alpha-48","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.58","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"61b1b0ae6493ecdbe95466b33a9dfa6932d29e80","_id":"uport-connect@0.8.14-alpha-48","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-QhN1FacM4lZo2ZXWJkjFm0pkWcDfh6qRPEg++9d2w3cm6Bs1B2bY7A5daQiZLiM3dGRw26Nv/kyydrgAXq1KlQ==","shasum":"f5bb0f619812f99e3583090536024a030cb7710e","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-48.tgz","fileCount":8,"unpackedSize":3287896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdIQQCRA9TVsSAnZWagAAa1QQAKJ72ysReC9VqcBFFWbO\nN7xsg+HudFQv+3F63zeUG1f60xUxjDRv9dqays25taICal5MlpCdCRaKYH/L\nTA+j9NMkHIA5j5FQq1Y8tW8UQbOgrNSx3gtVzDZvMKzCCtICrTintqFLhL0B\ngjpw6SOv7Iqdv+53DIe48OeyKTkgd0FvLtiLRjtcoANTXJ9Dv4eKFXFluZ0h\nEu9VfV/w9ZwjdCMJye7pS1N29UQHnUXB2l6T3EVrr8sWQZ+T+XIf1ZqqH1fX\n/RN+JH94tCKEvYGrvkCK/qygKnGOib5PTvh3tdKBaoDXdx94hRYGxX6pY3Np\n7RQpihvbQFwb1Zi3oP8Ixd+A/payJlFuJoUHWAqPhn14i1NObd4XqMRPU3hm\nZ4iSWSFSzQWYodI3MDdUkKSyYJsEKXf2ZV8upkO9MBC8lDynk2C1tzv2PMRv\npOFq6sks+wT/7s+c1UiY8T8S8t/ZN2zAE4Hdu8xl/I9ayEA3+F7SPeAnDDi1\nsuzPxLLp2tVAW0oA9xbSreEEUZ/uuRZOEU5S0jVcvu2baEhAYcZTb275A1aH\n8Ce8uRq3yfE6Y/C4Lw3oBIYxe9QnzL0naFKxiPHiaiyVHcIwyT7VSiGRvff1\n6V1H860mdliZuzLxxwf2386t0OIJM8ub3b3TcBPZSPEhVOQaJwQfINmhTJuR\ncyDU\r\n=zQYg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqXFeUzD7kkoR6s9C8Z10KYPA/OSdroyp2zT92SzSRUgIgfXZxdX0I+EiGlRgRqe9wLWEH3Y3GTJS7EcZe3h8RfsU="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-48_1534362640614_0.0021824002728880743"},"_hasShrinkwrap":false},"0.8.14-alpha-49":{"name":"uport-connect","version":"0.8.14-alpha-49","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.59","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"037523195b1c54a1eeca4569483c3e647dd3414c","_id":"uport-connect@0.8.14-alpha-49","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-N+NswfdHjmNzqfxomElHr+MbLbBma4wztmEwCJ+CJCY1XFk5CdI1qgQM13E3zNcU0uE8Kk9NiK+E3QISBhJFBg==","shasum":"43f9efaaf6e89cb7ffdac55ab81b95be2e7ab38c","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-49.tgz","fileCount":8,"unpackedSize":3287898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdYhFCRA9TVsSAnZWagAA3SwP/A4Us5h2l+L/cgFmoB0U\nAKefjXrhxBQ8d6U9FlmiTHGczrb2YATQtNTshrIFOrESzbcJlunmUPLcfGMu\nk+pbFAsQ89Cx/6Bu6B0ArcwxXwko5o5LBX/t3jODe095VW3ut5zPALSrjU9r\neisCVp4G99H5LrrdkS+UQrqgeK3DrrK+Tal6Y0Q1Jx1e0pXbuczsf4b/FdJV\n5x3CKo6WDpcLslbj9Yfrfb9RS93gmLMAUrQHlovBDBiwDTQjy3+rxFpI5TSv\nWS808/SnqUJu1gS18pwbG1wMhrsLEdBZ2HNF9RkdUuPgs7J/7hTKxL6FtqXN\nvobrtsXoIYiybDn1VdzBRmpIbuAANBTzaTPIDCJ4YwsGJDLLzmbdxkA+IXN/\nZxUxLTgyVw031P9KBvKIG7VIy9aCUMD9e5/bhaFwRosZay9jk0eNqij1YHAR\ntecw2jOF4noNCcdSOiAIpf2LfBWdkIcqhHbx5w6OiMrZt8fJ0+rLfdsHqzit\nnb9mrE5t3Zf/4KDPGXRc7rrPZbn+1mGaLJ3oSpokUBNqn6JeKvhdZyjZKJXD\nrYdqtoGHXq5Wtyzg/JhV9OvOZ63YakyBG+/HbMVSGOeTjnjxVix1wPo7r4od\nyi6irxXBYkavbiHZzfNsha3E1qkwCuAI+ebEbtjzwaICjukBhNmgU34hKbzs\n0CP+\r\n=ZtBm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDza/hcksR+AUARUEf9+CYaJsCPGhh56CiblH+72qEuIwIhAJPYt7mh520d7ZE+epgzHa8kWwecOv+3stgC+nYK0Qch"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-49_1534429252881_0.6727099304462161"},"_hasShrinkwrap":false},"0.8.14-alpha-50":{"name":"uport-connect","version":"0.8.14-alpha-50","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.60","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"0ca0efd2d0539dfeb119fe66e858b9cd5f44536c","_id":"uport-connect@0.8.14-alpha-50","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-qEIls3JMZPtF9sj1XFiAPAb3EthTvnw/Ti12l4GgVWkwtTTzELsCAPwtcfDxkK1AgM5l6IBqCN9sqzO+sX3XAw==","shasum":"e9949c8dad8c896c18d61dcc34a0fbf5a7659afb","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-50.tgz","fileCount":8,"unpackedSize":3288115,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdalJCRA9TVsSAnZWagAAeOwP/3DnovKCQQrFumlb+TyR\nJUihlO3Tex7TyM8XiffzvJG2dyYY7sDh0hjK9Vr7lI0NXs9VXSBroVJ/rG6L\nr2D2Fz9+oRDiOHTrju1+OA1bi+8dXCp6XtgIHPLHZ9qFB428eyrbTsubg0cz\nqd9tRRiNa7znrvkrZlCLiXo4yV5LLCRuiKJsPsLEyKvSYn6FgGtQyz8Jo2B5\n3GabrRg7UJMzJqlTzOpXUzIbShtUrsV4LUJ4cLwmJkmGolCIl0xX7uNPLbXJ\nHyIpXr4YaWu27BdhRJYr4E8bd1Ke7bAfveVq/lp8VLCCeKWF9n7A0W1GBfPD\nEnUeu0HuBq4LgK4iRD9MmNQf/v5Tmul0zAz/xVvspTdisrxwJf1xeiuSwOwt\nKLnfi65D9l2kQOMxnoceGHbz7k5BrwJw8zIfyVGYKQjoGD2xBpGgu5d19fLV\nphv+WmJn9+Zcd2t6But8uW4Wf0FN/rvdyjgcHhO7dwoc1X+LSOitix/WxoAI\nIEkg521I57m+ILyFvq0yINb1l3SEiHs3fTMzgqQmvesL2w40FCHRug442vwt\nTALv68ENUUnfxJr90ILDdM3qV1JXsiptcwbZ/YR1GdtnQuQjRYAD1Tr//Dhu\nJu/6W60dLejT+D6oRYmT419Bu9QUV0LK6Okl7gh5+zFwXunkl0RxXiay7srs\nroqJ\r\n=5qgh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6/qOBqFAH3OmpdDA3F04FgbB5CVE3evRBf1PCddpgDAIgeR7I1lbQkDV/mpjjjd6Ho+sdG08lAQadEITC4Ek9LN4="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-50_1534437704856_0.7746922471068247"},"_hasShrinkwrap":false},"0.8.14-alpha-51":{"name":"uport-connect","version":"0.8.14-alpha-51","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.60","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"0ca0efd2d0539dfeb119fe66e858b9cd5f44536c","_id":"uport-connect@0.8.14-alpha-51","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-RXahjCx8HZEaDRXpMdXzfScR5gSUF3n2VQ2e/jysNcMiFUNa0347p+8c5zG2UkU1gNZKrzvKrJeirBcP1DYbrw==","shasum":"7b37e3a424626a9289e4bb3ae2fe2398ab279544","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-51.tgz","fileCount":8,"unpackedSize":3286031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbddBkCRA9TVsSAnZWagAAo2kP/3kJxRDiuMpdX+GPnzww\nFCiEkP/ak4vEFtPAtOowMIbnxfrtUlIOXxSAbSLNwA2fkiarlWT7QbnOuk2/\nTY1aBFPfj1Ej/vqQOHVAAhUcMj/6AE3Sf2HeTXbgL/PuqHXGIN65P/HcCQM8\nwovp0OzgYZc+SMbu3yqJ/ayudjKc/5Pj0zI1d0H/x1FtHGGIvCU6NIy6bPrJ\nAsueD4inKK619fxJN5CC8SoUfyQrQb8c0Y/WRZrUoZ7McAMEBP20CNCaKKk/\naqW55frouUvGq7Uivwvox5Vva7S5lGOdAHaEfx6dhou9h3WK+urWjI0DxbRB\nMbmhmoavhCw/m+L9oo+6FhtdL/JuDPJQolg8VxIlbZ9s5We79Nrk9ZoVD7HN\ngtOd0h57trzDv5dXEq7la7pkwcpmkycnt+EUBX92LXPmoxUXGWDB+3zWLsB1\npGtWWP7wB/LMYU0WHchUhAwSu1K84ueqX4U4hCWBJ/KmzMAvvS7LtAhZAKnh\nRv97zI97xA8ZyJQTQWxp1TRe5Lx15+/aXZiWcakcSerEQsBuzGMR+r318KZl\ntil4VLonvfy5R+lhmLijWhu+vGXQDaChakUAr7GrAZveltIwXKJ60yF5i+z5\n+jTj4E/BXiZvomCIf3ud5udYtPGrsIPkkQNIZwhdmxqB4TDzhngl4uofycjN\nRpm/\r\n=FCZi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFmuPy5bdFvzrxuFJVGRogxUnAk3JKkG+SbthVmOvlLcAiEAtrUVG9+Bk+G+quMe9yxQNLpCnnRTUPi/X/eYaflbXS0="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-51_1534447715686_0.13775697118042585"},"_hasShrinkwrap":false},"0.8.14-alpha-52":{"name":"uport-connect","version":"0.8.14-alpha-52","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.61","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"0ca0efd2d0539dfeb119fe66e858b9cd5f44536c","_id":"uport-connect@0.8.14-alpha-52","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-jJfIg0Hsobq+4ect2RBOGPbJUgZGBrOKtiWT5Lst8egaeZtSiPdoQQupw/naIrAYI4gBug3M1gkiSVlZDxvlUw==","shasum":"67047815f7b960206b379806f2ad81b2c37ceacc","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-52.tgz","fileCount":8,"unpackedSize":3288033,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbddQYCRA9TVsSAnZWagAApOkP/2H5zEC+GbonoD7zDz4C\nk5pX/Pcj9DpG73xR9ye/IfDnNAjoiFNVwpU+COmTeaf2yLbMaUWmKUQojNz5\nHRqbFNCuvOeO7I8Vi+oLg/gMFkzszTFXDe8Lx9QcjXC8NZ2c5BjjWaDK5j0M\nrn7KXJfzq1noFNL1Of0y4Aw3ST7UIvTNV7R+jIoA/l8fmFZj0U30lY2vFM+M\nt7XrZk7Yfp+wDQoBZWVM8r3y/s26hpA2oPBP5LaeMkptyWa9XR9ubmt7W7ZM\n6878I0s1Kz2o1GDoz4iF7GB721C0gbQdrzFooYNlTY8E0ORnM6GDmOBFkQwr\nvXJ+NMR9FPJcY/KKhj0rnPyTa4hYFqEtgylLynZgGfMRrrxqaSJ9BXNIKUPr\ntj5lAdjZN1jOdtyZhM7u+p6n9vK6dvCjZTnEcW3UdQ3B3o6Eruzl8AdfF9b3\n3Tbyn0zWtGVlQlFh4QEHyKFAG6EvXfRwTMplp1vHxbfwodwU6KhqFi9gyGFR\nl7Pld6HOcwfboOezR58Dn0cTbPd4wS2hJoHRx+uTSmiLPU0oH44+4jhi2Z+s\nBlJUGjGH4jvRbNUmhAVo1NbuEAGWyfOAlqKiAXXBkBNpa2XcJg8cbLaAPlFt\nTMfl0MCZ2y7yus0Y+aAOFPlZsvvi9karN4p+T0+vLVz21W+4vljnFWX+XC6K\nZ5QV\r\n=OKZS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBsu/PZM2ybYysXsKn/bngkr9Dd0tvliUXNWOXPRtih4AiEA8TpOFpsjZST1Uwj8uGCO8GLGEV9A7mXe3OxEx66GMSA="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-52_1534448664160_0.4626003119524762"},"_hasShrinkwrap":false},"0.8.14-alpha-53":{"name":"uport-connect","version":"0.8.14-alpha-53","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-8","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.62","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade to v0.7.5 to support new uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a system for self-sovereign digital identity anchored in Ethereum.\nThe uPort technology primarily consists of smart contracts, developer libraries, microservices and uPort clients including our mobile app. uPort identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation. In the current implementation of the system this is achievable by having the mobile app act as the primary secure container for data related to your identity and for a set of keys which allow you sign transactions, grant authorization and sign credentials. The identity is anchored in the blockchain with an identifier and public data is stored in IPFS.\n\n`uport-connect` is the client side library that allows you interact with user's uPort identities through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-js](https://github.com/uport-project/uport-js). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-core-js](https://github.com/uport-project/uport-core-js) and [uport-js](https://github.com/uport-project/uport-js) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding some of the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n```\n\nTo request the ID and address of user use `requestAddress()`:\n\n```javascript\nuport.requestAddress()\nuport.onResponse('addressReq').then(payload => {\n  const address = payload.res.address\n  // or\n  // const address = uport.address\n  // const doc = uport.doc\n  // TODO Show whats in the doc\n})\n```\n\nTo send a request token you created on your server or elsewhere use `request()`:\n\n```javascript\nconst requestToken = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.request(token, 'myRequestID')\nuport.onResponse('myRequestId').then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nvar Connect = window.uportconnect\nvar uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html). [TestRPC](https://github.com/ethereumjs/testrpc) runs in the background during tests.\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"0ca0efd2d0539dfeb119fe66e858b9cd5f44536c","_id":"uport-connect@0.8.14-alpha-53","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-Nt9p2PlYqo2gYWWQbbfrzMQOIs8GtVNQ0WYyxXSsv+5qaURo2tNVMRgSmV5AcwCtqJ5UJJRvu+J5oIDvlWqjbg==","shasum":"26fb0ee5bbdb3db0be8fdf1f56a26113cca8dd9b","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-53.tgz","fileCount":8,"unpackedSize":3288143,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdwujCRA9TVsSAnZWagAA1scP/2HkjKyy87KtVjqulmjd\nHyZkvlp5OCe1KuJGG957/l3iuskHxIUdVJ/rZzHH8vy/VfISK69WRmJK2pzY\nBszv2iBBYvQ7ZGzG5LJAXYO0qCYVDp8JH8KidKFPSlvi5c+uOaU36oBhC7Bt\nwqIkaEb7eSt4FiZsjpKNGxdrw2Yv/bThbmtndtvza0PP4J7v4v515j1FHOYv\nOqFXxbKCwXj8CGZho/cC2XlcBjU26IZfy2NS9kFTxKcVGAQjX4avI7q7NJ69\nH2p10QqcUzKEDESrVH1TqHTx4TWpD+GOHhDxTTbM1+IwzV/DGTSw33FeMdtn\n2qsV1SUIRvJG5RizQQjUDaKpm9x9da7EVVHDnTk52em7vlW9JBjzemqT/qNT\nfTZr3Y3y5CI261+WlM2MYeKti6/b7LfGbqcj+0fQYojkd5QWVZuIgBt8SuMn\nYEVLwvF2UGoFphlSPYFV52d0z+EtVO+A+UTow41QBKXbsACtFPRjNPZ/fGkF\ns/V8c6IwogNGW0RU0D4gVolWEq0JbC0OKC3s4cnqk1qT96MZ5u0lUB1cfEP4\nRioFrBVldTNSdC08bZPva4RqGSI+qEB9LLOWGRGI89N6T1PDT6Uraq3iV49U\n54HLlDwGLWn+UugZJqf9tU6Tffmt6+w9ii/oOSLyUuxiDgbp45RAtKPr3YFy\nrtwB\r\n=I6yB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkFMVUzrdEJ5SJy+ustt1FLW+iPMlg9PuRrtghsiaXGgIgMsuftyoDsk4NGERRXWa6stNqxtnzXWoD/Oo1ZPcs5i4="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-53_1534528418415_0.1161609711411713"},"_hasShrinkwrap":false},"0.8.14-alpha-55":{"name":"uport-connect","version":"0.8.14-alpha-55","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-9","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.64","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade v1.0.0 or v0.7.5 **\n**v0.7.5 to support new uPort Clients and legacy uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n**v1.0.0 to support new uPort Clients and to use new features and fixes [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference docs for additional config arguments which can be passed.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(payload => {\n  const did = payload.res.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(payload => {\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n  claim: {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n  },\n  sub: \"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n}\n\nuport .createVerificationRequest(unsignedClaim)\n\nuport.onResponse('signClaimReq').then(payload => {\n  const signedClaim = payload.res\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"a9abdbad779f0adc914a7d8613ff2778e759d5d9","_id":"uport-connect@0.8.14-alpha-55","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-ZJB8/W6xeEmHAj1osUEcM8ezPxdCLDIL7usu/IdzRAmpmnBsrq4pmaDUH4aijiwQnkVww82yfoYLD37eyY87gQ==","shasum":"dbd1d585a72ef0891732343c9cef62d18d1e1f2c","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.8.14-alpha-55.tgz","fileCount":8,"unpackedSize":3294777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfdfxCRA9TVsSAnZWagAANTcP/R5JxjA/25UEry4kKs6Q\nmXJd5IRnMBspcy7nkqIYLVF/k/qHhnlpgDbdW8xApYsZ9hlBdns82O8qyvVj\nZDebPRl2UJ35dKaG7GzKULx8feNJJU2+SRdVfoS/g2Tl7TKwWzBgtsmI8Uqw\ndd2LZDBAOy33pdmroTjoPRnZXilvc9sh4g828ZQkRNf7lGliJrNiIyByeM7d\nL8u89+cRVpmFb4nLGALcUKom0LbfmjSXXcdU43QPZ8K397JxmErUA+aNBGjT\ni5jdJHU3ytaGtU37rTUqdD64S7kaft2b3+E9LmueFpX9xc+A6Oko22x5IryO\n9yX/NVxzGxoCYWmlmPCqoKWpkpQhD3rLSZhhcDySjyiAXms/LdlHYyg5MH1d\nFZRJYDHYLu1+oqJ4CgbhS7ZA99Ux3QcYNpiwdz4Apr8LwktxeE+c68wSewvA\nCB+gEoUcfv/Pw5U/40EJLBGoQ0AOPKU+u/OjgSM5Akb4Vy8eVawP3ViSgY6S\n8yeNd7ZpACTEI3XdRufLdFIuNa82iluAaQ6Lcd03w1XHIYMhX/oPOz4SUQjO\n/4EtPB12le8/LvVVV6S9gj5SYNqhiv8uvDHg8qyLGnOFE2OiygJy1y/otDwg\n/kVGYJVxa3cXvqbWNbTUoKs+Dg6ueFN5a9CkV6CvWvcCj2WYl9f60kIyDwuJ\nfmjv\r\n=QbvW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHjNi8hNU/Tv4lvY6qaL+TTd3raFRbpDKdCiKBz11vlVAiBVOe5/TUh8C7/k6ttbCtJAbRc89qjqqvzIEJnZ9fHOOA=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.8.14-alpha-55_1534973937102_0.9197233645175427"},"_hasShrinkwrap":false},"1.0.0-alpha-1":{"name":"uport-connect","version":"1.0.0-alpha-1","description":"Library for integrating uPort into your app frontend","main":"lib/Connect.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethr-did-resolver":"^0.0.8","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-9","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.64","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade v1.0.0 or v0.7.5 **\n**v0.7.5 to support new uPort Clients and legacy uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n**v1.0.0 to support new uPort Clients and to use new features and fixes [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference docs for additional config arguments which can be passed.\n\n```javascript\nimport Connect from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(payload => {\n  const did = payload.res.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(payload => {\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n  claim: {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n  },\n  sub: \"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n}\n\nuport .createVerificationRequest(unsignedClaim)\n\nuport.onResponse('signClaimReq').then(payload => {\n  const signedClaim = payload.res\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"83c8079eeee0a576803563078c93cf18c7149f2c","_id":"uport-connect@1.0.0-alpha-1","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-3RBqMt1ex1GPSK5rrGPNIvPvZoEy5JScFrYmbppQT9TMyj4Zsdk2Gy9shxnm7zwDVxu9xCAiH0RdCUOeF/6yzA==","shasum":"09f281cc6cfb0f4bd2cf31bb52f9f1456c4472f6","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.0.0-alpha-1.tgz","fileCount":8,"unpackedSize":3294775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfd1ECRA9TVsSAnZWagAAgVkQAJLqPInTIQrK/Vhxx7lT\nNDTTOL9+CZd0DsJxIJDXUPOngwevz8ndl402tQQsEReuJD5acz/4QpOG5avv\nxZlGas9Kddhgzfh/QAM3oSp8D9pDjAuk78u6/d2+V8djPnwQSPZO07omTSCl\n/fsGy/oe3sW3gTLHpWLOlXQ0k3JfSni6AghFrXiiZbLlQDYaEJEkcHcXp9HV\naGkZNN85yhs1QKGpluxHlZLlyhbfKKpSd5cTPV8mhfgHeZQGIEcxjbR35GWZ\n/bOuoRk7Pp3xl/6lm9u/RP8rJmO0rErIY3ztHePEn1k1kjQmWLtLhNdyJ8ug\niUfLhraSYoY2g7tkIzHQV4mFf21xiY5CEiHsrdFNw8iZ3V3gK2O6zT7v15uX\n9jPBPsYcd92t5AWO/LJ02fmdCKi7D4DkIUMM18DvuUii99NbSd7LPAQVz6bQ\ndWwDi+63kcnBOhTqq0z+f9Tyl+ojzPmpp9D7DSh6OhLdNKgAftyLMItXVwGG\nEU+9Cet3pMBG1U1Rk17KJSS8v9GSCcvQwkczg9pXbEqTALdQ4TyQRNoGDB1j\nue2PGN3MPt+/9q3Ohj33l1zOr0qAWPVHWDr9MN23LZV4wAYx0K6fzMM0jdz3\nnv/7KbLV2eaX+X7rwpuYTNu4oQi7NCu28C/L2HZE4JspIKmwWf9Xe5CPqXmr\nHCk6\r\n=Zffv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDez71K/or1u6BoqbgxkkM39q+/0Ei0UopWsaVUMtJ+vAIgc2anc8WpN+bz3+kJyVR/7ZJZshNY6vht1aFlMmOlJco="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.0.0-alpha-1_1534975299692_0.5495206005083066"},"_hasShrinkwrap":false},"0.7.6":{"name":"uport-connect","version":"0.7.6","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"files":["dist","src","lib","utils"],"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","did-jwt":"0.0.8","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ethr-did-resolver":"^0.1.1","ipfs-mini":"^1.0.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","uport":"^0.6.4","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"867a50024f8746cc979e2e920fcedbc575f4c031","_id":"uport-connect@0.7.6","_npmVersion":"5.10.0","_nodeVersion":"9.8.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-OifcEpOz6PYnmr8Ih2T6rDitaWf/rjDOAxhhP+lmJlBT5D2SUMnAOROyIod8RFS8dVFKP0LmwMNnHPEzOQMsEA==","shasum":"7c952c518fe0898991fff5b785a8bd3aec89e196","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.6.tgz","fileCount":35,"unpackedSize":16247154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfgzsCRA9TVsSAnZWagAANRUQAI5KpBQo7JwwMtllTIxj\nuaxbV5glK8gvOe6h5epZw5dLfxss58Pwd6GaVL79KU3WRVYdnkKbYnc0C67u\nB1Ax0I8YP738wQWmIbLkhTEYGU/1x129yR5UzUEtFnU2Ytw9+vIJ2R5bT81w\nHsy3UeGf7oQXdwld0C71anbiq6lWteZSVMjOYTr7omd43sPCYZEOJGagoENY\n3zGvn6vvyY76bzyPoAMsNUwMArC1GSqppg9yvdILiG7VP7DE1KBW2IMJhhnw\nKLy0yq/DZfj+h0iiLYD+TJwtx2j/+X00m+AauxpxpS4DaT9cHsh3+sZPG5lu\np+2spPpD2Oh0AmlqJdY+WHVovgOaI8HWRzzVCExPQxeeg5ZA6VD8CjIopQnX\n/pY/VzEwN7ksg8doBj4O3qqA3I0z+CqRJ5r6qryrjfLlownisABlbNunIeml\n1P9JMV+JAa9pKiFUYgknLhw7w06KFfpOmKoSLX/musg6XgF7xJneaocTfYzu\nXZw/G+2c5QWI4lcRM4XqfzB7JtOPMoBA0E7/Ka0TUdgXqaGWAscjqKdjkOVx\nEq1uuH2hKysl+d/kXB9mtHCBnnAYFe8whCqSWc9gRV0ZNP5emNcr9hp/Y2yI\nqLQ+WWoQvYL5G1DWJlqlDTVCqCgwZq8/iZKSvResp+o25QHIbJc/AH8aO9oC\nCTbg\r\n=hoe6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3pn1Rq+dnxg1ROQFZNc5U2M8fkJ6ZLouW0r3zt4lkvAIhALdoaV+8VtAzm4s/33HQb6/cZEBQoYnn/NmLbYe1DOe0"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.6_1534987499414_0.6836421801294768"},"_hasShrinkwrap":false},"1.0.0-alpha-2":{"name":"uport-connect","version":"1.0.0-alpha-2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-12","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.65"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade v1.0.0 or v0.7.5 **\n**v0.7.5 to support new uPort Clients and legacy uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n**v1.0.0 to support new uPort Clients and to use new features and fixes [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(payload => {\n  const did = payload.res.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(payload => {\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport .requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(payload => {\n  const signedClaim = payload.res\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"6c6e58c0fc04f317b173c361c51c5bd0a6b6a617","_id":"uport-connect@1.0.0-alpha-2","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-QlofDbQxg0ioEeu9vVuNdMElXcZRdirBnWg3QSIHDjSCzrMlVFdNi3j3QSA/jiYVi3rv7Pw3YwG37LE3/yVRCA==","shasum":"b6571e48eee1a965f957e288cfb49fd0c424bae3","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.0.0-alpha-2.tgz","fileCount":18,"unpackedSize":16677230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmRmGCRA9TVsSAnZWagAAmSYP/jAWw56m4Yh176Sd8lP1\nYQeMDrRbOuR41q7H6qBu8m1vekPTylJ+qrK9BwiNKgK5UhIAhQmdKmsHgfOz\n/ivGrfaKxMBTDtWPWYwlKvlA/x3snrdZpyTB8eyWeSXFdxaq7fAOnn5IFUOy\nx26xUJ4IVDxMbLqpVFZc4pyQ7Q/AdEy0w85qeYGq5bD1a85gCyoDMrKuxhbN\nw0LW1UPc+YTpVnuXNETqqfPi443WxnDFw5tRjH7jowejn045n9Ikfj1Ktalt\n+EBULv3S4XW67Wt8tB7WS9ImtCYg3Xc3b+32kxSRBuGkvQ5BRvWLDKG/fbIR\nW6SouRvsn3JKBvtOeyEqQv1AgDnAhi/6pEw4xPEkd7o9/K3ZMbow/+8u7d6z\nXYZ0IcJYR2+LX6RM1sjiHaKFpYANsYS2rMEnxd+ypA9pkHbbmJje8ktg3Ii5\npJ1RVVISxPsCdie4HlAJdClCOz503khbbP91xkH0L+L0Q/R2BwRbM9B8vYxf\nYX63ICKrjO55zoq3NBYOMsiY+kWJL1lZLItcB9+/Zo3E3pzyDE4UwmV6b4JH\nmeJLc+oTOm9lBAAtu7A/sz6xtqkjf8ebqqM0t09AQb5JwuW9FWFioAvLEW25\nl5jcBncn43KRLrNPugZ6+K/QTOm8AX+0/X5SGIgAv7OPlBbUrGEWhuNsouD1\nMyPQ\r\n=zflo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9sFu1joH7rrvxCIW4tlR9AQ0zGPsxjsHxjIQajhKanAIhAMreoUQx8c67HxFWHeMBaK3XL8HW4Z81MaU+Yy5HEaZd"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.0.0-alpha-2_1536760197058_0.24169588403514775"},"_hasShrinkwrap":false},"1.0.0-alpha-3":{"name":"uport-connect","version":"1.0.0-alpha-3","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport":"0.7.0-alpha-13","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.65"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade v1.0.0 or v0.7.5 **\n**v0.7.5 to support new uPort Clients and legacy uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n**v1.0.0 to support new uPort Clients and to use new features and fixes [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(payload => {\n  const did = payload.res.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(payload => {\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport .requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(payload => {\n  const signedClaim = payload.res\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(payload => {\n  const txId = payload.res\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"1b701a598ab4ec1061c8c826bd399f77dc5cb066","_id":"uport-connect@1.0.0-alpha-3","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-ofC7bY7EOY/L2mk7YIw+6O+D5nB9p5WM+GYdPmvHrKPsdSNeLnvmPh09uHBuMGgQ9TcGgk48ShW/4OrXa1E/Bg==","shasum":"87dfe08e74274f93bb71a9f663e9f4e4f61c69bf","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.0.0-alpha-3.tgz","fileCount":18,"unpackedSize":16677489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmb+hCRA9TVsSAnZWagAA+r0P/ikCQKWSfi2svi9k8/81\nzy3XyXWApdC6OMJLRntjap0KXgyYHPbni+HESxtYS9O3KYleJrXCH7BVN0qv\ny/92ifipa+SfLFGGFvATm0ZTIktco0fF5G219cepkoiPhvZOnItWeve2fZcU\n3eAKb1/mVump01rULySQTmmvJd00uuywZXSX/uvT0jrKzTQ0imxILHyIhjGv\nrckt5k0DKA0raM8zrBx2gxW8rw3DEkpb23IZvXzpF95DeadXyKqmmjysv/Xv\nj1ZcJemydA1znljDJjyme4ZKsEV+2qgbGqn4FquGIp11SxMarbYefcifzNlX\nNZz90CanRHqia4AsAqupqs8igRUeu9qXufI6FFL5sFxvwtjuDMc6QcbKmmcm\ngq4l/U3tv6WtNa1CL3huavbWWjP/Eqxgi/DD7/vaVXuUaDNbsWK+oo3AnzHH\njdOgj/9vT6JJX66mIlMj1rp0A6mJ0lFG4DVrpVMy0uMcrJMGiPUKC9EfawVw\nojvlDl3WdIAoa9/uo3zYyOZEZMG6lTt1szFdueDp+R42n0ew537ewmjX1Foe\n5z5oq6NcvQXmQZ7J63e+V12lHY8uZmI/L3DgiNE9EJ2jZxkON3+bID4zUVwa\nqQyA0/Zzerf6SBvq8nzCqTXSZO6CYA5lT516LxBmeSO9V/gFWE4NFZcMhjKa\nWLJz\r\n=Pz7O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSruM0aGfzP2edNfdt9/pMUkVHjhiuJmJtFsLo0Q1cIgIhAN9h/yIs3qImpXqu5w2hH6VKo4/hXdcDT0rz+3Q+rysi"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.0.0-alpha-3_1536802720245_0.5693130773301529"},"_hasShrinkwrap":false},"1.0.0-alpha-4":{"name":"uport-connect","version":"1.0.0-alpha-4","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"1.0.0-alpha-3","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.65"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n# <a name=\"introduction\"></a> Introduction\n\n**Required Upgrade v1.0.0 or v0.7.5 **\n**v0.7.5 to support new uPort Clients and legacy uPort Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n**v1.0.0 to support new uPort Clients and to use new features and fixes [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"a5d717c823079a1e321fddbdff28aba5de994046","_id":"uport-connect@1.0.0-alpha-4","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-zlpwLFB1yh4gkMFDve65/q1C0ly1m0I5fqQptZaCs4kjRHaF7TH4euZvz2SvTXwkrIpaqAlN3qrrr6wrAfAtug==","shasum":"45e5c628db3a3ee35a85cf061d4a771767975251","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.0.0-alpha-4.tgz","fileCount":18,"unpackedSize":16687697,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpTnPCRA9TVsSAnZWagAAW38P/3q4b7of3S3PZhFQg8xQ\n1ZRMQ6RnbIJRqt0HKZsGh0cefwRmyBwP8tZDYYVptDgMgql+zf8b7o7iQ16V\nTNEF1vBwUZ22m0frJ8r6M7QLDBvdp6KHimuG8Wn1Szaqk5ipb6nQa+mvGXdW\nNSH+5lcWWPaabbDzz6YrUQFJtmMbgThRznt3Z6xaIyMxH9s28eLST/EM30s8\njRrR/BmY0peXAt2ah7pkY3EyUTqYRJIg3ROB14snsVuknHVOuH5E6UO/lwyH\nyd1/zhcRAYt2LHuOqvuVY3m9qLxmLx06vcGE0w9VmMyTTNtslbTEsC5WVUx4\nopJ9+Tf3ZxGoxPlWLRkfE6cvTH8Y9PRVHCbJ2eTT44MfMEf5ou9T2fwyeWNS\nQTn+Y20cppkSEisYGtense60bdDj72vLcg6mypxLRNMxqQ3PDeJlOFsdI3IX\nv+3+7ip9KyKK+QTgs2xPdkMoZjgNky57btAQywDaG4AoM9TlQv5qUSOM+rQv\nQ3GLLqIyI9Io9UdbYL7/jkm2m9IkQFnV9hJjlHAdc9xnnPXo9IaN81n7dXV/\nFevn2BpBg1gS/cLqlhpUYe6ki6xVLg5iMx+tUWMORJ3WG2X/sWnT1qNLgDkM\nluz0XmO+ixyGii5ap1nl8m2ndWrp4DildXO4/9twoD7qkKBtHzKp6xILTQdf\na3v+\r\n=Mg8/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMTK0YdA4OFWrokmgG5VdmJOxH8jBwfvv6zB2jk4IcGAIhAJkEopSreCxHXNdS8evZ6k8WTy9Lbzqw1UpTwhYZEPWg"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.0.0-alpha-4_1537554894839_0.7296173944742865"},"_hasShrinkwrap":false},"0.7.7":{"name":"uport-connect","version":"0.7.7","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","did-jwt":"0.0.8","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ethr-did-resolver":"^0.1.1","ipfs-mini":"^1.0.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","uport":"^0.6.5","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"04c24c08ab32ad392791c1ae1ff5086bc7e8683f","_id":"uport-connect@0.7.7","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-O1ZjOroPp8xBgWbg4rclvOUNlufPqV3aFr28o3g3UTPLoWynFALwIYpJbFmbMKtqDS82iYItW5OmGuan+sTnnw==","shasum":"06131003cf97412688be76f93fbd83fc454cfa1f","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.7.tgz","fileCount":35,"unpackedSize":16665946,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqX6QCRA9TVsSAnZWagAAlhcP/RLtbZifkXgMk4LCgHI8\nQQPaIDr8e5ZC67ALRAmBv2lzT7CDYtLI1IB38mmYga5K1zfX/2Uw1wObX25X\nqfpy5ZZgI3z95GdHLlgXB2oUTOC5D6bz278UEW9+XUdzlKzORu81tINZ6BpW\nohnIg4CjrV6XiJYtGl+rT+UivmyUNHjEVzjoSfmm6KD5ywDGhUHkUylAuiDL\neecwPY408lhv+DjoNOQxZN/A3JvDrYZhk22Vq6+n7EW5gGPndig4CWEd7rhi\nHlRY5qgaPmuVsRqhxyxHVLDDjM0GpTUteqBoO2ejs38ILR6mT5l6+HuBkkAy\nqTn2328dAU17Dq7Ej5tVtbX7+1wCjXUwj0fAvzdjbq2k0sBRZ1+Ss/rNUDRZ\n9yuF8bomHFPPw5g5E62qQeZeUmfd4az0NPCSgtOQS/B5u3UwPLpSyx+0Qtud\nJ2+NXinbrdCqvvHgimoVcKpSmZNZ+XnZNnN2q37Zh/42+mMJ+pANOJIPaYT2\ngF8CTf7cLfj4JIpdqkfDPnaEKIb7ReqdOz8pLahLs/GRyetPFrbhm21wvKqt\naWUOCRZDo2UmK9vfaNIC50BL8fg3aIjJPnM9mQxFqGEoZVxsSnMtQFvZ6RMU\nDLWDhnCDGSeBadfzGOGLPapu4+FoxBrbaDVyClvkKnChw+ygk5vhOKDqoZqt\nlXzz\r\n=Q+e8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDAWyALwirCGHqSWd49miBUfhQC5fHZarnq3NeHM2VNcAiEAqWkUbenTGCEaC43Q3G1M2unVO6f9uehvcQTCF9GMQWY="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.7_1537834639436_0.3213555188256154"},"_hasShrinkwrap":false},"0.7.8":{"name":"uport-connect","version":"0.7.8","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"lint":"standard --verbose src | ./node_modules/.bin/snazzy","build:npm":"npm run build-es5 && npm run build-dist && npm run build-dist-prod","build":"yarn build-es5 && yarn build-dist && yarn build-dist-prod","build-es5":"babel src -d lib","build-dist":"webpack --config webpack.config.js","build-dist-prod":"webpack --config webpack.prod-config.js","watch":"webpack --config webpack.config.js -w","testrpc":"testrpc","test":"mocha && npm run karma","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","karma-watch":"node karmawrapper start test/karma.conf.js --browsers Chrome","karma":"node karmawrapper start test/karma.conf.js --single-run --browsers Chrome","karma-CI":"node karmawrapper start test/karmaCI.conf.js","karma-CI-integration":"cd integration-test && ./setup && cd .. && node karmawrapper start integration-test/karma.conf.js --single-run --browsers PhantomJS","prepublish":"npm run build-es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"async":"^2.1.4","did-jwt":"0.0.8","ethjs-abi":"^0.1.8","ethjs-util":"^0.1.3","ethr-did-resolver":"^0.1.1","ipfs-mini":"^1.0.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","nets":"^3.2.0","qr-image":"^3.1.0","qs":"^6.2.1","uport":"^0.6.5","web3":"0.19.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.21.0","babel-eslint":"^7.1.1","babel-loader":"^6.2.10","babel-plugin-external-helpers":"^6.18.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.2.0","karma-mocha-reporter":"^2.2.0","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^2.0.3","mocha":"^3.0.2","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","snazzy":"^5.0.0","standard":"^8.0.0-beta.5","supervisor":"^0.12.0","webpack":"2.3.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"26b7275ff5cfef9852ccfe3a8656e6c5332d304b","_id":"uport-connect@0.7.8","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-zun59PeWB9voO+WRAHt5KTROkM5szclxuls6qw+2NfmXRG+YruowgqQib+x0KlnOCfi1eO28oQDPvU7tgQ5R+w==","shasum":"19ae9eab3a2d3b948ae2139c42f5606ce651c14d","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-0.7.8.tgz","fileCount":35,"unpackedSize":16244667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqkx8CRA9TVsSAnZWagAAKOIP+gO+iAKWWPuu0t+0eLBF\nPwOTo1EfG5Hp7nuZnXM2yl5fyhGKyZ31WB1LGL9pnY9M2g6xQrAWafaQ6rbx\n0jDgjWvM2M926EBoOojNX8g5b64C5ODv4PYso1GqqLGXQa7j3W8iRSh/FuLS\n89YpI8bROHd10yE4Hbq4LH4GNDBz6LcRfExgCHlY/JEbvkAdNy6yeDXImsjV\nC8C/8OvYjm3sUe1SJm3ZzfyJOLbFXiCdiFg6jBuA4cb0rcjVRh3fOAz4eQr0\nggjhQFTEtIKiQ1p6p91Y3KM+yHLMsEn94Dn8rgvQNxtSldVwsQIuZYj03dr2\nph57PXyMK8MUaQo0iRn4V+IoDl9yh+pvvPruzYZaafMcXg6ERZ4F4jf93EhL\neEFqN30lRIX4WuGQep6ibifWKiN81zPzk8TZOyRZzZGE+PtHmeCa9QGRSxcS\nekROG4sY/YKcJ2uZss3PwhGE0uzbqyjzS5xYN0k4+09D7jO69e5QJMIV9DX4\n5i0wfj7nkcb/VOLTwYjGb0OuPKXmSbZaAYLZAUkDBeL2WVN8jZ3p8bsnvQkv\nISttMQ9aOem9FswysRlcShD2Lney7sTSii+/S7cnkChSNwZTYzDoluPnx4Et\nMrRiVthb6TvXFiW8rfP/HkcfgPsbk8LzrT13K+ulMJuYOfaHMao8sEEj7TFE\n2k7i\r\n=Yf8m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH9RgdDPy4PgTUrinQj9jvYqrVoda+gIxf9Qk0+WwXooAiBMvdz0PqeSDvzxKvhcb9s6EcnigAVmUExH3RUqQmAY4w=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_0.7.8_1537887355287_0.019494699321768838"},"_hasShrinkwrap":false},"1.0.0-alpha-5":{"name":"uport-connect","version":"1.0.0-alpha-5","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.0.0-alpha-4","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.65"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"26ce88f617892acc5b8c436cc134df27ca3ba937","_id":"uport-connect@1.0.0-alpha-5","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"zachferland","email":"zachferland@gmail.com"},"dist":{"integrity":"sha512-1JkqaPRaAQbbIWgOqJr4KW7ai3T3b7hDzo+0CiEfPZD5V0y8jc4KzU82k3ftlDlE0rmJTb8r/VSp/3CcHXVWJQ==","shasum":"f9f0afb7052443b850b7ec493ec5c6a837f4e724","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.0.0-alpha-5.tgz","fileCount":12,"unpackedSize":3387451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbrsYoCRA9TVsSAnZWagAA/WIP/jPfXgpKLFiJR05N4IR4\nHULdfOWAtANSMuXKqMKnxbe4wNd/ZEFzE9tlzEDLbOFjjCUt8Idxitjcc5Vp\n5IW2tm0FXKGlaMlJVpbTtC+GOoeHIFYTGAsEkmof9mkbJK19Lw9YCj8qzxEe\nNjlUgvxkm4CI7W1csHwdD2bmMSfwqnxBsBL3La3Y8hiiQMuSUI02nWAp9NSu\nx1P15gdUWyU1NMhQmsQA36hUYrZtz/X21phGOi61fdTtQ1U4X06RaUQ6ag6o\nRSVjVzerPOu+HWG81qLTM+p7VUdRWZfen/zIYs9NiuQydRKRYK9wA3OV7vrU\nTfPaUhG6q2myRnkIvhSDokHC9orS1neXuZ/lNv3cPg1j+xhjuHKS07qYZN62\nmcbGp0TpNMeZazNzgRtf4NRQaMdW8QMQnanRAudwOFz8BzHswTg5Zlas0ivQ\ngmJHs98reZruSn33UdxvCCIpYspHt1fPxhqxjdS+Z3hrip+GV4whf0a5Jgtj\n/v3pKgctTWBHaafHdfNxmyMGNR8ySJ7mvHTE1Ho5YXGUjxbTSR3o8c6d0joH\nFMibFwtSE3fAF05WOinlzExReEvQG9tHOFzeuMCiHbWQdDK+/i9iAgmT0Gxx\nbhJtclGGBxwh5wclxOyQqy2EHTUi208C7gv9Xa+ZKuKjpNS7FljHgtRiDKfm\nPZse\r\n=Xzis\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHgbjoGaauY5XRLD/dJyFPqQhmhXSa2NavEzuNPZWUF7AiB+DaNQwhUhZkXUpxb/MN0Sd1DJyAbiP1v2cwQJVYWTDg=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.0.0-alpha-5_1538180648027_0.18486986782357517"},"_hasShrinkwrap":false},"1.1.0-alpha-1":{"name":"uport-connect","version":"1.1.0-alpha-1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"1.1.0-alpha-2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.65"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"b7c41aa8c825b98d8613befa422c87ff2b68fea9","_id":"uport-connect@1.1.0-alpha-1","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-pMu8G8HAHJysN0NbTrEKNPl1HmqlnHlc+J3HEPW+KPE3Y8aQZIBfFGYwsY4lrARupFbQTe+iyCALU9/g1bSecQ==","shasum":"2d717d3a7ef98597f529504b62e57761acd83e8b","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha-1.tgz","fileCount":12,"unpackedSize":3411485,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbviL4CRA9TVsSAnZWagAArVIP/RUjsWlGOKLN2hlWYb0V\n6Yk/OiZWnTLx2xMbrYKt50rET8UiW9TMFmTtjiEKboIfDB6q0hQhBiem9EG/\nucwOiqEFVuE0PSR3/7h3iuzNS/1VM0O2+z/zC4trxuhEO26RXkHr7EYvP9al\nEdZ2JcLZXEzkLVJCe2KtmaMQQaxgzqbtfNJDgXU0S6LyrZXvzR5Ydf+NqMm1\ncV2PuLMpA/sEdlVazft/RclU4to3JBahjqgL68DFixopcmyl1g24nuLtIR1J\ne8XEiXBP7YSYqfwI5XOKcg084Kd1CV7TFTWjNuigZzKpjNQjIcy9D5dalYmy\n/31XSeMGnWdb4USRA4vOPZXgYm+AiC9WLnRvA8Pz2CrO1u3HSIwzbLcaSjVw\n4U16kL+tTveRY8GGqGxF8iMw68PtJ94dHi/iDObHBa0HNpG+RtUjTQdRQxdM\nDwSH0jirYbn/pUROA2qUI/2N0vVSZk1YUoGpxmRe1QldTK7r7abOn19djs4U\nKMhmYlRsQBg67Pjf1xmjXyoS9nbxe6js8d+MzAwPV3Z0wsstcNWSe+rGkBjO\nW1BGZT+FfqMTOHiSsknMbZb9QJT4wXEj3kP4voOVNlnAC+720jzJuYq4qF3y\n9jQySPQ8TnGm3m2pC4TXaQe3nE2UgbfZMRD6SOLu45UBR4DSw3VO4e+gnueL\nvoGz\r\n=UCqr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDP1W0f283j0UW22b+7DAuDjCvD1miydpMQq+gBdlerZQIge+DTW1/4naxtc+sKO4rVosBmmkO+udBvcmrzxWjBuUQ="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha-1_1539187448117_0.5292348946395218"},"_hasShrinkwrap":false},"1.1.0-alpha-2":{"name":"uport-connect","version":"1.1.0-alpha-2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"1.1.0-alpha-2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.65"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"bdb7f9ce924becaf8eedc72a0736a1d1a8a22084","_id":"uport-connect@1.1.0-alpha-2","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-t4jpfhSgMUNtjxYI5C/eHuFlSTzPVlbyYkSeUVT9PdSKhSPhlCvgeSV8Nc/QZ9SFhJKWCxooA6DJgrmHh2GhJw==","shasum":"1c4a6eea8c2a548ee874c45f78045cec52b01352","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha-2.tgz","fileCount":12,"unpackedSize":3440800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvlFzCRA9TVsSAnZWagAA5BcQAJFLFcSDuxEoptH/zctA\njA1dLynyMDLB9WjKpfp4S/QgMQnMfsrJHxxGf+p04m68yfIKot/StV8xxq48\nJJMrxSbeNKNLZWxl8zYuEiMsANwP3F5XiP49HlGJohN5uNxuFRgnSs3Y+j+z\nMTG1e+8NjQSMgGJ6D9kpnLjfqC62347FnyZbly1TORNBOkdpnybkaS4P7MSr\nP6QJ+vmu0J0GlsXIE+6sK0D1IR4QSKTa8rSlvmksob/ehEDiBkg8ZHIT63wV\nBMhqy1Jd2Hly8q69SEeYR3hJJeejM9xjW8TAh1oIVycohKW6ACDJ6hY8verC\nDDVL2mMjraYBIJtXy0glF90wFSkcwQ3djNq6WhdX4q/sEOHpebT+tZyEQsD/\n/7HcC4fiMFWxn8iXS/uFyfry0EoN8fpbay05OquxgIwYEhIG7Liw13vlOOsu\n59XkNsUNPqe4iSPrWtL8xOPY7xnf/WEHdoOU1Qe4of4p21Xl/DwZ4+WJUGp4\niJhBss8sa4ZgOJALHIEaBgZgphrDQIe8acCz+aJ6zmItQ0KQhbN/F6pb6CNN\nWmb7JUeDEXzFBzyYaiA0DUPkVezmVSIe4pwmdRBqgX7lnaId9St/jSfPXESF\nPsODbEhdn6KEYqW2az5P+ulWzLzVnXcciRXOmio8KBFCkOI+pUxV86ZMxkBu\nlavK\r\n=SZXv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/ZkJlvn5fJN7Z3X/NJvTvbO9Jay71x0XbOuDIEQwQNAIhAKCE66yGrscm38uq1EGWxVm2YZcQTDJ0JoldSh2tlErm"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha-2_1539199346579_0.7691916006566619"},"_hasShrinkwrap":false},"1.1.0-alpha-3":{"name":"uport-connect","version":"1.1.0-alpha-3","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"1.1.0-alpha-2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.65"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"7930f428c021a5f9fe1136796a713036071250db","_id":"uport-connect@1.1.0-alpha-3","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-UEyojkCoGRuGVE12+zk/khXpy6sVZJhDJHoGsNrbWeLjQSyNnRnhVM1Mzgn/2LnTfUKcAlX8gnSITYeUKrF/3Q==","shasum":"42664c6b920600480da357af56b601a87895490b","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha-3.tgz","fileCount":12,"unpackedSize":3450006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvlkKCRA9TVsSAnZWagAAlKMP/2UPJ4bUKK5mLakjJ8U1\nOW3TyMxaWZJkCDCTka/K66ZTmgkTwDBgi1CdKFhFsAAoXWOJIhAQGbzaUnm3\nbWJ16RvYv7liJcOZYTBZDcYxAlIDHKlgse1+W+KHQLnRrrGNFP4l1njKkfS2\n7YxqoHz+Geqxwy3xNBtyE4Fr5U+btCx+qjbA2kaUxJEI6vC/FaaFlOhQKE8O\nkEo+bSo20+LcguRh08DU+Sk5xr3krxgqY8Pa8y8Di5eniYFNYO0fRdzW0kx6\nHRl9DQHhAzVyN10+lSxexJxn2w5IRzSV0aQQn6JaovlWKQqURC4Q8tCky4cN\nwxi+w+SK4FEP1dTfwoOUzLgIgG2LOrbJkhAfR/HLasro+NDd895gnT6alNbV\nafIlBq2ptIw7nFPud4F9pj9XHoRJkeN4BZtkLxmBpYtW8RX4o2Yp0/uW/2T8\nJvMTBuGaG1BHWrKWk5ZcCWIyWVl9B8IVv1pc3PMvxts4sHcH+0RAqHty5/H+\n2i22BvXAN98qP3m75zHp1UU3jRrfI/TSH0t0OrU1nSxQRwmYzfQqderEfhJ5\n8dSSkHklnZHEDWH/Z64ROsKD0dffDdczuHQUWyhIGL2vdv2mP5Xni8bweBDG\npCJHv6h8yE/+2j6DwiFF+VasSSV/lxcBW/elxrqbY8zAIZ6wIJ8VQ2YVEnMd\nXByD\r\n=r38g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHc8C0+SmAG0V4IuQsG+tjLXV4TrPh6QJbpoCl8jBPGQAiEA65VchKC1Hk+brrgcpUy6yQ1iHutow4gTcHzDsyg+xKE="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha-3_1539201289355_0.2333599315913535"},"_hasShrinkwrap":false},"1.0.0-alpha-6":{"name":"uport-connect","version":"1.0.0-alpha-6","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.0.0-alpha-4","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.67"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"7de5d21d564d1e64c3c2ed465190b531f92507be","_id":"uport-connect@1.0.0-alpha-6","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-6Yvo1lqJFTa4qNm0kDznt6zJTKxhasZ3XJB082JtVpfyqjQw8fKuTjeM3O61gXOa43nzCgD01qlpHBXtaKdt+w==","shasum":"72afbb3c0b77126f2e904dc67c2f96164cc7a4d2","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.0.0-alpha-6.tgz","fileCount":12,"unpackedSize":3425516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbv0PpCRA9TVsSAnZWagAA/a4P/24tHJWUEepEajlf+wrG\nvim4JleI3SOcTIlfZu+uZlruRdikLKhFyp3Xd7qC3tY2X85cr/UIs/DSyJK/\nkfPGgm/f4U4Bukg15plbNM+Xxpu/b/PUOGR6L5s3RNrMadD1R+9XvYtSfZcZ\ncZ42fjLvcosNqHwjLro5v+A2hx6PxEnbUFVeqUs10HCJNwk/C8WNWuReXaHX\nPQGAuf01lhJZmcj9we26FQR7XmBP5EB02rH+G/09183exdrpVQ5X834BXrAX\ndP9CAasSoYhJrGtb9JSzHstT9QHLa298OoDR50Cu0Oisldza4zZJPdZVO2y4\nh0MLXlDFZdTO6UIe9lMHQp2AIRqgEkr312YvQ1mfW53bmO3OMtty5108ytVa\nbxk6ZUQ0bWeB+qQ8WpMXtDML43oYwpOmd2oLJ4tZUHHVY5TegkSCQ+fCWiCa\n6HjPg5/Wwj3Hs+hljjGPpw3tBJQZFEtjfPGjgo2E7Bgw42+Ny8ZqfEd5rX/F\nXgGb/zSya/yZqyEa1aobkcoZz2Vs3POHS9ga9OVKPF9/g1lNpLJDtpjwfog2\nWwvAzp7E9wVemaTVKqaIwwPKvYSeA3CBzwcEedKBtyk6husU+mEF+vX8kAsi\nXK6uoMMwCUO+8j1YEarcoV1UX8M03DuZxqdQxWqM5iRv1LkAZRieQlnHQade\nnhZd\r\n=IhLg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGBX/wym/Ew+L+YMgiwYSxCbrodUNWUOctKhWaQxd++7AiAZhDDflB53CSKcT2DkMXwNzAow2JQnl7ch3ET8NJEGOg=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.0.0-alpha-6_1539261416118_0.36045446747692944"},"_hasShrinkwrap":false},"1.1.0-alpha.4":{"name":"uport-connect","version":"1.1.0-alpha.4","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.67"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"1ebfb7eba46225693b96968c7b98b356d674dbbc","_id":"uport-connect@1.1.0-alpha.4","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-HnlTxCHI2zGwbD3fMIvvpD9xP5CnYnPJxQa4TAlKNpDsUA7uY44Jo1UIx32FI0FWZEjXrw/OSIIh+o+xSlXxzA==","shasum":"cc7bd2b0f8c82e99cfd1c9f85b3790b37be3fb4d","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha.4.tgz","fileCount":12,"unpackedSize":3470806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbwJg4CRA9TVsSAnZWagAADwEQAI5LANe+lmyULq7vwHSO\nLAIzf8XYapimPQ1/onG3CAwVhQkY0xMTL65QN9zWrwF+WxMduKo+/v+UzGXu\n+njB2cYQWO77TyZm+stCfJEtd9CT7pY/HAoGAoEv1pWc/R3o9IRQxUch0wAv\nt3kzPJHfv12cGVVCKJ1r7D8ErCqO9DtBKCC9FXiq5fVCw2Zaxw/WKOLsiUEO\naeIv012Woan0FdBpLtTOl+HKSXkst/oF/AhUTU+KrX1CO4pWGwisAKZEc6xU\nYkvB806LB4dfEOv7V+qUQtApuZ0TuMSmhxsgmG1bHdgMZJIwbL2PalN85/Xx\nLFKNrhgfKECFCxL74ETdmkn2J9t8RFXOx45a9Mq9Ajpmx+38lqXulF/2mtfw\n0gGz5f3ksgztX8rzK3CELYmnj7YGw4dMJrGVOjcpqFwBGOCj8kJ2GWmI5vw9\n/VnTMpSBhEW6FpXnFUrX72iCHad2JVv0Os1ABRlLCAFDle/8IKLzwlwQ+yAN\njkA4HTP1/lh4eNz3Swh3lyxh04npY77gojSVmuDc/bYV9seZ2foZkgx9ghs5\nIhCSqXKhvJVquzry0Jfmsy6YfEp8ISAarXULjfqvsC7n2ktzeRctfyDoIA3M\n+7Ygm2hGaHrpprQ3y76Zon4B849gur9GeHzFZyoDEysP17sONt52eM5PYUWa\nHA2/\r\n=DFfO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmAcZsKwjdzhI2XtVyIPK+7uLpyODzrTcGhh7Wm+Oy8wIhAKoEy+MvzE1P6kCibV03pKsjN/+Vd/aTkBqtECduOWfO"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha.4_1539348535464_0.6894811229991189"},"_hasShrinkwrap":false},"1.1.0-alpha.5":{"name":"uport-connect","version":"1.1.0-alpha.5","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.67"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"305a26d07fb342d4ede7eb5d14510aada426f1c2","_id":"uport-connect@1.1.0-alpha.5","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-I71c2rStvl9sF4o5XwYblr3QXxD4DFDhQmxL+5Gn7S/yHGwfV0dx1/MCEgOaHligXmRqOGQLjRFRWLWDDGUbJw==","shasum":"457bc033a3161f91279956618cba617b14b19db8","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha.5.tgz","fileCount":12,"unpackedSize":3470822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbwNumCRA9TVsSAnZWagAAIpEP/2zoU7iYtEFWeSWfjA8h\nBA7zDG5cZVZKpbPoz5p7pRWWqNi7cx27BJmUUrCUPScHAZy2W2u1SprmKXCS\nWONuY7zscgESinHv+hgS09Lrg3dxeIYvROjJ1k9qKL4qgTQOdT6gyhqKq9Ii\nRfbZd227f/O4PLFICEkOCTA1qny2sVB+rLW5h0ldJ4x0Bl2ro0tEVEY1rLrA\nvfPP917SyGueclksI0rvL9DRtFcguFWNjXcJe8Q/VcUH9C3W8ORiEPiU298T\naiZyUWu+16dOxBRd4djYuc5h7h9SuECplBPe+vIAjn4PHz6vpU/9bkvVA8x4\n23mIZF+n/rQxaH2jniGG1RR4hu2hKl90lisZWh2mBVh+pyUeG+BLIzCT9CHD\n847w5A57Ig88ZTzTZEpFXQeHovVorzlpMw9G0jQ4KGnxsZzSbFVigny7h8rm\nm9Yd4wWYLKbs9m8gXEAjerjUR77EiIGYC4LfnkUwZIcGVhq4xbmhEjB6+M/E\nsckw/CyFekj3sQKz4CsJcP7D6YL3rNu/tjo8LgbSN4FvYM15Zlj8/2MjF+pa\nufkDKYK2G7SNrVGTwHB80e8A2J3ps5INB5CCFA0epY6qss/BmKGGuoJmgjfn\nq6D+GDhEvNc4hujcDq3FX0AVTMtVJKcTt9nlmxqKqOz00PVDN3vJ+1O35SsL\nAhn3\r\n=HESm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVe075wWXzkgg1JCm8R87xEC6MTNTZQ+kmlx0jq/qC7AIgZDbz6LJVikdKxpxZHGlT+JldE2yosmI8Gcq+xQiLXlU="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha.5_1539365797944_0.25174272814107557"},"_hasShrinkwrap":false},"1.0.0-beta.1":{"name":"uport-connect","version":"1.0.0-beta.1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.0.0-alpha-4","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.67"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"b9f2a7ac91f3cf4ebe6ed63c6ac4cfe2e7d29001","_id":"uport-connect@1.0.0-beta.1","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-C3a8s59wVcLqWwcBW0mNIB6A4fP1L3ab6QmlApxJLlrlaK3+QAJ42enfDHTJ/l/BR4xcn1XPHQq9brPkyFlZ3A==","shasum":"614bdc8cca22b216fb16fdeea64f03b606fde8d4","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.0.0-beta.1.tgz","fileCount":12,"unpackedSize":3434922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbyJ3TCRA9TVsSAnZWagAAPRUP/2wpdHsCv0XEyIuc1xCu\n3878FzY70/BvQfw1Z3m06KJKoQpE67uKo5Jl1y0dS/+fUWfclz9rzxe5G20E\nxmgtuIqkk9sS55o2enFvc/gdpLkgiqoMU36Z14QoZcHdDjVDBzgu3otPyv5s\nCqlebG+kedaF+wEJSzpjoq318wct530yyiP1UsgSWr/C+87Mt8kKTjpWPRnJ\nui4FBAdvr6hOb9pitulUD05P/KBAapFuwgPVgOYxXa9BNo1JBF6iQb6HVm/V\nFYybHFX+VDin+0lXNM7KOOdqtl6rFmmPyGwJk0RuoMnDNjg47V+ZnNZIPt14\nRE4MpdhY3w4xX0vr1wjXPUeUfaKvOxITn3YejMStNQoS9Ajae8DTpGXl02Kw\n9elG55RRgEREx9Ta/y42ohQrDJeOg9QsZJN+jAulOJz5tOz9MRm7OIitBGLP\n4K1rDxvtOKk/Rel0Sq61SlpELsK1NM6dm9NFXfmogASwg/7QC6UFQdnCpoWf\no+Vky6QVZ2I4QXJiVA8dAauSOhEn2fFcOkBcZV7gxXH3ArW4s4QdBMZ9ZqOd\nNW659yfzDGOmZoRDl/2Gxh9ZLDzDE1FbJ+Awbui4DxBrfBk6SKA0m03TRtUe\nEOdd3DAlfFZ02cUlYwe+5PDmyxb8P/yKItfMCkiZrUVoLd4U6NxAkFO2LUeU\nWOD9\r\n=k8BK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFZy5oylirMwFHtCrsSeFnlMXwZzboWg0mA4cK7AfArvAiBoFJzPfqAfYDBxhg9wCvoj0FztT5uwCKwxFMvMlgExqw=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.0.0-beta.1_1539874259018_0.8446408187892953"},"_hasShrinkwrap":false},"1.0.0":{"name":"uport-connect","version":"1.0.0","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.0.0-alpha-4","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"0.0.67"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"c8508c0cfc8b0dfb274f7af45e2427f4a38c60fb","_id":"uport-connect@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-S1XmadEV/jAZqj0APboDqE1cvUzytY07yZlb8o7hYe54GMcQqvypSYTghzTSmLyAwTN+q0cwyL+tQWTkfl7zpA==","shasum":"c302b131b4c62482d00733786a5ec3b5ef216c24","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.0.0.tgz","fileCount":12,"unpackedSize":3390409,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbyPw7CRA9TVsSAnZWagAAH8YP/2Tdj2DWeG8l0uYTVTPr\nGIWG5KLwzb/srm/wUIPydG4GVpOJkxvdwlr5/tempureVQEID6GD0Oiyud+r\nEF5woYhKWHDByA/IOCOyWVt8RoE9204xRNOY2ZxqzWFy1wo2oqOYKV0A/EeW\ncdO5Z/eGoLraUfb/vuQcc2vTNagBitaqFJBImT25mPRQytIT6k7C+o04LIu7\nkK8LnyrM92EXUS/S9sCftirUBzmMYfBy1j3eH/3Q84zcAyzlyjoIQlCvKh30\nYSJzspHf7Z7S64+ybZ6lVBMwRhL32aC7OSBqE0hH/83PKLSYF78+wmKE2VWL\nm4O6OdDplX0oUb+aoqGoHZ+2RIDGcIzLyq8Nm3WYjCMBTw0ugu5DLaZrZRpJ\nM36Hiu4zqGJIKICtIL3QVJl0aX/LtxtbwUyy9Hs3HnVuc4S3jNjQsdGoEvhU\nUsb42in83rccG3ozR7ilMeVO4XLous+yjWRgRBQ9grjMddJLiHsv1Y7oOEaX\nGC7QriDFnLW8S4fCB/jF87mh63u9b/ez0sNdwnrskfP7aHXDzcBPyXxU7N9P\nyJCpKZGf1Rls05C0fU7SnnAw4a1HA/Kop9MaemOBS/76Mr9dTMmEtxky1Lk+\nD+MYV8mEW+7PIT/EOEkVedPNapnoBBrsM8mBCS0E+Er3GoSuwSDSycqWYtkG\nT75B\r\n=0fuu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC8zj5+vXyqVpHVXmd2Xe5yhq6JX00LkgtgzQoc+W8a5AiBMxHbo62P2vTn2dgy3pHljdrSJ7hx7Oj2zIGOv1qB7jg=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.0.0_1539898426174_0.15012349330351538"},"_hasShrinkwrap":false},"1.1.0-alpha.6":{"name":"uport-connect","version":"1.1.0-alpha.6","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.1.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"b79ea5b8b7cc6cbce6364761c0d5ad72a594e845","_id":"uport-connect@1.1.0-alpha.6","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-NHwVHT5fqabsIzK7a7XZ2VLjmXZBmg6zp9p0RU5TWQV0kb5U7o9mxxveqU6D76y+2iePx7+zAtEM13m5K/TAkw==","shasum":"7f1c4152fd05fa97bc933c78b79b524e7cd13d9f","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha.6.tgz","fileCount":12,"unpackedSize":3470838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzf6sCRA9TVsSAnZWagAAz2sP/iT0dRoqPgMxLxXQf2Fo\n1rtwUjZtA5g/0v4vJv/jJNPHz4WMFD3ZIn3F4ea+Aeuw7KQ3QJ7IGLt1cwn7\npEIKpxWJI+4QT/wZSjyLkgsZXFgxs8BklecENVeFh5x2kk/gmxDlAkV3PJ88\nAXMbpZ6JQHlsYFh9ifri7Ur3P6ATckC9/lyuxxf7QmUVqy4D2a6FIPvep8V0\nbxTwNx7BjMxWSZZTstoDxYU+cYXT98ftr9zNcPxg0yqUGD5luz8i4Oxow0Qh\ntaGtPMsI3zX95rwDrXcDOH2olS5Qe7SBXpzrAK3hOFXT1+rSBkyABLK9QOOj\nLFEYHk+DwGRsvPrgXINEGNB5vyOhODmt1b2IlLCGYTo4yHj5kewHnJJHVq5f\nWPldl/xf8RVH1D/ns3GidXzc3BmbkLbY4joGn0EFSfGYmU2YWnhwFqcMuZ+y\nqMYoJ9SqS0aeGP1DkykANKJp7EEUuFVRiccQsb3rLGNhNRM0W5kICs7s+Eay\nsBPIYm2TMzh/kKzHyzumHqlgUaOmTJ5k+s8ckCgnFlPqpxPSDGgHyaMN9wag\nFZRdW1z0fyVksOvbYZyikkBBEmwE1+rzTbfuAjTkO1GmRgij3Zo6luGQIHZH\nGSEsZIQaB6Pjs9vJTSvTMqOq+E1Oj3xLqb1P2KP/FiKdHUTcc5gpi6xsq4iB\nESfN\r\n=R3UM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIADhX7++YHDsLVyCkAJhLQ+BmZj51U5UxjWhq2yDMmjmAiEAhV4buPhybxFjn1QVOqGY/MT5K6H/L5S3x6v+5hMSpcc="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha.6_1540226732247_0.8041983584255208"},"_hasShrinkwrap":false},"1.1.0-alpha.7":{"name":"uport-connect","version":"1.1.0-alpha.7","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.1.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"b79ea5b8b7cc6cbce6364761c0d5ad72a594e845","_id":"uport-connect@1.1.0-alpha.7","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-VA0w7j8/ocn3ElQnlPx/yDuIKt3M+hjycu7H9PIVzjZ6FQYnx1Accw+5nL7ZAEMmnRjUR0gFoPcck0J3CHgeKA==","shasum":"930c35d349f7984d4a293b92e7309f81aca878aa","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha.7.tgz","fileCount":12,"unpackedSize":3470838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzlVPCRA9TVsSAnZWagAAj6MQAIXkIzLFUHfhlD6LZdQA\ngUMS0JjALdApz3njsrDEQuPYeUEGDIH7vfMMmgYeZNdzspUDTiEeqC5m726P\nPkWZPiDQFQqvHGDxFeVIYFkrtrS+zrBYtRTDrzyeNkKAZVQLVHXM+9lxqFB8\n2hJwDgGFfsOW2th0vsC9mugj0oF0nn1zjXK8uKqy1iwdV2aC5145bWWDI22A\n2zDYnonxFdhsyoW6FNGzam17WpLezaizaY/dA/aNONerBXDy0LQr33OuUjWZ\nV6JwxFMzE31mKKLWimDu8DvytUG/RLWmxH75eYwrgss1E1AdWkBiyftg9fUN\nzXYnIQHQXxBdpsvPJg8HCEaEEdbhKoGNus/8LmKeGJbdqi9P36axth8jJXAn\n3OwfRuZ8owZcIurOONB26pi9V8Asp1xONiLXHBMUBXrjkQIAv0ioNcCnHF0j\ntX0hFyRgSDkLern/0iSnJxqA5u/1vl272ryobLL47T+acYPEG2RUQ9gmcnq8\ngR4KKqm3J1ozctjGpu3RxZe3/cdJhIDEK908K074haM4kzdzL5Xc4Yy550rM\nyGzFVdNYw4+woBYsj/P5Jjxtwd7jIt3cH/2kdNLOte8EnnUE3vwTyOVcHW7Z\n5hYHfOBZTFShOqzJeBOPVAMo5H9Mi2Hdzr6IuFF9pppqYW/crRmyZ39vhn0f\nKJAx\r\n=l6XD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGPgVbX0vhszbPso658nD/CPPBIJ/0IwC8TnTP/fV/mnAiEAw+DBzED/knTkVMrEKsLL4WmjiCA2ovBR9iq4xonVDpg="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha.7_1540248910313_0.09147032261780752"},"_hasShrinkwrap":false},"1.1.0-alpha.8":{"name":"uport-connect","version":"1.1.0-alpha.8","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0-alpha.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"95b19de5ae4a3594a3155487d3a8c59bb77e643f","_id":"uport-connect@1.1.0-alpha.8","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-PpJcAn2fDIKOqRL6iyOLs/Dc2b9ISBjN44/1q+HyvY1MM94L9Pw/ECAMA1khcgL/2toF0l1Wx/tKTGSn4MWwKw==","shasum":"eef70fd3e475fb5d24ce17695d1a2196386af6f1","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha.8.tgz","fileCount":12,"unpackedSize":3475102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0M4KCRA9TVsSAnZWagAAqKUQAJE7uhuerbAG0c42AF6N\nYD8UGzoqGM37GL0yhJ1TkpbTqaTOQnuhDHKwmlqzdSjTbHmC+cRUCQzGBh0f\ngxo5qui3IUrRWUQFjZfEQp88GgU0HDg1cBk+ARjxaczZshPQmDX5tdkr8/Rf\nSxK7ce3sWsU+4I9MUn4yKAvmOMQ7k56VH/cv64goMyDPZh+PaKqjhkjVdTch\nptnRJbis7vQbSk73lncGCjmbLMGOhXFgPAT08NJjYXgzhrcALBJH2/we5flB\nDSBjOOXTnVl91cdL3DN0vbmtaumSxkXh+A6Xx1qN2792X7KfPR5o3kFoPSi4\n5hMLgbd/Nm5BJD4l85R+BCRveG5Y16zAWbqO0Z9jRBLkgHmPEdZStIwIc7hF\n1vuDv0tBwuf3f6Hu7rv13JqAsAuJvOHR1591FSiXd+Q3mu1ZwaWrql5AGTGv\nOcXiXTKpi1jM+PNIYQNaWjRXU+y1p4nlsBX2JIKsPUBC6vBw8LkbvHROj0i3\nY2qeRN3Poiw34HlUaMZltcs9okTjKh5VnrjzlhS2j2kT1q1Ucexf69A05IRQ\nm6EgpBNkWMpFKmWTQX6P9qjyOWEBtwW4ne8sGNdBgMfrx8aWYg5chVyHOYb5\nIu+0lLoYEAz3kr/HzwC5iL2QvqiOnEezC/xQZu1mxrP+ot/xvEDYBygS/0A6\nK/UC\r\n=yr8O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQwoSFM5pHBFb089+2GPOMXd9YZPvtMiaKsyuEUQZxTQIgVZJ0xNXORFCe5PpCv0ppSeDtuSuZ5ifoIJbWeFEmue0="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha.8_1540410889762_0.9393550871157363"},"_hasShrinkwrap":false},"1.1.0-alpha.9":{"name":"uport-connect","version":"1.1.0-alpha.9","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0-alpha.4"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"7c3bfb89f09bdce787c89cb3a4fbb210db17f62f","_id":"uport-connect@1.1.0-alpha.9","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-AgFBYYmJfEvsCS3okaysDf+vIx615+SMQ7T+keu+g0TTbqegF5OcDGC/mYRJObtUM7W3JXh1c2x9rGBtlPK5ZA==","shasum":"9cef5a62d8ce5e697af6989c15e0bfc235524e73","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha.9.tgz","fileCount":12,"unpackedSize":3475102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0gA2CRA9TVsSAnZWagAAwW8P/3gmiGLWzUetZaqKb5GO\nj50DjfxgfY5zi+jXdtNgOMyevMrZBUDVEAbnaXMlhNMJLQc6n+B1cl7iLvtu\nk9MMMDRy5ztNB5THW639wyX+lC0KTSVTbql9KKCKTXnIONGDo1KzFll3RNZv\nCCiZTo49O9qi5FD4E05E9oI1wllHGTs8FvL8igWlauUEhHR36KJpNSpgrzeW\nEy6jkREBkXVhtxsqwmpgOcWMV09OygiJXsONx1N1SfcnZDhXoOyoLYbNwahx\nUUMBfqUTDJSy7QPvrSkc2vNk4tW7DTgGaX8m6YwLdV8coEDmxlVE9c3QcUhr\nWYGIBhAWTsUjIrP1oj2j5jgkegvz9ADxAJMUmrMnnvXShon4ktcFXIenu/nZ\n7nSFmcc0S/Dpp/2Y8DGRRtYGzc+8rAzb4h7kdgUTyz/rVXdkAmAdSxxMq09x\nQAQoEdTl3MZkVH8XNrykMf9RqfRhvq49PMW0tX7NMMUxlFmp65lU5OCkfZRe\nEVrAmGhrUqt69UCx1wnD0Vr16444awqCJICR3ZV2CP8kiQxWmGi4KHmUXZO2\nHCc4/SXxZGJYey3y204U2WbtU6Jdy24EIz80ml83CtzkNTGVk6yt8SquQg95\nfDctRx3HJ93ZCdP1T8Z/31k/DoA54FXZnYul6Ayo8312txSH/XBA9MauIo9x\ndUmj\r\n=RhHo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHMZ0PdVD/6tHFNfwqLE3pBH2QwkmwenPlaQ4UnNAfRyAiBPxAx7ry47qtErW4FFRwYLIQMmYFnWMWlA6c+RNA90Lw=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha.9_1540489269382_0.11115588115970265"},"_hasShrinkwrap":false},"1.1.0-alpha.10":{"name":"uport-connect","version":"1.1.0-alpha.10","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0-alpha.5"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"187042cf1ed3c6a14721595705e2bb500867dcf3","_id":"uport-connect@1.1.0-alpha.10","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-FIg3MmaOhgODL8yqw8FskvdgeDDkwid4NGCx4xmJD6PktiaR9APmlzCIDA9tk7AR2/Xdk3D1ROxkIzPtoHrBBg==","shasum":"9d7c7b4b743312111173c4b5f7f2c88cee08b77c","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha.10.tgz","fileCount":12,"unpackedSize":3475103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0iuFCRA9TVsSAnZWagAAyv8QAI1XPjB0dWr9nS42Ivzy\nvY8Hh4Fbc8IIeIuzwLRpJgENN21pwgKpbOARbijA/rzwivw3Ciqnh5JAWk1X\nKBKR4/Hb6ZopuM8UCbrO77CF3PGo4yLH8UgD7XO2UqN8vuFVbSF7b5jWpFwT\nU3T5ZPyXlnj/TDngw6lkf0/y4p7BdH5vTiM+icV0dnbkvhf8PLAkY1/cbtXY\nELYSMQ4UPN/QeXBytx2txHXDRuEO35gjVp4RHQjxgPRaJcxeLPf5/kmm41i3\n+jrijRuDVb8OJp8BML1w6vD9N6K9iKZtm2AA378kEpFWVGHIelkDEVy7bUYF\nlu3Q3av8gGx82hJspXylzIV/6a8b3ZMH4688jN984u9G+UHi7oeuaStHjhlF\ngGMMMx9Vy6ZrOFeVbL8Qv6Zzwm0DSqyqNrZWs0Iy6NA9pc3CnBCwAC2097CO\ndd9qMFWTAEsjtebM2pWZ7ZLxUZgcZvvR5SIjyVaDZca7QAD5DKNr0ljYE68K\nKRPinHjSN/IRgyOzbl4qCZU/LRa3stOHIkJZK+34maKmUfO6BZpqgnZbCzWu\n2pcjp8ROoysTts8uMObqSszDfikSvbarajoBgK6Z662f2y3khD3xKTJnSl8H\nZ5mqoCW18xOi30umoV1EYpYT5cazGsQUPJXpm8Ugntmwv4PE1ibjMdhHBdcV\nZx1v\r\n=zMJk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDL+07vsovSS746vFoOR4GtQ/qUdRAidfvqKqMHPHP5PwIhAOmJOHqe8dalhs3fbxZwAp/MWvuQPzAujUEC3e8InvtS"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha.10_1540500356948_0.7486624823493038"},"_hasShrinkwrap":false},"1.1.0-alpha.11":{"name":"uport-connect","version":"1.1.0-alpha.11","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0-alpha.6"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"20fc410e1d581782b98cec54d24cc0335d400ebe","_id":"uport-connect@1.1.0-alpha.11","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-jLsgTsP3m2USZda1dEXX1jvLSqMCNbD/znDvMa1MRTONXy3gZuAxKggltvbD3L2qjiEg7I/OBpndSYkZrjN2ZA==","shasum":"cf806656eac40257395ab71f2236a14e6d2b2542","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha.11.tgz","fileCount":12,"unpackedSize":3475124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0kzWCRA9TVsSAnZWagAA8fsP/2BWPSHsEo6+2PUVgqr8\noYEFA5BNzh6eS9Flr6UHWZQuDb7U7RAzqhy27j5UA/Nm7S4F4mngJrjf+vG/\nn9p59KGD7i+B1RS4KpMRX5dzGs07MGRHdT42irnMjVfNOu/fXvBjlKmM8Jf+\nx40WnvUYkj00d4twQHPsgpAy7Z5MGOycBtrKVIz3p0IGVng3Qs5s8fmMq6YT\nZt3HD5mxMAvxNBv9T9WwKVhL0VEWAvZu5Jy/++Y3zrXiMDUAIUL8MT4OowSx\ntRv3ncWFU4ZPXYlNyFwO4nnF3Jv3yZ3ZLUWRNPiIancPS0oxw37D4Ud65fTA\ntHK5ZfxAhikP2xUkqSqzJyQpudPN32If4w8vFo2HmNbVsxgGbnszrzddSDrL\ne13lMRghywXs+qas0kMC1lfEOsxAS9l0unWnYb0KYALhayQeVX6O6+fsnEY6\n2t5JL07sC2mYryqP+YUw1Xn1BjjkrCfSyIVXvoUyqi7UWBSHCj3u+omnIpgw\nzcWUx7yVOoJavbPqqGJkE+xzvD3PbcURhRMQR7hFi3vkSAvnc37DGIZQbzvT\nYGXJVohFIZbAYI2lCdt3PMFaUXCvaZlCeOAUpf/nXEiYJWMY1OvaZIgWXGC4\n0dpIXWjXQmmq4mZEpL4AXz+p0W2Sujqz3/CQUF9VjtvlwZ613UBD4Ndl/NxP\n0LGc\r\n=nLoy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYcu9PknRnajBwRRFb/T7sNcxiDHfK98DrU941NeT3vwIhANntXuWCO6TgWKarbEylu/OLMPykrP6NBXaM2VTlTqR8"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha.11_1540508885364_0.1511835146753855"},"_hasShrinkwrap":false},"1.1.0-alpha.12":{"name":"uport-connect","version":"1.1.0-alpha.12","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha.3","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0-alpha.6"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"55645d86cfeed41b47425c2c4cb1b8de7404fea6","_id":"uport-connect@1.1.0-alpha.12","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-FYv7I8oe7GheOV7FdeGXPMuEPTZo/tS8xg5YMEGddkSbzXu2Hm2ADw81PUUni0A4pTFMRog+2teOesqcY34g6g==","shasum":"4f1328b9b6a899e2a82f00c960e586e3da7ec1bc","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha.12.tgz","fileCount":12,"unpackedSize":3475124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0zCWCRA9TVsSAnZWagAAdjIP/3GSkGlaLz8NZQ2QvO6B\nkooboIugRiUV3V0/tzuhqAAJ5oGjUCksVFgP9iDnRg6yxxAH5bKtCBv1K3I/\nqpGnJZ+085N3G5cwOItN2cuKgje53oESCxj1IeV+xAMHITWSioFdGGpa5Z28\nb7Ips8XUIYJQXy2YDv1uWy1N9yo2O3wN+qcjYAsHwFBqfAPdFAms/tXgwKn2\nwVHTjIYgKm1iPuEq0A1R+KCxXy2DRGaLOAagUe38Eh8enneTinwqi7t8gVc4\njc0JrKTMQyGAZnMvFQkfbAm1jKTJsfwv/VgHAHjEOooQSpU8SFgCQVST0DHr\nopUgvOryCG4KxYQ6EjQTOi52QipS0bLNoTsn/bCTezZULIc+m772xUetEL4v\nhXdyY4HyhQVFfqlRYb3lPVOzu1S/w/oa8ZZQCKSnZoJzWMVPqsZWSKG2fscL\nlbki4gLyMuy2uu+orqNFibdD39BrYhYnmoahjBjlhkpKSrfBIQjYwgQTdRl5\nShIbZNvS6545ifXjIBnY4+bY/ZJBj6B5QlMY9Al9LgwY8AQ85A7S53cLjwhc\nazHLxdoBR1hCfGv7WRmN1przfp+Es0GgLxvdJXr+uSAoSb5Id3fKEidwpmPt\nm9D154Skdq4IOKypU7RNlvvQ5M1JZ9kT0REUtGjrTVd3IZZNVOZq08RHjzVX\nk3RG\r\n=dyX4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHZAsv02O2GeYD/jPsBkXqKgskpGvlYsF2opU2hwm4BwAiEAp9QQaIIaZ8q8K+imhha2Cxxifh/bhGpKg6Kf+t1u0Zg="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha.12_1540567189953_0.9774002365620182"},"_hasShrinkwrap":false},"1.0.1":{"name":"uport-connect","version":"1.0.1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.0.0-alpha-4","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.1.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"ae416b7cc97a5bcc2528c7bab5fe763ea477e56c","_id":"uport-connect@1.0.1","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-+HUNlLTEW9AD86M/bVchPhR2ZSZazoZImslxmdF2JdKwNjqYyK9vsAleXacPlKRrydUuIkcmUPrWF3i9uHESFA==","shasum":"bdbf9a7318787915edd859547e676ce92203a0bb","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.0.1.tgz","fileCount":12,"unpackedSize":3439371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4ELrCRA9TVsSAnZWagAAYWcQAIo0ozV5SfQkMIV0PDG/\npgoNhngX95uk7pg7jKPYaJorQTAbEv9ND8F9Cw6yUrLvSV8a0tJ0tazT/GFT\nbSaSqoz91I4rjKUzNV13enJpCQXjZ0wxrQfRhINa45+yhdpPrLmKnDFK4uoO\n6XduHY0V2fi/gu/KiFX4hMaYX4e0uHowwzkCYG4ckoMlsgSMsbf1daqvk4wq\n+XxdVzCDQTuET36fOP8HJPxYlCocO0a5XDK/7oM9r0pR8m5/UXqwyIZCfJKH\ni1JxHw4sTjey1QU0lZcQhGMLsmAXSIQhB0bAtYt5hH2AKMDR0u7TdBbemFIX\ne7FGi8hIuIvQMJnj17yeoE9jmVVemOsdMdxxCpX0cPMjWc7vJLBXbGD6eb2L\nGQuvyRoBQkC7cjy4rj3JSZdrDLNOpbm9huuUiSqOKqH4NJVvXlTPAcmQg8a/\n12m6TQoNCO+jSaDvOU2kt5I+Xm6Wnu0rK3fja1EuAWo5rPwl7eYJ3gmJzcKO\nAQBxVZXmSv+0ljr+u+I4xkH6hdBSvNNDitC9xJ3rl04NiXU7g9WuvSukorsZ\n2Ly1N2Q7RRkzykG+FwBQ8h48+7b9R/mVNpfyhpYd5jiKNY7kyg7EeB+kfMhk\nJdI0iEVu3wfEu/uy23ldKkzlr5/awqt/iIzYsWZtEUBQftIXMdsQEo7zHn0/\nPzx6\r\n=aGPM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFeq1IJ+sLxVplzx+/poz6crB1FFSqBubAW1vpkW4avyAiBt0lWY9UqTTsJ2U8gcF4DWXRz7a0QIiFqANowK0zKtXA=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.0.1_1541423850466_0.9191025291587058"},"_hasShrinkwrap":false},"1.1.0-alpha.13":{"name":"uport-connect","version":"1.1.0-alpha.13","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-5","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0-alpha.7"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"954036e4fc6a4d781c9b96c0df368644794a9713","_id":"uport-connect@1.1.0-alpha.13","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-EPmVUylugHUhIK5/5llIL+L9OKbEZ4EdRFmPxFCXTUE48+hTyC+eLJPVU0VXiA/takpr4N90UqecQhjXgAVEwA==","shasum":"a19e53856aed9c4f4f3ee9bb7d31dcb12696faf4","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-alpha.13.tgz","fileCount":12,"unpackedSize":3485298,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7Fr8CRA9TVsSAnZWagAAZU8P/jtyMB4DZfIvIPiwqP7H\nBFqsWXIZ5liHjUxirXWZPfg8NKFpuuiIbP43zr4U8W/f/RCJP9/wSQws7xXs\nV51HN3NJFFN3EenbXexvoPIAgM1F/hGxQrdDin9AaKdGSMfPfhZkqSb6shE8\n2DP3mGkXuU0W7HQAGKU1p0jQjAznzs2EOLOB/ScdkiEkAK0iFca+LVCNIPss\nf02JUkhizEH/8DaH26QvrVGzYvduNfF3sdZgNtqrMU/74m6FpGHRA/XMat+W\ne7Sb2aX25EICRg6ftUVEXp/EiH0jXl+rnheGwRP647spnzq93YJ1Bl58vUHG\n2qrHEepNW8jKyfEMzr+gePJYPj6UM6nECyUR0jdM//7EasxcxhXyIXivuViZ\nDzoQzVL+JBvhA6hZINCeqQwoj5h659uQhzuhFXTk32RZ+LgXDvVjvXjSQ6RH\nLNGQhmFhZkoBTEr3miRi4a3oaRw7GJpOTEsoBYtYS8EN4PDi8PXOVOM3KQl1\n3TkXVB4bT+BI+zjcnm8PqSrM3ImqcYppvmCrmskEn0XpX+9rEnGcu4+qmlc1\n244ufOGATFtsQdBT7nnLkgYLpyrrgZ7VKegJikJxH97+bLUZByeJSD+vceB1\nFQwbqOPaaMxXl308xCHA41Irf1q1Xl0UwkvIIbILwf/Xs5sxxYNGQOVEzgwc\nm2L5\r\n=wVJQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEYxeP34j0vkthimPJQyfvQVn4nSRFC/8R5RJxHT0Ct6AiBoMVJWPqYUTn3bSiCHA5uax6UracvzylP8fNZ9rZWQOg=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-alpha.13_1542216443870_0.3616013880861708"},"_hasShrinkwrap":false},"1.0.2":{"name":"uport-connect","version":"1.0.2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.0.2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.1.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"cbefeef6f82a606d5c97b52cb088cae332c2eb12","_id":"uport-connect@1.0.2","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-y41+rPj2JGH7kpyRswUtb2xHzysh3kCeYZFcUW3qhuiERERqVzcEwHwou03LIpjjEXexgqt9npMlEKF9/mWkhQ==","shasum":"e2a982342f1c09c24046d65cd24e3a27a20c3478","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.0.2.tgz","fileCount":12,"unpackedSize":3443603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9A6DCRA9TVsSAnZWagAACd8P/3urIf50Br/tlBmSiz2P\npfhYnMf1oVls8Yq6rPTyOyiMITrXClXHj3eO8Dz1CimE//5ZKUOAVjSdO9cK\nzNyFDt8XevxtV0gt2qxjZlxEgVJO8cCfUtCliikS9WmN0/vOfhX0GDX3QV6N\nPCS95eQRczZhESm1oVAJUlfbsiUztAEODQOAGxMDBGrqeziP4lVUArAUaQw0\nfHhRwSMupuQu/FZbNU5Lwz2+PqOqqzb+63c2q45YEamkqKISyaxOcvKee5MT\nJ2aczdZ/PN5hrZK/IYTg31BTIU26KJs6AYM3aKeZfiKiosn204wb8NaXHLhE\nQkba7dp9P/xnJGe0iBARzW7L9UWu1E0G3hrDGHoV7fvj+yO2jiPe9A6hBGGh\nQxWUklr2LEp6NKI2LdfFjVL+vB09u+xVToHp6me8YVbZIeERu9KfMN56Wctp\nm0un+KYt07d9r8OU8Bdqn/63Rz5hffK7eqYBqC6GIAy/K7iq9Ih6p1HCy4RS\nJ0pZ3OesYzuD47Gy0NWOGxA1FxAtvq6r3M5YKhReQt/LLsfsgoUW3dZKdpIe\npqiTGrILaqiQkB6eNZXHbsnVuAJo5S2eYuL97ZsxDcQiEjzHcUOxumj39DqA\n4PE9sEge1sGFAjxavEzSog03M/grlTjMdTQuiSFnKBpr/VlPdUasHfmgXcAH\nfWLa\r\n=nwMJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZHqAcmsWkrpAiAF58F5oYqTKhCfwL/ySS2nRKzTMEQAIgbbez/Zv2SZLb2m/S09uDQ1/S2c3W/r+y2/A46z8rXH4="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.0.2_1542721154091_0.874799099862511"},"_hasShrinkwrap":false},"1.0.3-rc.0":{"name":"uport-connect","version":"1.0.3-rc.0","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.0.3-rc.0","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.1.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-preset-es2015":"^6.18.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","ganache-cli":"^6.1.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure({})\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorial and Examples\n\nFor a more in depth quick start example follow our [tutorial for building a simple dapp](https://github.com/uport-project/uport-connect/blob/develop/tutorial/tutorial.md) or locally open the `/examples` folder. This simple example will show you how to use our default QR flow to connect and create transactions to send ether or interact with smart contracts.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"fd4d23ad36e67b47e99c6e8a705c6f8e2f50b084","_id":"uport-connect@1.0.3-rc.0","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-YFKHLjuUTs/ft35egcmf4L5AqDRSUgYBHHChnqdZ6/wEZdb3MHlFu1kzkudLsrZ4Ihc1ts/rIHVqeUL0vLHIVg==","shasum":"b8fb65e4c3b4154e497b471166ae3e1cb46cb83d","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.0.3-rc.0.tgz","fileCount":12,"unpackedSize":3443613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBak4CRA9TVsSAnZWagAAYGQP/2ypd57WcXF3KFhPzTHi\nUDvScJ3KLOR6f7QDpZQuyTYVcXL5NT7oeh0H0hpr97eQzCiHT+uUMQ/w8N8G\nuZoOV8u9oCAyMvmvXw+lHq7oZFbHfTr4BU7R17+r8DqQFLLzTXoxJLsaiObG\nzWT24ut/Vc6YmqX67BKHNrTnfoaJZHojdzvnKrxbRVOJArqiJy9yNAvFJA/8\nIim51bms48inyrrgT37IxmlaYJPxZEKE072mx+4AQfuZsn2bdl4nbvnoaiRK\nNrvJMTpiSpL83UklJyf81H3Wk78yOrlIsAe5RKXlsxGjeGfYCgWnzh5lDS/9\n1u6zfBFbTvNZF+KouNe7+kU9oYTWEhfE2r9V3yko9uYN78hQJWOjE42XwnfF\nqrUCwtao0Zw5QQZ99aHPRbL8dczwCpy/eseo362o+JjmDImltgddUaB513h9\nH9JqTb+YCGvsA40cxv1MegVDKH3PBqjOa7ElwY4/UvaqcSVIFfqo/HQp7Ty9\n3ozx1iNVx1Wtie89yOVcG5WIrf1a2hTLKVJwNv6thfp5muG9IdXHeeQ1nr7B\nanFhwB5hUv9osUlPcKo6KqyCrDoZJl/+SvYPcxfNwmF6XBmeVFSMSH8uxOJZ\nVj0wSBPQF0OngAzd4BHYGSZGes2bRkps2FONb++z5IBOakp5+3psOSZORw4f\nwmV1\r\n=en0c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEZpcYpnglwbFAJ1hmjqHt8sNO3dCeOzaxANsUQMm26zAiEApOwA8KJh3nyH5/A5fHLCPjQ9O2lXgdffzplj0WgKO9o="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.0.3-rc.0_1543874871802_0.056422559412555584"},"_hasShrinkwrap":false},"1.1.0-rc.0":{"name":"uport-connect","version":"1.1.0-rc.0","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-5","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0-rc.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","imports-loader":"^0.8.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"16a591006cca09e6cdd2f4ebec54e7d49ed7c59a","_id":"uport-connect@1.1.0-rc.0","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-bnPRSq3KUsD8NgQj5JBNFhRrGXOCmeVUOLpEPVZ8hOL3Zy5sHyczuJYPpuVBDB1qevw1Mw2kiPv3MbluzsxWYQ==","shasum":"5df3d138edbe9402b77c2cec278278147e082bb9","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-rc.0.tgz","fileCount":12,"unpackedSize":3512724,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDn2uCRA9TVsSAnZWagAApMYP/1UHS1HGJzqLbXbpN2zw\nm1XCAB0Mt5YV1XYMlq2LS99KQOp9mTcSGByq6q6P9osqcMfDiDHJBv3i2wrP\n/wTVcgg133diw6+cgyA0B2jY8bdvRY4Cswuo5KcqkucXyY5Eh4hg1K1xAd9R\nxv+NnuID2IVJvWNRUEvnMg0SFCu8SfvAzuuwmLBr6qLjUP14AhKzfzxoItES\nRh0xFRoBF5vbaUhu+fmEdqBQZ0x3NxGtevSg3xgr9fG74sDaAdCw9i4Gal2E\nmVWCoz/Fd7ct1w9XJamYb3uNrjNX6dNqqQfSxCS+QcdV3BPPYze8KvCUTx2X\n3JBLlACPH6o4HeLBoL1ifNxyEPYwvGPpLgsZQncPOtdo1YyQfA6wpvsvkguY\ngajSi3buap6hkbjwJPkA/jOUkFKXAnxCVpkq9edcdeyXcWtGBj2JsFEcCIzD\nr06ONnyWrZWRoPOgnO6QDeK85nZLKWGNpixXu9gppQADZBTue1KkqDcByabP\nySX1Jg3EvnupbfelYAC5IsnAfcaqiOvfAmN+XvM1IRK8c6K8QX+3tJ41JSU8\nGwjhkfvupuUpLMwfCot+kFcc6o31ie7QSLRrYLbwec4iUW+5XX1319wq4WFy\nM5rZIN1eqIQsyE3M4yX4pB5w3OsbE8elsn0vypsbIAoMU6UPFcFCsni0x60i\ngMdf\r\n=HUph\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9qZwi57RdPt/2H+bqA3Y5KQs33INv63NiY31C8qQl4AIhAOLJ6ml4ea9K5q45m4XGGczyrQo6LaVykd7sDGZldeUa"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-rc.0_1544453549903_0.9877183683788859"},"_hasShrinkwrap":false},"1.1.0-rc.1":{"name":"uport-connect","version":"1.1.0-rc.1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-5","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0-rc.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","imports-loader":"^0.8.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"12671141285164ae32ae9defd70114ff95b9be49","_id":"uport-connect@1.1.0-rc.1","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-X1awksyklb06HfhbfQawlwKgkhRpKdFSAcTEsk2ES3jgLTuM3Gy1fwBMJyCYMUFrU/pwq7NcgB+frR37a58WvQ==","shasum":"2c6102480e1bc896bd182f19e904aebc28231720","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-rc.1.tgz","fileCount":12,"unpackedSize":3511465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDpZjCRA9TVsSAnZWagAAN3gP/ROVKCU41Px0mG+1Wfmq\ncC5wh3JfzUb7C0Ia3690p5wRNt+1f87opmr/ZOJ0gl4UF5+Wnlgl1ZYTSoTk\nmrVILW4tcr856dv0WrAXzMAhS9tQV8bPfuq8ffNEl+LaFzWilzRnkh8r1Whp\n6b7SqWJ+XQUSZAkwS5DLgSanGt2FVi/FQ2nwaJejoqjTxwHMFp62CJsOrZvo\ntDbsVv9W4mmhlXw1yFU1UpbtDc5s2KgXoiYd32F00MIBCHk2cEdphpATcwKp\nnhNLF4X0tPDE0H9/VzK30hg1iDYlEEVmrCJfKQbrhITz1yFwmJFZN+uZ4sqY\nxOj8iRmKJEoy1+NgcAn3S9vg2DJMUcxYwYe+4wp415ddT2AMKzXYAbwFAIPI\ndj8Em5/fsEqpPhLMhwpVP+uFyXAeJRAMTL8E0i/LPKekGGsJN76wy4CeiGco\nhC5LNNBi4MC7yW8JkCpYfnxJVxt39F10mAfRMTxVtPOw6HqeGe9vo0PI8uKi\nQ8ay4zcd2RAd8xWVx5qQlvLdvqAoy1LGE63b4Shiacn4NooHolLKIZWs9V/N\nX2aAdHbYEUCbWdyEiusKUVc/ktWE7wUYsTSShGXrNmMlr8E2MI69gnHF2AkI\n9NuUdFPXOZ51+QCM9+9tAB9dCXQlN4UtmFTaXcb5zaUs1HaL3X5VfJcFKR5o\n+Qr3\r\n=Z12d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGwc7Jn/N+4pGdOarMm6hiP7eaGEc4F6sCHtSzDueK0BAiAaoJx3blAv9ChVMzf5DL/PibevzOj+pIlt+oHnR7Lpiw=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-rc.1_1544459874663_0.009299980942158337"},"_hasShrinkwrap":false},"1.1.0-rc.2":{"name":"uport-connect","version":"1.1.0-rc.2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-5","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0-rc.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","imports-loader":"^0.8.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"962fa3d104fdc8264a7fda0a9efad049bb71b66f","_id":"uport-connect@1.1.0-rc.2","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-3hASZJqDBV/OKmjafq4+ZIeooJhGIJgrlG2PrbdPes6celylbnXOmZdQiGpVuotHPWZ9z13EGXVNmuwzOrm8Yg==","shasum":"61b5af47f5d9feb06fc86698c94fcb5783d45f8e","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-rc.2.tgz","fileCount":12,"unpackedSize":3512500,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDrwbCRA9TVsSAnZWagAANwAP/2O4ZbckB36LpjcGAcKT\nxcRBL1Lgmo5uRVk7aPH+A/Kjwpy7ZLopv9n/oo5awj85fAihQEqxMXkZ699F\n7szrbDEqJBIGpiXJRGigKvbOaWOj5htyFT4xN648w3CZkap7RvP94hTo76yB\ndCmuaAYD6HNIImmDM50OXLDbUbi6PMY6UnbUPhJ8lh9NnU7YYn3/pWNDwtTR\n3SKrCQrTKZvBX4jBPrFoa5W0b3Eg2JUlMY2Jmkz1CIJ5leGimNrNWaoGp7mE\nkJ2EFYWKIijBsVQqt2wqGP2nOyfWgmMjRYFoEmofh5CbuDV6VUuNihbt46Fo\nZUJ3C6OHk+wcnVfG++H6cSt1g7UCJ3ufTL99uRlq9PNV6IiaGKpsu1zY7nc6\niClWWxBHSQSB6XYP/bmTvCxApuBkGLQ49T4bJ5X+EUB7FdfL7yxjF2vgMoQD\nLbpDeta3gKd0ok6QGh9L3Pq+oRYOiczbH/Q0qInsgCSr06X8hCskvmlgAocl\n15CrBERDlUl3EDnPzACzmJFvz+G5Px3shDGHiO3tH0daGNT4ke4nPKQeClGx\ncEeCA3ng4rkswJ1XEAWgWyDdI8k/4AaAU7xfTlNiK/5NkPCwTL3qegs8XtLJ\nYxPirtbMVMVnMHJhyP6izVp454nrrW7PXavz5As09BeMHuz7DMi6FTv7SV4M\n15Gx\r\n=/1Qf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEnmz8h25EXCi6lcx2K068psN6jaZNVtgLDnYoR5dXMRAiAXXgj28ixakKY5GBoatvTbfzdIhuCCsbDzQWdsRcnrcA=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-rc.2_1544469531140_0.7972147739562019"},"_hasShrinkwrap":false},"1.1.0-rc.3":{"name":"uport-connect","version":"1.1.0-rc.3","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-alpha-5","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0-rc.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","imports-loader":"^0.8.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"cd04182126534ae5a1fef036310784e57637f1e0","_id":"uport-connect@1.1.0-rc.3","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-gr6LJhBxSErigVgFW+FipE9kJEIdI0Y+tt4FMfKLxTOaUmn3vEwEr48mAiBOJ9qnNIMkE+0YBI6FcmCJL9kKAA==","shasum":"3b62f9e0c72926d0395fb6c1e2741c32dd1c2af0","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-rc.3.tgz","fileCount":12,"unpackedSize":3512504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDr5mCRA9TVsSAnZWagAAHeUP/0maxDiqf8UCwN40clcn\nmf9eNUlFfFQPCob+L8yUnSXr3wceXjer5WPynUmN4qInBmZizq3PPPaDPxFj\nRET19s1Qw4TkolEpFvWQUST9tu3gfChSCEvYrCxmbkdZvKsCiahc/ck45V4A\niJNsnw+jXIilWM5ZsSB6UX9REG33ZqyKvXvltuQMyRUgTzutylL7bcORgWMK\nTxnJzaMvSpT+rdCbyz8NQZAuPz1TPmAGyugUJOljSn69AVLFgzBXi3D5Ve7e\ng9YwCyIUzmP4pqLLlwsWFp568Co5sKga4XcCTO06ZswS2j/YtK5iPpJBvtiH\nmvnQYtVAmjpSFhLB/Do/RUsUe1bXuM4PNh8BU/LomMExE8NybB/QK0fc6yVQ\nATKhrR/x/Ks7IkQhdABMYbCOis3cjxLOke+rqmKMC56NecU7+dlj0Vmm6MID\nmMiwbetBJlSeJgPoL+/vZ/neC2oeJParlvLh8LYXn9hfCKrdUa93UiIqmC8F\nbdl8btnsFa2I0Vjm2tS6NB/wMy5GFeVNu1mg8hmLEs3EMdPNWeL98neAhESZ\nzScCyxWWr6dMgm9jgIv3hVZg4XAmTcofjtjfFGjr+BPjt6/qcL6K+U9D9/uT\ni7lUVH11LUNBiPsXTGmPuXQ2OvKD6bIOckYslA4OUq17gTAsbus6L7eqfbbS\nRrUk\r\n=8Xj2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2NTLXsmCQxnDUJrCSdwiVnObNKeKlQZThamFU71PEEQIgLjZTb06R56WLKipL0oOkUBqusJchxhf/fswe9QaRNr4="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-rc.3_1544470117597_0.4237944241846805"},"_hasShrinkwrap":false},"1.1.0-rc.4":{"name":"uport-connect","version":"1.1.0-rc.4","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-rc.1","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","imports-loader":"^0.8.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"553ace3444bbaf3d007bbeaa77ddc2f1fa576ba1","_id":"uport-connect@1.1.0-rc.4","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-GFq+Izo4ZlgZqG3bpF75XdUxmSweLQIj+oeNjVEZKfDZ3R4opXLpFAvK8GSIS5aofi3O0qgiUOYFCy8xcToglg==","shasum":"f6b6f614c5ec2a449811db5fe99ef90d4235e5f9","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-rc.4.tgz","fileCount":12,"unpackedSize":3515370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcESHQCRA9TVsSAnZWagAAlvoP/i9mWlEGe9H0a/g4nJGn\nyWJmdoJiatZ3BXvjBkEOfBKGaSyFGomXXleUiILVd3u4O/9tK4Dcz3QahMeY\nOnZhhAA6lHNAFVgg25G0nem+dXFUugmUfLt1L2Jwa2HzDCTaWaV7vQxWqprA\nO0IWe21vnQxbM+3u07TbvO+2HALbM+lMETdh2ZNbhPDXJdQCeBxfcw9zHWK9\njau1PNUWFHkoDuDIQjeMnHL5HpDQW7mnmn4MDkSvmaozbU51puKT2zf6/yzf\n3DlQbRH2SFwol0czjKN3rDnhfK4r91HDO5UfR+pZONmsJb0dsrwySeP6qRvT\n0dYpv7jAmRwUaXsPXLo0zGvZXoU28hXkbeb1ekmX/VhktFENxvEWR1SbWTIB\nc5gP4X/3xLIXxum2hKXlpwZWz+KkqTROW9RfDkatUlEHk61XTAGAsDgFKybf\nuR5k9D61hi8abgD8iWjyP8OmKhyQ41h95dyahB7SFUGhbZrTIvyxPynX+hgK\ngcDWIkmFxTcRzmzsNdMZwdxPbd/qHITlmGMVTLZQ0JdIU9WAdtNDq47dL7tY\neJy7jBKEJ9SlyI2BDocdKpOJ2ALkVHOIqi/Z9Cfw631iZI8FsnhVlYX05qRW\nI5C+F/FbCHyiqGmDlg+8z0rrA6Qec5p8yarGBMQuTUaUm3JaDnpj1nF7RkWq\nA3dC\r\n=8Luk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBW6a26ggWS3Fe2+N+8b+0wNPgbGOhkaYuy3jOT6o39qAiAG6f1IcFoG3PoMJGbmeofDWjC7ZSl2l+WNkE7MO1qbsw=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-rc.4_1544626639867_0.34510877782475524"},"_hasShrinkwrap":false},"1.1.0-rc.5":{"name":"uport-connect","version":"1.1.0-rc.5","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0-rc.2","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","imports-loader":"^0.8.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"801d676471cd9446e63ef7ae9dcb0493aa771a33","_id":"uport-connect@1.1.0-rc.5","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-bb8rrhmfxUIoeryftfhfbSWtxGskru3y5Nk6OQJFMpa1sRjV2HCg9tMW2gMIPWFbVyLROuTrW9yC4Vp8NmPehQ==","shasum":"abe227db5933b9f041ebc922b9272d35da9f3318","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.0-rc.5.tgz","fileCount":12,"unpackedSize":3515535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEVjICRA9TVsSAnZWagAAFHMQAIsUZ8YpaGEX/Kl2xBiJ\nSCK0hBL/iRMkOxjpa6SkqG6I10ThVvjJPYVgrQfc556jCjkkXPxkeiUPNks+\nO0YR8A7lMKkm3Y5gRl3FtYPfR6pnv0hI/gcXTV0sJ+dL4M35oM3UoKFaCqjH\nRr2LYG6CQUQbUfxTjCRR4foNjuq6MG+u5PtL6hOjsdulY35ujoujNdiAHaFj\nx/AAUiJSK8zUF9s+JqjjGbtQFkCALOHvv+BpDFlorgHosN0RqumRjlEUQSxV\nr+J5QsR3iWjm6JUW+5n8fKySl+1PPOYGtP1hEBbEtY79BysGb7abuSkRgeOM\nL42SPk1l5SIfskuTsXcdkMzDp/9X6drdbRjEpt2B6m6JlXljh3MKbuJLdXuN\nUGdGVXdKK+veu+3DuNmDl4HDT1/ctuFN+GabAirgDcJnvf9hnoX0G9as6qpv\nciYmR9ISPIQa8+B5GERWTpQHrBtAA/5nieWt87f2fyZoIp7gSSaW4BiQJdia\nQwRYiKHruDqTTXiFkpHloHS8M5aUWtjkoVJUcOV3SFGskGCx1FhV1Satnx49\n4D3tHIMbDU9WUYzalF/yF4HwsUaST+Pn//KNf9YuueTGkJ147Q6qu35SK6z1\nOyEcTWCYGnGxeXXWIdXD1aywBQeuXbi1M+6d+W3AiPDbq/2Axo7Oq+QvjH4B\nz0X+\r\n=ULZ1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE9kaAOhw6VJUF6hfXtOD3H0/c6saNXTPgG3G/CcbYxhAiAKZuiEVCAr4ioQh5dQkLqy60Q/Emu6qDOWbsX70BRCpg=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.0-rc.5_1544640711306_0.05969869250994031"},"_hasShrinkwrap":false},"1.1.1":{"name":"uport-connect","version":"1.1.1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.0.8","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.1.1","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.0","uport-did-resolver":"0.0.3","uport-lite":"^1.0.2","uport-transports":"^0.2.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","ipfs-mini":"^1.1.2","imports-loader":"^0.8.0","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"_id":"uport-connect@1.1.1","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"dist":{"integrity":"sha512-li8ahaaW52f+CfVlEJSix0iORhrmLdH8q8Ai95Qx7GJtFgQWOWF3x5S0tkPBVozeJDBDwA8F+WUIokPX6DU0QA==","shasum":"a2cb02fa01c441cac62fa945f0384d62bb477251","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.1.tgz","fileCount":12,"unpackedSize":3504091,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGFq3CRA9TVsSAnZWagAA2ZsP/RhFgEF3PieSvCylwt0L\nM9jwLf0kq1LBFHcOos6wiMy4kOFDxF+jbMac5aM3qdMlfHj9wwv9jGqH/XDq\nwrB36eQpbPza83OhGRSvjbkbYiIOK3FIdiND83mJhYwzJ0yv+7PSnf6ZqY7O\nMPAuSsQGZwdU5LqqVcwExHrAaGHbptCY9Gn7a/ouzAWj8UfD+1qTV4kBlIdv\nRY2QxwiUWumH5faWNkci26HdI+NbVWK8xnpzEpX6ng0D3Z9cpUf5khSddWU+\n76250RXJtrZkjTLJjP37BDr2nU9jjVrMc7dq2YDYE5lt0UBdmbTFGA61DgrA\nJYL5FW+B3jOHDCDIYSoOSP6r78W5Gn6Ghf/tTDPmhSM6mdFdYwrMDNnQRRp3\npqxw+rJExhy9pyrISBh5plp1u6GzSJRqXM35M85G44ny8WEYl1ZMkB+ibYTq\n61zcdeFjUNZkX94wIhXQIP2msdcl7BTqqnDzafw88L8okjQ1koNYDV+G1vst\nUXLaitV8xl3j3WTCcOl2tPWQLX1i6yY/TaJ4HTqKDIBI9yRWpa/pdqiBwH8F\ndQ+4XBIwS4+d3iP8alrqwYJ9UIxVaUIa288f4WrmBeTZ2pGFZOj4cTdm+lFm\nXVwMPQGncYLcNNrNmlj35Px87V0T31WtaAeqSblT3XHWzWlWA+DNxLrbGuUi\n196O\r\n=opa2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDPNdWxOKhP/mvKLa1SsvlxAJZKUqtY8KakRExMmxdigAiEAySw4mAVK8/KQn+xonGTPULx88zu4C+tJ7y4URu2uBLc="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"oed3933@gmail.com","name":"oed"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"zachferland@gmail.com","name":"zachferland"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.1_1545099957898_0.40930357851374954"},"_hasShrinkwrap":false},"1.2.0-experimental1":{"name":"uport-connect","version":"1.2.0-experimental1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","module":"lib/index.esm.js","source":"src/index.js","scripts":{"build":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"microbundle","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.2.0-alpha3","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.2.0","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.2.0-alpha3","uport-did-resolver":"0.0.4","uport-lite":"^1.0.2","uport-transports":"^0.2.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","microbundle":"^0.9.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n\n### Private Chain support\n\nWhile the primary uPort Credentials functionality does not tie you to any specific blockchain. You are able to request ethereum accounts for use with private ethereum compatible chains. You will need a network ID and a JSON-RPC endpoint accessible to both your browser app and the mobile client.\n\nTo configure it, pass in a network object for configuration.\n\n```javascript\nconst uport = new Connect('MyDAppName', {\n  network: {\n    id: '0xdeadbeef',\n    rpcUrl: 'https://mybankrpc.example.com/'\n  }\n})\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\nweb3.eth.getCoinbase((error, address) => { ... }) // request address for use on private chain\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"3d334538ef2e6dda1be7c4e3bc892502f46e34b5","_id":"uport-connect@1.2.0-experimental1","_npmVersion":"6.5.0","_nodeVersion":"11.5.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"integrity":"sha512-I7O9oURKZ32pPN5FlseBvV5uJKl3EpCaM6cBxmCxJ9D7EhifU4QNnlqjcAG1NfE1zCDFHPVWxMJ+xxX3kyLctw==","shasum":"44de4463b567c84a7b351f816078316f56892c24","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.2.0-experimental1.tgz","fileCount":16,"unpackedSize":4985973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRjJFCRA9TVsSAnZWagAA734QAIZu4b/IYTSBeq+TzQ1m\n3Xthw8CGzgQKS6upExLQAG56xdFE4Hzoqf9Rf8sQiXEXZ8Vbd0sRhXaDD8EY\neQnfA5VAjNAoNKiBej/ytBV6hVF9fzXVl1FynbIHdYOYBwqLaNTfWV3EKGDf\nlS3wxlNDBua+Or7KRx6jnZYoYecp24W9jv79XsqwofDzyTUTlc01pXP5K1G5\nwie8h10j7THRdSkC9/CgNJ3oOx88BvDLHGktyna84f/gyAvfs+GfkQC8CzMo\nLYyMmL2SeQrwEbdr1rLywSAMBAnO2s6nlhHArL4IJXsSB7BomgCI8AxXsr/Z\nSYMOVRqTgn2ZVPp0K+5hRP3qegGoHg6X/4jGSc3hiUrRjpadZAW35t0WKdjb\nzrKdK/AvcDWIxNpK2TtqHliVIPioMqID0WYgoz5TR/GuDckgRF5R/5pUqTuK\ngLnub76Ap1s3uEU4xlQfsfdVoqLF1YWNqLKFopC8+OuYGUuVhaXgyxuyVvvk\nmRyTL+5TdULRfM82++KDtnsMi4Vj1mFxFdxHH0eJePVCGw3XJHv3oR41QhkP\nnZm0MdGnkvPCyniDl7nNy/YzGmRhtMMzoh2UzzWszS39VoJTJ4zFL1oewdkG\nQtevNAIlAzt5liXD6qK6qPCERdmqLqLSjK5PSBc7usaOpal4Dt5AoL7J+aRS\npgPc\r\n=FhBn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNT+MPi2RW1GTiYC2MIuyfPHBh+d/3y7ILUMd2QfuAigIhAMs6DmC3iPZ47nhuuG4DJ90oOop0e+4Shf2lhjiRtech"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.2.0-experimental1_1548104260832_0.08468381810010595"},"_hasShrinkwrap":false},"1.2.0-experimental2":{"name":"uport-connect","version":"1.2.0-experimental2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","module":"lib/index.esm.js","source":"src/index.js","scripts":{"build":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"microbundle","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"did-jwt":"^0.2.0-alpha3","ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","ethr-did-resolver":"^0.2.0","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.2.0-alpha3","uport-did-resolver":"0.0.4","uport-lite":"^1.0.2","uport-transports":"^0.2.2-experimental-1"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","microbundle":"^0.9.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n\n### Private Chain support\n\nWhile the primary uPort Credentials functionality does not tie you to any specific blockchain. You are able to request ethereum accounts for use with private ethereum compatible chains. You will need a network ID and a JSON-RPC endpoint accessible to both your browser app and the mobile client.\n\nTo configure it, pass in a network object for configuration.\n\n```javascript\nconst uport = new Connect('MyDAppName', {\n  network: {\n    id: '0xdeadbeef',\n    rpcUrl: 'https://mybankrpc.example.com/'\n  }\n})\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\nweb3.eth.getCoinbase((error, address) => { ... }) // request address for use on private chain\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"3d334538ef2e6dda1be7c4e3bc892502f46e34b5","_id":"uport-connect@1.2.0-experimental2","_npmVersion":"6.5.0","_nodeVersion":"11.5.0","_npmUser":{"name":"pelleb","email":"pelleb@gmail.com"},"dist":{"integrity":"sha512-WgexVQJP6vRT+lC9WWTg4dY7O2P0WVsGZ6FbaujrP5cfsCPKBaUNnSaKpcAvgriPVuwm2bfyDvwXuz/pYqKE3w==","shasum":"c521ddb2f6a8cc731001c74be7e264e81e2d9f39","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.2.0-experimental2.tgz","fileCount":16,"unpackedSize":4985988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRkGwCRA9TVsSAnZWagAAsm4QAIWj8tJ1NFXJp44sAZeu\nqgkaas+EyIA9RWwEIh/Y5sjC62cJWSLi3j2HE83wHJZZPtmBdCnMweEdfHwp\nch9xWxKKpqjQIsBRFQ7I9SvW7fw+135b1owSiGty6beirQSK7cTWtyiimCru\nRDuxcoKmA5P6Bie7KuUveYzRnr6K5g2LtZGy5JiaawC7sTaSQdm8QezJ4v/x\n32yJl+SMG8XPkOR2qkgs3N5ryPVtJqcxsog9aoVxLc852l1xdfhW3fWK244G\nCSiZR9I/JOblrs6PigT7czQNZRzEL14q1lcEdjbUHSpVSiRwo5lQgdUlyCCt\njt0sBbIrjKEAT/v6BbaVso6i0gWLdRdSzbBx00tjpko8kzdbTzAA+sMEwuD6\nqQ9jvQCUSPFIG1my0/kFeS5taWpWpWTdMHgQLn2C3chpbYMFw0wcXQB2Q7kF\nAk4mSNWgUrCMsoAaJeIbxaiqbNoig+VuUalCpK/HHQD8jbq0eeRb4Ag5lmuo\nOiLnhxwoacE9aGH5cAq2aY1oKW2SF8mvsLVfqeKYuvtk7ui4VUBbxzTgVtZn\nVKoYhjjD6mWosflodALjnEQvOymbwwSFJSWU/owI2opO2kwgxJX5Jp+9wQkh\nXryoNHkU1hIz+tzw4u5Zwh8R2es2nayKGSjboUkwfs+3IYpSFIFFlLwJITBF\nafbR\r\n=n4QJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCM3Heura3yvNN//jjMB5eX+XqhwVp4ZRsNjAZkrvn48AIhAKPHE2y1p4imlUP9S+flRXI6eAhr3cznawRLF80ruwTN"}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.2.0-experimental2_1548108207356_0.046822182439289595"},"_hasShrinkwrap":false},"1.1.2":{"name":"uport-connect","version":"1.1.2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.3","uport-lite":"^1.0.2","uport-transports":"^0.2.2"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"a03f4e0740a3fd202ab86ea2958e7063a89ae99b","_id":"uport-connect@1.1.2","_nodeVersion":"9.11.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-bSGWYjPgkTR6s5LkwyJEz1uYS0m9hnxfT5AqFWjAncdvG5v0CEPlq2Vgeh7z8+KJLKbywfkd+Uz+1SFeP9HBgQ==","shasum":"31b6d916855b72140c7826b0ef701777869d84c7","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.2.tgz","fileCount":14,"unpackedSize":3999087,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcU0tlCRA9TVsSAnZWagAAx0IQAKA3VMLCgWUprpnp55uO\nLPqv5CJfjQFUnXIMcJtDizOLgf0N08bs22MgcYYYESeoCXkp5fgXnfC57iIs\nhHWjvF9yZ3P92xRaIZHAQKl7rG9vdV4WCRrieXIWQ95Pakra2c0c0d5U1paL\nrXLPHTZCfJf2CXspsNq2DsEiqOnpAcLzAuf3n41YsEKL5JdoPrEVdVs7twHC\nKSCBIX/exDT/HMnj3B0F6n42DRJ6+1fV47aG/Yi7sQ5cbojYHiXER48iW2wY\nXwxBUKkuZo3ur1WOvZzd01ADVMIIIJYX26NbnBTWWLlNlIJ3mP3qAJa0s5s4\nWvhXLwTVIOiIia7wVhYbHT6COolUWwVYJTRiv00LRxtwl/cH6XgxPV4jr6KM\nZNosJfcmqQvXXc8eO/48wCt6WH96kPITafPMKb5A6SOy4hqAVNNp4MqwE/19\nkYdxsQIBD9iXmMqESNsbKG7eokcZ95/rOYSVfVRHLFs62YA3X+3Xx3rr1GqO\nscxyXADVgSCItAOvia0SBrNOyLD13qzAULd6TjVqTmjjIOWRoX0oW3UEBBHw\nCePdXuzsEzPU51pFnv+zyYAUmvelkJl2o2HMafuZIEeKXqxytyFsnqSp+VYj\nhkd8KQmMR7hK9t5SVLLsfeO3EU+k0gWCvJXPQjSCvX0eoPjWAE9ec09SJv0Q\nY3Q6\r\n=Dsia\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpAivseKIJTCKAOJcRmczwzhWw5kxFOWeX+CWXV/QzgQIgM1eFBNJLGwMZAv574J5lCh74NiIdcL7NYfs1Tp5s+Kg="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"_npmUser":{"name":"rmw2","email":"rob.whitaker.18@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.2_1548962660870_0.7539243834390459"},"_hasShrinkwrap":false},"1.1.3":{"name":"uport-connect","version":"1.1.3","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.4","uport-lite":"^1.0.2","uport-transports":"^0.2.3"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"66149b619a683b03fc6b85d3b53fc43a1edc4e15","_id":"uport-connect@1.1.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-BFJgyDnk7KfpmYzm1vHgHLnLpmWAlaOhJ+I/ueFJ7cHMUWXtJvltfsHWJcVCQqCAPJly0ZusAFY2uyXSxQzEvA==","shasum":"57adbef26667afca6810003a5482891581d84b9a","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.3.tgz","fileCount":20,"unpackedSize":4040507,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXJUVCRA9TVsSAnZWagAA2JkP/A08AbzO/p4B1OjC43gw\nFtt0UT0eCpkIoOF0IeD1ZLMaHA/r4KdMlfOTqEnR/ai2i7cGh9eSTQayWeZz\nVvsi+qtnD3ssFjEt51pVBhM52fs87BrmHh809G2o3AdImRsujrhIvvEC553t\no2LnGtqMaaNCFIPLgVOLOERhdbYcIeDRJ5gm8uKYVqwBL8tMmIs9k0HMDbD/\nOQgDB4DovF2RY3mEDfIJ9x3BfPq6Z42zRN6Ug0/Vxz0CJnyXIKSf0xkVcZQg\nUPlrGZ4yx+wPUvnc0U6FN/4w51NRYzbC5ZLson/j3V70GrrLKKlwPITqxKqu\nR+PpoE/K+68OwPOI1ntod3HQwn92qsdIEAsfYkWIlH9XqqmVu/A2egXTVcsC\nxgbi0SKteg0Z91XuS00VNIzw034kS4qGoK/LbRADpwbAzfLlLqdfi3tCAND+\nzVD12KB00GHP0ZfaTjJiS6NLbHp85011RQv+eqPAXxCmj5t9uEbHZ1RTq9lr\nwD3auvyUsVw9kAI+JbSIt2NCqLy+FmUVpNgZhC6Ox0XHgy0btsMs/a6kFZgQ\nE+111BIFCWiWpXQpNwhH2WdDcTfTMzaKcKsGia0SIrohwBXT7NwmVbrHgdlG\nEzyBxP/v/ZuXrJqa7TTJkTHP28JFSMPA3nmbdCM/wdFCeRDM5knE3SKCxNUR\ny8mQ\r\n=yg4S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQ+W3wSuZDUNrWsJRExu3Wbr49ipwths1/gWS2Zx2KdwIgJlWZu1qvV+lk3OOp66O6bzt/FQNqjyDKNp++G4H9VEg="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.3_1549571348346_0.7907573037747702"},"_hasShrinkwrap":false},"1.1.4":{"name":"uport-connect","version":"1.1.4","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.4","uport-lite":"^1.0.2","uport-transports":"^0.2.3"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"14acdb2ab57cce0011e50856a90955f058fa1778","_id":"uport-connect@1.1.4","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-9LLogEQHQeGdS4OxqtCVPOiKuY9UlmH8TPrTroeAb5HNH0XUeASpeFAiKghcZ8loqbug6uzCGHk+LY3gg+dvzQ==","shasum":"cbe1e46db4fca2ad30b77a17b42b40c74d6796b7","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.4.tgz","fileCount":14,"unpackedSize":3969708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZxMmCRA9TVsSAnZWagAAE1UQAJBXYc7OU1OTgDWSupK4\nzukKndx73RNTJYWM4JwnunYRrIgqCQRwtBz0ogUSKE8BbP0FgJx++cEL7EAP\n2qW6IXBspMvsywGcMgbq3bFi9oC0tbliVCfkRViPoiZ+ixanvEJj4t07e7iT\n7estc58BW2n98PL0Sl/FfFK/PNcVfVnYkptlWpddh29MfTUhOEBhW9hO3pDH\n1e7kzhPiNCZXdBOhJNPB3iYAuqAVQXLJPEVUQqE1w47pSnymGAgoX5yvFg5n\n9K+NCY4AElSN1HNvhy74VaABhaaBrRc25kkY7X49t5of6rr/Lgv7sTG95zqQ\nHFhTVWTZ1aTP/YLJiQJIvsAXm++Qc1eicG4na0xeFKK+uvzRGzZalpRUOCUz\nO/LsEysxhS0fKvuFjegjfDocSyuYT0hY83M0a+ca38520z0+yREdt+EwWDUq\nAp1XYKxMqvHVAvio5Wt0ru6PenUaScf0klJGN8mqDKvH/bZb1x/Tnv8GeV2F\ng9UZtIEdFqq7glTGYnlFQEtx5H60rqyRVYLIhDvN0solO+3WWr6noMwXZMN/\nAjNlFd8tUMXdVOaGLwSoU5yCPOvJE+dA5l4XLkz8ebhQf/pGy716/7VmJkZU\nCEMo3178e9FSzS5iz4onFvOsIAgEc/3l7Y0jY0X1nQuagHCvB7yySV3iUBks\nDsgE\r\n=4VmO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEHHH1lpfGHbwcxCqcMYnlVbJnDB1akJYI1bi/8ZTU7WAiA0QjGyLDII2kc3R6xJg2Rm0VdqeS7FasHaKwNgOGpPUw=="}]},"maintainers":[{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.4_1550258981151_0.9662847056012978"},"_hasShrinkwrap":false},"1.1.5":{"name":"uport-connect","version":"1.1.5","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.4","uport-lite":"^1.0.2","uport-transports":"^0.2.4"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"704b916f7bc52b786c288ace748e7c25ed50958a","_id":"uport-connect@1.1.5","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-jIhb979bWWRUKwiDkGPH+qIUDPKNS/prGNWJqR3uNi28eXP+xAdLahCMLBNaH0zptbNWu/G24AWRooJ40v4DEQ==","shasum":"ed906bc483dc299877d8db1d70703ec452fc917e","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.5.tgz","fileCount":14,"unpackedSize":4021902,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcj0IOCRA9TVsSAnZWagAAIcMP/0cflLxJSI4gqhMkp1OA\n9Mh9GvEFWnOdhgvDWj26vf/RfZjxeZnbs0ecjLBtDgXvGBFMBHY1looud3or\nNyM4Cx4ebKnNaaLQF7p+DByNFFlvrMQfW9EL9iT9unZzDSwTfZGR4PhRrUUs\nub+iglj6unMt4UnN/Glft4NF60y307H0C33TTmpGTSaeAM/+6452urA9OBjp\nzQDYHlz/+Pm0RaAqPil3ooj27fzD74CLxftDD1kzs9YUpcjN7NZvXYfJRESp\nnH5ixJccXa0tMCtHyUtTq/F0JSmt3wSBHgUkA+ZpzpHQoxRJp4WG4T+5c6Ji\nyGyEfy6daFPDHi6QdvNQTxiTd5ijGutx9x+MfpnQQjTDyshlifbsz14ZpYIR\nyF3i3Sb/yzhtu1BywMxcMk5Nv1Agm7NpPYcG9ezhh0IPBghxsfgBv4eF6p50\n49iiUPUPfDpqcSlu6eOgIh7plNC5Rv2ISKkUaWYvBs4H2LRFIY7utLKjFtY2\n/mnz2PZfNCIVdCvPfz8DGtT+WoK/lrVvDHgQAj4QvcnR/E2+9hVV+1NI+Fud\nweFR0twR67q5W5p4BYD5gAPMLPWAwxdcYymV+68xi6PmCH+sg2Zy/dzfbvI/\nGtj3g7qfjOu23PekBlGjZE3/MHQiJn+nTVw6hOrqdHZtXfwOaZ1Kkey1YnhD\nfzu5\r\n=L6IW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPdPCRzLkve9wkuRY7ErNtIQ6MeIyBGaZEjs8UAcVLPwIhAO1tdoNlKiRAOTLk0U+O9TsIas91bYz66Gz+3vU6Hig7"}]},"maintainers":[{"email":"aldigjo@gmail.com","name":"aldigjo"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.5_1552892429280_0.5681108134999293"},"_hasShrinkwrap":false},"1.1.6":{"name":"uport-connect","version":"1.1.6","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.4","uport-lite":"^1.0.2","uport-transports":"^0.2.5"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.0","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"9cc5b5d02a4571c40af2a31b9bc898739c8dbac6","_id":"uport-connect@1.1.6","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-roHcZHONFjDUWORBAROZA3s/ee7dx2UZsPrdE4FTrRqz0ItSA3P1K6p/f+DGGKzIGo6EOM0oVjBflZ1iRCNPew==","shasum":"96215ce02c89edbb222b5f8a3f05b029573b042e","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.6.tgz","fileCount":14,"unpackedSize":4023060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJco4QICRA9TVsSAnZWagAAAeIP/3lap8uY7rUntMBClNaZ\nSkh7S1paiL4tonZBrMsTmPp1B+96QyQGTPtErD7GuD9d8V9j2tDTQcBR2gAW\nzIYiYwuCyfB/P2drsivvkWpXVyoDecDqV5FHKr9PAC6Lt/U5Vm7ff/DULLfZ\nA40E5b7us9s2kC0vuanwwGBtHAUi5CUdMKboENVwFerEvQ87ir78lJ1kXTxy\nh0aamlIBlHNy3nx6Ta6yT5pnS47GAzlkDNijX5C1DlNFo+XN7++VSGz+Is9c\nRESj3et+1eS7wWUpmiJ7Q3kBdV27JMEmKxK6YhLGujdcMBmTT7+ASgjvd3c+\nrmgsxk/OtrCt3o/gEW9EDalQMYL9l/x6a2WQ/l54ucomtu1g+WBgvItGZP8k\nEWixWZ0sGCPnvRkGjXIIySau3NyjYd1dR0XhV/bDsrOEVwQgzqPxzxzSUCV1\nDJWzbc6DQE7c9yCWcw7nZPwd0j3opFgeN3ncYCD9YmLwjTurRzC6230mAp39\nuGuGpJmnMdx7zdCQX5lRuJFrqrpA/f15PG01l6Aflpna5xQZnvY4jjimsc/5\n7yqQLHQfW8qsZIG4615MUK7zMiRecV/nudKIk97E7uffkuirs+xhjlktWUN0\nPD1fXDC/ltFQ6Gi1ejtbQZTl/FY7Hi8G4G0Nqwj5h/X+vUBi57o7azQINskh\nm3A2\r\n=N56f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFg9k7e6yn83+jW5xJQR1Ijo9d/5T28ayjsDRU0m1ggmAiBLMWnDANA9Sj04aP3VanOfRPSwwV9PnAE5lUFS7rXP0w=="}]},"maintainers":[{"email":"aldigjo@gmail.com","name":"aldigjo"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.6_1554220039237_0.2794385619566433"},"_hasShrinkwrap":false},"1.1.7":{"name":"uport-connect","version":"1.1.7","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.6","uport-lite":"^1.0.4","uport-transports":"^0.2.5"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.2","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"a2fdc59b4d90c5b39ab68be387226067acc88194","_id":"uport-connect@1.1.7","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-GWeldrQR7O+BEwJs1qbihfhvgGyEfwrBD+DlPzhi3U1FBwUhuFY/cm6j3pliNO3cQM6IkkYt2sB5O4hNGTZBJQ==","shasum":"643f5c6f36f6215bafe0aaaf8157dd3650800e52","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.7.tgz","fileCount":14,"unpackedSize":4023060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcrj/UCRA9TVsSAnZWagAAmPYP/Rv2i014SenGTT+jiVuk\nXLErx8RM7N20Xc20RFZFJi3aq1N63vQoMQeiKQAoVVRE8HNc0ao39PZrlfew\noRS8S0Exdr8bG7rEV0aP/OQRQ7RQbDLHr+UI8gb2380XnbigZuzfPYHR2F8l\n6ir/X25X7SvryVg2fye+raMRynT5k9SQGclkEb/hDJ98gUjCF3xPokdDi57i\nasX7vnynnTK1bb4+HpOWRl2FDpXr6JtH+FgvjU4Z9MMWiPodUWv/5S/35F9T\nJuXl77QPWqrnWA8u+tYDkzU50wCBcsGykLPXkKzddnNPMIoCr4UE2BlVeJvK\njnjSiB0NzTOkySBr2UKcwtpN6lkZCeAkwNTTPoxc34t/6JrrkwPZ1wYEnPzC\nqY2yzW0Um94bb67wE4rKfOe9CZQlKh7mXdV64OJ66TmohJWA9C1Wj7FCTbTl\nw/7XGjd0aFyy+cei+2cngkbyR8zmeXzAAtAZpXkewsHfs45ue9zFbVvcbY1z\nl3uKg/PywFh8hY8SRs+bTvT1NoBY2MjUWPXGDHSgM6opPHjIJXwE+ro/EZwB\nWkNh5KIWMxUqYi1CTYxOrl/3WPCFNwvwxNNqKAUTMgPqvziVznzoBxz6TTmy\n2m+aJYPI97yAENaxMNDLKFTyBfrENuK3vSSk4c22alo42sxbv7qG9kGRuN5g\nDmOJ\r\n=fny8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGAOIXa1UDYNMiVkPlbKCT0IkkoN8cR2mVzoYG3bV8qbAiBnA6DEgCt19aNcwmkeOp1+kJ9pTrfJfWWAV9erzxeI8Q=="}]},"maintainers":[{"email":"aldigjo@gmail.com","name":"aldigjo"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.7_1554923475314_0.032381503828109004"},"_hasShrinkwrap":false},"1.1.8":{"name":"uport-connect","version":"1.1.8","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.6","uport-lite":"^1.0.4","uport-transports":"^0.2.6"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.2","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"89c9b20b4a0aab5f2215c720c026bd9276af8ba1","_id":"uport-connect@1.1.8","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-925g1Q3Ur2rJU5MuZkCrtv+pP+f3rK9QTKy/8VVsZ4TVbo8fAHsJP4H1Pr6qHdROGB9EHahrl76FbqH1UIAcag==","shasum":"d9a53148b8dd48dd669e2cdda63e9bf38b41080a","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.8.tgz","fileCount":14,"unpackedSize":4023060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcsKx/CRA9TVsSAnZWagAAmcIP/2kJhq0cBgI9MgBUpiDx\nA2yj5UFHcgjQZ5NCeRnO/42TRfMNJz5SsHr1O/ZoUKipRtOWKLiI70RBpiKT\nus4JlT//i4QGuidpdjPh8tWD81mwONCciJ16zHMdn6o4ELgMrlH5Jbg3t+Wx\npFzKv/D0dLqlnSgDcVObw6hn8azBQ1NzICAVmNJO/iHtSPi94LD7EeaI+MfF\n49JgSe+9qJUMUysJQmVi1dD8j+E4T5JH4rWfXljXUZ0qitmeIG29hh/oI32n\n1iBeMN+sF9r+v1kvXRmxGgDdGRr+NQPx/ri6yYdrdsoxAcJbfYUNWqJX+zt8\nc99oRizEMuN/ABgXeQ2vowBlzQclRaZbjh/2YPEOvXznZaS6rVqIxnm4ncN4\nf7Oq5bJ3gUkSMuDX5oiqtU4s3frXjmZrPrIjqMla8spU/VVXjsR7qy+UUGwc\nw4rKMmltUbswQobhhB5XousZSiU/6QV/saqaIY/fClJwrfLVt627T7me1tzm\nHAGMaRJrzC1KwvpbWayWVg1Ia4XDa3/9A9Qv4426YaEVI7lgaB01++SG45+4\ni005LXcQ3yNULNMtlJzqXcXLE8KvGG0WtEx2S4zY59ouoiPQOzfwtmOr7PXP\naGyoR86/oxlUf1IWevtIBUij/0LvQXYGDZbONVj9Hfzf1kj+iX00aRsiqqXo\nhbk5\r\n=nA2o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGIWgyv4mdxJl+kLawE9YXqiOAwHWIpLAX3On9If/WyWAiEAt7zVIC6NvT+RsEA9aXVTvArfbU5pjxgFSL3/m0KCt2o="}]},"maintainers":[{"email":"aldigjo@gmail.com","name":"aldigjo"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.8_1555082366521_0.4697676567306883"},"_hasShrinkwrap":false},"1.1.9":{"name":"uport-connect","version":"1.1.9","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.7","uport-lite":"^1.0.5","uport-transports":"^0.2.6"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.3","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"e7ab71c5d0ce135e7783eee22361290962bddc84","_id":"uport-connect@1.1.9","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-JClHRO85gUwfuqX4khaCeEIB74WY13MiZFlJdzNKaOLFbxiFrZhvJ5Oanh9c0l3yxf8gQlRfVUj1ir4UpM1ttA==","shasum":"32470a776cbf379ffcd8d48ee262029c3a8befa6","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.9.tgz","fileCount":14,"unpackedSize":4023060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctPgmCRA9TVsSAnZWagAAaVoP+QFpfdA42ENmc1XM3/FZ\nizTWDPC3qmzK6SOkSjbUTuWE/heYymufP6mTuGX129zRXH3e+ZVmpFKMGav8\nmP0PGaBAF2zy64PV0q8BVKNVoSTlY/flfPFqQ8Ia/43K3moE2Ht+Ey/IvdRb\nxjQoBpEnqW7OFOJ774DKpMwMpnN0UOb/+d/vYlQVjBfW7ZoAG0Ss0AaAhPyU\nViou3FcAgZRC4+PWb5dm55imsR04NPVP70BNQkx8u5B1s+pLBXAoWqKAtyQ+\nhrWImAb2oaQ0bBQvY3t06ZUZFHcpKGcKtBcz9a51cLibpl3OB/I/+xGi7rZQ\nTTj8vUr6si4ItgTb4/pXBHvMBOh2PvzbvPQ2wgNvjyrSs1bYI5R5D3hflUOp\nXTZYesmVgxMlRwGqCFPLqR/c2qL81FberSzI8KDasZIlHp3SVzCOieCBiTzc\nEGZUMsMXsyD6F4B7HrKXVHwrxPPFBwl8FRzEvparuXxOMy5twKJ5bS0TBrjr\nk4zVH8MjL6oghl0+FO5iHZpkWU06yPr4ZBBvu0aJrDijjDLrzQWuTW5S5BnU\n7PRIdC6slyAs+5ZkfX20Bazomn+KsAoFT3MUSeBVyaLNOw/EhgOAHJvCqI7R\nvYzTUOMlsUu8UiyWz8CfPWt0PJfNbQQDz9up4zpAYtZKkASvz+XB1lUuVSAw\nt4Q/\r\n=GDCW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDc1owhJ32QP9Ou55AyorDFdG9W41qJ9u/vehZ56g5rZwIgEyf9A4IK3kmwah44ZrM9RSh+GUi2fKkcbuyR6IBS/Pc="}]},"maintainers":[{"email":"aldigjo@gmail.com","name":"aldigjo"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.9_1555363877815_0.8386968196360831"},"_hasShrinkwrap":false},"1.1.10-dev.0":{"name":"uport-connect","version":"1.1.10-dev.0","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.8-dev.0","uport-lite":"^1.0.5","uport-transports":"^0.2.6"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.3","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n\n### Private Chain support\n\nWhile the primary uPort Credentials functionality does not tie you to any specific blockchain. You are able to request ethereum accounts for use with private ethereum compatible chains. You will need a network ID and a JSON-RPC endpoint accessible to both your browser app and the mobile client.\n\nTo configure it, pass in a network object for configuration.\n\n```javascript\nconst uport = new Connect('MyDAppName', {\n  network: {\n    id: '0xdeadbeef',\n    rpcUrl: 'https://mybankrpc.example.com/'\n  }\n})\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\nweb3.eth.getCoinbase((error, address) => { ... }) // request address for use on private chain\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"5e8b637fe731a1c541b8f71cd6848b912b5ca942","_id":"uport-connect@1.1.10-dev.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-f4NoWk7V7sTaGNH2BVwSLMdB5xr0TvBjLxuRxFrSDaJdcAHpuC218lRT9vO6FhWOvZigAZiVZqR7I+N8IuunDA==","shasum":"911e3db5ab311aa1191add06ee40970e7221e575","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.10-dev.0.tgz","fileCount":14,"unpackedSize":5029112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwOgBCRA9TVsSAnZWagAA8JAQAJ1YVTlCF+GpgD4x1xFJ\nhQ1ib0QHmL+dHXTEw2XTwSs1UG1TmajZ/Klr0v9OEDWo09o6lLqFEH9BhI0F\n37upqt425bohohPNQ7Z+Gl+qZycshln3qBoNoGGftJEE1iMu6ZWPCeCg3l52\ncsM8DzGq0MEvWcqIx5JVsXBi3U0SOHxnaxJGtw5+vlWgrR+4+b2FGuhG/w1v\n0T/KvrliByD0DKK5TCwjdHTQm12WXCCPXMGKr9W7/+vf7C0FFBcM+41VykCe\nrJ0YCNDWHBhfa6i2+BU/s0NKNCFKBDCtLTHVkKuKTq6H4VsiKdLNfT2Et6R5\nceZFejtFDJcmkHF9pTvu/cgavqYAreB51Anga4LABMpMMJJODHNPdfdjATU7\nTpBL2paCysKIctySGsJKqPSV9YjOe5QrvURah1XyXU0FaBZTAjACpS2x6l7R\nPDhUO/qOlR7nNLtaooc/lU9WcQvDRqkWLsexpQuA7ENFjoRZNlOyiirysuG8\nRMXQKcofQ4fwuy21fy/AWKifzQqe6rIGeSwU1j1nE6vRgxvlYqBPohhn8jBT\npgpQ5WhJ/HBkBvNKbUPf50pYa/LiI/uWuJUhsez2IEd0iSBq/+OELxdOziD8\n8u3F7Ce+N2+kDWIlNvRJU99mzBG5/Qz6hzGNZ8cygdcIJhodHqrOpdw+xxlj\n4J8d\r\n=VXtH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAHGbTive631mzf1ZbYcD3qHVno2aIef7Yg/nS1MFR23AiBJ7sXvEy1x9yiPUSIhrSzUUjhxSsQaogGxGOayXJMZqg=="}]},"maintainers":[{"email":"aldigjo@gmail.com","name":"aldigjo"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.10-dev.0_1556146176669_0.032073536506670886"},"_hasShrinkwrap":false},"1.1.10-dev.1":{"name":"uport-connect","version":"1.1.10-dev.1","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.8-dev.0","uport-lite":"^1.0.5","uport-transports":"^0.2.6"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.3","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n\n### Private Chain support\n\nWhile the primary uPort Credentials functionality does not tie you to any specific blockchain. You are able to request ethereum accounts for use with private ethereum compatible chains. You will need a network ID and a JSON-RPC endpoint accessible to both your browser app and the mobile client.\n\nTo configure it, pass in a network object for configuration.\n\n```javascript\nconst uport = new Connect('MyDAppName', {\n  network: {\n    id: '0xdeadbeef',\n    rpcUrl: 'https://mybankrpc.example.com/'\n  }\n})\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\nweb3.eth.getCoinbase((error, address) => { ... }) // request address for use on private chain\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"225f72adcd2e4aaae4b2cde2b120a4ab8b8fc34f","_id":"uport-connect@1.1.10-dev.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-bAwGTLt6H1eXve1heFkKeAqIDGfrxrNeSztclNO/oK74OWlkcvD0k1lDkEYLeJdJnd5bZ8mUSV2ubfdHiHU/RQ==","shasum":"e2620a3c8956d2ab4fd6f63e1a18c6078dd1b6e0","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.10-dev.1.tgz","fileCount":14,"unpackedSize":4105978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwOiVCRA9TVsSAnZWagAA6KIP/27hFBNwo65QF2xMj8X4\nG/b19JnWft/uA+dZ8LSpf061SSNijVKIPIWpX12hRH9SrOQ/kVcltM3jh1Ch\nNGrym9IWBxu1ealPpxYZieHaGVdQ7gHz7FO7etei5TpgfnfWyrLEHu8D8zV+\nGdN4HE1Mtve/HRt66ucChPOUdu2kewjyKmE7YHya0CIRwaSh9pNKpj/4jD08\nW34+00WLlS50I6hXVy9YnJhmh+xRZjHKl+cjfnVXLX5sRl+CDx386Q2hd0zo\n2Zk/BbQGBUJ22j7w4wOCO6wsF5ZcwuHGv5NfomW7vmROuISTL1G4lZWoE7q/\nI+BctDQkB7nz0Fvz8JRPDfRl+KIqrxAA0lhDiaL60HU0Psn7ySmwEhlEU0GV\ny808MbjAjh1u+lBFbdeur8YMfwIrxaAqfiLyXUUHGgPekzmJXr3wB16iJC65\nwrPrYWva862pIU102+vNbgHam7SURNtYN6tOs23cX+k+dQPVwks5wYLk1IpQ\nyJVzW1uIN8tO3b07b+XQlsbCck0bKx/hYrC5aFD3zrHVzmh4yK/FHwTWtaHO\nVMX4t/cyeA44dexENkHR3NxeydGRayCjNgnNfs53fcF1ZtBgl11sgRvouiwZ\nM577ETcUDqkJ45PW1omsLV2DEH3cl6ZOZucFks7UDQxccawye6Wd9uIZ/T5b\nbQKI\r\n=zG5+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBdWMUMxUob8TYZwLkr6ZODZmo/TpWXaRDwO0EQ3YBmxAiBrgGirrEc7A35Rs4Ir/PzY2t3zfwBFec7sEXyxMAW6DQ=="}]},"maintainers":[{"email":"aldigjo@gmail.com","name":"aldigjo"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.10-dev.1_1556146325216_0.9960392157166824"},"_hasShrinkwrap":false},"1.1.10-dev.2":{"name":"uport-connect","version":"1.1.10-dev.2","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.1.8-dev.1","uport-lite":"^1.0.5","uport-transports":"^0.2.6"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.3","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n\n### Private Chain support\n\nWhile the primary uPort Credentials functionality does not tie you to any specific blockchain. You are able to request ethereum accounts for use with private ethereum compatible chains. You will need a network ID and a JSON-RPC endpoint accessible to both your browser app and the mobile client.\n\nTo configure it, pass in a network object for configuration.\n\n```javascript\nconst uport = new Connect('MyDAppName', {\n  network: {\n    id: '0xdeadbeef',\n    rpcUrl: 'https://mybankrpc.example.com/'\n  }\n})\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\nweb3.eth.getCoinbase((error, address) => { ... }) // request address for use on private chain\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"83935f161708adc72e017779c2401a7f353c1224","_id":"uport-connect@1.1.10-dev.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-5PuFNOeQ67aObEy70iqwww1iOdNGq/5N5EAkBrA/pD94DvaapYCYfvIUyyvhB1JmWqbUhgty49Sp9462mgTArA==","shasum":"ea3fc43256db2cd0147cceb96ddbf1fb3fd45492","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.10-dev.2.tgz","fileCount":14,"unpackedSize":4247029,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwwKyCRA9TVsSAnZWagAAaw8P/jdUf9tboZRPDGlwgM7j\n2c88/70DkSMGTXtuCA5xwVisaGxrpUk3q1N0Tw1SV0lGPH9XbXgVQOyhmRxQ\nso62Z0SGdCSI5DqusFLP2ZhjIcOY35VsXyczK2yC1pMjl8WcK0G3pnQ/Fmj9\ntnd3OtxT1FopOl/tm4bx5O0mWtA5mehJ1NSLKMp//7Iya3cAZVsDksaHPRa0\nmDMIOjoQGeLNVT/7ZJY971fnR1q2/OgTaruaYh2eSt25wgNM+Qmk7x8Grs7Y\nt3JZZy6+Pyerx75z/xU/1/aFDIVAHAB3Noms5azS07bAIBQZaEg4WUPcrGAk\ncx+AjPrL/3KlO0eSojlE+YDwZcdhgNG7tMCrrAHNbvaaH9NZX2w/EzmMM1Ps\nUlrB/YyYR5nqzvSTO6TYcyqsKgX+wEhbRc7EgVgvGUSeDOcl7me7itMGA4f5\nU2HRL93RPQCGozG+AdLu1zeNxDrw8kU8hSWJCPXBeurl/94DUyx1aTa3W2ne\nvn5T/b0p/4P+wcmdvGOB5PllBQBLGSTMr+zmAd44jM35++hZR3rp5Jrv7lXK\nuNBJCx+By/1f/uQG+J5Oc7Ws2+YlwZ3VbWa9UIfqy9ic2KefKbeYNRqZ/NwT\nGF5Gm0DB/QkqAAKvJYmQFxboo/LSyBhx75zoIB1M5rkwy5+u06YCtTj+i/7o\nr7IU\r\n=HZtN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/dshHSGslU+LO9LaOAipVsMQI5CLDHodgC6bQMj0m4QIhAIhxLXChXqdHwxLsiK7q3DVseI3dOgjkXKYhLiY+pF9q"}]},"maintainers":[{"email":"aldigjo@gmail.com","name":"aldigjo"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.10-dev.2_1556284081308_0.050952488189619505"},"_hasShrinkwrap":false},"1.1.10":{"name":"uport-connect","version":"1.1.10","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.2.1","uport-lite":"^1.0.5","uport-transports":"^0.2.6"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.3","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"c83269181a649e7894d14c1c68e9ccc6b4571a3a","_id":"uport-connect@1.1.10","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-t2i75KPS8whAL9gpH5GwAbmN3sizov011yma3uL8QiKoicQMlPxt3B9Diz0Arbru+MiSt07E+YzFX2W3dHHLnw==","shasum":"85f84b50fdadea92737032bec3298725ad7b824a","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.10.tgz","fileCount":14,"unpackedSize":4244829,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcw36pCRA9TVsSAnZWagAAhPEP/jmnLKwhUfHcr19h6dLf\nX2Z3BMq8tktYmOJjiG6IffB3Nf4BXfehXNUx2kRcPEa3UxBOFaWtxUCDuRNE\nkReOeY6TLh343xdghRApUxbDvRSQQQZq0p1/ZjmGnt8jjb8v8GsGDx6Zm8Dk\nckR7U/nJelQR492y0h/ylP0a4bRFV21W1aCMxGhPWk1fnDN+oB1mb/1+UY6P\nH03sSIDuiMWh+0+IMrOAdF2QPbndkuBPJy6ux8H79yAgpOiD2CQPBL0LXxTz\njNWkw/d0+xgOiG1xnhY8Tu+yYVuQ+iF9Pv0j9Sr4uHOMlcxd5i55ukdPpscu\nEQez8plTISRtGcKYQQY0JwvzA9ysHI8mwlI1Tj4p8vdX/Sh11hdKVar20Bse\nvPLIHayMOhlapTzu5zi/P7lHnq4Ot7DBXWXXUDSVJkCFrl++J9VMpj/Dtnb5\n5fOClS3E334d/ReDCCv3g47FCq9LzEGfn4fXiytjMbytkppwpfEJb9oUnbzq\nFX0b+Kf22bUznJ+ivS+l5QOukfDzwUZ8xtIByFgqqVCHFlxufCzYHwC+xpyk\n6taJSXd3UiEpe3dFIA6i5w+JufKtRwM/Lj+GE/oiIfSG0kGyALkm/dG+PS9/\nbhkAvzFzL0ySADD/VUSyIrZ4qud6F/ZMNE+U3SQqQG5uD95QiMbaSFoVMFUa\nHF+n\r\n=jc60\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQ0n/Gf4KPzfyruGNWX5+dfmn0s+6wnx8ncL2X9xy2+AIgLe7sDQwWoMeEX9JJ3+1mMA/VQU257GZTNKvgT/SzrKk="}]},"maintainers":[{"email":"aldigjo@gmail.com","name":"aldigjo"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.10_1556315816607_0.1510343841011521"},"_hasShrinkwrap":false},"1.1.11":{"name":"uport-connect","version":"1.1.11","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.2.1","uport-lite":"^1.0.5","uport-transports":"^0.2.6"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.3","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"gitHead":"f6b669f0db6b9cd8be93a867a01bb956c2e973ab","_id":"uport-connect@1.1.11","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-z8fYHJ8wMRa4OQA/yQhu8la3WEUbgDHAhm9n5NS4ybUHivH0poLf/XOZQzijarlRzdkHZujVjbPKkh+q0QSbHw==","shasum":"5469ae849dcf066fb17bf96b5e9aa7f7b5290cca","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.11.tgz","fileCount":14,"unpackedSize":4245999,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcyea/CRA9TVsSAnZWagAA9QUQAIV0xvmGbgIsAXkPZRzf\nlQltU5tO041YSWe211oiqbHZbhepHPR0mkI312XfzenbDjAZwkKfEP5GJado\njz2Da6TXFD7tvsHjBdnqkvLunpKL7oIKepr4t4AZqSoLFMk+9rUzvDujGRco\nuB56ax9fm3wVhz5KyOeTAIBBveIFVBpR3YGYfGK8C5p12fiGc6JBwOggqG0q\nQGbsg5bDzvF/9aWO5bvYPBjAWN8e/zdmPZKtYSFDkUNvoSemWEjRpjWr7BmN\nRrxJh/NZeMKXCJli0nz2cCfEln5d70QcI9/RylSAwz6S64eHiyE2NE00WZtJ\nZZ8XCiXvrsn9YLqIp5wepXpjCiioCLxDkL9PrO6SqPUQR3TP+rh2v7v5o5Ds\nomYjygiZGWTmn8n5uH6VcfnMEqsjBatftGKnvNM+dOoOLEReqjXL+GpzI7KC\n9WPzFH6+ZQTl3QIaSEg9LGvrvG9xPSBeGMTCEejU0H4Crw6y1iiNzl3DEkGo\nrQvDwsqSrqi/zGJED7e5Uy8I1DSmngCei+/n9VGycjWixI3kozbY3DTnEqbC\nO0cwzwSHSNN0AXSl0o+zUsQq4VnSkaOgUR/WYMJRtAvnQL9jbvDAXwIPvpya\nhhAlHmKqEQyvfmcFD7Xw32igR/HvdLuchLml6AmIMgpke5bLmOjd3Kc23fr2\nj7+m\r\n=d/Tj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEZAzZC3a3fhkjMayGXjldBU5Y1u9GqxghcFhPNKCo3ZAiAyADp8NPgZmJu3H9pbBUj2JDHkHjnXZFPnsb99opK/8A=="}]},"maintainers":[{"email":"aldigjo@gmail.com","name":"aldigjo"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.11_1556735678508_0.4493784780196357"},"_hasShrinkwrap":false},"1.1.12-dev.0":{"name":"uport-connect","version":"1.1.12-dev.0","description":"Library for integrating uPort into your app frontend","main":"lib/index.js","scripts":{"build":"yarn build:es5 && yarn build:dist && yarn build:dist:prod","build:npm":"npm run build:es5 && npm run build:dist && npm run build:dist:prod","build:es5":"babel src -d lib","build:dist":"webpack --config webpack.config.js --mode=development","build:dist:prod":"webpack --config webpack.config.js --mode=production --output-filename uport-connect.min.js","clean":"rm -r dist lib","docs":"npm run docs:html && npm run docs:md","docs:html":"jsdoc src/* README.md -d docs","docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* > DOCS.md","test":"npm run lint; npm run karma","karma":"karma start test/karma.conf.js --single-run --browsers Chrome","karma:watch":"karma start test/karma.conf.js --browsers Chrome","karma:package":"cd package-test && ./setup && cd .. && ./node_modules/.bin/karma start package-test/karma.conf.js --single-run --browsers Chrome && cd package-test && ./clean","lint":"standard --verbose --fix src | ./node_modules/.bin/snazzy","watch":"webpack --config webpack.config.js -w","autotest":"supervisor -q -n exit -x ./node_modules/.bin/mocha -- --reporter spec","prepublish":"npm run build:es5","post-release":"node prwrapper","semantic-release":"semantic-release pre && npm publish && semantic-release post && npm run post-release","build:docs:html":"jsdoc src/* README.md -d docs","build:docs:md":"./node_modules/jsdoc-to-markdown/bin/cli.js src/* --template template.hbs -c js2doc.conf > docs/reference/index.md; echo","build:docs":"npm run build:docs:html && npm run build:docs:md","commitmsg":"validate-commit-msg","testrpc":"testrpc"},"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"license":"Apache-2.0","contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"homepage":"https://github.com/uport-project/uport-connect#readme","standard":{"ignore":["dist/**"],"globals":["describe","it","before","after","should"]},"dependencies":{"ethjs-abi":"^0.2.1","ethjs-provider-http":"^0.1.6","mnid":"^0.1.1","mobile-detect":"^1.3.5","pubsub-js":"^1.6.0","qs":"^6.2.1","store":"^2.0.12","uport-credentials":"^1.2.1","uport-lite":"^1.0.5","uport-transports":"^0.2.7-dev.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-core":"^6.26.3","babel-eslint":"^7.1.1","babel-loader":"^7.1.4","babel-plugin-external-helpers":"^6.18.0","babel-plugin-istanbul":"^4.1.6","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-modules-umd":"^6.18.0","babel-plugin-transform-es2015-template-literals":"^6.8.0","babel-plugin-transform-es3-member-expression-literals":"^6.8.0","babel-plugin-transform-es3-property-literals":"^6.8.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.18.0","bignumber.js":"^7.0.1","chai":"^3.5.0","codecov":"^1.0.1","condition-circle":"^1.5.0","cz-conventional-changelog":"^1.2.0","did-jwt":"^0.1.3","eslint":"^3.2.2","ethjs-signer":"^0.1.1","exports-loader":"^0.7.0","ganache-cli":"^6.1.0","imports-loader":"^0.8.0","inject-loader":"^4.0.1","ipfs-mini":"^1.1.2","istanbul":"^0.4.5","istanbul-instrumenter-loader":"0.2.0","jsdoc":"^3.4.3","jsdoc-to-markdown":"^1.3.7","json-loader":"^0.5.4","karma":"^2.0.3","karma-chai":"^0.1.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-phantomjs-launcher":"^1.0.2","karma-safari-launcher":"^1.0.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","mocha":"^5.2.0","phantomjs-polyfill-object-assign":"^0.0.2","phantomjs-prebuilt":"^2.1.14","publish-release":"^1.3.2","reify":"^0.3.8","semantic-release":"^4.3.5","sinon":"git+https://github.com/sinonjs/sinon.git#afdf4255e97e8a8738da19ddfafd18efc09c917a","sinon-chai":"^3.0.0","snazzy":"^7.1.1","standard":"^11.0.1","supervisor":"^0.12.0","web3":"^0.20.6","webpack":"^4.8.3","webpack-cli":"^2.1.3"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":["feat","fix","docs","style","refactor","perf","test","chore","revert","ci","build"]}},"release":{"verifyConditions":"condition-circle"},"readme":"[![CircleCI](https://img.shields.io/circleci/project/github/uport-project/uport-connect.svg)](https://circleci.com/gh/uport-project/uport-connect)\n[![Join the chat at](https://img.shields.io/badge/Riot-Join%20chat-green.svg)](https://chat.uport.me/#/login)\n[![npm](https://img.shields.io/npm/dt/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![npm](https://img.shields.io/npm/v/uport-connect.svg)](https://www.npmjs.com/package/uport-connect)\n[![Codecov](https://img.shields.io/codecov/c/github/uport-project/uport-connect.svg)](https://codecov.io/gh/uport-project/uport-connect)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)\n[![Twitter Follow](https://img.shields.io/twitter/follow/uport_me.svg?style=social&label=Follow)](https://twitter.com/uport_me)\n\n[Quick Start](#quick-start) | [Tutorial and Examples](#tutorials) | [Usage Guide](#usage-guide) | [Development Guide](#development-guide) | [Contributing](#contribute)\n\n**Required Upgrade v1.0.0 or ^0.7.5**\n\n**^0.7.5 to support new both new uPort Mobile Clients and legacy uPort Mobile Clients - [View Details](https://github.com/uport-project/uport-connect/releases/tag/v0.7.5)**\n\n**v1.0.0 to support only new uPort Mobile Clients and to use new features and fixes**\n\n:bangbang: :warning: **v1.0.0** is released at the npm next tag at **uport-connect@next**. Only the newest uPort Mobile Client release will work with **v1.0.0**. It will become the default release once the newest uPort Mobile Client release is widely adopted (~ 2 weeks). Reference master branch for docs and info on current default release **v0.7.5**. Documentation for **v1.0.0** can only be found here and in the docs folder. The [developer site](https://developer.uport.me) will not contain **v1.0.0** documentation until it is the default release :warning: :bangbang:\n\n# <a name=\"introduction\"></a> Introduction\n\n**uPort** is a collection of tools and protocols for building decentralized user-centric applications. It is built on open standards and open source libraries. uPort identities can be created and interacted with through uPort clients, including the uPort mobile app. Identities are fully owned and controlled by the creator, and don't rely on centralized third-parties for creation, control or validation.\n\n`uport-connect` is the client side library that allows you interact with a user's uPort identity through a uPort client, primarily the mobile app. It handles the communication channel between your app and a uPort client, which can vary depending on the environment which your application runs. Over this communication channel you can send requests for a user's data, share credentials, generate transactions to be signed by a user and relay requests you originally created on your server with [uport-credentials](https://github.com/uport-project/uport-credentials). This library offers the default quick start implementation to integrate with uPort, but if it doesn't offer exactly what you need, you may be interested in using [uport-tranports](https://github.com/uport-project/uport-transports) and [uport-credentials](https://github.com/uport-project/uport-credentials) instead.\n\nFor more information about our system and other products visit [uport.me](https://www.uport.me). View our [protocol specs](https://github.com/uport-project/specs/) if interested in understanding the lower level details.\n\nFor any questions or library support reach out to the [uPort team on riot](https://chat.uport.me/#/login) or create a [Github issue](https://github.com/uport-project/uport-connect/issues).\n\n---------------------------------------------\n\n## <a name=\"getting-started\"></a>Getting started with uPort\n\nFor additional documentation on all functionality [visit our docs](https://github.com/uport-project/uport-connect/blob/develop/docs/reference/index.md). For a more interactive intro visit [developer.uport.me](https://developer.uport.me/gettingstarted). For a quick start continue below.\n\n### <a name=\"quick-start\"></a> Quick Start\n\n```shell\nnpm install uport-connect\n```\n\nFirst we will instantiate the uPort object, by default it is configured on the Rinkeby test network, reference the docs for additional config arguments which can be passed.\n\n```javascript\nimport { Connect } from 'uport-connect'\nconst uport = new Connect('MyDAppName')\n// or on mainnet\n// const uport = new Connect('MyDAppName', {network: 'mainnet'})\n```\n\nTo request the DID and address of user use `requestDisclosure()`:\n\n```javascript\nuport.requestDisclosure()\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  ...\n})\n```\n\nOr to request addtional credentials, along with the DID.\n\n```javascript\nconst reqObj = { requested: ['name', 'country'],\n                  notifications: true }\n\nuport.requestDisclosure(reqObj)\n\nuport.onResponse('disclosureReq').then(res => {\n  const did = res.payload.did\n  const verified = res.payload.verified // An array of shared verified credentials, matching requested\n  ...\n})\n```\n\nuPort Connect will save session data and data from prior requests to localStorage and will load it on instantiation. You can check if it is available before creating a selective disclosure request again.\n\n```javascript\nif (uport.did) {\n  // Already connected, reference docs to see data which will be available\n} else {\n  // Create a request if necessary\n}\n```\n\nTo send a request message (JWT) you created on your server or elsewhere use `send()`:\n\n```javascript\nconst reqID = 'myRequestID'\nconst request = `eyJ0eXAiOiJKV1QiLCJhbG...`\nuport.send(request, reqID)\nuport.onResponse(reqID).then(payload => {\n  // Response is available now, handle as necessary to your implementation\n  // If the response was returned your server, you may poll for it now\n})\n```\n\nTo request a user to sign a claim\n\n```javascript\nconst unsignedClaim = {\n    \"Citizen of city X\": {\n      \"Allowed to vote\": true,\n      \"Document\": \"QmZZBBKPS2NWc6PMZbUk9zUHCo1SHKzQPPX4ndfwaYzmPW\"\n    }\n}\n\nconst sub =\"did:ethr:0x413daa771a2fc9c5ae5a66abd144881ef2498c54\"\n\nuport.requestVerificationSignature(unsignedClaim, sub)\n\nuport.onResponse('verSigReq').then(res => {\n  const signedClaim = res.payload\n})\n```\n\nTo create a transaction request use `contract()` or `sendTransaction()`:\n\n```javascript\nconst abi = [{\"constant\": false,\"inputs\": [{\"name\": \"status\",\"type\": \"string\"}],\"name\": \"updateStatus\",\"outputs\": [],\"type\": \"function\"}]\nconst contractAddress = '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc'\nconst statusContract = uport.contract(abi).at(contractAddress)\n\nstatusContract.updateStatus('hello', 'updateStatusReq')\nuport.onResponse('updateStatusReq').then(payload => {\n  const txId = payload.res\n})\n```\n\n```javascript\nconst txObj = {\n  address: '0x71845bbfe5ddfdb919e780febfff5eda62a30fdc',\n  value: 1 * 1.0e18\n}\nuport.sendTransaction(txObj, 'ethSendReq')\nuport.onResponse('ethSendReq').then(res => {\n  const txId = res.payload\n})\n```\n### <a name=\"quick-start\"></a> Quick Start with Provider (web3)\n\nGet provider and instantiate web3 or other provider supported library.\n\n```javascript\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\n```\n\nTo request the address of user:\n\n```javascript\nweb3.eth.getCoinbase((error, address) => { ... })\n```\n\nTo call contract:\n```javascript\nconst statusContract = web3.eth.contract(abi).at(contractAddress)\nstatusContract.updateStatus('hello', (error, txHash) => { ... })\n```\n\nTo send transaction:\n```javascript\nweb3.eth.sendTransaction(txObj, (error, txHash) => {...})\n```\n\n### Private Chain support\n\nWhile the primary uPort Credentials functionality does not tie you to any specific blockchain. You are able to request ethereum accounts for use with private ethereum compatible chains. You will need a network ID and a JSON-RPC endpoint accessible to both your browser app and the mobile client.\n\nTo configure it, pass in a network object for configuration.\n\n```javascript\nconst uport = new Connect('MyDAppName', {\n  network: {\n    id: '0xdeadbeef',\n    rpcUrl: 'https://mybankrpc.example.com/'\n  }\n})\nconst provider = uport.getProvider()\nconst web3 = new Web3(provider)\nweb3.eth.getCoinbase((error, address) => { ... }) // request address for use on private chain\n```\n\n### <a name=\"browser-quick-start\"></a> Browser Window Quick Start\n\nFor use directly in the browser you can reference the uport-connect distribution files from a number of places. They can be found in our npm package in the 'dist' folder or you can build them locally from this repo.\n\nFor a quick setup you may also request a remote copy from [unpkg CDN](https://unpkg.com/) as follows:\n\n```html\n<!-- The most recent version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.js\"></script>\n<!-- The most recent minified version  -->\n<script src=\"https://unpkg.com/uport-connect/dist/uport-connect.min.js\"></script>\n<!-- You can also fetch specific versions by specifying the version, files names may differ for past versions -->\n<script src=\"https://unpkg.com/uport-connect@<version>/dist/uport-connect.js\"></script>\n```\nTo see all available dist files on unpkg, vist [unpkg.com/uport-connect/dist/](https://unpkg.com/uport-connect/dist/)\n\nThen to instantiate the uPort object from the browser window object:\n\n```js\nconst Connect = window.uportconnect\nconst uport = new Connect('MyDApp')\n```\n\n### <a name=\"tutorials\"></a> Tutorials and Developer Site\n\nFor a more in depth guide, check out our [developer site](https://developer.uport.me/uport-connect/guides/usage) or clone this repository and check out the sample apps in the `/examples` folder.\n\n---------------------------------------------\n\n## <a name=\"development-guide\"></a> Development Guide\n\n#### Run Locally\n\nDownload this repo or your fork, then run `npm install`.\n\n#### <a name=\"build\"></a> Builds\n\nAll builds are created from files in `/src`\n\nTo transpile to ES5. All files are output to `/lib`. The entry of our npm package is `/lib/Connect.js`\n\n```shell\n$ npm run build:es5\n```\n\nTo generate a bundle/distributable. We use webpack for our builds. The output dist is `/dist/uport-connect.js` and source map `/dist/uport-connect.map.js`\n\n```shell\n$ npm run build:dist\n```\n\nTo generate a production bundle/distributable. Includes build optimizations related to size and code is minified. The output dist is `/dist/uport-connect.min.js` and source map `/dist/uport-connect.min.map.js`\n\n```shell\n$ npm run build:dist:prod\n```\n\n#### <a name=\"test\"></a> Tests\n\nWe write our tests using [mocha](http://mochajs.org) and run them with [karma](https://karma-runner.github.io/1.0/index.html).\n\nTo run our tests:\n\n```shell\n$ npm test\n```\n\n#### <a name=\"coverage\"></a> Code Coverage\n\nCode coverage reports are generated when tests are run and can be viewed in browser. Reports are also published on [CodeCov](https://codecov.io/gh/uport-project/uport-connect) when pushed to github.\n\n```shell\n$ npm test\n$ open test/coverage/html/index.html\n```\n\n#### <a name=\"lint\"></a> Linting\n\nRun our linter, we follow [JavaScript Standard Style](http://standardjs.com/).\n\n```shell\n$ npm run lint\n```\n#### <a name=\"docs\"></a> Documentation\n\nWe write inline documentation using [JSDoc](http://usejsdoc.org). To generate docs:\n\n```shell\n$ npm run build:docs:html\n$ open docs/index.html\n```\n```shell\n$ npm run build:docs:md // to generate a markdown file in /docs folder\n```\n\n#### <a name=\"scripts\"></a> Scripts\n\nAdditional scripts can be found in `package.json -> scripts: { }`.\n\n\n#### <a name=\"versioning\"></a> Versioning\n\nWe follow MAJOR.MINOR.PATCH [Semantic Versioning](http://semver.org)\n\n\n#### <a name=\"npm-install\"></a> NPM Install Develop branch\n\nYou can npm install the develop branch of uport-connect using the follow commands.\n\n```shell\n$ npm install \"git://github.com/uport-project/uport-connect.git#develop\" --save\n$ (cd node_modules/uport-connect && npm install babel-cli && npm run prepublish)\n```\n\n### <a name=\"frontend\"></a> Frontend Library Specific Fixes\nEach Frontend Library React, Angular, Vue, etc... can sometimes require specific configuration settings. To prevent developers from solving the same problems twice we're going document Library specific issues on a case-by-case basis.\n\n#### <a name=\"angular\"></a> Angular\nWhen adding the `uport-connect.js` library to an Angular project please install the `crypto-browserify` module as a project dependency and create a path alias pointing `crypto` to the `crypto-browserify` module.\n\nThis will fix a `crypto.createHash()` undefined error.\n\n```\n\"paths\": {\n  \"crypto\": [\"../node_modules/crypto-browserify/index.js\"]\n}\n```\n\n#### <a name=\"frontend-other\"></a> Other Frontend Libraries\nAre you experiencing other Frontend Library specific issues?\n\nLet us know in <a href=\"https://github.com/uport-project/uport-connect/issues\"> the issues</a>.\n\n\n## <a name=\"contribute\"></a> Contributing\n\nCode, test and documentation contributions are welcomed and encouraged. Please read the guidelines below and reach out on our [riot](https://chat.uport.me/#/login) or create an [issue](https://github.com/uport-project/uport-connect/issues) if any contribution is more than trivial. We can help you see where/if it fits into our roadmap and if we are likely to accept. We are also looking to add references to projects using `uport-connect` with example implementations and use cases.\n\n#### <a name=\"bugs\"></a> Reporting Bugs\n\nWell formed bug reports are hugely valuable to the project and allow us quickly evaluate and fix a bug. Poorly formed bug reports leave use searching for more details and even worse may leave us trying to resolve bugs not related to the code here. Primarily be thoughtful when submitting bugs and leave enough details to minimize the paths we have to take when finding a resolution. Report bugs by creating an [issue](https://github.com/uport-project/uport-connect/issues).\n\nSome guidelines for reporting bugs:\n\n- Make sure that your issue is caused by uport-connect and not your application code.\n- Create a simple and minimal test case that demonstrates the bug.\n- Search the issues to see if the bug has already been reported. If it has, add any additional details in the comments.\n- Write a descriptive and specific title.\n- Include browser, OS, uport-connect version and any other details specific to the environment.\n- Check whether the bug can be reproduced in other environments (ie. other browsers).\n\n#### <a name=\"code\"></a> Contributing code\n\nOur `master` branch reflects our most recent release, while we accept pull requests from topic branches into our `develop` branch. To submit code for a feature, bug or documentation, [fork this repo](https://help.github.com/articles/fork-a-repo/) and add all related commits to a topic branch (feature/your-title, fix/your-title, doc/your-title, etc). Once ready for review, open a pull request to merge into `develop`.\n\nAll commits are required to be well formed. We follow the [AngularJS Commit Message Conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit). We use these commit messages to create a useful history, generate CHANGELOGS and to determine release versions.\n\nBefore submitting your changes run `npm run lint` to find any formatting issues that don't adhere to the original codebase. Run `npm run karma` to be sure all tests pass. When submitting a bug fix try to add additional tests to cover that bug or similar bugs in the future. If a bug was specific to an environment consider adding a environment specific note in the docs. When submitting code for a new feature or functionality add the relevant documentation and test coverage as well.\n","readmeFilename":"README.md","gitHead":"4be94703cbfbe9b707960d25252146557735931c","_id":"uport-connect@1.1.12-dev.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"mike.xu","email":"mike.xu@consensys.net"},"dist":{"integrity":"sha512-DG6twSDfq8oYVdeAarUyWabbLSnyzbLzLmH1wVPLKlbUvBSTboxgceKbmn6Ij07Xs1RJzXB7YCbPFkx8ZraYcA==","shasum":"59bae0e89cf9996b9e596fa65d2837edb5643bcb","tarball":"https://registry.npmjs.org/uport-connect/-/uport-connect-1.1.12-dev.0.tgz","fileCount":14,"unpackedSize":4863060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc00FrCRA9TVsSAnZWagAAM40P/AlntmzGA6y0kokI5UgU\nqHdoLtIvUrHTEcKJIPLvpgYTfrxAPUj1/XAa4RWp1UMRDdOudusse14KsuP+\nTDdB6xNo6YYvgOGfKTHjY/wJ2p+5nzGkL0BXFeHTvWmUWMw1bLs4bgCUD7Ye\nzahZ62dW38w464X6vQG/XZS4yLaSxidsFFUSQUvuKmYEJp+5QYaW+2Aw2h12\ns7rvgj0n3nIFEHVDWOmcf/dNYFD31NH+NYrkBrFr2V8HFurgHyetZh5wL5E8\nKUXRUxTupFYvdc8D6l7EwuJwEN3RThQVgdMGiQpfssMdn1k5tLPCEKbv5UPq\neMWROy3rVcUQ8oNrM9W/EyuPfcdrzPTE5ySuycshWFB76qfAeucr2l8NSv3t\nZWFGFTSTOeruWiGEtHg9ATT/L+pkaQK59XZPpMoXc7H7hcn7mT21Y1QJPTP+\nsMwAkrL1nWg3ZeFQJ0TU87HsSbq6ypBjBlptxZ0tmOZawxPrRa2tQLMLE89q\nKxcnDoqQjiK7t2+fxVpRu62klIT01oK4jPTopQFSSRH23dnx8gucuImoSwU8\n4T7+Z4THod3KpIwZdkkdYGuTKS+sDDQ5AS7a7ZaO09TYJvd1ZLwOdjC4bPbX\nlzi8DoaXYjxxDxPaTgkZF5SPyQBnZQG9HBr25uqh8YqPfUkhTCSrJGxmfOIH\nZQ/d\r\n=VXmh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBI6XFGgrkGnN/+zpGnWkEbd+HL35/a6jLPwvn2AW+5aAiAMX1iD9XXcJNf6j/UoU1xWuvvUG1XVfd6YXU6JEL8v8g=="}]},"maintainers":[{"email":"aldigjo@gmail.com","name":"aldigjo"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"mike.xu@consensys.net","name":"mike.xu"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"simonas@not.cat","name":"simonas-notcat"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uport-connect_1.1.12-dev.0_1557348714602_0.8984090869047541"},"_hasShrinkwrap":false}},"readme":"","maintainers":[{"email":"simonas@not.cat","name":"simonas-notcat"},{"email":"mirceanis@gmail.com","name":"mirceanis"},{"email":"devops@uport.me","name":"uport-automation-bot"},{"email":"pelleb@gmail.com","name":"pelleb"},{"email":"levi.strope@gmail.com","name":"localredhead"},{"email":"rob.whitaker.18@gmail.com","name":"rmw2"},{"email":"mike.xu@consensys.net","name":"mike.xu"}],"time":{"modified":"2022-07-07T12:05:48.394Z","created":"2017-02-03T16:09:08.946Z","0.1.0":"2017-02-03T16:09:08.946Z","0.2.0":"2017-02-04T18:04:32.090Z","0.3.0":"2017-02-05T23:44:00.131Z","0.3.1":"2017-02-06T18:18:51.280Z","0.3.2":"2017-02-07T02:19:12.454Z","0.4.0":"2017-02-09T03:29:47.032Z","0.4.1":"2017-02-09T17:47:24.738Z","0.4.2":"2017-02-11T21:17:06.497Z","0.4.3":"2017-02-15T02:39:15.533Z","0.4.4":"2017-02-15T04:13:51.737Z","0.4.5":"2017-02-16T00:54:55.769Z","0.5.0":"2017-02-24T21:24:37.205Z","0.5.1":"2017-02-26T17:15:27.993Z","0.5.2":"2017-02-27T16:37:29.594Z","0.5.3":"2017-03-08T17:18:42.689Z","0.5.4":"2017-03-30T15:08:13.216Z","0.5.5":"2017-03-31T18:23:04.419Z","0.6.0-alpha-1":"2017-04-06T03:03:47.151Z","0.5.6":"2017-04-11T15:33:10.399Z","0.6.0-alpha-2":"2017-04-11T15:45:08.587Z","0.6.0":"2017-04-21T19:15:35.489Z","0.6.1":"2017-06-04T18:00:22.145Z","0.6.2":"2017-06-06T16:34:58.327Z","0.6.3":"2017-06-27T18:13:34.922Z","0.6.4":"2017-07-07T19:45:07.237Z","0.6.5":"2017-08-25T21:02:18.265Z","0.6.6":"2017-09-15T02:26:25.016Z","0.6.7-alpha-1":"2017-10-03T16:10:59.963Z","0.6.7-alpha-2":"2017-10-04T15:36:04.071Z","0.6.7-alpha-3":"2017-10-09T10:48:26.818Z","0.6.7-alpha-4":"2017-10-12T13:28:35.409Z","0.7.0-alpha-1":"2017-10-23T18:21:26.458Z","0.7.0":"2017-10-30T19:15:45.008Z","0.7.1":"2018-02-27T14:33:57.783Z","0.7.2":"2018-04-18T21:07:14.643Z","0.7.3":"2018-04-26T14:00:30.862Z","0.8.0":"2018-05-06T23:41:54.858Z","0.8.1":"2018-05-08T19:34:23.474Z","0.8.2":"2018-05-08T19:38:34.609Z","0.8.3":"2018-05-08T19:47:33.952Z","0.8.4":"2018-05-09T22:59:52.115Z","0.8.5-alpha-5":"2018-06-05T15:27:36.295Z","0.8.6-alpha-6":"2018-06-05T18:21:19.637Z","0.8.7-alpha-7":"2018-06-08T13:34:10.534Z","0.8.8-alpha-8":"2018-06-11T20:21:21.693Z","0.8.9-alpha-9":"2018-06-12T14:09:34.687Z","0.8.10-alpha-10":"2018-06-12T14:11:42.876Z","0.8.11-alpha-11":"2018-06-12T14:20:14.427Z","0.8.12-alpha-12":"2018-06-12T14:49:49.805Z","0.8.13-alpha-13":"2018-06-12T18:47:36.711Z","0.8.14-alpha-14":"2018-06-12T19:26:11.673Z","0.7.4-alpha-minor-1":"2018-06-22T14:28:29.320Z","0.7.4-alpha-minor-2":"2018-06-22T20:40:42.277Z","0.7.4-alpha-minor-3":"2018-06-28T18:44:55.937Z","0.7.4-alpha-minor-4":"2018-07-13T16:43:29.978Z","0.8.14-alpha-16":"2018-07-17T03:13:06.776Z","0.8.14-alpha-17":"2018-07-17T12:07:18.699Z","0.7.4-alpha-minor-5":"2018-07-20T13:34:12.628Z","0.7.4-alpha-minor-6":"2018-07-24T20:21:30.798Z","0.8.14-alpha-18":"2018-07-25T19:15:19.013Z","0.8.14-alpha-19":"2018-07-25T20:46:36.436Z","0.7.4-alpha-minor-7":"2018-07-26T12:50:01.303Z","0.7.4":"2018-07-26T21:22:29.225Z","0.7.5":"2018-07-26T21:35:24.212Z","0.8.14-alpha-20":"2018-07-27T20:21:38.078Z","0.8.14-alpha-21":"2018-07-30T15:27:28.745Z","0.8.14-alpha-22":"2018-07-30T17:20:41.846Z","0.8.14-alpha-23":"2018-07-30T23:28:04.604Z","0.8.14-alpha-24":"2018-07-31T12:55:22.568Z","0.8.14-alpha-25":"2018-07-31T17:09:31.941Z","0.8.14-alpha-26":"2018-07-31T17:55:25.515Z","0.8.14-alpha-27":"2018-08-02T13:57:34.297Z","0.8.14-alpha-28":"2018-08-02T16:59:12.017Z","0.8.14-alpha-29":"2018-08-03T19:58:49.013Z","0.8.14-alpha-30":"2018-08-06T17:57:44.055Z","0.8.14-alpha-31":"2018-08-06T18:47:39.970Z","0.8.14-alpha-32":"2018-08-06T19:04:05.534Z","0.8.14-alpha-33":"2018-08-07T19:44:07.409Z","0.8.14-alpha-34":"2018-08-09T16:39:13.965Z","0.8.14-alpha-35":"2018-08-09T18:41:30.314Z","0.8.14-alpha-36":"2018-08-10T00:05:41.711Z","0.8.14-alpha-37":"2018-08-13T16:38:17.258Z","0.8.14-alpha-38":"2018-08-13T20:02:59.888Z","0.8.14-alpha-39":"2018-08-14T18:14:52.880Z","0.8.14-alpha-40":"2018-08-14T19:24:12.153Z","0.8.14-alpha-41":"2018-08-15T17:31:39.232Z","0.8.14-alpha-42":"2018-08-15T17:37:49.193Z","0.8.14-alpha-43":"2018-08-15T17:54:08.989Z","0.8.14-alpha-44":"2018-08-15T18:46:23.609Z","0.8.14-alpha-45":"2018-08-15T19:15:48.730Z","0.8.14-alpha-46":"2018-08-15T19:28:42.629Z","0.8.14-alpha-47":"2018-08-15T19:39:58.924Z","0.8.14-alpha-48":"2018-08-15T19:50:40.767Z","0.8.14-alpha-49":"2018-08-16T14:20:53.005Z","0.8.14-alpha-50":"2018-08-16T16:41:45.191Z","0.8.14-alpha-51":"2018-08-16T19:28:35.877Z","0.8.14-alpha-52":"2018-08-16T19:44:24.388Z","0.8.14-alpha-53":"2018-08-17T17:53:38.598Z","0.8.14-alpha-55":"2018-08-22T21:38:57.491Z","1.0.0-alpha-1":"2018-08-22T22:01:39.911Z","0.7.6":"2018-08-23T01:24:59.635Z","1.0.0-alpha-2":"2018-09-12T13:49:57.397Z","1.0.0-alpha-3":"2018-09-13T01:38:40.510Z","1.0.0-alpha-4":"2018-09-21T18:34:55.268Z","0.7.7":"2018-09-25T00:17:19.746Z","0.7.8":"2018-09-25T14:55:55.746Z","1.0.0-alpha-5":"2018-09-29T00:24:08.326Z","1.1.0-alpha-1":"2018-10-10T16:04:08.349Z","1.1.0-alpha-2":"2018-10-10T19:22:26.774Z","1.1.0-alpha-3":"2018-10-10T19:54:49.876Z","1.0.0-alpha-6":"2018-10-11T12:36:56.507Z","1.1.0-alpha.4":"2018-10-12T12:48:55.711Z","1.1.0-alpha.5":"2018-10-12T17:36:38.180Z","1.0.0-beta.1":"2018-10-18T14:50:59.217Z","1.0.0":"2018-10-18T21:33:46.425Z","1.1.0-alpha.6":"2018-10-22T16:45:32.412Z","1.1.0-alpha.7":"2018-10-22T22:55:10.549Z","1.1.0-alpha.8":"2018-10-24T19:54:50.054Z","1.1.0-alpha.9":"2018-10-25T17:41:09.700Z","1.1.0-alpha.10":"2018-10-25T20:45:57.248Z","1.1.0-alpha.11":"2018-10-25T23:08:05.602Z","1.1.0-alpha.12":"2018-10-26T15:19:50.288Z","1.0.1":"2018-11-05T13:17:30.682Z","1.1.0-alpha.13":"2018-11-14T17:27:24.091Z","1.0.2":"2018-11-20T13:39:14.318Z","1.0.3-rc.0":"2018-12-03T22:07:52.060Z","1.1.0-rc.0":"2018-12-10T14:52:30.077Z","1.1.0-rc.1":"2018-12-10T16:37:55.142Z","1.1.0-rc.2":"2018-12-10T19:18:51.353Z","1.1.0-rc.3":"2018-12-10T19:28:37.875Z","1.1.0-rc.4":"2018-12-12T14:57:20.176Z","1.1.0-rc.5":"2018-12-12T18:51:51.585Z","1.1.0":"2018-12-18T02:11:44.372Z","1.1.1":"2018-12-18T02:25:58.345Z","1.2.0-experimental1":"2019-01-21T20:57:41.029Z","1.2.0-experimental2":"2019-01-21T22:03:27.575Z","1.1.2":"2019-01-31T19:24:21.074Z","1.1.3":"2019-02-07T20:29:08.568Z","1.1.4":"2019-02-15T19:29:41.351Z","1.1.5":"2019-03-18T07:00:29.523Z","1.1.6":"2019-04-02T15:47:19.460Z","1.1.7":"2019-04-10T19:11:15.573Z","1.1.8":"2019-04-12T15:19:26.742Z","1.1.9":"2019-04-15T21:31:18.031Z","1.1.10-dev.0":"2019-04-24T22:49:36.913Z","1.1.10-dev.1":"2019-04-24T22:52:05.466Z","1.1.10-dev.2":"2019-04-26T13:08:01.486Z","1.1.10":"2019-04-26T21:56:56.822Z","1.1.11":"2019-05-01T18:34:38.850Z","1.1.12-dev.0":"2019-05-08T20:51:54.966Z"},"homepage":"https://github.com/uport-project/uport-connect#readme","keywords":["uport","identity","self-sovereign","ethereum","bitcoin","consensys","web3","ipfs","persona"],"repository":{"type":"git","url":"git+https://github.com/uport-project/uport-connect.git"},"contributors":[{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},{"name":"Jeff Scott Ward","email":"jeffscottward@consensys.net","url":"https://consensys.net/"},{"name":"Joel Torstensson","email":"joel.torstensson@consensys.net","url":"https://consensys.net/"},{"name":"Zach Ferland","email":"zach.ferland@consensys.net","url":"https://consensys.net/"},{"name":"Pelle Braendgaard","email":"pelle.braendgaard@consensys.net","url":"https://consensys.net/"},{"name":"Levi Strope","email":"levi.strope@consensys.net","url":"https://consensys.net"}],"author":{"name":"Christian Lundkvist","email":"christian.lundkvist@consensys.net","url":"https://consensys.net/"},"bugs":{"url":"https://github.com/uport-project/uport-connect/issues"},"license":"Apache-2.0","readmeFilename":""}