{"_id":"casl","_rev":"28-910ed76a09608106f2803ecc75e409ed","name":"casl","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","dist-tags":{"latest":"1.1.0"},"versions":{"0.2.0":{"name":"casl","version":"0.2.0","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"dist/es6/index.js","scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd","test":"NODE_ENV=test mocha -r ./spec/config ./spec/*.spec.js","lint":"eslint -c .eslintrc src/","release":"NODE_ENV=production standard-version && npm run build && npm test"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"~3.3.12"},"gitHead":"05db0bfbcb566696887ad03eda92b19291acf662","_id":"casl@0.2.0","_npmVersion":"5.0.4","_nodeVersion":"8.1.3","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-qNZXC7DC/Fmn4eDiuIXSlQKGtGOTZsTiytQpsjaknqFSJJoyo/PHVf3Ur1YB0rxi1h3x2XylKEDd7v94W+eBwg==","shasum":"3b00d55870e5fe38d59b84e16c6262079a6d74db","tarball":"https://registry.npmjs.org/casl/-/casl-0.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCt6RYZInxAI3JsLCEMAycbAgiIyZijYIbeFsWnj78W7AIhAM4ZzIw3guCeYySW60IqLY5eSQv9GPXH+Wl/1x6IY+4H"}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-0.2.0.tgz_1500401745684_0.5616990553680807"},"directories":{}},"0.2.1":{"name":"casl","version":"0.2.1","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"dist/es6/index.js","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"nyc":{"all":true,"cache":true,"sourceMap":false,"instrument":false,"require":["babel-register","./spec/config"],"reporter":["text-summary","html"],"include":["src/**/*.js"],"exclude":["spec/**/*.spec.js"]},"scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd","test":"cross-env NODE_ENV=test nyc mocha spec/*.spec.js","coverage.submit":"nyc report --reporter=lcov && codecov","lint":"eslint -c .eslintrc src/","release":"NODE_ENV=production standard-version && npm run build && npm test"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","engines":{"npm":"^3.0.0"},"devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","codecov":"^2.2.0","cross-env":"^5.0.1","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","nyc":"^11.0.3","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"~3.3.12"},"gitHead":"3a3fec0c91417d06089f86f22c4b3c052653f9d9","bugs":{"url":"https://github.com/stalniy/casl/issues"},"homepage":"https://github.com/stalniy/casl#readme","_id":"casl@0.2.1","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-pqv82l7hwwE1JmJcLwScMZI8YxE4HeTdKGSGf8Lid4i+nhUv25UUyVAE2pi062ua8vmgd0ytevbfiM4KVSbiyQ==","shasum":"c70e54082e4d1f4f3d7dba51ff7b7a2e7b23b5bc","tarball":"https://registry.npmjs.org/casl/-/casl-0.2.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjXtwWggwn0Vb44ZAljMq/WoSjknsMtR2D4Tr8LjnbPwIhAOXQtlPqnXmZ1d0+bzS9IRzri9ZXo0ICFZL1praZ1lb5"}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-0.2.1.tgz_1500535906251_0.7039711768738925"},"directories":{}},"0.2.4":{"name":"casl","version":"0.2.4","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"dist/es6/index.js","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"nyc":{"all":true,"cache":true,"sourceMap":false,"instrument":false,"require":["babel-register","./spec/config"],"reporter":["text-summary","html"],"include":["src/**/*.js"],"exclude":["spec/**/*.spec.js"]},"scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd","test":"NODE_ENV=test nyc mocha spec/*.spec.js","coverage.submit":"nyc report --reporter=lcov && codecov","lint":"eslint -c .eslintrc src/","prerelease":"NODE_ENV=production npm run build && npm test","release":"standard-version"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","engines":{"npm":"^3.0.0"},"devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","codecov":"^2.2.0","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","nyc":"^11.0.3","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"~3.3.12"},"gitHead":"0d4b09c0f5ecfffb2548c38532dfe5f582fe0c98","bugs":{"url":"https://github.com/stalniy/casl/issues"},"homepage":"https://github.com/stalniy/casl#readme","_id":"casl@0.2.4","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-ubrBvkpTqq3IRQeI7fKVk0WTD5XmTRiFc1s/T/1AL3h8SqPuH30iFh54JcXRhD1QJNk0T3KclgCoOaMf07oZ3A==","shasum":"e26229a3533aceb3cd979fe2e27e0e323adce827","tarball":"https://registry.npmjs.org/casl/-/casl-0.2.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFoOAj+aMYKk1RLE7+py59RZcS33chTZn3qNwKOWook9AiEA/WmLGRz47aS2asPnn1CI/RjrFSM2ZiZ2OucS2Xf1bz0="}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-0.2.4.tgz_1500908938187_0.6737396491225809"},"directories":{}},"0.3.0":{"name":"casl","version":"0.3.0","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"dist/es6/index.js","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"nyc":{"all":true,"cache":true,"sourceMap":false,"instrument":false,"require":["babel-register","./spec/config"],"reporter":["text-summary","html"],"include":["src/**/*.js"],"exclude":["spec/**/*.spec.js"]},"scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd","test":"NODE_ENV=test nyc mocha spec/*.spec.js","coverage.submit":"nyc report --reporter=lcov && codecov","lint":"eslint -c .eslintrc src/","prerelease":"NODE_ENV=production npm run build && npm test","release":"standard-version"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","engines":{"npm":"^3.0.0"},"devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","codecov":"^2.2.0","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","nyc":"^11.0.3","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"^5.0.0"},"gitHead":"f99aeb3d4bcdf4e9d8738e77eb0d826428a75f9d","bugs":{"url":"https://github.com/stalniy/casl/issues"},"homepage":"https://github.com/stalniy/casl#readme","_id":"casl@0.3.0","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-XeyCwsh834lPbuTuUXER5noAIQ5u8CaxvduO6eUIXfkLyYmX0wHlKwIyMKf+rg8m+rkqEqollW9Pn/PWZXEEJA==","shasum":"4941afd4606c3023391aebf9497a0bf689f85db8","tarball":"https://registry.npmjs.org/casl/-/casl-0.3.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAzXYUICIGgHKklVc/EBmCcf2ruq34owcPho2sOF2ismAiEA3iX9fFzYM9d+NTd/oJxz9ug7lZHHibf1FALn9MJglMY="}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-0.3.0.tgz_1500911471281_0.49224793538451195"},"directories":{}},"0.3.4":{"name":"casl","version":"0.3.4","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"dist/es6/index.js","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"nyc":{"all":true,"cache":true,"sourceMap":false,"instrument":false,"require":["babel-register","./spec/config"],"reporter":["text-summary","html"],"include":["src/**/*.js"],"exclude":["spec/**/*.spec.js"]},"scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd","test":"NODE_ENV=test nyc mocha spec/*.spec.js","coverage.submit":"nyc report --reporter=lcov && codecov","lint":"eslint -c .eslintrc src/","prerelease":"NODE_ENV=production npm run build && npm test","release":"standard-version"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","engines":{"npm":"^3.0.0"},"devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","codecov":"^2.2.0","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","nyc":"^11.0.3","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"^5.0.0"},"gitHead":"a37d185fb024ccb5c7076e065ca7cb63143b14dc","bugs":{"url":"https://github.com/stalniy/casl/issues"},"homepage":"https://github.com/stalniy/casl#readme","_id":"casl@0.3.4","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-hf0JccgITql4T4OLkoNUWIIYe1/5uTebYnyeOLpG5Yd6pOcacqQQgxisAiN3cC1l8NP9tjtdMX/JdvPGlEhoxQ==","shasum":"1084b3f16987c09cc9c9b7cd491609faf8b7b16d","tarball":"https://registry.npmjs.org/casl/-/casl-0.3.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNzM0GpcUQbpmqTAjOhH9MkxNzRWRcGnGkZg2voQ54zgIgJtRlNyW0NfoSjj8vjPrqZ2CpjfW1/yt8erEDhiJ8D+4="}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-0.3.4.tgz_1500921642005_0.4406750213820487"},"directories":{}},"1.0.0":{"name":"casl","version":"1.0.0","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"dist/es6/index.js","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"nyc":{"all":true,"cache":true,"sourceMap":false,"instrument":false,"require":["babel-register","./spec/config"],"reporter":["text-summary","html"],"include":["src/**/*.js"],"exclude":["spec/**/*.spec.js"]},"scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd","test":"NODE_ENV=test nyc mocha spec/*.spec.js","coverage.submit":"nyc report --reporter=lcov && codecov","lint":"eslint -c .eslintrc src/","prerelease":"NODE_ENV=production npm run build && npm test","release":"standard-version"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","engines":{"npm":"^3.0.0"},"devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","codecov":"^2.2.0","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","nyc":"^11.0.3","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"^5.0.0"},"gitHead":"7ad82b3e8b2954caef9fe13bc51985a1398e1d90","bugs":{"url":"https://github.com/stalniy/casl/issues"},"homepage":"https://github.com/stalniy/casl#readme","_id":"casl@1.0.0","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-oe9Ma2fRPCqxDcF+sY0n4zN8lhQaviGAoZ4vxzqabnMVhGATTbiE7yZS5hlybomH6gvfbj9hC+4WP3JpGsrUkw==","shasum":"78e51d59150345fb8571d2fc1de69abbf0388755","tarball":"https://registry.npmjs.org/casl/-/casl-1.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA9vLPOana/4s+h8meeYv1wlsAlGWbnffhQFpVzcKjONAiAr4b76ap4dSuQnFVR6GNN7E/3CPLGRIW9/5KuhYrlkUA=="}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-1.0.0.tgz_1501257142772_0.7303085105959326"},"directories":{}},"1.0.1":{"name":"casl","version":"1.0.1","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"dist/es6/index.js","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"nyc":{"all":true,"cache":true,"sourceMap":false,"instrument":false,"require":["babel-register","./spec/config"],"reporter":["text-summary","html"],"include":["src/**/*.js"],"exclude":["spec/**/*.spec.js"]},"scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd","test":"NODE_ENV=test nyc mocha spec/*.spec.js","coverage.submit":"nyc report --reporter=lcov && codecov","lint":"eslint -c .eslintrc src/","prerelease":"NODE_ENV=production npm run build && npm test","release":"standard-version"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","engines":{"npm":"^3.0.0"},"devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","codecov":"^2.2.0","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","nyc":"^11.0.3","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"^5.0.0"},"gitHead":"55522d795592021288acf2c52ff577ce1b212e12","bugs":{"url":"https://github.com/stalniy/casl/issues"},"homepage":"https://github.com/stalniy/casl#readme","_id":"casl@1.0.1","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-o5veFWPjRp34jU0JWtc76Ferf4OEz/y5YA7owiIHqAqnctHgs3VlLNyiQgat/n+7TP2bXcQjiyMcVxG4S+ET8w==","shasum":"c1d22a8dd986ad98f56fbb7048598567c9f27da0","tarball":"https://registry.npmjs.org/casl/-/casl-1.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCT+QjBNlwZJ3FS4eYqnOWAuOcq168sNGgsdmYdClqHegIhAPYJaBpPvtmTOSrJVMG1bp/dWfTgWo5buvOy3OhH/dlu"}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-1.0.1.tgz_1501685916511_0.928718906827271"},"directories":{}},"1.0.2":{"name":"casl","version":"1.0.2","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"dist/es6/index.js","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"nyc":{"all":true,"cache":true,"sourceMap":false,"instrument":false,"require":["babel-register","./spec/config"],"reporter":["text-summary","html"],"include":["src/**/*.js"],"exclude":["spec/**/*.spec.js"]},"scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd","test":"NODE_ENV=test nyc mocha spec/*.spec.js","coverage.submit":"nyc report --reporter=lcov && codecov","lint":"eslint -c .eslintrc src/","prerelease":"NODE_ENV=production npm run build && npm test && cp dist/es6/index.js .","release":"standard-version"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","engines":{"npm":"^3.0.0"},"devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","codecov":"^2.2.0","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","nyc":"^11.0.3","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"^5.0.0"},"gitHead":"4434f4296f87b86756d4e5701d08f2be854b552f","bugs":{"url":"https://github.com/stalniy/casl/issues"},"homepage":"https://github.com/stalniy/casl#readme","_id":"casl@1.0.2","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-W668buOOhlAJsPMyMzTlCaauhHx1A93mFYY4DPreUDLvBaN5qwYKBSYs6SBiqtT/Uc9tgZooGjWl9cpK61wANw==","shasum":"ccb93e3d5bdd54efca7ed4005cbe765f698abd65","tarball":"https://registry.npmjs.org/casl/-/casl-1.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHI0x4H4p+sV/xHCc2BO4+/UpbBnA6RYfzNtoBbhzQb/AiA2G8cOX2uJ8gKCdbRXyoEnH6bIlkUFCPvY7X4PiUvWxw=="}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-1.0.2.tgz_1501693736114_0.6379571033176035"},"directories":{}},"1.0.3":{"name":"casl","version":"1.0.3","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"index.js","es2015":"dist/es6/index.js","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"nyc":{"all":true,"cache":true,"sourceMap":false,"instrument":false,"require":["babel-register","./spec/config"],"reporter":["text-summary","html"],"include":["src/**/*.js"],"exclude":["spec/**/*.spec.js"]},"scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","build.es5m":"rollup -c tools/rollup.es5m.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd && npm run build.es5m","test":"NODE_ENV=test nyc mocha spec/*.spec.js","coverage.submit":"nyc report --reporter=lcov && codecov","lint":"eslint -c .eslintrc src/","prerelease":"NODE_ENV=production npm run build && npm test","release":"standard-version"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","engines":{"npm":"^3.0.0"},"devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","codecov":"^2.2.0","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","nyc":"^11.0.3","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"^5.0.0"},"gitHead":"f632eddc47b44f72c001662651af4a5ec1e83c83","bugs":{"url":"https://github.com/stalniy/casl/issues"},"homepage":"https://github.com/stalniy/casl#readme","_id":"casl@1.0.3","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-JeDK7JgC7abd75mQH3C1MpQRDl/y2Ev+Xs1KK5u1R+96x9oAZFyNNiYFDPAE8Wy/ONJdyGR/sqn5+k8Gqkr/vg==","shasum":"a85b25628aa779ec066936e604299f69759fe004","tarball":"https://registry.npmjs.org/casl/-/casl-1.0.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJp8nKD0GoYywLGlPY4Sn9h7uCmHrj9FhznljaAmzZiAIhAJz0XPib/+ANQG7FLMIaZx0lmU2rSLap1H/Aq7BVDUNF"}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-1.0.3.tgz_1510089798208_0.8668948211707175"},"directories":{}},"1.0.4":{"name":"casl","version":"1.0.4","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"index.js","es2015":"dist/es6/index.js","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"nyc":{"all":true,"cache":true,"sourceMap":false,"instrument":false,"require":["babel-register","./spec/config"],"reporter":["text-summary","html"],"include":["src/**/*.js"],"exclude":["spec/**/*.spec.js"]},"scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","build.es5m":"rollup -c tools/rollup.es5m.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd && npm run build.es5m","test":"NODE_ENV=test nyc mocha spec/*.spec.js","coverage.submit":"nyc report --reporter=lcov && codecov","lint":"eslint -c .eslintrc src/","prerelease":"NODE_ENV=production npm run build && npm test","release":"standard-version"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","engines":{"npm":"^3.0.0"},"devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","codecov":"^2.2.0","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","nyc":"^11.0.3","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"^5.0.0"},"gitHead":"257aba22d39b57fdfa65e8dbc336b7ec8190c80a","bugs":{"url":"https://github.com/stalniy/casl/issues"},"homepage":"https://github.com/stalniy/casl#readme","_id":"casl@1.0.4","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-aFXQ/bDwYK4EvhDGERWRzJ5zc5KmR2cBlBzJ9iKXRKYloYk4sb5flVvialYFecAGEDeCtFzcdR8PJN9mqDgL3w==","shasum":"2dc79723477cf9762c3d9e5694b9355ccde90892","tarball":"https://registry.npmjs.org/casl/-/casl-1.0.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/MwgGMxbzgaA7JBAry3i6GG58rvVGQdLmn74v8azZugIgTZN7sPusYIhd6evRmr4Smx2EW84wOaWB3ossFWYZJk8="}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-1.0.4.tgz_1513578288649_0.06007099710404873"},"directories":{}},"1.0.5":{"name":"casl","version":"1.0.5","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"index.js","es2015":"dist/es6/index.js","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"nyc":{"all":true,"cache":true,"sourceMap":false,"instrument":false,"require":["babel-register","./spec/config"],"reporter":["text-summary","html"],"include":["src/**/*.js"],"exclude":["spec/**/*.spec.js"]},"scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","build.es5m":"rollup -c tools/rollup.es5m.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd && npm run build.es5m","test":"NODE_ENV=test nyc mocha spec/*.spec.js","coverage.submit":"nyc report --reporter=lcov && codecov","lint":"eslint -c .eslintrc src/","prerelease":"NODE_ENV=production npm run build && npm test","release":"standard-version"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","engines":{"npm":"^3.0.0"},"devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","codecov":"^2.2.0","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","nyc":"^11.0.3","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"^5.0.0"},"gitHead":"34429acfb529d5c5f827b306684d79d7d4d86e46","bugs":{"url":"https://github.com/stalniy/casl/issues"},"homepage":"https://github.com/stalniy/casl#readme","_id":"casl@1.0.5","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-kxNLR5/WaVcOKs3qUq6zUPagyexabfbeDblRZcFzJbpdLMajtraRolZSGhFdEMe+hkujfTfVCU0rz4ohU4hLug==","shasum":"d878991ce0e8aca23912c42a7cfdda456f76f63c","tarball":"https://registry.npmjs.org/casl/-/casl-1.0.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCywAb2/zvNWK+ewXm/bq6giHKIbPioO1zINu39dMicHgIgGleqW8GKahQayzl1Sgi9jdZIQHjcNe+8Ta4hKpx3YZk="}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-1.0.5.tgz_1513706612843_0.35662593436427414"},"directories":{}},"1.0.6":{"name":"casl","version":"1.0.6","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"index.js","es2015":"dist/es6/index.js","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"nyc":{"all":true,"cache":true,"sourceMap":false,"instrument":false,"require":["babel-register","./spec/config"],"reporter":["text-summary","html"],"include":["src/**/*.js"],"exclude":["spec/**/*.spec.js"]},"scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","build.es5m":"rollup -c tools/rollup.es5m.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd && npm run build.es5m","test":"NODE_ENV=test nyc mocha spec/*.spec.js","coverage.submit":"nyc report --reporter=lcov && codecov","lint":"eslint -c .eslintrc src/","prerelease":"NODE_ENV=production npm run build && npm test","release":"standard-version"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","engines":{"npm":"^3.0.0"},"devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","codecov":"^2.2.0","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","nyc":"^11.0.3","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"^5.0.0"},"gitHead":"2c478de6146886cd5149d5a03a6da65d8f0a36cb","bugs":{"url":"https://github.com/stalniy/casl/issues"},"homepage":"https://github.com/stalniy/casl#readme","_id":"casl@1.0.6","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-Z9QSQo9wgLZtmkBuC0g0E6lvbGEBEBoWwphRfT1a5Z2s7Py/DhPg0Gfwm/3+icXmR42PIjRTybJ1CtZEyPbe6A==","shasum":"9760fd06bc4236b7bcd4f59a3ffdfbb287b6953c","tarball":"https://registry.npmjs.org/casl/-/casl-1.0.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEvkK1ax5JWrWhgB1sYN/wznhyfrfljpK8rlrb8MvqpuAiEArkgDzsEsGPRR+emvmvWwvwdgqPLUYxcFBu6eWo5jZew="}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-1.0.6.tgz_1513706922631_0.4159151082858443"},"directories":{}},"1.1.0":{"name":"casl","version":"1.1.0","description":"CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access","main":"dist/umd/index.js","module":"index.js","es2015":"dist/es6/index.js","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"nyc":{"all":true,"cache":true,"sourceMap":false,"instrument":false,"require":["babel-register","./spec/config"],"reporter":["text-summary","html"],"include":["src/**/*.js"],"exclude":["spec/**/*.spec.js"]},"scripts":{"build.es":"rollup -c tools/rollup.es.js","build.umd":"rollup -c tools/rollup.umd.js","build.es5m":"rollup -c tools/rollup.es5m.js","prebuild":"npm run lint","build":"npm run build.es && npm run build.umd && npm run build.es5m","test":"NODE_ENV=test nyc mocha spec/*.spec.js","coverage.submit":"nyc report --reporter=lcov && codecov","lint":"eslint -c .eslintrc src/","prerelease":"NODE_ENV=production npm run build && npm test","release":"standard-version"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","engines":{"npm":"^3.0.0"},"devDependencies":{"babel-plugin-external-helpers":"^6.22.0","babel-plugin-istanbul":"^4.1.4","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","chai":"^4.1.0","chai-spies":"^0.7.1","codecov":"^2.2.0","eslint":"^4.2.0","eslint-config-airbnb-base":"^11.2.0","eslint-plugin-import":"^2.7.0","mocha":"^3.4.2","nyc":"^11.0.3","rollup":"^0.45.2","rollup-plugin-babel":"^2.7.1","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-uglify":"^2.0.1","standard-version":"^4.2.0"},"dependencies":{"sift":"^5.0.0"},"gitHead":"a3600781ceb7b59f9d5860e5d969a3970914e41c","bugs":{"url":"https://github.com/stalniy/casl/issues"},"homepage":"https://github.com/stalniy/casl#readme","_id":"casl@1.1.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"},"dist":{"integrity":"sha512-58M7lfbzIDLt/y/f4ierhdFyv56YTtziJGAaObwzkEDutx5ycORBhdJY3V/desmOduUn2/5EKksbDCf260uQvw==","shasum":"2b16ae8c3e010f8f3f326fb80fc637e26cae4dec","tarball":"https://registry.npmjs.org/casl/-/casl-1.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBDWPhGcF++ulX9FjXlH4jZokQlySMzuls4TwV3w0uf5AiEAsflmx/lepj85ssuLs3ek/OOA06kXYO3jCmy/KH+/F/k="}]},"maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casl-1.1.0.tgz_1517557567077_0.2311246229801327"},"directories":{},"deprecated":"CASL is split into few packages. Check CASL repository for more info"}},"readme":"# CASL\n\n[![CASL NPM version](https://badge.fury.io/js/casl.svg)](http://badge.fury.io/js/casl)\n[![CASL Build Status](https://travis-ci.org/stalniy/casl.svg?branch=master)](https://travis-ci.org/stalniy/casl)\n[![CASL  codecov](https://codecov.io/gh/stalniy/casl/branch/master/graph/badge.svg)](https://codecov.io/gh/stalniy/casl)\n[![CASL Code Climate](https://codeclimate.com/github/stalniy/casl/badges/gpa.svg)](https://codeclimate.com/github/stalniy/casl)\n[![CASL Documentation](https://img.shields.io/badge/documentation-available-brightgreen.svg)](https://stalniy.github.io/casl/)\n[![CASL Join the chat at https://gitter.im/stalniy-casl/casl](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/stalniy-casl/casl?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\n\nCASL (pronounced /ˈkæsəl/, like **castle**) is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access. All permissions are defined in a single location (the `Ability` class) and not duplicated across controllers, views, and database queries.\n\nHeavily inspired by [cancan](https://github.com/CanCanCommunity/cancancan).\n\n## Installation\n\n```sh\nnpm install casl --save\n```\n\n## Features\n* supports MongoDB like conditions (`$eq`, `$ne`, `$in`, `$all`, `$gt`, `$lt`, `$gte`, `$lte`, `$exists`, `$regex`, field dot notation)\n* can construct MongoDB query based on defined abilities\n* supports direct and inverted rules\n* provides [mongoose](https://github.com/Automattic/mongoose) plugin\n* can be easily integrated with any data storage\n* provides ES6 build, so you are able to shake out unused functionality\n\n## Getting started\n\nCASL allows you to use any data layer (e.g., [mongoose][mongoose], [raw mongodb adapter][mongo-adapter], [sequelize][sequelize]), any HTTP framework (e.g., [koa][koa], [express][expressjs], [feathersjs][feathersjs]) and even any frontend framework (e.g., [Vuejs][vuejs], [Angular][angular], [React][react], [Ionic][ionic]) because of its isomorphic nature.\nAlso, it doesn't force you to choose a database (however currently is the best integrated with MongoDB).\n\nCheck sidebar in [documentation][documentation] for integration examples.\n\nCASL concentrates all attention at what a user can actually do and allows to create abilities in DSL style. Lets see how\n\n### 1. Define Abilities\n\nLets define `Ability` for a blog website where visitors:\n* can read everything.\n* can manage (i.e., create, update, delete, read) posts which were created by them\n* cannot delete post if it has at least 1 comment\n\n```js\nimport { AbilityBuilder } from 'casl'\n\nconst ability = AbilityBuilder.define((can, cannot) => {\n  can('read', 'all')\n  can('manage', 'Post', { author: loggedInUser.id })\n  cannot('delete', 'Post', { 'comments.0': { $exists: true } })\n})\n```\n\nYes, you can use some operators from MongoDB query language to define conditions for your abilities. See [Defining Abilities][define-abilities] for details.\n\n### 2. Check Abilities\n\nLater on you can check abilities using `can` and `cannot`.\n```js\n// true if ability allows to read at least one Post\nability.can('read', 'Post')\n\n// true if ability does not allow to read a post\nconst post = new Post({ title: 'What is CASL?' })\nability.cannot('read', post)\n```\nAlso there is a conveninse method `throwUnlessCan` which throws `ForbiddenError` exception in case if action is not allowed on target object:\n```js\nimport { ForbiddenError } from 'casl'\n\ntry {\n  ability.throwUnlessCan('delete', post)\n} catch (error) {\n  console.log(error instanceof Error) // true\n  console.log(error instanceof ForbiddenError) // true\n}\n```\n\nSee [Check Abilities][check-abilities] for details.\n\n### 3. MongoDB integration\n\nCASL provides easy integration with MongoDB database.\n\n```js\nconst { toMongoQuery, AbilityBuilder } = require('casl')\nconst { MongoClient } = require('mongodb')\n\nconst ability = AbilityBuilder.define(can => {\n  can('read', 'Post', { author: 'me' })\n})\n\nMongoClient.connect('mongodb://localhost:27017/blog', function(err, db) {\n  const query = toMongoQuery(ability.rulesFor('read', 'Post')) // { $or: [{ author: 'me' }] }\n  db.collection('posts').find(query) // find all Posts where author equals 'me'\n  db.close();\n})\n```\n\nAnd if you use [mongoose](https://github.com/Automattic/mongoose), you are lucky because CASL provides mongoose middleware which hides all boilerplate under convenient `accessibleBy` method.\n\n```js\nconst { mongoosePlugin, AbilityBuilder } = require('casl')\nconst mongoose = require('mongoose')\n\nmongoose.plugin(mongoosePlugin)\n\nconst ability = AbilityBuilder.define(can => {\n  can('read', 'Post', { author: 'me' })\n})\n\nconst Post = mongoose.model('Post', mongoose.Schema({\n  title: String,\n  author: String,\n  content: String,\n  createdAt: Date\n}))\n\n// by default it asks for `read` rules\n// returns mongoose Query, so you can chain it with other conditions\nPost.accessibleBy(ability).where({ createdAt: { $gt: Date.now() - 24 * 3600 } })\n\n// also you can call it on existing query to enforce visibility.\n// In this case it returns empty array because rules does not allow to read Posts of `someoneelse` author\nPost.find({ author: 'someoneelse' }).accessibleBy(ability).exec()\n```\n\nSee [Database integration][database-integration] for details.\n\n### 4. UI integration\n\nCASL is written in pure ES6 and has no dependencies on Node.js or other environments. That means you can use it on UI side. It may be useful if you need to show/hide some UI functionality based on what user can do in application.\n\n```js\nimport { Ability } from 'casl'\n\nexport class Session {\n  constructor() {\n    this.ability = new Ability()\n  }\n\n  find() {\n    return fetch('https://domain.com/session')\n      .then(session => this.ability.update(session.rules))\n  }\n\n  destroy() {\n    return fetch('https://domain.com/session', { method: 'DELETE' })\n      .then(() => this.ability.update([]))\n  }\n}\n```\n\nRead [CASL in Aurelia app][casl-aurelia-example] or [Vue ACL with CASL][casl-vue-example] for details.\n\n## Documentation\n\nA lot of useful information about CASL can be found in [documentation][documentation] (check sidebar on the right hand ;)!\n\n## Want to help?\n\nWant to file a bug, contribute some code, or improve documentation? Excellent! Read up on guidelines for [contributing][contributing]\n\n## License\n\n[MIT License](http://www.opensource.org/licenses/MIT)\n\n[contributing]: https://github.com/stalniy/casl/blob/master/CONTRIBUTING.md\n[define-abilities]: https://stalniy.github.io/casl/abilities/2017/07/20/define-abilities.html\n[check-abilities]: https://stalniy.github.io/casl/abilities/2017/07/21/check-abilities.html\n[database-integration]: https://stalniy.github.io/casl/abilities/database/integration/2017/07/22/database-integration.html\n[casl-aurelia-example]: https://medium.com/@sergiy.stotskiy/casl-based-authorization-in-aurelia-app-3e44c0fe1703\n[casl-vue-example]: https://medium.com/@sergiy.stotskiy/vue-acl-with-casl-781a374b987a\n[documentation]: https://stalniy.github.io/casl/\n[mongoose]: http://mongoosejs.com/\n[mongo-adapter]: https://mongodb.github.io/node-mongodb-native/\n[sequelize]: http://docs.sequelizejs.com/\n[koa]: http://koajs.com/\n[feathersjs]: https://feathersjs.com/\n[expressjs]: https://expressjs.com/\n[vuejs]: https://vuejs.org\n[angular]: https://angular.io/\n[react]: https://reactjs.org/\n[ionic]: https://ionicframework.com\n","maintainers":[{"name":"stalniy","email":"sergiy.stotskiy@gmail.com"}],"time":{"modified":"2022-04-12T05:25:45.551Z","created":"2017-07-18T18:15:46.640Z","0.2.0":"2017-07-18T18:15:46.640Z","0.2.1":"2017-07-20T07:31:47.340Z","0.2.2":"2017-07-24T14:39:17.930Z","0.2.3":"2017-07-24T14:47:49.785Z","0.2.4":"2017-07-24T15:08:59.333Z","0.3.0":"2017-07-24T15:51:12.485Z","0.3.1":"2017-07-24T17:24:17.966Z","0.3.2":"2017-07-24T17:35:35.762Z","0.3.4":"2017-07-24T18:40:43.173Z","1.0.0":"2017-07-28T15:52:23.985Z","1.0.1":"2017-08-02T14:58:37.664Z","1.0.2":"2017-08-02T17:08:57.169Z","1.0.3":"2017-11-07T21:23:19.296Z","1.0.4":"2017-12-18T06:24:48.721Z","1.0.5":"2017-12-19T18:03:32.936Z","1.0.6":"2017-12-19T18:08:43.731Z","1.1.0":"2018-02-02T07:46:07.180Z"},"keywords":["access control","authorization","acl","cancan","security","permissions"],"author":{"name":"Sergii Stotskyi","email":"sergiy.stotskiy@freaksidea.com"},"license":"MIT","readmeFilename":"README.md","homepage":"https://github.com/stalniy/casl#readme","repository":{"type":"git","url":"git+ssh://git@github.com/stalniy/casl.git"},"bugs":{"url":"https://github.com/stalniy/casl/issues"},"users":{"aatrostle":true,"emjimadhu":true,"kodekracker":true,"heartnett":true,"eswat2":true,"rahulraghavankklm":true}}