{"_id":"jexl","_rev":"35-95790f0e796cf520ca531a7d37cc7bf5","name":"jexl","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","dist-tags":{"latest":"2.3.0"},"versions":{"0.1.0":{"name":"jexl","version":"0.1.0","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","directories":{"test":"test"},"scripts":{"test":"mocha -R spec test","prepublish":"gulp"},"repository":{"type":"git","url":"https://github.com/TechnologyAdvice/jexl"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TechnologyAdvice/jexl/issues"},"homepage":"https://github.com/TechnologyAdvice/jexl","devDependencies":{"browserify":"^9.0.3","chai":"^2.0.0","chai-as-promised":"^4.2.0","gulp":"^3.8.11","gulp-rename":"^1.2.0","gulp-uglify":"^1.1.0","mocha":"^2.1.0","vinyl-transform":"^1.0.0"},"gitHead":"5ea8c3c54503f477906e7a170a9f79f5b510b018","_id":"jexl@0.1.0","_shasum":"1ad3bca868a75a80800d18caecb7d767a01615bf","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"dist":{"shasum":"1ad3bca868a75a80800d18caecb7d767a01615bf","tarball":"https://registry.npmjs.org/jexl/-/jexl-0.1.0.tgz","integrity":"sha512-hIpARE5lixwDSCsT/G9bPooAcyV4Ey4oxKmM9zctoHb1JoLVmD/P7dwhU5DrauWzFBT4vN7/EF3y9BePEaHebg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICoShmXm1XJgaVgWO8jazCYSedIqfIMjMUdIS3nu0nBqAiAajB7FXzGJHsZt54aQxo3N4Zu6ucJbiYDcexlL6TOoVg=="}]}},"0.2.0":{"name":"jexl","version":"0.2.0","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","directories":{"test":"test"},"scripts":{"test":"mocha -R spec test","prepublish":"gulp"},"repository":{"type":"git","url":"https://github.com/TechnologyAdvice/jexl"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TechnologyAdvice/jexl/issues"},"homepage":"https://github.com/TechnologyAdvice/jexl","devDependencies":{"browserify":"^9.0.3","chai":"^2.0.0","chai-as-promised":"^4.2.0","gulp":"^3.8.11","gulp-rename":"^1.2.0","gulp-uglify":"^1.1.0","mocha":"^2.1.0","vinyl-transform":"^1.0.0"},"gitHead":"ee067f0326a9379ae6ed80052645cc0eecb4ab6c","_id":"jexl@0.2.0","_shasum":"4b43dd291b067562b5bbf0f7e7bdeb34349283ac","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"dist":{"shasum":"4b43dd291b067562b5bbf0f7e7bdeb34349283ac","tarball":"https://registry.npmjs.org/jexl/-/jexl-0.2.0.tgz","integrity":"sha512-Xq/wQvLhcEaZ1U5pVaf9OGUY9J7tcy3dvLxFI/Kf5mzpDoNLOyLrxi9dgkhG29nCe3FODD9kMumfz5uuAbhPOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBJq21kRz++Kx9/9bQLrEiAts5zBnW6+m1vWK81fIONxAiEA/v1ozQzZvauPX/aZDHKF5khGLqP7YYJKysJEpj4pT1Y="}]}},"1.0.0":{"name":"jexl","version":"1.0.0","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","directories":{"test":"test"},"scripts":{"test":"mocha -R spec test","prepublish":"gulp"},"repository":{"type":"git","url":"https://github.com/TechnologyAdvice/jexl"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TechnologyAdvice/jexl/issues"},"homepage":"https://github.com/TechnologyAdvice/jexl","devDependencies":{"browserify":"^9.0.3","chai":"^2.0.0","chai-as-promised":"^4.2.0","gulp":"^3.8.11","gulp-rename":"^1.2.0","gulp-uglify":"^1.1.0","mocha":"^2.1.0","vinyl-transform":"^1.0.0"},"gitHead":"f4201d48126afddcc85aebd2a08cdbda2c5728cd","_id":"jexl@1.0.0","_shasum":"531c4e2568b667aa7f82a37bd0bc8bb3e1bec4dd","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"dist":{"shasum":"531c4e2568b667aa7f82a37bd0bc8bb3e1bec4dd","tarball":"https://registry.npmjs.org/jexl/-/jexl-1.0.0.tgz","integrity":"sha512-wZQWvvW/nJh8jgZOYp9m8PnLQYhwG7dcmdQghT6UlAsARPh0runbj3+0R+D9BBUH4UXPWdwjHMJx1hw6Z560oA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDuR+Kuvt2cxnadOy0BzfOUh+tdbr3q+n6Pgp2qPcg0ZAiBIv2vE5ud1UU1gZ6ZcTwxpESYZdy5avT2auS5Ts1Zsiw=="}]}},"1.0.1":{"name":"jexl","version":"1.0.1","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","directories":{"test":"test"},"scripts":{"test":"mocha -R spec --recursive test","prepublish":"gulp"},"repository":{"type":"git","url":"https://github.com/TechnologyAdvice/jexl"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TechnologyAdvice/jexl/issues"},"homepage":"https://github.com/TechnologyAdvice/jexl","devDependencies":{"browserify":"^9.0.3","chai":"^2.0.0","chai-as-promised":"^4.2.0","gulp":"^3.8.11","gulp-rename":"^1.2.0","gulp-uglify":"^1.1.0","mocha":"^2.1.0","vinyl-transform":"^1.0.0"},"gitHead":"f9d0fbe5d00bc61f7ca84f3c8e929adf6cc1a7bd","_id":"jexl@1.0.1","_shasum":"defa8cc847c8d32c5fec8d62b4c020e65379c1ca","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"dist":{"shasum":"defa8cc847c8d32c5fec8d62b4c020e65379c1ca","tarball":"https://registry.npmjs.org/jexl/-/jexl-1.0.1.tgz","integrity":"sha512-+9aQ6+5ceU62BhiW4HHRGVJ/gU7xdhEiMGz2Ydd1ilXDgZXjD+sEtTjxb5pwOQ4zHEjLhMhOqlGgv85ZNVqCxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQfoHG9BwvX7XROCJk+pcFh/xTikZVYzialnLKoEfKdwIgX+UQUPwFtOwKxy947kSNrGGxZiPaK+yEgezobtmOdJQ="}]}},"1.0.2":{"name":"jexl","version":"1.0.2","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","directories":{"test":"test"},"scripts":{"test":"mocha -R spec --recursive test","prepublish":"gulp"},"repository":{"type":"git","url":"https://github.com/TechnologyAdvice/jexl"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TechnologyAdvice/jexl/issues"},"homepage":"https://github.com/TechnologyAdvice/jexl","devDependencies":{"browserify":"^9.0.3","chai":"^2.0.0","chai-as-promised":"^4.2.0","gulp":"^3.8.11","gulp-rename":"^1.2.0","gulp-uglify":"^1.1.0","mocha":"^2.1.0","vinyl-transform":"^1.0.0"},"gitHead":"b56c07595cbcb05ade8cded761b66963384f0a32","_id":"jexl@1.0.2","_shasum":"9cc11cbc4bdaa3957313673ce00c3a261e3760ad","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"dist":{"shasum":"9cc11cbc4bdaa3957313673ce00c3a261e3760ad","tarball":"https://registry.npmjs.org/jexl/-/jexl-1.0.2.tgz","integrity":"sha512-24mrGK2gMBn6WhhndPJzLEMSYui7S4XNfKRDlumW6/4123CdQWYpKbz8/jl6ZIeJKdxxkJgs7Kfqqq9kO6LeaQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICwUB1kcd+DtrpMTUm5PB1T/vriEQGjf6BPgDShNOIu0AiEApGH5KDthl+QX9eKxMfSZoCaFUQjAOp6Ofce680Oe0oo="}]}},"1.1.0":{"name":"jexl","version":"1.1.0","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","directories":{"test":"test"},"scripts":{"test":"mocha -R spec --recursive test","prepublish":"gulp"},"repository":{"type":"git","url":"https://github.com/TechnologyAdvice/jexl"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TechnologyAdvice/jexl/issues"},"homepage":"https://github.com/TechnologyAdvice/jexl","devDependencies":{"browserify":"^9.0.3","chai":"^2.0.0","chai-as-promised":"^4.2.0","gulp":"^3.8.11","gulp-rename":"^1.2.0","gulp-uglify":"^1.1.0","mocha":"^2.1.0","vinyl-transform":"^1.0.0"},"gitHead":"8d1201a9b6ef4c80e8f411d7e128eb88aa9b7e67","_id":"jexl@1.1.0","_shasum":"b8dce5f02ce79ee8b731a5c310c9f96601eb2766","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"dist":{"shasum":"b8dce5f02ce79ee8b731a5c310c9f96601eb2766","tarball":"https://registry.npmjs.org/jexl/-/jexl-1.1.0.tgz","integrity":"sha512-XUNRXP4bE4rVHmIL14Mt7yeagWRhbPnYJYPhQhSNr1wBASUf8/QDJRYZdTiSQXYumNCsvAHa6uTK6UCUQmUT4w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDCaGrag4FOxM5sFBCMeC7U58lI6fEEfHcX02H/WuHDEAiEAuP22ZRxGwtIeCtgV48aRcT6fkmbjENdXHoTTpqm9GuE="}]}},"1.1.1":{"name":"jexl","version":"1.1.1","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","directories":{"test":"test"},"scripts":{"test":"mocha -R spec --recursive test","prepublish":"gulp"},"repository":{"type":"git","url":"https://github.com/TechnologyAdvice/jexl"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TechnologyAdvice/jexl/issues"},"homepage":"https://github.com/TechnologyAdvice/jexl","devDependencies":{"browserify":"^9.0.3","chai":"^2.0.0","chai-as-promised":"^4.2.0","gulp":"^3.8.11","gulp-rename":"^1.2.0","gulp-uglify":"^1.1.0","mocha":"^2.1.0","vinyl-transform":"^1.0.0"},"gitHead":"e4f4b9cad2cf751accc204b9c93c7c7d2a973518","_id":"jexl@1.1.1","_shasum":"f3f419481507a22b908f927721bba0dfc2946188","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"dist":{"shasum":"f3f419481507a22b908f927721bba0dfc2946188","tarball":"https://registry.npmjs.org/jexl/-/jexl-1.1.1.tgz","integrity":"sha512-Ak5BcH5XHQFjh2CedkBfKKcB6/GHJYT1GgCiRRVpzjB+DPiBhdHA2qEYWyaL+jHbknz1CkPOF4EPzViFo8SEGQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBQAYGXd+FsZmzeSNrIp2k+Scz+r4LWAdiVllXTyDS8wAiBtwVwV4dU2i/sflbZZjZL81YgN8LLa7Q1kGV+orEjw0A=="}]}},"1.1.2":{"name":"jexl","version":"1.1.2","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","directories":{"test":"test"},"scripts":{"test":"istanbul cover _mocha -- -R spec --recursive test","prepublish":"gulp"},"repository":{"type":"git","url":"https://github.com/TechnologyAdvice/jexl"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TechnologyAdvice/jexl/issues"},"homepage":"https://github.com/TechnologyAdvice/jexl","devDependencies":{"browserify":"^9.0.3","chai":"^2.0.0","chai-as-promised":"^4.2.0","gulp":"^3.8.11","gulp-istanbul":"^0.6.0","gulp-istanbul-enforcer":"^1.0.3","gulp-mocha":"^2.0.0","gulp-rename":"^1.2.0","gulp-uglify":"^1.1.0","istanbul":"^0.3.8","mocha":"^2.1.0","vinyl-transform":"^1.0.0"},"gitHead":"b88dcb36fcaf8f53bf00482babac39ed8df7b88c","_id":"jexl@1.1.2","_shasum":"64d02c4dc1e260a90fbc5b3f3eac2022a0c94cb0","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"dist":{"shasum":"64d02c4dc1e260a90fbc5b3f3eac2022a0c94cb0","tarball":"https://registry.npmjs.org/jexl/-/jexl-1.1.2.tgz","integrity":"sha512-S3ruIPmm/JdBqQgBuvLxTsyVdZ/LqSzdcCoWTfBIoiJP1asF4XK9/WU/eU8KPRGoZhqcw/Hy/6WoYoQYkWJ/lg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDdSNC310eROpB0PJOxUHvgHZ4v0sz+P6apNj2vmEtqzAiEAzs45xTwzozi6+Lbc/e30bVYAM7YhXQELBHUFP3JJoro="}]}},"1.1.3":{"name":"jexl","version":"1.1.3","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","directories":{"test":"test"},"scripts":{"test":"istanbul cover _mocha -- -R spec --recursive test","prepublish":"gulp"},"repository":{"type":"git","url":"git+https://github.com/TechnologyAdvice/jexl.git"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TechnologyAdvice/jexl/issues"},"homepage":"https://github.com/TechnologyAdvice/jexl","devDependencies":{"browserify":"=9.0.3","chai":"^2.0.0","chai-as-promised":"^4.2.0","gulp":"=3.8.11","gulp-istanbul":"^0.6.0","gulp-istanbul-enforcer":"^1.0.3","gulp-mocha":"^2.0.0","gulp-rename":"=1.2.0","gulp-uglify":"=1.1.0","istanbul":"^0.3.8","mocha":"^2.1.0","vinyl-transform":"=1.0.0"},"gitHead":"0e10249510a5b6e5c202e898f3851ecb013992fd","_id":"jexl@1.1.3","_shasum":"7b95c1c1f4af9430adc8bc26dd7a42867579f783","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"dist":{"shasum":"7b95c1c1f4af9430adc8bc26dd7a42867579f783","tarball":"https://registry.npmjs.org/jexl/-/jexl-1.1.3.tgz","integrity":"sha512-eXyASrwWzgQpNAieAsp0LrNckrfQEcCvinrR4YgyRB2MtDIY5qXLMAAh2+xDTR4zIUcmJhzMYJVATL6NId5NTA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMMjGJU0P8wVWqhiWJAdkntqbVCxBDRmwYECqCSpLaGgIhAJ/DhkJ1JYnE/wsQLK6QbOy90627aWm+kgVigYcpgAfz"}]},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jexl-1.1.3.tgz_1461333971619_0.21600830019451678"}},"1.1.4":{"name":"jexl","version":"1.1.4","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","directories":{"test":"test"},"scripts":{"test":"istanbul cover _mocha -- -R spec --recursive test","prepublish":"gulp"},"repository":{"type":"git","url":"git+https://github.com/TechnologyAdvice/jexl.git"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TechnologyAdvice/jexl/issues"},"homepage":"https://github.com/TechnologyAdvice/jexl","devDependencies":{"browserify":"=9.0.3","chai":"^2.0.0","chai-as-promised":"^4.2.0","gulp":"=3.8.11","gulp-istanbul":"^0.6.0","gulp-istanbul-enforcer":"^1.0.3","gulp-mocha":"^2.0.0","gulp-rename":"=1.2.0","gulp-uglify":"=1.1.0","istanbul":"^0.3.8","mocha":"^2.1.0","vinyl-transform":"=1.0.0"},"gitHead":"0cc2a9107a276905a1d02cf9fbe94531596fffa3","_id":"jexl@1.1.4","_shasum":"35cf86f881ea219d1e215c7a41e2e747ce6ee8a6","_from":".","_npmVersion":"2.15.5","_nodeVersion":"4.4.4","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"dist":{"shasum":"35cf86f881ea219d1e215c7a41e2e747ce6ee8a6","tarball":"https://registry.npmjs.org/jexl/-/jexl-1.1.4.tgz","integrity":"sha512-XgCaDrDfHfUDHm2xwihiYJTY0sKaEJ01nsP87zQNiFHqiL852mYZoVDz/ld2AXXKLKl7thNSMy4igTVWhoxNCg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9weftIuFwFYsFqrIMZt3lK2Ssf3KHYZQpvKC9dS6wzwIgZ68EnSRbWkA7mTws3oDFWHcYZQIdSWHvWyoeas5Vf7w="}]},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jexl-1.1.4.tgz_1462568392681_0.36264530336484313"}},"2.0.0":{"name":"jexl","version":"2.0.0","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","scripts":{"lint":"standard","test":"npm run lint && NODE_PATH=./ RESOURCES_PATH=./lib jest --coverage --colors","test:watch":"NODE_PATH=./ RESOURCES_PATH=./lib jest --watchAll --colors"},"repository":{"type":"git","url":"git+https://github.com/TomFrost/jexl.git"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TomFrost/jexl/issues"},"homepage":"https://github.com/TomFrost/jexl","devDependencies":{"jest":"^23.6.0","standard":"^12.0.1"},"standard":{"env":["jest"]},"jest":{"testEnvironment":"node","verbose":true,"testPathIgnorePatterns":[],"coverageThreshold":{"global":{"branches":85,"functions":90,"lines":95,"statements":95}},"collectCoverageFrom":["lib/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/"]},"gitHead":"de2370ec711a346dd12a48fd989dad8745ebc3a7","_id":"jexl@2.0.0","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"dist":{"integrity":"sha512-MKeelOOBHJvCvGoTI8zxN6XT/PRI0q3XOBWqJy2MIOJ5cu3D29dU2scCGRnAOBa+PNyDF235cMVSEtCTO8z6Vg==","shasum":"c1ccb6e38fce670c934ee0e3b17d1514aefe04c7","tarball":"https://registry.npmjs.org/jexl/-/jexl-2.0.0.tgz","fileCount":18,"unpackedSize":86855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcM69nCRA9TVsSAnZWagAAyBAP/i5U3IH6dk1sclq0astL\nrxHfVVvZugBH0L14tVpAzqOEeM4Ota7QWhLXt8HAH+kweUJjrbmbwugh/PAx\nSBy1xkuT1h022FcQWa2kaKCODHaN99WlZA3XRC1pFee0A7cIzmJOrl4Umz39\nvSX1RNsb/Sjrd82VNClLbgUChI1NjjX0pzXLxAqwgUg8RUWN6abGYXF5W3my\nHgxNTXDI2zFNx4xWA2mMgR2wvvoHpwAxgxaFvbT4QoVtH03zpZ14IDgHANtC\ncZcPT0NmhxN4dMLvRi7hE8dDxosZGyrEEu3ZOCfymnGORERu/EveUSA9016V\nBc3vty8XDqA+Y2h/b6rWkTla6hb3VxpwKGoRVeuIb3FWvwIePw09xPUK6X4E\nDyp2HPATpZ3pzaUH9IYF9SGpHCiajpkH7J1C625SoL7hMbQ4p8roEes+TYQK\nv69du4f7gABe1lMD1UTJlPl4bYO+YlC99Vi+jFklRn3x/wAlqJ7z20tfO+mP\nS1u8scNKWYeI4pwzikyeLTf5iuanTFqDa1WDNd2FKYaLtt+qBbyR+CnNByp0\nozLLelv2yijZY7JkpBA3WPQRaFCrCqplEuZRPuGXmCFV6oOqvSQI2njcMBfU\nUJpgoEXqJ2xfyb4CHTI91wzoEv02uPLAmYCTC5HcGPBf9g8c8ln4A6PHnD7c\nJ8wT\r\n=X/zF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCB1glSgduPqAQexuq8HuXnd3YgwcvKt91angfH09hvIgIgFsJva4f0iXd81ao0xQgMQlCCohq9oV2CigQMjPYztU0="}]},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jexl_2.0.0_1546891111002_0.6600430937209492"},"_hasShrinkwrap":false},"2.0.1":{"name":"jexl","version":"2.0.1","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","scripts":{"lint":"standard","test":"npm run lint && NODE_PATH=./ RESOURCES_PATH=./lib jest --coverage --colors","test:watch":"NODE_PATH=./ RESOURCES_PATH=./lib jest --watchAll --colors"},"repository":{"type":"git","url":"git+https://github.com/TomFrost/jexl.git"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TomFrost/jexl/issues"},"homepage":"https://github.com/TomFrost/jexl","devDependencies":{"jest":"^23.6.0","standard":"^12.0.1"},"standard":{"env":["jest"]},"jest":{"testEnvironment":"node","verbose":true,"testPathIgnorePatterns":[],"coverageThreshold":{"global":{"branches":85,"functions":90,"lines":95,"statements":95}},"collectCoverageFrom":["lib/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/"]},"gitHead":"d0e82fa525828c4214549631cec294183602e087","_id":"jexl@2.0.1","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"dist":{"integrity":"sha512-qFrbZ87byJBG3MdC4n8zbvqBs7ctr/d6eHwRmIFWatu27J4KH5yn6wMqtCfifM0B3mhQhqJZJCj+3Jaaz/jbkg==","shasum":"34b20e91e434df8952383062b3db5bfb5b756aa5","tarball":"https://registry.npmjs.org/jexl/-/jexl-2.0.1.tgz","fileCount":18,"unpackedSize":87824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNBYFCRA9TVsSAnZWagAAVyMP/2zv2uO4rz925Cx89+Wb\nkUZYRTZu5F4r1P5GNINV7AjiRKATb88E1o6dBZp0+Pzl9dxFLoo79odzihKH\nqGZXpQz6/iXkLemZtJn6+xdeKb+GR1TO0/yKmXNnIhfFA9IFIIK9Z8818NRg\nrvB0UYNdrpH9OoXwGqZOp/QSVD20fYVSNNgFqEwCwXOvq7+BBy3FHIjBi+TJ\nVwCJAtF/VgOsxg000iaqIjORXsvor2RshlT4Mlvd9Sd6LJeVVL6Fpzoe7Mk7\ncIcvgLslOJmJez8aOmK46TjZz213EXQABlCxeSxz9VO+g8OgHhW2e9Bhmy6r\nZTNRCGXmrAllRsxo+MtlDCSezgeFOSNOsrUfsKYyzSuLNXVzltGxeu2G9BW4\nxV1slo/N+fq7NFkpULNHV2snU3VAkuGGdGPLpAjD08IEtub8eq97YVs4a35O\n/Pqt0vSlwvSXuR4KmIZV7TbjYUKJoxq6vKriqQLrzF0SxLkPy9N/Etg+DHzk\nEZvjSwvJI9pbBMu6MbJehZualsRCNhZmGCslVgjys2DOqZRSPZDubHLwC8yB\naL22PXYRNZ9V+FELHAm4iipS2CmvDOAb+ofvR/aEatB32QS6ROa+OugGx4YW\naWUgMTFIRIjDDBMpItfbLBd5UkKNzt/Ledlbmc8CrHJwk2CP1zAl6bBh7A33\ndvfS\r\n=MCXe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCD5i8n7p24r9Mvh26D8H4Q+jgl1SWcVUXGtCSzHD6xcgIgRgoR/dfTXUG92YaTrvRR1S+IODCy9HM9xgUFIttf7+s="}]},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jexl_2.0.1_1546917380816_0.6459721686370825"},"_hasShrinkwrap":false},"2.0.2":{"name":"jexl","version":"2.0.2","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","scripts":{"lint":"standard","test":"npm run lint && NODE_PATH=./ RESOURCES_PATH=./lib jest --coverage --colors","test:watch":"NODE_PATH=./ RESOURCES_PATH=./lib jest --watchAll --colors"},"repository":{"type":"git","url":"git+https://github.com/TomFrost/jexl.git"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TomFrost/jexl/issues"},"homepage":"https://github.com/TomFrost/jexl","devDependencies":{"jest":"^23.6.0","standard":"^12.0.1"},"standard":{"env":["jest"]},"jest":{"testEnvironment":"node","verbose":true,"testPathIgnorePatterns":[],"coverageThreshold":{"global":{"branches":85,"functions":90,"lines":95,"statements":95}},"collectCoverageFrom":["lib/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/"]},"gitHead":"3e8f8d7cb219370cab7ccda9c42a761b94ba61bb","_id":"jexl@2.0.2","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"dist":{"integrity":"sha512-f1wGGemxXilpvLKSvfeyfVnzGIEW1d4AIKJ8+DCBg1nmXkjbaNt/hGbJOw1vBcY2W/Hb8gq2JL2L94cwAJiIlQ==","shasum":"a745d4a102db3b6fc870d40e7f2ba2b22efa9d38","tarball":"https://registry.npmjs.org/jexl/-/jexl-2.0.2.tgz","fileCount":18,"unpackedSize":88063,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRoZDCRA9TVsSAnZWagAA+iIP/iWHEsg2R5CSDoUQOInY\n7Vr44mNO8yzfX1ezlMdfrxOWCoR2Ppdo2Wo1MrI+RVGw6RFvq4iItewBSK2i\nf0benq5r6O/X8oGKMeNr5D895NXTm/5Buk/I/BKDa4ehxZ3D5lOuUaLJwyYX\nOx9nUQD391uuu1fpMTKfX1j2rXRTigfVyVAm+rgE737AwzeFTtXFCG8PR55o\n9/pINNPKcj0MRi896L+I8MVSPU74grbElS/P2ZFu6f06qU+dvwUfgg+cBHPh\nNZUBDXf5RPAoEifvYZvAWtuHUqpnG3a8b/2GqxBhEgdiInfF/ohsizLNMddK\nc5iU/cch/mmq5xCagX4AoisDGjAxjF28b3T7dAaYBr5i3sgZTlzEADu+1K1d\nENt11bor2z0P7LcoQynWXBOsa6YkolpYtOvW0fOi7mGm4ogiA1XrVartbi0r\nLJRqAWDZfprzedls5WZ8zU1JJL+xtr3xlyz0UrO/q+T08b9RhxZQU2mt4wb7\nNlH3ybSSu+fnriElTFdieQmf4xYKrFjrU40jbqRlElianxtHilgHsyj5nnmO\nPZ0yCepWNt6C1+d2mH8QVn7f3MORw6uFlnBmIPjXralYbmdXD0LRDw9ES1D6\nvoOPj2T2FuNYwn/8WgknKD7C5zSjUB9JY+PC9zXb9kGxs4k+ZTtbOlpITqN+\nDdDi\r\n=yoXj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAfhTaiXM/ygNbhnIWu8nIowO9yzXMEkrVyIb9E10NZkAiBHKECNipzRQtdyZJzLAsAYY4dqrXCXDeakLN2JNOIYfw=="}]},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jexl_2.0.2_1548125763206_0.9692340983621697"},"_hasShrinkwrap":false},"2.1.0":{"name":"jexl","version":"2.1.0","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","scripts":{"lint":"standard","test":"npm run lint && NODE_PATH=./ RESOURCES_PATH=./lib jest --coverage --colors","test:watch":"NODE_PATH=./ RESOURCES_PATH=./lib jest --watchAll --colors"},"repository":{"type":"git","url":"git+https://github.com/TomFrost/jexl.git"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TomFrost/jexl/issues"},"homepage":"https://github.com/TomFrost/jexl","devDependencies":{"jest":"^23.6.0","standard":"^12.0.1"},"standard":{"env":["jest"]},"jest":{"testEnvironment":"node","verbose":true,"testPathIgnorePatterns":[],"coverageThreshold":{"global":{"branches":85,"functions":90,"lines":95,"statements":95}},"collectCoverageFrom":["lib/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","./lib/PromiseSync.js"]},"gitHead":"9cbdc169ca231535ed29676bb9b690c77ba7978a","_id":"jexl@2.1.0","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"dist":{"integrity":"sha512-WltzrdpAgwjMni9WzRANrfMJhxfrYXRalCmnWdVCw7Foz2BBSpMaZ6OBkE9Hmqo9WWvFwlGplh52uBvxsU0gXw==","shasum":"ea33e8b78143938b80362cd87f4411468434f97d","tarball":"https://registry.npmjs.org/jexl/-/jexl-2.1.0.tgz","fileCount":19,"unpackedSize":92251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRrAmCRA9TVsSAnZWagAAAx8P/R3AeDr7FIYBSZvmwLu8\nNVA6BKOmgohOwwQx9LhXdYkvYE07PQ46wD5gWA50KIRfP+2OgPZYPxOiiT3y\nwD9+T6sPM0p24Hi9HOKQelXVm/pHwGmwccjfT2GNoJeLJGgjp48ZeihEW12B\no0f3sKVlktbwXOb26t1SWX4S5ibAsZWWnlpI0CUoRDuTHFHRuLyWFc1w8SWx\nIQjZ+o7k9AqFuSxQXQ+JF1csfWnDtORTkGyQuedmmDX7dacphvm4sf5u0Vs5\nxy8Rb6Ps0tk9ELVAFtOrbeZjTrzwkB4/suUUeaH2g8/6cz+wPVhJzLqB0XmB\nFvXZK6tOZTiSUt5zfXrO0l+67D4RCw5TQz7AADCOFfqXpeKz0xGDxoJqUJSt\nCfW2R484Aywga3MEVKEn5H7M+iH1uRJITgXBE/RK4XEkLCCyyTLkNZG/x6iX\noHExN+LNH9eygxbte2ErJNJHOy/Vawyj40w5r/K4VxTOhO8Zuy7lvHgGyGNn\nqe12hiHp+1Id4enMKJtQ4MMtswnOVaQLtQyzeZo3ddiVsVdIryIG2C3LKXeq\nQsfICrLuwTTTZjIXScbaJlvaKTA2RDdYMW3jlSW3PhGueJAhrV3UdQbx45ZV\nJ1SdFj6Kyg2zb8seWXXHLzxcec1/G8ZfC3Gb4vXSBczHpR25rjhp2nCy2PuX\ntw+W\r\n=HUQD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDsTeSQNwM4Sj3wSl9artMUmUDc86cKB4cEzCSM7WrYAIhALLcx8xYjxQygBXkGAq0idEOCEQMN7uaiKwAAgVjCDhY"}]},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jexl_2.1.0_1548136485512_0.08367417184596504"},"_hasShrinkwrap":false},"2.1.1":{"name":"jexl","version":"2.1.1","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","scripts":{"lint":"standard","test":"npm run lint && NODE_PATH=./ RESOURCES_PATH=./lib jest --coverage --colors","test:watch":"NODE_PATH=./ RESOURCES_PATH=./lib jest --watchAll --colors"},"repository":{"type":"git","url":"git+https://github.com/TomFrost/jexl.git"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TomFrost/jexl/issues"},"homepage":"https://github.com/TomFrost/jexl","devDependencies":{"jest":"^23.6.0","standard":"^12.0.1"},"standard":{"env":["jest"]},"jest":{"testEnvironment":"node","verbose":true,"testPathIgnorePatterns":[],"coverageThreshold":{"global":{"branches":85,"functions":90,"lines":95,"statements":95}},"collectCoverageFrom":["lib/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","./lib/PromiseSync.js"]},"gitHead":"6766bca2a52ea7e9f1a18e9caa5549553198dfc3","_id":"jexl@2.1.1","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"dist":{"integrity":"sha512-a+dZiuYIKl0nPYdAe7sJ8D/bCAbemwLjLypcT2brXtft/Mi3titp1QRCpTkaHrp+qeno8DKFxVpVKYNvw1AV3A==","shasum":"d4f2cb9e488ff737f73acc08c5afed37e07f886b","tarball":"https://registry.npmjs.org/jexl/-/jexl-2.1.1.tgz","fileCount":19,"unpackedSize":92717,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSU8XCRA9TVsSAnZWagAA9FEP/j0I688u3nKGokg85o8i\nsvctoZS3Y57nLE7EtOgeLqPnlByRV2nyuLnE2Tkl/nEZX0I4t+ejeqVNCYUM\npBKwIQJVWXjEN/ewtP3ELrsxmLnMq0eBOLHMwWZ90HSimktkPZqJx6cdUyRW\nPmlBhvJ8UyLDqxQga2ZMpkEJsENkw55/wj7YNzAH90lXK/xkFkmrKkIYBoQP\nNzKNynlO41v0rydmrrlo2lBDe6SQjcTg4NNL7HiajUPL2s17RuY0CtsbbP/Y\n5NtUBLZxixFNoZYkLc8H6cu3kp9JW5xnWzEe39A7D6pHMxpVmQHIMplC6eKF\nySSRndRbmga6wHf8+/ks0tBpTLrPYOBdPf0cskp4A0ASrQ02TI0gIgdTkGnX\nM9ruPtXHlAdPUhsvv3NQmRj8yZQ8yLujNCEsq7RO+nWq6IToa3uUOt26ZRUO\nXczajKun4kmJjJY8Bnr2+RLT31DrNeoThuVNar+TxO/m4dfj7at3pflyUwcN\n+NtP9ksq0nHXNm8vmGZmknb+siekTAWZjz9AxlXvWPJWQx363YTHNVTq8j26\nxyOehmgqSgLihNPxaI2sjEUf18M4gWMkGQ4lBL+hPGQ2HlLUB8REx9ozfrh6\nf54/W3uBll1BL9SLSzteG6k+PaaQMimv8gi3sK1xkqCJ3aax1aTfyz0lrNA0\n+5N6\r\n=C+8G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDF3KPcd4fqqU4PkSHUEcedICWxxUcwlQ8COFU7rBPvJwIhAK5leBTMjiZ1TUe8ve0hVTJNomR7lAHKCiVZ+5MluEZ+"}]},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jexl_2.1.1_1548308246459_0.4317782068925664"},"_hasShrinkwrap":false},"2.2.0":{"name":"jexl","version":"2.2.0","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","scripts":{"format":"prettier --write '**/*.{json,js,md}'","lint":"eslint '**/*.js'","test":"npm run lint && NODE_PATH=./ RESOURCES_PATH=./lib jest --coverage --colors","test:watch":"NODE_PATH=./ RESOURCES_PATH=./lib jest --watchAll --colors"},"repository":{"type":"git","url":"git+https://github.com/TomFrost/jexl.git"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TomFrost/jexl/issues"},"homepage":"https://github.com/TomFrost/jexl","devDependencies":{"eslint":"^6.3.0","eslint-config-prettier":"^6.1.0","eslint-plugin-prettier":"^3.1.0","husky":"^3.0.4","jest":"^24.9.0","lint-staged":"^9.2.5","prettier":"^1.18.2"},"eslintIgnore":["node_modules","coverage"],"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"**/*.{md,json}":["prettier --write","git add"],"**/*.js":["eslint --fix","git add"]},"jest":{"testEnvironment":"node","verbose":true,"testPathIgnorePatterns":[],"coverageThreshold":{"global":{"branches":85,"functions":90,"lines":95,"statements":95}},"collectCoverageFrom":["lib/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","./lib/PromiseSync.js"]},"gitHead":"f9c3bbf8929269b09ddac4da3a9174fb0928b7b6","_id":"jexl@2.2.0","_nodeVersion":"12.6.0","_npmVersion":"6.11.2","dist":{"integrity":"sha512-7Ba6/gUM5A452Jm0QTW9zBwn8BkauamUsyHZAf43EDqyjhaO8NOlJ0PuuoaKyksRNccPSxSZ9z6qMH/p03PJkA==","shasum":"e71c79ab6a41f0a8bc55776c6aeac790decb371c","tarball":"https://registry.npmjs.org/jexl/-/jexl-2.2.0.tgz","fileCount":24,"unpackedSize":104295,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbmx0CRA9TVsSAnZWagAA9oIP/3FdfQ8OEDzXmF2jv015\nMvOCcRTDzsDd/xl7uJE3UemNPiQLnvyIdMjeYb2Q7i1vrH/tFzCDnyhjWZF0\nP1qFpchCMsU2J1ksCGIIY/avfmzCu4K8OsvYiZ12oerg3IHAj3T6t5emnly8\n3Rso1uNPxCAK8jqstGRMWcp0liYv5cYKlZ/0Ri8ALZ+SI4l6HLjzyY0yMdKN\nmzoUx1Zny+AmY2fihI5m3LZ331O6W2rfCHj2Yb5t1iW5CxWlPQ0tYt+H1aZM\nqgy2rwSfAO+oUJgGDx1zzZRwLaUYjM5qzZqudjQcXRdYL27zKNmtp9Al4dmE\nPleLXX5A5obxOyryUJIEsbilpdYGKqG3YfR6wpWZg7lGkMdFsjovLXBZklE8\n+e3ZigRTfw+uMZkvUHiQ0CUFR8FG1ewzO7IEgIyyasAVUhj30fGfmy+hogHD\nXus1B+QbnaRrNyl4RsJMyqnVwBSInQa7r8qnogsHLlJVnVMYlxBqYIfUd2mH\nM9GVj9nxMzlrHKzT72v2HHAxBXvCJ6v/fJ3IR3+Pffb/E5PmbQP8YGvOfsl4\n/fYBF93/RN9HxH5t7WLJyCN5hvxmjSxtckvoStQfvWFKCgoIV746DeTvUKPZ\nvyGQq6HMEJ7IXSO3d0yEk5teGIjWmremfUUpGHJkvqPbwVd+8PFQno1KehY8\nnKqV\r\n=TIek\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH172R+jCAE3orYPwHGqdZ6br84HN5KLV4XFcR4Xs+enAiAw3piRmPLzmhKwDr5MLw1lcF4Z8ZYuXLQAjuSe9uIcew=="}]},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jexl_2.2.0_1567517811986_0.28621624055882844"},"_hasShrinkwrap":false},"2.2.1":{"name":"jexl","version":"2.2.1","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","scripts":{"format":"prettier --write '**/*.{json,js,md}'","lint":"eslint '**/*.js'","test":"npm run lint && NODE_PATH=./ RESOURCES_PATH=./lib jest --coverage --colors","test:watch":"NODE_PATH=./ RESOURCES_PATH=./lib jest --watchAll --colors"},"repository":{"type":"git","url":"git+https://github.com/TomFrost/jexl.git"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TomFrost/jexl/issues"},"homepage":"https://github.com/TomFrost/jexl","devDependencies":{"eslint":"^6.3.0","eslint-config-prettier":"^6.1.0","eslint-plugin-prettier":"^3.1.0","husky":"^3.0.4","jest":"^24.9.0","lint-staged":"^9.2.5","prettier":"^1.18.2"},"eslintIgnore":["node_modules","coverage"],"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"**/*.{md,json}":["prettier --write","git add"],"**/*.js":["eslint --fix","git add"]},"jest":{"testEnvironment":"node","verbose":true,"testPathIgnorePatterns":[],"coverageThreshold":{"global":{"branches":85,"functions":90,"lines":95,"statements":95}},"collectCoverageFrom":["lib/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","./lib/PromiseSync.js"]},"gitHead":"169803448709052b0ebbbecf5405e5ccfaa474cb","_id":"jexl@2.2.1","_nodeVersion":"12.6.0","_npmVersion":"6.11.2","dist":{"integrity":"sha512-KrxxKPioq3aC4yoRdXrOcuHQL4qik9SNPnJg593hrdqVwHW+TPfap1KLUwUpjZPCZeRm3DWm6EypZ9hWI4UeMA==","shasum":"1a4fe96707f4794826f492c3f45a6ddd6c49cffb","tarball":"https://registry.npmjs.org/jexl/-/jexl-2.2.1.tgz","fileCount":24,"unpackedSize":105116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbrTyCRA9TVsSAnZWagAAEsoP/2JHU/qTcRKHDSqbtwF6\n7icaoBtf21Co162Ubb5vh90VQaPY56v3/4g4TenIISnV7TGio8/a/eMH971K\n7YzeXD7whRqQZafnr/UUaV1vwo3aMNSDFoGs3yzAks6q+UziQt9tFxtNAlm/\n70RRzURBA1drwZFjyyD3PTXdWQamdgvzw/px3rNMhVt4TjlI93M/7TcITdKH\nkB1GNHpCI7ykvU8g4H4RrpVly+fTveAks4BFSrwyQV9fFeiSbCZ1Wn/sqcKY\nP9/wN8vZ/25tsVpyRHqMzZ4BFMtqACvZbczD595DGlA83R8kN2xP1KyiTAeV\ndoSadk/9ZaaYMJ5Nue+zSMJrars3rXekO3HFFut08UMlVUySeCYdylmdNeXv\nLo1D8951g+EsZsmRPsn24ZU0fz5Ng0o5B3Nc4finr2iXUuRXx6//RF56PFD0\nZu4H3yaYoztPsIPdM/3gRl3c9/SDR+0Ya+cdwMTGuwPzbbC8opvmFkAzuL3Y\np+1CODSm4duubmQZlDfsLnuo7vPywTl4wgDNXMBnKQeMmoi3rWyrNy+4Q3L5\n9RjyfB2XhEB70A2bHASWw4cXeiObjIzKnT6EabG3fGqeoEVay3Qsrvssc4Yz\n2ZrajxLWx4IoVDrXAi6A66e+HHlAAuggH19vrY7Kipy/WzR/LMkqJ6bhra/v\nOyv+\r\n=u1L5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPVTQUMDsudE6r198MaJa88s3Y4RdqBY8hC2NazCzEIwIgIK9K8GEB2VRKrH8N79kJjjmiMLb/OF1J4m4K4S1bR94="}]},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jexl_2.2.1_1567536369838_0.6007604008804779"},"_hasShrinkwrap":false},"2.2.2":{"name":"jexl","version":"2.2.2","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"lib/Jexl.js","scripts":{"format":"prettier --write '**/*.{json,js,md}'","lint":"eslint '**/*.js'","test":"npm run lint && NODE_PATH=./ RESOURCES_PATH=./lib jest --coverage --colors","test:watch":"NODE_PATH=./ RESOURCES_PATH=./lib jest --watchAll --colors"},"repository":{"type":"git","url":"git+https://github.com/TomFrost/jexl.git"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TomFrost/jexl/issues"},"homepage":"https://github.com/TomFrost/jexl","devDependencies":{"eslint":"^6.3.0","eslint-config-prettier":"^6.1.0","eslint-plugin-prettier":"^3.1.0","husky":"^3.0.4","jest":"^24.9.0","lint-staged":"^9.2.5","prettier":"^1.18.2"},"eslintIgnore":["node_modules","coverage"],"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"**/*.{md,json}":["prettier --write","git add"],"**/*.js":["eslint --fix","git add"]},"jest":{"testEnvironment":"node","verbose":true,"testPathIgnorePatterns":[],"coverageThreshold":{"global":{"branches":85,"functions":90,"lines":95,"statements":95}},"collectCoverageFrom":["lib/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","./lib/PromiseSync.js"]},"gitHead":"d0aaecf657b300a14a6e257755051264af2e02a4","_id":"jexl@2.2.2","_nodeVersion":"12.9.1","_npmVersion":"6.11.3","dist":{"integrity":"sha512-HYDGbiZtGLbaxp1b0S7Nqbtegu5zhxaUBzsrMIpoEJDNr1M8lSuowpO7ziXldc/+wGGvwkZYQSS8mW2cPpiGgA==","shasum":"eb06cd84684a52b6408be94604c5529f416ccd2f","tarball":"https://registry.npmjs.org/jexl/-/jexl-2.2.2.tgz","fileCount":24,"unpackedSize":105642,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdecECCRA9TVsSAnZWagAAcrcP/1Ulh6LoaY2ghi5aIS4W\nI9Xojyg3l5V5y/3CgKQRQ7XQoL9z4xQW0awGzKdOiW428ZWGA46RIHx7n8rk\nrn8fMWWP7UsghOthjTXZTmaDbOMwtlRbQIQ17NlgXJgR5TiCh0Swc8FLmqnl\nb47VfDvvUtB30NSHnxpR5HeSjXONYmGqCoe2JB661oPXWzoL1gTu7qWiEttB\nsB2kiJMZDwz1jFrPOpLYHt0JDNuta+1U/YGC0Tda0PSaMeEn3DE/iHEcos5x\nSbtaIfYRHLbcdOSP5QVexiuyKH6dsHfl+fR6tdGjqdOCTDM1h1CmbidzbaPs\noVCQ6Ilosmpk6W0b2o6gg4Lmn/nt7aHGw3p8trRO+Z5dWYMnaptGOeOYB48/\ne4X7YZNHdYjrODbxKnyIHplE9AhO5cVGSvAmocSTbOAhRBtZ7yduyJzBEPU6\nN4GNGY0JtNG302Og6c86d+aPS1nXG89xFNPQjOzrtW0yVG6auDGkvKnESdas\nL7HZP2RA7d5oUXx6c5sde8eisSbjOuc0AS0GbzAB4+A1tMXd/F/uaKzoEh+z\nQjqx1nnmYW3klYUW8V35Y9rkKPU2UBzsxz9k5MvIkhET/YQ9PP/btmiqnUC6\n+Alr2TjGIfhAzdGw+V7CHwyWZuahhENS/BRRumbLHihqIKrm2r5EWuPkohnn\nFSq4\r\n=H8c+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFaSIx90DpBIGA2V4sevrq1YaMGzwt0bcDnO4kKHDu66AiAICaz89hIArorh7Pxu8Rc4/LfwFF66GCMwWQwnBiLr8Q=="}]},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jexl_2.2.2_1568260353957_0.9761833894595593"},"_hasShrinkwrap":false},"2.3.0":{"name":"jexl","version":"2.3.0","description":"Javascript Expression Language: Powerful context-based expression parser and evaluator","main":"dist/Jexl.js","scripts":{"format":"prettier --write '**/*.{json,js,md}'","lint":"eslint '**/*.js'","test":"npm run lint && NODE_PATH=./ RESOURCES_PATH=./lib jest --coverage --colors","test:watch":"NODE_PATH=./ RESOURCES_PATH=./lib jest --watchAll --colors","build":"babel lib -d dist","prepublishOnly":"npm test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/TomFrost/jexl.git"},"keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"license":"MIT","bugs":{"url":"https://github.com/TomFrost/jexl/issues"},"homepage":"https://github.com/TomFrost/jexl","eslintIgnore":["node_modules","coverage"],"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"**/*.{md,json}":["prettier --write","git add"],"**/*.js":["eslint --fix","git add"]},"jest":{"testEnvironment":"node","verbose":true,"testPathIgnorePatterns":[],"coverageThreshold":{"global":{"branches":85,"functions":90,"lines":95,"statements":95}},"collectCoverageFrom":["lib/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","./lib/PromiseSync.js"]},"devDependencies":{"@babel/cli":"^7.10.1","@babel/core":"^7.10.2","@babel/plugin-transform-runtime":"^7.10.1","@babel/preset-env":"^7.10.2","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","husky":"^4.2.5","jest":"^25.5.4","lint-staged":"^10.2.2","prettier":"^2.0.5"},"babel":{"plugins":["@babel/plugin-transform-runtime"],"presets":[["@babel/env",{"targets":{"ie":11}}]]},"dependencies":{"@babel/runtime":"^7.10.2"},"gitHead":"29d1ac0e1fef05ff1b6ad8d9449472ccb8cfb091","_id":"jexl@2.3.0","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-ecqln4kTWNkMwbFvTukOMDq1jy1GcPzvshhMp/s4pxU86xdLDq7HbDRa87DfMfbSAOS8V6EwvCdfs0S+w/iycA==","shasum":"73e0694d86ca917ac24fed753f201c1db59a46c5","tarball":"https://registry.npmjs.org/jexl/-/jexl-2.3.0.tgz","fileCount":14,"unpackedSize":87929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYL45CRA9TVsSAnZWagAApf4P/jrGyrqt2zx+Kj6ZXfSP\ng/kbn0Xff03WVJkDmKfv/fD8P67A/JO55xSBpOEYZ63/OicR6v8CphFcFB8P\n+9/FJrm6Ku4lD9GLChzGoD0PqvopeRx9YLp24pHV8MxG7slRMSvDazMprHzr\n8nbLp5xgKMAmDmnMa3FeGvu9vuH04X3NGcKPVRIGPfMNb2gGIs2n1/+mwBZ9\nx4GjsZLqT/YF7ooHwesMQtflHvlrXVMQjX7wSHZW0NmAaxiW5L6imPR4lFwD\nnekMvfs72Yx/9KvqN3dMwAt16leVpxjleHxAbfD/JTYHGuCmk40qqR+jacor\npop9bqGxU6icV77m85o185s9N2cKug+lZkuf0ivN0ox8Vlj9orJ8QxFe+25g\nwcXbv0xx/hEWdZbRAao7IxB/BdO4YU4+QEfrUe/7fUSy9XM7I5FVCOz+clEm\nHvmjem3KMvfkTqeglX3acp68PO9XB+wzIwVAUEzdpwQLlLf8GnrwjzEuL6Od\nK5Sf0M32LJTSOP3l+hUxqODedIu33n7pPFDYHuzYVYyr4zdHm+XLzY1ISA6z\ncBcA8R2iMLdX/yMhKy5yo2mUAKYwPlaBpJdtYtm86DUupyS7JlmD0mqkqiWc\nrlcgAMMZJnJf236C2r+9DybXV/oTaJP8kOz5/hF0s+knatnYEWSNURfggWbe\npWop\r\n=QPLt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVI1u29PV2bMKu7ir9bBgLVqjNGeAZXwh4SMxhmqmRcAIgIaiEgLLfBNz4NG8oC99Ro1xyk8uoxaRZnAJGiVRWNiw="}]},"maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"_npmUser":{"name":"tomfrost","email":"tom@frosteddesign.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jexl_2.3.0_1600175672863_0.23598025744923534"},"_hasShrinkwrap":false}},"readme":"# Jexl [![Build Status](https://travis-ci.org/TomFrost/Jexl.svg?branch=master)](https://travis-ci.org/TomFrost/Jexl)\n\nJavascript Expression Language: Powerful context-based expression parser and evaluator\n\n## Quick start\n\nUse it with promises or synchronously:\n\n```javascript\nconst context = {\n  name: { first: 'Sterling', last: 'Archer' },\n  assoc: [\n    { first: 'Lana', last: 'Kane' },\n    { first: 'Cyril', last: 'Figgis' },\n    { first: 'Pam', last: 'Poovey' }\n  ],\n  age: 36\n}\n\n// Filter an array asynchronously...\nawait const res = jexl.eval('assoc[.first == \"Lana\"].last', context)\nconsole.log(res) // Output: Kane\n\n// Or synchronously!\nconsole.log(jexl.evalSync('assoc[.first == \"Lana\"].last')) // Output: Kane\n\n// Do math\nawait jexl.eval('age * (3 - 1)', context)\n// 72\n\n// Concatenate\nawait jexl.eval('name.first + \" \" + name[\"la\" + \"st\"]', context)\n// \"Sterling Archer\"\n\n// Compound\nawait jexl.eval(\n  'assoc[.last == \"Figgis\"].first == \"Cyril\" && assoc[.last == \"Poovey\"].first == \"Pam\"',\n  context\n)\n// true\n\n// Use array indexes\nawait jexl.eval('assoc[1]', context)\n// { first: 'Cyril', last: 'Figgis' }\n\n// Use conditional logic\nawait jexl.eval('age > 62 ? \"retired\" : \"working\"', context)\n// \"working\"\n\n// Transform\njexl.addTransform('upper', (val) => val.toUpperCase())\nawait jexl.eval('\"duchess\"|upper + \" \" + name.last|upper', context)\n// \"DUCHESS ARCHER\"\n\n// Transform asynchronously, with arguments\njexl.addTransform('getStat', async (val, stat) => dbSelectByLastName(val, stat))\ntry {\n  const res = await jexl.eval('name.last|getStat(\"weight\")', context)\n  console.log(res) // Output: 184\n} catch (e) {\n  console.log('Database Error', e.stack)\n}\n\n// Functions too, sync or async, args or no args\njexl.addFunction('getOldestAgent', () => db.getOldestAgent())\nawait jexl.eval('age == getOldestAgent().age', context)\n// false\n\n// Add your own (a)synchronous operators\n// Here's a case-insensitive string equality\njexl.addBinaryOp(\n  '_=',\n  20,\n  (left, right) => left.toLowerCase() === right.toLowerCase()\n)\nawait jexl.eval('\"Guest\" _= \"gUeSt\"')\n// true\n\n// Compile your expression once, evaluate many times!\nconst { expr } = jexl\nconst danger = expr`\"Danger \" + place` // Also: jexl.compile('\"Danger \" + place')\ndanger.evalSync({ place: 'zone' }) // Danger zone\ndanger.evalSync({ place: 'ZONE!!!' }) // Danger ZONE!!! (Doesn't recompile the expression!)\n```\n\n## Play with it\n\n- [Jexl Playground](https://czosel.github.io/jexl-playground/) - An interactive Jexl sandbox by Christian Zosel [@czosel](https://github.com/czosel).\n- [Jexl on RunKit](https://npm.runkit.com/jexl) - JS sandbox with Jexl preloaded. Special thanks to Mike Cunneen [@cunneen](https://github.com/cunneen).\n\n## Installation\n\nJexl works on the backend, and on the frontend if bundled using a bundler like Parcel or Webpack.\n\nInstall from npm:\n\n    npm install jexl --save\n\nor yarn:\n\n    yarn add jexl\n\nand use it:\n\n    const jexl = require('jexl')\n\n## Async vs Sync: Which to use\n\nThere is little performance difference between `eval` and `evalSync`. The functional\ndifference is that, if `eval` is used, Jexl can be customized with asynchronous operators,\ntransforms, and even wait for unresolved promises in the context object with zero additional\noverhead or handling on the programmer's part. `evalSync` eliminates those advantages,\nexposing the expression to raw Promise objects if any are returned as the result of a\ncustom transform or operator. However, if your application doesn't require async methods,\nthe `evalSync` API can be simpler to use.\n\n## All the details\n\n### Unary Operators\n\n| Operation | Symbol |\n| --------- | :----: |\n| Negate    |   !    |\n\n### Binary Operators\n\n| Operation        |    Symbol    |\n| ---------------- | :----------: |\n| Add, Concat      |      +       |\n| Subtract         |      -       |\n| Multiply         |      \\*      |\n| Divide           |      /       |\n| Divide and floor |      //      |\n| Modulus          |      %       |\n| Power of         |      ^       |\n| Logical AND      |      &&      |\n| Logical OR       | &#124;&#124; |\n\n### Comparisons\n\n| Comparison                 | Symbol |\n| -------------------------- | :----: |\n| Equal                      |   ==   |\n| Not equal                  |   !=   |\n| Greater than               |   >    |\n| Greater than or equal      |   >=   |\n| Less than                  |   <    |\n| Less than or equal         |   <=   |\n| Element in array or string |   in   |\n\n#### A note about `in`\n\nThe `in` operator can be used to check for a substring:\n`\"Cad\" in \"Ron Cadillac\"`, and it can be used to check for an array element:\n`\"coarse\" in ['fine', 'medium', 'coarse']`. However, the `==` operator is used\nbehind-the-scenes to search arrays, so it should not be used with arrays of\nobjects. The following expression returns false: `{a: 'b'} in [{a: 'b'}]`.\n\n### Ternary operator\n\nConditional expressions check to see if the first segment evaluates to a truthy\nvalue. If so, the consequent segment is evaluated. Otherwise, the alternate\nis. If the consequent section is missing, the test result itself will be used\ninstead.\n\n| Expression                        | Result |\n| --------------------------------- | ------ |\n| \"\" ? \"Full\" : \"Empty\"             | Empty  |\n| \"foo\" in \"foobar\" ? \"Yes\" : \"No\"  | Yes    |\n| {agent: \"Archer\"}.agent ?: \"Kane\" | Archer |\n\n### Native Types\n\n| Type     |            Examples            |\n| -------- | :----------------------------: |\n| Booleans |        `true`, `false`         |\n| Strings  | \"Hello \\\"user\\\"\", 'Hey there!' |\n| Numerics |      6, -7.2, 5, -3.14159      |\n| Objects  |       {hello: \"world!\"}        |\n| Arrays   |      ['hello', 'world!']       |\n\n### Groups\n\nParentheses work just how you'd expect them to:\n\n| Expression                          | Result |\n| ----------------------------------- | :----- |\n| (83 + 1) / 2                        | 42     |\n| 1 < 3 && (4 > 2 &#124;&#124; 2 > 4) | true   |\n\n### Identifiers\n\nAccess variables in the context object by just typing their name. Objects can\nbe traversed with dot notation, or by using brackets to traverse to a dynamic\nproperty name.\n\nExample context:\n\n```javascript\n{\n  name: {\n    first: \"Malory\",\n    last: \"Archer\"\n  },\n  exes: [\n    \"Nikolai Jakov\",\n    \"Len Trexler\",\n    \"Burt Reynolds\"\n  ],\n  lastEx: 2\n}\n```\n\n| Expression        | Result        |\n| ----------------- | ------------- |\n| name.first        | Malory        |\n| name['la' + 'st'] | Archer        |\n| exes[2]           | Burt Reynolds |\n| exes[lastEx - 1]  | Len Trexler   |\n\n### Collections\n\nCollections, or arrays of objects, can be filtered by including a filter\nexpression in brackets. Properties of each collection can be referenced by\nprefixing them with a leading dot. The result will be an array of the objects\nfor which the filter expression resulted in a truthy value.\n\nExample context:\n\n```javascript\n{\n    employees: [\n        {first: 'Sterling', last: 'Archer', age: 36},\n        {first: 'Malory', last: 'Archer', age: 75},\n        {first: 'Lana', last: 'Kane', age: 33},\n        {first: 'Cyril', last: 'Figgis', age: 45},\n        {first: 'Cheryl', last: 'Tunt', age: 28}\n    ],\n    retireAge: 62\n}\n```\n\n| Expression                                    | Result                                                                                |\n| --------------------------------------------- | ------------------------------------------------------------------------------------- |\n| employees[.first == 'Sterling']               | [{first: 'Sterling', last: 'Archer', age: 36}]                                        |\n| employees[.last == 'Tu' + 'nt'].first         | Cheryl                                                                                |\n| employees[.age >= 30 && .age < 40]            | [{first: 'Sterling', last: 'Archer', age: 36},{first: 'Lana', last: 'Kane', age: 33}] |\n| employees[.age >= 30 && .age < 40][.age < 35] | [{first: 'Lana', last: 'Kane', age: 33}]                                              |\n| employees[.age >= retireAge].first            | Malory                                                                                |\n\n### Transforms\n\nThe power of Jexl is in transforming data, synchronously or asynchronously.\nTransform functions take one or more arguments: The value to be transformed,\nfollowed by anything else passed to it in the expression. They must return\neither the transformed value, or a Promise that resolves with the transformed\nvalue. Add them with `jexl.addTransform(name, function)`.\n\n```javascript\njexl.addTransform('split', (val, char) => val.split(char))\njexl.addTransform('lower', (val) => val.toLowerCase())\n```\n\n| Expression                                 | Result                |\n| ------------------------------------------ | --------------------- |\n| \"Pam Poovey\"&#124;lower&#124;split(' ')[1] | poovey                |\n| \"password==guest\"&#124;split('=' + '=')    | ['password', 'guest'] |\n\n#### Advanced Transforms\n\nUsing Transforms, Jexl can support additional string formats like embedded\nJSON, YAML, XML, and more. The following, with the help of the\n[xml2json](https://github.com/buglabs/node-xml2json) module, allows XML to be\ntraversed just as easily as plain javascript objects:\n\n```javascript\nconst xml2json = require('xml2json')\n\njexl.addTransform('xml', (val) => xml2json.toJson(val, { object: true }))\n\nconst context = {\n  xmlDoc: `\n    <Employees>\n      <Employee>\n        <FirstName>Cheryl</FirstName>\n        <LastName>Tunt</LastName>\n      </Employee>\n      <Employee>\n        <FirstName>Cyril</FirstName>\n        <LastName>Figgis</LastName>\n      </Employee>\n    </Employees>`\n}\n\nvar expr = 'xmlDoc|xml.Employees.Employee[.LastName == \"Figgis\"].FirstName'\n\njexl.eval(expr, context).then(console.log) // Output: Cyril\n```\n\n### Functions\n\nWhile Transforms are the preferred way to change one value into another value,\nJexl also allows top-level expression functions to be defined. Use these to\nprovide access to functions that either don't require an input, or require\nmultiple equally-important inputs. They can be added with\n`jexl.addFunction(name, function)`. Like transforms, functions can return a\nvalue, or a Promise that resolves to the resulting value.\n\n```javascript\njexl.addFunction('min', Math.min)\njexl.addFunction('expensiveQuery', async () => db.runExpensiveQuery())\n```\n\n| Expression                                    | Result                    |\n| --------------------------------------------- | ------------------------- |\n| min(4, 2, 19)                                 | 2                         |\n| counts.missions &#124;&#124; expensiveQuery() | Query only runs if needed |\n\n### Context\n\nVariable contexts are straightforward Javascript objects that can be accessed\nin the expression, but they have a hidden feature: they can include a Promise\nobject, and when that property is used, Jexl will wait for the Promise to\nresolve and use that value!\n\n## API\n\n### Jexl\n\n#### jexl.Jexl\n\nA reference to the Jexl constructor. To maintain separate instances of Jexl\nwith each maintaining its own set of transforms, simply re-instantiate with\n`new jexl.Jexl()`.\n\n#### jexl.addBinaryOp(_{string} operator_, _{number} precedence_, _{function} fn_, _{boolean} [manualEval]_)\n\nAdds a binary operator to the Jexl instance. A binary operator is one that\nconsiders the values on both its left and right, such as \"+\" or \"==\", in order\nto calculate a result. The precedence determines the operator's position in the\norder of operations (please refer to `lib/grammar.js` to see the precedence of\nexisting operators). The provided function will be called with two arguments:\na left value and a right value. It should return either the resulting value,\nor a Promise that resolves to the resulting value.\n\nIf `manualEval` is true, the `left` and `right` arguments will be wrapped in\nobjects with an `eval` function. Calling `left.eval()` or `right.eval()` will\nreturn a promise that resolves to that operand's actual value. This is useful to\nconditionally evaluate operands, and is how `&&` and `||` work.\n\n#### jexl.addUnaryOp(_{string} operator_, _{function} fn_)\n\nAdds a unary operator to the Jexl instance. A unary operator is one that\nconsiders only the value on its right, such as \"!\", in order to calculate a\nresult. The provided function will be called with one argument: the value to\nthe operator's right. It should return either the resulting value, or a Promise\nthat resolves to the resulting value.\n\n#### jexl.addFunction(_{string} name_, \\_{function} func)\n\nAdds an expression function to this Jexl instance. See the **Functions**\nsection above for information on the structure of an expression function.\n\n#### jexl.addFunctions(_{{}} map_)\n\nAdds multiple functions from a supplied map of function name to expression\nfunction.\n\n#### jexl.addTransform(_{string} name_, _{function} transform_)\n\nAdds a transform function to this Jexl instance. See the **Transforms**\nsection above for information on the structure of a transform function.\n\n#### jexl.addTransforms(_{{}} map_)\n\nAdds multiple transforms from a supplied map of transform name to transform\nfunction.\n\n#### jexl.compile(_{string} expression_)\n\nConstructs an Expression object around the given Jexl expression string.\nExpression objects allow a Jexl expression to be compiled only once but\nevaluated many times. See the Expression API below. Note that the only\ndifference between this function and `jexl.createExpression` is that this\nfunction will immediately compile the expression, and throw any errors\nassociated with invalid expression syntax.\n\n#### jexl.createExpression(_{string} expression_)\n\nConstructs an Expression object around the given Jexl expression string.\nExpression objects allow a Jexl expression to be compiled only once but\nevaluated many times. See the Expression API below.\n\n#### jexl.getTransform(_{string} name_)\n\n**Returns `{function|undefined}`.** Gets a previously set transform function,\nor `undefined` if no function of that name exists.\n\n#### jexl.eval(_{string} expression_, _{{}} [context]_)\n\n**Returns `{Promise<*>}`.** Evaluates an expression. The context map is optional.\n\n#### jexl.evalSync(_{string} expression_, _{{}} [context]_)\n\n**Returns `{*}`.** Evaluates an expression and returns the result. The context map\nis optional.\n\n#### jexl.expr: _tagged template literal_\n\nA convenient bit of syntactic sugar for `jexl.createExpression`\n\n```javascript\nconst someNumber = 10\nconst expression = jexl.expr`5 + ${someNumber}`\nconsole.log(expression.evalSync()) // 15\n```\n\nNote that `expr` will stay bound to its associated Jexl instance even if it's\npulled out of context:\n\n```javascript\nconst { expr } = jexl\njexl.addTransform('double', (val) => val * 2)\nconst expression = expr`2|double`\nconsole.log(expression.evalSync()) // 4\n```\n\n#### jexl.removeOp(_{string} operator_)\n\nRemoves a binary or unary operator from the Jexl instance. For example, \"^\" can\nbe passed to eliminate the \"power of\" operator.\n\n### Expression\n\nExpression objects are created via `jexl.createExpression`, `jexl.compile`, or\n`jexl.expr`, and are a convenient way to ensure jexl expressions compile only\nonce, even if they're evaluated multiple times.\n\n#### expression.compile()\n\n**Returns self `{Expression}`.** Forces the expression to compile, even if it\nwas compiled before. Note that each compile will happen with the latest grammar\nand transforms from the associated Jexl instance.\n\n#### expression.eval(_{{}} [context]_)\n\n**Returns `{Promise<*>}`.** Evaluates the expression. The context map is\noptional.\n\n#### expression.evalSync(_{{}} [context]_)\n\n**Returns `{*}`.** Evaluates the expression and returns the result. The context\nmap is optional.\n\n## Other implementations\n\n[PyJEXL](https://github.com/mozilla/pyjexl) - A Python-based JEXL parser and evaluator.\n\n## License\n\nJexl is licensed under the MIT license. Please see `LICENSE.txt` for full details.\n\n## Credits\n\nCreated by [Tom Shawver](https://github.com/TomFrost) in 2015 and contributed to by [these great people](https://github.com/TomFrost/Jexl/graphs/contributors).\n\nJexl was originally created at [TechnologyAdvice](http://technologyadvice.com) in Nashville, TN.\n","maintainers":[{"name":"tomfrost","email":"tom@frosteddesign.com"}],"time":{"modified":"2022-06-19T04:17:53.771Z","created":"2015-03-02T15:54:33.970Z","0.1.0":"2015-03-02T15:54:33.970Z","0.2.0":"2015-03-02T22:04:32.349Z","1.0.0":"2015-03-04T20:41:32.370Z","1.0.1":"2015-03-09T03:46:57.978Z","1.0.2":"2015-03-09T03:55:01.811Z","1.1.0":"2015-03-10T20:37:29.272Z","1.1.1":"2015-03-11T17:47:37.849Z","1.1.2":"2015-03-28T02:12:30.574Z","1.1.3":"2016-04-22T14:06:14.211Z","1.1.4":"2016-05-06T20:59:55.285Z","2.0.0":"2019-01-07T19:58:31.119Z","2.0.1":"2019-01-08T03:16:21.000Z","2.0.2":"2019-01-22T02:56:03.312Z","2.1.0":"2019-01-22T05:54:45.633Z","2.1.1":"2019-01-24T05:37:26.597Z","2.2.0":"2019-09-03T13:36:52.137Z","2.2.1":"2019-09-03T18:46:09.997Z","2.2.2":"2019-09-12T03:52:34.121Z","2.3.0":"2020-09-15T13:14:32.964Z"},"homepage":"https://github.com/TomFrost/jexl","keywords":["JSON","expression","evaluator","parser","target","context","jsep","filter","selector"],"repository":{"type":"git","url":"git+https://github.com/TomFrost/jexl.git"},"author":{"name":"Tom Shawver","email":"tom@frosteddesign.com"},"bugs":{"url":"https://github.com/TomFrost/jexl/issues"},"license":"MIT","readmeFilename":"README.md","users":{"timneedham":true,"allain":true,"cwagner":true,"firefoxnx":true}}