{"_id":"cqrs-authentication-rbac","_rev":"40-3c301781c399b85df29c86c11b25d993","name":"cqrs-authentication-rbac","dist-tags":{"latest":"3.3.6"},"versions":{"1.0.0":{"name":"cqrs-authentication-rbac","version":"1.0.0","author":"","license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.0.0","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"3ac263538e47139790849d4f3cd667e7766c8fed","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.0.0.tgz","fileCount":75,"integrity":"sha512-WTao1t5IyiYAP1Hv0FDJPC5HglJpaNHakwp2U9+ngX8qqrogNJd5v5wVnt7lDAhYbLXtfw0tq9G8TaodNHsXig==","signatures":[{"sig":"MEUCIQDGH/YtCeRApZ27hqAe3xluQ2y5PeF6mbdl07cpeUSq2QIgN+3pHciJ97Vcl6zjoZi1fld+aEHTjltl2IUYkI/g4Ig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65387},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"gitHead":"d3a0ac80c148f659af5666187ac0941c7d3adfa5","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"```bash PG_MAIN_DB_HOST=localhost PG_MAIN_DB_PORT=5432 PG_MAIN_DB_USER=node PG_MAIN_DB_PASSWORD=node PG_MAIN_DB_DATABASE=node","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^5.1.5","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","@nestjs/platform-express":"^11.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.0.0_1742995514659_0.028201960259179426","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"cqrs-authentication-rbac","version":"1.0.1","author":"","license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.0.1","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"0e903f04146ae37e9f9a26f23a06d1143e0fff02","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.0.1.tgz","fileCount":75,"integrity":"sha512-pgARMmWMXuvTTeiyNtM0p5c+/pCPu/wzsSJ6S82pzUD8QiFxgnxXlJdod5hVmf6nfpKVoYSsmsVY4W3xkXJWuQ==","signatures":[{"sig":"MEUCIFNvAEN7T2GJwWMxr2zhErEPPLAyEGbIJM1zJ9jbf9nZAiEA2Upor+VKvbSK/HmjghDab1lqkMuJ8kx2NlGhyP76BWY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65515},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"gitHead":"d3a0ac80c148f659af5666187ac0941c7d3adfa5","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","publish":"npm publish --access public","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"```bash PG_MAIN_DB_HOST=localhost PG_MAIN_DB_PORT=5432 PG_MAIN_DB_USER=node PG_MAIN_DB_PASSWORD=node PG_MAIN_DB_DATABASE=node","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^5.1.5","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","@nestjs/platform-express":"^11.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.0.1_1742996031110_0.6609050861973336","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"cqrs-authentication-rbac","version":"1.1.1","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.1.1","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"1e2133721df3487337dd4476446a948f40893eeb","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.1.1.tgz","fileCount":75,"integrity":"sha512-UkE2P3EquwCU6kJcN1UTxV8+uKjsV4QD3d6VEAmSmxxPEsg6f5/yQQmfste8rAqKvo627s/LQsRxc2qGaj7fIA==","signatures":[{"sig":"MEUCIBEbP437PeY2/xZ0Hagwgknn86rlnf2eU8Q3eY6In70hAiEAr62ecsN7e6Fcz4+uqx+9cBlWd4i+UvlybylN1qBnC1A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65583},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"gitHead":"d3a0ac80c148f659af5666187ac0941c7d3adfa5","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","publish":"npm publish --access public","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^5.1.5","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","@nestjs/platform-express":"^11.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.1.1_1742996137578_0.1566959534256518","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"cqrs-authentication-rbac","version":"1.2.1","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.2.1","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"a3e50d444e6d702169b9a65e7837d96436baf0a9","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.2.1.tgz","fileCount":75,"integrity":"sha512-69pJxUQG3S9ZQO8Lw5CYZ1JN4x6yxXhwcBVyuzvVwQ+lwSdveDVzyb3Osz4iE9o3uXGuN0VOb6aE2l2Y/+sCfA==","signatures":[{"sig":"MEQCIGC4xMHNb0OkEcPJEzr0sGu6bpe7RHbf96TRJ8H3/GORAiAyIhxY96U9en0joK9iFft8V/rdlb3ofTSTcBLxp8z7rQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65583},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"gitHead":"d3a0ac80c148f659af5666187ac0941c7d3adfa5","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","publish":"npm publish --access public","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^5.1.5","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","@nestjs/platform-express":"^11.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.2.1_1742996196652_0.6016042577164304","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"cqrs-authentication-rbac","version":"1.3.1","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.3.1","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"6b1b5a4e3c38114a32710b88d2278d83b17d0c1d","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.3.1.tgz","fileCount":266,"integrity":"sha512-L777pLzgygUC3asBVOeXWt+qxa9FVqv+1+IxmB0fXgSR90QODIpF/OlNqcgpuL4Do7eyPY7V5meaaCBhqDHa3Q==","signatures":[{"sig":"MEYCIQC8xmz40+It4NdUZMxtE7rug03DhsVKDKzCs0klTv/98gIhAIYDsMJMm+mkYUITj9mA3gQ/v9/xb9TZv6pY6U4l+Q0j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":414391},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d3a0ac80c148f659af5666187ac0941c7d3adfa5","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^5.1.5","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","@nestjs/platform-express":"^11.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.3.1_1742996819405_0.6472490466092735","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"cqrs-authentication-rbac","version":"1.4.1","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.4.1","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"b55ce8b0c2e5b98d932c2a5bf9ed951fa99e8bfd","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.4.1.tgz","fileCount":204,"integrity":"sha512-yEw9ltJAQJG9djyeciK0o/2xHwyOSSpG8+PJuWd2xhWZ+X3aKbAeL170BlJx9a7CFDBX9r6aG+E2d9FfN3yknQ==","signatures":[{"sig":"MEQCIBtjc9fh9AcVaVOav7Q8Tkmj4rhDn1Opcr4l1KTly2QeAiAX8XwjAtw3/oPTjnrrO2sN7uq1qelxDftpUUjK+2IiFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415801},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2014834c0369ee74fdd0727a70f4558738ed76e7","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.6","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.4.1_1743004490919_0.740425080179653","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"cqrs-authentication-rbac","version":"1.4.2","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.4.2","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"72db50a99ed72b4473df1c4b60addb4f687e973e","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.4.2.tgz","fileCount":204,"integrity":"sha512-WSZAsrsEaIZnuQDAS2raIW7nCCNM3P2EDKPCmfPY1smL0+D7UsBaeVp6hFQzBY79QQ0qMu+feq8BnPI9XPL5og==","signatures":[{"sig":"MEYCIQDnVTuXlIcLDgGPBZB55B/aBq1hJi/yP8HI3nhLzFDmXgIhAMFv+mbZ8WhdozUc1/dPdUhwxQosK+GZMzQ6ZSCIfrwC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415748},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2014834c0369ee74fdd0727a70f4558738ed76e7","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.6","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.4.2_1743004774983_0.3602708049174277","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"cqrs-authentication-rbac","version":"1.5.2","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.2","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"52e0c76e34ed8a5b24b8e13b5036bb17fbfdd501","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.2.tgz","fileCount":195,"integrity":"sha512-novG1vJo/jFlyufoQJGsm5b5WMOdIOKs0dhPFvOYhurbTiD+ZK+q3qoZYrhBEDl51HFmxvNVy7EtkHq/q10K2w==","signatures":[{"sig":"MEUCIC2pz9/DKO6zd1+NAwqBszsknH5/ai+nlTtdC5TtXj7/AiEAm9KeySIYmZ292ELyGTcfgr/9YUeCM43tILY6nRoZUbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":409974},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2014834c0369ee74fdd0727a70f4558738ed76e7","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.6","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.2_1743004915583_0.8883605906298713","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"cqrs-authentication-rbac","version":"1.5.3","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.3","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"fbc19d324155a72f00846532fe907ecb83bd6ba3","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.3.tgz","fileCount":195,"integrity":"sha512-M0Q1O+D7k0dTNuLCFl0QoF8XZ609E0T0zD3d3Qkd1dswg4l1D58/ZdYc9YDD0raBdV0/idQD6ik4Ijw4DP3n7Q==","signatures":[{"sig":"MEUCIArJLL64YAJce/t0/eTOdwsdZxxpTV2eA0O6/n3Q5VE1AiEAgDWJZpvqy1w5mUG1622ppLSPS1eCos9bgwZuUjjRZiI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":410002},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2014834c0369ee74fdd0727a70f4558738ed76e7","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.6","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.3_1743005037626_0.4102962777203101","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"cqrs-authentication-rbac","version":"1.5.4","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.4","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"78571a1bb75d494aeaaf2ea3228cdc11d2d859b6","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.4.tgz","fileCount":195,"integrity":"sha512-ZwVesMXzQbb/2kBGWRbwCN7AsoGUVS8T76jvG/OYZUKB+QAPuPYjBvfqVPKvb2cGGj38i7MX2plDul1KcvEijA==","signatures":[{"sig":"MEQCICTFKThE65c7AB50yf9g6yEp0fRJJ0Kf4TwWlN7GHwyFAiATZf/RWFEXf9ZzYZBxDChkl6l9LpErYCf4e3ORoLr50g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":412841},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"42d64f0b59f0dfe73cefc45e0bb9e5ff7529ecc6","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.6","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.4_1743005235435_0.5851097132228362","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"cqrs-authentication-rbac","version":"1.5.5","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.5","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"bc732d297cb8da3b0fc5397d8287bfaf2fe976d7","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.5.tgz","fileCount":195,"integrity":"sha512-JGomBX6W3qhzT4RQrb1f+8GG9hAAGX3IUw+xyOOpmKKeTTWmvPLK8y9EKUli3hewoKdpwqnQ4V3nEpSwOMtrbw==","signatures":[{"sig":"MEUCIQCfl0B/dKHdpx6mNDQ+hHyn9VBnf20YFHXxcvAOHnHK+gIgINTaXic1PDOzrQ4O6F5bmc9vMUm34KyRAHrciVnTMAo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":412876},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8334ce02dea53836fbe7c8d90d24bbfb8c5f110b","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.6","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.5_1743007866693_0.6284076572995196","host":"s3://npm-registry-packages-npm-production"}},"1.5.6":{"name":"cqrs-authentication-rbac","version":"1.5.6","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.6","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"528c290f366e084ef6e20b954fcd9067a0933231","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.6.tgz","fileCount":195,"integrity":"sha512-1I+Q2uCJi8lOrm2NdKb/JKAx56BmlvdkkpqZuw1ptnl2qmzqh1eSS6smF5OdYnUfBVSPQ07bM/xMGSBBkvEv9g==","signatures":[{"sig":"MEUCIQDT+zsk0dcHsV3lr874rzXuQ8sWEnlXFnfLMljPx8FBGQIgVrH14H8tlpIA68c6ErxDmkS3Cn0pLZfojPXMocn1/wc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":412930},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8334ce02dea53836fbe7c8d90d24bbfb8c5f110b","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.6","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.6_1743007978136_0.16136200306834336","host":"s3://npm-registry-packages-npm-production"}},"1.5.7":{"name":"cqrs-authentication-rbac","version":"1.5.7","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.7","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"91b4d45692048cd56dd6ba1a55324fd3d933b3e6","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.7.tgz","fileCount":195,"integrity":"sha512-rI7O5U6d7PU1JHcwKoXw7TgaSP8+EtQ225O+1u+4fI6ECegMQPjubkuMx88R0ei6cvKc82/VwBYQ+j6+io7mJQ==","signatures":[{"sig":"MEQCIAbfntulpH00UXzHfuOTdDOfPmB+qXBY7TneNiRfE8UrAiBBZpY7Y+4g4nOAevbxf8H/29ayuzHg7gjrwRehHyj44A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":413190},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8334ce02dea53836fbe7c8d90d24bbfb8c5f110b","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.6","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.7_1743008487777_0.6004636919552304","host":"s3://npm-registry-packages-npm-production"}},"1.5.8":{"name":"cqrs-authentication-rbac","version":"1.5.8","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.8","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"e44a2235d9cc63773d6a166b65421ac57d70c12b","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.8.tgz","fileCount":196,"integrity":"sha512-nAukbwK0b1IzPN00ygoDgU+xXqo7hhkRNzqE6gb68s5+qYGOlao1Hj2YFKqO/uvAJ81WjHJ9psAysg0si27riQ==","signatures":[{"sig":"MEYCIQCH7BuP5Z5o5HLXO3o6GEbVjw+9wlbCoLsh4ag2yBkM8wIhAMupFcp2UXAUuovLFRAiWVuKZX+tfVMZoENFr6bEd0TO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":413081},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8334ce02dea53836fbe7c8d90d24bbfb8c5f110b","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.6","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.8_1743084795976_0.8367385112639465","host":"s3://npm-registry-packages-npm-production"}},"1.5.9":{"name":"cqrs-authentication-rbac","version":"1.5.9","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.9","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"aebb60b9cb38d9368337b9fc5cfeb7aa24181b05","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.9.tgz","fileCount":196,"integrity":"sha512-mdG31ivnyHvIktVZbp137z/8tIZu/iZd0NERHEi435jyfb4ZrS0SlP4f5YRKpl3+4K+SER/Vu14BjkpMwiklYg==","signatures":[{"sig":"MEYCIQDMHJRk1EEr3KCUUkl/Dsb1Dxd2kn0Y+8HYVYNyhcL0UgIhAPn6JZ9ueQVildcX8rLrK0xgDF/+h6J+qm/4yFlz2Zka","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":413131},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8334ce02dea53836fbe7c8d90d24bbfb8c5f110b","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.6","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.9_1743085490271_0.10846467630958889","host":"s3://npm-registry-packages-npm-production"}},"1.5.10":{"name":"cqrs-authentication-rbac","version":"1.5.10","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.10","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"ef57a3687ed77b9e80e1bf2f7e78f16c46528db2","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.10.tgz","fileCount":196,"integrity":"sha512-yR+SlLErRcw2v5saaAZw/3mLsZtR6zDXYLKhrbdxETMdOSqPpJvhPTN1fKcxscyGLZGY+Dfv/aNsIfmkgVlvcQ==","signatures":[{"sig":"MEUCIQCgD/sZkjFWxUO7GOow+9JoMt9gijE9VU6uuyPE3QMjhAIgKazPv76QMxG8D/HqzOOxCKnSgRNisxefurItKFlu07M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":413132},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8334ce02dea53836fbe7c8d90d24bbfb8c5f110b","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.10_1743085987959_0.6886263639101327","host":"s3://npm-registry-packages-npm-production"}},"1.5.11":{"name":"cqrs-authentication-rbac","version":"1.5.11","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.11","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"6b5b6bc0e913909760223586581b680cf5d2a7f3","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.11.tgz","fileCount":196,"integrity":"sha512-1Ho0IlZYc2jO/yy9BAfyb1FWTSnf27JDmliR14DUM7Zl2qNXALdnWWPUJOL6Olxu3I93CrkVFtolby3d166a/A==","signatures":[{"sig":"MEQCIDjiKHJWmqTVzS28sDwTJKZJGNw2i3lk2c33lCiU9d8SAiAp5sk5NkW3TT5tHh23z0pjxvieiRovjPkkzxFpGXJ2TQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":413689},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8334ce02dea53836fbe7c8d90d24bbfb8c5f110b","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.11_1743086698968_0.49649749954084643","host":"s3://npm-registry-packages-npm-production"}},"1.5.12":{"name":"cqrs-authentication-rbac","version":"1.5.12","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.12","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"bd9858ffc55dd351727ae808bdabc3ded0828358","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.12.tgz","fileCount":196,"integrity":"sha512-Cjg8FcY3CcaAN3XQ7n9RgGEg/Rnlg/3FWQYadpAwHtaJ46lPwSc1KhQfHSKozhaTMxYrn5I39OlssXrTPABqTg==","signatures":[{"sig":"MEQCIBBxz1Mv8Yx47nhodTsnNgAAu6uJ/xO3Pz+9ESPPFLwZAiBJftuXT16joULrq7nF1M33l+fk/twZeb10kFXVV1xaJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":413697},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8334ce02dea53836fbe7c8d90d24bbfb8c5f110b","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.12_1743086859131_0.1860531534359653","host":"s3://npm-registry-packages-npm-production"}},"1.5.13":{"name":"cqrs-authentication-rbac","version":"1.5.13","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.13","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"bcf5e923e35db086d55dd911bb8a7fddb05c1dda","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.13.tgz","fileCount":200,"integrity":"sha512-8NglWS81zMhJQvi0/QRkeqcEF7azH00jFXDliju0Kt8w1+q3OUSsNrwuZqXHlaldhhNGjSzn9f+5dB2wQH78Gw==","signatures":[{"sig":"MEQCIBaj5X4Ru7wJkZaeKUyUwJ/2tJQ42H2cpaPl1Ees0JhUAiBKpjWpFbB8GfFPlw5TAe7Sc4aXBrXFEgaS85hr/8HWxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":413473},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8334ce02dea53836fbe7c8d90d24bbfb8c5f110b","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.13_1743087655662_0.7827783114570508","host":"s3://npm-registry-packages-npm-production"}},"1.5.14":{"name":"cqrs-authentication-rbac","version":"1.5.14","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.14","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"0516e573b66494a9482a665632e36a5efed35f64","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.14.tgz","fileCount":208,"integrity":"sha512-m6tV4JwNeTasexByPmnC5jWKH9nm7c+4iLr1ffkbrYwFC6PBxg9JS6Nc7CAbo1O3PWkGlcJJ1EMwKD4xs9U36A==","signatures":[{"sig":"MEUCICewdwacvmM16N11wVwO915XkfwrM+mNvQNdsn4JU64SAiEAhTGkDGIKwtlENVxaTA0ZzS4q9o+1Kf48Ok14pL35cKA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421223},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"b00f02cf730160bdd44044149001b392e0f4d4c5","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.14_1743089754370_0.08028693623897509","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"cqrs-authentication-rbac","version":"2.0.0","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@2.0.0","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"5431117ed610d5477dc6dfd9dc7c3740f5a59789","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-2.0.0.tgz","fileCount":208,"integrity":"sha512-gT0Rsl3InQvkQibFf5dvUMRjctBxQCJ12m9ZV4WiyzSd/pJ2r5qpYA1yEJhlz1+ZAekEf6vqgbHuXB/le5o4yg==","signatures":[{"sig":"MEYCIQCtfLzKORVW41AW+EYmYux/H4CqFiXyJfTwFGcD1OIwXAIhAOeJMJYvvzttpiUpIvrZxQWSS9jyHzOAtoqIKLxtU9k1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424872},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"b00f02cf730160bdd44044149001b392e0f4d4c5","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_2.0.0_1743089889819_0.5012918668919135","host":"s3://npm-registry-packages-npm-production"}},"1.5.15":{"name":"cqrs-authentication-rbac","version":"1.5.15","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.15","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"bafe946dc67aa2ea2d27b72cf0b8d774fe80bbc2","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.15.tgz","fileCount":208,"integrity":"sha512-TtH8f2/vjTUD6489F8L6+m0mwFo4AH5IWdNoWZ1FFw30Th4YW+qJp8bDYhDRctjp7bHtiUUWGF0utj+GNZv2/A==","signatures":[{"sig":"MEUCIQCqM5fSQ1nz+Eb2aob0c1JrwxQg1FTbSFg5lEYllOEj/gIgYLgT7q+FspoO5YcRDuoMcysr+aFM+g2oJm11r//bQTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":352551},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e0136b45c5dd800a1f9fc60f18759740d50aed40","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.15_1743142105591_0.48290352673667325","host":"s3://npm-registry-packages-npm-production"}},"1.5.17":{"name":"cqrs-authentication-rbac","version":"1.5.17","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@1.5.17","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"66f1d56d339193def22b9321a6f00be2f2817bf8","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-1.5.17.tgz","fileCount":208,"integrity":"sha512-Ru/6o+Mn/FI/hacefuoBndW5ZFYN2TI06GZGXGgc4XID0agGuwr78l+4bW7y81jVMWVVg3KuENwi0kfmXSatnQ==","signatures":[{"sig":"MEYCIQDDkz4WT5qoYarv6x4pjAre4ic1cDw8wYVoXAUvzT5n1AIhAMrYcbtXLiaFPNr/25YIkO76RkPC9yQiLRnIA3ZZuJZs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":352628},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"1e6f5cc620d41e237a32ae2debbe88b94e51d186","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_1.5.17_1743142917683_0.03117544940221184","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"cqrs-authentication-rbac","version":"2.0.1","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@2.0.1","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"324fd244af6f739bd8ddf40254a62f648d46359c","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-2.0.1.tgz","fileCount":237,"integrity":"sha512-iPjxU1q+40er7aqX5ezSY/bENuhj+qbh+l0bJYlzcfeQ2C/8Et84NzD5/zqjMVHevAhzF4UPFCW0wktIl7FidA==","signatures":[{"sig":"MEQCIHn2t1YQfdjCfFtXgidkVqRm9FLjQxYz1Tb2rnVxic97AiBAf3okXqLOQSAMMwTffYxjSOrge6EnAzMHfctD1SlTRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":379457},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4004bea207ae330a260eb6eb176d0bee95d3fa53","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_2.0.1_1743166152623_0.44441023379512345","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"cqrs-authentication-rbac","version":"2.3.1","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@2.3.1","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"86482a9c42615173e350ba96cb8fd127baac3a2b","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-2.3.1.tgz","fileCount":453,"integrity":"sha512-4u5It6YaQzhKsEE/KjGArwaTmD4IMO1yKY/2iSQQQR/w6bLftNeVRXxqIlYmnNVxaQeeRfH9R0VKxnwMX1V1BQ==","signatures":[{"sig":"MEYCIQDuDnPGnAQRuGhq0f6RtFs9Q+XHLUh0W1hz8/L3Z+ff2wIhALMChFS+hfMyazhS7l/Ute+DlBmiUfUqi3Dhf0/Tj7e7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":566426},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d7157d689c15f9e3430e9d04081520979b0deb4f","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_2.3.1_1743184999761_0.4964325518522279","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"cqrs-authentication-rbac","version":"2.3.2","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@2.3.2","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"39ebff90af2359fd243ba134c96a8e95e6832b6b","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-2.3.2.tgz","fileCount":453,"integrity":"sha512-6FHaPEqWuI2vxbBp1KLC0GMrsb4HnusYOyb/+I9y/nSe0FUm2bfKXb6l+4MjrsMhMXoj0qoUMszOAUAkr2MEhg==","signatures":[{"sig":"MEYCIQDzSQwPm0jN1AAkZH9yIy1NaEleX9SRhtK1BZTHwB9a0gIhAP3kQhFprehaV8GCNyGGnEhi0IOc4u4jN5BF9ObRak1Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":567460},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c0d7063df40f42f4098c3c663dd6bb3e79e4d06f","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_2.3.2_1743185469759_0.41822796642900073","host":"s3://npm-registry-packages-npm-production"}},"2.3.3":{"name":"cqrs-authentication-rbac","version":"2.3.3","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@2.3.3","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"5a350e68f14479e14c29f566bdbe375329078658","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-2.3.3.tgz","fileCount":453,"integrity":"sha512-ahOeB9hnZAG7w+X+BQc9k9q9LOt13vqbLcN+SiAU3Na3GDEDpPmsfl/hiFBF3umk87rQklK6JXqSxLXdP7OjDw==","signatures":[{"sig":"MEQCIFiLuEeRFvyhvvRxav8vPsBMERU7iSCr+zDKEFdfxM3zAiB5cggdmXq8jMcWMOvXoZUKThrX+zLC/jPSnrNuTAu0uA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":567541},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"f2304966f302b946dde3587a56f1d5f369752894","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_2.3.3_1743185733546_0.8070758714218786","host":"s3://npm-registry-packages-npm-production"}},"2.4.3":{"name":"cqrs-authentication-rbac","version":"2.4.3","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@2.4.3","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"60746f3844f63f262409b68e96b57a4c0ba44d64","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-2.4.3.tgz","fileCount":321,"integrity":"sha512-+cXv9PtByNoyxVzrX4CCYKmTqfYVlzPtD2rv6WUH9J0qbXOFWCPjFKPPqmeprXDjnwAjyKuxyo6kNC7CiCMhBA==","signatures":[{"sig":"MEQCIDKxzjshEO/5PhI+XbudvJ3z4gFNASyDYnWx897WkUUmAiBlSFLywj6SpJbDid4URf37wl+zpF454lRC1GjC1I0Nrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":450209},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"b7b68a36f9ad868e96150428e759d028bdbd2f72","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_2.4.3_1743308395546_0.22906372208022763","host":"s3://npm-registry-packages-npm-production"}},"2.4.4":{"name":"cqrs-authentication-rbac","version":"2.4.4","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@2.4.4","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"cf28f0dec0f055373ca4b4f22b490f603b55595a","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-2.4.4.tgz","fileCount":324,"integrity":"sha512-U6J9P49F9QdsBzpFozEyvN0yHWMS3LcvzooBzZadvlWjhk4GnOiw/qPdYXwtwsNWe+RYD5cfy/PL7OaJS9S+Xg==","signatures":[{"sig":"MEYCIQDGtlYw/QO2zpg4FK0NgP2P8WMGbPBVOAFzmlLxTR0djgIhAPwxYwtpQ3He3q7h+IrpOiP3ZhFf31wmgma0OJN8n47Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":450755},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"233d470999fd28f6efdaf40fa5c6be82907e9500","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_2.4.4_1743309391665_0.06596141022197166","host":"s3://npm-registry-packages-npm-production"}},"2.8.4":{"name":"cqrs-authentication-rbac","version":"2.8.4","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@2.8.4","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"d5c3fa858c0dac564c7448f67903bbbe75de5a9d","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-2.8.4.tgz","fileCount":386,"integrity":"sha512-vwbnVObKoKnpkqUD+a8MvaW9wO0s8XSFZZWWNQgpdlyjzs4FOhEMa1zpXuEdn+xy+XR3p5oxWEL+vtKxzA8g3Q==","signatures":[{"sig":"MEUCIHLJ720ZFdxT+F6NhiotjCeP8kxRBnz7pGNNe5nels3gAiEA6SS2oomTjWrrqsuFxao8ZUqMoZtCRNmTC4vvWS1v5eE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":594979},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"274e4f9ff25c8c6cadb6752e547d5b9f229c120f","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"NODE_ENV=dev jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_2.8.4_1743331274333_0.035597080951824234","host":"s3://npm-registry-packages-npm-production"}},"2.8.5":{"name":"cqrs-authentication-rbac","version":"2.8.5","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@2.8.5","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"38d44e3f80fa8917f3ccc9d38c3270099a0d00e2","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-2.8.5.tgz","fileCount":386,"integrity":"sha512-ODYgeXGWMkSmwzTgrxxhA+9ZPN1DEGwUjPpqAraaQu8Me/BDog7jHbCPDRJL516QeZeF5D8QRPYtMwG6FCjEtA==","signatures":[{"sig":"MEUCIAfBiqdcxkbmqMPdebToNNVPtQJ6RHTeKtay4t0NO5GHAiEAp/pc0bm6dKHVdp5cTCnLFbF77BVCoU8S/+27PGrk0MU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":594908},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"3aca94eb1d0111c1920cb1aff85a4dc31a210514","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"NODE_ENV=dev jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_2.8.5_1743333141494_0.46627298082969126","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"cqrs-authentication-rbac","version":"3.0.0","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@3.0.0","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"55259e5bb2d4878c00bc9d74af35c6e40c024c6c","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-3.0.0.tgz","fileCount":386,"integrity":"sha512-bPQctzJashejIZze+k3uxMAYfaaEz6h2txMkNJE/K15Eax1uWxSp1/U7gUh4pMN8tXk1qW4E99z780qjfiLmeg==","signatures":[{"sig":"MEUCIDWQUxCVziJFqKwAXaaiKqa2PBV0PIsaHGJvTDXYWO8uAiEAjzYmPZUONlbEH8hglcHhxVcMKRh1to5saGnIq8dH0eg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":595650},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"9713ca33b75bfbe4875d38610731fa1ed7d0f1f9","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"NODE_ENV=dev jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_3.0.0_1743340998660_0.7620528900024808","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"cqrs-authentication-rbac","version":"3.0.1","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@3.0.1","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"459085ad7eb2e72d2cbd3c90c725e36a76b92be6","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-3.0.1.tgz","fileCount":527,"integrity":"sha512-TCYQ68uACqtEqKob2N3STKp9jp2rG6cAAX22jmoQFdnNbZTVMLe0XLOYDmHNwLQ/CWT3MGivRylv0GwsjwKbhg==","signatures":[{"sig":"MEYCIQD9vF5THosfFIDWcN8SKmnA2QME2VpKEVb7mDE1gcZQnAIhAI3Fq0YIHQNNfww6SkFquCeanuoh8FUpRuKAV2cdcG2B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":734892},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2a56bfbf1e074d7116bb47474150af9f3a09aa54","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"NODE_ENV=dev jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_3.0.1_1743341367848_0.9603531727404695","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"cqrs-authentication-rbac","version":"3.1.1","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@3.1.1","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"50321c358ec9098ca8a0cf1c034123b7d114e29f","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-3.1.1.tgz","fileCount":544,"integrity":"sha512-5UW37kCA1QhLACXx0bbK5X3xPM4Ei5E5dqocKcJwDyx/e6CqXb9dWvIE+1/qWvtbJiZGnGIXgg3Ws3r6+Pp4sw==","signatures":[{"sig":"MEYCIQCUeI2nUoJB4SnRg3PnvuRLS/6kJ11nUSXklTkujXBpiQIhAPnaDpimnIBbPv4fRFBQ8moTKmW0lw0rQQcWIHEn6w/f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":766128},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"51d12d3a3b7097e86862cdd630c37ae39a2b33c1","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"NODE_ENV=dev jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","google-auth-library":"^9.15.1","postgrest-migration":"^1.1.8","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_3.1.1_1743429742617_0.08672735439191293","host":"s3://npm-registry-packages-npm-production"}},"3.2.1":{"name":"cqrs-authentication-rbac","version":"3.2.1","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@3.2.1","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"6b5d445809dbacc09bf8d74abd1e487d7a2f7ebc","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-3.2.1.tgz","fileCount":600,"integrity":"sha512-MH9ZBgTXZdKASJVpzfyF7UMkYPJIYPe51dzBT6KuyntXQMxLmcDxncgnOf+rLoJdnLXQneB7airWV6PeEf+YTA==","signatures":[{"sig":"MEUCIBCLIdq5aP3jDP8q0MGJXJaMJRHPx4ifcWI9JJcqOROpAiEAzwcAgKsQjBviim5YpaP/o4mcmHWthvKoivu7YhciNwg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":818259},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"50503ac323bec2f7950eb69e66d69279798b742f","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"NODE_ENV=dev jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","cache-manager":"^6.4.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","google-auth-library":"^9.15.1","postgrest-migration":"^1.1.8","@nestjs/cache-manager":"^3.0.1","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_3.2.1_1743437348652_0.9986408264660602","host":"s3://npm-registry-packages-npm-production"}},"3.2.2":{"name":"cqrs-authentication-rbac","version":"3.2.2","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@3.2.2","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"da34ced43688b3bddfa367a09648efa0a73c21a0","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-3.2.2.tgz","fileCount":600,"integrity":"sha512-2difCnUPX/z7IDxeqN84so/vem/0waUhp86jweuliPbNftZVNYHpniBzssd/ZoU6O1KPhznK2pEHbRehn8uFjw==","signatures":[{"sig":"MEUCIQDCZaWKovpa6e3lOIrIvkQ2M8kcPuB5NdIvUn9//I2RmQIgaJIunZ9+ehqEk5W5YK1G0cvEzIznRjV0vQ6MA0EjwaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":819498},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2878d802d6cb2707ac3e7b8039aecd83e40eed4e","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"NODE_ENV=dev jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","cache-manager":"^6.4.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","google-auth-library":"^9.15.1","postgrest-migration":"^1.1.8","@nestjs/cache-manager":"^3.0.1","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_3.2.2_1743438511670_0.024470299521559324","host":"s3://npm-registry-packages-npm-production"}},"3.2.3":{"name":"cqrs-authentication-rbac","version":"3.2.3","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@3.2.3","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"eab287c559bbebb12c26977f1dcc4ffbaefe3528","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-3.2.3.tgz","fileCount":600,"integrity":"sha512-RlvtNJaDT86jz47OqQxv0X7rKj6XGbVQNlheDuxNsjB/MnHRbGvB3EdQGTC8R9zxFBKzS+gdUneHw0+gcJPTHA==","signatures":[{"sig":"MEQCICPZPH2vmDY/PclwdJBAq/feUssVnATV5PmLZcQOw7UNAiA1KoB2qr3A3CSPzRSvZOhyo4iu5r3fxH4dKahQrydS2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":825258},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"a5eee8eba8d7091268317973bedd8ae270290467","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"NODE_ENV=dev jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","cache-manager":"^6.4.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","google-auth-library":"^9.15.1","postgrest-migration":"^1.1.8","@nestjs/cache-manager":"^3.0.1","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_3.2.3_1743513736418_0.19041186338842975","host":"s3://npm-registry-packages-npm-production"}},"3.3.3":{"name":"cqrs-authentication-rbac","version":"3.3.3","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@3.3.3","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"c26f5b55023f2a3bbfba41d9acfa46191deb0b55","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-3.3.3.tgz","fileCount":638,"integrity":"sha512-JP2dH/+gR7P7yyZdm3YV4uIRyEOqdPDsGL5+dij5sJ5nSh3pKfWbt0RwOsyZV0LEzqVNd9phMJgGgvBM4XtVMw==","signatures":[{"sig":"MEUCIClb3orSprvNCle1awq2fwDGaoSac4AxMnToTl3rdT2WAiEA1WYrH+Ki2rlsyII+QOD1ly6zzp6wa0h55fZxit5bSS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":857451},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ebcb32f03ca9726e46598dea5f51b828f43132bc","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"NODE_ENV=dev jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","cache-manager":"^6.4.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","google-auth-library":"^9.15.1","postgrest-migration":"^1.1.8","@nestjs/cache-manager":"^3.0.1","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_3.3.3_1743521206274_0.35992131795540216","host":"s3://npm-registry-packages-npm-production"}},"3.3.4":{"name":"cqrs-authentication-rbac","version":"3.3.4","author":{"name":"khaphannpm"},"license":"UNLICENSED","_id":"cqrs-authentication-rbac@3.3.4","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"dist":{"shasum":"75ceea7b8d91b40711d968209f626b26fdb6c965","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-3.3.4.tgz","fileCount":638,"integrity":"sha512-lpz/rgub/Mv4tpQ/6dsK32kF2qRQe1J4UGUx+v96Wk+zieXnmy+4bW8jm/YW8D9JHwB0v/un6kNO6yJfw6njQQ==","signatures":[{"sig":"MEUCIQDqBh1G/iqv9PlrXhjWcExhR+uwtfM0d4aHu1e+I4wrrQIgBu25/2mRipGPUpAI+ugS7RldraeSek3Hr+h29jrfHA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":867300},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5581078b60dfb7977f2db40dde659bad80a3fbd7","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"NODE_ENV=dev jest","build":"nest build","start":"nest start --watch","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","migrate":"nest start --entryFile \"pg-migrate.repl\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles","start:dev":"nest start --watch","start:prod":"node dist/main","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"_npmVersion":"10.9.2","description":"authentication service base on cqrs and rbac authorization","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","joi":"^17.13.3","rxjs":"^7.8.1","argon2":"^0.41.1","bcrypt":"^5.1.1","lodash":"^4.17.21","nanoid":"^3.3.11","bcryptjs":"^3.0.2","passport":"^0.7.0","pg-format":"^1.0.4","@nestjs/jwt":"^11.0.0","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","passport-jwt":"^4.0.1","cache-manager":"^6.4.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","passport-local":"^1.0.0","@nestjs/swagger":"^11.0.7","class-validator":"^0.14.1","@nestjs/passport":"^11.0.5","reflect-metadata":"^0.2.2","class-transformer":"^0.5.1","google-auth-library":"^9.15.1","postgrest-migration":"^1.1.8","@nestjs/cache-manager":"^3.0.1","@nestjs/platform-express":"^11.0.1","nest-postgresql-multi-connect":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","@types/pg":"^8.11.11","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/bcrypt":"^5.0.2","@types/lodash":"^4.17.16","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/cqrs-authentication-rbac_3.3.4_1743521523929_0.549311550815551","host":"s3://npm-registry-packages-npm-production"}},"3.3.6":{"name":"cqrs-authentication-rbac","version":"3.3.6","description":"authentication service base on cqrs and rbac authorization","author":{"name":"khaphannpm"},"private":false,"license":"UNLICENSED","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"nest build","migrate":"nest start --entryFile \"pg-migrate.repl\"","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start --watch","start:dev":"nest start --watch","start:debug":"nest start --debug --watch","start:prod":"node dist/main","lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"NODE_ENV=dev jest","test:watch":"jest --watch","test:cov":"jest --coverage","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:e2e":"jest --config ./test/jest-e2e.json --detectOpenHandles"},"dependencies":{"@nestjs/cache-manager":"^3.0.1","@nestjs/common":"^11.0.1","@nestjs/config":"^4.0.1","@nestjs/core":"^11.0.1","@nestjs/cqrs":"^11.0.3","@nestjs/jwt":"^11.0.0","@nestjs/passport":"^11.0.5","@nestjs/platform-express":"^11.0.1","@nestjs/swagger":"^11.0.7","argon2":"^0.41.1","bcrypt":"^5.1.1","bcryptjs":"^3.0.2","cache-manager":"^6.4.1","class-transformer":"^0.5.1","class-validator":"^0.14.1","google-auth-library":"^9.15.1","joi":"^17.13.3","lodash":"^4.17.21","nanoid":"^3.3.11","nest-postgresql-multi-connect":"1.0.0","passport":"^0.7.0","passport-jwt":"^4.0.1","passport-local":"^1.0.0","pg":"^8.14.1","pg-format":"^1.0.4","postgrest-migration":"^1.1.8","reflect-metadata":"^0.2.2","rxjs":"^7.8.1"},"devDependencies":{"@eslint/eslintrc":"^3.2.0","@eslint/js":"^9.18.0","@nestjs/cli":"^11.0.0","@nestjs/schematics":"^11.0.0","@nestjs/testing":"^11.0.1","@swc/cli":"^0.6.0","@swc/core":"^1.10.7","@types/bcrypt":"^5.0.2","@types/express":"^5.0.0","@types/jest":"^29.5.14","@types/lodash":"^4.17.16","@types/node":"^22.10.7","@types/pg":"^8.11.11","@types/pg-format":"^1.0.5","@types/supertest":"^6.0.2","eslint":"^9.18.0","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2","globals":"^16.0.0","jest":"^29.7.0","prettier":"^3.4.2","source-map-support":"^0.5.21","supertest":"^7.0.0","ts-jest":"^29.3.0","ts-loader":"^9.5.2","ts-node":"^10.9.2","tsconfig-paths":"^4.2.0","typescript":"^5.7.3","typescript-eslint":"^8.20.0"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"collectCoverageFrom":["**/*.(t|j)s"],"coverageDirectory":"../coverage","testEnvironment":"node"},"_id":"cqrs-authentication-rbac@3.3.6","gitHead":"aeb3ecb85b12c838683956b0ec872864d9b7b220","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-vFOMCEKQUs843VyzqqMmG9RZveoTe7p0ocgoHBVAEMC08FvZFi9loTBJHxy8kO5WXUiH6qAejXDZEPz6lwWtUw==","shasum":"63cbaddcce6f53b74a510bea916524bb2fe0b8e8","tarball":"https://registry.npmjs.org/cqrs-authentication-rbac/-/cqrs-authentication-rbac-3.3.6.tgz","fileCount":638,"unpackedSize":869037,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC7rpUaI51aHfoy54GmXsYppQjND7xtqN7gyh+PqH6AVgIhAIFde6lMElg8tjx/jfDX1Vda0zW/dLFfmBFsQchM/Wmb"}]},"_npmUser":{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"},"directories":{},"maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cqrs-authentication-rbac_3.3.6_1743521952872_0.9777097375535637"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-26T13:25:14.592Z","modified":"2025-04-01T15:39:13.250Z","1.0.0":"2025-03-26T13:25:14.824Z","1.0.1":"2025-03-26T13:33:51.284Z","1.1.1":"2025-03-26T13:35:37.771Z","1.2.1":"2025-03-26T13:36:36.920Z","1.3.1":"2025-03-26T13:46:59.623Z","1.4.1":"2025-03-26T15:54:51.199Z","1.4.2":"2025-03-26T15:59:35.185Z","1.5.2":"2025-03-26T16:01:55.934Z","1.5.3":"2025-03-26T16:03:57.858Z","1.5.4":"2025-03-26T16:07:15.585Z","1.5.5":"2025-03-26T16:51:06.882Z","1.5.6":"2025-03-26T16:52:58.353Z","1.5.7":"2025-03-26T17:01:28.031Z","1.5.8":"2025-03-27T14:13:16.199Z","1.5.9":"2025-03-27T14:24:50.551Z","1.5.10":"2025-03-27T14:33:08.180Z","1.5.11":"2025-03-27T14:44:59.312Z","1.5.12":"2025-03-27T14:47:39.309Z","1.5.13":"2025-03-27T15:00:55.935Z","1.5.14":"2025-03-27T15:35:54.600Z","2.0.0":"2025-03-27T15:38:10.021Z","1.5.15":"2025-03-28T06:08:25.875Z","1.5.17":"2025-03-28T06:21:57.889Z","2.0.1":"2025-03-28T12:49:12.933Z","2.3.1":"2025-03-28T18:03:19.981Z","2.3.2":"2025-03-28T18:11:10.076Z","2.3.3":"2025-03-28T18:15:33.773Z","2.4.3":"2025-03-30T04:19:55.778Z","2.4.4":"2025-03-30T04:36:31.903Z","2.8.4":"2025-03-30T10:41:14.567Z","2.8.5":"2025-03-30T11:12:21.742Z","3.0.0":"2025-03-30T13:23:18.932Z","3.0.1":"2025-03-30T13:29:28.109Z","3.1.1":"2025-03-31T14:02:22.880Z","3.2.1":"2025-03-31T16:09:08.931Z","3.2.2":"2025-03-31T16:28:31.914Z","3.2.3":"2025-04-01T13:22:16.688Z","3.3.3":"2025-04-01T15:26:46.543Z","3.3.4":"2025-04-01T15:32:04.173Z","3.3.6":"2025-04-01T15:39:13.110Z"},"author":{"name":"khaphannpm"},"license":"UNLICENSED","description":"authentication service base on cqrs and rbac authorization","maintainers":[{"name":"khaphannpm","email":"phanhoangkha02@gmail.com"}],"readme":"# CQRS Authentication RBAC Module for NestJS\n\nThis module provides Role-Based Access Control (RBAC) authentication using CQRS in a NestJS application. It integrates with PostgreSQL and uses JWT for authentication.\n\n## Features\n\n### Authentication Features\n\n- ✅ **User Registration** – Allow users to sign up with email/password authentication\n- ✅ **User Login** – Authenticate users with JWT-based authentication\n- ✅ **Token Management** – Use access & refresh tokens with configurable expiration\n- ✅ **Password Reset & Recovery** – Enable users to recover their accounts\n- ✅ **Session Management** – Handle multiple active sessions & logout\n- ✅ **User Status Management** - Track and manage user account status (active, inactive, suspended)\n\n### Role-Based Access Control (RBAC) Features\n\n- ✅ **Role Management** – Create, update, and delete roles (e.g., Admin, User, Editor)\n- ✅ **Permission Management** – Assign permissions to roles (e.g., read, write, delete)\n- ✅ **User-Role Assignment** – Map users to one or multiple roles\n- ✅ **Fine-Grained Access Control** – Restrict access based on permissions\n- ✅ **Middleware/Guards** – Enforce role-based access in API endpoints\n- ✅ **Endpoint-Based Authorization** - Control access to specific API endpoints\n\n### Security & Compliance\n\n- ✅ **Secure Password Hashing** – Use bcrypt for password hashing\n- ✅ **Rate Limiting & Brute Force Protection** – Prevent login abuse\n- ✅ **Audit Logging** – Track authentication & authorization actions\n- ✅ **RBAC Configuration Storage** – Store roles/permissions in PostgreSQL\n- ✅ **Granular Access Policies** – Allow resource-level access control\n- ✅ **Error Handling & Logging** - Comprehensive error handling and logging system\n\n## Installation\n\nEnsure you have NestJS installed in your project. Then, install the required dependencies:\n\n```sh\nnpm i cqrs-authentication-rbac\n```\n\n## Usage\n\n### Register the Module\n\nImport and configure the module in your NestJS application:\n\n```typescript\nimport { Module } from '@nestjs/common';\nimport { CQRSAuthenticationRBAC } from 'cqrs-authentication-rbac';\n\n@Module({\n  imports: [\n    CQRSAuthenticationRBAC.register({\n      dbConf: {\n        host: process.env.PG_MAIN_DB_HOST || 'localhost',\n        port: parseInt(process.env.PG_MAIN_DB_PORT || '5432', 10),\n        user: process.env.PG_MAIN_DB_USER || 'postgres',\n        password: process.env.PG_MAIN_DB_PASSWORD || 'postgres',\n        database: process.env.PG_MAIN_DB_DATABASE || 'postgres',\n      },\n      jwtOptions: {\n        secret: process.env.JWT_SECRET || 'defaultSecret',\n        signOptions: { expiresIn: '60s' },\n      },\n      rbacConf: {\n        authSecretKey: process.env.AUTH_SECRET_KEY || 'defaultAuthSecretKey',\n        authSalt: process.env.AUTH_SALT || 'defaultAuthSalt',\n        authJwtSecret: process.env.AUTH_JWT_SECRET || 'defaultAuthJwtSecret',\n        authAccessTokenSecretKey:\n          process.env.AUTH_ACCESS_TOKEN_SECRET_KEY ||\n          'defaultAccessTokenSecretKey',\n        authRefreshTokenSecretKey:\n          process.env.AUTH_REFRESH_TOKEN_SECRET_KEY ||\n          'defaultRefreshTokenSecretKey',\n        authAccessTokenExpiresIn:\n          process.env.AUTH_ACCESS_TOKEN_EXPIRES_IN || '3600s',\n        authRefreshTokenExpiresIn:\n          process.env.AUTH_REFRESH_TOKEN_EXPIRES_IN || '86400s',\n        authTokenType: process.env.AUTH_TOKEN_TYPE ?? 'Bearer',\n        defaultUserStatus: 'ACTIVE',\n      },\n      migrations: {\n        enable: true,\n        migrationTableName: '_migration_authentication',\n      },\n      constroller: {\n        enable: true,\n      },\n    }),\n  ],\n})\nexport class AppModule {}\n\nexport interface IRBACConf {\n  authSecretKey: string;\n  authSalt: string;\n  authJwtSecret: string;\n  authAccessTokenSecretKey: string;\n  authRefreshTokenSecretKey: string;\n  authAccessTokenExpiresIn: string;\n  authRefreshTokenExpiresIn: string;\n  authTokenType: string;\n  defaultUserStatus: UserStatus;\n\n  // Config google authentication\n  authGoogleClientId?: string;\n  authGoogleClientSecret?: string;\n\n  // Multi-Factor Authentication (MFA)\n  mfa?: {\n    enable?: boolean;\n    template?: string;\n    method?: MfaMethod;\n    otpLength?: number;\n    notifyProxy?: INotifyProxy;\n  };\n}\n\nexport interface AuthRBACConfig {\n  dbConf: PoolConfig;\n  jwtOptions: JwtModuleOptions;\n  rbacConf: IRBACConf;\n  migrations?: {\n    enable?: boolean;\n    migrationTableName?: string;\n  };\n  constroller?: {\n    enable?: boolean;\n  };\n}\n@Module({})\nexport class CQRSAuthenticationRBAC implements OnModuleInit {\n  private static config: AuthRBACConfig;\n\n  static register(conf: AuthRBACConfig): DynamicModule {\n    this.config = conf;\n    return {\n      module: CQRSAuthenticationRBAC,\n      imports: [\n        CacheModule.register(),\n        ConfigModule.forRoot({\n          load: [\n            () => ({\n              authRBACConfig: conf,\n              GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID,\n            }),\n          ],\n        }),\n        CqrsModule,\n        PostgresModule.forRootAsync({\n          useFactory: () => [\n            {\n              name: CONNECTION_STRING_DEFAULT,\n              ...conf.dbConf,\n            },\n          ],\n        }),\n        PostgresModule.forFeature(CONNECTION_STRING_DEFAULT),\n        JwtModule.register(conf.jwtOptions),\n      ],\n      providers: [\n        ...Handlers,\n        ...Repositories,\n        {\n          provide: APP_INTERCEPTOR,\n          useClass: ErrorInterceptor,\n        },\n        {\n          provide: APP_INTERCEPTOR,\n          useClass: LoggingInterceptor,\n        },\n        {\n          provide: APP_PIPE,\n          useClass: ValidationPipe,\n        },\n        AuthConf,\n      ],\n      exports: [...Handlers, ...Repositories, AuthConf],\n      controllers: conf.constroller?.enable ? Controllers : [],\n    };\n  }\n\n  async onModuleInit() {\n    // TODO: How exec right migration file directory\n    if (CQRSAuthenticationRBAC.config.migrations?.enable) {\n      const migrateExecution = new PgMigration(\n        CQRSAuthenticationRBAC.config.dbConf,\n        {\n          modulePrefix: __dirname + '/infrastructure/migrations/',\n          migrationTableName:\n            CQRSAuthenticationRBAC.config.migrations?.migrationTableName ??\n            '_mig_auth_rbac',\n        },\n      );\n      await migrateExecution.executeMigrations();\n    }\n  }\n}\n```\n\n# Available Bussiness logic\n\n- Let's me write doc after finish verion 4.0.0\n\n```typescript\n@Controller('auth')\nexport class AuthController implements ICustomController {\n  @Inject() private readonly commandBus: CommandBus;\n  @Inject() private readonly queryBus: QueryBus;\n\n  @Post('login')\n  @HttpCode(200)\n  login(@Body() loginDto: LoginDTO) {\n    return this.queryBus.execute(\n      new LoginQuery(loginDto.username, loginDto.password),\n    );\n  }\n\n  @Post('google-login')\n  @HttpCode(200)\n  async googleLogin(@Body() dto: GoogleLoginDTO) {\n    return this.commandBus.execute(new GoogleLoginCommand(dto.token));\n  }\n\n  @Post('register')\n  register(@Body() dto: CreateUserDTO) {\n    return this.commandBus.execute(\n      new CreateUserCommand(\n        dto.username,\n        dto.password,\n        dto.mfa,\n        UserType.PASSWORD,\n        dto.metadata,\n      ),\n    );\n  }\n\n  @UseGuards(AccessTokenGuard)\n  @ApiBearerAuth('access-token')\n  @UsePipes(new ValidationPipe({ whitelist: true, transform: true }))\n  @Post('refresh-token')\n  @HttpCode(201)\n  refreshToken(@Body() dto: RefreshTokenDTO) {\n    return this.commandBus.execute(new RefreshTokenCommand(dto.refreshToken));\n  }\n\n  @Get('me')\n  @UseGuards(AccessTokenGuard)\n  @ApiBearerAuth('access-token')\n  @UsePipes(new ValidationPipe({ whitelist: true, transform: true }))\n  me(@Headers('authorization') authorization: string) {\n    const accessToken = extractTokenFromHeader(authorization);\n    return this.queryBus.execute(new MeQuery(accessToken));\n  }\n\n  // use when register\n  @Post('verify-register-mfa-session')\n  @HttpCode(200)\n  async verifyMfaSession(@Body() dto: VerifyMfaSessionDTO) {\n    return this.commandBus.execute(\n      new VerifyMfaSessionCommand(dto.sessionId, dto.otp),\n    );\n  }\n\n  @Post('verify-login-mfa-session')\n  @HttpCode(200)\n  async verifyLoginMfaSession(@Body() dto: VerifyLoginMfaSessionDTO) {\n    return this.commandBus.execute(\n      new VerifyLoginMfaSessionCommand(dto.sessionId, dto.otp),\n    );\n  }\n}\n\n@Controller('actions')\n@UseGuards(AccessTokenGuard)\n@ApiBearerAuth('access-token')\n@UsePipes(new ValidationPipe({ whitelist: true, transform: true }))\nexport class ActionController {\n  @Inject() private readonly commandBus: CommandBus;\n\n  @Post()\n  @HttpCode(201)\n  async create(@Body() dto: CreateActionDTO[]) {\n    return this.commandBus.execute(new CreateActionsCommand(dto));\n  }\n\n  @Put()\n  @HttpCode(200)\n  async update(@Body() dto: UpdateActionDTO[]) {\n    return this.commandBus.execute(new UpdateActionsCommand(dto));\n  }\n\n  @Delete()\n  @HttpCode(204)\n  async delete(@Body() dto: DeleteActionDTO) {\n    await this.commandBus.execute(new DeleteActionsCommand(dto.ids));\n  }\n}\n\n@Controller('endpoints')\n@UseGuards(AccessTokenGuard)\n@ApiBearerAuth('access-token')\n@UsePipes(new ValidationPipe({ whitelist: true, transform: true }))\nexport class EndpointController {\n  @Inject() private readonly commandBus: CommandBus;\n  @Inject() private readonly queryBus: QueryBus;\n\n  @Post()\n  @HttpCode(201)\n  @ApiOperation({ summary: 'Create new endpoints' })\n  @ApiResponse({\n    status: 201,\n    description: 'The endpoints have been successfully created.',\n    schema: {\n      example: [\n        {\n          path: '/api/example',\n          method: 'GET',\n          metadata: { key: 'value' },\n          status: 'ACTIVE',\n        },\n      ],\n    },\n  })\n  async create(@Body() dto: CreateEndpointDTO[]) {\n    return this.commandBus.execute(new CreateEndpointsCommand(dto));\n  }\n\n  @Put()\n  @HttpCode(200)\n  async update(@Body() dto: UpdateEndpointDTO[]) {\n    return this.commandBus.execute(new UpdateEndpointsCommand(dto));\n  }\n\n  @Delete()\n  @HttpCode(204)\n  async delete(@Body() dto: DeleteEndpointDTO) {\n    await this.commandBus.execute(new DeleteEndpointsCommand(dto.ids));\n  }\n}\n\n@ApiTags('Roles')\n@Controller('roles')\n@UseGuards(AccessTokenGuard)\n@ApiBearerAuth('access-token')\n@UsePipes(new ValidationPipe({ whitelist: true, transform: true }))\nexport class RoleController {\n  @Inject() private readonly commandBus: CommandBus;\n  @Inject() private readonly queryBus: QueryBus;\n\n  @Post()\n  @HttpCode(201)\n  async create(@Body() dto: CreateRoleDto) {\n    return this.commandBus.execute(\n      new CreateRoleCommand(\n        dto.name,\n        dto.description,\n        dto.status,\n        dto.metadata,\n      ),\n    );\n  }\n\n  @Post('assign-user')\n  @HttpCode(200)\n  async assignRoleToUser(@Body() dto: AssignRoleToUserDto) {\n    return this.commandBus.execute(\n      new AssignRoleToUserCommand(dto.roleIds, dto.userIds),\n    );\n  }\n\n  @Post('assign-actions')\n  @ApiOperation({ summary: 'Assign actions to roles' })\n  @ApiBody({ type: AssignActionsToRoleDto })\n  async assignActionsToRole(\n    @Body() dto: AssignActionsToRoleDto,\n  ): Promise<void> {\n    const { actionIds, roleIds } = dto;\n    await this.commandBus.execute(\n      new AssignActionToRoleCommand(actionIds, roleIds),\n    );\n  }\n\n  @Post('assign-endpoints')\n  @ApiOperation({ summary: 'Assign endpoints to roles' })\n  @ApiBody({ type: AssignEndpointsToRoleDto })\n  async assignEndpointsToRole(\n    @Body() dto: AssignEndpointsToRoleDto,\n  ): Promise<void> {\n    const { endpointIds, roleIds } = dto;\n    await this.commandBus.execute(\n      new AssignEndpointToRoleCommand(endpointIds, roleIds),\n    );\n  }\n}\n\n@Injectable()\nexport class AccessTokenGuard implements CanActivate {\n  @Inject() authenticationConfig: AuthConf;\n\n  private readonly logger = new Logger(AccessTokenGuard.name);\n  constructor(\n    private readonly jwtService: JwtService,\n    private readonly queryBus: QueryBus,\n  ) {}\n\n  async canActivate(context: ExecutionContext): Promise<boolean> {\n    if (isTestMode()) {\n      this.logger.debug('Test mode, skipping access token validation');\n      return true;\n    }\n    const request: Request = context.switchToHttp().getRequest();\n    const currentPath = request.path;\n    const currentMethod = request.method;\n    /// Is public route\n    const isPublicRoutes = await this.queryBus.execute(\n      new IsPublicRoutesQuery(currentPath, currentMethod),\n    );\n    if (isPublicRoutes) {\n      return true;\n    }\n\n    // Check if the request has an authorization header\n    const token = extractTokenFromHeader(\n      request.headers.authorization,\n      this.authenticationConfig.getRbacConf().authTokenType,\n    );\n    if (!token) {\n      throw new UnauthorizedException('Access token is missing');\n    }\n\n    // Decode the token\n    let decoded = {\n      uid: '',\n      roles: [],\n    };\n    try {\n      // Verify JWT token manually\n      decoded = this.jwtService.verify(token, {\n        secret:\n          this.authenticationConfig.getRbacConf().authAccessTokenSecretKey,\n      });\n      request['user'] = decoded;\n    } catch (e) {\n      throw new UnauthorizedException('Invalid or expired token');\n    }\n\n    // Can exec route\n    const canAccess = await this.queryBus.execute(\n      new CanExecRouteQuery(\n        decoded['uid'],\n        currentPath,\n        currentMethod,\n        decoded['roles'],\n      ),\n    );\n    if (!canAccess) {\n      throw new ForbiddenException(\n        'You do not have permission to access this route',\n      );\n    }\n\n    return true;\n  }\n}\n```\n\n## Database\n\n```typescript\nmodule.exports = async (client, schema) => {\n  await client.query(`\n    CREATE TABLE IF NOT EXISTS ${schema}.\"auth_users\" (\n      id VARCHAR(255) PRIMARY KEY,\n      username VARCHAR(255) UNIQUE NOT NULL,\n      password_hash TEXT NOT NULL,\n      status VARCHAR(50),\n      type VARCHAR(50),\n      mfa JSONB DEFAULT '{}',\n      metadata JSONB DEFAULT '{}',\n      created_at TIMESTAMP DEFAULT NOW(),\n      updated_at TIMESTAMP DEFAULT NOW()\n    );\n\n    CREATE TABLE IF NOT EXISTS ${schema}.\"auth_roles\" (\n      id VARCHAR(255) PRIMARY KEY,\n      name VARCHAR(255) UNIQUE NOT NULL,\n      description TEXT,\n      status VARCHAR(50),\n      metadata JSONB DEFAULT '{}',\n      created_at TIMESTAMP DEFAULT NOW(),\n      updated_at TIMESTAMP DEFAULT NOW()\n    );\n\n    CREATE TABLE IF NOT EXISTS ${schema}.\"auth_user_roles\" (\n      user_id VARCHAR(255) REFERENCES ${schema}.\"auth_users\"(id) ON DELETE CASCADE,\n      role_id VARCHAR(255) REFERENCES ${schema}.\"auth_roles\"(id) ON DELETE CASCADE,\n      status VARCHAR(50),\n      metadata JSONB DEFAULT '{}',\n      created_at TIMESTAMP DEFAULT NOW(),\n      updated_at TIMESTAMP DEFAULT NOW(),\n      PRIMARY KEY (user_id, role_id)\n    );\n\n    CREATE TABLE IF NOT EXISTS ${schema}.\"auth_actions\" (\n      id VARCHAR(255) PRIMARY KEY,\n      name VARCHAR(255) UNIQUE NOT NULL,\n      description TEXT,\n      status VARCHAR(50),\n      metadata JSONB DEFAULT '{}',\n      created_at TIMESTAMP DEFAULT NOW(),\n      updated_at TIMESTAMP DEFAULT NOW()\n    );\n\n    CREATE TABLE IF NOT EXISTS ${schema}.\"auth_endpoints\" (\n      id VARCHAR(255) PRIMARY KEY,\n      path VARCHAR(255) NOT NULL,\n      method VARCHAR(10) NOT NULL,\n      metadata JSONB DEFAULT '{}',\n      status VARCHAR(50),\n      created_at TIMESTAMP DEFAULT NOW(),\n      updated_at TIMESTAMP DEFAULT NOW(),\n      CONSTRAINT unique_path_method UNIQUE (path, method)\n    );\n\n    CREATE TABLE IF NOT EXISTS ${schema}.\"auth_role_action_permissions\" (\n      role_id VARCHAR(255) REFERENCES ${schema}.\"auth_roles\"(id) ON DELETE CASCADE,\n      action_id VARCHAR(255) REFERENCES ${schema}.\"auth_actions\"(id) ON DELETE CASCADE,\n      status VARCHAR(50),\n      metadata JSONB DEFAULT '{}',\n      created_at TIMESTAMP DEFAULT NOW(),\n      updated_at TIMESTAMP DEFAULT NOW(),\n      PRIMARY KEY (role_id, action_id)\n    );\n\n    CREATE TABLE IF NOT EXISTS ${schema}.\"auth_role_endpoint_permissions\" (\n      role_id VARCHAR(255) REFERENCES ${schema}.\"auth_roles\"(id) ON DELETE CASCADE,\n      endpoint_id VARCHAR(255) REFERENCES ${schema}.\"auth_endpoints\"(id) ON DELETE CASCADE,\n      status VARCHAR(50),\n      metadata JSONB DEFAULT '{}',\n      created_at TIMESTAMP DEFAULT NOW(),\n      updated_at TIMESTAMP DEFAULT NOW(),\n      PRIMARY KEY (role_id, endpoint_id)\n    );\n  `);\n\n  await client.query(`\n    ALTER TABLE ${schema}.\"auth_users\"\n    ADD COLUMN IF NOT EXISTS mfa JSONB DEFAULT '{}';\n  `);\n\n  await client.query(`\n    ALTER TABLE ${schema}.\"auth_users\"\n    ADD COLUMN IF NOT EXISTS reset_password JSONB DEFAULT '{}';\n  `);\n};\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}