{"_id":"property-expr","_rev":"4317851","name":"property-expr","description":"tiny util for getting and setting deep object props safely","dist-tags":{"latest":"2.0.6"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"time":{"modified":"2026-04-07T22:18:17.000Z","created":"2014-09-04T01:43:07.384Z","2.0.6":"2023-10-13T14:27:35.844Z","2.0.5":"2022-01-14T21:50:08.810Z","2.0.4":"2020-08-26T12:35:34.731Z","2.0.3":"2020-08-17T17:34:50.591Z","2.0.2":"2020-03-06T16:31:02.534Z","2.0.1":"2020-03-06T16:28:57.698Z","2.0.0":"2020-03-05T17:11:44.504Z","1.5.1":"2018-08-09T18:05:48.977Z","1.5.0":"2018-07-20T12:40:15.645Z","1.3.2":"2018-05-02T17:39:22.965Z","1.4.0":"2018-01-02T12:58:19.340Z","1.3.1":"2015-04-21T17:46:40.495Z","1.3.0":"2015-04-21T16:41:01.854Z","1.2.0":"2015-04-21T02:42:37.425Z","1.0.1":"2014-09-04T01:46:45.528Z","1.0.0":"2014-09-04T01:43:07.384Z"},"users":{},"author":{"name":"@monasticpanic Jason Quense"},"repository":{"type":"git","url":"git+https://github.com/jquense/expr.git"},"versions":{"2.0.6":{"name":"property-expr","version":"2.0.6","description":"tiny util for getting and setting deep object props safely","main":"index.js","types":"index.d.ts","scripts":{"test":"node ./test.js","debug":"node --inspect-brk ./test.js"},"repository":{"type":"git","url":"git+https://github.com/jquense/expr.git"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@monasticpanic Jason Quense"},"license":"MIT","prettier":{"singleQuote":true,"semi":false},"gitHead":"de7d4aa0bcb98209780e5b6a750820e7352604c6","bugs":{"url":"https://github.com/jquense/expr/issues"},"homepage":"https://github.com/jquense/expr#readme","_id":"property-expr@2.0.6","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"shasum":"f77bc00d5928a6c748414ad12882e83f24aec1e8","size":4293,"noattachment":false,"key":"/property-expr/-/property-expr-2.0.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-2.0.6.tgz"},"_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"directories":{},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/property-expr_2.0.6_1697207255675_0.8571106404036146"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-10-13T14:27:35.844Z","publish_time":1697207255844,"_source_registry_name":"default","_cnpm_publish_time":1697207255844},"2.0.5":{"name":"property-expr","version":"2.0.5","description":"tiny util for getting and setting deep object props safely","main":"index.js","types":"index.d.ts","scripts":{"test":"node ./test.js","debug":"node --inspect-brk ./test.js"},"repository":{"type":"git","url":"git+https://github.com/jquense/expr.git"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@monasticpanic Jason Quense"},"license":"MIT","prettier":{"singleQuote":true,"semi":false},"gitHead":"f7d10bb64c9d52484ff3ddbcb4a8eedc08e54856","bugs":{"url":"https://github.com/jquense/expr/issues"},"homepage":"https://github.com/jquense/expr#readme","_id":"property-expr@2.0.5","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"shasum":"278bdb15308ae16af3e3b9640024524f4dc02cb4","size":4476,"noattachment":false,"key":"/property-expr/-/property-expr-2.0.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-2.0.5.tgz"},"_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"directories":{},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/property-expr_2.0.5_1642197008639_0.8962106229596063"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-01-14T21:50:15.481Z","publish_time":1642197008810,"_cnpm_publish_time":1642197008810},"2.0.4":{"name":"property-expr","version":"2.0.4","description":"tiny util for getting and setting deep object props safely","main":"index.js","types":"index.d.ts","scripts":{"test":"node ./test.js","debug":"node --inspect-brk ./test.js"},"repository":{"type":"git","url":"git+https://github.com/jquense/expr.git"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@monasticpanic Jason Quense"},"license":"MIT","prettier":{"singleQuote":true,"semi":false},"gitHead":"b135f186d334ea444b3b275d1df077a712db60bb","bugs":{"url":"https://github.com/jquense/expr/issues"},"homepage":"https://github.com/jquense/expr#readme","_id":"property-expr@2.0.4","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"shasum":"37b925478e58965031bb612ec5b3260f8241e910","size":4472,"noattachment":false,"key":"/property-expr/-/property-expr-2.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-2.0.4.tgz"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/property-expr_2.0.4_1598445334629_0.35283896888904986"},"_hasShrinkwrap":false,"publish_time":1598445334731,"_cnpm_publish_time":1598445334731},"2.0.3":{"name":"property-expr","version":"2.0.3","description":"tiny util for getting and setting deep object props safely","main":"index.js","types":"index.d.ts","scripts":{"test":"node ./test.js","debug":"node --inspect-brk ./test.js"},"repository":{"type":"git","url":"git+https://github.com/jquense/expr.git"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@monasticpanic Jason Quense"},"license":"MIT","prettier":{"singleQuote":true,"semi":false},"gitHead":"9a3236c45d221969561ddb401c7a1ebae2a7c5b5","bugs":{"url":"https://github.com/jquense/expr/issues"},"homepage":"https://github.com/jquense/expr#readme","_id":"property-expr@2.0.3","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"shasum":"0a3fce936515da358aca0b74d5844a3dc34139bd","size":4458,"noattachment":false,"key":"/property-expr/-/property-expr-2.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-2.0.3.tgz"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/property-expr_2.0.3_1597685690460_0.3813863988708739"},"_hasShrinkwrap":false,"publish_time":1597685690591,"_cnpm_publish_time":1597685690591},"2.0.2":{"name":"property-expr","version":"2.0.2","description":"tiny util for getting and setting deep object props safely","main":"index.js","types":"index.d.ts","scripts":{"test":"node ./test.js","debug":"node --inspect-brk ./test.js"},"repository":{"type":"git","url":"git+https://github.com/jquense/expr.git"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@monasticpanic Jason Quense"},"license":"MIT","prettier":{"singleQuote":true,"semi":false},"gitHead":"845958250bf4951125346c3fd41cf9e776be3240","bugs":{"url":"https://github.com/jquense/expr/issues"},"homepage":"https://github.com/jquense/expr#readme","_id":"property-expr@2.0.2","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"shasum":"fff2a43919135553a3bc2fdd94bdb841965b2330","size":4196,"noattachment":false,"key":"/property-expr/-/property-expr-2.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-2.0.2.tgz"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/property-expr_2.0.2_1583512262320_0.15581613863884125"},"_hasShrinkwrap":false,"publish_time":1583512262534,"_cnpm_publish_time":1583512262534},"2.0.1":{"name":"property-expr","version":"2.0.1","description":"tiny util for getting and setting deep object props safely","main":"index.js","types":"index.d.ts","scripts":{"test":"node ./test.js","debug":"node --inspect-brk ./test.js"},"repository":{"type":"git","url":"git+https://github.com/jquense/expr.git"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@monasticpanic Jason Quense"},"license":"MIT","prettier":{"singleQuote":true,"semi":false},"gitHead":"126ac16e84c9bfb923044ce5e7a7cb75184056c5","bugs":{"url":"https://github.com/jquense/expr/issues"},"homepage":"https://github.com/jquense/expr#readme","_id":"property-expr@2.0.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"shasum":"a677e10cf00b30657d5d64da4cb7c2cd8811f680","size":4190,"noattachment":false,"key":"/property-expr/-/property-expr-2.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-2.0.1.tgz"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/property-expr_2.0.1_1583512137607_0.6519144440756042"},"_hasShrinkwrap":false,"publish_time":1583512137698,"_cnpm_publish_time":1583512137698},"2.0.0":{"name":"property-expr","version":"2.0.0","description":"tiny util for getting and setting deep object props safely","main":"index.js","types":"index.d.ts","scripts":{"test":"node ./test.js","debug":"node --inspect-brk ./test.js"},"repository":{"type":"git","url":"git+https://github.com/jquense/expr.git"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@monasticpanic Jason Quense"},"license":"MIT","prettier":{"singleQuote":true,"semi":false},"gitHead":"fe236711052f95239bb8dda0236c8d7e3847502f","bugs":{"url":"https://github.com/jquense/expr/issues"},"homepage":"https://github.com/jquense/expr#readme","_id":"property-expr@2.0.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"shasum":"d0e97bb6800c2d07af0a84617f62e2862849f87f","size":4178,"noattachment":false,"key":"/property-expr/-/property-expr-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-2.0.0.tgz"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/property-expr_2.0.0_1583428304410_0.7003126230608774"},"_hasShrinkwrap":false,"publish_time":1583428304504,"_cnpm_publish_time":1583428304504},"1.5.1":{"name":"property-expr","version":"1.5.1","description":"tiny util for getting and setting deep object props safely","main":"index.js","scripts":{"test":"node ./test.js","debug":"node --inspect-brk ./test.js"},"repository":{"type":"git","url":"git+https://github.com/jquense/expr.git"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@monasticpanic Jason Quense"},"license":"MIT","prettier":{"singleQuote":true,"semi":false},"gitHead":"8b19a6a53ca375abc0a57085e17110e40496a576","bugs":{"url":"https://github.com/jquense/expr/issues"},"homepage":"https://github.com/jquense/expr#readme","_id":"property-expr@1.5.1","_npmVersion":"6.1.0","_nodeVersion":"10.1.0","_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"dist":{"shasum":"22e8706894a0c8e28d58735804f6ba3a3673314f","size":5023,"noattachment":false,"key":"/property-expr/-/property-expr-1.5.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-1.5.1.tgz"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/property-expr_1.5.1_1533837948896_0.007191646337095126"},"_hasShrinkwrap":false,"publish_time":1533837948977,"_cnpm_publish_time":1533837948977},"1.5.0":{"name":"property-expr","version":"1.5.0","description":"tiny util for getting and setting deep object props safely","main":"index.js","scripts":{"test":"node ./test.js","debug":"node --inspect-brk ./test.js"},"repository":{"type":"git","url":"git+https://github.com/jquense/expr.git"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@monasticpanic Jason Quense"},"license":"MIT","prettier":{"singleQuote":true,"semi":false},"gitHead":"6dee4cefb550a4d8524e2a1ebd469b77e58d1525","bugs":{"url":"https://github.com/jquense/expr/issues"},"homepage":"https://github.com/jquense/expr#readme","_id":"property-expr@1.5.0","_npmVersion":"6.1.0","_nodeVersion":"10.1.0","_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"dist":{"shasum":"05cda8be960720a8b3dc337c77a2a914c0e84c5f","size":5019,"noattachment":false,"key":"/property-expr/-/property-expr-1.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-1.5.0.tgz"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/property-expr_1.5.0_1532090415576_0.13904057463919672"},"_hasShrinkwrap":false,"publish_time":1532090415645,"_cnpm_publish_time":1532090415645},"1.3.2":{"name":"property-expr","version":"1.3.2","description":"tiny util for getting and setting deep object props safely","main":"index.js","scripts":{"test":"node ./test.js","debug":"node --inspect-brk ./test.js"},"repository":{"type":"git","url":"git+https://github.com/jquense/expr.git"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@monasticpanic Jason Quense"},"license":"MIT","prettier":{"singleQuote":true,"semi":false},"gitHead":"b70236059538f630025eefc3422cb166f1ce49a6","bugs":{"url":"https://github.com/jquense/expr/issues"},"homepage":"https://github.com/jquense/expr#readme","_id":"property-expr@1.3.2","_npmVersion":"5.6.0","_nodeVersion":"9.2.1","_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"dist":{"shasum":"2df60082c243e79118924ecb8f7ae7183b4fc43e","size":4174,"noattachment":false,"key":"/property-expr/-/property-expr-1.3.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-1.3.2.tgz"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/property-expr_1.3.2_1525282762910_0.37644996377237194"},"_hasShrinkwrap":false,"publish_time":1525282762965,"_cnpm_publish_time":1525282762965},"1.4.0":{"name":"property-expr","version":"1.4.0","description":"tiny util for getting and setting deep object props safely","main":"index.js","scripts":{"test":"node ./test.js","debug":"node --inspect-brk ./test.js"},"repository":{"type":"git","url":"git+https://github.com/jquense/expr.git"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@monasticpanic Jason Quense"},"license":"MIT","prettier":{"singleQuote":true,"semi":false},"gitHead":"4f3bf8cf9bf458d67453d85df87bfdad2349a945","bugs":{"url":"https://github.com/jquense/expr/issues"},"homepage":"https://github.com/jquense/expr#readme","_id":"property-expr@1.4.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.3","_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"dist":{"shasum":"e28cfe4e7a5a231fb14c8ad687a93a5342e05a8c","size":4243,"noattachment":false,"key":"/property-expr/-/property-expr-1.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-1.4.0.tgz"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/property-expr-1.4.0.tgz_1514897898433_0.2385963371489197"},"directories":{},"publish_time":1514897899340,"_hasShrinkwrap":false,"_cnpm_publish_time":1514897899340},"1.3.1":{"name":"property-expr","version":"1.3.1","description":"tiny util for getting and setting deep object props safely","main":"index.js","scripts":{"test":"node ./test.js"},"repository":{"type":"git","url":"https://github.com/theporchrat/expr/"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@theporchrat Jason Quense"},"license":"MIT","gitHead":"2b0b62fa333c8d03a2c17f3365a6d801e8184068","_id":"property-expr@1.3.1","_shasum":"53f4af8ecd3c6db00ed98b8e0f6affbe880faa0a","_from":".","_npmVersion":"1.4.27","_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"dist":{"shasum":"53f4af8ecd3c6db00ed98b8e0f6affbe880faa0a","size":4013,"noattachment":false,"key":"/property-expr/-/property-expr-1.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-1.3.1.tgz"},"directories":{},"publish_time":1429638400495,"_cnpm_publish_time":1429638400495,"_hasShrinkwrap":false},"1.3.0":{"name":"property-expr","version":"1.3.0","description":"tiny util for getting and setting deep object props safely","main":"index.js","scripts":{"test":"node ./test.js"},"repository":{"type":"git","url":"https://github.com/theporchrat/expr/"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@theporchrat Jason Quense"},"license":"MIT","gitHead":"7a2a887fce680e985e29b9c33ca9a28f5bc7e531","_id":"property-expr@1.3.0","_shasum":"b8968418c8435d543b4d60c04f985dc883eebe6c","_from":".","_npmVersion":"1.4.27","_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"dist":{"shasum":"b8968418c8435d543b4d60c04f985dc883eebe6c","size":3983,"noattachment":false,"key":"/property-expr/-/property-expr-1.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-1.3.0.tgz"},"directories":{},"publish_time":1429634461854,"_cnpm_publish_time":1429634461854,"_hasShrinkwrap":false},"1.2.0":{"name":"property-expr","version":"1.2.0","description":"tiny util for getting and setting deep object props safely","main":"index.js","scripts":{"test":"node ./test.js"},"repository":{"type":"git","url":"https://github.com/theporchrat/expr/"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@theporchrat Jason Quense"},"license":"MIT","gitHead":"63cf81b4e0b95b793083bbf5edd119dec7406433","_id":"property-expr@1.2.0","_shasum":"956883daee380ccd3064911f85ba97762689bb31","_from":".","_npmVersion":"1.4.27","_npmUser":{"name":"monastic.panic","email":"monastic.panic@gmail.com"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"dist":{"shasum":"956883daee380ccd3064911f85ba97762689bb31","size":3850,"noattachment":false,"key":"/property-expr/-/property-expr-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-1.2.0.tgz"},"directories":{},"publish_time":1429584157425,"_cnpm_publish_time":1429584157425,"_hasShrinkwrap":false},"1.0.1":{"name":"property-expr","version":"1.0.1","description":"tiny util for getting and setting deep object props safely","main":"index.js","scripts":{"test":"node ./test.js"},"repository":{"type":"git","url":"https://github.com/theporchrat/expr/"},"keywords":["expr","expression","setter","getter","deep","property","Justin-Beiber","accessor"],"author":{"name":"@theporchrat Jason Quense"},"license":"MIT","_id":"property-expr@1.0.1","dist":{"shasum":"f7cc85a8f70ee30c8631ef5edccb520f25821bfb","size":3258,"noattachment":false,"key":"/property-expr/-/property-expr-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-1.0.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"theporchrat","email":"theporchrat@gmail.com"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"directories":{},"publish_time":1409795205528,"_cnpm_publish_time":1409795205528,"_hasShrinkwrap":false},"1.0.0":{"name":"property-expr","version":"1.0.0","description":"tiny util for getting and setting deep object props safely","main":"index.js","scripts":{"test":"node ./test.js"},"repository":{"type":"git","url":"https://github.com/theporchrat/expr/"},"keywords":["expr","expression","setter","getter","deep"],"author":{"name":"@theporchrat Jason Quense"},"license":"MIT","_id":"property-expr@1.0.0","dist":{"shasum":"dc9bdd5b58a3b0bcc7e739746b2e064e9d13723a","size":3224,"noattachment":false,"key":"/property-expr/-/property-expr-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/property-expr/download/property-expr-1.0.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"theporchrat","email":"theporchrat@gmail.com"},"maintainers":[{"name":"monastic.panic","email":"monastic.panic@gmail.com"}],"directories":{},"publish_time":1409794987384,"_cnpm_publish_time":1409794987384,"_hasShrinkwrap":false}},"readme":"# expr\n\nTiny property path utilities, including path parsing and metadata and deep property setters and getters\n\n    npm install property-expr\n\n## Use\n\nSetters and getters:\n\n```js\nlet expr = require('property-expr')\nlet obj = {\n  foo: {\n    bar: ['hi', { buz: { baz: 'found me!' } }]\n  }\n}\n\nlet getBaz = expr.getter('foo.bar[1][\"buz\"].baz')\nlet setBaz = expr.setter('foo.bar[1][\"buz\"].baz')\n\nconsole.log(getBaz(obj)) // => 'found me!'\nsetBaz(obj, 'set me!')\nconsole.log(obj.foo.bar[1].buz.baz) // => 'set me!'\n```\n\n### `getter(expression, [ safeAccess ])`\n\nReturns a function that accepts an obj and returns the value at the supplied expression. You can create a \"safe\" getter, which won't error out when accessing properties that don't exist, reducing existance checks befroe property access:\n\n```js\nexpr.getter('foo.bar.baz', true)({ foo: {} }) // => undefined\n//instead of val = foo.bar && foo.bar.baz\n```\n\n### `setter(expression)`\n\nReturns a function that accepts an obj and a value and sets the property pointed to by the expression to the supplied value.\n\n### `expr(expression, [ safeAccess], [ paramName = 'data'])`\n\nReturns a normalized expression string pointing to a property on root object\n`paramName`.\n\n    expr.expr(\"foo['bar'][0].baz\", true, 'obj') // => \"(((obj.foo || {})['bar'] || {})[0])\"\n\n### `split(path) -> Array`\n\nReturns an array of each path segment.\n\n```js\nexpr.split(\"foo['bar'][0].baz\") // [ \"foo\", \"'bar'\", \"0\", \"baz\"]\n```\n\n### `forEach(path, iterator[, thisArg])`\n\nIterate through a path but segment, with some additional helpful metadata about the segment. The iterator function is called with: `pathSegment`, `isBracket`, `isArray`, `idx`, `segments`\n\n```js\nexpr.forEach('foo[\"bar\"][1]', function(\n  pathSegment,\n  isBracket,\n  isArray,\n  idx,\n  segments\n) {\n  // 'foo'   -> isBracket = false, isArray = false, idx = 0\n  // '\"bar\"' -> isBracket = true,  isArray = false, idx = 1\n  // '0'     -> isBracket = false, isArray = true,  idx = 2\n})\n```\n\n### `normalizePath(path)`\n\nReturns an array of path segments without quotes and spaces.\n\n```js\nexpr.normalizePath('foo[\"bar\"][ \"1\" ][2][ \" sss \" ]')\n// ['foo', 'bar', '1', '2', ' sss ']\n```\n\n### `new Cache(maxSize)`\n\nJust an utility class, returns an instance of cache. When the max size is exceeded, cache clears its storage.\n\n```js\nvar cache = new Cache(2)\ncache.set('a', 123) // returns 123\ncache.get('a') // returns 123\ncache.clear()\n\ncache.set('a', 1)\ncache.set('b', 2) // cache contains 2 values\ncache.set('c', 3) // cache was cleaned automatically and contains 1 value\n```\n\n### CSP\n\nThis pacakge used to rely on `new Function` to compile setters and getters into fast\nreusable functions. Since `new Function` is forbidden by folks using Content Security Policy `unsafe-eval`\nwe've moved away from that approach. I believe that for most cases the perf hit is not noticable\nbut if it is in your case please reach out.\n\nIf you really want to use the old version require `property-expr/compiler` instead\n","_attachments":{},"homepage":"https://github.com/jquense/expr#readme","bugs":{"url":"https://github.com/jquense/expr/issues"},"license":"MIT"}