{"_id":"reselect-tools","_rev":"10-a6cd9966a770cdc8dd3114bab0f65de4","name":"reselect-tools","description":"Selector Debugging Tools for Reselect.","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.1":{"name":"reselect-tools","version":"0.0.1","description":"Selector Debugging Tools for Reselect.","main":"lib/index.js","jsnext:main":"es/index.js","files":["lib","src","dist","es"],"bugs":{"url":"https://github.com/TODO"},"scripts":{"compile:commonjs":"better-npm-run compile:commonjs","compile:umdmin":"uglifyjs dist/reselect-tools.js -mt -o dist/reselect-tools.min.js","compile:umd":"better-npm-run compile:umd","compile:es":"babel -d es/ src/","compile":"npm run compile:commonjs && npm run compile:umd && npm run compile:umdmin && npm run compile:es","lint":"eslint --fix src test","prepublish":"npm run compile","test":"better-npm-run test","test:cov":"better-npm-run test:cov"},"betterScripts":{"test":{"command":"mocha --compilers js:babel-register --ui tdd --recursive","env":{"NODE_ENV":"test"}},"test:cov":{"command":"nyc --reporter=lcov --reporter=text mocha --compilers js:babel-register --ui tdd","env":{"NODE_ENV":"test","COVERAGE":"true"}},"compile:commonjs":{"command":"babel -d lib/ src/","env":{"NODE_ENV":"commonjs"}},"compile:umd":{"command":"mkdirp dist/ && babel -o dist/reselect-tools.js src/","env":{"NODE_ENV":"umd"}}},"keywords":["redux","reselect"],"authors":["Sam Kortchmar"],"repository":{"type":"git","url":"git+https://github.com/skortchmark9/reselect-tools.git"},"license":"MIT","devDependencies":{"babel-cli":"^6.7.5","babel-plugin-transform-es2015-modules-commonjs":"^6.7.4","babel-plugin-transform-es2015-modules-umd":"^6.6.5","babel-preset-env":"^1.6.1","babel-register":"^6.7.2","better-npm-run":"0.0.8","chai":"^3.0.0","codecov.io":"^0.1.6","coveralls":"^2.11.4","eslint":"^2.11","eslint-plugin-react":"^5.1.1","mkdirp":"^0.5.1","mocha":"^2.2.5","ncp":"^2.0.0","nyc":"^6.4.0","uglify-js":"^3.0.20"},"dependencies":{"reselect":"^3.0.1"},"contributors":[{"name":"Sam Kortchmar","url":"https://github.com/skortchmark9"}],"gitHead":"fc96ea1edfd8558a6d21928c1c6baad636fe7187","homepage":"https://github.com/skortchmark9/reselect-tools#readme","_id":"reselect-tools@0.0.1","_shasum":"8f73b2ef7e1df794b2e312bb7bc610807aac5270","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.6","_npmUser":{"name":"skortchmar","email":"samkortchmar@gmail.com"},"dist":{"shasum":"8f73b2ef7e1df794b2e312bb7bc610807aac5270","tarball":"https://registry.npmjs.org/reselect-tools/-/reselect-tools-0.0.1.tgz","integrity":"sha512-8bKjsXoySzeYgHh8k6PGj9m7p6mwehIJNJ9bR6/l9bTw2bR8GJ2an4cSjbj7FxxcvA5znVO8lY7K36WOl+CKww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrXCrSAE3XJHMecnmCScYxbjbfPU4RVjkZTLUnJdVR+wIgLpwkBXu+BIgHEQ9xczzAElpqM4WafCBE5aWkWFrlQcg="}]},"maintainers":[{"name":"skortchmar","email":"samkortchmar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/reselect-tools-0.0.1.tgz_1510607735052_0.5630991389043629"},"directories":{}},"0.0.2":{"name":"reselect-tools","version":"0.0.2","description":"Selector Debugging Tools for Reselect.","main":"lib/index.js","jsnext:main":"es/index.js","files":["lib","src","dist","es"],"bugs":{"url":"https://github.com/TODO"},"scripts":{"compile:commonjs":"better-npm-run compile:commonjs","compile:umdmin":"uglifyjs dist/reselect-tools.js -mt -o dist/reselect-tools.min.js","compile:umd":"better-npm-run compile:umd","compile:es":"babel -d es/ src/","compile":"npm run compile:commonjs && npm run compile:umd && npm run compile:umdmin && npm run compile:es","lint":"eslint --fix src test","prepublish":"npm run compile","test":"better-npm-run test","test:cov":"better-npm-run test:cov"},"betterScripts":{"test":{"command":"mocha --compilers js:babel-register --ui tdd --recursive","env":{"NODE_ENV":"test"}},"test:cov":{"command":"nyc --reporter=lcov --reporter=text mocha --compilers js:babel-register --ui tdd","env":{"NODE_ENV":"test","COVERAGE":"true"}},"compile:commonjs":{"command":"babel -d lib/ src/","env":{"NODE_ENV":"commonjs"}},"compile:umd":{"command":"mkdirp dist/ && babel -o dist/reselect-tools.js src/","env":{"NODE_ENV":"umd"}}},"keywords":["redux","reselect"],"authors":["Sam Kortchmar"],"repository":{"type":"git","url":"git+https://github.com/skortchmark9/reselect-tools.git"},"license":"MIT","devDependencies":{"babel-cli":"^6.7.5","babel-plugin-transform-es2015-modules-commonjs":"^6.7.4","babel-plugin-transform-es2015-modules-umd":"^6.6.5","babel-preset-env":"^1.6.1","babel-register":"^6.7.2","better-npm-run":"0.0.8","chai":"^3.0.0","codecov.io":"^0.1.6","coveralls":"^2.11.4","eslint":"^2.11","eslint-plugin-react":"^5.1.1","mkdirp":"^0.5.1","mocha":"^2.2.5","ncp":"^2.0.0","nyc":"^6.4.0","uglify-js":"^3.0.20"},"dependencies":{"reselect":"^3.0.1"},"contributors":[{"name":"Sam Kortchmar","url":"https://github.com/skortchmark9"}],"gitHead":"4ac2e55cd7c72a03b6bf22fae8f6f36d74bc6a19","homepage":"https://github.com/skortchmark9/reselect-tools#readme","_id":"reselect-tools@0.0.2","_shasum":"f163b8d2e746c2cce091429e419e2e534c9a2684","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.6","_npmUser":{"name":"skortchmar","email":"samkortchmar@gmail.com"},"dist":{"shasum":"f163b8d2e746c2cce091429e419e2e534c9a2684","tarball":"https://registry.npmjs.org/reselect-tools/-/reselect-tools-0.0.2.tgz","integrity":"sha512-1xf/qikpY8NaWGYnGxg/wz01H9BHXAq5t/YARwW+cnoKjuZv95T7AImtgbRLd2x8F60k073p4synBTadGPydJw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLVxY/8+nv9h9dsEWpdlTJgsSb3ou7Ie9pNZC8zOcfjQIhAJF91WWMX0KVxBHLmJikX5eD6L00PNhbnMrlzK0e9y+6"}]},"maintainers":[{"name":"skortchmar","email":"samkortchmar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/reselect-tools-0.0.2.tgz_1510615133281_0.7193787391297519"},"directories":{}},"0.0.3":{"name":"reselect-tools","version":"0.0.3","description":"Selector Debugging Tools for Reselect.","main":"lib/index.js","jsnext:main":"es/index.js","files":["lib","src","dist","es"],"bugs":{"url":"https://github.com/TODO"},"scripts":{"compile:commonjs":"better-npm-run compile:commonjs","compile:umdmin":"uglifyjs dist/reselect-tools.js -mt -o dist/reselect-tools.min.js","compile:umd":"better-npm-run compile:umd","compile:es":"babel -d es/ src/","compile":"npm run compile:commonjs && npm run compile:umd && npm run compile:umdmin && npm run compile:es","lint":"eslint --fix src test","prepublish":"npm run compile","test":"better-npm-run test","test:cov":"better-npm-run test:cov","example":"opn http://localhost:9080/examples/demo.html && static-server"},"betterScripts":{"test":{"command":"mocha --compilers js:babel-register --ui tdd --recursive","env":{"NODE_ENV":"test"}},"test:cov":{"command":"nyc --reporter=lcov --reporter=text mocha --compilers js:babel-register --ui tdd","env":{"NODE_ENV":"test","COVERAGE":"true"}},"compile:commonjs":{"command":"babel -d lib/ src/","env":{"NODE_ENV":"commonjs"}},"compile:umd":{"command":"mkdirp dist/ && babel -o dist/reselect-tools.js src/","env":{"NODE_ENV":"umd"}}},"keywords":["redux","reselect"],"authors":["Sam Kortchmar"],"repository":{"type":"git","url":"git+https://github.com/skortchmark9/reselect-tools.git"},"license":"MIT","devDependencies":{"babel-cli":"^6.7.5","babel-plugin-transform-es2015-modules-commonjs":"^6.7.4","babel-plugin-transform-es2015-modules-umd":"^6.6.5","babel-preset-env":"^1.6.1","babel-register":"^6.7.2","better-npm-run":"0.0.8","chai":"^3.0.0","codecov.io":"^0.1.6","coveralls":"^2.11.4","eslint":"^2.11","mkdirp":"^0.5.1","mocha":"^2.2.5","ncp":"^2.0.0","nyc":"^6.4.0","opn-cli":"^3.1.0","uglify-js":"^3.0.20"},"dependencies":{"reselect":"^3.0.1"},"contributors":[{"name":"Sam Kortchmar","url":"https://github.com/skortchmark9"}],"gitHead":"85cb22c1070bf8609275ebcf00bbd7b4f1fadcf2","homepage":"https://github.com/skortchmark9/reselect-tools#readme","_id":"reselect-tools@0.0.3","_shasum":"f5d1cfb51775da53f0da6d42e4de53bc20bcb4f3","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"skortchmar","email":"samkortchmar@gmail.com"},"dist":{"shasum":"f5d1cfb51775da53f0da6d42e4de53bc20bcb4f3","tarball":"https://registry.npmjs.org/reselect-tools/-/reselect-tools-0.0.3.tgz","integrity":"sha512-N6I2iyz2LhDuW97jQL4PO1B/aT3q1jdXWaEhAdYUSzyR9wunrZzNW+HYWiBAL2djfB1pwGUUo3i+vs7YCEzQCQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAMLMe4g57qgxwucME7aPneqqsqdNp9A5JWCST66GAgQAiEA5q7mMgc9wvVhpFyHhZRo3lmoMlDz5NY63g47H0WJzag="}]},"maintainers":[{"name":"skortchmar","email":"samkortchmar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/reselect-tools-0.0.3.tgz_1510630754813_0.768895564833656"},"directories":{}},"0.0.4":{"name":"reselect-tools","version":"0.0.4","description":"Selector Debugging Tools for Reselect.","main":"lib/index.js","jsnext:main":"es/index.js","files":["lib","src","dist","es"],"bugs":{"url":"https://github.com/TODO"},"scripts":{"compile:commonjs":"better-npm-run compile:commonjs","compile:umdmin":"uglifyjs dist/reselect-tools.js -mt -o dist/reselect-tools.min.js","compile:umd":"better-npm-run compile:umd","compile:es":"babel -d es/ src/","compile":"npm run compile:commonjs && npm run compile:umd && npm run compile:umdmin && npm run compile:es","lint":"eslint src test","lint-fix":"eslint --fix src test","prepublish":"npm run compile","test":"better-npm-run test","test:cov":"better-npm-run test:cov","example":"opn http://localhost:9080/examples/demo.html && static-server"},"betterScripts":{"test":{"command":"mocha --compilers js:babel-register --ui tdd --recursive","env":{"NODE_ENV":"test"}},"test:cov":{"command":"nyc --reporter=lcov --reporter=text mocha --compilers js:babel-register --ui tdd","env":{"NODE_ENV":"test","COVERAGE":"true"}},"compile:commonjs":{"command":"babel -d lib/ src/","env":{"NODE_ENV":"commonjs"}},"compile:umd":{"command":"mkdirp dist/ && babel -o dist/reselect-tools.js src/","env":{"NODE_ENV":"umd"}}},"keywords":["redux","reselect"],"authors":["Sam Kortchmar"],"repository":{"type":"git","url":"git+https://github.com/skortchmark9/reselect-tools.git"},"license":"MIT","devDependencies":{"babel-cli":"^6.7.5","babel-plugin-transform-es2015-modules-commonjs":"^6.7.4","babel-plugin-transform-es2015-modules-umd":"^6.6.5","babel-preset-env":"^1.6.1","babel-register":"^6.7.2","better-npm-run":"0.0.8","chai":"^3.0.0","codecov.io":"^0.1.6","coveralls":"^2.11.4","eslint":"^2.11","mkdirp":"^0.5.1","mocha":"^2.2.5","ncp":"^2.0.0","nyc":"^6.4.0","opn-cli":"^3.1.0","uglify-js":"^3.0.20"},"dependencies":{"reselect":"^3.0.1"},"contributors":[{"name":"Sam Kortchmar","url":"https://github.com/skortchmark9"}],"gitHead":"7f5ce942cf234399941f4aa35ea6cbccab8167a9","homepage":"https://github.com/skortchmark9/reselect-tools#readme","_id":"reselect-tools@0.0.4","_shasum":"31cf1e830a4a6ce084c5bdcd8d17eb4101289706","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"skortchmar","email":"samkortchmar@gmail.com"},"dist":{"shasum":"31cf1e830a4a6ce084c5bdcd8d17eb4101289706","tarball":"https://registry.npmjs.org/reselect-tools/-/reselect-tools-0.0.4.tgz","integrity":"sha512-e63gPHg8l9NxUvBrGEOGPoleVemWJZZkdzUbty0AcKmRZGyGGtU0oz83VxNDJGtLFlgQVqKo41BGo85McWUGaA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLwEknS2YqD8PjOxX1zeioZG1n3sqOtStMNJLMa8QtPwIgWijY+sIiiG0T8rULaOVVyOffvVKnMSjqOcgEAaPfrHc="}]},"maintainers":[{"name":"skortchmar","email":"samkortchmar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/reselect-tools-0.0.4.tgz_1510745421647_0.8732687791343778"},"directories":{}},"0.0.5":{"name":"reselect-tools","version":"0.0.5","description":"Selector Debugging Tools for Reselect.","main":"lib/index.js","jsnext:main":"es/index.js","files":["lib","src","dist","es"],"bugs":{"url":"https://github.com/skortchmark9/reselect-tools"},"scripts":{"compile:commonjs":"better-npm-run compile:commonjs","compile:umdmin":"uglifyjs dist/reselect-tools.js -mt -o dist/reselect-tools.min.js","compile:umd":"better-npm-run compile:umd","compile:es":"babel -d es/ src/","compile":"npm run compile:commonjs && npm run compile:umd && npm run compile:umdmin && npm run compile:es","lint":"eslint src test","lint-fix":"eslint --fix src test","prepublish":"npm run compile","test":"better-npm-run test","test:cov":"better-npm-run test:cov","example":"opn http://localhost:9080/examples/demo.html && static-server"},"betterScripts":{"test":{"command":"mocha --compilers js:babel-register --ui tdd --recursive","env":{"NODE_ENV":"test"}},"test:cov":{"command":"nyc --reporter=lcov --reporter=text mocha --compilers js:babel-register --ui tdd","env":{"NODE_ENV":"test","COVERAGE":"true"}},"compile:commonjs":{"command":"babel -d lib/ src/","env":{"NODE_ENV":"commonjs"}},"compile:umd":{"command":"mkdirp dist/ && babel -o dist/reselect-tools.js src/","env":{"NODE_ENV":"umd"}}},"keywords":["redux","reselect"],"authors":["Sam Kortchmar"],"repository":{"type":"git","url":"git+https://github.com/skortchmark9/reselect-tools.git"},"license":"MIT","devDependencies":{"babel-cli":"^6.7.5","babel-plugin-transform-es2015-modules-commonjs":"^6.7.4","babel-plugin-transform-es2015-modules-umd":"^6.6.5","babel-preset-env":"^1.6.1","babel-register":"^6.7.2","better-npm-run":"0.0.8","chai":"^3.0.0","codecov.io":"^0.1.6","coveralls":"^2.11.4","eslint":"^2.11","mkdirp":"^0.5.1","mocha":"^2.2.5","ncp":"^2.0.0","nyc":"^6.4.0","opn-cli":"^3.1.0","uglify-js":"^3.0.20"},"dependencies":{"reselect":"^3.0.1"},"contributors":[{"name":"Sam Kortchmar","url":"https://github.com/skortchmark9"}],"gitHead":"d538acf012f371973e1d181579bf6dfbadb8b9bf","homepage":"https://github.com/skortchmark9/reselect-tools#readme","_id":"reselect-tools@0.0.5","_shasum":"4e346473e10023a66340b22c2ed88479d176388b","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"skortchmar","email":"samkortchmar@gmail.com"},"dist":{"shasum":"4e346473e10023a66340b22c2ed88479d176388b","tarball":"https://registry.npmjs.org/reselect-tools/-/reselect-tools-0.0.5.tgz","integrity":"sha512-iAzTZYQPTqiIv3t8uRKll2dGl5Zdjft+KbNWpoSxW1K1L+QTej3dvq8nNF2Q/YniTbJQYZmGGScsfNfXCWEEeQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAYkHkwwseHP8/wRw/pYy4L33MHVhmV/XFKsZuvxqQ8AAiAQZDcwIpa3mJKNB2WTu2dVw8e8eVGpBIEu05IWVvodtw=="}]},"maintainers":[{"name":"skortchmar","email":"samkortchmar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/reselect-tools-0.0.5.tgz_1511766802771_0.8010681357700378"},"directories":{}},"0.0.6":{"name":"reselect-tools","version":"0.0.6","description":"Selector Debugging Tools for Reselect.","main":"lib/index.js","jsnext:main":"es/index.js","files":["lib","src","dist","es"],"bugs":{"url":"https://github.com/skortchmark9/reselect-tools"},"scripts":{"compile:commonjs":"better-npm-run compile:commonjs","compile:umdmin":"uglifyjs dist/reselect-tools.js -mt -o dist/reselect-tools.min.js","compile:umd":"better-npm-run compile:umd","compile:es":"babel -d es/ src/","compile":"npm run compile:commonjs && npm run compile:umd && npm run compile:umdmin && npm run compile:es","lint":"eslint src test","lint-fix":"eslint --fix src test","prepublish":"npm run compile","test":"better-npm-run test","test:cov":"better-npm-run test:cov","example":"opn http://localhost:9080/examples/demo.html && static-server"},"betterScripts":{"test":{"command":"mocha --compilers js:babel-register --ui tdd --recursive","env":{"NODE_ENV":"test"}},"test:cov":{"command":"nyc --reporter=lcov --reporter=text mocha --compilers js:babel-register --ui tdd","env":{"NODE_ENV":"test","COVERAGE":"true"}},"compile:commonjs":{"command":"babel -d lib/ src/","env":{"NODE_ENV":"commonjs"}},"compile:umd":{"command":"mkdirp dist/ && babel -o dist/reselect-tools.js src/","env":{"NODE_ENV":"umd"}}},"keywords":["redux","reselect"],"authors":["Sam Kortchmar"],"repository":{"type":"git","url":"git+https://github.com/skortchmark9/reselect-tools.git"},"license":"MIT","devDependencies":{"babel-cli":"^6.7.5","babel-plugin-transform-es2015-modules-commonjs":"^6.7.4","babel-plugin-transform-es2015-modules-umd":"^6.6.5","babel-preset-env":"^1.6.1","babel-register":"^6.7.2","better-npm-run":"0.0.8","chai":"^3.0.0","codecov.io":"^0.1.6","coveralls":"^2.11.4","eslint":"^2.11","mkdirp":"^0.5.1","mocha":"^2.2.5","ncp":"^2.0.0","nyc":"^6.4.0","opn-cli":"^3.1.0","uglify-js":"^3.0.20"},"dependencies":{"reselect":"^3.0.1"},"contributors":[{"name":"Sam Kortchmar","url":"https://github.com/skortchmark9"}],"gitHead":"0b5ce883c15da88bb55b70a835d04897682bad37","homepage":"https://github.com/skortchmark9/reselect-tools#readme","_id":"reselect-tools@0.0.6","_shasum":"8e84ee7ebc46d543de12b1b1e972581e14df2716","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.4.1","_npmUser":{"name":"skortchmar","email":"samkortchmar@gmail.com"},"dist":{"shasum":"8e84ee7ebc46d543de12b1b1e972581e14df2716","tarball":"https://registry.npmjs.org/reselect-tools/-/reselect-tools-0.0.6.tgz","fileCount":9,"unpackedSize":36599,"integrity":"sha512-7Oow9cptVpmqu8ZWiuaH237CpYxVWszBGrsceDYxmtpGkefiX3i6+nVUhqds8QFx5okA3hqBKR47uOEB89XTQQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCd6kuWiMxBbKCArBvdgFyTjOpUwN405HHwF44QwOTk4wIgCH4zmLPYPv5MQbBFZNjA5AJpiPn7aPiFiurlV9fkaZ0="}]},"maintainers":[{"name":"skortchmar","email":"samkortchmar@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/reselect-tools_0.0.6_1519009330271_0.02454625297661006"},"_hasShrinkwrap":false},"0.0.7":{"name":"reselect-tools","version":"0.0.7","description":"Selector Debugging Tools for Reselect.","main":"lib/index.js","jsnext:main":"es/index.js","bugs":{"url":"https://github.com/skortchmark9/reselect-tools"},"scripts":{"compile:commonjs":"better-npm-run compile:commonjs","compile:umdmin":"uglifyjs dist/reselect-tools.js -mt -o dist/reselect-tools.min.js","compile:umd":"better-npm-run compile:umd","compile:es":"babel -d es/ src/","compile":"npm run compile:commonjs && npm run compile:umd && npm run compile:umdmin && npm run compile:es","lint":"eslint src test","lint-fix":"eslint --fix src test","prepublish":"npm run compile","test":"better-npm-run test","test:cov":"better-npm-run test:cov","example":"opn http://localhost:9080/examples/demo.html && static-server"},"betterScripts":{"test":{"command":"mocha --compilers js:babel-register --ui tdd --recursive","env":{"NODE_ENV":"test"}},"test:cov":{"command":"nyc --reporter=lcov --reporter=text mocha --compilers js:babel-register --ui tdd","env":{"NODE_ENV":"test","COVERAGE":"true"}},"compile:commonjs":{"command":"babel -d lib/ src/","env":{"NODE_ENV":"commonjs"}},"compile:umd":{"command":"mkdirp dist/ && babel -o dist/reselect-tools.js src/","env":{"NODE_ENV":"umd"}}},"keywords":["redux","reselect"],"authors":["Sam Kortchmar"],"repository":{"type":"git","url":"git+https://github.com/skortchmark9/reselect-tools.git"},"license":"MIT","devDependencies":{"babel-cli":"^6.7.5","babel-plugin-transform-es2015-modules-commonjs":"^6.7.4","babel-plugin-transform-es2015-modules-umd":"^6.6.5","babel-preset-env":"^1.6.1","babel-register":"^6.7.2","better-npm-run":"0.0.8","chai":"^3.0.0","codecov.io":"^0.1.6","coveralls":"^2.11.4","eslint":"^2.11","mkdirp":"^0.5.1","mocha":"^2.2.5","ncp":"^2.0.0","nyc":"^6.4.0","opn-cli":"^3.1.0","uglify-js":"^3.0.20"},"dependencies":{"reselect":"4.0.0"},"contributors":[{"name":"Sam Kortchmar","url":"https://github.com/skortchmark9"}],"gitHead":"31e21e4d20b0b16ee9fe61a08d8e7c06d662a28d","homepage":"https://github.com/skortchmark9/reselect-tools#readme","_id":"reselect-tools@0.0.7","_shasum":"bff19df422ebebd1a7c322262db94a554f6b44ed","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.4.1","_npmUser":{"name":"skortchmar","email":"samkortchmar@gmail.com"},"dist":{"shasum":"bff19df422ebebd1a7c322262db94a554f6b44ed","tarball":"https://registry.npmjs.org/reselect-tools/-/reselect-tools-0.0.7.tgz","integrity":"sha512-+RGguS8ph21y04l6YwQwL+VfJ/c0qyZKCkhCd5ZwbNJ/lklsJml3CIim+uaG/t+7jYZQcwDW4bk5+VzTeuzwtw==","fileCount":9,"unpackedSize":35132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb350jCRA9TVsSAnZWagAA1NQQAJYM8uDIW+JkQ3/vjUI9\nUKoe2AGGe64Ki+B5YYBhyv/mLqESFLF3oRCj0VKmtIgogo6qLAVHAvguURZx\nrXwGGThD/9f+yfycT0lGJewSudckGAyvfCEwkVT6A39aKrAJbRODIjQeoUlu\n9m5v/7TePp/K8cdM3OblXqd3cl6YMF4tqr4D78tJond+djgkTV3f1CBguj2e\ng2+4uG1vb+yYNc8DWQyAYAl0yqikkWpU2iH92ju1vHHDoQVqWKqyHiLdYYa1\nisdra/ZJALL+NU5Gec6Lq+nls8xWYm5EYraM/bsPS51bzL/P7MJQru5zvpgP\nw9GJbJwfVVi7ueXl12pzCxk9XOIw3dZrI3VQq67tkF3OlyLMbFa9/ifZf5Op\nPNJ+5LJhRrNZNgs0DmJQAOcH1VRdZFODN+tfBFj4Vpn2GHk6Si9yzh0wOlVi\njp1GlG02PrpeZNc0Ra/F9lLZ3hvnQ5pqZPtyf8YLpFeWT3vBvmPn/GpD1DIZ\nx5swYxvA2vmEpvP0Nm+TKtXNPOQNHRciK2s5B3RDJfmI/jEZcTh2nhwktzW7\ncBNWmdeYcbkgMtHcWSqSNXK9RQ8PWEWEZ6ZNwjS8rX1PE2Vqwkel2iTXwZMD\nXG9HksJUn3+D7/FOFAvHMNE4JvqKLEDZ1P3F8aazRME/SOIljq55W+ixF0KO\n2IML\r\n=anKT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDghfW1mFEft3Y1AbZNppSUZiDYHw+FZdL07H4RdNh1+gIhAK0/ElmzxoSzRGhznXZLl7MHxoJIQZi6Wi5XJ6o0uOr5"}]},"maintainers":[{"name":"skortchmar","email":"samkortchmar@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/reselect-tools_0.0.7_1541381410267_0.7411514723326651"},"_hasShrinkwrap":false}},"readme":"# Reselect Tools\n[![Travis][build-badge]][build]\n[![npm package][npm-badge]][npm]\n[![Coveralls][coveralls-badge]][coveralls]\n\nTools for working with the [reselect](https://github.com/reactjs/reselect) library:\n*Check selector dependencies, inputs, outputs, and recomputations at any time without refreshing!*\n\n![Graph](examples/extension.png)\n\n\n\n```js\nexport const data$ = (state) => state.data;\nexport const ui$ = (state) => state.ui;\nexport const users$ = createSelector(data$, (data) => data.users);\nexport const currentUser$ = createSelector(ui$, users$, (ui, users) => users[ui.currentUser]);\n...\n\n// in configureStore.js\nimport * as selectors from './selectors.js'\nimport * as ReselectTools from 'reselect-tools'\n\nReselectTools.getStateWith(() => store.getState())  // allows you to get selector inputs and outputs\nReselectTools.registerSelectors(selectors) // register string names for selectors\n...\nReselectTools.checkSelector('currentUser$')\n=> {\n\tinputs: [{currentUser: 1}, users: {1: {name: 'sam'}}]\n\toutputs: {name: 'sam'},\n\tdependencies: [ui$, users$],\n\trecomputations: 1,\n    isNamed: false,\n    selectorName: 'currentUser$'\n}\nselectorGraph()\n=> {\n\tnodes: {\n\t\t\"data$\": {\n\t\t\tname: \"data$\",\n\t\t\trecomputations: \"N/A\"\n\t\t},\n\t\t\"ui$\": {\n\t\t\tname: \"ui$\",\n\t\t\trecomputations: \"N/A\"\n\t\t},\n\t\t\"users$\": {\n\t\t\tname: \"user$\",\n\t\t\trecomputations: 1\n\t\t},\n\t\t\"currentUser$\": {\n\t\t\tname: \"currentUser$\",\n\t\t\trecomputations: 1\n\t\t},\n\t},\n\tedges: [\n\t\t{ from: users$, to: data$ },\n\t\t{ from: users$, to: data$ },\n\t\t{ from: currentUser$, to: users$ },\n\t\t{ from: currentUser$, to: ui$ },\n\t]\n}\n```\n\n## Table of Contents\n\n- [Motivation](#motivation)\n- [Getting Started](#getting-started)\n- [Example](#example)\n- [API](#api)\n  - [`getStateWith`](#getstatewithfunc)\n  - [`checkSelector`](#checkselectorselector)\n  - [`selectorGraph`](#selectorgraphselectorkey--defaultselectorkey)\n  - [`registerSelectors`](#registerselectorskeyselectorobj)\n- [License](#license)\n\n## Motivation\n\nIt's handy to visualize the application state tree with the [Redux Devtools](https://github.com/zalmoxisus/redux-devtools-extension). But I was using selectors a lot, and there was no easy way to visualize the *computed state tree*. So, I created this library to output graphs like this one:\n\n![Graph](examples/graph.png)\n\nThis library was intended to be used with the [chrome extension](https://github.com/skortchmark9/reselect-devtools-extension). However, it can be still be [useful without the chrome extension installed](#without-the-extension). The chrome extension will be useless without this library.\n\nSee the original reselect issue [here](https://github.com/reactjs/reselect/issues/279).\n\n## Getting Started\n\nFirstly, I apologize in advance that this section is required. It would be great to match the experience of installing redux devtools or react's. Hopefully the tools will be more tightly integrated with reselect at some point and these steps won't be necessary.\n\n1. Install the Package\n\n        npm install -s reselect-tools\n\n2. Grab the [Chrome Extension](https://chrome.google.com/webstore/detail/reselect-devtools/cjmaipngmabglflfeepmdiffcijhjlbb)\n\n3. Building the Graph:\n\n   In order to start building out the selector graph, we need to tell the devtools about the selectors.\n   ```\n   import { registerSelectors } from 'reselect-tools'\n   registerSelectors({ mySelector$ })\n   ```\n   If you're keeping all your selectors in the same place, this is dead simple:\n   ```\n   import * as selectors from './selectors.js'\n   registerSelectors(selectors)\n   ```\n\n   That's it! At this point you should be able to open the devtools and view the selector graph.\n\n   The tools will automatically discover and name dependencies of the selectors. If you want to override the name of a selector, you can do so:\n   ```\n   const foo$ = createSelector(bar$, (foo) => foo + 1);\n   foo$.selectorName = 'bar$' // selector while show up as 'bar'\n   ```\n\n4. Checking Selector Inputs and Outputs\n\n   Imagine that your tests are passing, but you think some selector in your app might be receiving bad input from a depended-upon selector. Where in the chain is the problem? In order to allow ```checkSelector``` and by extension, the extension, to get this information, we need to give Reselect Tools some way of feeding state to a selector.\n   ```\n   import store from './configureStore'\n   ReselectTools.getStateWith(() => store.getState())\n   ```\n\n## Example\n\nThe example is running [here](http://skortchmark.com/reselect-tools/examples/demo.html). Grab the extension and take a look!\n\n    npm run example\n\n## API\n\n### getStateWith(func)\n\n`getStateWith` accepts a function which returns the current state. This state is then passed into ```checkSelector```. In most cases, this will be ```store.getState()```\n\n### checkSelector(selector)\n\nOutputs information about the selector at the given time.\n\nBy default, outputs only the recomputations of the selector.\nIf you use ```getStateWith```, it will output the selector's input and output values.\nIf you use ```registerSelectors```, you can pass it the string name of a selector.\n\n\n```js\nconst two$ = () => 2;\nconst four$ = () => 4\nconst mySelector$ = createSelector(two$, four$, (two, four) => two + four)\nregisterSelectors({ mySelector$ })\ngetStateWith(() => null)\n\ncheckSelector('mySelector$')  // {\n\t\t\t\t\t\t\t\t\t inputs: [2, 4],\n\t\t\t\t\t\t\t\t\t output: 6,\n\t\t\t\t\t\t\t\t\t dependencies: [two$, four$],\n\t\t\t\t\t\t\t\t\t recomputations: 1,\n\t\t\t\t\t\t\t\t }\n```\n\n\n### selectorGraph(selectorKey = defaultSelectorKey)\n\n```selectorGraph``` outputs a POJO with nodes and edges. A node is a selector in the tree, and an edge goes from a selector to the selectors it depends on.\n\n```js\nselectorGraph()\n//  {\n//  \tnodes: {\n//  \t\t\"data$\": {\n//  \t\t\tname: \"data$\",\n//  \t\t\trecomputations: \"N/A\"\n//  \t\t},\n//  \t\t\"ui$\": {\n//  \t\t\tname: \"ui$\",\n//  \t\t\trecomputations: \"N/A\"\n//  \t\t},\n//  \t\t\"users$\": {\n//  \t\t\tname: \"user$\",\n//  \t\t\trecomputations: 1\n//  \t\t},\n//  \t\t\"currentUser$\": {\n//  \t\t\tname: \"currentUser$\",\n//  \t\t\trecomputations: 1\n//  \t\t},\n//  \t},\n//  \tedges: [\n//  \t\t{ from: users$, to: data$ },\n//  \t\t{ from: users$, to: data$ },\n//  \t\t{ from: currentUser$, to: users$ },\n//  \t\t{ from: currentUser$, to: ui$ },\n//  \t]\n//  }\n```\n\n#### Using custom selectorKeys\n\nNodes in the graph are keyed by string names. The name is determined by the ```selectorKey``` function. This function takes a selector outputs a string which must be unique and consistent for a given selector. The ```defaultSelectorKey``` looks for a function name, then a match in the registry, and finally resorts to calling toString on the selector's ```resultFunc```.\n\nSee the [tests](test/test.js#L246) for an alternate selectorKey.\n\n\n### registerSelectors(keySelectorObj)\n\nAdd a named selector to the graph. Set selector names as keys and selectors as values.\n\n\n### Without The Extension\n\nIf you're using an unsupported browser, or aren't happy with the extension, you can still get at the data.\n\nThe dev tools bind to your app via this global:\n```\n  window.__RESELECT_TOOLS__ = {\n    selectorGraph,\n    checkSelector\n  }\n```\nEven without the devtools, you can call ```__RESELECT_TOOLS__.checkSelector('mySelector$')``` from the developer console or ```__RESLECT_TOOLS__.selectorGraph()``` to see what's going on. If the JSON output of the graph is hard to parse, there's an example of how to create a visual selector graph [here](tests/your-app.js).\n\n\n## License\n\nMIT\n\n[build-badge]: https://api.travis-ci.org/skortchmark9/reselect-tools.svg?branch=master\n[build]: https://travis-ci.org/skortchmark9/reselect-tools\n\n[npm-badge]: https://img.shields.io/npm/v/reselect-tools.svg?style=flat-square\n[npm]: https://www.npmjs.org/package/reselect-tools\n\n[coveralls-badge]: https://coveralls.io/repos/github/skortchmark9/reselect-tools/badge.svg?branch=master\n[coveralls]: https://coveralls.io/github/skortchmark9/reselect-tools?branch=master\n","maintainers":[{"name":"skortchmar","email":"samkortchmar@gmail.com"}],"time":{"modified":"2022-06-26T11:46:31.917Z","created":"2017-11-13T21:15:35.960Z","0.0.1":"2017-11-13T21:15:35.960Z","0.0.2":"2017-11-13T23:18:53.397Z","0.0.3":"2017-11-14T03:39:14.940Z","0.0.4":"2017-11-15T11:30:21.731Z","0.0.5":"2017-11-27T07:13:23.117Z","0.0.6":"2018-02-19T03:02:10.323Z","0.0.7":"2018-11-05T01:30:10.463Z"},"homepage":"https://github.com/skortchmark9/reselect-tools#readme","keywords":["redux","reselect"],"repository":{"type":"git","url":"git+https://github.com/skortchmark9/reselect-tools.git"},"contributors":[{"name":"Sam Kortchmar","url":"https://github.com/skortchmark9"}],"bugs":{"url":"https://github.com/skortchmark9/reselect-tools"},"license":"MIT","readmeFilename":"README.md"}