{"_id":"keypather","_rev":"299070","name":"keypather","description":"Get or set a deep value using a keypath string. Supports bracket and dot notation","dist-tags":{"latest":"3.1.0"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"time":{"modified":"2021-06-03T19:02:07.000Z","created":"2014-03-09T01:13:00.920Z","3.1.0":"2018-12-18T08:09:46.305Z","3.0.0":"2018-01-14T07:24:19.517Z","2.0.1":"2016-08-24T20:12:20.421Z","2.0.0":"2016-03-26T14:36:13.994Z","1.10.2":"2016-01-04T04:15:06.386Z","1.10.1":"2015-04-26T07:35:47.687Z","1.10.0":"2015-04-26T07:08:04.251Z","1.9.0":"2015-04-26T06:36:38.004Z","1.8.1":"2015-01-08T07:08:25.263Z","1.8.0":"2015-01-08T01:16:22.505Z","1.7.5":"2014-07-19T00:24:59.009Z","1.7.3":"2014-07-16T09:44:36.665Z","1.7.2":"2014-07-11T19:53:10.417Z","1.7.1":"2014-07-03T23:20:24.666Z","1.7.0":"2014-05-26T07:45:39.995Z","1.6.0":"2014-05-04T05:01:28.990Z","1.5.1":"2014-05-04T02:19:05.582Z","1.5.0":"2014-05-04T02:17:58.661Z","1.4.0":"2014-05-01T08:47:08.604Z","1.3.3":"2014-05-01T08:10:58.596Z","1.3.2":"2014-03-17T08:21:29.461Z","1.3.1":"2014-03-17T08:18:34.026Z","1.3.0":"2014-03-16T01:01:56.118Z","1.2.0":"2014-03-15T23:14:33.861Z","1.1.0":"2014-03-09T02:09:32.785Z","1.0.1":"2014-03-09T01:13:00.920Z"},"users":{"sahilsk":true,"antixrist":true,"cr8tiv":true},"author":{"name":"Tejesh Mehta"},"repository":{"type":"git","url":"git+https://github.com/tjmehta/value-for-keypath.git"},"versions":{"3.1.0":{"name":"keypather","version":"3.1.0","description":"Get or set a deep value using a keypath string. Supports bracket and dot notation","main":"index.js","scripts":{"lint":"standard","test-watch":"jest --coverage --watch","test":"jest --coverage"},"repository":{"type":"git","url":"git+https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","deep","get","set","check","existance","value","traversal","dot","bracket","notation","path","array","object","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{"101":"^1.6.2","debug":"^3.1.0","escape-string-regexp":"^1.0.5","shallow-clone":"^3.0.0","string-reduce":"^1.0.0"},"devDependencies":{"deep-freeze-strict":"^1.1.1","fast-deep-equal":"^2.0.1","jest":"^21.2.1","standard":"^12.0.1"},"gitHead":"1e1f92716198be74885976a34cefb031bea9e568","_id":"keypather@3.1.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"tjmehta","email":"tejesh.mehta@gmail.com"},"dist":{"shasum":"f0123116e65d809f3d5c13d06ce07c88589e1629","size":19783,"noattachment":false,"key":"/keypather/-/keypather-3.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-3.1.0.tgz"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keypather_3.1.0_1545120586167_0.854455098623482"},"_hasShrinkwrap":false,"publish_time":1545120586305,"_cnpm_publish_time":1545120586305},"3.0.0":{"name":"keypather","version":"3.0.0","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"jest --coverage --watch","test":"jest --coverage"},"repository":{"type":"git","url":"git+https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{"101":"^1.6.2","debug":"^3.1.0","escape-string-regexp":"^1.0.5","jest":"^21.2.1","resolve":"^1.5.0","string-reduce":"^1.0.0"},"devDependencies":{"jest":"^20.0.4","standard":"^10.0.3"},"gitHead":"4790b010988f71bd8efab6f20b34e846cfa4a0f4","_id":"keypather@3.0.0","_shasum":"d6f8211eec6e757558b4593e2dd08dfea00d44d4","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.4","_npmUser":{"name":"tjmehta","email":"tejesh.mehta@gmail.com"},"dist":{"shasum":"d6f8211eec6e757558b4593e2dd08dfea00d44d4","size":13284,"noattachment":false,"key":"/keypather/-/keypather-3.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-3.0.0.tgz"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keypather-3.0.0.tgz_1515914659370_0.17716890037991107"},"directories":{},"publish_time":1515914659517,"_hasShrinkwrap":false,"_cnpm_publish_time":1515914659517},"2.0.1":{"name":"keypather","version":"2.0.1","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{"101":"^1.5.0"},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"gitHead":"65eefd91b037181359d21b7f6a552d3cc6c786cd","_id":"keypather@2.0.1","_shasum":"a803bff3e162cad6260746319dfceae568f30ce1","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.12.0","_npmUser":{"name":"tjmehta","email":"tejesh.mehta@gmail.com"},"dist":{"shasum":"a803bff3e162cad6260746319dfceae568f30ce1","size":8382,"noattachment":false,"key":"/keypather/-/keypather-2.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-2.0.1.tgz"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/keypather-2.0.1.tgz_1472069540164_0.19148065196350217"},"directories":{},"publish_time":1472069540421,"_cnpm_publish_time":1472069540421,"_hasShrinkwrap":false},"2.0.0":{"name":"keypather","version":"2.0.0","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{"101":"^1.5.0"},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"gitHead":"1978d7aa01e6aae5734fb748d52054cc3de0b046","_id":"keypather@2.0.0","_shasum":"28335deb1b4efec0a8ebfcfe1049e627e72e4e1b","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.5.0","_npmUser":{"name":"tjmehta","email":"tejesh.mehta@gmail.com"},"dist":{"shasum":"28335deb1b4efec0a8ebfcfe1049e627e72e4e1b","size":8299,"noattachment":false,"key":"/keypather/-/keypather-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-2.0.0.tgz"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/keypather-2.0.0.tgz_1459002971868_0.8046332059893757"},"directories":{},"publish_time":1459002973994,"_cnpm_publish_time":1459002973994,"_hasShrinkwrap":false},"1.10.2":{"name":"keypather","version":"1.10.2","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{"101":"^1.0.0"},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"gitHead":"512b516e976d8f563d174d8f16641dce38d0143e","_id":"keypather@1.10.2","_shasum":"e0449632d4b3e516f21cc014ce7c5644fddce614","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.1","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"dist":{"shasum":"e0449632d4b3e516f21cc014ce7c5644fddce614","size":7917,"noattachment":false,"key":"/keypather/-/keypather-1.10.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.10.2.tgz"},"directories":{},"publish_time":1451880906386,"_cnpm_publish_time":1451880906386,"_hasShrinkwrap":false},"1.10.1":{"name":"keypather","version":"1.10.1","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"gitHead":"19090307b13dc4b18920074c30480d80a3c00b23","_id":"keypather@1.10.1","_shasum":"f5ecd83742777b4dc6dddfccd263c54ef0b41620","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"dist":{"shasum":"f5ecd83742777b4dc6dddfccd263c54ef0b41620","size":7772,"noattachment":false,"key":"/keypather/-/keypather-1.10.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.10.1.tgz"},"directories":{},"publish_time":1430033747687,"_cnpm_publish_time":1430033747687,"_hasShrinkwrap":false},"1.10.0":{"name":"keypather","version":"1.10.0","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{"101":"^0.16.1"},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"gitHead":"2837402b76bae9b9e4f77a09edfd2a1512ca991e","_id":"keypather@1.10.0","_shasum":"66361c2c2ba283bc3f86ce8e79f04313809b8af6","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"dist":{"shasum":"66361c2c2ba283bc3f86ce8e79f04313809b8af6","size":7559,"noattachment":false,"key":"/keypather/-/keypather-1.10.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.10.0.tgz"},"directories":{},"publish_time":1430032084251,"_cnpm_publish_time":1430032084251,"_hasShrinkwrap":false},"1.9.0":{"name":"keypather","version":"1.9.0","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{"101":"^0.16.1"},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"gitHead":"96ab363fc36b87d63c3c54587a8d7233efe05a49","_id":"keypather@1.9.0","_shasum":"be8956b601722a511c0f40036add1ad1bff38f77","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"dist":{"shasum":"be8956b601722a511c0f40036add1ad1bff38f77","size":7178,"noattachment":false,"key":"/keypather/-/keypather-1.9.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.9.0.tgz"},"directories":{},"publish_time":1430030198004,"_cnpm_publish_time":1430030198004,"_hasShrinkwrap":false},"1.8.1":{"name":"keypather","version":"1.8.1","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"gitHead":"25e55b42b0abcb88524b7e263baf6c69584cc7b0","_id":"keypather@1.8.1","_shasum":"51bd5a6ea57ecd8cc53f360dc849ea69b8789494","_from":".","_npmVersion":"2.1.11","_nodeVersion":"0.10.28","_npmUser":{"name":"tjmehta","email":"tejesh.mehta@gmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"dist":{"shasum":"51bd5a6ea57ecd8cc53f360dc849ea69b8789494","size":6515,"noattachment":false,"key":"/keypather/-/keypather-1.8.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.8.1.tgz"},"directories":{},"publish_time":1420700905263,"_cnpm_publish_time":1420700905263,"_hasShrinkwrap":false},"1.8.0":{"name":"keypather","version":"1.8.0","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"gitHead":"f5091a63c3dde2964234e29da6633840c92c9f2b","_id":"keypather@1.8.0","_shasum":"1946c54f1948b53e27eafcc56b3118ed11be008d","_from":".","_npmVersion":"2.1.11","_nodeVersion":"0.10.28","_npmUser":{"name":"tjmehta","email":"tejesh.mehta@gmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"dist":{"shasum":"1946c54f1948b53e27eafcc56b3118ed11be008d","size":6569,"noattachment":false,"key":"/keypather/-/keypather-1.8.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.8.0.tgz"},"directories":{},"publish_time":1420679782505,"_cnpm_publish_time":1420679782505,"_hasShrinkwrap":false},"1.7.5":{"name":"keypather","version":"1.7.5","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"gitHead":"ce241281964cc75dfb0d8e0e15bfce1b5e07ef36","_id":"keypather@1.7.5","_shasum":"964528a7bbdf3ccf9e16fffa2e3d1e49dc2d7a35","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"dominathan","email":"nathan219@gmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"dist":{"shasum":"964528a7bbdf3ccf9e16fffa2e3d1e49dc2d7a35","size":6212,"noattachment":false,"key":"/keypather/-/keypather-1.7.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.7.5.tgz"},"directories":{},"publish_time":1405729499009,"_cnpm_publish_time":1405729499009,"_hasShrinkwrap":false},"1.7.3":{"name":"keypather","version":"1.7.3","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"gitHead":"1c38719cf75367cddf4f7ac0d25742bcea3d3d20","_id":"keypather@1.7.3","_shasum":"50c5c8fc2eabc76316c2278a16392a2abf1ae74c","_from":".","_npmVersion":"1.4.20","_npmUser":{"name":"tjmehta","email":"tejesh.mehta@gmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"dist":{"shasum":"50c5c8fc2eabc76316c2278a16392a2abf1ae74c","size":6104,"noattachment":false,"key":"/keypather/-/keypather-1.7.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.7.3.tgz"},"directories":{},"publish_time":1405503876665,"_cnpm_publish_time":1405503876665,"_hasShrinkwrap":false},"1.7.2":{"name":"keypather","version":"1.7.2","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"gitHead":"a9b752b60674478185eeeebdda9e9de3d3bf973d","_id":"keypather@1.7.2","_shasum":"3bf4afbf7570f12cc7f4f5bb79d8e16cce450dac","_from":".","_npmVersion":"1.4.16","_npmUser":{"name":"bkendall","email":"bryan@bryankendall.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"dist":{"shasum":"3bf4afbf7570f12cc7f4f5bb79d8e16cce450dac","size":7240,"noattachment":false,"key":"/keypather/-/keypather-1.7.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.7.2.tgz"},"directories":{},"publish_time":1405108390417,"_cnpm_publish_time":1405108390417,"_hasShrinkwrap":false},"1.7.1":{"name":"keypather","version":"1.7.1","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"_id":"keypather@1.7.1","_shasum":"637640e0b188b233b5069ae71cb070bf08f20eed","_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"tjmehta","email":"tejesh.mehta@gmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"dist":{"shasum":"637640e0b188b233b5069ae71cb070bf08f20eed","size":5942,"noattachment":false,"key":"/keypather/-/keypather-1.7.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.7.1.tgz"},"directories":{},"publish_time":1404429624666,"_cnpm_publish_time":1404429624666,"_hasShrinkwrap":false},"1.7.0":{"name":"keypather","version":"1.7.0","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test-watch":"nodemon --delay 1 -w *.js -w lib -w test -w configs -x npm test","test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1","nodemon":"~1.0.20"},"_id":"keypather@1.7.0","dist":{"shasum":"24e1a6773c25548cbe6af098f70fdb066a4eb82f","size":5936,"noattachment":false,"key":"/keypather/-/keypather-1.7.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.7.0.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"tjmehta","email":"tejesh.mehta@gmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"publish_time":1401090339995,"_cnpm_publish_time":1401090339995,"_hasShrinkwrap":false},"1.6.0":{"name":"keypather","version":"1.6.0","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1"},"_id":"keypather@1.6.0","dist":{"shasum":"99e46ce54a700ab674e8b8a87f4689f20a3e3d4f","size":5326,"noattachment":false,"key":"/keypather/-/keypather-1.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.6.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"publish_time":1399179688990,"_cnpm_publish_time":1399179688990,"_hasShrinkwrap":false},"1.5.1":{"name":"keypather","version":"1.5.1","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1"},"_id":"keypather@1.5.1","dist":{"shasum":"7ae4d3f2c2ec3258902ccdaf19c8ce095e2a924b","size":5183,"noattachment":false,"key":"/keypather/-/keypather-1.5.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.5.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"publish_time":1399169945582,"_cnpm_publish_time":1399169945582,"_hasShrinkwrap":false},"1.5.0":{"name":"keypather","version":"1.5.0","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1"},"_id":"keypather@1.5.0","dist":{"shasum":"65e9f91f4089a7c6848244cae56f13b8992496d1","size":5150,"noattachment":false,"key":"/keypather/-/keypather-1.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.5.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"publish_time":1399169878661,"_cnpm_publish_time":1399169878661,"_hasShrinkwrap":false},"1.4.0":{"name":"keypather","version":"1.4.0","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1"},"_id":"keypather@1.4.0","dist":{"shasum":"352db8f9f2e14f1f4f3fd82b3712dbfc161fee4e","size":4608,"noattachment":false,"key":"/keypather/-/keypather-1.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.4.0.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"tjmehta","email":"tejesh.mehta@gmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"publish_time":1398934028604,"_cnpm_publish_time":1398934028604,"_hasShrinkwrap":false},"1.3.3":{"name":"keypather","version":"1.3.3","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1"},"_id":"keypather@1.3.3","dist":{"shasum":"68cabf68a3d00f80349bf49f3bb6b01b58b553df","size":4421,"noattachment":false,"key":"/keypather/-/keypather-1.3.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.3.3.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"tjmehta","email":"tejesh.mehta@gmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"publish_time":1398931858596,"_cnpm_publish_time":1398931858596,"_hasShrinkwrap":false},"1.3.2":{"name":"keypather","version":"1.3.2","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1"},"_id":"keypather@1.3.2","dist":{"shasum":"96e0d91224dc8d389dd75267b19a493b84ee6472","size":4352,"noattachment":false,"key":"/keypather/-/keypather-1.3.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.3.2.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"publish_time":1395044489461,"_cnpm_publish_time":1395044489461,"_hasShrinkwrap":false},"1.3.1":{"name":"keypather","version":"1.3.1","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1"},"_id":"keypather@1.3.1","dist":{"shasum":"ddea61261e1677f37e4a46eda92661d5b10787dc","size":4354,"noattachment":false,"key":"/keypather/-/keypather-1.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.3.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"publish_time":1395044314026,"_cnpm_publish_time":1395044314026,"_hasShrinkwrap":false},"1.3.0":{"name":"keypather","version":"1.3.0","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1"},"_id":"keypather@1.3.0","dist":{"shasum":"31f4ee61b4265e7362d9baf8e55b1fa20814d70c","size":4347,"noattachment":false,"key":"/keypather/-/keypather-1.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.3.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"publish_time":1394931716118,"_cnpm_publish_time":1394931716118,"_hasShrinkwrap":false},"1.2.0":{"name":"keypather","version":"1.2.0","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1"},"_id":"keypather@1.2.0","dist":{"shasum":"cf31384c13bc30a69c9f8f96c5aa84160aee4f9d","size":3905,"noattachment":false,"key":"/keypather/-/keypather-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.2.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"publish_time":1394925273861,"_cnpm_publish_time":1394925273861,"_hasShrinkwrap":false},"1.1.0":{"name":"keypather","version":"1.1.0","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1"},"_id":"keypather@1.1.0","dist":{"shasum":"11e93b8cec8d7848972c216095d34dbb41dd6b7b","size":3379,"noattachment":false,"key":"/keypather/-/keypather-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.1.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"publish_time":1394330972785,"_cnpm_publish_time":1394330972785,"_hasShrinkwrap":false},"1.0.1":{"name":"keypather","version":"1.0.1","description":"Get or set a object values from a keypath string. Supports bracket notation, dot notation, and functions","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/tjmehta/value-for-keypath.git"},"keywords":["keypath","value","traversal","dot","notation","bracket","notation","function","path","array","object","dot","notation","node","module","key","keys","string"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"homepage":"https://github.com/tjmehta/value-for-keypath","dependencies":{},"devDependencies":{"should":"~3.1.2","mocha":"~1.17.1"},"_id":"keypather@1.0.1","dist":{"shasum":"9be68fa9928e300e2cc3efaa9b8cc711a7368de2","size":3312,"noattachment":false,"key":"/keypather/-/keypather-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypather/download/keypather-1.0.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"bkendall","email":"bryan@bryankendall.com"},{"name":"dominathan","email":"nathan219@gmail.com"},{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"directories":{},"publish_time":1394327580920,"_cnpm_publish_time":1394327580920,"_hasShrinkwrap":false}},"readme":"![keypather-logo](https://i.imgur.com/wFm1N25.png)\n\n# keypather [![Build Status](https://travis-ci.org/tjmehta/keypather.png?branch=master)](https://travis-ci.org/tjmehta/keypather) [![Coverage Status](https://coveralls.io/repos/github/tjmehta/keypather/badge.svg?branch=immutable-methods)](https://coveralls.io/github/tjmehta/keypather?branch=immutable-methods) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](http://standardjs.com/)\n\nGet, set, or delete a deep value using a keypath string.\n\nA collection of keypath utilities: get, set, delete, in, has, flatten, expand, and immutable set/delete.\n\nLightweight and parses keypaths using vanilla JS - No ```eval``` or ```new Function``` hacks!\n\n# Installation\n```bash\nnpm install keypather\n```\n\n# Usage\n\n## Examples\n\n### Import\n```js\n// modular imports, so you can keep your bundle lean\nconst get = require('keypather/get')\nconst set = require('keypather/set')\nconst del = require('keypather/del')\nconst immutableSet = require('keypather/immutable-set')\nconst immutableDel = require('keypather/immutable-del')\nconst keypathIn = require('keypather/in')\nconst hasKeypath = require('keypather/has')\nconst expand = require('keypather/expand')\nconst flatten = require('keypather/flatten')\n```\n\n### GET, SET, DEL Example\n```js\nconst get = require('keypather/get')\nconst set = require('keypather/set')\nconst del = require('keypather/del')\n\nlet obj\n\n// Objects\nobj = { foo: { bar: 100 } }\nget(obj, 'foo.bar')          // returns 100\ndel(obj, '[\"foo\"][\"bar\"]')   // returns true, obj becomes { foo: {} }\nset(obj, 'foo.bar.qux', 200) // returns 200, obj becomes { foo: { bar: { qux: 200 } } }\nget(obj, 'foo[\"bar\"].qux')   // returns 200\n\n// Arrays\nobj = {}\nset(obj, 'foo[0]', 100)      // obj is { foo: [ 100 ] }\n```\n\n### Immutable SET, DEL Example\n```js\nconst set = require('keypather/immutable-set')\nconst del = require('keypather/immutable-del')\n\nlet obj\nlet out\n\n// Objects\nobj = { foo: { bar: 100 } }\nout = set(obj, 'foo.bar', 100)     // returns obj\n// out === obj,\n// since it was not modified\nout = set(obj, 'foo.bar.qux', 200) // returns { foo: { bar: { qux: 200 } } }\n// out !== obj,\n// obj is still { foo: { bar: 100 } }\nout = del(obj, 'one.two.three')    // returns obj\n// out === obj,\n// since it was not modified\nout = del(obj, 'foo.bar.qux')     // returns { foo: { bar: {} } }\n// out !== obj,\n// obj is still { foo: { bar: { qux: 200 } } }\n\n// Arrays\nobj = {}\nout = set(obj, 'foo[0]', 100) // returns { foo: [ 100 ] } (new)\n// out !== obj, obj is still { foo: { bar: 100 } }\n```\n\n### HAS, IN Example\n```js\nconst hasKeypath = require('keypather/has')\nconst keypathIn = require('keypather/in')\n\nconst obj = { foo: Object.create({ bar: 100 }) }\n\nhasKeypath(obj, 'foo.bar') // returns false (bar is on proto)\nkeypathIn(obj, 'foo.bar')  // returns true\nhasKeypath(obj, 'foo')     // returns true\n```\n\n### FLATTEN, EXPAND Example\n```js\nconst expand = require('keypather/expand')\nconst flatten = require('keypather/flatten')\n\nconst obj = expand({\n  'foo.bar': 1,\n  'foo.qux[0]': 100,  \n  'foo[\"qux\"][1]': 200,\n  'foo.qux.wut': 'val'\n})\n// obj is { foo { bar: 1, qux: [ 100, 200, wut: 'val' ] } }\nconst flat = flatten(obj)\n// flat is { 'foo.bar': 1, 'foo.qux': 2 } }\n```\n\n### Errors Example\n```js\n/* Missing deep values w/ \"force: false\" */\nget({}, 'foo.bar', { force: false })\nset({}, 'foo.bar', 100, { force: false })\ndel({}, 'foo.bar', { force: false })\nimmutableSet({}, 'foo.bar', 100, { force: false })\nimmutableDel({}, 'foo.bar', { force: false })\n// TypeError: Cannot read property 'bar' of undefined (at keypath 'foo' of 'foo.bar')\nget({ foo: {} }, 'foo.bar', { force: false })\nset({ foo: {} }, 'foo.bar', 100, { force: false })\ndel({ foo: {} }, 'foo.bar', { force: false })\nimmutableSet({ foo: {} }, 'foo.bar', 100, { force: false })\nimmutableDel({ foo: {} }, 'foo.bar', { force: false })\n// TypeError: Cannot read property 'bar' of undefined (at keypath 'foo.bar' of 'foo.bar.qux')\nhasKeypath({}, 'foo.bar', { force: false })\n// TypeError: Cannot read property 'hasOwnProperty' of undefined (hasOwnProperty('bar') errored at keypath 'foo' of 'foo.bar')\nkeypathIn({}, 'foo.bar', { force: false })\n// TypeError: Cannot use 'in' operator to search for 'bar' in undefined (at 'foo' of 'foo.bar')\nkeypathIn({}, 'foo.bar.qux', { force: false })\nhasKeypath({}, 'foo.bar.qux', { force: false })\n// TypeError: Cannot read property 'bar' of undefined (at keypath 'foo' of 'foo.bar.qux')\n\n/* Warnings for set and immutable-set */\n// by default, set will overwrite primitives (string, number or regexp) to an object or array.\n// when overwritePrimitives is set to false, sets will warn when settings a key on a primitive\n// to disable all warnings use the option { warn: false }\nset({}, '[0]', 'val', { overwritePrimitives: false })\n// log: Setting number key (0) on object at keypath '' of '[0]')\nset([], 'key', 'val', { overwritePrimitives: false })\n// log: Setting string key 'foo' on array at keypath '' of 'foo')\nset({ foo: 1 }, 'foo.qux', 'val', { overwritePrimitives: false })\n// log: Setting key 'qux' on number 1 at keypath 'foo' of 'foo.qux')\nset({ foo: 1 }, 'foo[0]', 'val', { overwritePrimitives: false })\n// log: Setting number key (0) on number 1 at keypath 'foo' of 'foo[0]')\nset({ foo: 'str' }, 'foo.bar', 'val', { overwritePrimitives: false })\n// log: Setting key 'bar' on string 'str' at keypath 'foo' of 'foo.bar')\nset({ foo: {} }, 'foo[0]', 'val', { overwritePrimitives: false })\n// log: Setting number key (0) on object at keypath 'foo' of 'foo[0]')\n\n/* Invalid keypaths */\nget({}, 'foo.1bar')\n// Error: Unexpected token '1' in keypath 'foo.1bar' at position 4 (invalid dot key)\nget({}, 'foo[]')       \n// Error: Unexpected token ']' in keypath 'foo[]' at position 4 (invalid bracket key)\nget({}, 'foo[\"]')\n// Error: Unexpected token ']' in keypath 'foo[]' at position 5 (invalid bracket string key)\nget({}, 'foo.')\n// Error: Unexpected end of keypath 'foo.' (invalid dot key)\nget({}, 'foo[')\n// Error: Unexpected end of keypath 'foo[' (invalid bracket key)\nget({}, \"foo['\")\n// Error: Unexpected end of keypath 'foo['' (invalid bracket string key)\n```\n\n## Documentation\n\n### GET\nReturns value at keypath in obj\n* @param {any} obj - context to read keypath from\n* @param {string} keypath - bracket and/or dot notation keypath string\n* @param {?object} opts - optional, defaults to { force: true }\n*   opts.force - force specifies whether non-existant keypaths should be ignored, defaults to true\n*     if false, `get` will error when reading a key on a non-existant keypath.\n* @returns {any} value at keypath\n\n```js\nconst get = require('keypather/get');\nconst obj = {\n  foo: {\n    bar: {\n      baz: 'val'\n    }\n  }\n};\nget(obj, \"foo.bar.baz\");           // returns 'val'\nget(obj, \"foo['bar'].baz\");        // returns 'val'\nget(obj, \"['foo']['bar']['baz']\"); // returns 'val'\n\nget({}, 'foo.two.three', { force: false }) // throws error\n// TypeError: Cannot read property 'three' of undefined (at keypath 'foo.two' of 'foo.two.three')\n```\n\n### SET\nSets a value in obj at keypath. If force=true, set will create objects at non-existant keys in the\nkeypath. If the non-existant key is a number, its value will be initialized as an array.\n* @param {any} obj - context to read keypath from\n* @param {string} keypath - bracket and/or dot notation keypath string to read from obj\n* @returns {any} value - value to set at keypath\n* @param {?object} opts - optional, defaults to { force: true, overwritePrimitives: true, warn: true }\n*   opts.force - whether non-existant keys in keypath should be created, defaults to true.\n*     if false, `set` will error when reading a key on a non-existant keypath.\n*   opts.overwritePrimitives - whether primitive keys (booleans, strings, numbers) should be overwritten.\n*     setting a key on a primitive will convert it to an object or array (if key is string or number).\n*     if false, `set` will log a warning when setting keys on primitives.\n*   opts.silent - specifies whether warning logs should be enabled, defaults to false.\n* @returns {any} value set at keypath\n\n```js\nconst set = require('keypather/set');\n\nlet obj = {\n  foo: {\n    bar: {\n      baz: 'val'\n    }\n  }\n};\nset(obj, \"foo['bar'].baz\", 'val');        // returns 'val'\nset(obj, \"foo.bar.baz\", 'val');           // returns 'val'\nset(obj, \"['foo']['bar']['baz']\", 'val'); // returns 'val'\n\n/* By default, set forces creation of non-existant keys */\nobj = {}\nset(obj, \"foo.bar.baz\", 'val'); // returns 'val'\n// obj becomes:\n// {\n//   foo: {\n//     bar: {\n//       baz: 'val'\n//     }\n//   }\n// };\n\n/* By default, overwrites primitives when setting a key on one */\nobj = { foo: 1 }\nset(obj, \"foo.bar.baz\", 'val'); // returns 'val'\n// obj becomes:\n// {\n//   foo: {\n//     bar: {\n//       baz: 'val'\n//     }\n//   }\n// };\nobj = { foo: 1 }\nset(obj, \"foo[0].baz\", 'val'); // returns 'val'\n// obj becomes:\n// {\n//   foo: [{\n//     baz: 'val'\n//   }]\n// };\n\n/* Errors, force=false */\nset({}, \"foo.bar.baz\", 'val', { force: false }); // throw's an error\n// TypeError: Cannot read property 'bar' of undefined (at keypath 'foo' of 'foo.bar.baz')\n// see more errors above in the 'Errors' section\n\n/* Warnings, overwritePrimitives=false */\nset({ foo: 'str' }, 'foo.bar', 'val', { overwritePrimitives: false })\n// log: Setting key 'bar' on string 'str' at keypath 'foo' of 'foo.bar')\n// see more warnings above in the 'Errors' section\n```\n\n### DEL\nDeletes value a keypath in obj. Similar to `delete obj.key`.\n* @param {any} obj - context to read keypath from\n* @param {string} keypath - bracket and/or dot notation keypath string to delete from obj\n* @param {?object} opts - optional, defaults to { force: true }\n*   opts.force - whether non-existant keys in keypath should be created, defaults to true.\n*     if false, `del` will error when reading a key on a non-existant keypath.\n* @returns {boolean} true except when the property is non-configurable or in non-strict mode\n\n```js\nconst del = require('keypather/del');\n\nconst obj = {\n  foo: {\n    bar: {\n      baz: 'val'\n    }\n  }\n};\ndel(obj, \"foo['bar'].baz\");        // true\ndel(obj, \"foo.bar.baz\");           // true\ndel(obj, \"['foo']['bar']['baz']\"); // true\n// obj becomes:\n// {\n//   foo: {\n//     bar: {}\n//   }\n// }\n\n/* Errors, force=false */\ndel(obj, \"one.two.three\", 'val', { force: false }); // throw's an error\n// TypeError: Cannot read property 'two' of undefined (at keypath 'one' of 'one.two.three')\n// see more errors above in the 'Errors' section\n```\n\n### IMMUTABLE SET\nSets a value in obj at keypath. If force=true, set will create objects at non-existant keys in the\nkeypath. If the non-existant key is a number, its value will be initialized as an array.\n* @param {any} obj - context to read keypath from\n* @param {string} keypath - bracket and/or dot notation keypath string to read from obj\n* @returns {any} value - value to set at keypath\n* @param {?object} opts - optional, defaults to { force: true, overwritePrimitives: true, warn: true }\n*   opts.force - whether non-existant keys in keypath should be created, defaults to true.\n*     if false, `immutable-set` will error when reading a key on a non-existant keypath.\n*   opts.overwritePrimitives - whether primitive keys (booleans, strings, numbers) should be overwritten.\n*     setting a key on a primitive will convert it to an object or array (if key is string or number).\n*     if false, `immutable-set` will log a warning when setting keys on primitives.\n*   opts.silent - specifies whether warning logs should be enabled, defaults to false.\n*   opts.shallowClone - provide custom shallowClone, defaults to [shallow-clone](https://npmrepo.com/shallow-clone)\n* @returns {any} returns same obj if unmodified, otherwise modified clone of obj\n\n```js\nconst set = require('keypather/immutable-set');\n\nlet obj = {\n  foo: {\n    bar: {\n      baz: 'val'\n    }\n  }\n};\nlet out\nout = set(obj, \"foo['bar'].baz\", 'val');         // returns SAME object, since the value was unchanged\n// out === obj\nout = set(obj, \"foo.bar.baz\", 'val2');           // returns { foo: { bar: { baz: 'val2' } } } (new object)\n// out !== obj\nout = set(obj, \"['foo']['bar']['baz']\", 'val3'); // returns { foo: { bar: { baz: 'val3' } } } (new object)\n// out !== obj\n\n/* By default, overwrites primitives when setting a key on one */\nobj = { foo: 1 }\nout = set(obj, \"foo.bar.baz\", 'val'); // returns new object\n// out !== obj\n// out is:\n// {\n//   foo: {\n//     bar: {\n//       baz: 'val'\n//     }\n//   }\n// };\nobj = { foo: 1 }\nout = set(obj, \"foo[0].baz\", 'val'); // returns new object\n// out !== obj\n// out is:\n// {\n//   foo: [{\n//     baz: 'val'\n//   }]\n// };\n\n/* Errors, force=false */\nobj = {}\nset(obj, \"foo.bar.baz\", 'val', { force: false }); // throws error\n// Error: Cannot read property 'bar' of undefined (at keypath 'foo' of 'foo.bar.baz')\n\n/* Warnings, force=false */\nobj = { foo: 'str' }\nout = set(obj, 'foo.bar', 'val', { overwritePrimitives: false })\n// out === obj, since keys cannot be set on strings or numbers\n// log: Setting key 'bar' on string 'str' at keypath 'foo' of 'foo.bar')\n```\n\n### IMMUTABLE DEL\nDeletes value a keypath in obj. Similar to `delete obj.key`.\n* @param {any} obj - context to read keypath from\n* @param {string} keypath - bracket and/or dot notation keypath string to delete from obj\n* @param {?object} opts - optional, defaults to { force: true }\n*   opts.force - whether non-existant keys in keypath should be created, defaults to true.\n*     if false, `del` will error when reading a key on a non-existant keypath.\n*   opts.shallowClone - provide custom shallowClone, defaults to [shallow-clone](https://npmrepo.com/shallow-clone)\n* @returns {any} returns same obj if unmodified, otherwise modified clone of obj\n\n```js\nconst del = require('keypather/immutable-del');\nconst obj = {\n  foo: {\n    bar: {\n      baz: 'val'\n    }\n  }\n};\nlet out\nout = del(obj, \"foo['bar'].baz\");        // true\nout = del(obj, \"foo.bar.baz\");           // true\nout = del(obj, \"['foo']['bar']['baz']\"); // true\n// obj becomes:\n// {\n//   foo: {\n//     bar: {}\n//   }\n// }\n\n/* Errors, force=false */\ndel(obj, \"one.two.three\", 'val', { force: false }); // throw's an error\n// Error: Cannot read property 'two' of undefined (at keypath 'one' of 'one.two.three')\n```\n\n### IN\nReturns true if keypath is \"in\" the obj at the keypath. Similar to \"in\" operator.\n* @param {any} obj - context to read keypath in\n* @param {string} keypath - bracket and/or dot notation keypath string to read from obj\n* @param {?object} opts - optional, defaults to { force: true }\n*   opts.force - force specifies whether non-existant keypaths should be ignored, defaults to true\n* @returns {boolean} true if the keypath is \"in\" the obj, else false\n\n```js\nconst keypathIn = require('keypather/in');\nconst obj = {\n  foo: {\n    bar: {\n      baz: 'val'\n      __proto__: {\n        qux: 'val'\n      }\n    }\n  }\n};\nkeypathIn(obj, \"foo.bar.baz\");           // true\nkeypathIn(obj, \"foo.bar.qux\");           // true\nkeypathIn(obj, \"foo.bar.bing\");          // false\nkeypathIn(obj, \"foo['bar'].baz\");        // true\nkeypathIn(obj, \"one.two.three\");         // false\n\n// Errors, force=false\nkeypathIn(obj, \"one.two.three\", { force: false });\n// Error: Cannot read property 'two' of undefined (at keypath 'two' of 'one.two.three')\nkeypathIn(obj, \"foo.two.three\", { force: false });\n// TypeError: Cannot use 'in' operator to search for 'three' in undefined (at 'foo.two' of 'foo.two.three')\n```\n\n### HAS\nReturns true if the obj has the keypath. Similar to `obj.hasOwnProperty`.\n* @param {any} obj - context to read keypath in\n* @param {string} keypath - bracket and/or dot notation keypath string to read from obj\n* @param {?object} opts - optional, defaults to { force: true }\n*   opts.force - force specifies whether non-existant keypaths should be ignored, defaults to true\n* @returns {boolean} true if the keypath is \"in\" the obj, else false\n\n```js\nconst hasKeypath = require('keypather/has');\nconst obj = {\n  foo: {\n    bar: {\n      baz: 'val'\n      __proto__: {\n        qux: 'val'\n      }\n    }\n  }\n};\nhasKeypath(obj, \"foo.bar.baz\");           // true\nhasKeypath(obj, \"foo.bar.qux\");           // false\nhasKeypath(obj, \"['foo']['bar']['baz']\"); // true\nhasKeypath(obj, \"one.two.three\");         // false\n\n// Errors, force=false\nhasKeypath(obj, \"one.two.three\", { force: false }); // throw's an error\n// Error: Cannot read property 'two' of undefined (at keypath 'two' of 'one.two.three\nhasKeypath(obj, \"foo.two.three\", { force: false });\n// Error: Cannot read property 'hasOwnProperty' of undefined (hasOwnProperty('three') errored at keypath 'foo.two' of 'foo.two.three')\n```\n\n### FLATTEN\nFlatten an object or array into a keypath object\n* @param {any} obj - object or array to flatten\n\n```js\nconst flatten = require('keypather/flatten');\n\nflatten({\n  foo: {\n    qux: 'hello'\n  },\n  bar: [\n    1,\n    {\n      yolo: [1]\n    }\n  ]\n});\n// returns:\n// {\n//   'foo.qux': 'hello',\n//   'bar[0]': 1,\n//   'bar[1].yolo[0]': 1\n// }\n\n/* accepts a delimiter other than '.' as second arg */\n\nflatten({\n  foo: {\n    qux: 'hello'\n  }\n}, '_');\n// returns:\n// {\n//   'foo_qux': 'hello',\n// }\n\n```\n\n### EXPAND\nExpand a flattened object back into an object or array\n* @param {any} obj - flattened object or array to be expanded\n\n```js\nconst expand = require('keypather/expand');\n\nexpand({\n  'foo.qux': 'hello',\n  'bar[0]': 1,\n  'bar[1].yolo[0]': 1\n});\n// returns:\n// {\n//   foo: {\n//     qux: 'hello'\n//   },\n//   bar: [\n//     1,\n//     {\n//       yolo: [1]\n//     }\n//   ]\n// }\n\n/* expand will assume an object is an array if any of the keys are numbers */\n\nexpand({\n  '[0]': 1,\n  '[1].yolo[0]': 1\n});\n// returns:\n// [\n//   1,\n//   {\n//     yolo: [1]\n//   }\n// ]\n\n/* accepts a delimiter other than '.' as second arg */\n\nexpand({\n 'foo_qux': 'hello'\n}, '_');\n// returns:\n// {\n//   foo: {\n//     qux: 'hello'\n//   }\n// }\n```\n\n# Changelog\n[Changelog history](https://github.com/tjmehta/keypather/blob/master/CHANGELOG.md)\n\n# License\n### MIT\n","_attachments":{},"homepage":"https://github.com/tjmehta/value-for-keypath","bugs":{"url":"https://github.com/tjmehta/value-for-keypath/issues"},"license":"MIT"}