{"_id":"spel2js","_rev":"14-b7fe9a5ee3f63d1918166b4b3ae7108a","name":"spel2js","dist-tags":{"latest":"0.2.9"},"versions":{"0.1.0":{"name":"spel2js","version":"0.1.0","keywords":["micro","framework","library"],"author":{"url":"https://github.com/benmarch"},"_id":"spel2js@0.1.0","maintainers":[],"contributors":[{"url":"https://github.com/daniellmb","name":"Daniel Lamb","email":"dlamb.open.source@gmail.com"}],"homepage":"https://github.com/benmarch/spel2js","bugs":{"url":"https://github.com/benmarch/spel2js/issues"},"dist":{"shasum":"09e24c5657e0bf65159aa2a2933c8a57389d2a1c","tarball":"https://registry.npmjs.org/spel2js/-/spel2js-0.1.0.tgz","integrity":"sha512-5C9Bi+LS0qG+tHid9Mu0a2rcX86IS+qh4x1un/g7iBYkAA1riqVoP0CqDjwcs5d2/UdVuDL5ZOuD2rwAcgj3jQ==","signatures":[{"sig":"MEUCIEhM/3RToR3ytlpKcUFF8FhqYpbs7crP/zsyQ6MAfhgMAiEAjRgTlNkoaW0q+KhpFZV28v0xszQiGeu1B5GK57yOfFQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"spel2js.js","_from":".","_shasum":"09e24c5657e0bf65159aa2a2933c8a57389d2a1c","engines":{"node":">=0.10.0"},"gitHead":"d081f5d62e7c8c7f45bbac2bdff891fd0882da05","scripts":{"test":"grunt"},"_npmUser":{"name":"benmarch","email":"bmarch89@gmail.com"},"licenses":[{"url":"http://benmarch.mit-license.org","type":"MIT"}],"repository":{"url":"git://github.com/benmarch/spel2js.git","type":"git"},"_npmVersion":"2.5.1","description":"spel2js scaffolded with generator-microjs v0.1.2.","directories":{},"_nodeVersion":"0.12.0","dependencies":{},"devDependencies":{"grunt":"*","time-grunt":"^1.2.1","grunt-karma":"*","karma-jasmine":"*","karma-coverage":"*","grunt-complexity":"*","load-grunt-tasks":"^3.2.0","grunt-contrib-concat":"^0.5.1","grunt-contrib-jshint":"*","grunt-contrib-uglify":"*","karma-phantomjs-launcher":"*"}},"0.2.1":{"name":"spel2js","version":"0.2.1","keywords":["parse","parser","spring","authorization","spel","spring expression language","expression","spring expression"],"author":{"url":"https://github.com/benmarch","name":"Ben March","email":"bmarch89@gmail.com"},"_id":"spel2js@0.2.1","maintainers":[{"name":"benmarch","email":"bmarch89@gmail.com"}],"homepage":"https://github.com/benmarch/spel2js","bugs":{"url":"https://github.com/benmarch/spel2js/issues"},"dist":{"shasum":"8c42ca3340c907b8ecbc8157a745ebc810de68c6","tarball":"https://registry.npmjs.org/spel2js/-/spel2js-0.2.1.tgz","integrity":"sha512-b4/BShEuXTipF1QgWr+6j1uMK74xLoPgj2rTaaRqZc7l0LhsWjqG6ptawN7VyQSUF9N0yMvAEzSJgNBPPaMu5g==","signatures":[{"sig":"MEYCIQDqYeUNiZbNm/517nBmgB+bgKu1Fh9ehPs4ljwWet4MCQIhAMxef+dGI796aV/dgpzSmN4Z/g79pv2In49F8zW+9y1/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"dist/spel2js.js","_from":".","_shasum":"8c42ca3340c907b8ecbc8157a745ebc810de68c6","engines":{"node":">=0.10.0"},"gitHead":"2d6d68cc4e601d487b63ae25c2ff0dd569851786","scripts":{"test":"grunt"},"_npmUser":{"name":"benmarch","email":"bmarch89@gmail.com"},"licenses":[{"url":"http://www.apache.org/licenses/LICENSE-2.0","type":"Apache v2.0"}],"repository":{"url":"git://github.com/benmarch/spel2js.git","type":"git"},"_npmVersion":"2.7.4","description":"Parse Spring Expression Language in JavaScript","directories":{},"_nodeVersion":"0.12.2","dependencies":{},"devDependencies":{"grunt":"^0.4.5","babelify":"^6.1.2","time-grunt":"^1.2.1","grunt-karma":"^0.11.0","grunt-release":"^0.13.0","karma-jasmine":"^0.3.5","karma-coverage":"^0.4.2","grunt-browserify":"^3.8.0","grunt-complexity":"^0.3.0","karma-browserify":"^4.2.1","load-grunt-tasks":"^3.2.0","grunt-contrib-concat":"^0.5.1","grunt-contrib-jshint":"^0.11.2","grunt-contrib-uglify":"^0.9.1","karma-phantomjs-launcher":"^0.2.0"}},"0.2.2":{"name":"spel2js","version":"0.2.2","keywords":["parse","parser","spring","authorization","spel","spring expression language","expression","spring expression"],"author":{"url":"https://github.com/benmarch","name":"Ben March","email":"bmarch89@gmail.com"},"_id":"spel2js@0.2.2","maintainers":[{"name":"benmarch","email":"bmarch89@gmail.com"}],"homepage":"https://github.com/benmarch/spel2js","bugs":{"url":"https://github.com/benmarch/spel2js/issues"},"dist":{"shasum":"fb5a1e2a4901b3cc656e39ecabd43d841b053dff","tarball":"https://registry.npmjs.org/spel2js/-/spel2js-0.2.2.tgz","integrity":"sha512-ZCMdMDYqzDUVDeDo755L6Tx68EkCF+xlWZdyZR1d5ryIyVTmwjm2Vm0jz/X96s+DagsWJnsQNnq70+4sxY4wfw==","signatures":[{"sig":"MEQCIQCrCHDaBYdV0zyyriry+9NK11cw9lun4fvC8nhtnDmLrQIfBqKVvUcPTcfrs8yhf4LPTgbkSIdP6S3j/GGv9vnBXQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"dist/spel2js.js","engines":{"node":">=0.10.0"},"gitHead":"6eb70a6b5053df4986c76b9cc31df0e2e60faa24","scripts":{"test":"grunt"},"_npmUser":{"name":"benmarch","email":"bmarch89@gmail.com"},"licenses":[{"url":"http://www.apache.org/licenses/LICENSE-2.0","type":"Apache v2.0"}],"repository":{"url":"git://github.com/benmarch/spel2js.git","type":"git"},"_npmVersion":"5.3.0","description":"Parse Spring Expression Language in JavaScript","directories":{},"_nodeVersion":"6.2.1","dependencies":{},"devDependencies":{"grunt":"^0.4.5","babelify":"^6.1.2","time-grunt":"^1.2.1","grunt-karma":"^0.11.0","grunt-release":"^0.13.0","karma-jasmine":"^0.3.5","karma-coverage":"^0.4.2","grunt-browserify":"^3.8.0","grunt-complexity":"^0.3.0","karma-browserify":"^4.2.1","load-grunt-tasks":"^3.2.0","grunt-contrib-concat":"^0.5.1","grunt-contrib-jshint":"^0.11.2","grunt-contrib-uglify":"^0.9.1","karma-phantomjs-launcher":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/spel2js-0.2.2.tgz_1506278442541_0.962705175857991","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"spel2js","version":"0.2.3","keywords":["parse","parser","spring","authorization","spel","spring expression language","expression","spring expression"],"author":{"url":"https://github.com/benmarch","name":"Ben March","email":"bmarch89@gmail.com"},"_id":"spel2js@0.2.3","maintainers":[{"name":"benmarch","email":"bmarch89@gmail.com"}],"homepage":"https://github.com/benmarch/spel2js","bugs":{"url":"https://github.com/benmarch/spel2js/issues"},"dist":{"shasum":"834781719bef6a2be5eb2db6605c4dc7603316ad","tarball":"https://registry.npmjs.org/spel2js/-/spel2js-0.2.3.tgz","integrity":"sha512-1JNGPzTBdPdEJ4sEqtg30b1FMlheOFfxRbhFrlD0sAa3+2syImEGln1yGm83uaeg7L77IA8Uh+bX77ukJ9C1cQ==","signatures":[{"sig":"MEUCIQCvztvwGO6HuCf/cH7xIaqEnpRneNJ2pt+owWJ5vMcjpAIgF1qktcGSiY6+J4zHoM56K6CuMb1wR8Z1pzDc2O7bKD8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"dist/spel2js.js","engines":{"node":">=0.10.0"},"gitHead":"3ba31f4bd7fd0504658365bac2ed24fae0a13ab7","scripts":{"test":"grunt"},"_npmUser":{"name":"benmarch","email":"bmarch89@gmail.com"},"licenses":[{"url":"http://www.apache.org/licenses/LICENSE-2.0","type":"Apache v2.0"}],"repository":{"url":"git://github.com/benmarch/spel2js.git","type":"git"},"_npmVersion":"5.3.0","description":"Parse Spring Expression Language in JavaScript","directories":{},"_nodeVersion":"6.2.1","dependencies":{},"devDependencies":{"grunt":"^0.4.5","karma":"1.7.1","babelify":"^6.1.2","phantomjs":"2.1.7","time-grunt":"^1.2.1","grunt-karma":"^0.11.0","jasmine-core":"2.8.0","grunt-release":"^0.13.0","karma-jasmine":"^0.3.5","karma-coverage":"^0.4.2","grunt-browserify":"^3.8.0","grunt-complexity":"^0.3.0","karma-browserify":"^4.2.1","load-grunt-tasks":"^3.2.0","grunt-contrib-concat":"^0.5.1","grunt-contrib-jshint":"^0.11.2","grunt-contrib-uglify":"^0.9.1","karma-phantomjs-launcher":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/spel2js-0.2.3.tgz_1506279204967_0.41308011556975543","host":"s3://npm-registry-packages"}},"0.2.4":{"name":"spel2js","version":"0.2.4","keywords":["parse","parser","spring","authorization","spel","spring expression language","expression","spring expression"],"author":{"url":"https://github.com/benmarch","name":"Ben March","email":"bmarch89@gmail.com"},"_id":"spel2js@0.2.4","maintainers":[{"name":"benmarch","email":"bmarch89@gmail.com"}],"homepage":"https://github.com/benmarch/spel2js","bugs":{"url":"https://github.com/benmarch/spel2js/issues"},"dist":{"shasum":"a261deef95c7e742b6f6f9f4f880a0d95f1502d9","tarball":"https://registry.npmjs.org/spel2js/-/spel2js-0.2.4.tgz","integrity":"sha512-YXdpgtdYTSr0c5HyWRXggcnGynUzvEJ/cOjS//Yjxz5E+4bIy9ESug/ET+MiPlwi7QZ43SwPj+BMIB2fXRP9Pg==","signatures":[{"sig":"MEUCIGmx0vrNAPwxxxLWENl0rkFncNqkzDk0og9Ox7F2D/BLAiEA5JyAvbfuUSnTGHMzx+E2b/ZARbFNQXC7Vl9z8sacA7E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"dist/spel2js.js","engines":{"node":">=8"},"gitHead":"c34fb328c1d2fd4a4b2a61e472a0b8898b5d99e1","scripts":{"lint":"eslint src/ test/","test":"karma start test/karma.conf.js","build":"webpack --progress","release":"npm test && npm run build && release-it","build:dev":"webpack -d --progress --devtool cheap-module-source-map"},"_npmUser":{"name":"benmarch","email":"bmarch89@gmail.com"},"licenses":[{"url":"http://www.apache.org/licenses/LICENSE-2.0","type":"Apache v2.0"}],"repository":{"url":"git://github.com/benmarch/spel2js.git","type":"git"},"_npmVersion":"5.3.0","description":"Parse Spring Expression Language in JavaScript","directories":{},"_nodeVersion":"8.6.0","dependencies":{},"devDependencies":{"babel":"6.23.0","karma":"1.7.1","eslint":"4.7.2","webpack":"3.6.0","prettier":"1.7.0","phantomjs":"2.1.7","babel-core":"6.26.0","release-it":"3.0.0","babel-eslint":"8.0.1","babel-loader":"7.1.2","jasmine-core":"2.8.0","eslint-loader":"1.9.0","karma-jasmine":"0.3.5","karma-webpack":"2.0.4","babel-register":"6.26.0","karma-coverage":"1.1.1","karma-browserify":"4.2.1","babel-preset-es2015":"6.24.1","babel-preset-es2017":"6.24.1","eslint-plugin-import":"2.7.0","babel-istanbul-loader":"0.1.0","eslint-config-prettier":"2.6.0","eslint-plugin-prettier":"2.3.1","karma-sourcemap-loader":"0.3.7","webpack-node-externals":"1.6.0","webpack-bower-externals":"1.5.4","karma-phantomjs-launcher":"1.0.4","karma-source-map-support":"1.2.0","eslint-config-airbnb-base":"12.0.0","eslint-import-resolver-webpack":"0.8.3"},"_npmOperationalInternal":{"tmp":"tmp/spel2js-0.2.4.tgz_1512591328325_0.684677364770323","host":"s3://npm-registry-packages"}},"0.2.5":{"name":"spel2js","version":"0.2.5","keywords":["parse","parser","spring","authorization","spel","spring expression language","expression","spring expression"],"author":{"url":"https://github.com/benmarch","name":"Ben March","email":"bmarch89@gmail.com"},"_id":"spel2js@0.2.5","maintainers":[{"name":"benmarch","email":"bmarch89@gmail.com"}],"homepage":"https://github.com/benmarch/spel2js","bugs":{"url":"https://github.com/benmarch/spel2js/issues"},"dist":{"shasum":"da6a1dc6f38329c1453bd4b0686355dd646302c0","tarball":"https://registry.npmjs.org/spel2js/-/spel2js-0.2.5.tgz","integrity":"sha512-6JYogBrjyU7E10pqIyxvE4fW8St9WJDNVGJhpOxG76xQqENx9p93XI1RRHPASql+hZify8KCnTyFc9LMFzedIQ==","signatures":[{"sig":"MEYCIQDK6CHDPMcp+A31KBSJGmeQ7f2YWM4pL5OXEpS9/85rHwIhAIY5HDnc1h2w18H2h1bqCuNQXZvF6RmxigBEJ2b66Qqr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"dist/spel2js.js","engines":{"node":">=8"},"gitHead":"849d38d5553a8a00b55d9bdbe8e9645842ce3396","scripts":{"lint":"eslint src/ test/","test":"karma start test/karma.conf.js","build":"webpack --progress","release":"npm test && npm run build && release-it","build:dev":"webpack -d --progress --devtool cheap-module-source-map"},"_npmUser":{"name":"benmarch","email":"bmarch89@gmail.com"},"licenses":[{"url":"http://www.apache.org/licenses/LICENSE-2.0","type":"Apache v2.0"}],"repository":{"url":"git://github.com/benmarch/spel2js.git","type":"git"},"_npmVersion":"5.3.0","description":"Parse Spring Expression Language in JavaScript","directories":{},"_nodeVersion":"8.6.0","dependencies":{},"devDependencies":{"babel":"6.23.0","karma":"1.7.1","eslint":"4.7.2","webpack":"3.6.0","prettier":"1.7.0","phantomjs":"2.1.7","babel-core":"6.26.0","release-it":"3.0.0","babel-eslint":"8.0.1","babel-loader":"7.1.2","jasmine-core":"2.8.0","eslint-loader":"1.9.0","karma-jasmine":"0.3.5","karma-webpack":"2.0.4","babel-register":"6.26.0","karma-coverage":"1.1.1","karma-browserify":"4.2.1","babel-preset-es2015":"6.24.1","babel-preset-es2017":"6.24.1","eslint-plugin-import":"2.7.0","babel-istanbul-loader":"0.1.0","eslint-config-prettier":"2.6.0","eslint-plugin-prettier":"2.3.1","karma-sourcemap-loader":"0.3.7","webpack-node-externals":"1.6.0","webpack-bower-externals":"1.5.4","karma-phantomjs-launcher":"1.0.4","karma-source-map-support":"1.2.0","eslint-config-airbnb-base":"12.0.0","eslint-import-resolver-webpack":"0.8.3"},"_npmOperationalInternal":{"tmp":"tmp/spel2js-0.2.5.tgz_1512683220547_0.4182052295655012","host":"s3://npm-registry-packages"}},"0.2.6":{"name":"spel2js","version":"0.2.6","keywords":["parse","parser","spring","authorization","spel","spring expression language","expression","spring expression"],"author":{"url":"https://github.com/benmarch","name":"Ben March","email":"bmarch89@gmail.com"},"_id":"spel2js@0.2.6","maintainers":[{"name":"benmarch","email":"bmarch89@gmail.com"}],"homepage":"https://github.com/benmarch/spel2js","bugs":{"url":"https://github.com/benmarch/spel2js/issues"},"dist":{"shasum":"756a12910163640ac8805c1753ac9b4890982678","tarball":"https://registry.npmjs.org/spel2js/-/spel2js-0.2.6.tgz","fileCount":128,"integrity":"sha512-etwsE78jqMD3uDv5bvwBVvMznXYBYYfLOnVEDTTvWdwChjiApjSNw7UwBT8jYABGCgl0iLCBcv1HqTyWytBBpQ==","signatures":[{"sig":"MEYCIQCdj+Oifakj5Z1i9pOE3esRS5utkrnGAPM9HhGild93nAIhAPA9H6rzZWNDDsie4Qn3CjEtSjmiBkEtkMiYNF68FJiA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":977981,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdknOcCRA9TVsSAnZWagAAYtYP/0+DmOwUVMkWclO/bkQf\nrB58LsrOKI1bMcokmOkLZTLZ2loJdgNMSnOUCzEiKSofRYqlSKQ6MWymHfA1\nW2nTla3Wyc8moLhJX6PLnjwXS3E06uLUfiEvHzp4fKNzwvGAlQgQlnSxw6MX\nqXrB1aMnOddlj5sWdJShtHvPZDFKVM+TqdZ89DolpwhRrIJPfPUOJKe3qNyC\n5DkptH4CihBxZV2dbLKzVXi0DN+qZB/SueBc0NOULTPTFMV7KKlzjoisEvln\ntMqIS8snLsgpL7G2IqXluGV7MFwGwJIljckquC3RMBuzsb4sfPXiFcoEELuF\nPCOy3IFGk0fW0W/S6OlDzxt3TmJAZxIzwh9VrJV7IGntNoj/QToj3BQZUjKT\nDO7m5knP0fKwF1nRaTOFbU/1DfBUU0JW+stUXYMszm9DOXxIwcxqY5ShTFpI\nkvsWJ8yak9CK6WPWU6qagchIomTZVqKd2GMER2NLC2kJ09QXZwKRBcWEXq19\n928A/ghP0J2QOVIduF5aWNkTYQCBzC2Mi4B477rlYrbbN8Ge1luz9+A2UfCL\n16jep5+9e2DE/DrDOr8FUcRE7akbNfIj4sZCpo0OJII2C01u6/mjP/B8Z2CU\nKEA61+q4wwVWoepA3CJbY3wG5MJyH5LmtzBKkdqfaREu0fd/LJc9W+ncWOec\nG7iA\r\n=MkfI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/spel2js.js","engines":{"node":">=8"},"gitHead":"b66c18a3f44655cc9becf00ac31d8f51583999d6","scripts":{"lint":"eslint src/ test/","test":"karma start test/karma.conf.js","build":"webpack --progress","release":"npm test && npm run build && release-it","build:dev":"webpack -d --progress --devtool cheap-module-source-map"},"_npmUser":{"name":"benmarch","email":"bmarch89@gmail.com"},"licenses":[{"url":"http://www.apache.org/licenses/LICENSE-2.0","type":"Apache v2.0"}],"repository":{"url":"git://github.com/benmarch/spel2js.git","type":"git"},"_npmVersion":"6.1.0","description":"Parse Spring Expression Language in JavaScript","directories":{},"_nodeVersion":"8.6.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"babel":"6.23.0","karma":"1.7.1","eslint":"4.7.2","webpack":"3.6.0","prettier":"1.7.0","phantomjs":"2.1.7","babel-core":"6.26.0","release-it":"3.0.0","babel-eslint":"8.0.1","babel-loader":"7.1.2","jasmine-core":"2.8.0","eslint-loader":"1.9.0","karma-jasmine":"0.3.5","karma-webpack":"2.0.4","babel-register":"6.26.0","karma-coverage":"1.1.1","karma-browserify":"4.2.1","babel-preset-es2015":"6.24.1","babel-preset-es2017":"6.24.1","eslint-plugin-import":"2.7.0","babel-istanbul-loader":"0.1.0","eslint-config-prettier":"2.6.0","eslint-plugin-prettier":"2.3.1","karma-sourcemap-loader":"0.3.7","webpack-node-externals":"1.6.0","webpack-bower-externals":"1.5.4","karma-phantomjs-launcher":"1.0.4","karma-source-map-support":"1.2.0","eslint-config-airbnb-base":"12.0.0","eslint-import-resolver-webpack":"0.8.3"},"_npmOperationalInternal":{"tmp":"tmp/spel2js_0.2.6_1569878940080_0.45706617654548753","host":"s3://npm-registry-packages"}},"0.2.7":{"name":"spel2js","version":"0.2.7","keywords":["parse","parser","spring","authorization","spel","spring expression language","expression","spring expression"],"author":{"url":"https://github.com/benmarch","name":"Ben March","email":"bmarch89@gmail.com"},"_id":"spel2js@0.2.7","maintainers":[{"name":"benmarch","email":"bmarch89@gmail.com"}],"homepage":"https://github.com/benmarch/spel2js","bugs":{"url":"https://github.com/benmarch/spel2js/issues"},"dist":{"shasum":"b286e5f2aeddd19ae4ef77fa968fdca14ca28b4a","tarball":"https://registry.npmjs.org/spel2js/-/spel2js-0.2.7.tgz","fileCount":192,"integrity":"sha512-RRh1/RYkt+t6jHHJ5IlAUdWbvvLlgvu5U/wzNLvMClBzf5U37ybp6qgXYDLUm7zJnlt3aOG2bx5cbli40LnQgA==","signatures":[{"sig":"MEUCIQD8QENptnBd1FCCvP1Fg5cJ3xnZuwibEt2DK/5QXNrBvwIgefdVDrZYJ+G5BUNcbDP7WtAGKVWky7rA6bBra0DeigU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1638224,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdpz5QCRA9TVsSAnZWagAAw5QQAIptWGvnEyYfO8sSu6Ie\n/BNDWYTBqxqQYBfl9HIreTABxngAR2FlvUaYdCieN5NxXoVJ6Ef7D+Nb41Zb\n9peYn6+g4dx1IwNnKsQqhx4ZmyJlw4m3jIVjBkSTH+ml16V7mTfh45mF9yky\nnmgRZLyf9QXdzc2XJgs+8nVx5+cTyrj5pFk3M5oZ87IwaHhKwow4wSuOxg+k\nRhwjZNz0aavFKALYIn9EOsech+EzvGeN20FVEJzjnkL5r48Bn38RMCT5wR9R\nwWglh+G8XrGvAkY2xnCefuOm9l7YhM0YPt+G/OJWQGEOAHeKnY7IugK+Wvw1\nmt4S63pHPeEM/KOwgV+HqjYyBRIk+Kg+8xN7yoF8Q0gKQisD3BPvVXDwWBmt\nBq+2JN6Kpw7CLbwFpewGVOdKUCJXHQl5tl8G9gvQYBJFfJjRJZ5MJb4+COon\nQNmHb3MeRPeP3or+oDiyLotZi5RnlG5oZCTKieJm+4M0/blNFj42rjNLXvNj\nNiq5NkHNflHRO6mdqaKW0/7Kp2Dv4JaNemXwl3Vaaf/j8Ge4ldxX2fnD+AIH\npKrZwr6qDIV19b1zMEJfmnkj0BDqsujsi4UWkfv3MMvCOXtsTKluZ/ik6DUG\nnkBgIPgUiUc/u9TZqx+J/am+6jtC1rCzlwcQC5CVw5sQznhgA3O2+8XTGSwg\nxEFl\r\n=7t2S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/spel2js.js","engines":{"node":">=8"},"gitHead":"357ee523aa9caa2cba2d55b98b9d49b72daa70f2","scripts":{"lint":"eslint src/ test/","test":"karma start test/karma.conf.js","build":"webpack --progress","release":"npm test && npm run build && release-it","build:dev":"webpack -d --progress --devtool cheap-module-source-map"},"_npmUser":{"name":"benmarch","email":"bmarch89@gmail.com"},"licenses":[{"url":"http://www.apache.org/licenses/LICENSE-2.0","type":"Apache v2.0"}],"repository":{"url":"git://github.com/benmarch/spel2js.git","type":"git"},"_npmVersion":"6.1.0","description":"Parse Spring Expression Language in JavaScript","directories":{},"_nodeVersion":"8.6.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"babel":"6.23.0","karma":"1.7.1","eslint":"4.7.2","webpack":"3.6.0","prettier":"1.7.0","phantomjs":"2.1.7","babel-core":"6.26.0","release-it":"3.0.0","babel-eslint":"8.0.1","babel-loader":"7.1.2","jasmine-core":"2.8.0","eslint-loader":"1.9.0","karma-jasmine":"0.3.5","karma-webpack":"2.0.4","babel-register":"6.26.0","karma-coverage":"1.1.1","karma-browserify":"4.2.1","babel-preset-es2015":"6.24.1","babel-preset-es2017":"6.24.1","eslint-plugin-import":"2.7.0","babel-istanbul-loader":"0.1.0","karma-chrome-launcher":"3.1.0","eslint-config-prettier":"2.6.0","eslint-plugin-prettier":"2.3.1","karma-sourcemap-loader":"0.3.7","webpack-node-externals":"1.6.0","webpack-bower-externals":"1.5.4","karma-phantomjs-launcher":"1.0.4","karma-source-map-support":"1.2.0","eslint-config-airbnb-base":"12.0.0","eslint-import-resolver-webpack":"0.8.3"},"_npmOperationalInternal":{"tmp":"tmp/spel2js_0.2.7_1571241551647_0.4420007414804441","host":"s3://npm-registry-packages"}},"0.2.8":{"name":"spel2js","version":"0.2.8","keywords":["parse","parser","spring","authorization","spel","spring expression language","expression","spring expression"],"author":{"url":"https://github.com/benmarch","name":"Ben March","email":"bmarch89@gmail.com"},"_id":"spel2js@0.2.8","maintainers":[{"name":"benmarch","email":"bmarch89@gmail.com"}],"homepage":"https://github.com/benmarch/spel2js","bugs":{"url":"https://github.com/benmarch/spel2js/issues"},"dist":{"shasum":"3ba3b291e5c6bae5c9f703e839294969b61fc691","tarball":"https://registry.npmjs.org/spel2js/-/spel2js-0.2.8.tgz","fileCount":252,"integrity":"sha512-dzYq+v4YV7SPIdNrmvFAUjc0HcgI7b0yoMw7kzOBmlj/GjdOb/+8dVn1I7nLuOS5X2SW+LK3tf2SVkXRjCkWBA==","signatures":[{"sig":"MEQCIBtwSkEAu6lI30dry/pK0Qse/9UTluxJUQe6EAoqOuY3AiAPqyUpuMJE+ehHvgxGil3TfW3/OEDi8xcjzfRR8ubXHg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2289509,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6xfUCRA9TVsSAnZWagAAUHUP/RQJ1aBB7o+wyX/FInHm\n4UVHZKyaBhnaEQ3HVNHp4a79XdqIGE+CcqM0e2Iv33JVbjgFxGO7wk/1nYhj\n3/FV/J+aV+gjLpFIjO/5SR/3J2kW3kczrZWkapqI5IJDY05AkJKBBYxUDxEY\nJC0IaAjoo9G00SHpNAHjUe0YkMcHTft9f2Z59EbZ4gT7jeEttwYDq57WKr87\nDtcFU1KE3oWjZ7qCmxbw/MM6RAP9eOT4/tD7viSHLESbbil7qupnoowHpYWI\nN65WB9z8jId+jl9mr4irJq6cxYCzU+qxszujB8ITtQgfhUTKwtpOGj5+Ab+7\nQVxdKt44Fte1lKspGLbla8jRE62JaN7g3sVF9tPNRx98CufEtpQYhqdtYEeo\nb7cz4tSY/vm8hoMM6d4hCQ/HO+Rq2jzE4QVaviHm8v2lrqlLvGq2f3sIaguy\nsAmkEVXWxbICbNi8kDWcD4hWaA6T6rZ+rnnn7wIe1NdhC4kplqv9K3Oye2lG\nSYuVxnFbRN/JtccSGWOtq+QyDyxP9l5gwI1r6LFWIxeGeR8BRQhQmnkrIaWk\nWEICwwUopJ9QW9vbgLtzEdyocYhaIJLMXD3Hx7j3+rgh29s6KXp+L+o8YZQ2\nlN7hu8fQfsE9UAmbvZntZ37D3oNqMZikvaZvhRz1ZnOPBML79+7b4CtZI4Fp\nQsmD\r\n=//Vu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/spel2js.js","engines":{"node":">=8"},"gitHead":"f30e90eff53d67b905daaf69b49bec5478b3815c","scripts":{"lint":"eslint src/ test/","test":"karma start test/karma.conf.js","build":"webpack --progress","release":"npm test && npm run build && release-it","build:dev":"webpack -d --progress --devtool cheap-module-source-map"},"_npmUser":{"name":"benmarch","email":"bmarch89@gmail.com"},"licenses":[{"url":"http://www.apache.org/licenses/LICENSE-2.0","type":"Apache v2.0"}],"repository":{"url":"git://github.com/benmarch/spel2js.git","type":"git"},"_npmVersion":"6.14.14","description":"Parse Spring Expression Language in JavaScript","directories":{},"_nodeVersion":"14.17.5","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"babel":"6.23.0","karma":"1.7.1","eslint":"4.7.2","webpack":"3.6.0","prettier":"1.7.0","phantomjs":"2.1.7","babel-core":"6.26.0","release-it":"3.0.0","babel-eslint":"8.0.1","babel-loader":"7.1.2","jasmine-core":"2.8.0","eslint-loader":"1.9.0","karma-jasmine":"0.3.5","karma-webpack":"2.0.4","babel-register":"6.26.0","karma-coverage":"1.1.1","karma-browserify":"4.2.1","babel-preset-es2015":"6.24.1","babel-preset-es2017":"6.24.1","eslint-plugin-import":"2.7.0","babel-istanbul-loader":"0.1.0","karma-chrome-launcher":"3.1.0","eslint-config-prettier":"2.6.0","eslint-plugin-prettier":"2.3.1","karma-sourcemap-loader":"0.3.7","webpack-node-externals":"1.6.0","webpack-bower-externals":"1.5.4","karma-phantomjs-launcher":"1.0.4","karma-source-map-support":"1.2.0","eslint-config-airbnb-base":"12.0.0","eslint-import-resolver-webpack":"0.8.3"},"_npmOperationalInternal":{"tmp":"tmp/spel2js_0.2.8_1642797011860_0.4771773738962317","host":"s3://npm-registry-packages"}},"0.2.9":{"name":"spel2js","version":"0.2.9","description":"Parse Spring Expression Language in JavaScript","author":{"name":"Ben March","email":"bmarch89@gmail.com","url":"https://github.com/benmarch"},"homepage":"https://github.com/benmarch/spel2js","bugs":{"url":"https://github.com/benmarch/spel2js/issues"},"licenses":[{"type":"Apache v2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"maintainers":[{"name":"benmarch","email":"bmarch89@gmail.com"}],"repository":{"type":"git","url":"git://github.com/benmarch/spel2js.git"},"main":"dist/spel2js.js","scripts":{"build":"webpack --progress","build:dev":"webpack -d --progress --devtool cheap-module-source-map","test":"karma start test/karma.conf.js","lint":"eslint src/ test/","release":"npm test && npm run build && release-it"},"keywords":["parse","parser","spring","authorization","spel","spring expression language","expression","spring expression"],"dependencies":{},"devDependencies":{"babel":"6.23.0","babel-core":"6.26.0","babel-eslint":"8.0.1","babel-istanbul-loader":"0.1.0","babel-loader":"7.1.2","babel-preset-es2015":"6.24.1","babel-preset-es2017":"6.24.1","babel-register":"6.26.0","eslint":"4.7.2","eslint-config-airbnb-base":"12.0.0","eslint-config-prettier":"2.6.0","eslint-import-resolver-webpack":"0.8.3","eslint-loader":"1.9.0","eslint-plugin-import":"2.7.0","eslint-plugin-prettier":"2.3.1","jasmine-core":"2.8.0","karma":"1.7.1","karma-browserify":"4.2.1","karma-chrome-launcher":"3.1.0","karma-coverage":"1.1.1","karma-jasmine":"0.3.5","karma-phantomjs-launcher":"1.0.4","karma-source-map-support":"1.2.0","karma-sourcemap-loader":"0.3.7","karma-webpack":"2.0.4","phantomjs":"2.1.7","prettier":"1.7.0","release-it":"3.0.0","webpack":"3.6.0","webpack-bower-externals":"1.5.4","webpack-node-externals":"1.6.0"},"engines":{"node":">=8"},"gitHead":"627dd0754e5b9eca72412f2f7362a13c84f218fd","_id":"spel2js@0.2.9","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-wquA+u9as+6cV6DBDHi2UKMEYBpI8L5kn4i2MUIDKZSv5AgDQiw00Z8nH2hxrRypuz+BGDJsfjOLAb9eiaylig==","shasum":"bb8301070f585f292e1ec11b56654468f148d391","tarball":"https://registry.npmjs.org/spel2js/-/spel2js-0.2.9.tgz","fileCount":252,"unpackedSize":2289487,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEK6U5jVBNOH5tJW3/RQl5XD7GRuPv59NoweE8bhxdTJAiBuB2rfNZxYGnLHVbi/grYDzIKCZw5QBRIxX3n2G86BfQ=="}]},"_npmUser":{"name":"benmarch","email":"bmarch89@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/spel2js_0.2.9_1759677016513_0.17404827458157235"},"_hasShrinkwrap":false}},"time":{"created":"2015-06-16T00:04:00.519Z","modified":"2025-10-05T15:10:16.957Z","0.1.0":"2015-06-16T00:04:00.519Z","0.2.1":"2015-06-26T13:19:46.393Z","0.2.2":"2017-09-24T18:40:43.859Z","0.2.3":"2017-09-24T18:53:27.165Z","0.2.4":"2017-12-06T20:15:28.622Z","0.2.5":"2017-12-07T21:47:01.783Z","0.2.6":"2019-09-30T21:29:00.299Z","0.2.7":"2019-10-16T15:59:11.911Z","0.2.8":"2022-01-21T20:30:12.114Z","0.2.9":"2025-10-05T15:10:16.772Z"},"bugs":{"url":"https://github.com/benmarch/spel2js/issues"},"author":{"name":"Ben March","email":"bmarch89@gmail.com","url":"https://github.com/benmarch"},"homepage":"https://github.com/benmarch/spel2js","keywords":["parse","parser","spring","authorization","spel","spring expression language","expression","spring expression"],"repository":{"type":"git","url":"git://github.com/benmarch/spel2js.git"},"description":"Parse Spring Expression Language in JavaScript","maintainers":[{"name":"benmarch","email":"bmarch89@gmail.com"}],"readme":"# spel2js\n[![Build Status][build-image]][build-url]\n[![Test Coverage][coverage-image]][coverage-url]\n[![Dependency Status][depstat-image]][depstat-url]\n[![Bower Version][bower-image]][bower-url]\n[![NPM version][npm-image]][npm-url]\n<!--[![Code GPA][gpa-image]][gpa-url]\n[![IRC Channel][irc-image]][irc-url]\n[![Gitter][gitter-image]][gitter-url]\n[![GitTip][tip-image]][tip-url]-->\n\n## About\n\nSpEL2JS is a plugin that will parse [Spring Expression Language](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html) \nwithin a defined context in JavaScript. This is useful in single-page applications where duplication of authorization \nexpressions for UI purposes can lead to inconsistencies. This library implements a JavaScript version of the parser based\non the documentation in the link above. I did my best to followed the docs as closely as possible, but if you come accross\nan expression that behaves differently than you would expect then please open an issue.\n\n\n## Getting Started\n\nInstall SpEL2JS:\n```sh\n$ npm i -S spel2js \n# or\n$ bower i -S spel2js\n```\n\nOr [download the zip](https://github.com/benmarch/spel2js/archive/master.zip)\n\nInclude the dependency using a module loader or script tag.\n\n## Usage\n\nSpEL2JS exports a singleton with two members:\n```js\nimport spel2js from 'spel2js';\n\nconsole.log(spel2js);\n/*\n{\n  StandardContext,\n  SpelExpressionEvaluator\n}\n*/\n```\n\n### `StandardContext`\n\nThe `StandardContext` is a factory that creates a evaluation context for an expression.\n**NOTE:** This is not the same as the Java `EvaluationContext` class, though it serves a similar purpose.\n\n```js\nlet spelContext = spel2js.StandardContext.create(authentication, principal);\n```\n\nThe `create()` method takes two arguments: `authentication` and `principal`\n\n`authentication` is an instance of Spring's [`Authentication`](https://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/core/Authentication.html) class from Spring Security.\n\n`principal` is any object representing the user (this is just used for reference, and can be any value or structure)\n\n### `SpelExpressionEvaluator`\n\nThe heavy lifting is done using the `SpelExpressionEvaluator` which exposes two functions: `compile()` and `eval()`\n\n`compile()` pre-compiles a SpEL expression, and returns an object with an `eval()` method that takes a context and optional locals:\n\n```js\nimport { StandardContext, SpelExpressionEvaluator } from 'spel2js';\n\nconst expression = '#toDoList.owner == authentication.details.name';\nconst spelContext = StandardContext.create(authentication, principal);\nconst locals = {\n  toDoList: {\n    owner: 'Darth Vader'  \n  }\n};\n\nconst compiledExpression = SpelExpressionEvaluator.compile(expression);\n\ncompiledExpression.eval(spelContext, locals); // true\n```\n\n`eval()` is just a shortcut for immediately evaluating an expression instead of pre-compiling:\n\n```js\nimport { StandardContext, SpelExpressionEvaluator } from 'spel2js';\n\nconst expression = '#toDoList.owner == authentication.details.name';\nconst spelContext = StandardContext.create(authentication, principal);\nconst locals = {\n  toDoList: {\n    owner: 'Darth Vader'  \n  }\n};\n\nSpelExpressionEvaluator.eval(expression, spelContext, locals); // true\n```\n\n### Recommended Usage\n\nCreate a single context that contains information about the current user and reuse it for all evaluations.\nThis way, you only have to supply an expression and locals when evaluating.\n\nAlways pre-compile your expressions! Compilation takes much longer than evaluation; doing it up-front saves CPU when evaluating later.\n\n## Example\n\nSay you are creating a shared to-do list, and you want to allow only the owner of the list to make changes, but anyone can view: \n\n```java\n//ListController.java\n\n@Controller\n@RequestMapping('/todolists')\npublic class ListController {\n\n  public static final String ADD_LIST_ITEM_PERMISSION = \"#toDoList.owner == authentication.details.name\";  \n  ...\n  \n  @PreAuthorize(ADD_LIST_ITEM_PERMISSION)\n  @RequestMapping(value=\"/{toDolistId}/items\", method=RequestMethod.POST)\n  public ResponseEntity<ListItem> addListItem(@MagicAnnotation ToDoList toDoList, @RequestBody ListItem newListItem) {\n    //add the item to the list\n    return new ResponseEntity<ListItem>(newListItem, HttpStatus.CREATED);\n  }\n\n  ...\n}\n```\n\n```js\n//spel-service.js\n\nimport { StandardContext, SpelExpressionEvaluator } from 'spel2js';\n\n// wraps spel2js in a stateful service that simplifies evaluation\nangular.module('ToDo').factory('SpelService', function () {\n    \n  return {\n    context: null,\n    \n    // assume this is called on page load\n    setContext(authentication, principal) {\n      this.context = StandardContext.create(authentication, principal);\n    },\n    \n    getContext() { return this.context; },\n    \n    compile(expression) {\n      const compiledExpression = SpelExpressionEvaluator.compile(expression); \n      return {\n        eval(locals) { \n          return compiledExpression.eval(this.getContext(), locals);\n        }\n      };\n    },\n    \n    eval(expression, locals) {\n      return SpelExpressionEvaluator.eval(expression, this.getContext(), locals);\n    }\n  };\n  \n});\n\n\n//list-controller.js\n\nangular.module('ToDo').controller('ListController', ['$http', '$scope', 'SpelService', function ($http, $scope, SpelService) {\n  \n  // retrieve all permissions and pre-compile them\n  $http.get('/api/permissions').success(function (permissions) {\n    angular.forEach(permissions, function (spelExpression, key) {\n      $scope.permissions[key] = SpelService.compile(spelExpression);\n    });\n  });\n  \n  // $scope will be used as locals\n  $scope.list = {\n    name: 'My List',\n    owner: 'Ben March',\n    items: [\n      {\n        text: 'List item number 1!'\n      }\n    ]\n  }\n  \n  // EXPAMPLE 1: authorize a request before making it\n  $scope.addListItem = function (list, newListItem) {\n    if ($scope.permissions.ADD_LIST_ITEM_PERMISSION.eval($scope)) {\n      $http.post('/todolists/' + list.id + '/items', item).success(function () {...});  \n    }\n  }\n}]);\n```\n\n```html\n<!--list-controller.html-->\n\n<div ng-controller=\"ListController\">\n  ...\n  <li ng-repeat=\"listItem in list.items\">\n    <p>{{listItem.text}}</p>\n  </li>\n  <li class=\"list-actions\">\n    <input type=\"text\" ng-model=\"newListItem.text\" />\n    \n    <!-- EXAMPLE 2: Hide the button if the user does not have permission -->\n    <button ng-click=\"addListItem(list, newListItem)\" ng-if=\"permissions.ADD_LIST_ITEM_PERMISSION.eval(this)\">Add</button>\n  </li>\n  ...\n</div>\n```\n\nNow the UI can always stay in sync with the server-side authorities.\n\n## Features\n\nThis is now in a stable state and will be released as 0.2.0. The following features are tested and working:\n\n- Primitive Literals\n- Property references\n- Compound expressions\n- Comparisons\n- Method references\n- Local variable reference (\"#someVar\")\n- Math\n- Ternary operators\n- Safe navigation\n- Assignment\n- Complex literals\n- Projection/selection\n- Increment/Decrement\n- Logical operators (and, or, not)\n- hasRole() (if you use spel2js.StandardContext)\n\nThe following are not implemented yet because I'm not sure of the best approach:\n\n- Qualified identifiers/Type references/Bean References\n- hasPermission() for custom permission evaluators\n\nIf someone wants to implement a REST-compliant way in Spring to expose the permissions (and maybe the custom\nPermissionEvaluators) that would be awesome.\n\n## Building Locally\n\n```sh\n$ npm i\n$ npm run build\n$ npm test\n```\n\n## Credits\n\nCredit is given to all of the original authors of the Java SpEL implementation at the time of this library's creation:\n\n- Andy Clement\n- Juergen Hoeller\n- Giovanni Dall'Oglio Risso\n- Sam Brannen\n- Mark Fisher\n- Oliver Becker\n- Clark Duplichien\n- Phillip Webb\n- Stephane Nicoll\n- Ivo Smid\n\nThis repository was scaffolded with [generator-microjs](https://github.com/daniellmb/generator-microjs).\n\n## License\n\nSince this was ported from the Spring Framework, this library is under version 2.0 of the [Apache License](http://www.apache.org/licenses/LICENSE-2.0).\n\n[build-url]: https://travis-ci.org/benmarch/spel2js\n[build-image]: http://img.shields.io/travis/benmarch/spel2js.png\n\n[gpa-url]: https://codeclimate.com/github/benmarch/spel2js\n[gpa-image]: https://codeclimate.com/github/benmarch/spel2js.png\n\n[coverage-url]: https://codeclimate.com/github/benmarch/spel2js/code?sort=covered_percent&sort_direction=desc\n[coverage-image]: https://codeclimate.com/github/benmarch/spel2js/coverage.png\n\n[depstat-url]: https://david-dm.org/benmarch/spel2js\n[depstat-image]: https://david-dm.org/benmarch/spel2js.png?theme=shields.io\n\n[issues-url]: https://github.com/benmarch/spel2js/issues\n[issues-image]: http://img.shields.io/github/issues/benmarch/spel2js.png\n\n[bower-url]: http://bower.io/search/?q=spel2js\n[bower-image]: https://badge.fury.io/bo/spel2js.png\n\n[downloads-url]: https://www.npmjs.org/package/spel2js\n[downloads-image]: http://img.shields.io/npm/dm/spel2js.png\n\n[npm-url]: https://www.npmjs.org/package/spel2js\n[npm-image]: https://badge.fury.io/js/spel2js.png\n\n[irc-url]: http://webchat.freenode.net/?channels=spel2js\n[irc-image]: http://img.shields.io/badge/irc-%23spel2js-brightgreen.png\n\n[gitter-url]: https://gitter.im/benmarch/spel2js\n[gitter-image]: http://img.shields.io/badge/gitter-benmarch/spel2js-brightgreen.png\n\n[tip-url]: https://www.gittip.com/benmarch\n[tip-image]: http://img.shields.io/gittip/benmarch.png\n","readmeFilename":"README.md"}