{"_id":"@holoyan/adonisjs-permissions","_rev":"36-095c7046b22eae12909cf8b1a37eeb32","name":"@holoyan/adonisjs-permissions","dist-tags":{"beta":"2.0.0-beta.2","latest":"2.0.2","v1-latest":"1.3.4"},"versions":{"0.1.0":{"name":"@holoyan/adonisjs-permissions","version":"0.1.0","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.1.0","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"9dfbe65d3e7c6fcf3cf288437cfcf0b3ecbb1e48","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.1.0.tgz","fileCount":51,"integrity":"sha512-SfB3GAheWP26XxYg5IJY7I4lF2U2EP0VoGr7LzbC8O3YosNiuXysBfIGpNeXEYw+DoOdywJaMbJ+NIKR2nTG8w==","signatures":[{"sig":"MEUCIBQV9vgoQuReUiOt/kSQg1nokOwJ6M9IyOOgt3mU8EwQAiEAwkHyFlhMJkN6qJq+XWv+Dn6kKq9K51nUjtaIogXij1A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134503},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"e62a68cea2742cbb664343eddf3d3907ab7ce2b2","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","chance":"^1.1.11","eslint":"^8.38.0","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"luxon":"^3.4.4","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.1.0_1711108471409_0.7847498607982353","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"@holoyan/adonisjs-permissions","version":"0.5.0","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.5.0","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"b04c56eb34e2109ec39295020d305aa49eeb926b","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.5.0.tgz","fileCount":55,"integrity":"sha512-KsDTKcrPNZGhz5JsJXARqatjjdc4BzI50+7vTsIFVKYp+xo2bUAW9J75YRRBhwOKjkBDmAKHSrKRQlhrtcAYeg==","signatures":[{"sig":"MEUCIQCBoFtMYkrsx8cHuVFu3DfmjaPHsmaHZEasuWF3P3rAgwIgLvAXF5g/k0NkqFyNrkM0sAOxZekSt5fCrdkocjjnyPU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144359},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"c728bdccd305e385ee2c11e182def15fb51f2d73","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"luxon":"^3.4.4","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.5.0_1712217949438_0.9727256695292512","host":"s3://npm-registry-packages"}},"0.5.2":{"name":"@holoyan/adonisjs-permissions","version":"0.5.2","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.5.2","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"f5b5a9d8b30d6c23a1f25d96ce6e69cd55dacece","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.5.2.tgz","fileCount":55,"integrity":"sha512-KRmo+8rEr9zmkpr+Oopu2tsU0rqb4AvSEOeqyDJrZJtcP7L72xC0js/PE+DNDNdfa//c3anw6yV4GfN7AY/PBQ==","signatures":[{"sig":"MEUCIEUlZTsZvHI6mLy16kJlAQiFlhVYIxM26cudVGaUjY6vAiEA7TkVOOA21VO2zG24lgKsovjU2E6PiS+25HOoPjHFWBM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":145094},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"d8c0fc37f80c2c2cf9ea8869426fd886d0a9b587","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"luxon":"^3.4.4","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.5.2_1712225225237_0.6490304523762567","host":"s3://npm-registry-packages"}},"0.6.4":{"name":"@holoyan/adonisjs-permissions","version":"0.6.4","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.6.4","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"c86fc6c2f85e10a79989c0ce1a463e9d164a29c4","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.6.4.tgz","fileCount":58,"integrity":"sha512-/fN+psEGN5byWzJYQJVxjcLG5RcCx4anP9T0sHgJUyoSKBbMNCRvRpDTn2QtWd5aqfY4I5sTXcvf725nwrfFWw==","signatures":[{"sig":"MEUCIQCxm4hWhFvQCCL5OKm7PQKKAuNgfXev3CRwz45XHEV8QAIgS624ujOKweZtFKuLazKaQKuzaKDsCeFcuhpXVBHmhv4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158950},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"e73e0ef6545f4694498b76796114fba5da892efb","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"luxon":"^3.4.4","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.6.4_1713254621522_0.7867380153952419","host":"s3://npm-registry-packages"}},"0.6.8":{"name":"@holoyan/adonisjs-permissions","version":"0.6.8","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.6.8","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"169d046274c4752825f85f19f97a9962b366ec25","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.6.8.tgz","fileCount":58,"integrity":"sha512-oBoOC7H7fE3IO+n7QoyioEerb3MeYmE6CXznWwReQXy0bPHp2ct3GBDPfR6H0npSejUViDu1AU9KrachsqN9Zw==","signatures":[{"sig":"MEUCIQDk0FduawnlhvTwmgqTbMFqVGHPpIJ8VYsbiGiiEZricAIgRfPin5zWG0RnvHvihaLCvvZEzUG0OgpsMNpCWUKtuBs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160360},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"ef066c40ac339220a3dbca54f544e20fdb8d384b","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"luxon":"^3.4.4","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.6.8_1713532474734_0.7338220010993013","host":"s3://npm-registry-packages"}},"0.7.11":{"name":"@holoyan/adonisjs-permissions","version":"0.7.11","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.7.11","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"00733f50b3c21f894591cea9d77e7bdfab1e05d0","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.7.11.tgz","fileCount":58,"integrity":"sha512-NAQrSwsvzFV6cfebaqsk69/BbXn8io8qDZiXeW5ga/wrl8fwYnkkBTTwnEjhzg/cweznYHSGrYNvKJoAx3lMJw==","signatures":[{"sig":"MEUCIQD1W3CG6R4m15grxHq7w90NZTXT9hEvh3B2qafBmpKzKQIgCYPloO1TDyyiqG4g/5weol/RyQR1zJYaEVYRWMHoJiI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160666},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"d7d47369b7b4102916d1b321e61b9120b54f2e19","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^9.0.1","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^9.0.8","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^9.0.1","luxon":"^3.4.4","@types/uuid":"^9.0.8","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.7.11_1714569413776_0.9872292331711965","host":"s3://npm-registry-packages"}},"0.7.12":{"name":"@holoyan/adonisjs-permissions","version":"0.7.12","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.7.12","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"eb8f6e904f8e1e8be9f593e4eaf907a7ade0723f","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.7.12.tgz","fileCount":58,"integrity":"sha512-PaTRj2djqNgIlb9NaHPZeZDk+K1KUWDTIzWE7his51j98x1BN1tdJ/MHy0KEYamEt2Ul7N4mLO4MxujpVJfPxQ==","signatures":[{"sig":"MEQCIEDk7gqk/lVL08MGJv83yHljDfvFEpXBgjQG93uffgI1AiBcuCDeDR9SIclyFKvkHni45gm3u7p7s2nNUG7XfwSs0g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160822},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"2564f986149ef35ac8d55b76ec9d54da52dad36e","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^9.0.1","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^9.0.8","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^9.0.1","luxon":"^3.4.4","@types/uuid":"^9.0.8","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.7.12_1714718733011_0.3257403768603042","host":"s3://npm-registry-packages"}},"0.7.14":{"name":"@holoyan/adonisjs-permissions","version":"0.7.14","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.7.14","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"5b1469cd92b42fbb9665043b4d6c7f90f17bf239","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.7.14.tgz","fileCount":58,"integrity":"sha512-GF/pnIqCQgk2Tg3fOd4kU47KIKru5tbuwukvENAh0Z6MwqI7uasam5L32oniLymwn+QwTtFjGPmYC+sZIJQ+BQ==","signatures":[{"sig":"MEQCIFPMSs6Q/LCN/s2hSqOOUW3K+/QdYx3ZPc2QJrz90jf1AiBoyRVkwUeGZfP+Rm8D9qfzeEQayonma5oUYMCeAome+w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161910},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"9bd8512718bde6acc03ee126e8beb50991816508","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^9.0.1","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^9.0.8","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^9.0.1","luxon":"^3.4.4","@types/uuid":"^9.0.8","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.7.14_1715104963405_0.9856401460325259","host":"s3://npm-registry-packages"}},"0.7.15":{"name":"@holoyan/adonisjs-permissions","version":"0.7.15","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.7.15","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"61db5a3f5b825497a84519fe7cb79e72060e8af5","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.7.15.tgz","fileCount":58,"integrity":"sha512-KZjpKJJXHw4/RUG6sHw+Yen34gMSmbkiGh7WgW8H0EyXAYwPElEEoLJ5HubLqnggVFlePVPTQIIsnWbhtApXaQ==","signatures":[{"sig":"MEUCIAk4AhFbgHwQNokpTM012TEJTdvoJsZ8VnatM17sr9aHAiEAiAcPDeBdzhUDA4MVn0M6hosF85Bq4BrPP30lZrc11O8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161888},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"a121e1bb3199fa8ed6eb2c941a7bbca644efa66e","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^9.0.1","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^9.0.8","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^9.0.1","luxon":"^3.4.4","@types/uuid":"^9.0.8","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.7.15_1715434894011_0.8344882944869274","host":"s3://npm-registry-packages"}},"0.8.17":{"name":"@holoyan/adonisjs-permissions","version":"0.8.17","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.8.17","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"858291a93e1b4384d740d897e237c77149e60549","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.8.17.tgz","fileCount":60,"integrity":"sha512-QWN/9MbbnhvRHBtTuNbDsUj2TM3dNscZaUrUHuxz9RtVfECQvdmBShuEufJ/rGmym9k60eey7HAHRvzVwoJVkQ==","signatures":[{"sig":"MEQCIEID/fjde5G9Pf/7Qd+DJlGtRcTb5C3D5CbDqT259A9tAiBNUji9XE8Uyc1MICNguZTa/27oDS+25ZV3TF2UFtOHqw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165564},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"84f94127d91054657f6fe83fa8f48ccb53d883eb","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^9.0.1","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^9.0.8","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^9.0.1","luxon":"^3.4.4","@types/uuid":"^9.0.8","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.8.17_1716135586339_0.12282456711115208","host":"s3://npm-registry-packages"}},"0.8.18":{"name":"@holoyan/adonisjs-permissions","version":"0.8.18","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.8.18","c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"8cf0f8455a7ad2fdb835fdc91eea33b74da7b175","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.8.18.tgz","fileCount":60,"integrity":"sha512-LuKyVEDR7kg0q5rpVwM43kX99rw8SGhqQKLaAhCjfkr4rO/uLpv8Wy6SKBfpXY9/S+k4evNilyJRCxHXr3M9Tg==","signatures":[{"sig":"MEUCIQDnDNd3ZRN94ksI0RjiWRuK9Fw+pDNYD2jlkCAmylmeGwIgHUhwH5BR7Fy07/BxpQvfZm/A9s8Qkro/19lmwpVYukE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165571},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"845699454404210cf2493f2c1fea50d1d61d8f97","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^9.0.1","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^9.0.8","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^9.0.1","luxon":"^3.4.4","@types/uuid":"^9.0.8","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.8.18_1719553969239_0.4681991906676637","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@holoyan/adonisjs-permissions","version":"1.0.0","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@1.0.0","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"0814ee93a99d225ac4b34366e3371f5c94e2fbf4","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-1.0.0.tgz","fileCount":60,"integrity":"sha512-NqjtalevK2/8ZPjTzUzlHrTE5hkrEl3TQu6cNLOw/sr0cRFHPdsvu2iiqt7EVz04fwewsVKzrLAIfUKYaiuf8g==","signatures":[{"sig":"MEUCIHHvITDo2SpewETkb+sG2Hx2kMmrj+TqLscgWUJVebO9AiEAntAAvfk0CEUZJpXAc4jeWJbh2rYSPgckM3O3KUC0/88=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165869},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"c693ef6877c1562ed047b6d4cc4dafacbb68cc60","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^9.0.1","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^9.0.8","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^9.0.1","luxon":"^3.4.4","@types/uuid":"^9.0.8","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_1.0.0_1723971954015_0.6903493963238918","host":"s3://npm-registry-packages"}},"0.8.19":{"name":"@holoyan/adonisjs-permissions","version":"0.8.19","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.8.19","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"b1a76ed441f7c9c97e25345efb994804a33e9eab","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.8.19.tgz","fileCount":60,"integrity":"sha512-IEZgyhzemrAj6p2sASUkaPE7hX4GDj2HU/DpdyhWBCLllaZQtXKUzvPeZvbmgX2mFmxoe3TJhL8oDLzJUj7p8A==","signatures":[{"sig":"MEQCICz+pVO8WEMyqaVk82fuEYoQ/c7pv8aNI9DYxUl1TpleAiBT2fLmLJoPKEuB36sLnSp2mPPneHButyI9a4d1nsqwQg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165541},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"e118469cb778eff771391f7d05162aca3a1e6c74","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^9.0.1","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^9.0.8","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^9.0.1","luxon":"^3.4.4","@types/uuid":"^9.0.8","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.8.19_1724841414350_0.9871969673197452","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@holoyan/adonisjs-permissions","version":"1.0.1","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@1.0.1","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"9f1f473ca4d269a3a8c0aaba32ba83632df48f3f","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-1.0.1.tgz","fileCount":60,"integrity":"sha512-98rnd1sjOH1AUkS7Uhru0r6kAEzAZ3TRJUGLmwHI/3yfF4z9dk5m5jA2gfid+TE5/fBdeY7Ez0MjBRLouAX43g==","signatures":[{"sig":"MEUCIQD2wfbSjU7y69m1lt47FD1sDCtADclIIE/p9Fx2bmG1IgIgNoCXW6pxE4YbsdJyzdQUTpRdRlq4jg7XSsrc52cwkVs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165873},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"057def488e58177a2cfc11a6e43bc2b44ee010e3","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^9.0.1","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^9.0.8","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^9.0.1","luxon":"^3.4.4","@types/uuid":"^9.0.8","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_1.0.1_1724841614976_0.6612072785228629","host":"s3://npm-registry-packages"}},"0.8.20":{"name":"@holoyan/adonisjs-permissions","version":"0.8.20","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.8.20","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"a298e9b6ea857e7e140eef5835082657d621b497","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.8.20.tgz","fileCount":60,"integrity":"sha512-5Sr8CUEu/Vurv0l1OG9qCUqSA8yfDwQu9WGEoJrSesc4qB6vh3CK2B/F0AVluGix0ode6djNIiayDtiyV/hArQ==","signatures":[{"sig":"MEYCIQDGQhepPDxuMeVbAlj2jyCX9QYbicpnw3R1DxXC4ImqBgIhAJcmIhhEin9mkLrEG4TgpEKQQUlIMbXiT+CFqXYesviQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165589},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"4e830fc5e000256b7709ef4f15c46ebbd601ef6b","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^9.0.1","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^9.0.8","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^9.0.1","luxon":"^3.4.4","@types/uuid":"^9.0.8","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.8.20_1727110758815_0.12157662684070614","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@holoyan/adonisjs-permissions","version":"1.0.2","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@1.0.2","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"a5d2119f3273e6ff0c2d4d9a83c3c9ac40400560","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-1.0.2.tgz","fileCount":60,"integrity":"sha512-4rTh4Xl2azYedO1dU8r6PTD2uyMdKXu5u4r0NVQ8F5fbXkVsr3vDJcibzEt9cLknmbFoIv1MQTh5CzEYSkNnlA==","signatures":[{"sig":"MEQCIHZ5CGXNyvsENrQkvyFDuKGbsfcReEIYlBQ7UTsi3c1HAiA5NHPCRRHrh3ztFjzkBTefZLDZ/OZJa9+cRKaGTn3VkQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165918},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"d6f7aedc92fc256679f9e3ec953ffde406f49d25","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^9.0.1","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^9.0.8","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^9.0.1","luxon":"^3.4.4","@types/uuid":"^9.0.8","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_1.0.2_1727111165035_0.4618531510028465","host":"s3://npm-registry-packages"}},"0.8.21":{"name":"@holoyan/adonisjs-permissions","version":"0.8.21","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.8.21","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"9de7673e566afb8e232640fcc42251e7ab03816c","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.8.21.tgz","fileCount":60,"integrity":"sha512-nO3AHianTRQ/bC7DclZpyH8bIS+YoDkIlRDZl5+FpVjr1NIaILrRgUjjVS/mL7REiMYYeCNs6YUV6HXyW2mYCg==","signatures":[{"sig":"MEUCIEmUf79dm1zggy0HemXTu2GQHSLYX1p3n3vkv11o/sEeAiEA6ty1SLaE1y6PKlvsSXpTrRzJDZjsnmbFT/Rfa+rpDlo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166721},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"ccea65b148949fdf308ac7e8e7b209d3fa78eff3","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.8.21_1730749342262_0.11147560666722267","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@holoyan/adonisjs-permissions","version":"1.0.3","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@1.0.3","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"d9aa208373c30326e1e85df8eec91b0a10923222","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-1.0.3.tgz","fileCount":60,"integrity":"sha512-2xpHzOsbH8CEX7CRua0nME9Jv0LeJ4V7u37Jt0lxWSLYo7ABTRQNF8XHH5nBgIoqHmMfu/4J8NLYEXD6HRuN1A==","signatures":[{"sig":"MEUCIFoI8leYAKobRfZfXXsILacrkpbiv5rNREKUjTIzu4F9AiEAqpGqD/cJUeNFVbAhxlNJItbI/vEED8gZyA2R216hwCk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167050},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"5d4a5b748061a5cce3fcc31a463b9757ab664091","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_1.0.3_1730749363919_0.9232283334541886","host":"s3://npm-registry-packages"}},"0.8.23":{"name":"@holoyan/adonisjs-permissions","version":"0.8.23","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.8.23","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"38531dccdfdcc00147cef83b82e48b33a2666df0","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.8.23.tgz","fileCount":60,"integrity":"sha512-FAygTQ0cMCkxtIUA6e5y4QF6iNjjZ3qjUyKFau1Q6n1A4X3GWyjMYwwMAUCxkRBa8cWkxVJdOzZQcUDosca7kA==","signatures":[{"sig":"MEUCIHY4Wk0AqhHKf7QREDCKkvzo9z5rn+oAmY8RP90r+3qVAiEA0ewhmRBoYJORA/PfdyQPoleaHAw0LoYU7x/D+bAn0MI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184842},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"fa92984f6423071bc63fccef476477cabf08a497","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.8.23_1740320091508_0.485361518569968","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@holoyan/adonisjs-permissions","version":"1.0.5","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@1.0.5","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"ca2e9e6f6894fdbe893206a15eb699622ed95a4a","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-1.0.5.tgz","fileCount":60,"integrity":"sha512-9agv4hBPtuMZmEHmZsShZhMsOPLYo9Tdj+PH7+1s/jT4mzAIh7pfDdC0gz4pzK+MjPk9hvJoK4yVxRRCuwi8Sg==","signatures":[{"sig":"MEUCIG1+8AAGG099NlSV04DidO8/ewGrLgEYnzfMeA0iCnQpAiEAxgIcDlRh0dN5kPDfFNvFE1cuTmytUn/4X57Ferrj56A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185170},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"d185047361b7760a8594b1efdac015910eb8145b","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.2.4","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_1.0.5_1740320175135_0.803630454318192","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@holoyan/adonisjs-permissions","version":"0.9.0","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.9.0","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"fa880b300f148929799f3be438166d29f918e90e","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.9.0.tgz","fileCount":66,"integrity":"sha512-kj/MNJI+LULgWEGQxG0nTzmTm88/jpbKHnPWUf9mvc7lKbB2mkUnn+TRdAgtbLWfPTXyHtmupFIjCmRoCC0Q8Q==","signatures":[{"sig":"MEUCIBp4OfB9BGze1mHN6qZV5gqudjYuJbq51IZELNfqQiV8AiEAiFQ49Qvio+ooO0mUlyLFXseDYNMLuRGHSk/xqCUMPgQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208039},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"619c8696b976b478579c8ff481ffeb36970614db","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.9.2","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"23.10.0","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.9.0_1749976463324_0.024132512084039437","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@holoyan/adonisjs-permissions","version":"1.1.0","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@1.1.0","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"c502b2413b7632685ebe48794ebb4ca6ce1055b8","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-1.1.0.tgz","fileCount":66,"integrity":"sha512-oafzZxE3uiWh+/wLJsWaeXTHejZdj/8QUMLGyLMwggYVOPL3N7vhpRvzygSmh2M04xDfeBGji06iDossg4VUzg==","signatures":[{"sig":"MEUCIQDPd32IEcLiSsu5fcSSQfwgzaFjOBre0wjK5pUwauu34QIgM/Mj1HYkQoRd4hHRXeXBBzEjH8v7/V6ClAsL3dnYq90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207240},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"9812ec97ffab3c51d7785aec847d7f196bc3fef3","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.9.2","description":"Adonisjs roles and permissions system","directories":{},"_nodeVersion":"23.10.0","eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_1.1.0_1749976495587_0.4976709465356406","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@holoyan/adonisjs-permissions","version":"0.10.0","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.10.0","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"d622732477639fb69d7ac1e6dd58d4d828a93f16","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.10.0.tgz","fileCount":66,"integrity":"sha512-vGUZ0FpbRs+zhWXrZ8RC2IlFvtD3SNHi1yJA/TrswgQK5AsU6k6OGFisXkqK5mFnDADmPzeeaSqsssHmGRFAMg==","signatures":[{"sig":"MEUCID1hu6X50lQ6/tWsLQqfXjdju6JZemgCcrhrv/pbmeLqAiEAkwSbpvHcBjizcu2kmIHUnOhVd9YN1X86EjkDjjsvgYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208023},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"4b86f826d4b9bdf461a234949e5e793e08cd89eb","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","actor":{"name":"holoyan","type":"user","email":"artaksafaryanc@gmail.com"},"email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.9.2","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"23.10.0","dependencies":{"@holoyan/morph-map-js":"^0.1.1"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.10.0_1751789658868_0.20105109458062365","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@holoyan/adonisjs-permissions","version":"1.2.0","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@1.2.0","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"c7d8ef82bc1ba0172c29fec03b242fd7a6c880f4","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-1.2.0.tgz","fileCount":64,"integrity":"sha512-MG1v7fMxxlRIic3TdIXE03pJdyufgDJgVxJxH7wvTpzDqMfFzY5WueKgmGlj7sSMESMSkix8A6KQ9ZoBekinWA==","signatures":[{"sig":"MEQCIEJmKR5OZQH1fMeEJGpkE/lelcYUQKF7FWCEiEpNpWv4AiBeVyakNMisCZFOuu6BLgHvvaDn1o2hHor4n6hGaBPDBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207482},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"46c8ee442d8efb4188199b17e613cf19aded4660","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","actor":{"name":"holoyan","type":"user","email":"artaksafaryanc@gmail.com"},"email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.9.2","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"23.10.0","dependencies":{"@holoyan/morph-map-js":"^0.1.1"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_1.2.0_1751790033506_0.8163633200618015","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@holoyan/adonisjs-permissions","version":"0.11.0","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.11.0","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"79d980eba0364090e058644dc3f6559dd4038c7b","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.11.0.tgz","fileCount":64,"integrity":"sha512-/L0KF4emSPYq6U9AFY3o38JunkFYA4iK26b0aOWj7bP/5jzudZanU1M7k+V5P/3K+bScadrccHiuOz5ZBHniaA==","signatures":[{"sig":"MEQCIGR4Ar+032dkYd+9Q8erKRAnV4NzonfuN6P/D82CgOppAiBHrm6S263xJgz9KM4bydsZmZ8bqEp/sy93GX91Nu2u6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230950},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"58852280f82be14ef7b9179aeb16c0d30797646d","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.9.2","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"23.10.0","dependencies":{"@holoyan/morph-map-js":"^0.1.1"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.11.0_1753386080217_0.27345384621944624","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@holoyan/adonisjs-permissions","version":"1.3.0","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@1.3.0","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"30da18105f8c3d551f1750f8fbe0bd739724804c","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-1.3.0.tgz","fileCount":64,"integrity":"sha512-Tqyfka1iDc2SLjJhfoaDwFcR1WLukPteMoIdfae9sgrGRVfmSxtzJT2ER8jwc8pdjAfft0jqpgC9YUYmvOB9Kw==","signatures":[{"sig":"MEQCIGatd8ww6AGlsbySVcl4rXpzI8W3vnxt2OeiAxXkihOEAiAncsLgQmhHgYtFVrQ8EkeC8d8MpHT06hIOlfc/fpSKFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230730},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"f78956876345b175ef1c42a691a8a70b16592a57","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"10.9.2","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"23.10.0","dependencies":{"@holoyan/morph-map-js":"^0.1.1"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_1.3.0_1753386104896_0.9766379122667799","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@holoyan/adonisjs-permissions","version":"0.11.1","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.11.1","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"ecc100e04a4cf990e3aa7622e60dd400e44c10d7","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.11.1.tgz","fileCount":64,"integrity":"sha512-ZHn1aSUx3OR3rWWEIMBGsi1+9GJIRHt2sss47SEOnpMdwTCBONG6tRUsNMOAnspRMNjTM/Ud8ADSD8QqkYLhUg==","signatures":[{"sig":"MEQCIG3eR0Ravql5N3qhXEnlSaKcDmseVi/SymYWvQXY0i2+AiAeoeddj9H0q1ld+O8TPB+9PFJX/JTauXfUzawdcdsLPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235622},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"c4db709fc067f7d10a307f7dbb470c3a145a9808","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"11.5.1","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"24.5.0","dependencies":{"@holoyan/morph-map-js":"^0.1.1"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.11.1_1760817704014_0.6252982668833775","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@holoyan/adonisjs-permissions","version":"1.3.1","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@1.3.1","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"ccc5e9bc69d675a35d1133bc405b5bd15581b011","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-1.3.1.tgz","fileCount":64,"integrity":"sha512-DbAadeoSQfexlpAG8SSsOLmyk08SCfmKRVwLdCrh9EPgRaydK5ingIh3ON793ZUMGlvZjiHGB9t6Vw5tKBjtPA==","signatures":[{"sig":"MEQCIG06/7Xf8t8Aw26IGGov5ix6XBvrtgQW0y2bj0A6JlNfAiBe9q9bWrCKL4IRvsFAakI57v7GmvMpCbEjJQbJYswoTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235614},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"3795f003848f93e78be4e67aa45914e46e8d2ce2","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"11.5.1","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"24.5.0","dependencies":{"@holoyan/morph-map-js":"^0.1.1"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_1.3.1_1760817737197_0.11343504214366695","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-beta.1":{"name":"@holoyan/adonisjs-permissions","version":"2.0.0-beta.1","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@2.0.0-beta.1","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"beta","branch":"2.0.0-beta.1","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"ac9958509c738aad5165340930ef66450045fd41","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-2.0.0-beta.1.tgz","fileCount":64,"integrity":"sha512-nYI7JrflybmBl1F91DH1efKz4J0FvyO902yfptsnMqrhGSLtECh5ebBCsVunBVMbE3uFJXji1hMtLv42rpxUCQ==","signatures":[{"sig":"MEUCIBZCVSZPiKr9j/wpb5x8uMcaJDsy7MzYB6aYsh86lqgEAiEAo84VltYr73vD52IMyDpFhRu6/comcMSr7Qp1KuYXaNU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237133},"type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"161097a6cbc0c80ec2c72b78afb9254b4f991bf7","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"11.5.1","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"24.5.0","dependencies":{"@poppinss/hooks":"7.3.0","@holoyan/morph-map-js":"^0.1.2"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"beta","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","dotenv":"^17.2.4","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^7.0.0-next.0","@adonisjs/lucid":"^22.0.0-next.0","@adonisjs/tsconfig":"^2.0.0-next.3","@adonisjs/assembler":"^8.0.0-next.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^7.0.0-next.0","@adonisjs/lucid":"^22.0.0-next.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_2.0.0-beta.1_1771219328756_0.07719190752259864","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"@holoyan/adonisjs-permissions","version":"0.11.2","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@0.11.2","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"cc6e91f4bccd26a90b190e7d6273169494612deb","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-0.11.2.tgz","fileCount":64,"integrity":"sha512-g7SsS29AAMAuZgc5h5cniVoDvjia2BWe3Zx1PHyNuyLore8ZawydmDoJdRtsSf3xVkVbBX1j7hEzTbWyPsB7Qw==","signatures":[{"sig":"MEYCIQDdpzRbKmuF6MSO2QrnejrOA7d6MGZoELXcsd50FcCtmwIhANtVUHhouyvOJSXf0JHiBX7uEJ2o6056hnMNjBoC7W9K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236977},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"9afe88d23a8ec9a68e4e915c740204bc89988517","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"11.5.1","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"24.5.0","dependencies":{"@holoyan/morph-map-js":"^0.1.1"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^20.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_0.11.2_1771968761926_0.27070448352970966","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-beta.2":{"name":"@holoyan/adonisjs-permissions","version":"2.0.0-beta.2","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@2.0.0-beta.2","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"beta","branch":"2.0.0-beta.1","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"6df60fb9e3d71bf5f19b2b8965e475413ea4e53b","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-2.0.0-beta.2.tgz","fileCount":64,"integrity":"sha512-y1BQHdUENwoqT56o9zWuIPbbal36KmLwenJGNrCt523C8a4B9o9P3n0Oc3FRj+DNXsXz0w83y2Nuda9cUL7o4A==","signatures":[{"sig":"MEQCIA7dwvSAjoslBDEGHv6wO7yXIOtNbFldrYpcaZnjVgY6AiBadOhWLHQA2xZhNDOpEJ56WOT6CFAB72sc3/52MEuqag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237131},"type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"db22688616a4966ac5fcc86ac99ccf02afc20ddd","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"11.5.1","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"24.5.0","dependencies":{"@poppinss/hooks":"7.3.0","@holoyan/morph-map-js":"^0.1.2"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"beta","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","dotenv":"^17.2.4","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^7.0.0-next.0","@adonisjs/lucid":"^22.0.0-next.0","@adonisjs/tsconfig":"^2.0.0-next.3","@adonisjs/assembler":"^8.0.0-next.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^7.0.0-next.0","@adonisjs/lucid":"^22.0.0-next.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_2.0.0-beta.2_1771968784658_0.8738738799347683","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@holoyan/adonisjs-permissions","version":"1.3.2","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@1.3.2","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"main","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"89c6a02f9e98798f76e529238b2ef578a49a5882","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-1.3.2.tgz","fileCount":64,"integrity":"sha512-Q15eydQKGYe5bUJzGOfau389jTenFz9SESPkWwAumD9dZA2Vr8ELzzm0cBN4S1ozJbsvWZj0lyr2Nzq2nxHQqg==","signatures":[{"sig":"MEYCIQCH58IuZNEuaMh/Ds/aH4slbBbLE8Mk7dphsIP9pXY1ogIhAPam1WRHWw+VLorDJ3HorwgpZbAxMFPuZ48XenQ8vQ3b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236969},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"510756cbd2ea93b435c37134a44e8dac1d7063cd","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"11.5.1","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"24.5.0","dependencies":{"@holoyan/morph-map-js":"^0.1.1"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_1.3.2_1771968794604_0.5799362704773456","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@holoyan/adonisjs-permissions","version":"2.0.1","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@2.0.1","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"latest","branch":"master","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"a4400b6a0c6ed0820a1bd8502c71fb5cbfee117a","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-2.0.1.tgz","fileCount":64,"integrity":"sha512-5F2BBhThCsPgpMSDjlxdux9gBoq5H4axxK2Z4vtBGl5AyLoKk62XbyZRtQzqdYSq6JZ3nF70eRH2qd85XHQkEg==","signatures":[{"sig":"MEYCIQC3Qj681dbgMVqymFtqWWcvT+n5VR4l2uu7vjtfK8ZvbQIhAO0sW7Bu1+4J4Ty3lRy95fdF3lRtgC1Svj5hZrAfjJxo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237316},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"d848164008f9769086cc1bff196941c9f163e5e9","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"11.5.1","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"24.5.0","dependencies":{"@poppinss/hooks":"7.3.0","@holoyan/morph-map-js":"^0.1.1"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","dotenv":"^17.2.4","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^7.0.1","@adonisjs/lucid":"^22.1.1","@adonisjs/tsconfig":"^2.0.0","@adonisjs/assembler":"^8.0.1","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.7.2","@types/uuid":"^10.0.0","@adonisjs/core":"^7.0.1","@adonisjs/lucid":"^22.1.1"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_2.0.1_1773435925914_0.13192659714761712","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@holoyan/adonisjs-permissions","version":"1.3.3","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@1.3.3","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"v1-latest","branch":"v1.3.x","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"219369a80d330dfeaeb96a32c9a5af5ff3f42a94","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-1.3.3.tgz","fileCount":64,"integrity":"sha512-DeCqWyU2orITS64CR6hX5E1NeB39pk7koeP2CtRJcz7aa2zLdTLzDS/iX/eur5ajcwXqhmQFxKZHt3w5pUlzDQ==","signatures":[{"sig":"MEUCIQDXXRoG8KnnE577HPtwRu6+fgoHBUVUvk1h7STSw0In8AIgO6gVSLthSKQRjkIt1LE8Bk3o5lxzoxszEa80nQJ+bvI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237069},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"1dfdf21e90a81fe6b439f783900f0b646f03d2e0","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"11.5.1","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"24.5.0","dependencies":{"@holoyan/morph-map-js":"^0.1.1"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"v1-latest","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_1.3.3_1773436163651_0.697589430480493","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"@holoyan/adonisjs-permissions","version":"1.3.4","keywords":[],"author":{"name":"holoyan"},"license":"MIT","_id":"@holoyan/adonisjs-permissions@1.3.4","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"c8":{"exclude":["tests/**"],"reporter":["text","html"]},"np":{"tag":"v1-latest","branch":"v1.3.x","message":"chore(release): %s","anyBranch":false},"dist":{"shasum":"9884125390f2c76d2dda5a21c14f28c2481c29ba","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-1.3.4.tgz","fileCount":64,"integrity":"sha512-Tu27E6ZABJeg0rdd5KQ2eFv1Fc5NbNQ7tlAyL1f4MAv6M+yxzo/kkVJ4/eShjSqTYi8OQ8/hBFB953Y068z4rA==","signatures":[{"sig":"MEUCIQDzKlzbyfdePQOOCr40CrkxRMbYV49FwHOvJ2eUNVW2ggIgXfeXbVjDwaPsXh7+oFMqlfDzteaD19xt9YJ+EGfdajE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":238075},"type":"module","engines":{"node":">=18.16.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js"},"gitHead":"e79410a6a885b0c5140f429067611f91dfe47590","scripts":{"lint":"eslint . --ext=.ts","test":"c8 npm run quick:test","build":"tsc","clean":"del-cli build","format":"prettier --write .","pretest":"npm run lint","release":"np","version":"npm run build","prebuild":"npm run lint && npm run clean","postbuild":"npm run copy:templates","typecheck":"tsc --noEmit","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","copy:templates":"copyfiles \"stubs/**/*.stub\" build","prepublishOnly":"npm run build"},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"prettier":"@adonisjs/prettier-config","_npmVersion":"11.5.1","description":"AdonisJs roles and permissions system","directories":{},"_nodeVersion":"24.5.0","dependencies":{"@holoyan/morph-map-js":"^0.1.1"},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"publishConfig":{"tag":"v1-latest","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^9.0.0","np":"^9.2.0","pg":"^8.11.3","uuid":"^10.0.0","mssql":"^10.0.2","chance":"^1.1.11","eslint":"^8.38.0","mysql2":"^3.9.3","del-cli":"^5.0.0","sqlite3":"^5.1.7","ts-node":"^10.9.2","prettier":"^3.1.1","@swc/core":"^1.3.102","copyfiles":"^2.4.1","typescript":"^5.3.3","@types/node":"^20.10.7","@types/uuid":"^10.0.0","@japa/assert":"^2.1.0","@japa/runner":"^3.1.1","@types/luxon":"^3.4.2","@types/chance":"^1.1.6","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0","@adonisjs/tsconfig":"^1.2.1","@adonisjs/assembler":"^7.0.0","@adonisjs/eslint-config":"^1.2.1","@adonisjs/prettier-config":"^1.2.1"},"peerDependencies":{"uuid":"^10.0.0","luxon":"^3.4.4","@types/uuid":"^10.0.0","@adonisjs/core":"^6.2.0","@adonisjs/lucid":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adonisjs-permissions_1.3.4_1778607828374_0.37561750618723644","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@holoyan/adonisjs-permissions","description":"AdonisJs roles and permissions system","version":"2.0.2","engines":{"node":">=18.16.0"},"type":"module","exports":{".":"./build/index.js","./role_permission_provider":"./build/providers/role_permission_provider.js","./types":"./build/src/types.js","./events":"./build/src/events/index.js"},"scripts":{"clean":"del-cli build","copy:templates":"copyfiles \"stubs/**/*.stub\" build","typecheck":"tsc --noEmit","lint":"eslint . --ext=.ts","format":"prettier --write .","quick:test":"node --import=./tsnode.esm.js --enable-source-maps bin/test.ts","pretest":"npm run lint","test":"c8 npm run quick:test","prebuild":"npm run lint && npm run clean","build":"tsc","postbuild":"npm run copy:templates","release":"np","version":"npm run build","prepublishOnly":"npm run build"},"keywords":[],"author":{"name":"holoyan"},"license":"MIT","devDependencies":{"@adonisjs/assembler":"^8.0.1","@adonisjs/core":"^7.0.1","@adonisjs/eslint-config":"^1.2.1","@adonisjs/lucid":"^22.1.1","@adonisjs/prettier-config":"^1.2.1","@adonisjs/tsconfig":"^2.0.0","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","@swc/core":"^1.3.102","@types/chance":"^1.1.6","@types/luxon":"^3.4.2","@types/node":"^20.10.7","@types/uuid":"^10.0.0","c8":"^9.0.0","chance":"^1.1.11","copyfiles":"^2.4.1","del-cli":"^5.0.0","dotenv":"^17.2.4","eslint":"^8.38.0","mssql":"^10.0.2","mysql2":"^3.9.3","np":"^9.2.0","pg":"^8.11.3","prettier":"^3.1.1","sqlite3":"^5.1.7","ts-node":"^10.9.2","typescript":"^5.3.3","uuid":"^10.0.0"},"peerDependencies":{"@adonisjs/core":"^7.0.1","@adonisjs/lucid":"^22.1.1","@types/uuid":"^10.0.0","luxon":"^3.7.2","uuid":"^10.0.0"},"publishConfig":{"access":"public","tag":"latest"},"np":{"message":"chore(release): %s","tag":"latest","branch":"master","anyBranch":false},"c8":{"reporter":["text","html"],"exclude":["tests/**"]},"eslintConfig":{"extends":"@adonisjs/eslint-config/package"},"prettier":"@adonisjs/prettier-config","dependencies":{"@holoyan/morph-map-js":"^0.1.1","@poppinss/hooks":"7.3.0"},"_id":"@holoyan/adonisjs-permissions@2.0.2","gitHead":"565e2c4e1e7130a86eea76672a425f248e622101","_nodeVersion":"24.5.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-Y/z23iYpqoWjkn2Gcwz2eWsdugI523wiWmgtPLjbAb0QrOMXd9p/O3cqN7T3Qi2m9JjzOYSoncxroGLu1Dm2Hg==","shasum":"d9747b10221b398fd718f9a9f6b35830b44f7898","tarball":"https://registry.npmjs.org/@holoyan/adonisjs-permissions/-/adonisjs-permissions-2.0.2.tgz","fileCount":64,"unpackedSize":238273,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDyjHN9TDhYTu//6nw+tNeijHZUsx28xcnZcQgCT1SpWwIgPjtXEk/fIO8W8Y9OtalWNG+NtZIEYjW9y7eUzykvtBM="}]},"_npmUser":{"name":"holoyan","email":"artaksafaryanc@gmail.com"},"directories":{},"maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adonisjs-permissions_2.0.2_1778607845973_0.3609075098631922"},"_hasShrinkwrap":false}},"time":{"created":"2024-03-22T11:54:31.292Z","modified":"2026-05-12T17:44:06.244Z","0.1.0":"2024-03-22T11:54:31.583Z","0.5.0":"2024-04-04T08:05:49.674Z","0.5.2":"2024-04-04T10:07:05.437Z","0.6.4":"2024-04-16T08:03:41.693Z","0.6.8":"2024-04-19T13:14:34.878Z","0.7.11":"2024-05-01T13:16:53.936Z","0.7.12":"2024-05-03T06:45:33.208Z","0.7.14":"2024-05-07T18:02:43.548Z","0.7.15":"2024-05-11T13:41:34.200Z","0.8.17":"2024-05-19T16:19:46.614Z","0.8.18":"2024-06-28T05:52:49.403Z","1.0.0":"2024-08-18T09:05:54.205Z","0.8.19":"2024-08-28T10:36:54.505Z","1.0.1":"2024-08-28T10:40:15.104Z","0.8.20":"2024-09-23T16:59:19.104Z","1.0.2":"2024-09-23T17:06:05.253Z","0.8.21":"2024-11-04T19:42:22.439Z","1.0.3":"2024-11-04T19:42:44.159Z","0.8.23":"2025-02-23T14:14:51.769Z","1.0.5":"2025-02-23T14:16:15.387Z","0.9.0":"2025-06-15T08:34:23.501Z","1.1.0":"2025-06-15T08:34:55.769Z","0.10.0":"2025-07-06T08:14:19.061Z","1.2.0":"2025-07-06T08:20:33.726Z","0.11.0":"2025-07-24T19:41:20.433Z","1.3.0":"2025-07-24T19:41:45.084Z","0.11.1":"2025-10-18T20:01:44.248Z","1.3.1":"2025-10-18T20:02:17.418Z","2.0.0-beta.1":"2026-02-16T05:22:08.899Z","0.11.2":"2026-02-24T21:32:42.100Z","2.0.0-beta.2":"2026-02-24T21:33:04.809Z","1.3.2":"2026-02-24T21:33:14.817Z","2.0.1":"2026-03-13T21:05:26.085Z","1.3.3":"2026-03-13T21:09:23.803Z","1.3.4":"2026-05-12T17:43:48.544Z","2.0.2":"2026-05-12T17:44:06.132Z"},"author":{"name":"holoyan"},"license":"MIT","keywords":[],"description":"AdonisJs roles and permissions system","maintainers":[{"name":"holoyan","email":"artaksafaryanc@gmail.com"}],"readme":"# Role permissions system for AdonisJS\n\n| Package version | AdonisJS version |\n|----------------|-----------------|\n| v1.x           | v6              |\n| v2.x           | v7              |\n\nCheckout other AdonisJS packages\n\n- [AdonisJs Lucid Polymorphic Relations](https://github.com/holoyan/adonisjs-polymorphic)\n- [AdonisJs activity log](https://github.com/holoyan/adonisjs-activitylog)\n\n[//]: # ([![test]&#40;https://github.com/holoyan/adonisjs-permissions/actions/workflows/test.yml/badge.svg&#41;]&#40;https://github.com/holoyan/adonisjs-permissions/actions/workflows/test.yml&#41;)\n[![license](https://poser.pugx.org/silber/bouncer/license.svg)](https://github.com/holoyan/adonisjs-permissions/blob/master/LICENSE.md)\n\n## How can you support me?\n\n- It's simple, just star this repository, that is enough to keep me motivated to maintain this package.\n\n\n## Release Notes\n\nVersion: v2.0.2\n* Fixed `PermissionsService.forbidden()` returning `false` for explicitly denied permissions ([#36](https://github.com/holoyan/adonisjs-permissions/issues/36)). The method was missing `await` on an async call (`!Promise` is always `false`) and used the wrong semantic (negating `hasAny` conflated \"never granted\" with \"explicitly denied\"). It now queries the forbid rows directly and is correctly `async`.\n\n## Table of Contents\n\n<details><summary>Click to expand</summary><p>\n\n- [Introduction](#introduction)\n- [Installation](#installation)\n- [Configuration](#configuration)\n- [Mixins](#mixins)\n  - [hasPermissions](#haspermissions-mixin)\n  - [permissionQueryHelpers](#permissionqueryhelpers-mixin)\n- [Support](#support)\n  - [Database support](#database-support)\n  - [UUID support](#uuid-support)\n- [Basic Usage](#basic-usage)\n  - [Creating roles and permissions](#creating-roles-and-permissions)\n  - [Assigning permissions to the roles (Globally)](#assigning-permissions-to-the-roles-globally)\n  - [Creating permission on a fly](#creating-permission-on-a-fly)\n  - [Assigning permissions and roles to the users (models)](#assigning-permissions-and-roles-to-the-users-models)\n  - [Multi-model support](#multi-model-support)\n  - [Getting all roles for a user](#getting-all-roles-for-a-user)\n  - [Getting all permissions for a role](#getting-all-permissions-for-a-role)\n  - [Getting all permissions for a user (model)](#getting-all-permissions-for-a-user-model)\n  - [Getting users (models) for a permission](#getting-users-models-for-a-permission)\n  - [Getting models for a role](#getting-models-for-a-role)\n  - [Checking for a permission](#checking-for-a-permission)\n  - [Middleware](#middleware)\n  - [Removing (revoking) roles and permissions from the model](#removing-revokingdetach-roles-and-permissions-from-the-model)\n- [Digging deeper](#digging-deeper)\n  - [Restricting a permission on a resource)](#restricting-a-permission-on-a-resource)\n  - [Forbidding permissions](#forbidding-permissions)\n  - [Forbidding permissions on a resource](#forbidding-permissions-on-a-resource)\n  - [Checking for forbidden permissions](#checking-for-forbidden-permissions)\n  - [Unforbidding the permissions](#unforbidding-the-permissions)\n  - [Global vs resource permissions (Important!)](#global-vs-resource-permissions-important)\n  - [containsPermission v hasPermission](#containspermission-v-haspermission)\n  - [Scopes or Multi-tenancy](#scopes-or-multi-tenancy)\n    - [The Scope middleware](#the-scope-middleware) \n    - [Default Scope](#default-scope-tenant)\n  - [Transactions](#transactions)\n  - [Events](#events)\n- [Cheat sheet](#cheat-sheet)\n- [Todo](#todo)\n- [Test](#test)\n- [Version Map](#version-map)\n- [License](#license)\n</p></details>\n\n## Introduction\n\nAdonisJs Acl is an elegant and powerful package for managing roles and permissions in any AdonisJs app. With an expressive and fluent syntax, it stays out of your way as much as possible: use it when you want, ignore it when you don't.\n\nFor a quick, glanceable list of Acl's features, check out the [cheat sheet](#cheat-sheet)\n\nOnce installed, you can simply tell the Acl what you want to allow:\n\n```typescript\nimport {Acl} from '@holoyan/adonisjs-permissions'\n\n// Give a user the permission to edit\nawait Acl.model(user).allow('edit');\n// Behind the scenes Acl will create 'edit' permission and assign to the user if not available\n\n// You can also grant a permission only to a specific model\nconst post = await Post.first()\nawait Acl.model(user).allow('delete', post);\n// or \nawait user.allow('delete', post)\n```\n\nTo be able to use the full power of Acl, you should have a clear understanding of how it is structured and how it works. That's why the documentation will be divided into two parts: [Basic usage](#basic-usage) and [Advanced usage](#digging-deeper). For most applications, Basic Usage will be enough.\n\n## Installation\n\nFor AdonisJS v7 (latest):\n\n    npm i @holoyan/adonisjs-permissions\n\nFor AdonisJS v6:\n\n    npm i @holoyan/adonisjs-permissions@v1-latest\n\n\nNext publish config files\n\n    node ace configure @holoyan/adonisjs-permissions\nthis will create `permissions.ts` file in `configs` directory, migration file in the `database/migrations` directory\n\nNext run migration\n    \n    node ace migration:run\n\n\n## Configuration\n\nAll models that will interact with `Acl` MUST use the `@MorphMap('ALIAS_FOR_CLASS')` decorator and implement the `AclModelInterface` contract.\n\nExample. \n\n```typescript\n\nimport { BaseModel, column } from '@adonisjs/lucid/orm'\nimport { MorphMap } from '@holoyan/morph-map-js'  // (NOTE upper case `MorphMap`)\nimport { AclModelInterface } from '@holoyan/adonisjs-permissions/types'\n\n@MorphMap('users')\nexport default class User extends BaseModel implements AclModelInterface {\n  getModelId(): number {\n    return this.id\n  }\n  \n  // other code goes here\n}\n\n@MorphMap('admins')\nexport default class Admin extends BaseModel implements AclModelInterface {\n  getModelId(): number {\n    return this.id\n  }\n  // other code goes here\n}\n\n@MorphMap('posts')\nexport default class Post extends BaseModel implements AclModelInterface {\n  getModelId(): number { // use `string` return type if your model has uuid/string primary keys \n    return this.id\n  }\n\n  // other code goes here\n}\n\n```\n\n## Mixins\n\n### hasPermissions mixin\n\nIf you want to be able to call `Acl` methods on a `User` model then consider using `hasPermissions` mixin\n\n```typescript\n\nimport { BaseModel, column } from '@adonisjs/lucid/orm'\nimport { MorphMap } from '@holoyan/morph-map-js'  // (NOTE upper case `MorphMap`)\nimport { AclModelInterface } from '@holoyan/adonisjs-permissions/types'\n\n// import mixin\nimport { hasPermissions } from '@holoyan/adonisjs-permissions'\nimport { compose } from '@adonisjs/core/helpers'\n\n@MorphMap('users')\nexport default class User extends compose(BaseModel, hasPermissions()) implements AclModelInterface {\n  getModelId(): number {\n    return this.id\n  }\n  // other code goes here\n}\n\n// then all methods are available on the user\n\nconst user = await User.first()\nconst roles = await user.roles() // get user roles\nawait user.allow('edit') // give edit permission\n// and so on...\n\n```\n\n\n### permissionQueryHelpers mixin\n\nSometimes you might want to get all users who have a specific permission, for that you can use `permissionQueryHelpers` mixin\n\n```typescript\n\nimport { permissionQueryHelpers } from '@holoyan/adonisjs-permissions'\n\n\n@MorphMap('users')\nexport default class User extends compose(BaseModel, permissionQueryHelpers()) implements AclModelInterface {\n  getModelId(): number {\n    return this.id\n  }\n  // other code goes here\n\n  // name your scopes whatever you want, make sure to call query helper methods inside the scope\n  static whereRoles = scope((query, ...roles: string[]) => {\n    // all users who have roles\n    new User()._whereRoles(query, User, ...roles)\n  })\n\n  static whereDirectPermissions = scope(\n    (query, permissions: string[], target?: AclModel | Function) => {\n      // all users who have direct assigned permissions\n      new User()._whereDirectPermissions(query, User, permissions, target)\n    }\n  )\n\n  static whereRolePermissions = scope(\n    (query, permissions: string[], target?: AclModel | Function) => {\n      // all users who have permissions assigned through the role\n      new User()._whereRolePermissions(query, User, permissions, target)\n    }\n  )\n\n  static wherePermissions = scope((query, permissions: string[], target?: AclModel | Function) => {\n    // all users who have permissions assigned directly or through the role\n    new User()._wherePermissions(query, User, permissions, target)\n  })\n}\n\n```\n\nAnd to get all users who have `edit` permission, you can do that like this\n\n```typescript\n\nconst users = await User.query().withScopes((scopes) => {\n  scopes.wherePermissions(['edit'])\n})\n\n```\n\n## Support\n\n### Database Support\n\nCurrently supported databases: `postgres`, `mysql`, `mssql`\n\n### UUID support\nfrom `v0.7.11` UUID support available, all you need to do change `uuidSupport` value to `true` in `config/permissions.ts` file, then run the migration and don't forget to change return type for the `getModelId()` method \n\ncheck [todo](#todo) list for more details\n\n## Basic Usage\n\nOn this section, we will explore basic role permission methods.\n\n### Creating roles and permissions\n\nLet's manually create `create,update,read,delete` permissions, as well as `admin,manager` roles\n\n> Look also [Creating permissions on a fly](#creating-permissions-on-a-fly) section\n\n```typescript\n\nimport { Permission } from '@holoyan/adonisjs-permissions'\nimport { Role } from '@holoyan/adonisjs-permissions'\nimport {Acl} from \"@holoyan/adonisjs-permissions\";\n\n\n// create permissions\nconst create = await Permission.create({\n  slug:'create',\n  title:'Create some resource', // optional\n})\n\nconst update = await Permission.create({\n  slug:'update',\n})\n\n// or create using Acl (recomended way)\nconst read = await Acl.permission().create({\n  slug: 'read',\n})\n\n\nconst delete = await Acl.permission().create({\n  slug: 'delete',\n})\n\n// create roles\nconst admin = await Role.create({\n  slug:'admin',\n  title:'Cool title for Admin', // optional\n})\n\n// or create using Acl (recomended way)\nconst manager = await Acl.role().create({\n  slug: 'manager',\n})\n\n```\n\n\nThe next step is to [assign permissions to the roles](#assigning-permissions-to-the-roles-globally)\n\n### Assigning permissions to the roles (Globally)\n\nNow that we have created roles and permissions, let's assign them.\n\n```typescript\nimport {Acl} from \"@holoyan/adonisjs-permissions\";\n\n\nawait Acl.role(admin).assign('create')\n// alternatively you can use allow(), give() method, as they are identical\n\nawait Acl.role(admin).allow('update')\nawait Acl.role(admin).giveAll(['read', 'delete'])\n// alternatively you use giveAll(), assigneAll(), allowAll() for bulk assign\n\n```\n\n### Creating permissions on a fly\n\nIn case you are assigning a permission that is not already available, `Acl` will create new permission behind the scenes and assign them.\n\n```typescript\n\n// uploadFile permission not available\nawait Acl.role(admin).allow('uploadFile')\n// 'uploadFile' permission created and assigned\n\n```\n\n\n### Assigning permissions and roles to the users (models)\n\nLet's see in examples how to assign [roles and permissions](#creating-roles-and-permissions) to the users\n\n```typescript\nimport {Acl} from \"@holoyan/adonisjs-permissions\";\nimport User from \"#models/user\";\n\nconst user1 = await User.query().where(condition1).first()\n// give manager role to the user1\nawait Acl.model(user1).assignRole('manager')\n// or just use assign() method, they are alias\n// await Acl.model(user1).assign('manager')\n\nconst user2 = await User.query().where(condition2).first()\nawait Acl.model(user2).assign(admin)\n\n```\nOr we can give permissions directly to users without having any role\n\n```typescript\n\nimport {Acl} from \"@holoyan/adonisjs-permissions\";\n\n// create and assign a new permission\nAcl.model(user1).assignDirectPermission('upload-file-slug')\n// or use allow() method\nAcl.model(user1).allow('permissionSlug')\n```\n\n### Multi-model support\n\nWe are not limited to using only the User model. If you have a multi-auth system like User and Admin, you are free to use both of them with Acl.\n\n\n```typescript\nawait Acl.model(user).assignRole('manager')\n\nawait Acl.model(admin).assignRole('admin')\n\n```\n\n## Getting roles and permissions\n\nIn this section we will see how to get roles and permissions for a model and vice versa \n\n### Getting all roles for a user\n\n```typescript\n\nconst roles = await Acl.model(user).roles()\n```\n\n### Getting all permissions for a role\n\n```typescript\n\nconst roles = await Acl.role(role).permissions()\n```\n\n### Getting all permissions for a user (model)\n\n```typescript\n\nconst roles = await Acl.model(user).permissions()\n```\n\n### Getting models from the permission\n\n```typescript\n\nconst models = await Acl.permission(permission).models()\n\n```\nthis will return array of `ModelPermission` which will contain `modelType,modelId` attributes, where `modelType` is *alias* which you had specified in [morphMap decorator](#configuration), `modelId` is the value of column, you've specified inside [getModelId](#configuration) method.\n\nMost of the time, you will have only one model (User). It's better to use the `modelsFor()` method to get concrete models.\n\n```typescript\n\nconst models = await Acl.permission(permission).modelsFor(User)\n\n```\nthis will return [array of User models](https://lucid.adonisjs.com/docs/crud-operations#using-the-query-builder)\n\n### Getting models for a role\n\n```typescript\n\nconst models = await Acl.role(permission).models()\n\n```\n\nOr if you want to get for a specific model\n\n```typescript\n\nconst models = await Acl.role(permission).modelsFor(User)\n\n```\n\n### Checking for a role\n\nTo check if user has role\n\n```typescript\n\nawait Acl.model(user).hasRole('admin') // :boolean\n\n```\n\nyou can pass list of roles \n\n```typescript\n\n// returns true only if user has all roles\nawait Acl.model(user).hasAllRoles('admin', 'manager') \n\n```\n\nTo check if a user has any of the roles\n\n```typescript\n\nawait Acl.model(user).hasAnyRole('admin', 'manager') \n// it will return true if the user has at least one role.\n\n```\n\n### Checking for a permission\n\nCheck if user has permission\n\n```typescript\n\nawait Acl.model(user).hasPermission('update')\n// or \nawait Acl.model(user).can('update') // alias for hasPermission() method\n\n// or simply call\nawait user.hasPermission('update')\n```\n\nTo check array of permissions\n\n```typescript\n\n// returns true only if user has all permissions\nawait Acl.model(user).hasAllPermissions(['update', 'delete'])\n// or \nawait Acl.model(user).canAll(['update', 'delete']) // alias for hasAllPermissions() method\n\n// await user.canAll(['update', 'delete'])\n\n```\n\nto check if user has any of the permission\n\n```typescript\n\n// returns true only if user has all permissions\nawait Acl.model(user).hasAnyPermission(['update', 'delete'])\n// or \nawait Acl.model(user).canAny(['update', 'delete']) // alias for hasAnyPermission() method\n\n// will return true if user has at least one permission\n\n```\n\nSame applies for the roles\n\n```typescript\n\nawait Acl.role(role).hasPermission('update')\nawait Acl.role(role).hasAllPermissions(['update', 'read'])\nawait Acl.role(role).hasAnyPermission(['update', 'read'])\n\n```\n\n### Checking partial permissions\n\nSometimes you might want to check if a user has a specific permission on any instance of a model class, rather than checking for global permissions or permissions on a specific instance. For this purpose, you can use the `canPartially` method:\n\n```typescript\n\nconst postWithId = await Post.find(id)\nawait Acl.model(user).allow('create', postWithId) // allow 'create' on post instance\n\n// This is useful when you want to know if a user has permission on at least one instance\nAcl.model(user).can('create') // will return false\nAcl.model(user).can('create', Post) // will return false\nAcl.model(user).canPartially('create', Post) // will return true because user has a 'create' permission on postWithId instance\n```\n\n### Middleware\n\nYou are free to do your check anywhere, for example we can create [named](https://docs.adonisjs.com/guides/middleware#named-middleware-collection) middleware and do checking\n\n> don't forget to register your middleware inside kernel.ts\n\n\n```typescript\n\n// routes.ts\nimport { middleware } from '#start/kernel'\n\n// routes.ts\nrouter.get('/posts/:id', [ProductsController, 'show']).use(middleware.acl({permission: 'edit'}))\n\n\n// acl_middleware.ts\nexport default class AclMiddleware {\n  async handle(ctx: HttpContext, next: NextFn, options: { permission: string }) {\n\n    const hasPermission = await ctx.auth.user.hasPermission(options.permission)\n    \n    if(!hasPermission) {\n      ctx.response.abort({ message: 'Cannot edit post' }, 403)\n    }\n\n    const output = await next()\n    return output\n  }\n}\n\n```\n\n### Removing (revoking/detach) roles and permissions from the model\n\nTo revoke(detach) role from the user we can use `revoke` method\n\n```typescript\n\nawait Acl.model(user).revokeRole('admin')\nawait Acl.model(user).revokeAllRoles(['admin', 'manager'])\n\n// will remove all assigned roles\nawait Acl.model(user).flushRoles()\n\n```\n\nRevoking permissions from the user\n\n```typescript\nawait Acl.model(user).revokePermission('update')\nawait Acl.model(user).revoke('delete') // alias for revokePermission()\n\n// await Acl.model(user).hasPermission('update') will return false\n\nawait Acl.model(user).revokeAllPermissions(['update', 'delete'])\nawait Acl.model(user).revokeAll(['update', 'delete']) // alias for revokeAllPermissions()\n\n// revoke all assigned permissions\nawait Acl.model(user).flushPermissions()\n\n// revokes all roles and permissions for a user\nawait Acl.model(user).flush()\n\n```\n\nRemoving permissions from the role\n\n```typescript\nawait Acl.role(role).revokePermission('update')\n// or \nawait Acl.role(role).revoke('update') // alias for revokePermission\n\nawait Acl.role(role).revokeAllPermissions(['update', 'delete'])\n// alias revokeAll(['update', 'delete'])\n\n// remove all assigned permissions\nawait Acl.role(role).flushPermissions()\n// alias flush()\n\n```\n\n\n### Deleting roles and permissions (Important!)\n\n> Recommended! use Acl to delete roles and permissions instead of directly making queries on the Role,Permission model, under the hood Acl does some checking\n\n```typescript\n\nawait Acl.role().delete('admin')\n\nawait Acl.permission().delete('edit')\n\n```\n\nTo see in dept usage of this methods check [next section](#digging-deeper)\n\n## Digging deeper\n\nIn the [previous](#basic-usage) section, we looked at basic examples and usage. Most of the time, basic usage will probably be enough for your project. However, there is much more we can do with `Acl`.\n\n### Restricting a permission on a resource\n\nSometimes you might want to restrict a permission on a specific model(resource). Simply pass the model as a second argument:\n\n```typescript\nimport Product from \"#models/product\";\n\nawait Acl.model(user).allow('edit', Product)\n\n```\n>Important! - Don't forget to add `MorphMap` decorator and `AclModelInterface` on Product class\n\n```typescript\n\n@MorphMap('products')\nexport default class Product extends BaseModel implements AclModelInterface {\n  getModelId(): number {\n    return this.id\n  }\n  // other code\n}\n\n```\n\n>Warning: All models which interact with Acl **MUST** use [MorphMap]() decorator and implement `AclModelInterface`\n\nThen we can make checking again\n\n```typescript\nimport Product from \"#models/product\";\nimport Post from \"#models/post\";\n\n// await Acl.model(user).allow('edit', Product)\n\nconst productModel1 = Product.find(id1)\nconst productModel50 = Product.find(id50)\nconst postModel = Post.find(postId)\n\nawait Acl.model(user).hasPermission('edit', productModel1) // true\nawait Acl.model(user).hasPermission('edit', productModel50) // true\n// ... for all Product model instances it will return true\nawait Acl.model(user).hasPermission('edit', Product) // true\n\nawait Acl.model(user).hasPermission('edit', postModel) // false\nawait Acl.model(user).hasPermission('edit', Post) // false\n\nawait Acl.model(user).hasPermission('edit') // false\n\n// containsPermission() method will tell if user has 'edit' permission attached at all\nawait Acl.model(user).containsPermission('edit') // true\n\n```\n\nCheck [ContainsPermission vs hasPermission](#containspermission-v-haspermission) section for more details\n\nWe can restrict even more, and give permission to the specific model\n\n```typescript\n\nimport Product from \"#models/product\";\n\nconst product1 = Product.find(1)\n\nawait Acl.model(user).assignDirectPermission('edit', product1)\n\nconst product2 = Product.find(2)\n\nawait Acl.model(user).hasPermission('edit', product1) // true\nawait Acl.model(user).hasPermission('edit', product2) // false\n\nawait Acl.model(user).hasPermission('edit', Product) // false\n\nawait Acl.model(user).hasPermission('edit') // false\nawait Acl.model(user).containsPermission('edit') // true\n\n```\n\nThis will behave the same way if you assign the permission through the role instead of directly\n\n```typescript\n\nconst product1 = Product.find(1)\n\nawait Acl.role(admin).allow('edit', product1)\n\nconst user = await User.first()\n\n// assign role\nawait Acl.model(user).assignRole(role)\n\n// then if we start checking, result will be same\n\nconst product2 = Product.find(2)\n\nawait Acl.model(user).hasPermission('edit', product1) // true\nawait Acl.model(user).hasPermission('edit', product2) // false\n\nawait Acl.model(user).hasPermission('edit', Product) // false\n\nawait Acl.model(user).hasPermission('edit') // false\nawait Acl.model(user).containsPermission('edit') // true\n\n```\n\n### Forbidding permissions\n\nLet's imagine a situation where `manager` role has `create,update,read,delete` permissions. \n\nAll your users have `manager` role but there are small amount of users you want to forbid `delete` action. \nGood news!, we can do that\n\n```typescript\n\nawait Acl.role(manager).giveAll(['create','update','read','delete'])\n\n// assigning to the users\nawait Acl.model(user1).assign('manager')\n\nawait Acl.model(user3).assign('manager')\nawait Acl.model(user3).forbid('delete')\n\nawait Acl.model(user1).hasRole('manager') // true\nawait Acl.model(user1).can('delete') // true\n\nawait Acl.model(user3).hasRole('manager') // true\nawait Acl.model(user3).can('delete') // false\n\nawait Acl.model(user3).contains('delete') // true\n\n```\n\n### Forbidding permissions on a resource\n\nYou can also forbid single action on a resource\n\n```typescript\n\nconst post = Post.find(id1)\n\nawait Acl.model(user3).forbid('delete', post)\n\n```\n\n### Checking for forbidden permissions\n\nIn [previous](#forbidding-permissions) section we saw how to forbid certain permissions for the model, even if user has that permission through the role, now we will look how to check if permission is forbidden or not\n\n```typescript\n\nawait Acl.model(user3).assignRole('manager')\nawait Acl.model(user3).forbid('delete')\n\nawait Acl.model(user3).forbidden('delete') // true\n\nconst post1 = Post.find(id1)\n\nawait Acl.model(user).allow('edit', Post) // allow for all posts\nawait Acl.model(user).forbid('edit', post1) // except post1\n\nawait Acl.model(user).forbidden('edit', post1) // true\n\nconst post7 = Post.find(id7)\nawait Acl.model(user).forbidden('edit', post7) // false becouse 'edit' action forbidden only for the post1 instance\n```\n\n### Unforbidding the permissions\n\n```typescript\n\nawait Acl.model(user3).assignRole('manager')\nawait Acl.model(user3).forbid('delete')\n\nawait Acl.model(user3).forbidden('delete') // true\nawait Acl.model(user3).can('delete') // false\nawait Acl.model(user3).can('delete') // true\n\nawait Acl.model(user3).unforbid('delete')\nawait Acl.model(user3).forbidden('delete') // false\nawait Acl.model(user3).can('delete') // true\n\n```\nSame behaviour applies with roles\n\n```typescript\nawait Acl.role(role).assignRole('manager')\nawait Acl.role(role).forbid('delete')\n\nawait Acl.role(role).forbidden('delete') // true\nawait Acl.role(role).hasPermission('delete') // false\nawait Acl.role(role).contains('delete') // true\n\n```\n\n### Global vs resource permissions (Important!)\n\n> Important! Actions performed globally will affect on a resource models\n\nIt is very important to understand difference between global and resource permissions and their scope.\nLook at this way, if there is no `entity` model, then actions will be performed **globally**, otherwise **on resource**\n\n```\n\n\n|--------------Global--------------|\n|                                  |\n|    |------Class level------|     |\n|    |                       |     |\n|    |   |--Model level--|   |     |\n|    |   |               |   |     |\n|    |   |               |   |     |\n|    |   |               |   |     |\n|    |   |---------------|   |     |\n|    |                       |     |\n|    |-----------------------|     |\n|                                  |\n|----------------------------------|\n\n```\n\n```typescript\nimport {Acl} from \"@holoyan/adonisjs-permissions\";\nimport Post from \"#models/post\";\n\n// first assigning permissions\n// Global level\nawait Acl.model(admin).allow('create');\nawait Acl.model(admin).allow('edit');\nawait Acl.model(admin).allow('view');\n\n// class level\nawait Acl.model(manager).allow('create', Post)\n\n// model level\nconst myPost = await Post.find(id)\nawait Acl.model(client).allow('view', myPost)\n\n// start checking\n// admin\nawait Acl.model(admin).hasPermission('create') // true\nawait Acl.model(admin).hasPermission('create', Post) // true\nawait Acl.model(admin).hasPermission('create', myPost) // true\n\n// manager - assigned class level\nawait Acl.model(manager).hasPermission('create') // false\nawait Acl.model(manager).hasPermission('create', Post) // true\nawait Acl.model(manager).hasPermission('create', myPost) // true\nawait Acl.model(manager).hasPermission('create', myOtherPost) // true\n\n// assigned model level\nawait Acl.model(client).hasPermission('create') // false\nawait Acl.model(client).hasPermission('create', Post) // false\nawait Acl.model(client).hasPermission('create', myPost) // true\nawait Acl.model(client).hasPermission('create', myOtherPost) // false\n// ... and so on\n\n```\n\nSame is true when using `forbidden` action\n\n```typescript\n\n// class level\nawait Acl.model(manager).allow('edit', Post) // allow to edit all posts\n\nawait Acl.model(manager).forbid('edit', myPost) // forbid editing ONLY on a myPost\n\nawait Acl.model(client).hasPermission('edit', Post) // true\nawait Acl.model(client).hasPermission('edit', myPost) // false\nawait Acl.model(client).hasPermission('edit', myOtherPost) // true\n\n```\n\n### containsPermission v hasPermission\n\nAs you've already seen there are difference between `containsPermission` and `hasPermission` methods. `containsPermission()` method will return `true` if user has that permission, it doesn't matter if it's *global*, *on resource* or *forbidden*.\n\n> `contains()` method is alias for `containsPermission()`\n\nLets in example see this difference\n\n```typescript\n\n\nawait Acl.model(user).allow('edit'); // assing globally\nawait Acl.model(user).containsPermission('edit') // true\n\n\nawait Acl.model(user).allow('delete', Post); // assing on resource\nawait Acl.model(user).containsPermission('delete') // true\n\n\nawait Acl.model(user).forbid('read'); // forbid read action\nawait Acl.model(user).containsPermission('read') // true\n\n```\n\n## Scopes or Multi-tenancy\n\nAcl fully supports multi-tenant apps, allowing you to seamlessly integrate  roles and permissions for all tenants within the same app.\n\n```typescript\n\n// lets say all users have organization_id attribute\n\nawait Acl.model(user).on(user.project_id).allow('edit')\nawait Acl.model(user).on(user.project_id).allow('delete')\n\n// checking\nawait Acl.model(user).on(user.project_id).hasPermission('edit') // true\nawait Acl.model(user).on(user.project_id).hasPermission('delete') // true\n\n// checking without scope\nawait Acl.model(user).hasPermission('edit') // false - by default scope is equal to 'default'\n\n\n```\n\n### The Scope middleware\n\n`Acl` has built-in middleware to make scope checking easier.\n\n\nThis middleware is where you tell `Acl` which tenant to use for the current request. For example, assuming your users all have an account_id attribute, this is what your middleware would look like:\n\n```typescript\n\n// acl_middleware\nexport default class AclScopeMiddleware {\n  async handle(ctx: HttpContext, next: NextFn) {\n    const scope = new Scope()\n    scope.set(auth.user.account_id)\n    ctx.acl = new AclManager(true).scope(scope)\n    /**\n     * Call next method in the pipeline and return its output\n     */\n    const output = await next()\n    return output\n  }\n}\n\n// then on controller you can do\n\n// post_controller.ts\n\nexport default class PostController {\n  async show({acl}: HttpContext){\n    // will check inside auth.user.account_id scope\n    await acl.model().hasPermission('view')\n    // this both will be equal\n    // await acl.model().on(auth.user.account_id).hasPermission('view')\n  }\n}\n\n```\n> Important! If you are using `AclScopeMiddleware` and want to have scope functional per-request then use `acl` from the `ctx` instead of using global `Acl` (NOTE: lower case) object, otherwise changes inside `AclScopeMiddleware` will not make effect\n\nLet's see in example\n\n\n```typescript\n\n// acl_middleware\nexport default class AclScopeMiddleware {\n  async handle(ctx: HttpContext, next: NextFn) {\n    const scope = new Scope()\n    scope.set('dashboard') // set scope value to 'dashboard' for current request\n    ctx.acl = new AclManager().scope(scope)\n    /**\n     * Call next method in the pipeline and return its output\n     */\n    const output = await next()\n    return output\n  }\n}\n\n// post_controller.ts\n// global object\nimport {Acl} from \"@holoyan/adonisjs-permissions\";\n\nexport default class PostController {\n  async show({acl}: HttpContext){\n    const scope = acl.getScope() \n    console.log(scope.get()) // 'dashboard'\n    // global object\n    console.log(Acl.getScope()) // 'default'\n    \n    acl.scope('dashboard_1')// update and set new scope\n    // for current request it will be 'dashboard_1'\n    console.log(acl.getScope()) // 'dashboard_1'\n\n    Acl.scope('dashboard_2') // Throws error\n    // check next for the details\n    await Acl.model(user).on(8).permissions() // get permissions for user on scope 8    \n  }\n}\n\n```\n\n> Important! By default, you can't update scope on global object, it will throw an error, because by updating global `Acl` scope it will rewrite for an entire application and this will lead to unexpected behavior BUT if you still want to do that then you can do it by passing `forceUpdate` param\n\n```typescript\n\n// global object\nimport {Acl} from \"@holoyan/adonisjs-permissions\";\n\n\nAcl.scope('dashboard_2') // Throws error\n\n// you can force update\nlet forceUpdate = true;\nAcl.scope('dashboard_2', forceUpdate) \n\n// concurent requests will override each other\n\n// request 1 \nAcl.scope('scope_1', forceUpdate)\n// other code - long process\n\n// request 2 - simultaneously\nAcl.scope('scope_2', forceUpdate) // will override request 1 scope \n\n```\n\n\n### Default scope (Tenant)\n\n> Default Scope value is equal to 'default'\n\n### Transactions\n\nIn case you want to use `Acl` inside the transaction then you can pass `options` directly to query method.\n\n```typescript\n\nimport {Acl} from '@holoyan/adonisjs-permissions'\n\nconst trx = await db.transaction()\n\nawait Acl.model(user).withQueryOptions({ client: trx }).allow('delete')\n\n// you other code\n\nawait trx.commit()\n\n```\n\n\n### Events\n\n`Acl` has built-in events that you can listen to. All they are class-based. To listen to the events, you can use `emitter`\n\n```typescript\nimport emitter from '@adonisjs/core/services/emitter'\nimport { PermissionsAttachedToModelEvent } from '@holoyan/adonisjs-permissions/events'\n\nemitter.on(PermissionsAttachedToModelEvent, (event) => {\n  console.log('permission attached to the model')\n  console.log(event.model) // lucid model instance\n  console.log(event.permissionIds) // array of permission ids\n})\n\nawait Acl.model(myUser).allow('create')\n\n```\n\n\nYou can also disable events per query by calling withoutEvents() method\n\n```typescript\n\nemitter.on(RoleCreatedEvent, () => {\n  console.log('Role created') // this will not be called\n})\n\n//\nawait Acl.role().withoutEvents().create({ // this one will not trigger RoleCreatedEvent\n  slug: 'admin',\n})\n\nawait Acl.role().create({ // this will trigger\n  slug: 'admin',\n})\n\n```\n\nIf you want to completely disable events, you can do that by calling `withoutEvents()` method on the `Acl` class\n\n```typescript\n\nAcl.withoutEvents()\n\n// any method called on the Acl will not trigger any events\nemitter.on(RoleCreatedEvent, () => {\n  console.log('Role created') // this will not be called\n})\n\nawait Acl.role().create({ // this will not trigger because globaly withoutEvents() is set\n  slug: 'admin',\n})\n```\n\nList of events you can listen to:\n\n```\n\n// Permission events\n\nPermissionCreatedEvent { // only if you use Acl.permission().create() method\n  permission: Permission // created permission instance\n}\n\nPermissionDeletedEvent {\n  permission: string // slug of deleted permission\n}\n\nPermissionsAttachedToRoleEvent {\n  permissionIds: ModelIdType[],\n  roleId: ModelIdType\n}\n\nPermissionsDetachedFromRoleEvent {\n    permissions: string[],\n    roleId: ModelIdType\n}\n\nPermissionsAttachedToModelEvent<T extends LucidModel>{\n    permissionIds: ModelIdType[],\n    model: T\n}\n\nPermissionsDetachedFromModelEvent<T extends LucidModel>{\n    permissions: string[],\n    model: T\n}\n\nPermissionsFlushedEvent<T extends LucidModel> {\n    model: T\n}\n\nPermissionsForbadeEvent<T extends LucidModel> {\n    permissionIds: ModelIdType[],\n    model: T\n}\n\nPermissionsUnForbadeEvent<T extends LucidModel> {\n    permissionIds: ModelIdType[],\n    model: T\n}\n\nPermissionsFlushedFromRoleEvent{\n    roleId: ModelIdType\n}\n\n// Role events\n\nRoleCreatedEvent {\n  role: Role // created role instance\n}\n\nRoleDeletedEvent {\n  role: string // slug of deleted role\n}\n\nRolesAttachedToModel<T extends LucidModel> {\n  roles: string[], // array of role slugs\n  model: T // lucid model instance\n}\n\nRolesDetachedFromModelEvent<T extends LucidModel> {\n  roles: string[], // array of role slugs\n  model: T // lucid model instance\n}\n\nRolesFlushedFromModelEvent {\n  model: T // lucid model instance\n}\n\n```\n\n\n## Cheat sheet\n\nModel methods\n```typescript \n// getting model roles\nawait Acl.model(user).roles()\n\n// Checking the current model's roles\nawait Acl.model(user).hasRole('role_slug')\nawait Acl.model(user).hasAllRoles('role_slug1', 'role_slug2')\nawait Acl.model(user).hasAnyRole('role_slug1', 'role_slug2')\n\n// assigning roles\nawait Acl.model(user).assignRole('role_slug')\nawait Acl.model(user).assign('role_slug') // alias for assignRole()\nawait Acl.model(user).assignAllRoles('role_slug1', 'role_slug2')\n\n// revoking roles\nawait Acl.model(user).revokeRole('role_slug')\nawait Acl.model(user).revokeAllRoles('role_slug1', 'role_slug2')\nawait Acl.model(user).flushRoles() // remove all roles\n\n// syncing roles\nawait Acl.model(user).syncRoles(['role_slug1', 'role_slug2']) // remove all roles and assign new\nawait Acl.model(user).syncRolesWithoutDetaching(['role_slug1', 'role_slug2') // assign new roles without removing old\n\n\n// getting model permissions\n\nawait Acl.model(user).permissions()\nawait Acl.model(user).globalPermissions() // get list of global permissions\nawait Acl.mode(user).onResourcePermissions() // get list of on resrouce permissions\nawait Acl.model(user).directPermissions() // list of permissions assigned to the user drectly \nawait Acl.model(user).rolePermissions() // Get permissions through roles\nawait Acl.model(user).directGlobalPermissions()\nawait Acl.model(user).directResourcePermissions()\n\n// checking for permission\nawait Acl.model(user).hasPermission(permission)\nawait Acl.model(user).hasAllPermissions([permission1, permission2])\nawait Acl.model(user).hasAnyPermission([permission1, permission2])\nawait Acl.model(user).hasAnyDirectPermission([permission1, permission2])\nawait Acl.model(user).hasDirectPermission(permission1)\nawait Acl.model(user).hasAllPermissionsDirect([permission1, permission2])\nawait Acl.model(user).can(permission1) // alias for hasPermission()\nawait Acl.model(user).canAll([permission1, permission2])\nawait Acl.model(user).canAny([permission1, permission2])\n\n// check Contains vs hasPermission section to see the diferrence \nawait Acl.model(user).containsPermission(permission)\nawait Acl.model(user).contains(permission) // alias for containsPermission\nawait Acl.model(user).containsAllPermissions([permission1])\nawait Acl.model(user).containsAnyPermission([permission1])\nawait Acl.model(user).containsDirectPermission([permission1])\nawait Acl.model(user).containsAllPermissionsDirectly([permission1])\nawait Acl.model(user).containsAnyPermissionDirectly([permission1])\n\n// assigning permissions\nawait Acl.model(user).assignDirectPermission(permission)\nawait Acl.model(user).assignDirectAllPermissions([permission1, permission2])\nawait Acl.model(user).allow(permission1) // alias for assignDirectPermission()\nawait Acl.model(user).allowAll([permission1, permission2])\n\n// reviking permissions\nawait Acl.model(user).revokePermission(permission1)\nawait Acl.model(user).revoke(permission1) // alias for revokePermission()\nawait Acl.model(user).revokeAllPermissions([permission1, permission2])\nawait Acl.model(user).revokeAll([permission1, permission2]) // alias for revokeAllPermissions()\nawait Acl.model(user).flushPermissions() // revoke/delete all direct assigned permissions\nawait Acl.model(user).flush() // revoke/delete all assigned roles and permissions\n\n// sync permissions\nawait Acl.model(user).syncPermissions([permission1, permission2]) // all direct assigned permissions will be revoked and only permission1, permission2 will be assigned\n\n// forbid/unforbiding permissions\nawait Acl.model(user).forbid(permission1)\nawait Acl.model(user).forbidAll([permission1, permission2])\nawait Acl.model(user).unforbid(permission1)\nawait Acl.model(user).unforbidAll([permission1, permission2])\n\n```\n\nRole methods \n\n```typescript\n\nawait Acl.role(myAdminRole).models() // get list of models assigned to the role\nawait Acl.role(myAdminRole).modelsFor('ALIAS_FOR_MODEL')\n\nawait Acl.role(myAdminRole).permissions() \nawait Acl.role(myAdminRole).globalPermissions()\nawait Acl.role(myAdminRole).onResourcePermissions()\n\n// checking for a permissions\nawait Acl.role(myAdminRole).hasPermission(permission)\nawait Acl.role(myAdminRole).hasAllPermissions([permission1, permission2])\nawait Acl.role(myAdminRole).hasAnyPermissions([permission1, permission2])\nawait Acl.role(myAdminRole).can(permission) // alias for hasPermission\nawait Acl.role(myAdminRole).canAll([permission1, permission2])\nawait Acl.role(myAdminRole).canAny([permission1, permission2])\n\nawait Acl.role(myAdminRole).containsPermission(permission)\nawait Acl.role(myAdminRole).containsAllPermissions([permission1, permission2])\nawait Acl.role(myAdminRole).containsAnyPermissions([permission1, permission2])\nawait Acl.role(myAdminRole).forbidden(permission) // check if permission forbidden for a role\n\n// assigning permission\nawait Acl.role(myAdminRole).give(permission)\nawait Acl.role(myAdminRole).assign(permission) // alias for give()\nawait Acl.role(myAdminRole).allow(permission) // alias for give()\n\nawait Acl.role(myAdminRole).giveAll([permission1])\nawait Acl.role(myAdminRole).assignAll([permission1])\nawait Acl.role(myAdminRole).allowAll([permission1])\n\n// revoking permission\nawait Acl.role(myAdminRole).revokePermission(permission1)\nawait Acl.role(myAdminRole).revoke(permission1) // alias for revokePermission()\nawait Acl.role(myAdminRole).revokeAllPermissions([permission1])\nawait Acl.role(myAdminRole).revokeAll([permission1]) // alias for revokeAllPermissions()\nawait Acl.role(myAdminRole).flush() // revoke all\n\nawait Acl.role(myAdminRole).sync([permission1, permission2]) // revoke all and assign only permission1, permission2\n\n// forbid/unforbid\n\nawait Acl.role(myAdminRole).forbid(permission)\nawait Acl.role(myAdminRole).unforbid(permission)\n\n```\n\nPermission methods\n```typescript\nawait Acl.permission(myPermission).roles() // list of roles\nawait Acl.permission(myPermission).modelsFor('MODEL_ALIAS')\nawait Acl.permission(myPermission).belongsToRole(role_slug) // check if permission belongs to role\nawait Acl.permission(myPermission).attachToRole(role_slug)\nawait Acl.permission(myPermission).detachFromRole(role_slug)\n\n```\n\n\n## TODO\n\n- [X] Scopes (Multitenancy)\n- [X] UUID support\n- [X] Events\n- [X] Query helpers\n- [ ] More test coverage\n- [ ] Caching\n- [ ] Integration with AdonisJs Bouncer\n\n## Test\n\n    npm run test\n\n\n## Version Map\n\n\n| AdonisJS Lucid version | Package version |\n|------------------------|-----------------|\n| v20.x                  | 0.10.x          |\n| v21.x                  | 1.x             |\n\n\n\n## License\n\n\nMIT\n","readmeFilename":"README.md"}