{"_id":"base-repo","_rev":"100-be713d940c28c3ef02a4638e316919cc","name":"base-repo","dist-tags":{"latest":"3.1.13","beta":"3.1.5-beta.2","support":"2.3.3","rc":"3.1.7-rc.1","v2.bugfix":"2.2.4-0","release":"3.1.7"},"versions":{"1.0.1":{"name":"base-repo","version":"1.0.1","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","ioredis":"^4.19.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"src","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"6bf9f09803154f3e507aa3bd060f07b502b1ad2e","_id":"base-repo@1.0.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vyoCqQHWdrFmwOj2erMgnrtXAzEm78bDSVGvCM+bvqu3YSWJDc3HOrxOyKmNwfKSe75uMoXIF0/w/6eg3Lbj1w==","shasum":"39f3a64cbd288f7bb9e4bcbbe1d644874e7a5696","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.0.1.tgz","fileCount":14,"unpackedSize":21679,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmTO1CRA9TVsSAnZWagAAroYP/2+Ss7aAmCS2B9bE7WJm\nxGg/qXvy2M5vR3ve/En0GImgXBtCbpJaWL0/XdP3662bqegPDp+ISJ2jrmBo\nlDabTZUuySA3d2zTv90QgJHOQXyYnclOp8RZglj8SHscpPpW7f+AiSbqkz6p\nX7xq6o5Ab7qEmUyiieGlmQdZDcblmAjtgRVFnk2ip55OnEI3Dik8EP4YU0+a\n+U57GLBvTGLOIBoE0qFHLNzonPAcxX0C5YYRZVK2fKhzatX/+t/XbgTKGvCu\ng4rB2MOnzwCoAUFlgw910FhyvUTT+3OQnQiOzFwl/mHw9kMJwpDfix0BVE7x\nCGgAr/7Gv1TFXfYdylBuzMewCcAUYJIteQFj3KYZ3cWGmVFp+eXd7qwOWJOp\nwFYSE4yC7KDUYsOKPkImNnkeynIj1jxPuhl/8psv83Lr7YADc9sqV5JisHHW\nR0uEddbk0hkQ7evZw9GH0DDWtSR9vLNts4qxkpwnc6qgOteUInpDhAdug1DR\nCJ82SOIzWNIcxFrShG69VfYE3eeQ727V6fWfEE5wr9gdZEnzhTVdTUGbtVY5\na2ZBJQkpRHIrdpudJB7gunLdcTmV3FlJavriEQ7sonvGfMc/ADky6pfD4koV\ni8ro8aBf1yM4sqq7hdQ2VJ0JQBeQRC+h49o62Haw85deGuDyUxBA4Q7ifI33\nRYpx\r\n=xaqk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG9X7UOd9hEVP4Ql5V9n9xq8p/f0H446wd5P7r07cxyCAiB4N0uClDP0KFbGXJTcEjESDrw8vBGnb84mk2fT0kGsqQ=="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.0.1_1603875765130_0.4381694797552682"},"_hasShrinkwrap":false},"1.0.2":{"name":"base-repo","version":"1.0.2","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","ioredis":"^4.19.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"src","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"968a513e9f659c15dfe63c9ab3b3ef1e882d04f7","_id":"base-repo@1.0.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eNuKTj6WIt7C6yL04GUNkaCuFZXofmMBK6Yp8w//wjKkLAJD/NK3zDr34cP4ZNVGlT/Ub+gHx6iQmgzc4vmN7w==","shasum":"2314ca22e2d3caecc50fb7ab1005b269f4e4d1de","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.0.2.tgz","fileCount":14,"unpackedSize":21789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmUD8CRA9TVsSAnZWagAAt+oQAInk3xp1GKZgYYlp96hl\nuHlxorFgM5bX4WNbHralqQWNP2QWTlo5AX+9keWkqoTlgwQwpGcFiuhYsxOw\njsyiIY2WP5YgDyxHQWSBR+BeDCh1BzjnzzssMOzGEGS67kJyI25g+43DnQdR\nvnQu9iH0+qew2sq/Fbe3RFQ+45pXNWtC0ONN6ujyy3vqS2gFnE8rD3y7JQDQ\nl5v90ko0kO78Z+BifNFX94sY70b56j0A1HBhEzJvgxQbLpF4X49pMOzG89ll\nXDlbriwdizguY5nYiBPTtdNbjVf7XrMSrHuEo8Q6y5wE3EmocpP+AvKOOViL\npMVeaqWDo9R98q3/p7cN7DhP+7fRb6MjuOW1Bbi/cBtpbVBHWdRvplFaY9dB\nHY7sARre+z/EIk6TBjCtJoYKmKiBzQG9tnPBZI600d9buYl1gATEeyTPQbJ3\n1xn+y9MM3Gyutz0VpJavGbiooYLaE/qzzK8/9oMsE0CnxPiwUtTMWRM2uKkP\nO88TCFHyXe9yemjAlnTTtA0k/c9wloC5qSiHMxQSGCpujh4Rt/AmVU+IWdsn\nUKgtfgXFuAfVbw2FKoUjAzsuC0S/88S1vWq4oS1zx9THagC8cBNg56iSctCC\nKq5cKWIYb+0TcHy2HTK56fKGJvCQgC4Axdcw63OuxziJvdhJ+BT+Q8GE+X9l\nv74v\r\n=ArkY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBGiBRKebp578b2O+uKYeRRC7qEOYvRXaBAsNWSf8z4QAiEAjF2lzXhIMXUAOVuXLG9/DlGl+QZHgA2DpuasUOAVTkQ="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.0.2_1603879164335_0.8799797081754162"},"_hasShrinkwrap":false},"1.0.3":{"name":"base-repo","version":"1.0.3","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","ioredis":"^4.19.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"src","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"index.ts","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"968a513e9f659c15dfe63c9ab3b3ef1e882d04f7","_id":"base-repo@1.0.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pvuY5600UsXuoX3Kee0bxBAY+Za4yA0gAGTQhv7YKxCuGuDc5KEIJFq8c9T+6+b4805OMg14gwC8kG0sEY8WrQ==","shasum":"557c738dab1f102f9ae4e2d2e996773fa01e9c0c","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.0.3.tgz","fileCount":14,"unpackedSize":21789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmUHrCRA9TVsSAnZWagAAeGEP/1vabpTch3gtEq8vT0Ze\neyHpny2chDODkXfptLlxStWHQEAU6OYTElSkayAcIGkt6NkBLGhYfJhO3cwZ\n4BJkzgwjWBa9f0ukRR1vOrFZ6+bNSBYji/CJWLsEPnQjki7zvWjRo7ADwCT2\nBEvOhURXpZ/ArdsU5ZmfGczVK6vrwAPtAxGr9iWdf4O1x06r6tz/6iZ8bJyF\ni6fvSQ3Pdxk8borLBjcdjXVi/MTy/2WtCxdvTwduvucAH4lBphmr4HKKxV1C\nOrLxYe11DF2aziD53Bu938M37JUdNNIbHNKrkd68KPUaeTi4p5/gr+I7L1nB\n3WMUdceHNIl+d8MqhdXWaB5LPX/GNgu4R0h7A7VD9e0HuiJSN6k3hCtZC631\nusf7EVDRrwIDyNoMEY6G3P+PS5Ltx129KtZTN4/lzwBLMzQAgLfno9hftCN7\ncSoJ5/GBUv8LrTpocnz9m7uWmNdpA2VoFa+P5f3PIQf3BggiHDhBzEOOfrJn\n19q7Om2/G3IPhpTwStPczaX2YuarkUhTaRuI83r7yXmKj9lLYjGRLvcaYbvq\nXeVup2KKWOSRSypo2Sd/b9ksBU2eNlabic1FeRIGLrMlBrvPte+D++mEzc1g\nw+mcbr4eQTplKxShOEcUgRLnoNPoDwYNRpYKrt63EN2lri+I3U8yJoeUW7y9\nAeIl\r\n=H3tp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEbMPQqQ/wKmTmS0mvGNEGly05JQZQLSabtSGUNdRsgmAiEA+73KL2Eb97KDc9wUbIgc5i/wRUP0QTAnpvx/fZDZeok="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.0.3_1603879403381_0.076868264964435"},"_hasShrinkwrap":false},"1.0.5":{"name":"base-repo","version":"1.0.5","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","ioredis":"^4.19.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"src","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"index.ts","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"818b932f0be5e41c55213ce414fd12aafd49bc29","_id":"base-repo@1.0.5","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-D1zms0beiVecGxtV6s9TYuYk3Pywa2Tw+Hk/utMw53UQX8/mOADc9FZMR7J76cwriRROY38StfzHDjxKp0V/6Q==","shasum":"292c80cbd484893e211736baf104fe36a985e119","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.0.5.tgz","fileCount":37,"unpackedSize":444275,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmUPDCRA9TVsSAnZWagAAMxYP/iz602wm0xGFCSLopK58\nFdB05lL1Y8GI3qLSFWOfE4QvFCF+UGvgLhVhkTnWOjHC1EvEjrmYsqXxEAlj\nX5+2Bagn6gXY748MadZ+Wc47YMrrGRORLUYCQvXg0ZpIQwyR3Ev+Apr35D6J\nuuHnwZTvWbltFXXCBQKsyEN/7vjO5QKwIDzJU+hDnWQ+yVIY1xSvGNJdGslv\nlDa3rMJYzY1VyYBImLVPddZC225tS685gVFBexEGRBaujThDn2Sct5M7KiX1\nRJJ5nud7obQKqM316SZe0jhSN51k3kSvs3SIMsS5Y9cR19PV9fOwX2pedFfi\n2D578pH9wfy2D9B5vK+sQgz+mhuohOIPQV0t8VrsuL4XE/uzsEu+5sTAnqQa\nyC0HFA3n+/N1xVH4knVjMosMJrT5wVgmhzYvBuno3280qBrIRpfHbeF/g3jt\nBMVKQkDcE0Y7jpGz+mJQTtVGybe60niWvnjuFzQue7DV6nfZNiec0dVEIqkl\n5c6OtFpl0bq4mTu82u9I54BET8SOMcBg1MydTnkBQ4E/uvYAKElq+goxz7vg\n3ziIaYqa9kCwrv2eUzMLUn4k5t7GyKRdd0gMcjbFWzKbdGW9z5japEJgXFlf\nT0fA/DsNqpbfjI9fkvfEzZ0dGCguV/0tA1dHDar33p8GRKItrUNdefQLWSgj\nGg77\r\n=QzYq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDieeIxiBjgDZCqhpyoAC5+LFEsb/Tj2zFqVdk0E5yoDAiEA2eb1WxxB99njCPfBqazAIZtxoBylZGk00nuVlqiw/fk="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.0.5_1603879874931_0.6013856532348845"},"_hasShrinkwrap":false},"1.0.6":{"name":"base-repo","version":"1.0.6","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","ioredis":"^4.19.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/src/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"4f82bcf0c671a56fc87bbb2b06bdc8fe6e0fde8a","_id":"base-repo@1.0.6","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Hnbm98C0RqQDUqJ7isfygwE0C2P8h4tm8HLt0/NlWgZcCHt7dwuxu6b54ogQZ8jbcZY1E4lkFHuVPQpiPT7H6g==","shasum":"87259dbefd2e0992e5d64c18d92670d643f5e027","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.0.6.tgz","fileCount":40,"unpackedSize":444666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmUW7CRA9TVsSAnZWagAAO0QP/08oTKCPCHSMSSpNdeGX\nlsE+NMr66cMJoY8R8CEfp+2yS7frE0wnBnIabPHIjD83+yoX5D9HSDQDuskb\nVMUP5NoLPKE/wpYjc8QdvTSKgvajysgAePB+BeAISwqWnUc2qju8XDGjz6Jf\nGLxVK07vKL6AgQ+q1AyCa4K8pLtkXAujYnSn50CIXPqJyxPNuxg6pFGb9/Hb\n0e+QuLn/3u1B3j56L1GV5TVfOU52FE/8nEr4XJ5iRtksSbLxouUGTtBZkNBY\niuDTMHWNqkD2Igd0Ko5g/TSa1bMSodpVs4QYzNDQ9l3Zxn6Gc9/0LDUZJUkM\nURO5JVZV0GNL295mBLdRhCDt8D73xXEa6QTB8tUvBHmSDvb9sK9upbRR1VfC\npLRHm1HvzcEOsaGMugc2Kme9MEFdpmirwe7coJaTwVsin4Gj6KcYpXiVf4U2\ngDsTcX0ZDhN+Vy2DRTQ1DPxoICAsXUxsyUkIbbykc60G52PYY/Oio6+VAkRy\nKWggg4OZNvr6o20YE4jyvkiX7xVk0kJ//TA8A9HFF5meBIyX+x17H0AOaZlM\n3MrN4F2HtLXNjrWI+ZG4MS8WtQyS9Fjz1IOtmgFRn0LHM9TjISmQE39h06ih\nNw5jLWbY24cdD1havhN5wTLGU8Wn3LE1VtPnVcVmMco19kMArADYusJ32N1x\nWach\r\n=LBm7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH4KeLtJzlx2i2AtYonjWf2CIJfHl3k7kK7aBNxgJFjJAiBk0sG6RkulMRuf8ASekYZsKE3zdRzLkg2Em2meHez15g=="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.0.6_1603880378800_0.173738727070047"},"_hasShrinkwrap":false},"1.1.0":{"name":"base-repo","version":"1.1.0","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/src/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"6d6b0cd53b51901cdcf698f2aab49297816f1631","_id":"base-repo@1.1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-XVlWVKAJQIhiIgf7XZYQpOwf6WjDAE7teA4OrvcfpsIsDCtj7kLUDOvpmRlMtK8UZnmfpN3S1I8lX21GpOqCBg==","shasum":"33c034b1dd04bbe566e5b2b6f6c23b6ff98b49a0","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.1.0.tgz","fileCount":39,"unpackedSize":446074,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnRCQCRA9TVsSAnZWagAA9wQQAIGt8Ncz+jlmlLLqEY3C\nNJ7pfp7Nz5BEN58zS1ScLJGQh+wW5zse2I7Zfzu7L/r2k8nLeeFvgsNEj7Wx\nuZA7CPFQSNrxqN2rYhlgQNyDHg555JOyyKeyjcZHTHhRTsxzn1GUE1rdSPlb\nVr7xvZUdnmyfRwMkICP4W/XrPcYNh3/lZAsWc7Sv+Yg2CtPDCoz+6Stxvw7L\n7Js33mAk+R1CHA7RFAmxWIxpnT6Gdumh8VgT+UAiiHQ4wxlps2CfSSUZBAgT\nFuwZN9CUwawigby70OGN4P+a0irgkunJDV0m3e82YF4puXCIl9oASc9aOKTm\nsb00363Ea49HCVJygMmUoZ9OFFEFq5wWiJKt+lb6PzNbV2chWW62yZKAbgj+\n1hLo0evc8G1Umbj2HBjSBquYe9vgqZMvXAOrD8o31Rs4Ot2dOhA9e3h4kG8d\nH1C5oiSt/az0iuhXf2ZT7q5MMJYDWVVuR8/V4Ff/u053/1PRW7L1trHg+daV\n4/3hzIIchaZViOypohonDTd548rfLHZTu5Clo83Emg9Qfaiy//t/oi0Pt2QM\nfxI3qyESsUM+cGfBgpXCg1UCASUcScHIq4MmFLcufI7ODNvdNh3ECoot0Lm6\nZWs/9VoZjmEAll6MYpHTVbMCKvX8ck/Czeg3pTY7WzgYROSgWZVvFY5m9V4C\nmAzI\r\n=nJrG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTaRHo1jjwXrg0whXOFce14GjcSg4VHlXcYOPSXfOSCQIgEj0MybS5Xe6nyCNgbrja3O7DJNeRx6QENCFFfqgW8vc="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.1.0_1604128911967_0.13085901587415427"},"_hasShrinkwrap":false},"1.2.0":{"name":"base-repo","version":"1.2.0","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/src/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"1928ee4c7adde4d54da1ff648ae62ddaa24b9725","_id":"base-repo@1.2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LnuPRL70LIzQdlxcBsvxL/TxBbjFOZLZfOii72jwhaoTpaZtmFfzLN08wp693T8BkEys/QjKew+3Gpt5lWhMkQ==","shasum":"36606207d6a6425b222afa14d4cb92528204ce0a","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.0.tgz","fileCount":39,"unpackedSize":446225,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnRwWCRA9TVsSAnZWagAAAdUP/1SZ+iQ6WUzJZwGhSYm3\nVuEY5MvfX3IvNmG+HSpZ8B6HeBiCmMmnk7zkZVpMSqmBFxB+hRCaekwb3Osv\ntPHrj9XQZURG4gxc3GIm3OwkXYA6OJ3ebzm7UnOE5QzgD77S35JDdYRfxoQE\nIsqdrN8YPxQOTn4QvaRLUZbCGFKAQ0ZdXw5iAjbGxBE4GQbbQbkr+zCrczTz\nQ3gn0QdWvzT9YjGiYIyfPNIYcEJpAMZ+NNjgceL621ixVWYMw0KefEVRz7ve\nzmGP+jgS9KudTB4cLnHVGiNaDt/Fq93aFXUJrwEpY60+dA6E3B3siIX1y/C7\njq9rE0yFY4aLIa1HdYnR6fYubQPy4u1pyhF8QnwMeiaZxzU7cJD7E6MFGc2r\nCF6QyXNiqpFvspVH8zOe0qyF5KaK1ncShbyMwjmC3CBxyzZhtvVs7HBrWMZD\nZ6vEgM0PZccnhMumrHQTRQ+RCeP9S/jZQNyXgXdylaXQqDD3MXccoLtbvQ3l\nBBUmEIGa3mXSWNKMDlLL//nbSHINpKSRHv2PgceFrBCp8QQu/ijrqHVEAbs8\nMrzjvFFqnuEOPQutv0b1V+Oufd0r0fiitOytMarY1nyZDUXaaQwlqSO0hoFd\nf3yRuxU1elpGhCV1HOB8wZuFXYKh19ihwnm4K95JnHeFJ3JmzwSGZ/1qUfn5\nY40t\r\n=tzpx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICgg9fqFYjZJSD45CcnY5dnN8tsZjyXOPJD8v/tXrBj4AiEAp7EUClyRibJ9+akHsi9BOmui/ZgtFFrMnT72sM7UjiQ="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.0_1604131862394_0.03809596099445778"},"_hasShrinkwrap":false},"1.2.1":{"name":"base-repo","version":"1.2.1","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/src/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"fdabf159c3c89afc5879dfc8fc32050ba971297e","_id":"base-repo@1.2.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PIk2NWqc4OBdsT2UsFZzmVUSdyPj2sTng5AuIBRSqx6XQ59gCkfTskJ0hYhyH74sshGdRu1Q/6cKWOlRdwiP0Q==","shasum":"a89362f758bdf029db7a9dfe68376568a5a028f5","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.1.tgz","fileCount":39,"unpackedSize":446455,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnSpKCRA9TVsSAnZWagAAj34P/AwLc8aAMQKd0TKHM6bf\nrRTJcQ/M91zq5yvkZ/XDi8gAWOboLCQfnq1Plptgo8q1S5fOYNER/4MZjl0Q\nT4rtjiQVHMpE7NnA2JJ+EV4m/rTBvNjxow8/VIgej8to1k45hXgX1TJODxTa\npG2g8VaGCY+2H50qMOGZM9OweHyerVJfeE4k1AU9bjVt8JBBfZ5quvaBmMXN\nM9HP1IyIAoG4PEHv1kQHbboOLti7MiSt3DrOo4+nBt6LqVX3yNpaZnrhnx5A\n52tS3Ba4ewHf5XaxtWzIuRso2jL1xW0cJQr08zBexPHBfmBtuTbDnBpg+X5f\nfiXYNfb/9n59T3GqU6dg4xyf9K+qFQUeoBmOXrs8N7FV2pFrhtn68/m4l/s6\nd7wSBZT0Ui1II7/2lKw6Pomr6fyGvN/SmyX7vm5xjZkgmhulJKN9IEeXoXZm\nYPEUI89YUWAJ/LFNdp3RCrYSKxUHxtXiEuMSmP4GdXuNQ3BHNgRSnV03iS66\nLPCYWXlSyWqMB5SiuikayUlzqp11zDn5I0I6VZ39n2asxLUS15Qu/0+SCpG6\nKAGjcz37cDUizHjqgGWy1CIZmmayZvtYDOMTz57lctlN8TCPRajN91Ox/dvX\nutns98IBZmQo/gUkhIzOG3LRLZrCvj+8gp3GpzmGmWBUf3RdzdtMbHbSahZw\n8k5F\r\n=MJzH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICu3k29b5MMCRdq41mIq4sVG+SY2isyR5F7OMduMbuWGAiEA7htcEpVux7uWRzGqDAO6xeZHtUPne8o5E5TlHEnq+A4="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.1_1604135498179_0.9949285509855708"},"_hasShrinkwrap":false},"1.2.2":{"name":"base-repo","version":"1.2.2","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/src/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"aea6b32988b791e13f34a439a6b7d56de7112145","_id":"base-repo@1.2.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-P00aAP6XxP13T/X3YPo3wmOjLcLUFkzCnPfd2xUhnafuFqOJ/k2kL3Afgb+NGyCZ443KoBqLpy9A3WyBrA7Usw==","shasum":"2ea0db9fb39da1ace60b7f2207486a6d456b78ab","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.2.tgz","fileCount":39,"unpackedSize":446505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnSqZCRA9TVsSAnZWagAAi6kQAJiwFDftPVqQpgrmDZc3\nGGMrS6XszNVJTqoaiGzRAsYEx93NXXYj2ciZNJFjTNXgonc/T7cvT6v+P2EA\n17UxuNWjj1Ft48in+PNbu7V9rr26fnQx7Q6iDWZRLJHOAGcYn6+78Dtm96/M\nFUE0HhXXzuYmtiriE3o5wJ2ALnW5pCcHypwu5nctF1Tz6NdarJJfxlGJRqhP\neuEwSH7LWYTIe67H+Gt+5i1QkN0yzXxXiahTKStQDAYLyr0VrDgbrZ3HXvNd\naSdq33dgUXNT2P7oQ6CFtTBt3oMDjCpZbSoqbI91TLzPiDKrKroy4Ix1/ySV\n+1+Ji5eYXqbG+4HGEXRvqNE3TgblT1ruNCPNJNQdwMDFpRiqKq0wF6+fJ2jZ\noWyzjuIWDa/opJ+bYYShcLbcGWSSSRCQYN4M9VUZ/i16Mf+iPt8EZNIb+I1j\nFJ3I0Vsl0cBaHyDf/tODfDQAH7BeJO+vTu1sDcx1QpjiyafvGwo+l8wA3UMT\nU4VN8GU/hmCGudTb27Rq3vLxksL4eF2A01MGMC4+YAuOkwER8cD9dGzoBHKY\nYl5briae8V+5xvuRA6QFwZwgZCoL5RbQ1i8IE1fBZcBOnsyQxtUB1uEXU4+O\nbCeo63b8WYtQzUEoCNoNMQtiHi3Gwtocejz/UKRoxAEs/Xb0906tLsUwHNwe\neYAC\r\n=rAgN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEVslh9H+bL/Z/HEchNDBLSYb4y+4jEl4e6xUnibRmC7AiEA5rEWsdCjktR4avBnrnB/GTWRumB11mU1keJ7vc8+xNs="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.2_1604135577221_0.5526406253342999"},"_hasShrinkwrap":false},"1.2.3":{"name":"base-repo","version":"1.2.3","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/src/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"4a9e94806adc8a43a643e988181f1e29cbd25410","_id":"base-repo@1.2.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UVuT1H/L6Veaj7D9QOkjyB7SNuY8JmZ3W+mcIKhZG7MWFPwXiQIVYJLfwdfDCjphCLSa/jKfp24UgaNGss2U7A==","shasum":"38ede91aabe687ded958feb3745113e094242c92","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.3.tgz","fileCount":42,"unpackedSize":459019,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnSs+CRA9TVsSAnZWagAARi4P/3C+5755U785luJHASDf\nVRXIeESk2a7S74LlhrjZqNA+GRZmeTkhcESTZqut+G5wkBPZO+43WJ+SMAzD\nEmzn9Fp9eLC2O4VKgcc28/77ZOMtG3uWNvXEunR6dm9ULlUI4yVHPKiX/JoS\ntEWyieOAV6iIC1zT1xs0OI8IA0tgJXDhq9OvMJ/npJc2r+ZrP6CfdDizu/p8\n66uohB5mPiLP9akuu66FBz30bjktZB0ngVsZIR5GHE8XTLoBgg76IQtjAYaT\n/X4UG+sJ953trtysNpbUTHalGgMH2CKDT1+ygKflGEoN0pJgj1oWAnwvGYHv\nXpZDuGyN1vYQKJTAznQNLruPkhkCFsUMfITrPGA59mzBk06q9XElieORaOOy\nz9cq3mmPok81/JZlEUAXsNIlZKPz4X52h5Khwl0m3p9mRb8O/5/pIrjRAkrH\ncosPj97mmp1K85vydCOI8bRDdNJZ2oHPIJwPj7DHCmikNnzqPe7eZ45hoKtz\nqUNV9ANVX3M8GstUNhBf90yP6drUVtttrhMTeS2djQb077n3F/1+WXpVL2G8\nYrY2njEw/Zo51WAQVo1LvIhta7xt4E+7mCqZu6YSnRvdYtx/3/D2C0RKb8M8\nX31QzxDjy+dRuxpwATS8tCSXt0uZYxiZcjiWyGX84ENUSy3Z5dDsrdb5hfNh\nzlfL\r\n=WWKg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDstMgAlrLcDu1mITSJJzC+a01xXFOPfKLQQfqW8PoOewIgcmYHN3aarXf3d0RYk7ELDRk96YUbxICzFFQ9Y3Fgt94="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.3_1604135742217_0.4779565306967777"},"_hasShrinkwrap":false},"1.2.4":{"name":"base-repo","version":"1.2.4","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/src/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"c665e44ac2fce9f96eb1ed3edc2b4c6cc73bd11d","_id":"base-repo@1.2.4","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-dAbk5eDbcheMEWfz1It1iJrsFRGVjz4nI3KvO4ZMFjpwJWqcNSqEFogLeixr2QRXx1+cB7GUVYiAqWUi7m/mhA==","shasum":"ff55b939937dfa870e1c6f5f15b823324fcbf84f","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.4.tgz","fileCount":42,"unpackedSize":459571,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnS3qCRA9TVsSAnZWagAA4+MP/10nbrzo5gQNNPdc7fq/\nkSXzfA/W8MbspnmCKdIAeGEFpjAFNxT0ifnsPuAcNxbVqK9ozu4YNt9FGhcj\nuFLKBjZyLm19kYuQmqfEdedRBSHHx4TRJfq9UmZBgXXtWPSveq47dNSQY3cG\n8Z/W0qCYmR+d8EWH7bFS2bqQOcnIq0MVnHqcZdr84pGTB7j/darjKisorgoh\ntA6SSFFgqC4F8gUbVm130cjCA8FN7p37LlLklrOJbmCc2koPLM9UZ367zExu\nGmKZ9ExIrHUN/uA9NWw9isJswkFU2of4ffihaWd4ozpHEygQn6RacZ0F1vgq\n6XxMtAqD6IlOQeb1l2wkC3r03Lnrhi782th4w4dQys2UF+AQUbOmjtfsTzVt\nGrbTfqpw9PfQgSbpVBkTwUR2ipDhw4Gid+A32+rBSEpDAvyQdQna/e0xYCA6\nrHYIV+mV05xB+jV5FWTFfzq9BG2TCYqxxJExz03s8aZUT85LueGhpogAget8\nlXIBszBHrJRNHO5WBmiclYjseh5rN1Z+RoIXnsONmszJ98TMFbdngx3g5xcI\n7msz83jjBZcfWIZcMjHHYmBJlsBiub1GdHNPLBGjfMu83XTtH/q8Avp4s4kX\njM7LC/Vdjcobv+emGj2hmJlSukCn529yG9rmJonUkRHRCDFQo3v4YPUiS1r8\nSXv2\r\n=mgQe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuabjl+LidqnasMxL1pTS2F+lTB7eMb0CJ/LBPCDt1ngIgIo+5E8zwjmld/AwvbLp9RnaTWK8e0SRN3IKfZoquKRo="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.4_1604136426333_0.6636609919468728"},"_hasShrinkwrap":false},"1.2.6":{"name":"base-repo","version":"1.2.6","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/src/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"e938714e01d8f540735f20442064ec63f8f741e8","_id":"base-repo@1.2.6","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HyuZZhmDDBsmE1WssKsxgtVGNVW48CLrjDGZ/3L/56JKD3csgLCqrLCq1tPyCLED9QnXydgHvn2vnlL64k0MhA==","shasum":"129d8b5cb033e677a0d4492a4e511f75f56bc433","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.6.tgz","fileCount":42,"unpackedSize":460489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnUMnCRA9TVsSAnZWagAA4r0P/058B8uPHBgPB9JHe1Pp\nbPuWy7IAnBQFrZVJ7V3lkReSqPJJUmR/z0O1f2mGc6YYkw7tsZp3RWE0i5O7\nVoJRbl6B8U0A6H8mXSpfapH+6VeBjKJ5n5A5f+v0n+Y5l5pwoJrQJIvNDBoY\nIjBhB9v299ewvFOmn2hkLcUqUeYHAL1REnuietVu2Km0iZN2CIgqhN7BCo40\nYip23QRTmKhB7dGIScHz1cd5l5hmxytF4HBMN7CN9x3aSvhy8kooflULj0a5\n4xhjlMtxoOYbAk2AMrbn6jUmJnSn8hFLpNMJx7aK2JpvCGt/G7pK0g1m47FE\nZB4YsVtTt17SOrcDKO0ni7F5aLxjxhs+dZKuT9hWAVic10yHwt+muY5Rr9nz\n8N/R5ojRwCdYTFQm+vopEoFrmcf8AdD6/84o9ZCYeTpsnFUsmsZdiFOG9gZJ\nM65ZVSoOVzkoAUFDgTS5iwnRBmW4LJsrYjsyJWF3Xue+cRiAPWDveFEc1/xo\nqMfDX+mfhq8OWzabmIDbOYNaccnzUAj4OowVk9b79wj+2Mod51NDB+Dl6YuZ\n7W0Bmac6zLVC730ZGJm7pQ2NeY075e3SV5bZOfV3t5O0V2NreG7jCTSi9rYB\nMRd5gcwe+IeRKRYjXnoxH3JQs59LUUzZayAIv/6B3Cce6lRUJ8tjX8hiF6Ij\nPyzi\r\n=mtcd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBoNyJIl9bPp5fYcNRsyx0kU4L+SNYyzZtm2uYDhSH1lAiAcYxs+80E6/OCKGRl9Df7IsW8oju7PHVRzzoYg6E/I7Q=="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.6_1604141863387_0.47678996595368295"},"_hasShrinkwrap":false},"1.2.7":{"name":"base-repo","version":"1.2.7","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"619008ddf43f3501e788da46a58d5789e7205ca0","_id":"base-repo@1.2.7","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-xMcf0H/MsRo8PeMg8EQbXmRE09Du9hl2o8armrjttPPtyHcrUIYf+ixdo3/eZvF2ikEK+2KeLrQz3nJ4aBCLow==","shasum":"4b4e74b21aae566df5c3139a516677b1faf7c5e2","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.7.tgz","fileCount":38,"unpackedSize":458562,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnUnQCRA9TVsSAnZWagAAxDUQAIVR6bwVfYUFiYPIprcR\n418Kqylu9EqQtwlQ/hrTPUAg9Dv4jiTbznNmvLA4nc0t4uKDqfD9WAx6xS4T\neMoypJfLkkJKsFA9qf4XGc0/7Vx/189QpTD8VuCUaIGHzQdhFIgMFBTsv/lJ\nmm3n1PK9aIBsYiSRgfja1V3BKj8o0PnmNKnIdRHUQldoR22ZLAJkbpTHvikM\nM4CQ5pBfRLUpqI/6C0tYDInGT0lLb643uQqkkG1ilKcsL4EoM/z3SSTz8oog\ne8txGfxvYAJ9g6yYd2zVKQWJXPa4dlzn3olWyXXvlNwTNeLoKFKlhLlR+3sA\nIUkBec5Q8fVfyNs2/olUkPbd61+LVeLMYzWOEcuzpdtC8w+Zn+TJAlSPzum6\nDSgO1DNMeR9JVnxwG84aNa8dWn+vfd9q0wfYdbcpmLrG6iD+fB90rPXbt76L\nx7j3qRXddWh5KJCSOSR0b9ZeY4rAnbm1Yzi7+TWAL6LmvdTQsZyMQLV2/zDb\nPW2gCB0a3tS5DYgob0JMePhwQo3Cjp/qbwPLmXGNa+CrAEC6urNWjdD6tUhx\nOkyW58dyBcSW8TWj/LKELyww1KyVg270OvmTr46iMZoSrZzeiQBvG2ujXvdw\nItKGgrUm2yQ3obOx7T9EnhClPtIZ/kgdD/cPeiZn5KABu97Rsw954Tsd0ZKC\n77Rg\r\n=/lzJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbMRxWwehYpOaWbAyk6NAfriQufKiMb93j/5715345OAIhANDMffrndpfrPR7wcrsPdD352mQPjUPeEO5lfrb4FRs3"}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.7_1604143567563_0.29354876913511396"},"_hasShrinkwrap":false},"1.2.8":{"name":"base-repo","version":"1.2.8","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","_id":"base-repo@1.2.8","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-I6F2E8p9lMQ5QMFuoQSOWFYGk86O5oGUCqFkSJzI5F+bcOSbHbonvVTXC50q1Npv2zPlJAUxso+DavNWdjeB9A==","shasum":"870464c355a302a0e26ba05e7f565a3b90796f62","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.8.tgz","fileCount":29,"unpackedSize":439145,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnUuOCRA9TVsSAnZWagAA69cP/1cM1eJL2NDJT4KLP/SR\nqG84tOuPyQOB53pGUCO54tLhxy2yisjL8WtxIbkfsrQd0A8hqDqDfitQJvm1\nrFGPhuTGaskP702LfXFt76LRCxnnxp8iGygkJaFFtxYLyUIRCdlrlh3Dz9NL\nLVTJ81abrs6igG81CHZhfmqdN+j57tc6+vP9TYDb9ETm9H6wqJtPnnUBTJjh\nBI7AINAeEadt2P3PeDENf0iHNrf4Occ//nUV9oCZgPsnkzD7TtZqeCLjx35x\nYqqi7iMmpm2k7hDKj682HozJHBADItAhb6xE3Mct6I/M98drmDYkkiCwqGA6\nSthTFc4jQFrJTeAiLeFP7GQ3hRWq5neJ5teRQ7rJGEOQkleMMfCOhsNJlhAF\n/lqAEuwVE/oR5WSnPrOeiTNy9N+FvJPOf2F5R1PQT2TLpPN0EQCixe271BDu\ndSNniWMpGH/IWlETapAHlVhjeESCudyq8BT9MdaAn7AKDM4m+Ys8o4RyaVeW\nAxmV8mBAPqdib1lKFF4K4p5ZxAEJiulaOyvPrS/AkReDAK70LjHxLHrzvgma\nZVSi7oGwK4PmdAH/e+VkHfKvqfuklmHCKxl7pPqiRvIM8RiYOOuXLcFefOAS\ngvL70g5oSguAVvwYVvnvzWmIUPV372Uy2QO8sSS3GI48lb4KrNwRMIg0q+Kn\nVjST\r\n=145Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICbcmBbXVbn1BoNHvrCPEyiyJgsl+cy7a58LZkDyJKrmAiAtyfMyNCkrBY8axKEN96bRnrIb6SHI4KZSJJ8WyrYqJQ=="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.8_1604144014239_0.5990742586890407"},"_hasShrinkwrap":false},"1.2.9":{"name":"base-repo","version":"1.2.9","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"8b95134e3127832f5c02afcc652d57a1ebf0628c","_id":"base-repo@1.2.9","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-15Oy4iSrW2Lz3cjGdiV7Y74HctNtVY78Zcg7KMkAPwsz3aTITA34cV0elwaM5++9YOBXZj06N7wxPfnJMX6iCg==","shasum":"cef964aee356dcd839ab694bd0288f031a76010c","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.9.tgz","fileCount":43,"unpackedSize":463362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn98BCRA9TVsSAnZWagAARYMP/1ge4uZ3ErAOi7ONJJFQ\nPJWzJnFvip7BksAYNwA4OU3c1/xnCXBokl42B7MivHdthH7eENaDoL0NN+hf\nJrEsJQSp6Zo0zJljjGExZLsFuPUc/pmVuuTiOZ8DsET20JTh4IKkQqvHHGEO\nTAjXuwHdwe0aHxVmCOkwHHNhsmE3YNIv2L3lOlIngQmOO6b4ZRR4IqWXr+J1\nev8sH+9VdVk8rfgN8AciUA4B9MJ+hmz41O4S3/S/ky+t5i4a1X3lvx/xcL1M\ntlYkVQgn7bUZX30oM1tY4Bj0jBoynlmS28bTxwev4SPrjEWt06LY5CgTz5CL\nsTBcYhpPehjroLu3dBh9ErzvhT32JIxA4DfA05tiBmuOE/nbDI5p9Takb+kE\naQmHnl0w0XMYubs710SQsL2HOIqZsBiAGibRIA4dVM0sJPyJ2SsFE5TOrRDe\nWRh1s0Oi1f6IdDnL/X5p7T45loHEZn7Hza1vDRuQz7FsfXCsAlAeCAlB5tJy\nYeH6x8qbFziRTMpJ0aaA/XFqPd6Hrl5teXazk1RTU/k3MrTmSb8fYaoEWMAd\nopRAD9vDB385UT7QLKYtoXLQMQEmJ2J9eq3RzWvKjnqWDqT/p59HgpqAw62h\n0/Fux/0YRmKOZFm1pQjAKV8/prYf6ABltOTrlsGZc+SCuwEyADo0TK0HR50K\nUin1\r\n=zIYL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFrK6N/+t4JbdtXmrAA2qIWlSEU+HUv378wS3a8zYLlIAiEAwHjZAHJXI4SCFMskbIvDX+r64YuVRqWp2fStStpubR0="}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.9_1604312833270_0.6968331095095772"},"_hasShrinkwrap":false},"1.2.10":{"name":"base-repo","version":"1.2.10","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"09c47f64a2fd444e6e188f4a5e7cefd4dd574d07","_id":"base-repo@1.2.10","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-gAU/vaPhEjvGHu1DaNHxDXkPDEe+Frcq+8hirXaszFlaXdwJ60lfuy/LsETkD5SXusm7gY9pFiPNc0EehX8zWw==","shasum":"822110b2e52d33c218f5a53cf636376031b72f68","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.10.tgz","fileCount":43,"unpackedSize":464256,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn+BACRA9TVsSAnZWagAArSsP/A/iXR3Z8A4JVB51zuUD\n7iyYK8nbohW+hodPx63p1mSXZEtk8v57s+TewNXFlhYevVRHXOUiIhFMjCqp\na7jldFl/BAhKdOGOfTFMbXYc1A/EAdFOa8ROtBHCTUOiosVr/q98Y5nkWJoF\nDu/o/vhsTs9l5HOSUsvPoB5DCrcp6nS0cBUg2Ujl19Je4ky2/hLHy+ZvJUB+\ni9LP0FJbZj7OVYO2nHBmLQ88/GAoxz35WyvD4j4olb3UO1nrYZCUfQzG/AUq\n4rGI9OTYJcKEWQt6tOwt9Vbr4Y0Ro3KwsPYHDIVgCnEPzQ2NazGKhq4HDK9b\nq+ltl5oYRPjfk0XP3msp0lXyRrZWHtlz5JRQgIUAflsZM54WVoBl93ANT3mf\nLRjYGqLK9MhSTPKZ7OQT6d5+D1A01gaTeLZxLUO/8xcQUDIouFK/z/Pz8kDJ\nt5XKTa2XSJUulh3y1Blm8SgXriQrUm2meOetWBB9VkcnY8MWw0n1StgW9IvS\n5tyd1SxluA/6bC9i3qz99tsVDvtZy5ZtJMJOKDuNWjnFGvUZUJas8e3M27ls\nqYfKsUxe++tAGPe/6JDOedqWZdX1g6rut7HjHnb7gchouYh+ru7sqZXl0lrD\nEuleAiyMbrjDwitN1koCgVmwBfay5K1CJ5UVYy4s/eJxY0w/C9LmRhrpTZFT\n2U+m\r\n=VIDv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNmLlj812BBZr/kf1qW6nXL6f1NZAAZIqggnjDgrJiUAIhAOTVi91BgFiR2mrbQOVeeNmoJxF6dSTwsjl0YMEwsLC7"}]},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.10_1604313152504_0.5679990671422603"},"_hasShrinkwrap":false},"1.2.11":{"name":"base-repo","version":"1.2.11","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"90dd4e603f16d95470e37ab992ac9eedc4af8819","_id":"base-repo@1.2.11","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Y0MQb7ybYm8iJ/JtRxtTDzSWrIfF8vFi8+Qf+l63A/cRxgXIeFZrxi2O8wdoK1ikYWiYBcYq1qLUEF0HR9aizw==","shasum":"fe1da30693541acd1e3035f0401c18d66bc8cae1","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.11.tgz","fileCount":36,"unpackedSize":454810,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfogKHCRA9TVsSAnZWagAAEQAP/j7k3BOVm+yTPw+VAcor\nRtRaQdJWJWTJaqHXhjIt5z2wcnS3cZsbREdmKJIniGGrLOgO/GrYyDefD6/d\nk3zHIVHQ3+zHGsLUc2t/12FqUbjw+MNJfTqB/NZmuzMWT9N5ZvY28o1E4/X1\n/tluxJFGdSaZFmmG8jqxdoRkJdGXWXenNUCgeuAlLwJ0Ix+YeV7UToYrzOT/\ny6oNny4Tsq0z4m5hYJ0aZwnf3kfQV7NSBVc6wn3/A63DumRDsRXatJ+0SDJz\n+iKZ2l9hvK+SdRqrxo/3SIPqDmakWFa6eJEs7LKHisCC0fNlfXQxTa5MvgcI\n5wfv95kNtBl3AwAXGj8SXuV9oa7UzEVYh5rnmu6JZEWE28FTNUAxFHm5+i1D\nyI/UpLqc54JTogtPqnJPr2Cno22H0p8Ne8gBcZ9pF73lfxkiUM3y5DiKuOMM\ncwMFxJvHboCjYz3Pj30bKejMdOvXqSOJ76S9AZ8dDNheKvcld7pnrJSROnF3\ngPdq08uL/JcdLzsUtIJpfbtRXP5cXm6S1jLAd+8h0ZBx3Co4J660cezsmqVB\nxOx/CBPWHNdBYsGcfttLko8Y+Nl5yXj5/NWisosP+AGtndU/eEDRnmPwhB4b\nM2DzTl84A4diXt1VTGDSTTvz8jljI7jnk0lSLGlAF2ckM/f9FGTieIyRfi/5\n2oeC\r\n=/j6f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPOKpewprpQYpNdyfTJFMg/rPmLxmZ0XjbIDE7p/awmgIgFPDWFaOAU1f7cR9oLtRNLGgC6O6oYOQ4zHLO6t4+nCM="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.11_1604452999125_0.04290484446663889"},"_hasShrinkwrap":false},"1.2.13":{"name":"base-repo","version":"1.2.13","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"8156298f5de2a64df1e37d7429054ef45cd7a2f0","_id":"base-repo@1.2.13","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mMFGF+KzPmn3LAnOKjV1nPF7MUP1L43pcF5T9XOZPzlpIxPjw8lFxlwZnMqHETnKUQz+9Rm0KmYIXomB+H/uqA==","shasum":"d54e19af9ee6c9691510d86b9d9d6686dec50b7c","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.13.tgz","fileCount":39,"unpackedSize":458977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo4qICRA9TVsSAnZWagAAJ40P/0qDyXFPsgLWVMFSavzq\nYlXWYxHjoetU6Am/oVPEL47rFPHl03F+hWVfWrh/vi9JfVzPfPtPYjY2zT0m\nhFBb5y5mDO4M0InfZqnXQFC6JNz7q/1tciU4/L4Ycqqohd9zbht9uqdwFzw0\ndcSOINnotPWIDk7Hcahp+4CTiHYk+JcMAtnw4zXGFIi1bhMMUPtc9dAC42bl\nR+OrLQ5QiRVyqT95+w4udK+9p/ZTmPg6RwUROlDPmkK1tmU8jnF1crncLjO+\n9b7HRUPNfqMYt827/gi2blC/skLN63g7u184fFBjnGXtiOoHcjDkMRWikbWB\nqTzzD2R7WbIf5w0lyLnTHdUOb+UubtkS1s7xD9P48M8Nkh9fQtFJWt/IaC1F\nyrny+Ex8FMUtzWp+KMEEug57jmDOMrl6qGbE/R8U7OShseE8nfpLyfcJrBU5\naXFWPUJN2O+kPjrOjU23gySj3kbWWkGbPvn5LPecAUB1dPi/eRfmRnlfu0f6\n6Aw80hJIUd4ZgFX/5fCir3/ov28a2Zg0lfFnvC0RMitj6KeSInTfxcHWznAg\nn95dM6WRl8rfggrTIZIk/eEx5HLv+gMLCpZEyI5J/IqtIa0Yjou6cgKhTsD0\n6ZFmP6gQqixTs+SnWRCbwrnDK1BCyYoETzPkAmIBCF+M0BdxThJqJY9WpAJV\nhHJC\r\n=yS0j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEI7CaIWKG1QXHOXdfEnbfvxhw1wUExWlnPuAcXi6g30AiEA4hb+iF/C6aKFURkaPsLbGGzlUND+vopuMNazA9pJ67M="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.13_1604553351734_0.4430982535342938"},"_hasShrinkwrap":false},"1.2.14":{"name":"base-repo","version":"1.2.14","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"a4befb763591269f2bacbfab864f6489f6db081f","_id":"base-repo@1.2.14","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Vz7xcg+OiuNY70vrmYIlxhi2N7ZbFmSWv7ofAIlkJvVnTQMiqkLeRkkQpgqqzYmduSydDaecq7HYxEcyhNLWew==","shasum":"aaf1816a7d478102e545b77976cf9693cb9ddb3b","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.14.tgz","fileCount":39,"unpackedSize":459263,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpPHUCRA9TVsSAnZWagAADFIP/RK3dVeXJwskmVDExrET\nWwYWcubYjtPFnMZJgShyTOmEfqj2YqNxuE4aL2KD6xE1anKbO5jpGWR83Iur\ntv3n47fLgOQmcQ0MvedHvktNHPHPWAsVwH51sVOazs4W72TmRj8+62HptbZb\nW0M6+n7sF8x7hPQLxQ5hIwUbEExzXVuwD+NND5K+F8oZzBKVTKEfJKhuC7RF\ngGkQKrP9zjVcU3KzHj+GtKFCO0Pj1zCDn93Znzjr41Tt1S5xSRH33cZHxqOw\nlrohnQEuUU+s19xjHK3Ryt1l/dTpjTewM9IgND8wXXVij/jLnPAW1g5/XtR+\n4Y/31tknRdHsmvPbddqRcod59Hq+JCm6JKRWMjzzkf9kc7jPpAFdyQegSG4o\neEr1Wp9ndmjzX1HUnB1dmb6RFijX2j5GRBkvrJ+vmrcfmklq9gF11Crf4hbP\nGDAhJafuLpUVLtm6zDwZe5dHYWEj/xebyR72HsIcfOW+Do1dd9z6eJcmeXEF\nMocSgw5gaHY7sIj+tY04l3zJhATpCEjDNCrmQQ1fq+ZcqkmhGh7tGHrpGmug\nnOKdDNbBhDQZw7wrK08mYDTx/2BFvGQT7nxAdwG5V+kny6F97dO2guEC1yAL\ndwCL0V1pulfHyUzMNEDSiKEIDE+L+St5IbulhBEZSSwZHWHm52qmtM6gAJYj\nr+dr\r\n=BVSV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAV+K9PfQxlnLFBCB8J+3ju6fZLdWDDUQUqA5qBxJmfoAiAAl+WPF5rAAUwTH1WAjgNZlMOz9n9shK3pb6QK2GJFiA=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.14_1604645331942_0.41049295844688727"},"_hasShrinkwrap":false},"1.2.15":{"name":"base-repo","version":"1.2.15","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"8315a491d24cd952851a4a64327179cc62c002df","_id":"base-repo@1.2.15","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-x4xsNOMuOl+J2UQYtAL6+l5vAlY6RIbC/kXkYyv7K9oaPWgDI/BJ37q/8N4t67XBzQ8wCOcLzzeKqFRmQMXKFw==","shasum":"dbeba83db0ddbb89c75574999c2443418c981c6b","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.2.15.tgz","fileCount":39,"unpackedSize":460118,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp9uqCRA9TVsSAnZWagAAApYP/ApleZsTQub63qlmHW+I\nuoTxUZZhLdKI63LzQUNh9BnFovROxnPgQIOkyinzTcdc9r0iYt/2I2JWEV91\nJYIVIcoxzTyYx4b3tc3pdFLlpiAXTBewbjxlbS61/IOcCCT2QJny3cCOVe8p\nQsEufSVXGxP/OIpQugIfsMJ60/mfwnu8iBRcKbHKihrgcbM2TCJr3J6Jib1e\ndvpLsi6C5ubp9XkFGBigJeNZvy6zdHfU/2P6tm6gdOa+mO7bbANgzvNuOEFc\n6ISpuHJ3YZ9K8FPANr+V8nXfzK/36qSeEuK9DwZ9SOUZK1eIYFafaOfyoi9J\nJDkBq7wCUvi+hValJPpPJovTCf7IsG40h382xwFTMsQosROyz0sBVkj0RoGx\nu07KcYqmPBUdIchCLNu2XuPK8NQ0VNPJltjhMyF6/1Mdni90v6lIsmYNdS73\nHjdCp242+Ipay3ARVlmBmI6H+VOJ1FTSnEMX9Itjs05NO3mTH+q9srCIphvF\n7mfNCWSFWKIkkXghw5PBIdDoWRj9vGSbMPTkAklWOXTjULI1fRHi+CFDnKDn\nFgqUlUu6z5M+tIvP2ddwSC6tMirrC1QZy/rOhLelB30+y6GI7NCto0qgfKYf\njBgevaIpaHjYdpUKDZ3g8JqJoMVvbofW8jtiFh8ueMcQ0lEW6TyQF15Mqdmg\nFhER\r\n=0a2G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICjx1t6yPlaPABdk0q8Hws0RXUZb/ZqeGlp/IYp4CWkVAiBOYRlenD7UgL7PszIDniM5WNe5akur9G/vb7DDOewyGQ=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.2.15_1604836265849_0.3909298818085887"},"_hasShrinkwrap":false},"1.3.0":{"name":"base-repo","version":"1.3.0","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"e62732331afe107e18a5114d2fe0d1bb531dda1d","_id":"base-repo@1.3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7Sj1iLFpZZKxRphLsp9weJIDm76ws6Td1Rfw7GFImUp1gHE58i7hwV7XUeV0tmhr3Zv6WOdmAb+5zKMmBuW/bg==","shasum":"6033a8b30d3105ac029bd8a8d2af59a46a76a802","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.3.0.tgz","fileCount":39,"unpackedSize":460162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp9ypCRA9TVsSAnZWagAAJbkP/RYo5DNIzk278gf2lkQH\nsBIFYaYBNnUqySQML6ICoIJ9ToWUrEz/dnwb/hJt9k1KcfGSFQkgKJLXIfp7\nJwYH8ZH2CD9xKfuoQbRaVrQxkXozlosXV5BvIkJmKFrxWxxLn8r9T6a3q7Cn\nplPXZWvfsiGOJfp1ua+NR8eq/dZEFaQ/jH8swqbVKdLBIjrVqhTsQyB00UsM\n7rHnzDW+iTTL7v38AztxiAsS7Aueoc4gs8u0whOn+B3gDgC23cElnYvYjSmX\nL88ReWtXDxvPG55XVEq61dj2KFJMjuwOWDnphFri3s+HOciWiC1xIZCxkp29\nSOD/Y7p4irRg7sOYps47+dduQOC1ePkIvf/OjyksWLfnvl9KoUzfm2YQom4V\n8ae34xDsPtts485OM7dnY5nz6OjDtx8HtF3ka6Qojj+lZfm246Zt0oDVr1hX\new/nTS6jo1cJOB1FZSU0rVCzUPRLTw1j4HOL+BH5mrdpAH4IzCdek3jEx+Za\nEDORSEvdGtEkQKf/pmRQWz6+g2J/gf4Pr3FMsD8wOiKgbdUT88FeJGHt9Dja\n1ikWfvOWjgu44RbaJA6LaZ4ipamu3XnuO8dGlqeVnXdxKcTcGZ3W2nkrt6U2\nrN1wnSGe/V0pSg/ExgTjIPVFYKUICI1p+TDkLtHB/xwbZcKy9+pQj95KFR0d\nHjXZ\r\n=gbD3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEVECoNwqvjVhd6g1jT6Omv9lm5oOTozg5dDmxxs7Q68AiBaQDlS9lkRuFGj0YjyVipS/EQXxosobNqHtVENy2Z3OQ=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.3.0_1604836521466_0.22436686746467993"},"_hasShrinkwrap":false},"1.3.1":{"name":"base-repo","version":"1.3.1","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"f168569ee679aceadb63160b769c0a0a170fbe0f","_id":"base-repo@1.3.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-z8VFZ/ms7W1Ubk9QynSSxLhn0jhlkHEEIIp9fYAFHb0XTgWyfa+O3EVg4xeNyAuL7zfLKu73YaCiqysPFHvakA==","shasum":"d025ed93142fdd5cd93a9e9c29ef380615932f17","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.3.1.tgz","fileCount":39,"unpackedSize":460629,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqNBqCRA9TVsSAnZWagAA3HIP/09S5T2F5nHa0xd7yS9c\nWyp1lCS43NdHicws3mb1JP9Q68M3U5axcmZ3aK0ZkhdX0iSSom+/awcntoOw\nEZKr8e+dTklKoUWfTnV3uX46NWWEM787/Z9888i+yclGL2mCMKwDd1lJ2Bj+\nmmQiuVEaEftvSEldxEMY0Wpy5Ca85VDuhWFhkIc5cIvcK8bLGt1nGdvw68N9\npCUfgbrq3NXbVs6HPaSBLNQ2hznB6BSTC26kifsXdyTtuhPPWnQRak6doBeD\nUSlv5dsISdHCoNP1H6LA5Md1KpMYhWZc2EmUwZ7Z03puY+nwhYNJa+IlWs9p\n8wo8nT6A/Rc8DotVAIJqTNPPPZOpk5XmpHqZVkf3g2KnB5bH/e+3U06A/7jW\nWCd2MU1qdNHF7rNAqLEScRVoZy78MXRqWHUb5p7etwSqyIOCAnyiYFGf5q/H\niQlNH4nFZhV9eNONuv0yaQDd1m+ObVouMzmNHXCvNm5kOTZDhVikG+Q7ofjU\nxpULN6gTps4FieILl8G6Ms6/UDhrVFn4UXOxYOLcdMR8Qga995VFcvoZW2+0\nu+Vy2lZ6xpEogeZG8Mb7HnykEgjwtdj6H4plgEP5ScdGMTXSZ5AP16VzDKyD\n0CCnbasZcqX0hzWa0DtAn9bVCuJhIa+0kYPk1Hflo9+KmnEHa0yAm3S2qwXs\no5vo\r\n=vib0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBJM0iNFfbA22klfuWKJYuSqPuPzEPqor81jz0UUGRPoAiA2/RFVuLGquPFsUNIk3Gw/ufuWDqlrswP0cTPe85Ty0g=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.3.1_1604898921575_0.660378514934743"},"_hasShrinkwrap":false},"1.3.2":{"name":"base-repo","version":"1.3.2","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"521b63a40e214e605092615aabd9bd6e721080f6","_id":"base-repo@1.3.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AAy3aXLTM90ty4bM7LiUa1j6pgau4Ttk1Y8hyPkUgT2bFEHhg8U1WWmV212k9HYrMW+j0DUKJ8m5rN6ZyZ9KeA==","shasum":"1feba3fac1ca4e5c74ea22887a1e2acc1162305c","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.3.2.tgz","fileCount":39,"unpackedSize":460645,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqNEYCRA9TVsSAnZWagAAm3gP/1zaPz2I1MVJuvrA5DMk\ncZrjO5NLEOJSkbVPHXxlm4m8c61vMIw3HKZnXxoCyIc51tyw1bd26iwy41ab\nNCcvJpjnNu9qUvUrMRZCUjMGegNNgmeScowpHl2RErT3clJjUFpY7Tzw+3ya\noLwXXlSGIIr4mZMijzBdu5IMKBRGz4YgJGL1rZ/DB7ZhlqaMR8tckqyg1DIv\ntfeS8hId60zaSNQtPmzSN5dVxwr5rnWopX/HCOXW65PwB+F1RXTRKOgXbstU\neBGzwgMK4DLaRuxu047urLGWSSM9cl+vupO/Fqgt/INsWRDhPjF35wYHecjc\n1BwBTmoVRoo16Opsvm+ZlNG2tGxb+4GVuiB6jSVcYxvBZxigfKOAxk+L48nc\nwPr7zp9whvLjRumRjqAxCOH5EHFBdbjXFx4JhvI2kQVuvzUsYUR3sMH7aWeI\nom8KaUMFM5NorGpsUbCuqdvR+lYn1kLHPrmD22FBhDz/rZiAIyM+EK8kYTZu\nFyLekAlpz05rxAnp3cSCqPcE2Hk9swOvXE7RqKDha7CE+6HWXR+DtCjYpph8\nDmINbTRkAr0SyL8eyskjYkx4CMFk/ZzfVbeTMLlF4/8lZKQULz60rJsCM9A5\nJAh8NKB2GoliNKIOVGiRC+w+p3A8hlIMELKFAtsHQeprn1sGD25DVEZ+YHgD\na8mf\r\n=TkM+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSTgsWdkR+4620svfRbKAZrpHQAW9/p1Hf6l56XZFkLAIgIGCgnDdM+hxU4ZX8PcZGDfD7MwaQ8Yefo4mN2cFEDz0="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.3.2_1604899096437_0.7977517596746251"},"_hasShrinkwrap":false},"1.3.3":{"name":"base-repo","version":"1.3.3","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"2bf775ffd3be0f5387c38cb7e0830af842fec9df","_id":"base-repo@1.3.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-nR+9DaNKuuiBKrWFXMd84AFJu791PZ2eYkIThheFGTq9Yo7gJE2glnppT1stcpuMw8m6WDD8Jgodpgau1VOpyw==","shasum":"0f3905c5f35cadfc3f6ae3c68dde01c354819563","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.3.3.tgz","fileCount":39,"unpackedSize":460847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqSCiCRA9TVsSAnZWagAAoOEP/jdPF91mVIHxuSdZdT7V\nuJw6BG1KlDZo3AeS4wImZg4urhrYP+sYx++unS8C6rFcN586upNDxfKSmQEJ\nlTP/8IQyum+ISNE4n7dHY/2Da2jNyd3c3+1wLs4vCvdivnOnI6XkPwUG0kem\nisACzUo/Gne8R6TkYdzDoKZFU5TCZSV5DE74BgmFTOV2Jt3ojo9jL3we5qTl\nP2LCaQyhDe7j0T0Hton4LxAW8aqiqGE/HAfD89AlNkeoN1r7/V1yQFIWGOXh\nDNWVpAuSjA6f+r3d1KLOkgqnF+hrOK/AS0ROywBY4aFRvWY0qOI/BoVHv2lK\nzdu3vtCqqdLFGiSRgNjceygZk+dkEFlDT7F68oVqyJq62AWW6L7Hw8GRseWc\nj7a00KrREmCQUE2KbyY3D2WKrcz57X1lL7NXEbK5IfZlZSqi6UDUGqNFB6mm\nFhZN9gUFI5U+UtRAqN0FToNaZ3F65YHJQbourYeYADpMXPXZvP1bQmWeOlmj\n+xDFZZ9pzm91C6HdtDk4sDA0prAwYE1fYmx6euIw8sb9r7tccvnrtWrLmMXU\nV+hjS9gCWvm952yEfM+OJv/1FWVBodq6sNcUmFEhf5R4bQhOTeFU27qamJmY\nz3P7cD8KkrSWzyP1ZZqAcxgQInX4llixKM2jFwhR4Eid9fHcOQa42/4Jtr+l\nSLuI\r\n=xCOY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCd/XehGprifmganBxyl9EKzqqNmYG4NvY+q/4mHlQFeAIhAM3dkEpMnF9lmBAlm0QMBpRuuaVvKVYf8CduybdkzFXR"}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.3.3_1604919458170_0.22975595948727445"},"_hasShrinkwrap":false},"1.3.4":{"name":"base-repo","version":"1.3.4","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"4e6f2ab96627c9a85bedbf2b88c60e59a5333da9","_id":"base-repo@1.3.4","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-iQF0OWLELUiTK/G6YiBi0NbQvY6UC4+bZOSHy9HJF0qVe5Y2q1PwxjeKO1x+dXb2DMi1fGF1Xt4ibsKwkMPrSg==","shasum":"05dec4f4ba61bdf93769d3a39020ac70f89e02a2","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.3.4.tgz","fileCount":39,"unpackedSize":460851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqSELCRA9TVsSAnZWagAAIgwQAKPrmlVFawDnW0oCWsrI\n8UU2ufT8U6xHiFoCrcqH/O7u52DgxbuDbf6bCTulQz8bWMnL1nObCjZGve4s\nRW6jSZRcSoWldVuTxciTPSFFeIGEp1qg3wOn+UT5D9k66OjxPWlH3pr1TaO7\nqIcDaSWszY3Cx41CuaEBG6Vz5td+B8MWg0wWNj4z6969TgNRN7jp7mbw97bv\ns07XF/3WE/HziBA+f+pUxtLRiIA7AbEs8ba0oukttBXpQEG+Wg5e/Cv2KZ3G\nJ0XKuGp8LdF6noj4LQ3aJZi+k7zLQxuoTRuql1jPgh1A7RmU0mcFrHBP4fP8\nkYoi9lDQFhTdyqAJhVrQ2oL+aVLWE00j3D+V5N6AaDji+s1ybUemO5tB8jlk\nNvOC9gy7d1Ed3bvpz8Gud6fWt9eopOuBDBkQ1ZcTD3ULCM7oNWBvZDYTOMnm\nD4yuay0EHNGVdexTy1cHpydPQJmRMiKwYSKinEWlwiRzeyu8/O5AuAOtFm+7\niI/euZiskVK6E3o8L9BiZPoAxn1MmY0/ZKRqvubhUEExVBm+GE8hkno8c4v7\nQbFzVldIYXHNTOTXqgTumW6HUGDgZqbt02DFRYCXdmLguP9Q1S/7BScPlWKR\n/NeZ+WLC4XdK0AO6Gwy5bbM6DN6JDLAIpeyaB29Ll83bSRbcze0Ghse+NmSr\njLsq\r\n=f5JD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA2/PSzL6VYlTf2OMcXXiNP2lk/Q7a7+ArZp7XVPyCgnAiEA/pjTzt9FuuC4Kp6wlmMfIj5TrX1hNM4T06fPdxsv+pY="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.3.4_1604919562622_0.5891401368532463"},"_hasShrinkwrap":false},"1.3.5":{"name":"base-repo","version":"1.3.5","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"fa8739aca77f496d420fa82a4cd7f65b9023f4e2","_id":"base-repo@1.3.5","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UnS5qqVxRE7KK86m8JaZVZ95+BBDEG+FIp3C1WTCseSRCDxk5dI9Vl6cUlKlDPhPiPQiyG45Gt2TvPZkq4yLaQ==","shasum":"2c6a794728935aa2a2d4fe5ee10f80fd24bf898a","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.3.5.tgz","fileCount":39,"unpackedSize":457577,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxwybCRA9TVsSAnZWagAA4jUP/1N7cBZedYgEUs4ETYZa\n/38o7Abao1BBgEN12V3OLNKFI1lJzq0M4g+a//w8zWp6kpB/p8meUYORhxtJ\neq/upuxy6LZJMAbKlt3ftjx0Ial0vzv0aU0v+y5WonZfsBa04JvbFCBcl87c\n8kHVj4ddLPeJ95mb4ZOCASZ/psLMs9nGbOUTjdY/+WHf36a4mr5oQTS5wEsr\nORGl6HHPsMDW4Ewq5RDgzMonQ5xxhQm63Blz5bePA8RTRPxmNOtpaByONLrs\nRspfNM6fo4m6z1CKevh0CQXkfWbWmSow84EjeAIBzB1FfT44SHmX0KFeoCo7\nuk32jQ8Jqc1UWicCZRcxelNyC8xjCab7yAMNt+zAFBSHGwwjXDUweoNw8dOa\n3snZriIEB1M2dIbc0JCleOEmssTJy3B1bWvwNCkY+3eIPlBFcKwqJC+muiRL\njJonlTbpOHtS+czEpVsOzgNvNvu2nIAzEfIJ7dunROwjuFaMVoFQaNASD76+\nKX82WxWv6cxH15kJb+SLK5YvPNqQyl1TizKnZ6ks5abseiFA1jDR/EyflxoH\nOwPTJLb2xIYHYOMkGUk9KyeW8MCgUQrqye6/slEMgY4t6yOAN60nOIfjDrn4\n1nZB1c9jvvPboZOWGpsxAlKO9Rnwdh94+43aNF4t2Ib9WvNza7k3oz0JgDT6\n9wZF\r\n=AjXJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHz7ZCh8XKhXtUD4jHblVDUFV+0a7+MXsmHz1ePf1RI4AiEA0MaYZz76q4kncSKaRtdbHAODPVQ547jyvLcqPvteLjc="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.3.5_1606880410803_0.8451176881776867"},"_hasShrinkwrap":false},"1.3.6":{"name":"base-repo","version":"1.3.6","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"b5fb09836d7894117acc1e3ac4d5fafe943eb0b2","_id":"base-repo@1.3.6","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9T3mj9wTvrB7dR5nMee5I+krL4gykYMsAzIotDBvtMecAYTbf33jmMBSLDyNGSx7sjlojqK9hyCQ8cFGd7tU+Q==","shasum":"54888de801c47d179f16abd59ebc46c449b68f62","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.3.6.tgz","fileCount":39,"unpackedSize":458077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf00H8CRA9TVsSAnZWagAAfW0P/RC/Ydgf2T78cOc7Gpub\n+4PBWxJdOyi4yEF6U9Dh54Wzpl6IelWb6O64yQ83h/b/aMJEg3T5NTi1xauc\nIrH/D/OT7aTW1KjDL6lUO7a+DBH/n1PRLCHhAmqw3gcukABiCx4zHTKQ7fOv\nrOERuiL9CubzzOcCwi+Tna6lWLespe7zN3aqniZ7j///a8y85Sw1IkLXoFCn\nagMx2OaU0nXUUHSm07LpKVZAp9N04jMWl6QsKGr8isVNFXBQdWHiL86taAMX\near3V4+o4fnEaTrcl6XWrJSGE0xg/+thn6IOnMu2JOo5b1UvqYbuzIClFo9a\nzeQBZDjDvhjWhuqkntNSfxo40ZzMJ51PIZz+QyBI6ifjFLnixcpS5hITjamn\nOIvyP4LApCj2KXhA1Kt2TorODibYy3kjrc6S8yVxPo0y9VZeqM3BAznTYufL\n2zbs3FI6bKZEgheB0+C0KnruLC5v9M+yJHd++IoM4EK33zXjPzXnz+xd06CZ\nuCPI9exANR43LaaHpWdqePOIuGfcpfzrJ5zc0XtcwYYPKip+FVgeiX6yA3Wg\nUfncwsAGUp38lhRp0GS/oSkgFtjcsSMlUjZ0JJnDyLJCdUKezsw0qBceu1U9\nzFHm6OrQ/xloWFFzs3LstWoGOj5g66Qi8OR+TA9aPkkzmk0f0cEqoXEA46ZT\noJ9R\r\n=zyFX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFU3XePqGlku2HuAiHiRWJKpehcQWTXgRQMWs0qkIg8AAiBkwYknNRaqaqC+RmPIPE6RCjL34J2TK2nTwhBFPQY4Cg=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.3.6_1607680508289_0.8903674232034715"},"_hasShrinkwrap":false},"1.3.7":{"name":"base-repo","version":"1.3.7","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"1f4f5fac97ba5c101a8e7829529067be8a2afff6","_id":"base-repo@1.3.7","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Tdb9WlEgW60i23owIeegKbO7R+qWixiLuz853t9X5W+cOAbjoBA+y9s9Esv7uE+Z0iR2XIyy4fpyqecGhRW3xg==","shasum":"a3b066e6cb173cc65e9732873da4c6477264d04c","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.3.7.tgz","fileCount":39,"unpackedSize":458594,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf01eMCRA9TVsSAnZWagAAvJMP/3EHa89g2IE3A0JV1iWE\nkNcCFT+EXeB/5aoWel+dXJ/oLoHnI4VgEL9AocZ1HPMBjwZGusqlbJuJ7SHW\nvCtUmrYTLELbs8zVhlDwei+bRx15MVhY99IS/4/s6MZVvN1s+OCsnb3Cl621\nGqXHjWDh7aYfj/TiPnQsKMAcs0FyiMXZfNThTqKvqBiVgFv8hUmcErtaHm6c\nvIy/We/u3TEWaR0uAKm128ykcY+vOvS9/Yoe0XN0WwpbbsMEgBl/PqCbw/3s\nrHdVy7sRU1xLuHWVZ1FMmV9fE9evIiIb7z5lyik8mwbd5ufnczPItbNO03DM\nn3uPV35QMWXD0UlukDlQ4lYyP2cSTACC00y8sCbMiB2R2YtN5fFjQGm8Wt/l\nRjRKOz55k9GFnL/w5WIUXWnFgegSKsHo5Rd983TfZmh+w6dLqPn/a8SOCvBH\nDvyq0f1z18uYkq9Jq+zdp+kcC0Uc9cswASMkQ/PH4j3DuKCMhCBuVRI3YMHs\n1p/U3FrzOQLvFVrZyMEjZEkLZt10HHz/iH2N6UoUed19qUl0jXuJ+sfV8+0L\nBA7g503rOZ7LzjgrGvpI2yRUfb3TMGFNt7CRWxmO9LP+klBF8+kgascVD48j\nhWXwD4GjkTOgaWBm0Xraq2LnYidufFEVufk8U/KhU/UHiWlho/ikPrdPna3Z\nM9T+\r\n=jlhK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVcbFUTYJoj1JwZv2Kt0JxbYFANR5GPisC6IugNtRpMQIhAIyyb+QBhHleHQ6Ece9mwmLmLwV52JAfWO22BIkrsnuT"}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.3.7_1607686027865_0.3522852121996687"},"_hasShrinkwrap":false},"1.3.8":{"name":"base-repo","version":"1.3.8","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"99bc29f160aac41efe4488065131a96a4d3572fc","_id":"base-repo@1.3.8","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CR06yh8AehTHpmukl+ChFhmeWzWFoAkHhXB3xoQKfxfC+LwfvvFYlqa+LlMOyP0RJGAr/MazZ5Q8gbZUbwS65A==","shasum":"4a3c68317c255b8426cc52429d9093cc01ffb137","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.3.8.tgz","fileCount":39,"unpackedSize":457690,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1tAvCRA9TVsSAnZWagAAHVYP/AzM53FdSKD1hSf4M3nv\n5b1sAJiiu0bMDHqLL48QBJZBkBzsC+o2OQbqxbF4iVExAJo0s2DGt0iVhHFA\n1O+WRdqmMVl9vjMWIi3XNxdDYcSpsFyydHjgBcgBsjAI7M8LNfJqLIVBFEa/\n8MfVggVsoAJL946bPzc/FNzhVecm5aJe0s4HRLvD1IRZKLQCGU/3BsHOobv1\nvZiv1K/0W+TRL6B7L2BrWrcSu+sExt5OeX7UuwRWg6yFVo2xqxp2COagj6YW\nkKFX4h10ptj++mJPYTw/B0hoeNjNBLPfabrJfEZXgK01fwPfJ4TpTRGRSHln\nRIO9Tph74N8B6JpcB9h9NbcLDyarCS5FgcQET6gp807/QyJwfdQ3aQcTMlej\nb0xsH4MC4JJm8UnCGK/u1yBSUgsvSRwXMgoWK/baIJmFYJ/J1FHty/GNHhxf\nSVRLHbzVKM7Aa/qZ1u2nvu4SX+K41E7hWuvRt8mzJb/ECFtb60iYvZQiXn5d\nVA3wfIY+tAxPp8igCRswwFc2yodesXgjib81fRkKg1pfR0aDF5u0QrB3V9cm\n9DmC6nl4ZdtjY37yt2LHF36PZKiFXLdRmUAmuRvH1YHjv/02bzgeutISKrqB\nx0db7ybi+d7i5h1opSHw6ZPCUrKJJiZy2Qn7OsahgIKuftZW/LBVXt2Rux9c\nc7lu\r\n=ucfW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/i4hfA8vGrepvsJovQtAyOIdgQfwuw3VP1xm9MN46gQIgMsGJmwJ+zG10wJEHJNsZbTLGSEywTyNLyof8gHrWJGg="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.3.8_1607913519311_0.03919018544692565"},"_hasShrinkwrap":false},"1.3.10":{"name":"base-repo","version":"1.3.10","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"66469f1a4c34d167fcfbf272e7d1198f69419363","_id":"base-repo@1.3.10","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-lQHQC965XXaSVu3Z9iFO+3ndVWXrFWVuqKiSycTDiVk4iYkB8c4zAIX13/7XvOtZfnH+raVytNBT5MF1wWjNBQ==","shasum":"ee83c356bbcdffc5959c9c77b3d822e372b14520","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.3.10.tgz","fileCount":36,"unpackedSize":458007,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgM4YICRA9TVsSAnZWagAAJYIQAJtbSRK6jFYgTCywckSd\n8az5NdQDS/2hzK0hx67covjdjQFjGN87cSO5h0gFH5zAwMvjvI5Liyd+QKiD\nW+u3FtvFazRLK5/Rrper6QMchP4jq1t076iO+Gj4e4lRCkzqdwmYGkFttLmI\ndnPfuVtOIM6HyamIwPwy7XvXsujwLvT7OZHoHEyzhd+41nN7sqFLEbyYb5xJ\nDCWXyT6d6yIeIp9pLVsgyogjS94WOrq+B4FfNc+q5zsEaTu8HsfJV6oy4DYm\nHtXk59DkjnhnE+1xluBtjuV+ZrRSh139a0fqzo+hFku9FmELF0zsPLTGvYL7\n2qRTKOHIQgXdvkjkJsGOaNTntovc83ORDh9cis64+0VH0oStu+JQIViIpqz6\nWsxeMNH7pEF0vb9AKc8YhpInPYNRue/lOKwMVCtcWIN/ope9jiy1G85lFTa9\niBi5t+aqznWHtG7djr6xDQHiJ6BfslNZq5DWgDpFbx7ofW3NROu2ERIVZ5A1\n0JJtUcFhI2sK0B2ZUO8OJjZ3pwvOf2CXwRIN0XWRQ5bMSlSkUCMGF0AI83B9\nZAMmA7E5OwtZVsb+sSkQXF6Vayj0UBHzQyTthCOChUHdiV1f5dqyH6VvfCzf\nnzXe3ci/85Jy88eN4kQKfif4VC2rLvkScJHbH/WEHhDv/CobKIJjFaT64unN\nywty\r\n=resz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCucYvIdB3No1UNJvlsS8sMMLekV3oFE7wIYAbgtwjmKwIgBbgn39rRhLT/gxBLTjPMawOTg6nh/1N4exAUaqXYQPM="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.3.10_1613989384174_0.0646398235696084"},"_hasShrinkwrap":false},"1.3.11":{"name":"base-repo","version":"1.3.11","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4","ioredis":"^4.19.0","sequelize":"^5.22.3","sequelize-typescript":"^1.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"26.0.1","prettier":"^1.19.1","supertest":"^4.0.2","ts-jest":"26.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"ca14278b75986581995d81cdfe45ab5744b39a48","_id":"base-repo@1.3.11","_nodeVersion":"12.18.3","_npmVersion":"7.6.0","dist":{"integrity":"sha512-GmxGjpgm50jV5WhArz9joe7yGzrMfIazFD8kHOx38QnyCCDH2GWbXrPIRXfzQcXd50c4WETxuX8iKOjTcn8Niw==","shasum":"e9b651d548a0c5649a29b1ab2bc11332909ee353","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-1.3.11.tgz","fileCount":36,"unpackedSize":458001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUE+kCRA9TVsSAnZWagAABO8P/i37i4dJutS8fh/crfNi\nxpylpyUOfuBuz+i5Ik9bkJZw+GqO7AXxK7FzuULrwgNAzEvLYWqXDLbNQv6k\nSSpjzDcu6a2jXGzb8ftqVzyzNOqLs2lFhEDcCp0EChMR0gPv3KQ1EwcmV7MA\ndTxmhZqVGXkAbAXfpCr94bYCd41rr9I3Sz9CkJptJCBu/nPLmgtUg+nN3EHb\ni0vrczVb2ZC3VSda06arYYQESJW5FOtptmxqR5qXMQyQ6/ui4z0dC0ciraYZ\nJfSZ+YXufSfIOepboRfTSb7yaJiRwC7tO59WF4O+OukP8v11Jd8nTwdaORMT\n+mFEvSkgDVtaXpthS/C4nqOUtJai0dLZ47Vg7f27kVEg0R3VDFTqlnOJHWO2\np4znpdhHZDmQ9dDal+4/C3IjPWPkSBiut0zfiub0y6fA9Yw4nMpN2NqER7qt\nCnJP5rs47Xq0WNB0bcSA1+3bBhmAWd8HqZO+U8J+vJuzaTx0HD0QUbONG5C4\nTYsx7cWqsa7Tal+iC6+WWNfmMq4JYYtaX81wFw15sKQis7K3tarx2Rt5Zn8o\nPbkEtX6naYhc6lLVaRRVxysaN4s7iGW4eVLgY/26KJ73QQ+56daQa/tZVlNQ\nORNUWvr4utGe2VEcoijfjfRgIaON6BvDNPmCcALrdvHhpK0OCgWso1yNsgiX\nX/hy\r\n=QfhM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+pSa+uSf5kKl+gM+lXFW4qo6xCZuIV/SjeY2R1jyWFAIhAJ8+ceR6hrTJSFL61KSGryjICKm1uQ6XFeRPGafJ06S3"}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_1.3.11_1615876004080_0.2712546169862664"},"_hasShrinkwrap":false},"2.0.0-beta.0":{"name":"base-repo","version":"2.0.0-beta.0","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","readme":"<p align=\"center\">\n  <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a>\n</p>\n\n[travis-image]: https://api.travis-ci.org/nestjs/nest.svg?branch=master\n[travis-url]: https://travis-ci.org/nestjs/nest\n[linux-image]: https://img.shields.io/travis/nestjs/nest/master.svg?label=linux\n[linux-url]: https://travis-ci.org/nestjs/nest\n  \n  <p align=\"center\">A progressive <a href=\"http://nodejs.org\" target=\"blank\">Node.js</a> framework for building efficient and scalable server-side applications, heavily inspired by <a href=\"https://angular.io\" target=\"blank\">Angular</a>.</p>\n    <p align=\"center\">\n<a href=\"https://www.npmjs.com/~nestjscore\"><img src=\"https://img.shields.io/npm/v/@nestjs/core.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/~nestjscore\"><img src=\"https://img.shields.io/npm/l/@nestjs/core.svg\" alt=\"Package License\" /></a>\n<a href=\"https://www.npmjs.com/~nestjscore\"><img src=\"https://img.shields.io/npm/dm/@nestjs/core.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://travis-ci.org/nestjs/nest\"><img src=\"https://api.travis-ci.org/nestjs/nest.svg?branch=master\" alt=\"Travis\" /></a>\n<a href=\"https://travis-ci.org/nestjs/nest\"><img src=\"https://img.shields.io/travis/nestjs/nest/master.svg?label=linux\" alt=\"Linux\" /></a>\n<a href=\"https://coveralls.io/github/nestjs/nest?branch=master\"><img src=\"https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#5\" alt=\"Coverage\" /></a>\n<a href=\"https://gitter.im/nestjs/nestjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge\"><img src=\"https://badges.gitter.im/nestjs/nestjs.svg\" alt=\"Gitter\" /></a>\n<a href=\"https://opencollective.com/nest#backer\"><img src=\"https://opencollective.com/nest/backers/badge.svg\" alt=\"Backers on Open Collective\" /></a>\n<a href=\"https://opencollective.com/nest#sponsor\"><img src=\"https://opencollective.com/nest/sponsors/badge.svg\" alt=\"Sponsors on Open Collective\" /></a>\n  <a href=\"https://paypal.me/kamilmysliwiec\"><img src=\"https://img.shields.io/badge/Donate-PayPal-dc3d53.svg\"/></a>\n  <a href=\"https://twitter.com/nestframework\"><img src=\"https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow\"></a>\n</p>\n  <!--[![Backers on Open Collective](https://opencollective.com/nest/backers/badge.svg)](https://opencollective.com/nest#backer)\n  [![Sponsors on Open Collective](https://opencollective.com/nest/sponsors/badge.svg)](https://opencollective.com/nest#sponsor)-->\n\n## Description\n\n[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository.\n\n## Installation\n\n```bash\n$ npm install\n```\n\n## Running the app\n\n```bash\n# development\n$ npm run start\n\n# watch mode\n$ npm run start:dev\n\n# production mode\n$ npm run start:prod\n```\n\n## Test\n\n```bash\n# unit tests\n$ npm run test\n\n# e2e tests\n$ npm run test:e2e\n\n# test coverage\n$ npm run test:cov\n```\n\n## Support\n\nNest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).\n\n## Stay in touch\n\n- Author - [Kamil Myśliwiec](https://kamilmysliwiec.com)\n- Website - [https://nestjs.com](https://nestjs.com/)\n- Twitter - [@nestframework](https://twitter.com/nestframework)\n\n## License\n\n  Nest is [MIT licensed](LICENSE).\n","readmeFilename":"README.md","gitHead":"f495449babd09fae0614034e44da069ccc8b3f0f","_id":"base-repo@2.0.0-beta.0","_nodeVersion":"12.18.3","_npmVersion":"7.10.0","dist":{"integrity":"sha512-HycFJeqHEoH5y26t7SqUM0wE5imkNtt5bn2quBLZCNKY7nL4/abSLJGw4BFpfl+eddh9i3Rwd7FZ+L4PWSXKlA==","shasum":"8e6c4e4140afd48a40036c558a40c920d9d8ac70","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.0-beta.0.tgz","fileCount":44,"unpackedSize":511392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkUp/CRA9TVsSAnZWagAASUUQAIlga36pUUijADLynFCr\nuHlrkCcn5VdZu+ZPaz6Nr5SQqiUQzSg1RQ7xSLW13fD6sSP6oMv9UrN9F0tx\nTePohZFxTOlqJx1D/CLfFzk0TLadPbryfHf1XOQreUSm/TP7t3ULo+c1ZGnH\nRsutdoX4E+cvzBn8W7MPde8QlESkOmadZIady964Z7D71zg0LBs5vfL/igcV\nQSkBromEDEHcCrjinNwnOHOyNKmAXXvCl5ck3celkPISJhQPFNkSLhOzQbqn\nSGxRURujI3oa/gDiBQcsn45X0g935mYj4RiVrE8wX4UQjoZUwn4EaREWh81X\nWaGbb/SctOzJ7FWfP8yasc2N5G3QBn8J5+wKPui6Zhtp1KG4Gv9bjn+Jw55H\n8kAhWnae4lWGWA1bj5S6gT599iw4icv7AQ11S9Xo0jN5TOtB3T8bo54sCFpr\n/Fjt08OwMYiz0+IVhHwNks/jc6WY9uvDkkrUeN8qKOGuhUfW9l9hgLClE7gC\n8HDLlL9rRHPYZYEX2UyzeqYPS27nPQITp2aNYK43UWnA5KZcPCRUZ2dg8SlT\nzCP7/v5A/MkRwJ1DUmPihJmpwP790Mmk/DLqENKZNSbOBJeJcUZok27wSYFs\nwLc11kSQLhBct4n78CH6DSAiE7rgwAELXkCEo1Wwmzq31sZPRaro89SKrM6U\numR+\r\n=mYno\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGpLbAo1uLhGRH0lwxgMUWRscYpb1L1ks18B2NadCPJAAiEAkbramcnSAAH5eatstgsSf5NbA/7IAIoN0CnoccnoQLk="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.0-beta.0_1620134527350_0.8370078047818872"},"_hasShrinkwrap":false},"2.0.0-beta.1":{"name":"base-repo","version":"2.0.0-beta.1","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","readme":"<p align=\"center\">\n  <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a>\n</p>\n\n[travis-image]: https://api.travis-ci.org/nestjs/nest.svg?branch=master\n[travis-url]: https://travis-ci.org/nestjs/nest\n[linux-image]: https://img.shields.io/travis/nestjs/nest/master.svg?label=linux\n[linux-url]: https://travis-ci.org/nestjs/nest\n  \n  <p align=\"center\">A progressive <a href=\"http://nodejs.org\" target=\"blank\">Node.js</a> framework for building efficient and scalable server-side applications, heavily inspired by <a href=\"https://angular.io\" target=\"blank\">Angular</a>.</p>\n    <p align=\"center\">\n<a href=\"https://www.npmjs.com/~nestjscore\"><img src=\"https://img.shields.io/npm/v/@nestjs/core.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/~nestjscore\"><img src=\"https://img.shields.io/npm/l/@nestjs/core.svg\" alt=\"Package License\" /></a>\n<a href=\"https://www.npmjs.com/~nestjscore\"><img src=\"https://img.shields.io/npm/dm/@nestjs/core.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://travis-ci.org/nestjs/nest\"><img src=\"https://api.travis-ci.org/nestjs/nest.svg?branch=master\" alt=\"Travis\" /></a>\n<a href=\"https://travis-ci.org/nestjs/nest\"><img src=\"https://img.shields.io/travis/nestjs/nest/master.svg?label=linux\" alt=\"Linux\" /></a>\n<a href=\"https://coveralls.io/github/nestjs/nest?branch=master\"><img src=\"https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#5\" alt=\"Coverage\" /></a>\n<a href=\"https://gitter.im/nestjs/nestjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge\"><img src=\"https://badges.gitter.im/nestjs/nestjs.svg\" alt=\"Gitter\" /></a>\n<a href=\"https://opencollective.com/nest#backer\"><img src=\"https://opencollective.com/nest/backers/badge.svg\" alt=\"Backers on Open Collective\" /></a>\n<a href=\"https://opencollective.com/nest#sponsor\"><img src=\"https://opencollective.com/nest/sponsors/badge.svg\" alt=\"Sponsors on Open Collective\" /></a>\n  <a href=\"https://paypal.me/kamilmysliwiec\"><img src=\"https://img.shields.io/badge/Donate-PayPal-dc3d53.svg\"/></a>\n  <a href=\"https://twitter.com/nestframework\"><img src=\"https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow\"></a>\n</p>\n  <!--[![Backers on Open Collective](https://opencollective.com/nest/backers/badge.svg)](https://opencollective.com/nest#backer)\n  [![Sponsors on Open Collective](https://opencollective.com/nest/sponsors/badge.svg)](https://opencollective.com/nest#sponsor)-->\n\n## Description\n\n[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository.\n\n## Installation\n\n```bash\n$ npm install\n```\n\n## Running the app\n\n```bash\n# development\n$ npm run start\n\n# watch mode\n$ npm run start:dev\n\n# production mode\n$ npm run start:prod\n```\n\n## Test\n\n```bash\n# unit tests\n$ npm run test\n\n# e2e tests\n$ npm run test:e2e\n\n# test coverage\n$ npm run test:cov\n```\n\n## Support\n\nNest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).\n\n## Stay in touch\n\n- Author - [Kamil Myśliwiec](https://kamilmysliwiec.com)\n- Website - [https://nestjs.com](https://nestjs.com/)\n- Twitter - [@nestframework](https://twitter.com/nestframework)\n\n## License\n\n  Nest is [MIT licensed](LICENSE).\n","readmeFilename":"README.md","gitHead":"c1fd033a848bff1f2aa86c5ad372c0694189aac1","_id":"base-repo@2.0.0-beta.1","_nodeVersion":"12.18.3","_npmVersion":"7.10.0","dist":{"integrity":"sha512-FREswFILfOOi3MvYZMKpYMo3pbZJ3SMIMNkLfEjTcLtquCbBWIv1LvHQgRuB6G2pmy7OGNBCS7LIEhdPOuZGwA==","shasum":"790bc928e2742831f6fe56f8f221fd974cebac5c","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.0-beta.1.tgz","fileCount":44,"unpackedSize":486999,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmAxgCRA9TVsSAnZWagAAkuUP/3I+3Bjn6CJtpjj98gRO\nbOGrO2Outlv4LNjeKpCc8rBaIzLqkQxRXnVXdRLHa2JTLWk5bqhdqi/lzrRJ\npAM8VJIvfNIs67Ehv2OAWdqpoc4wnDJVx6HkqIouD/L9IsruM/XfR94PyTsZ\nTxZbTVQYDJ5llHKZ7RgrXFmmqXOEOQjrc20mIO1lNGCumDHG8hP40w0UjSga\nZiKYwElCBKlYQCP7FOSx0AtHfMtmlaHbzBMC9mqv4RKq+mJzaemdxwwFYUq5\npBofSygiN+/jRN6MQGZPvRibn41sz8xsqZ5QmGQwJC+OZtKXjtsSQjtHwfVl\ntlFIx8AOk0M+FsGYMwtIsVDa8MXF5MHPQs1prO24FKjoVA7MNhkYtZ8BDDTj\n0f3tZ4INfN6jiEbYMS96ZXdWD/WP/TdCKuR0/5cnrnw7NFlcnjziArZLdsaR\nUrDcsnlj0er/dgITa56eMlm/swVkAw5HksDr3SpxIaffmNinmL6+CBF1/X2h\nE7wTYnTunyyE4p/8xPTGAmHH57Qs+4Y7TO6WIG6u1Jw17cHbaVHuCgeemvq1\nZdwIXu5Qdal4wLux7qJ7Fg5Y2Ze8Is/JlPjV+9VDk1wdSEJt3ZxdkTyD10rp\noS4KGZ3L0kbr0YOrQZhR6jKaC34tXnWDSYS0qCrNZldlQHPOwW4uCXKbhIEI\nDWpw\r\n=PRo+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDK3sf96fNtqjJ12ON8nEWHfFj7762i5unPuKFnTCCidgIhAKXaZxi7skEqrrIjhLXWu19uB2opRCI4a8F10CNbeR6d"}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.0-beta.1_1620577375827_0.21450100259053562"},"_hasShrinkwrap":false},"2.0.0-beta.2":{"name":"base-repo","version":"2.0.0-beta.2","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0)\n\n## Installation\n\n```bash\n$ npm install base-repo sequelize@>6.6.2 sequelize-typescript@2.1.0\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure define all mode of sequelize at this level\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RepositoryModule.forRoot({\n      defaultTTL: 1000, // DEFINE TTL FOR ALL PROJECT\n      callbackGet: async ({ key }) => {\n        return AppModule.redisService.getClient().get(key) // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      },\n      callbackInvalidate: ({ key }) => { //\n        return AppModule.redisService.getClient().del(key) // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      },\n      callbackSet: async ({ key, value, ttl }) => {\n        return AppModule.redisService.getClient().set(key, value, 'EX', ttl) // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      }\n    }),\n   ...\n  ],\n})\n\nexport class AppModule {\n  static redisService: RedisService\n\n  constructor(redisService: RedisService) {\n    AppModule.redisService = redisService // DEFINE CACHE SERVICE THAT CAN CALLED AT REPOSITORY DEFINITION\n\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne\n\n#### `@Cache` API Options\n\n| Options                                               | Description                                                                    |\n| ----------------------------------------------------- | ------------------------------------------------------------------------------ |\n| `options.ttl`                                         | set TTL for this model, this will override ttl at module                       |\n| `options.caches`                                      | this is for set cache for find One                                             |\n| `options.caches[index][name] : string`                | this is the name for cache that will be used when use [Model.findOneCache](##) |\n| `options.caches[index][attributes]: string[]`         | this is for defining attributes that will be mapped at whereOptions            |\n| `options.caches[index][group] ?: string[]`            | this is for defining group query                                               |\n| `options.caches[index][havingAttributes] ?: string[]` | this is for defining having query                                              |\n| `options.caches[index][order] ?: string[]`            | this is for defining order query                                               |\n\n```typescript\nconst caches = [\n  {\n    name: 'byIsDeletedAndName', // this is name of cache key that will used for query\n    attributes: ['isDeleted', 'name'],\n    order: ['id', 'name'],\n  },\n  {\n    name: 'byType',\n    attributes: ['type'],\n  },\n] as const;\n\n@Cache({\n  caches: caches,\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<typeof caches> {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  caches: caches,\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<typeof caches> {}\n```\n\nthe Model need to extends `BaseModel` with first generic type is typeof `caches` that we define for cache\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  caches: caches,\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<typeof caches, DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheName, cacheOptions)`\n\n- `cacheName : string`\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\nconst caches = [\n  {\n    name: 'byIsDeletedAndName', // this is name of cache key that will used for query\n    attributes: ['isDeleted', 'name'],\n    order: ['id', 'name'],\n  },\n] as const;\n\n@Cache({\n  caches: caches,\n})\n@Table()\nexport class DmCourse extends BaseModel<typeof caches, DmCourseAtt, DmCreateAtt> {}\n\n...\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache('byIsDeletedAndName', {\n      where: {\n        isDeleted: false,\n        name: 'Math',\n        order: [\n          ['id', 'desc'],\n          ['name', 'asc']\n        ]\n      }\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                | Description                                                                       |\n| ---------------------- | --------------------------------------------------------------------------------- |\n| `cacheName`            | name that defined at model                                                        |\n| `cacheOptions.ttl`     | set TTL for this cache key, this will override ttl at module and model (Optional) |\n| `cacheOptions.isThrow` | will throw error when set `true` (Optional)                                       |\n| `cacheOptions.where`   | limited where from `FindOptions` sequelize-typescript                             |\n| `cacheOptions.group`   | limited group from `FindOptions` sequelize-typescript (Optional)                  |\n| `cacheOptions.having`  | limited having from `FindOptions` sequelize-typescript (Optional)                 |\n| `cacheOptions.order`   | limited order from `FindOptions` sequelize-typescript (Optional)                  |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n      isThrow: true,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                | Description                                                                       |\n| ---------------------- | --------------------------------------------------------------------------------- |\n| `id`                   | value of id                                                                       |\n| `cacheOptions.ttl`     | set TTL for this cache key, this will override ttl at module and model (Optional) |\n| `cacheOptions.isThrow` | will throw error when set `true`                                                  |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                       |\n| ------------------- | --------------------------------------------------------------------------------- |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional) |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n","readmeFilename":"README.md","gitHead":"b5abc837d1e05165709cba4c07b7b7647d381612","_id":"base-repo@2.0.0-beta.2","_nodeVersion":"12.18.3","_npmVersion":"7.10.0","dist":{"integrity":"sha512-wVMeknmoaiSQHDf9Bqxk+zwQ/rYetiEMkkxXfor4MJV1PL2Z0jAbgag0usEd55FsE38EFfxHYu232gamK6cKfQ==","shasum":"f1168aca63ce07a23df0a0f4606984c79ac58f21","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.0-beta.2.tgz","fileCount":44,"unpackedSize":491451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmCFjCRA9TVsSAnZWagAA89oQAJQC6lIr8v8h6SEU28sI\n6Ack71P96C1Sm8KkeBebf06RewvUbPwGcQfaofG8sa4uuDRBE1gwpbRkxpox\nXYcLhebv/pvdU8SgThYM0+nOoiN3DP6D2sGNav/HD9p/kUryxFelsDEAunMK\nzMpHDK6iW0B2RtWDj8jkBhCPzgX7iwRVuTiVnGVkstZvtB6Yjw1Eg1xu7PhY\n3VemCpU9ynsvLoeOQDGkE9IvF5jHs1qvm3oWvpdN/dMswPSGucoV3U7KIWiV\nNm6HOttSHV4EXhT15W9Ydi2ed0YEczJOxzIzMY8PgH9RtrArYCLlZek9w0j4\ny8R5zunoFIBGqgxE2Rbk0pGnfdLjC4HZI6MUgIHEU3KedEk4Hpfe3U5+Nidf\nd1fte6dM9bb2Uz4iFL64F7Ompz83QogSESAxPCXGobINPMWq+CYyyUx73wOt\nXgfpPOFwiTnQlshnAjnM06+XPF1lLFR6X9zg6GJaUIkP7Ff5SbeFny3lra4p\ns9JuEQyldHvgnGsvnc9LdXIVj47WhzGEZ8NRlcNDz/nQgIT4ogiLiAvAVuGi\nYdhL/gQ2C1vtGOmYnoAxEPWoRzSu+Y4il8U5Fbtvxl4QMyI/vDIqVBCHfudE\nXa+FYW3APy7mvBSOcE7i2TFi4/18kW6SjdSfaGa+9vNzZpYBL8RuFXcANRRC\nEEk9\r\n=eZfg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG+xAiuDk2dde8KyobNfNjxvUs3rWSII42SkOw0G2WHKAiAkALVlge03UM7ZWO1Pxem4PksuTYM2Kngqs++ivxqU8w=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.0-beta.2_1620582754605_0.5331914371517068"},"_hasShrinkwrap":false},"2.0.0-beta.4":{"name":"base-repo","version":"2.0.0-beta.4","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0)\n\n## Installation\n\n```bash\n$ npm install base-repo@beta sequelize@>6.6.2 sequelize-typescript@2.1.0\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure defined all model of sequelize at this level\nand\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RedisModule.register(cacheConfig() as RedisModuleOptions),\n\n    RepositoryModule.forRoot({\n      defaultTTL: 1000, // DEFINE TTL FOR ALL PROJECT\n      callbackGet: async ({ key }) => {\n        return AppModule.redisService.getClient().get(key) // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      },\n      callbackInvalidate: ({ key }) => { //\n        return AppModule.redisService.getClient().del(key) // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      },\n      callbackSet: async ({ key, value, ttl }) => {\n        return AppModule.redisService.getClient().set(key, value, 'EX', ttl) // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      }\n    }),\n\n    SequelizeModule.forRoot({\n      ...DBOptions,\n    }),\n   ...\n  ],\n})\n\nexport class AppModule {\n  static redisService: RedisService\n\n  constructor(redisService: RedisService) {\n    AppModule.redisService = redisService // DEFINE CACHE SERVICE THAT CAN CALLED AT REPOSITORY DEFINITION\n\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne\n\n#### `@Cache` API Options\n\n| Options                                                 | Description                                                                    |\n| ------------------------------------------------------- | ------------------------------------------------------------------------------ |\n| `options.ttl`                                           | set TTL for this model, this will override ttl at module (Optional)            |\n| `options.caches`                                        | this is for set cache for find One                                             |\n| `options.caches[keyName] : string`                      | this is the name for cache that will be used when use [Model.findOneCache](##) |\n| `options.caches[keyName][attributes]: string[]`         | this is for defining attributes that will be mapped at whereOptions            |\n| `options.caches[keyName][group] ?: string[]`            | this is for defining group query                                               |\n| `options.caches[keyName][havingAttributes] ?: string[]` | this is for defining having query                                              |\n| `options.caches[keyName][order] ?: string[]`            | this is for defining order query                                               |\n\n```typescript\nconst caches = {\n  byIsDeletedAndName: {\n    attributes: ['isDeleted', 'name'],\n    order: ['id', 'name'],\n  },\n  byType: {\n    attributes: ['type'],\n  },\n} as const; // as  const is required, this for attributes recommend when using it;\n@Cache({\n  caches: caches,\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<typeof caches> {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  caches: caches,\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<typeof caches> {}\n```\n\nthe Model need to extends `BaseModel` with first generic type is typeof `caches` that we define for cache\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  caches: caches,\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<typeof caches, DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheName, cacheOptions)`\n\n- `cacheName : string`\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\n// file: DmCourse.ts\nconst caches = {\n  byIsDeletedAndName: {\n    attributes: ['isDeleted', 'name'],\n    order: ['id', 'name'],\n  }\n} as const\n\n@Cache({\n  caches: caches,\n})\n@Table()\nexport class DmCourse extends BaseModel<typeof caches, DmCourseAtt, DmCreateAtt> {}\n\n...\n\n// file: Course.controller.ts\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache('byIsDeletedAndName', {\n      where: {\n        isDeleted: false,\n        name: 'Math',\n        order: [\n          ['id', 'desc'],\n          ['name', 'asc']\n        ]\n      }\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                | Description                                                                       |\n| ---------------------- | --------------------------------------------------------------------------------- |\n| `cacheName`            | name that defined at model                                                        |\n| `cacheOptions.ttl`     | set TTL for this cache key, this will override ttl at module and model (Optional) |\n| `cacheOptions.isThrow` | will throw error when set `true` (Optional)                                       |\n| `cacheOptions.where`   | limited where from `FindOptions` sequelize-typescript                             |\n| `cacheOptions.group`   | limited group from `FindOptions` sequelize-typescript (Optional)                  |\n| `cacheOptions.having`  | limited having from `FindOptions` sequelize-typescript (Optional)                 |\n| `cacheOptions.order`   | limited order from `FindOptions` sequelize-typescript (Optional)                  |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n      isThrow: true,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                | Description                                                                       |\n| ---------------------- | --------------------------------------------------------------------------------- |\n| `id`                   | value of id                                                                       |\n| `cacheOptions.ttl`     | set TTL for this cache key, this will override ttl at module and model (Optional) |\n| `cacheOptions.isThrow` | will throw error when set `true`                                                  |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                       |\n| ------------------- | --------------------------------------------------------------------------------- |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional) |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n","readmeFilename":"README.md","gitHead":"69ac55fb3845484a8e662f4120db31e12e3c8075","_id":"base-repo@2.0.0-beta.4","_nodeVersion":"12.18.3","_npmVersion":"7.10.0","dist":{"integrity":"sha512-S3lkvLo9iX5y/F8Drus2uY7ACyxIEfttHo8KrWIRf3jIhNiWbacHlUHd4QZD9w4mH0tv3WOe8kzjv3L30jB5MQ==","shasum":"82cf1e409a845c9a9f3dbfb9b2726c0b38096c2f","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.0-beta.4.tgz","fileCount":44,"unpackedSize":492200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnPUSCRA9TVsSAnZWagAAkywP/jHjj1ynnwTcQBiQJJGy\nPIbfrwFThW0iJ2Wa9pw5KgeYf+0OEo9Nr07Gnx12h9b7vCjPrvA6Ct/biT3T\nfSvB8h2DQwCU5w8ZORrUByQNPsCdQqvMuRPpLx3K5C8l4BkL+60pweWtMbDA\nYAWKKUp+wADaDpvSZw9JDpKbkcAF5HQnUjSuH3GgYXuiRl8iKx1tHwnLYyL9\nrJf7+AFN0xPgY+cohdmSL1yC/CgJvdCKZ6ZDEoiU1XPuvLrbryq8lygl6MA5\n3cR3xvJHYIfTF4vXwCSzD3171IDD9suaPhe2HunfWeDyRP9jy4PiZD89e9M+\nxVBUMZgR01tVLAAspp19GUUZcLUB4SSlYDIB7AWpvHVUkZRs+XHSUFKB+4/g\nA6jAQE84r6VzCLjVCLAFzdSogJK1l2E4WQQ8Wpt/XBiFuBnQdcLFOEB3Dqd4\n6HYuUO0TiJqtHRDyQ9q9wk5pP+FSrGussGQoV4jIk094IPPlTDfqBFJJUWqD\nvMfJxEcvQYRPA2w5L8gwe+jkl2Qdhk89XWtjcEa24BxE3Xy75jziZ9OpSCtY\nl/2z+Y+6ARvfGKP+hpF9aS8CE0+xjH/l2EbWq+zml9xDywx3S9KWip4rMzYT\nP+3JG59SC0kXEt4W5eOc30NdHmZ+j/iJ5fsbRYgfDeEHmWHiwfAghySnOKjt\nog3A\r\n=m1eV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE4PzOYIGhekbWzkF2Y6cqUNmN/vj/HKMtvSx47tZc0pAiEA91fhDKI28r7yQCdxDvy49lnav8eDqAy9CXfBZbJC6tI="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.0-beta.4_1620899090112_0.7013209784329197"},"_hasShrinkwrap":false},"2.0.0-beta.5":{"name":"base-repo","version":"2.0.0-beta.5","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0)\n\n## Installation\n\n```bash\n$ npm install base-repo@beta sequelize@>6.6.2 sequelize-typescript@2.1.0\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure defined all model of sequelize at this level\nand\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RedisModule.register(cacheConfig() as RedisModuleOptions),\n\n    RepositoryModule.forRoot({\n      defaultTTL: 1000, // DEFINE TTL FOR ALL PROJECT\n      callbackGet: async ({ key }) => {\n        return AppModule.redisService.getClient().get(key) // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      },\n      callbackInvalidate: ({ key }) => { //\n        return AppModule.redisService.getClient().del(key) // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      },\n      callbackSet: async ({ key, value, ttl }) => {\n        return AppModule.redisService.getClient().set(key, value, 'EX', ttl) // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      }\n      callbackGetKey: async ({ keyPattern }) => {\n        return AppModule.redisService.getClient().keys(keyPattern); // TO FIND KEYS BY PATTERN\n      },\n    }),\n\n    SequelizeModule.forRoot({\n      ...DBOptions,\n    }),\n   ...\n  ],\n})\n\nexport class AppModule {\n  static redisService: RedisService\n\n  constructor(redisService: RedisService) {\n    AppModule.redisService = redisService // DEFINE CACHE SERVICE THAT CAN CALLED AT REPOSITORY DEFINITION\n\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne and automatically invalidate findOneCache/findByPkCache\n\n#### `@Cache` API Options\n\n| Options       | Description                                                         |\n| ------------- | ------------------------------------------------------------------- |\n| `options.ttl` | set TTL for this model, this will override ttl at module (Optional) |\n\n```typescript\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\nthe Model need to extends `BaseModel`\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheOptions)`\n\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\n// file: DmCourse.ts\n\n@Cache() //default ttl module\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n\n...\n\n// file: Course.controller.ts\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache({\n      where: {\n        isDeleted: false,\n        name: 'Math',\n      }\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `id`                         | value of id                                                                                                              |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                       |\n| ------------------- | --------------------------------------------------------------------------------- |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional) |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n- [Email](fauzifadhi@gmail.com)\n","readmeFilename":"README.md","gitHead":"13e1cbd5086d25a738c70edd5046fcc0c414110f","_id":"base-repo@2.0.0-beta.5","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-tdodB2JI9gnR5r9y9D0GzZbdLwcasojIeqwJxUQ7vHju4Nwv1gwuBcVN000mBOWTaHRgAb0mxupzlpMgOQCZlA==","shasum":"155b243223d5ceb43c528260d67bdf41cb44c87a","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.0-beta.5.tgz","fileCount":44,"unpackedSize":484954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIKuCCRA9TVsSAnZWagAApTgP/0K4+4OuEgPRuD9m62mE\nhMprtSD5LH5IgiY7R72Y8bU5YK7W73ejEegI2pPWSqrJuV4pNrOWM9B/EnoZ\n2PxoVwGa65Zqi06Dn8mp6oH9JNQhln2j2D6GhUB50chK4L6krnoPVbhDIRzU\n8Y+DARsOP0dC0bedFnMopvta4ZxOZsBF/+3We6A5/br3fgHfBQRwN0Lp5JkU\nBLocRjukYyPvjrUs9yLArkq/k1iiv8OKoQPXGwSWyfqVR6ZnNhq75Ip/iMc5\nELhVti+9PoBMqHGQ03iKMp0+p7lvcnOWvupyVkDqXi8IA2eNKohtTUiaC2zV\nDVpYAGjV//f9V7rLYzTsXykzyG45BnJTS8nmH1w2dATCMgf+eCQufVY47jbX\n7kzYGwkFo5z2HbcY63JbWYmEQz/b4Ein/GytDgQmqi/PtoRNYLlum6l5SRLT\nIoXeYl3o/n8QLlCnASs4reJaYEnk6DYeXRZ+TdkFfhtlviPl3/J8SyrDiusD\nqefdwVlnfsCahpDdVVZ3q4tt6vr9hY4ng0PqMgZFJl+HUQbFedr3cn/pl5Ye\nmV+A47DWMC2zSaskql8h2t93xHBR+g5PaVyd5wr6GmT9cIFPnj10rBhuOIzx\nP8rE8h+ZxAgA9U/YiCTR1O3Iw8vpl85BJ/dRHAxGgPyMjUxj5YADiO6l/wmg\nGWFH\r\n=IQXJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXDEBRyBcexgaQ3Ep3P7JwatlbWGoovLShvoq9MXp9zwIhAMk971MpcbebZnfG7XiIB9vUsK986z6NjGKEn7Y4Ryak"}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.0-beta.5_1629531009845_0.3428830023611331"},"_hasShrinkwrap":false},"2.0.0-beta.6":{"name":"base-repo","version":"2.0.0-beta.6","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0)\n\n## Installation\n\n```bash\n$ npm install base-repo@beta sequelize@>6.6.2 sequelize-typescript@2.1.0\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure defined all model of sequelize at this level\nand\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RedisModule.register(cacheConfig() as RedisModuleOptions),\n\n    RepositoryModule.forRoot({\n      defaultTTL: 1000, // DEFINE TTL FOR ALL PROJECT\n      callbackGet: async ({ key }) => {\n        return AppModule.redisService.getClient().get(key) // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      },\n      callbackInvalidate: ({ key }) => { //\n        return AppModule.redisService.getClient().del(key) // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      },\n      callbackSet: async ({ key, value, ttl }) => {\n        return AppModule.redisService.getClient().set(key, value, 'EX', ttl) // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      }\n      callbackGetKey: async ({ keyPattern }) => {\n        return AppModule.redisService.getClient().keys(keyPattern); // TO FIND KEYS BY PATTERN\n      },\n    }),\n\n    SequelizeModule.forRoot({\n      ...DBOptions,\n    }),\n   ...\n  ],\n})\n\nexport class AppModule {\n  static redisService: RedisService\n\n  constructor(redisService: RedisService) {\n    AppModule.redisService = redisService // DEFINE CACHE SERVICE THAT CAN CALLED AT REPOSITORY DEFINITION\n\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne and automatically invalidate findOneCache/findByPkCache\n\n#### `@Cache` API Options\n\n| Options       | Description                                                         |\n| ------------- | ------------------------------------------------------------------- |\n| `options.ttl` | set TTL for this model, this will override ttl at module (Optional) |\n\n```typescript\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\nthe Model need to extends `BaseModel`\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheOptions)`\n\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\n// file: DmCourse.ts\n\n@Cache() //default ttl module\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n\n...\n\n// file: Course.controller.ts\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache({\n      where: {\n        isDeleted: false,\n        name: 'Math',\n      }\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `id`                         | value of id                                                                                                              |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                       |\n| ------------------- | --------------------------------------------------------------------------------- |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional) |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n- [Email](fauzifadhi@gmail.com)\n","readmeFilename":"README.md","gitHead":"f3e39b4479f68c9e763d1176970d7852368cb509","_id":"base-repo@2.0.0-beta.6","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-Sp9Rtz3naXYIe9sEcMjayI690df4XRtu3ImhjAJEYmPHIsQeLka8iuQgfgYDZdSF25jBxptfHZ5pVK/2KRhpUw==","shasum":"522b340868693a79d68e767b96a79e6434424e2d","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.0-beta.6.tgz","fileCount":44,"unpackedSize":485081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIKy5CRA9TVsSAnZWagAAy5oP/iu8+xQA/AmPGcnLF82E\nhyXREyumnw5hINJif8H2BRZypDrPeXAm0Xc6IN8B0WEwMSRG+no4nK6mqkyc\nQnJ3+lK1TyEgNgBASbxtSKze+OoLt28qK/DubSmDNQz3jdSL3V7fWn0GOMUN\nxiEtts0l2YBV4v4Es37pKKhvc06XyJ8FjjRsNHo7N7qNarvnxKpeL7TVSlG8\nU2GXw/Kj3zg+SdkH7KvUNqjZQZdPajGeU8CEnO/UZFA+CO2j4uKsE+d0j2EK\nYRcdOUI9YR5qrahLi0pEGVR1WXVryFd4ZwKzGKHNPachhaYRrTmJNcTgCtpf\nXy5m3SRmzRvgygDKpipp/CJsez1toek4SyxqR+ICWfuZGPiBgoelZGeZEszL\nM2Aqtsp6Nc4x8DYfbLCHgkVA5V4L8NcRVd/1x7JSd7qa4XtWfWqUwhjrbyQy\n4SFSRs2Kggp6v9d1jUX0weZmTL2yNYCzyKlRkynOXN8tTWT0JU7wXmX2UL/N\nkgSwkU4iJzjKpMXBPXM577mMQTweWkrPlHOBzo6em5SK4A3IeNf6QRLnKAHu\n5P3e/eQDcOv51g1+1fY5EjI1LL0A6v8YlLZrerZWszcUW5QqqiELV/Xaf/Me\nuDBi2T5oMkB5sagvKzlFirSIWAq6miJZm0xXqLcPH7yOCsWeozKrlbNbqo8e\nJdeL\r\n=Hg5g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJFfQwFqjbOHKx1rE/SH6pQVs+14Ynp+olSN4Q0c6AjgIgC4yO0YLyMD4gsX+Jw8KD0y43VNH23HYakbf9g7XXkmQ="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.0-beta.6_1629531320979_0.0042094712359652675"},"_hasShrinkwrap":false},"2.0.3":{"name":"base-repo","version":"2.0.3","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"ef10589c25f26ca7e7095e3d17548e234064439f","_id":"base-repo@2.0.3","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-esrnYUi+NEMn3w1yloyQixwn4fuZJXWgP1xVy2Ej+YlXrF32lmyxhGgp0USL3yIQOTJhgyyEOQluqRZieGhAug==","shasum":"a9d4cae3ee3a2257a5183f90dcc290aa7feddc89","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.3.tgz","fileCount":44,"unpackedSize":485074,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIMWkCRA9TVsSAnZWagAAJywP/2aYGdUQhWWLPaGKQRlJ\nXR412/dMPgW+SFR2xfiHvryVxshkBnaZVh3yHqIPFXqx1xfh53ST3z79yhBg\nfEIzt4lo9PKUetYi4XwvTg3ndwWCM6eepCNRzRzD7J6Go/mZ6CyY9IObZkI4\nKqk66YkcOXROX2uxMLdAZGleFDnUGeTiO3rahIGqM2+av6aV0h67NxFujD8M\nOE0XP49krctRFYhFTkyCOQIaRrNjvg4LWyM525qrOqZx9rjDAiw57f1leSJQ\njCFPzP0xvC9BJAX0+pDHSbSvILB2+HAluh7Z1ZCP3qXWy3b7tTjka54VLf0R\n9cqtiOWExvHTINvivGEJUZHrkCDe+WEnt3ZVSPmFFgaov9zefFxjVWA6kdqO\nDjT9CHlG7ay5WaR3D2Z10s8d/pO9giojKUJEM7uIuSJuE0VT/ECI3zCzcuse\n2cnPMC9mGqnof3+7RkI4MpKVE7xt6LkAFNUUeOnimTbFALH00YBu6f56OxID\nU1jhXvkjb/nCxJEQ9iBVjy7At0JnSZasG90uTvumyNsqqv1T9eFbZI+4NDUG\nmYqSYilNyD2XfxdQ3V1Uui9A8IPv+xC5eQ1XUTIYuXTwlWQ7F+hcGy9JgRNs\nbJijv5iAeOifLqvJD7XPfStJZYQZ78ej9/5ifooBqpHDCR0ImfSV2sG9AlLx\nqzZC\r\n=LsWN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAEPxuUtQ/X32JWCa1M9bR4CzBfnL1E5Y10sh4HWUWKRAiAtjdWwJKfF80a5t7Vmhlr/Aga1RObNwsi8CXMMgQGBhw=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.3_1629537700729_0.30880294790995944"},"_hasShrinkwrap":false},"2.0.4":{"name":"base-repo","version":"2.0.4","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"4a518085b7eddbaa00df962cac7b7809976235fc","_id":"base-repo@2.0.4","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-O5m/POMgcjw31JDYmq+5/FPL6gRXWxokLq/QqzKks8D3BTd3Gi5vn+i+zL9XVDwCBxfLuVPpbJyw2p/kUNsRPw==","shasum":"e99434431987b33bdc3defab56a77fd7f5f3b5af","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.4.tgz","fileCount":44,"unpackedSize":485311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIgxmCRA9TVsSAnZWagAABRIQAIMR7mkwvH06P9Zi+Yyk\nyXfYmhQVlJWdmU+KOqy1PnocyoxqN83Lx6uxhxe7/w0g7UDbO/OyegRXCpsd\nQ4BZUVkwmV1ImIqOp05T0vO/S7gv1EmPv7UekGXgKgKMzdHRC3Rc+8ovbrtl\n7tUwlJ8qRHFh49GBBFYn/VTSGUiEHm95cifIwXAAKsOF4zw7DLigcLiKqi8R\nn/YZgGn6Ep5+g1gdeVpVUitsPTZ+zvuiKnalQb2XZKRbfKkXjbtRjDpRl1+C\n/HR7Iq+2rvtTEZz9w3cZ5wpWSURZ4LTu0TO5Cb3HsKxPYtPuVQupwaVYLR4k\nEQQzfeQpnoo7BTsGulDH7f9N0nAljwuraArkKGe6vfUXmLwd7ZUJTMDH28Ap\nbhSlwAHGYM/BAoecweB2AqQgJsZsm9WlIqo9N3dYG0InKXmlE2zxqnIGuKz3\nS3sjkbV+E6KMLxkU/VCxKp9Tze0ahaogT7IsOe+w0bqmbd//gUTeIVTCnyO1\nVsbxJ/SWVt6AkiMvK3lrndjq1LCaYqBZS+ug4sR7ppqMuPnieNyKKi35Ia4z\n80Cw4yjnsuRzyBzYazCmecypb1niQ8uP3uBvv7apyHcGYdFBuO9JgP6RRwUQ\nOS1tuCmCWFbqnN74QrUNIjT4fNQaUvjisYuYlClTeFfCPyDiMUEl2Ejc1Vhi\nZ7a4\r\n=2vph\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFYEfefW41yhT4geI5qrkYiGmyss7xqm09DWZGQTNLg8AiEA0koSdLC580uxSdlkDc9SRapKop7m5/rpWVtnGyr3EsM="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.4_1629621350251_0.8195771966750582"},"_hasShrinkwrap":false},"2.0.5":{"name":"base-repo","version":"2.0.5","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"86532c80294ff3549e4d5bbd1547f2cd9290cbf2","_id":"base-repo@2.0.5","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-NRxz5daVewc3NSCo+yFm1ENVRQNeexdQbTaAGlKLdLIdPbpOlrknHwc1TGvL15t4HE/BLAzSddVqPY1l3PLyuQ==","shasum":"1fd3899cb371d698dee1e7f818c761f522ae4ba6","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.5.tgz","fileCount":44,"unpackedSize":485182,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIlkuCRA9TVsSAnZWagAAUgMQAJEW8J5d0XvYC9zLtcaO\nY+KXtbCJz5bWxN17O/UC7XdwsEnxPSAcaBXR+d8q9pJFY2pOeuh8sddxVT3k\nbuxa9xi6ybizg3BjAii8uIdZcZgZc/9uaBXlU0S7q/A0kjqgV8oSiQ5Sxomp\n2CkuphAFowmXfqHMZEtRQrfySZw9BZc5vUMSLnRSBCCt84LZCNhZJw4dNUtw\ntC/0Vaye+8iMmXudsKyjAq7GdDsONfmTsbE/+NdBUeDKbeKt/W63aOxc5Zg8\n3ZvDkmNgkbCfntvrPHYWOwAx7xBSc+hVjRCsPOBO9gfPLhhjYUSCPI6h5Yuv\nI9McMyKtKeGoXUx8XNmHQ8QaBGkaWHPuQmbJqxx1+IjYyQLLPKIGi/kG6zRa\nvm97qRas6YW9Rrny3GR7VXHs4KGOGMOBLNogHQmPaeCRMcltBUYW1B9Z0SN9\nUKdy+mMo0Q6r1BU8RNR6Mrce7uXR/PNROd8KvQwOhbhgDeItxzCdJftAz3qp\nYue00V+pUD5jHlF7ZYh1gET+TN5RW5OyfULR4cprK8ANNigayoxVO0xAUvzN\nyO4ulivHzkayDnd7D9fmZjZ677+RAsbMkib01wLM+ovArsohYPbjmP+FbxsY\nih8EqSSxY165AMEzTF0nX00dksDRE28DkRQM5aLr7vYJhxUPeeXvqaX5Tecl\nk2C+\r\n=hprT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+jZUQLf/Nhejdfh422W7JUo+aE6BIclYDygHk2a3+CwIgaAatr2azNR3xT8WNAuR6KYZWb2kq1pRVIobpvkBTO3Y="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.5_1629641005917_0.17119377453819107"},"_hasShrinkwrap":false},"2.0.6":{"name":"base-repo","version":"2.0.6","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"4c696de62737d5939b70d590a2f3d0d1f30e713c","_id":"base-repo@2.0.6","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-F9QB139YLvndFb9Lo1/yzVg40dJnmlzMrJs4z36zgYodc4N5oYRfdkyncbGFX8sXAHtFwHf5n7h+kUUrT0RTTA==","shasum":"c35ffd50d05a94f0b51af91529cd474b5357d372","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.6.tgz","fileCount":44,"unpackedSize":485212,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIlnTCRA9TVsSAnZWagAAU3UP+wVnteicY2q4qf5q7wCQ\nFA7jZea2Nb7rpLE4zP5fzUGLIrXpLuva7WM+ud2pmAKrWfftuG+nasB4Ymne\nR0R6bxgSnV2jJCXKfo4cpQm06SaOHIjkcsnqR0PBrWJ+keFTyZWqdmO+6eUz\nKQy4k6VnTRFoWnfMu0wakiV5fR4mUonw56vXqlTqTAB8yAo8pfR4+Qt8s3V1\nY5pCfu7gK96Dm8frTmxfhOjh09v2q9Z1b8RtlT4ub0e73+ccCkbWQPsbB+uA\nyM/AtP3gYxhyQDgxJovz+J8mL5ks2mpXENEQ9zAGJ0QDkJdMMW/1ypOknwWt\nRefQ0JlQZOLkqi3hjIB747Z2Y9Bf+ToYUJpjNwrUsFb3XrNYBgNbUFS4gy2G\nrahylPrLUcih4ocXr/osxtoRq63ozhXCluT4Jf2CbEZw0nR7sOVRCsniDnWu\nZPCl/M80H3LCbkmWXvddi6VaXsdyrIzqx9d/0yq6gfyVqWUcxEYDPePtwIHr\n5RWjMM9wQABenYt4MWQv9L90LX+Z0rs23UqSZEmi2lhydsEfwaMcVREfr9YB\ngdqe1nSbuC2uktF9Qwzk0Vm6x2bSD5DEAzVcuQnX2zzsFVa06D0dGa2pRiaH\nwsapdxaxubIybg3RI4vliXNJ6xd5EpEDRkOe1t7ZR/aysWocN34dvruW8gLf\nIfOm\r\n=nlXV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0m62GCIDBSvru+GDSvpkUZ8E0uwwD1PMpa3zhnj4hTQIhAJSRwTdKngfmX/gkgvrW/3LjLMD9DJ8T9yCJbF7tkP80"}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.6_1629641171715_0.6997178321605082"},"_hasShrinkwrap":false},"2.0.7":{"name":"base-repo","version":"2.0.7","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"89bfd5016debb4dca78ca72741df2710624feb2a","_id":"base-repo@2.0.7","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-2E1CzSGKTqMFMm6okwzOdiYrGuBVv5X29LCI/rEOhQrifAltvifFqyWvbT2HL1yN82eshrBaHYBBsGw1z2JaqA==","shasum":"83fe5846c8c65b57d705ab4890f8f2231d1c77e6","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.7.tgz","fileCount":44,"unpackedSize":484982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIlpyCRA9TVsSAnZWagAAyN8P/26QmzPRxZOjqBKarT9f\n/8RXYWEj9MFKslDrkShx7SWyJ7ZHbW9wAZxEQeQI0axglZWQJfOrAEK23hfE\nDQF94ZIR+VYLHSsnyTnMzHJHz4HADw12Y32Jv7iSsODd52TG9/tc7+qGJa2e\nAUfU+CtJ1nvTA0pxq4ikCRHwotRnrfKTqCzUa8ZDefocYGNOZ8BAUqg5m8Bn\nf63xuNXInBwQ0t858gL5L6Olm/dnD6jMCfk5J4eXWk3JflOpWLmjMkAdqs7Y\nhHBIVwIoketnpsNjCyB4r1ktyVL+KtpLUDyfK0C97BeQMIwUMP5+1Jv4wMVe\nmquYyJakfWmZoDgUeXSmRwINMLZ/e1eGzFsadu5KiDG9wpm0pV1qrDBHAJzb\nTEhwfpPSP3X5vK/HP1uYGfqFNyjyjstHEPDjFJl0Tg9MpIYwl1XQFeAqK12t\nhz0PdDTloZk1o/rUAmtul8io9oIhaQUhFB9gz4mIi3oEfnY4PqIQwndWtK7w\ne/CkSXwZiSvXnc7bRgriEO3f9bBeftz8CuuYjnQvQnY9/ETl7a8QWisGUJIO\nwbMm4Ue/aCX7CNuPxLEENvQdAf6MYYfIeG2/kO8uZtOxx4PqBaV3ayUmTvHn\nB+/+5IKKQK8BBaM5m1HCTq7lHCSin7xr99Bb7yZCaZ6OkmSz8Jbg0i+FHVkZ\n7njR\r\n=QR2e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqYxmuja+5eQkknsiLfapMwglC97gCDEVUtHiarHInQAIhAL5jFKpGB61LFrvdm2oUADfNSieZ/G3cAXiRsqpfRAmi"}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.7_1629641330150_0.45953434615052235"},"_hasShrinkwrap":false},"2.0.8":{"name":"base-repo","version":"2.0.8","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"123e75f97c8d42b967ae2ce727dd2df948c2b1a5","_id":"base-repo@2.0.8","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-1i5kCQMLtYqLrkfeaaDyzlD/X29MbeCDh5neyM2nagfjrnHrMXz43/fHruCJHPBmosyWu9vMrZKjj/csymPpQQ==","shasum":"6387f893478c200687b26eb92add1e683975383e","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.8.tgz","fileCount":44,"unpackedSize":485381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJi/WCRA9TVsSAnZWagAAMZsP/RPKiypMNCUEVmWaR+5P\n8+XmXADPg2NGKUDaRX5fPjBjZk37p4I1XOo2plX0CPIN8yo6cCpBMmbc2iqj\nmzUv9rqVYmHycM7j1fMA7v5L21w0zmvuKfb2iwBAIE9jzrWHANu8LrUzMfLO\nFfo0P0qU5VqLozgk2fLKjeymrYAL0RS6zShKph7X5zEQXKVaC0MXRyJ/wjDp\ndrxqamCt/eZa6JRMXAyCFCMQYuuuX4mV9aCQsjhHsfFg2tH8CwP2xdDX/2zi\nOFi5Deaw7/BGSMZbOC9LPEkLaq7TYHiUiddUnIgZq0AbpZWNAc52fGQcj3ah\nj0VBtQF/kCU8+zXJ3OxdSfeRh8hs7ZPvhlsqYk3bMT6LmT9/D+rfrDqoo/4i\nMQOqSvdcrwJoinlN74QxFOLkkYg/2o9gFxOiXjniMgZXweaPXywviAujWdLJ\nCe8fVhrec0gJKhcVyd1EJocQKZfv8dRiL29wNF3QfWfVHz89Pa6XhLl8KG9O\ntz+Y+kbNDFE3ruyZGDOLOzfThBb+uTNkI2bbbNow2BaWQmuzJ+4nJzdllck9\nEd8rKRShQpsAPv4xOR9cajvP44PQHbYjIUiGW8L0JTpRL4k8kjQ2Nq2Vwbv7\n44+YaDyvw75MSCr+GWQYtB4J4yC7iRAbX6u4JU/ui4m0Xxa4QF0Zv3cDjhjI\nKoXF\r\n=4Hmi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBtBvOvqFdJFhyD8vlUPQYWYa7dBSvyVrGnADdrX8NnhAiAoUzJoyLZqd8Iz5QjicjvZUzSY5rozuFhZ/1LB3wchWw=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.8_1629892566369_0.3610536406434406"},"_hasShrinkwrap":false},"2.0.9":{"name":"base-repo","version":"2.0.9","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"c4e711eb4b507f0d986832ed38edbbf350147793","_id":"base-repo@2.0.9","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-UyOkRi5jfIgQvnm6gtTLoPAg/B10sPTc915xAko18BV3EOPoAj/1LKsGzfzv4UFUt4NmYfYYhq4Wm924LGPdYA==","shasum":"807697fe21d88c9fc34767bf28edb411c50ce77c","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.9.tgz","fileCount":44,"unpackedSize":485382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJxYvCRA9TVsSAnZWagAA86cQAJzNR5sc7Dbs/efrzzW8\nPhJjVmj4dYdu5oUHR0mXGAMZHXFT7oZIhYkD06XByJk+/BCFB7H/Nv6/xVSL\n6ZbtAxVm2FDu5dlZgi1d7lgJ3cPiHAJRGE4lcj+ipZ3IvqE8tsokEiId0ZHh\nxTWXN4fE6E+AlyVHh+HHE75O58KZwa3FHF8xpfyHN57LzbylMDEY1E7reYPB\n6OBEzYINlQGYK9si1QhYNgw1qQ33MlpTsW45wtXG0dxhxVS5z0jbEUeRa46b\nQFzjr2wNVEFHdIlvW3eacnV/I/DUZFpgMXoflLMtTjIudF82VIb6SzkK+SY2\nQgLvOQ8pYii+N+GBa5atHjKBtVQGrK08yabSHzIXPHbwMGC+5hOVQ2fR2mWu\npPoBz2n9kHtgLKdBiyHrCTuWrPGsGnT9C1kxOqaCFe1nf29hpwkm1szKsADC\nW8x1ZZ6ggsplDZBKDIZRu8/uryoBe9pAEWUC5huhoZm3l+OhpPRPM8ci5NTq\nziKfawS/duvcaKd7ImJg3lxpJvzRLzrQXwoJzxtOwQdRstV2wrv+fFUaeKDW\naQ8QAkULofvbUr9rTxcSR3PjxyHxclmQDoX2jENqr1I0Mxs5trYv16IPx/GV\n71kS0V1dvTsg3XurxHwFfhFmM1/bLiDnH8gdBqn9YIgZOiU/oRyGwWJ/aS6h\nBaWI\r\n=9FlD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+QBMCedgBUBgJLd1EKuYgBw4iD+o4QbtkKAJlI0SmzAIhAO1gNYF0iC+g0okL5xN3/Hi+ede8ciiRvkY/vmmJfluV"}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.9_1629951535364_0.035224274219568974"},"_hasShrinkwrap":false},"2.0.10":{"name":"base-repo","version":"2.0.10","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"343b559d637c86d038b6782b834a5e5fd18fd308","_id":"base-repo@2.0.10","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-sRi6CbEXpU2w6QW3bP9atUgxKbLWmVE2zuE+CLHBBPt2fdxlO1hsc9UfvQGPUDa0xC9tERfXdJHEBOkIi1MM/w==","shasum":"af331217fb8e9ab22025340b1a9e2e12c7cb2b82","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.0.10.tgz","fileCount":44,"unpackedSize":485472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJxb0CRA9TVsSAnZWagAAKY0P/1ORBUmBxLjxanG6kF+X\nieF6hxFr8ax9yrPvpA3PNhw9Z1He8WETmpd0KB/FFcRJc0JKljbV9r9Xa8EN\nB/E5oKkHixT5Ch6GcqCF7DuM5vol7gwe9lxio8Pb7F7iJ1ZSXJZP915RxbBI\ntmbgtltpS28vKfJK4vRVZF5YAF9IV8//XH1BWcRvDO5awIsx17BOBlgdjUKt\n/YoonR1+bU+ioVooabxoT3VoZCrCpw1VK5kUC6WXP9b0Mg1JmQUADbzBDlv+\nLs88LZPvch3ra0vMO4bx+99nLMTWT9MrCcFbSx43grxv1BTnyRVjuEqNtl1x\n+F1LDmDQ3kz5Ts6bTmU2ypzzDMk+YzqykxSia18sNHZUnVGpgXHpzYd1DxH7\n58eRrukXirOJkVVilYR8HYsm3MybVEOAuteu2spqYYqiQEqP/1v6b/QWHdYc\nKIsYGMD6lb/Db/9cdNL4NkqVkRpH4PQwGBCsOBwD8tvXs2D4qQnJIsjDdyw7\nTyf59W4yHI3BdJgUUgTkbsjIKroMabKF4qFCw4h/csAm03Pyj5KX2zn0zc+a\nROwxJBWVDMtf6TyZ3FksY3DvUoKMplRwVN5v+tNH5hh5cV3ZB9OeK2730aLg\noKGRLzJfpkfIr+xJmqJccLTMykhfc2ahre4Ll1HqozDW83H3afLcdU2ZOopy\nWtbV\r\n=nlJl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICxU8cDJ1trRitmeFZ/OR6dqijQZO2tKD0eA0qjKeGYGAiAeG63ks6/HUoGzLfAUr3Vk88BnoSYaUzVaMF66vjWNNA=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.0.10_1629951732342_0.721361092778084"},"_hasShrinkwrap":false},"2.1.0":{"name":"base-repo","version":"2.1.0","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","gitHead":"0fa10feabcdf4b0ce354e7639724630b14b4da5d","_id":"base-repo@2.1.0","_nodeVersion":"14.17.3","_npmVersion":"7.21.1","dist":{"integrity":"sha512-1XSzQdRmRuTnEQJZ6eNlruGZXVBwxGqKGAiojcz8S8F94H5rC0NpT4KInHiGzHtErx6o3R+/T2aZpClRJIl2Gw==","shasum":"531216997fda2adfa8c90a437022d8eff0e38b5e","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.0.tgz","fileCount":44,"unpackedSize":487694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLbIrCRA9TVsSAnZWagAAEHsP/1v7jXCD1T6R+KOa6tpZ\nWAaVhpb2lADQ2puUA6iwlP4DJxgmD5TwNsw8khTCS3LucMsGEKOWAusIim/f\ng/CZlFQW+vkcuc3SeRZ7HOcZCN8dhFeAb6nfyDqjnkhw4A9q1iiaURTriyXH\nT1LG0zpJO7s5PzvCHcPzZ03bit4LGk+Lj8kqtqD/RCJpplo9Jfy3qgTkJ/dd\nj+eY3i1b0a1vFi31fLB7heqEkl+5Pi/VkbV7jfcTU0V4AntVseqTVjwg/m9U\nKI9fX8c8o6xg2/g9ZtBnDasC6vi9oOlKdOOuG9A9HgQNnhgK5aquwLFaHvIJ\noPUr1OIsEe0W80ABqis7CI8VczyN86M9nA77QalynMcQkcMphuB1W99ZnLNw\nFLJkCs5csysvjKEGk9TZYmXeJkQHN4KubaV5fwBbnROPW78SeZnpLuSAmn+a\nzrFCwo7C7Q/mvRbCE4XIA2BscnebMEjXEAZk+eNJYClC9wuztOxnYRzu8Wz9\nUyHPrtNX7flYmA9if+3jJR6Uc1LJVhnyfkAC9KWoMjXhg+IjXqVZOAy6Qp1D\nyHPS4ROPBlzRhPpMaG+OzlnimZDnfoObBUgBlEqsjoJ7a9yBt7ODfCau1cS/\n13UpbFYzVASPUQCzHxwAUhc3Oqtw1zJJa2jRt6tagbcSaZRSbFTGHhDq8hwD\nOp5R\r\n=5Hit\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkv/sHvg69HnuUFx0FDnw9Zgn4w3FjiB2dHWJdRPFpfgIgNLomYFhj0EfaACA0UVAoqXLFVZewU6tjqsu85Fa374Q="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.0_1630384683459_0.22197956862633994"},"_hasShrinkwrap":false},"2.1.1":{"name":"base-repo","version":"2.1.1","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"2f19f395762c46a8b7b9488de58313cff9bf0309","_id":"base-repo@2.1.1","_nodeVersion":"14.17.3","_npmVersion":"7.21.1","dist":{"integrity":"sha512-hwNfXPkEJXNMbCuGj/00D3FlOiz7TG22hEKSMXkyRG+XfAXekeWgcCJ88l5ZlK/mPwpCZjOJPkQiPUZS7qbKhg==","shasum":"b11618448be280b2cb59573bf15e0c402375c548","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.1.tgz","fileCount":44,"unpackedSize":487670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLcgpCRA9TVsSAnZWagAAluAP/3k9aSgf1b4p2AUR4qwW\n2PxGQcP5IKcopwYmrIt+CkqTgtLLzEr6qHzAikOxAM8HaCVOlnIUlIsDhAvj\nxlEFxl80pk9dWlb6/LIt1rfLfXQbNPF7Yd5t6sIzZn392zg31Y1dIV7AAz1a\n2vdO0qcRhbMrehRrl6JjSi+diZqnB29iDYSID+2xgZVJszVyVFvAjupvA2SE\nnDBhBXJWWX3Z7TGW3J+LtzpmwmS8nxai/cfFbwNmojTOM5ZrNC60Wbgs0HE3\nTDuvPAvsbf3mQYvowIpjOcwtJBxr3nou+pE/dIL0iPVa8EnM3G3vLxJeqNbM\nzRczlc77Bbj23WYj5esMBklAhR/P1gcnCGHmSFoyLz5dNHed2LjiOtooP6LD\ne1JPr89+p6KWE2dr/aaUjw1IqpHglcSkilhxkqJgCT9+6Sv75dUR6KYNCECT\ndnYjeU/JDk4tUYcKyJTltYYQMAiJ2vdwVa9ONOEbR4bbvkXpbKbMlTAb9bJ9\neJ7BO7Pw8rxtnfERkRBbysD4n749ll5SAUvPx1W86oD01Bomxj6AARAMvgRT\nfmMe+fwKXs9KF9VvJUNBu6PTS8WGwLqYw1tymoYIuPnZXpBhuprkN8gsgy+L\nb69l87aof3OHJDivwTjHxo1QsHlaqjcCVnNdr4xorfhCu2TpoIZlgQgvc0if\n6N/9\r\n=xIEo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1uxGJnvO3nSqimi67VVEL5Xumyf1B4jdV0gly8R3aywIhALPRkCQJb8K7l5Gw6HkO8qxz3HAwzxZpNRZ5mxaVeZHM"}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.1_1630390313530_0.8108660643877801"},"_hasShrinkwrap":false},"2.1.2":{"name":"base-repo","version":"2.1.2","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"a55166421442a8771adcc2e91a870d72412a6771","_id":"base-repo@2.1.2","_nodeVersion":"14.17.3","_npmVersion":"7.21.1","dist":{"integrity":"sha512-pNradnN1qGdA5zvn1AeoWBWebvtqmMDsrxXOVrwahSe0tL4OYpDzBf6g32P2nx1QqT3/RcAeoGRO22dgNU0SVg==","shasum":"5c0bdfed611b14231c0cb68b272873567b322186","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.2.tgz","fileCount":44,"unpackedSize":489356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLdxOCRA9TVsSAnZWagAAC/cQAKSfLZjSOyxtcHh/DyuE\nTix1G2BAFoXyUX7ap2lfLLDMCCbkHsUhMWfiI6Dg9JLrY0BIHxO6t9h0xl/T\nC6qkPzBrK4K7OYyhz0iAAnIdoeAGnwCJ9iYE9dtytBhXvVCY6nqF6Uvp2UAH\nuZ6u/3iZp0aivBOsyQKyZ2ZCbpfysCJbjdZm/onjk67JtZsbKs1oYXy6CBjC\n6Qea3B/yOyJ2xEf4ymR0VY1euecEwd0J/3SBoXIXXjoe2+Ix4IfpzX+nmcmu\nexrFe/U6vuFG+D7kPFrezjZ/JoHCTKSSk2Q2+WHMgSla3ydS5begDvqIy6o7\nUnneDHk+MkRKCoGgG8k25aIIgWIW4qCl1ekKVJpOWCOXKdXe7fFq+iBEA16L\nLgq4igX6+lFboHGvaiVM2mqKqRO6nW6FotQq5rkcWNjA+FuH+HqODYEQy5Zq\nsTL1iBCne1AwnUZBR7BAx3QDMs3VF+nPsCSyDIyuh9wFge7upnwLQ6pN+9bq\neALEMbo/27Do8aIs8fQqeQGaPNxgJKwjKorRHKR0iUJnXUU7Ydi2q/OiKg4L\nKqVZ1JQImwf+vH978TOrqEEj6KlQGU1hfqiBShi/bDzC+61NvwXS+3767ffq\n8nh15uy5cP2ebrKQF79Vi731060hOII0fYtC6v9qnyO/txp2vi+HdaDuN1Lg\nfjNl\r\n=8OBY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdwgedHDdaTYdDKWRvEagETduc8Xm2/wEFGA+l+xHJ9AIgKP4A/nWsais4ZJ0vdeoqIqyk9HoSJn+pOCEIMY6HJ9Y="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.2_1630395469800_0.37490476172374687"},"_hasShrinkwrap":false},"2.1.3":{"name":"base-repo","version":"2.1.3","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"b7266157c1d66282503298f92d5627a8f2001213","_id":"base-repo@2.1.3","_nodeVersion":"14.17.3","_npmVersion":"7.21.1","dist":{"integrity":"sha512-22kS0BX+OdpLwCnDaEin7HRnh32i7XIdaU8AMiI7uk0rWJh5bQ1dQDB5c3X6PR1cXnW5hj6yjdR2AIf1IWOU5w==","shasum":"75525e15f8ba68fe584a8ebb81f56c326c7c082e","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.3.tgz","fileCount":44,"unpackedSize":489470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLgNMCRA9TVsSAnZWagAAvKkP/j1xc6lP99RH7eZelRQT\n+617eppLbRoqj7NRZgnF6MdOM3/QuDxOHF6qV52MvhsUiCBpxUs6g6EKfa6a\nEJN4ieoC+6v7i182m8gQXprHdY0NdCQ0jp0+CC1ut1ZjHEieOJR3NldAloTT\nidlZy/n1cHfVFVUX0qlZXljKHb+42caT0rwkE7XeVIbtYxDHD4NjNuSbcnF9\nmrKQuopAvRr9W7IsatvO3x1yl4/cRx1rY36k/BEWKGWkg7F5i0rjhzFQO/SO\nTgNSjPOW9NqnmVG5If1pLUA4G7/l0k1NXJfTtcULT1BL9yF9jrH4BfaFbjWf\nTBg8SvvRfnnng+Gdz9jvhCMN0KjcLPcoRZzZ6LT5g3ISlGRvBYZuJhzTuvmh\nvOfhoMLxolw9PWVr0JjuQDwqmRIWyQ1gUk7XOrOJ7d8ba9QDaN/LwlQEtTfs\ns0aKlPNKpkypGmFoAVUwDZVHc2lMtHV6gZlkMtFcldYatPOKIuiwtyVcvrKC\nR0J2tXr4ka5RIl4VZQloQ0Bu3NARd5xksItJpoA+cdILuRLel/eFJSPGq7bN\nvj9fHszdluu/ujbKxndeg0dHgcPCd/Qs2bS18VzYnUh+xZjxGOO/VC9HtV3U\nftRxWWKIym8juU0pFqLux9tduAWgER3AmyG0ZL6Ids9FGtSt4zurGAtzH2Sx\nonqJ\r\n=Znce\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH7ep6MiOF7c/uskxaetUNyo438KD+NSAAhzJMOaP/y2AiBeD2rsBX+irtUjBqTx2w8f46ef+M/fXhi36vcS7zF8VA=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.3_1630405452118_0.31225535563219653"},"_hasShrinkwrap":false},"2.1.4":{"name":"base-repo","version":"2.1.4","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"7498e2ae6c669d7c071117e108aac0e2e28f219a","_id":"base-repo@2.1.4","_nodeVersion":"14.17.3","_npmVersion":"7.21.1","dist":{"integrity":"sha512-tfYlTahweQfOVBwI+wTDZ0poRX5OkPDOU3DVFASL0BMbNSQNg4h7Lf3SzDUn/exDk9bFBmDR5r7IDHp0kO+TxA==","shasum":"fb3f99fa72502bdd461c5115c40de3a75fca173d","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.4.tgz","fileCount":44,"unpackedSize":489457,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLgTACRA9TVsSAnZWagAA1BEP/2DCXyxpjzE+XxZPBR6m\nvrXuXZiabb0JT9eqctYqP9I/Gy2rGFeDKvj2dL5jrggJMDAsedshB0lWf0nI\nlGUrot9GUsSYNGGWkmlpR8AQjygD+vKVV9m+oz6vsv3CxIhEdKmGIlpq4b7O\nKxh9PScCjBELLD/7Y5sn3dcQEe1R/lj+q51JmHQl0BoV/R7FOj3bRQ3+zH54\nZQlQjk8nzqZaj94c93Kj6QUHxgqWDY/RW4MDYH+xjhfXM8XwAB/W/auofc1g\nLgrpqHRCXG80WiycMRR8ZvQBiqV8S3vv3pfzbYDWRVxK9PowDbHU448BXxJg\nOZ7TlKTRBFlciPnQuA5ZANJnpavRyH5A8vs8yhRPbZMEZwhgqPQCA7PDmHXz\nEEc/EHxX4dSrOfHARyW1uYu03DEJfgg+kOE8m0epK+qMLSevW9vfdSbhBqsy\nEyfSZwIo8GlJYeSq7rW2uhVHX87E9NELeboQL/yV1UPAXsHE5x2Tt69cSbNa\ndRVP2SUlIa9BXjZcaAlORmYThmEFF4lb8llAy8ZYrFKan+3wCQVZFiSMMV/L\njbNHFIkyPXCaUki6rc2cgTvXiHUeF6UJmT94P8Hp6R7p3VjACldgbTBTy6Ue\n8WzoVHDcFMUkHOUoy3PMjaMH/SvY3COtXywUyGxdRNox5K61I8bbedl+OGFB\ntHkd\r\n=oGf5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHZBe1adnbe6scQXWjRTNBK6RsIZ5rBRoUjCq9K1/JXnAiEA+o66fWzmPjXLlya5jtfQnJMqmNPyejRb+b9E9Tkk6J4="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.4_1630405824315_0.42146541985269637"},"_hasShrinkwrap":false},"2.1.5":{"name":"base-repo","version":"2.1.5","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"aebe0287a927ae6540cba09199a0ec5ef9d5afdf","_id":"base-repo@2.1.5","_nodeVersion":"14.17.3","_npmVersion":"7.21.1","dist":{"integrity":"sha512-LAuRqrQfzbLflvJC5/goUjD9N4iyPKVLhzV2o6i3G4IP8wMH64UnEkmUr1DNRnwUpgc/ycL/v9S2QDjljRyPIQ==","shasum":"312901ba9b3a1f7db1be99ff7c7b9c7bef7d84ae","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.5.tgz","fileCount":44,"unpackedSize":491248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLs0UCRA9TVsSAnZWagAAF4UP/Rhw53N69Wng/gWo6mVD\nS1VTdZNIX4EXzyPFxVQwt1giU5SpKrjJVv4JQeUKzvYxReWECTRiPYdTXaDb\nyYb/gEYrsLkAAlULGWm3Z/cW3jtcxpz03sEvlTGMts6fh57auDpPYzLZCj0y\nVCHceO9YOLcwU772jZz6mGOEKxRJmdVqrX7CBoqZ73L0i5I5dT3iVpD4fB6o\ngeldcd0hsUOkQyOfWWVFHGPIP3Km8MUX5dFjLmOrtI5c5M6qnl4Gnh5GKibr\nJ5Ttg06DNmVGSX9hTKjjg+9fayzdsQHNHcIMBOxF3MCyIn6Eze7kgL3jcMEd\nk8/EsSzk2m2qc4dlcObBC9EfpzMl024BYZNvF9gPxdf1zQVJ/Ua/dBK8oJYh\nd4CzOvUWetuO2dkACrif9wYkZdxG/ETzFEO1esXl68Op475B2z0DRCyB0695\nQNU0KFipSpuKJFyIwQNPNmFx89V2MB0Nk3tERAzM8k0rdt76LwYKztzF8V+h\nxQTytOyUZTVXkQ8/CWmHrXPXMsva5FSlvdAVazGJ9bs0zRpsHqLlRvZl4xPB\nc4TR3pkKK+k9dG78LTt7Ge8g2z3tOR1g2wPtk3/88lz/1aKdnWk0M2RxPAwi\nvP5CrRuevI4ExpRmPbslsFQ5xsezRQ70tE0fixfy7y0UtsCzBWa+0Qhjmjok\nEXX6\r\n=/Uqg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSHonCHS23NFMmlfdq9AB21VRYt4xC4TB+HJiSHIwXWAIhAKDi6bWwO83j2LLIOXgXROHMa9y9XgV/n68bh5wCyiEH"}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.5_1630457108676_0.8878588188295882"},"_hasShrinkwrap":false},"2.1.6":{"name":"base-repo","version":"2.1.6","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"69de85f62f68d2d76b2c2f07dc6313ed6b0d401a","_id":"base-repo@2.1.6","_nodeVersion":"14.17.3","_npmVersion":"7.21.1","dist":{"integrity":"sha512-h9XsYnr+KfS8EWMjQxfZz6w1MXMibr3i4wZBANfCBNKqoaCzjiqsXpN4gg/jhHQhKd2CexoR+DBLEXHWblUIAg==","shasum":"3a5c17f06f4f64bfae1e7511c68f42e46ab6ae9f","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.6.tgz","fileCount":44,"unpackedSize":489997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLtEeCRA9TVsSAnZWagAAZ6EP/ipUaDx4wmUANN+rSN1E\nALxUI7NpMiOC2APJuBJi/cXvRtupBySkPm6ikOOTpATKSpJJ2806J54sapFZ\na6oV9C/f58k5Cd8yhUW2OPQ4W7UgxC+nf5Et9H6yp2xLcSH0FrabV2/KDeIU\n2eFQBU8jbEWeRPq1hemi2otNFLgYKp1irMcA75EFovuhf/x32DjMIfj0QL4J\nsjQn6CP3gY3/xG23kI9tRTyqN/udvigEDihCw5BGF0YC1TfCICJAliif0VZn\n3RkL03gKi7eNCr85hogZvDmF7mX/smf95IMIxHUkMes9EQUBGUX13aG4Xfzx\nuQOn8P+4nwgG6aHbTSdKhfbcOkxYhzKo5vdJH7gmEcz7DB6lIQZIxBVHnXq2\nzLGhcOc6ty9I/TQpAJLy6Q/iepDCVmyCF3nvuJdKddlrd/BvNacFgcfJ+IB9\nJLDfSdxy0UuvJVYTG09C9AzasuFiNcfl6gRjwjbknftJuR/2RsjMWvzstYUq\nLGVunfRfhHtMN8OFEBsNTEsD35A4MlOJXQX6dkr3eFPLIl+LnivdMBpFkK3U\nnGru5vcQYMAjPNCUQ+fQCxOka9ofgSVm1QBvMp4Ti5DqV8JmxlEO+gC8zKAs\nR+VHlVo9u5yJJNSKk6U5gPo3WVmhLYeHju12vPp/tPwpqHE6RXDT02HzFmXV\n8lRe\r\n=BHaH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA1R8nQz8XzYAsSxgE8AdZYn5q0nC/6gjWOO1RL5/ElPAiEAve9uRMr3PtZ146s+4H424J9SiAqz0+9l9/OkbvNxbuo="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.6_1630458142118_0.7640122128054168"},"_hasShrinkwrap":false},"2.1.7":{"name":"base-repo","version":"2.1.7","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"3b5c5eb8e041ced2f03bfaa2c0f53677271e66c5","_id":"base-repo@2.1.7","_nodeVersion":"14.17.3","_npmVersion":"7.21.1","dist":{"integrity":"sha512-iwDmlzjgTpvfhZaNYnmLWj6B22zycMeR/gLCaFvRWcKaYiqyCuuuEZPbHz8iNBhwOhinaNd9jFFo/wyx0FbSMA==","shasum":"0a2eb6ae1d458e26cbf76a24f469f1181ca04350","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.7.tgz","fileCount":44,"unpackedSize":490527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLy8BCRA9TVsSAnZWagAAnK4QAIn9Oa2V5gqmMTUL3H+j\nHbtj49a+GohPkalNTPdIiFJxntnZa8Br2LpKw3Cu1IC7xz0AnhOMeLotiIBB\nqI7CMF/hs1HBe3mFEp3+b6pyHJk5wFXRGLtUwGO5cPd5Mwr6LwFoq1Xa1iir\nOmtbLi08iidvQ88NOrXE9E5owFb9mQ80vVv4Mxw2A0I23QWzTNwxIAZog5Ts\nAXNxruNIGb0xraBPON56IA1EPw6sLaAeW+mNlzhZd3wRtf703f8bXqlpU35Q\nuIYJK20n0+oOnTz8jdcujrVSdjMyjL3HDjK2r77lIyFVpX20fcwYuJWZJx6k\nH0Gv03w42Oey1qDJnvh8zLySUIu6OB1BCjmxR7Zt5dmmkb20FMaGNSPOBjZh\n2nFOl7AnNqnqjJuDa7m9DExmJFZdl56NMl/ATa89x2KYlluF8cph3cmfO/La\nVTWMN2EPt+KpHv79X6SBtP87Ec1ZLtyQu/BQLBDKVkFengnoTwmne3N2FPIL\nXJXa7OjQsBalWow0L8PlS386UTWiZRYDaQuUWlqRWcWDKDDMkWFtmADzs/zo\n1lgvAQfrZS1CKI130L5xKGCxRUvb9Er2ax4wdMpAEpzjI2gxGzVpfyTQpAi5\ntZyDEkNNLyq2w2uF+epkfErt6RE4KTIjop0+m5R+Qhocf33/o9yQ3b9UkXUU\naIQC\r\n=0WTW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9J2Z8mxNBrk+YQ2DxPo3DNxobFbLd5Jq9imI3tXE4ewIgfA5Zra1g5lvn6F3ZT59yUymoDaM+bXr8Tn0Lz8T6ZSc="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.7_1630482177231_0.2611819292229012"},"_hasShrinkwrap":false},"2.1.8":{"name":"base-repo","version":"2.1.8","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"4614c12336ba08282986ee8d36ed153232e701f8","_id":"base-repo@2.1.8","_nodeVersion":"16.9.0","_npmVersion":"7.21.1","dist":{"integrity":"sha512-z2t/7AGudT2kF9X8XqUGiENhkuFVkzvEO2qaOoVLa6UHFVAIosbv7rgEl7DpuQC9ZciyJcbPEpLtxJaBNEfQJA==","shasum":"0d3aa78de82b6f3a97b4ecf11c115e3482274ed9","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.8.tgz","fileCount":44,"unpackedSize":491405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQxtBCRA9TVsSAnZWagAAf2wP/jJBOIzaqqIJ+LBdhDIW\nXHGcF1zUCZQoH1r8HF5JGlECPRIqBkm4OS4M+OxfMOXHBCBnWfAK8aJUlYy8\nx0IRReTps9VgncOuco7Bd/0OqhZCrn5l8MHOzk2ooBLzWv05EoGwa4bMRDBE\ngxKfoSBRPQAqvSplC9w/+M5Jwqf1AiCtsjl8+JRFKocPqluM0YbI27MJDRBq\ne7q9N4VU8dQ6PBOXxG9vvblMvueBTqWv5bx7CYBGHvrZ9i6Wu9I9irTYn5Qh\n6r3xMsLq5g3D6No5zaynKHl4v713id+mwHq1kYvtOiGLwoG6R6Stdmpjf18O\nHmVtpqeWdj97VbJZKBSYKP8If3GxKfP5f+PAA1P8WzctqRNR0MVmpRgkGsCG\nrwyVM77WjWv61QmOVlv1IK7tCzpQUFXPS7iSMtGkkMXllbxiEnImBR4C5SIi\nPzy+3/Hk5wnsJHPP/gQaLx2oG+Hfa1HN1VdAVPBKNAFJapxYww1poEsVG44i\nwpGxBZu88IO47xVuyjttEOHVC6hyOEyTrpdD09ppfFzx5Feg6v7yJRmLupZx\nCDsbzWC3Qf81OkYcXLxqMA5QB0UVNa4vTByiCCxpb+BZ62vUnNCmB0IvcQYg\ns6rAyiQzPiTvRDU0+qunGtf0KU/vWAohIYo3xGj6ZFjQCDv58wouKkbnvk/3\nzFQs\r\n=++oZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBkvNlafYDYhujDpmTqJNWw/4n6ByVl7+kfTWJWgxM4sAiB9OKhu10NEHz+jHNQ/tRmCTiV5+jp6zTq9bXu2hseSRg=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.8_1631787840912_0.4638906434440977"},"_hasShrinkwrap":false},"2.1.9":{"name":"base-repo","version":"2.1.9","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"c3bb8a2f6cb5e17ff3259feafc2a20118f8c4b5e","_id":"base-repo@2.1.9","_nodeVersion":"16.9.0","_npmVersion":"7.21.1","dist":{"integrity":"sha512-kWad4PErK6OSeTRpU24iq2cMO49IbKd0pfDTpl7kyguHv/enOAoJM7kwPRrQjSDxFdy0vWo75EQhRTPiyWwUNA==","shasum":"2a804b0ca6ac8a6a69d8a1d4d1af9c3df538374a","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.9.tgz","fileCount":44,"unpackedSize":493184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQzMHCRA9TVsSAnZWagAAu84QAI1cSvyUa+FZsgSlWC3/\n1KAYw/hAjHSOjx7wAQExabtx7d8Jbz+eRy85H8uAWEREwh+2Zy3oPim1B2JD\nqOGtjfA+JUTShLXT+TnNZKr/D0SvuK+1kX1U9ym+17x/WfOsvGrXK9Dg5Q9S\nKV+hIaKOivnD39xB6e6gebK+ji5M08OhkIWm8Gw2IFoO3JSGO217uWZwohBe\nxfMrJUIxUQtTGRxAR5M2ggmFl6oe9F51sTuD2n7vvAq28keRHPGHT7wcn+tv\nI7Pq5qBZGgQBi+lOy8LL/d+BEWiqBIZWlwzfBqWtAyFloQSlnSvWWHP1whW+\nQ40FRXl8YfeN8KMy/ea2XeA7ZlrsLC58oxCv3JWnV6IlgBQjVt9+eiH1F24w\nGl+gkc5hVe4jS+TEh9lb92VD2Tv0rkrGlEFSwMYS0XhyWOpiFabyzc5D5Hs3\nct90dV3h6bLET5UlbPbDnixUb0OVhDeDuFWFpN+WyT8+CgkNgQT9OdlYc9sl\nzF1dV2Xj4YHEMUCqKAAnTu7y7Oiptat1W3KIz6gqW44KDfarw+4Cv4Ja+uH6\njrSN9IJusSYTJEvEfHkFgaGMjHBGMuWy74Pl0YotMR1R0Z6z6Mzgiv2K6QOd\ndNw+d/bnsAgPfUQiv1mcPkpZhRfVhbvwGyDJv+o/A0P9Sv3lV+NT9l7u4ZIw\ncHtv\r\n=u3Su\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqKqE4hLnqpEdpGhBEuq+uAB+I4xwySxaae94KJNczAAIgDsP9pJBI/tnouxi5wY1rbNAukxdbUn5GVfMQ6zz2+xY="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.9_1631793927780_0.2029264234673802"},"_hasShrinkwrap":false},"2.1.10":{"name":"base-repo","version":"2.1.10","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"9720604a728cd4121ebe6d4b9f55d1846c7694d9","_id":"base-repo@2.1.10","_nodeVersion":"16.9.0","_npmVersion":"7.21.1","dist":{"integrity":"sha512-zCmvxxGQ+iumhLPV0zHPHFMnT+gBRpEmX0gq6E6qvM8nz2gQi3y2/1fJYdexcHgnpT36LSVYDKWvxTCmkD9QQw==","shasum":"5f784fc7d0c210a89dd3210a6e5db924e422c50f","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.10.tgz","fileCount":44,"unpackedSize":493066,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQzcrCRA9TVsSAnZWagAAwgYP/RFMthCcICpMWkc7Osjr\nH0a5oNpKEY0AbBlGRc1Osc9KUzv/57V2orek+zRmITsBhaLVLfTeo1tt0UeH\ngw4u/sYfgiOdtZ5YxrGoazUpUPVlKyhVrC35T1QBvn9Tjxu/Yt3l/z86T63z\nHtwWnO1HWo4FQwWKFHs4sS1dFDTzzvwtHQ/7KCWHjPxSiaMcQ5GK9iEwsI9e\nwyNc8RBv/WOpAgxg7ULmyMeKWXq5iT+yr30tLb6ohiRi4Ent2FJOeKtFR3QU\nSjkJB3l4pz9S+mmhzw0mN4MfEip7HGKURMZQWSh0y0hpExp+3heYpWBLKUgS\nb27vNlqeCvFFIdCCxvVkz6lqxU1jCxa4rvpA0ZK1CDVRJ89oKHgakjB4hUUB\nHk0QweW6S9/IIjLnHoawrLWdMe60TAaSqWYgzqyletYQ3T8ZPdLCDsOkK71g\nQF8WB7EiPcwQQ4bJttt2IGd1gOUbsNJueu+wbrRamuxm0g4kvi3jNwmmqWvn\n+50eOPuXsa87bYKfxLA+yp3hG9sH3g5LMs0GG5TB7/ueY9jt1GXbhezc74gf\nBxF3o0hlTR/3zVoIOM5WUrwHEuzPWvKGRs+8RGwykxVHgodqEHJCfd2aakfp\n/kY5D0LIpXLzJi+RASzl1EYf4KKNHZun114m1LgOMUrFhAP6SULpedwp47Tr\nULPK\r\n=Jc2Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDjDVfH1r8COAsVXF4wHufQSNgIqpA+VBaRCBk9SLowQIgYMYrZayS+Lqiff+9fs+N+TrgzgS3aZajIMHElweRcQ4="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.10_1631794987647_0.7781153420842659"},"_hasShrinkwrap":false},"2.1.11":{"name":"base-repo","version":"2.1.11","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"98f642404354e9d629c74873cb39e54b6944a608","_id":"base-repo@2.1.11","_nodeVersion":"16.9.0","_npmVersion":"7.21.1","dist":{"integrity":"sha512-eFF+95QAMWVIciJHkFVOIk4YstD1WlHI4s76aL9oUswl2s1hITxsaPpW0piZQ9dXzsaeCoGVgCXD42Y3yjNrkg==","shasum":"1552330f6c22b1b67f2281b39e9499771ba7c182","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.11.tgz","fileCount":44,"unpackedSize":493147,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpPG4zuRS2sd4DI5gB4N2JxMJJCeDoR9zsp4lsl1eXVAIga8F8AKftSvx4ByYWjaqZ0/ExEUJQ1//Uvu9gqe/xKxg="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.11_1632120031943_0.12391577807668619"},"_hasShrinkwrap":false},"2.1.12":{"name":"base-repo","version":"2.1.12","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"89ae4aa788d84050cecf64b1eba9cedf456f0c07","_id":"base-repo@2.1.12","_nodeVersion":"16.9.0","_npmVersion":"7.21.1","dist":{"integrity":"sha512-GvE5Q4Sn1frp94fdIvRbEfsfxNG1fdBKV/06oOPsynxZs4VP5S1YgmCdAFxGnKP2rXZ56QYehp5alWs/6rW2PA==","shasum":"ae6240cbc0e3071a22149f1cbad2e21540e553e9","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.12.tgz","fileCount":44,"unpackedSize":493881,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGmg1zm3nUyWcDSCxXtw4FdCV8R7f5kzwq+5bMr3teowIgW5WLecmPjunKoOGPdQlCVs9FVPidd4dgeQT79RrRbeg="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.12_1632390990040_0.5739463068311439"},"_hasShrinkwrap":false},"2.1.13":{"name":"base-repo","version":"2.1.13","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"ef2857da3dd0fecfe0d067341a84b818f77ef107","_id":"base-repo@2.1.13","_nodeVersion":"16.9.0","_npmVersion":"7.21.1","dist":{"integrity":"sha512-AKhojuuv2Rscb8mH2fZ31YVeMvgpfnfHZYTAUt9Oz7U1U+fo056dc+9JHBJh+ryqaDNaRCIpkBzjVK7sSGTYHA==","shasum":"ddee0862c3de69d5e99bf6315afe2579a40d4600","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.1.13.tgz","fileCount":44,"unpackedSize":494218,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHvA5bbANQAgizDaIRYRqqCWihVtsJN2IsSPX9cuHMI0AiANs7ru9EvmfwpcyLw+FQcs1H5SCXWNf5ht1QIwTsuKxg=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.1.13_1632391663335_0.5977494118535742"},"_hasShrinkwrap":false},"2.2.0":{"name":"base-repo","version":"2.2.0","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"2c462a956a6049b06b3c52e119f20aaff58087e5","_id":"base-repo@2.2.0","_nodeVersion":"16.9.0","_npmVersion":"7.21.1","dist":{"integrity":"sha512-JACikXsCuZvvDo6x1UDh9ddYYRRal+r7IdkNKj0nZLrBix0u1zeyqHVHVSKdZMMdW2l4Q/O89r11cJVmxXizfA==","shasum":"6ec9326534ff18a2493d8fbee5bcb5a74eb42800","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.2.0.tgz","fileCount":44,"unpackedSize":494998,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD71K02FSTlVMq7/7AripJ8TQUEW2PLbm/zwntyMTJjrwIhAPVv5vytrhSF7AM2LGa6H3XkQij7LL56Wp/FYncD5FW1"}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.2.0_1632392235241_0.8934539757483222"},"_hasShrinkwrap":false},"2.2.1":{"name":"base-repo","version":"2.2.1","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"0fcab93932787a15d01a7510140c16f14beb4ea8","_id":"base-repo@2.2.1","_nodeVersion":"16.9.0","_npmVersion":"7.21.1","dist":{"integrity":"sha512-H5OOuZHCHJ3NFXl3w9BzB/VNRa7XL8MDk/IIPuR+/EdnBcTdRBxaJrSa6HnPdfoMehL/6uoUIGhGc+qQUuswng==","shasum":"87dab7b8e5d7cf42b9a88aafb55e1f7e506e794a","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.2.1.tgz","fileCount":44,"unpackedSize":493384,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqzW+peZRyoC52VuarnBA5TN/RL9LRBwN9PVeenjvZbgIgSyumQPKjybm3tQugi2E1ulaervjRI+JNLZBxlGKYDk8="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.2.1_1632393478821_0.854104406225427"},"_hasShrinkwrap":false},"2.2.2":{"name":"base-repo","version":"2.2.2","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"2f745a66959a9eafe5e52fd81f1bb25ec0fb757a","_id":"base-repo@2.2.2","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-QwEYRexM6WYuW0LSKm6VkaUqE6ptVaXiMmKQrwfLEGOzqnLGhrK6WedwaiaZZYaTTgPSV//aQghDfYvTuh7+cQ==","shasum":"5ecb79ebd748aac1c4b55b928be997c0fa4ca49c","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.2.2.tgz","fileCount":44,"unpackedSize":494475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxYDUCRA9TVsSAnZWagAAPMkP/j2QsiKa4BGiVdVfS8y2\nxCm2YolnvmC1lTNRAdSjNQTzgkCZYt740xfS/AtV7p2vPJzIsmGxo1BqMNdM\nFp2DUK9hlPLgL4HCltfCeuiajNA2xNqWwohUXQnQFyRTIYeJiMK43t6c691m\nKoB58G9INtjl1z3KKGrh7q/MyMGAbwcZm14nCyO5ZuQyeRy+IvD2zcPBg/vV\nvKHpWeGqvl2F+wHhCqUDheq0NmZE0OGczhJ8jvTf/iTF6mJq3g/D5W4DNd75\nw5E9MH0PAHHmemLoJB1E7WF/WTnYejD7390tIP56rhyl5f9kGHcjummcTawC\nB3kPBtKBDiXxe+YH5pWGNlEds+qkpEtXpqPfyB/XwcvaC5VhiXeU1dRQgM8R\nOKo9/EOwqsWYNQkLOKdsm6EsxSKkrdwE9fsGLem9yvIfX578tLwaOHoLH7q4\n4nxReKPwdEjv143JtbB+4+dY23srkKx/8DvgV4njGiCUE0B8eSMU632W8oVm\n1YVKyzpgkiyM+GXRkQWZ44BjxZvm8iXRllBaG3N87tziPZkxReccsJ4gNwo3\n/fnn006wGdTA6THSZx82nSaNGvQ3XAcF48GFAzl2h/ICbKHtPM5E1Mjhv/5J\nHS7CjMqihOe5M7kyBT3N6Tatx3+ARnKCaj61yy44+bRvjGMrdP4k6eqCYu7/\npuIH\r\n=BGqy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC70ta0zbkNvWCi12KF1Ysn/TJE/naiEe+pNK3Ips8n0AIgYQs4o62R/TbN4tNy7M6D0PEN2dL4jWEGQ7bK4/D6b5c="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.2.2_1640333523895_0.43504101807435736"},"_hasShrinkwrap":false},"2.2.3":{"name":"base-repo","version":"2.2.3","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"468b33edb0fd2f0a6ad2714d996f5b1caf76927a","_id":"base-repo@2.2.3","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-QJMQtLsxK5rQbpMIwEf3qk5al6Re/CKx1AcespRexdECR7yRAgGng1NAlQBK8n5+eDq27ZjuBgJwkJMahggCZw==","shasum":"f34fd01df8b4706a93e28cb374173143f2bcd6e1","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.2.3.tgz","fileCount":44,"unpackedSize":496305,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh4SrhCRA9TVsSAnZWagAA5lAP/RN3418U8NyHR6fz/dbv\ndHF+9iTmE9LBJGNshazyy5mD4+D+9vIPFcBZHABalLawq6yTLCMmeSaV02g7\nE+5gvtepbDmGxhxEykZqg/o+TR1b80kKqt68dBApGDHPHqxy5A2BMkz7fxYh\nmPkVDl23KllGYa4lTZf7YgY78PQeRMlPgHbyUjc+KSsmtuMSQsgiAmwOzxIw\nJu519I2nJUX+dUnv5xvuvV6FwkoHxvmBL3IjnCVQK7DxRFy9AnDv4GyJ1XnG\nm5PNVzSsS9F25gpYn6EeHcxHSIaAD+I/AnSpAFlyy7LMnYCnV6kykLXcfhSf\nSk+Am8GfHPxwo2eO+R8giSsT9CPANheF88gxUETQn/GnbDbmkGbyd494UtgW\nNnSahYiEFCUJLx03sPTvHd8UWL7XJ9uww9tWgFHY8ViY4PucIVoQ82vxETgN\nKGJNSlv/5mqTvOQgsaloredW0WAjDwu3DJFKXbZadZ2SDiaUVKKoDfW79cnV\nYH6uh776RLiJU/AITA7MLMavRJS55naTeEdKAzcmmobJWuhyRDBL6JdTXkmW\nlJisJHiCQ3xX2Cu3D1qe5AQxz5jFQS6uNfu2n5nEBjBsTLobZ6FR/VIHZP0Q\nYtPZd40huFUnpbT7MTJne+Z+bCXm83/ete3U++Y5mZTkKeNi8doqozXrJK6Z\nn5xR\r\n=xMMu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE8Mn1DT5CKYslb/fKtvp3bVZQGGDwKl0NYx9BzjWcJtAiEA0T1fICW+IYLl6L2P7zGUUrsvoDZ/wIgHmWgsHau/EJA="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.2.3_1642146529177_0.6227681771863804"},"_hasShrinkwrap":false},"3.0.1":{"name":"base-repo","version":"3.0.1","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"8c5c401f57f622cf458bcacbbec703da08ce635c","_id":"base-repo@3.0.1","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-3jOeV0ZQ0TcCjxNuxF8B3h3bPGsm4xvWoy4jiFZ9jYpk7XtDt2rH14q5RUZB52BzwqgVpg0ffTK9T1Ki3eG7kw==","shasum":"4b407104e1711530fbbc7f0bf22b55be6a87a929","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.0.1.tgz","fileCount":56,"unpackedSize":189266,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZ9gEU1TUJC/qE3OA9sCYPLQJNWC/15oaapFMjZDf6NAIhAPoJztFGv6GV97To0TNA9FTcVffD0sn7wjD5S4wX6crR"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi08sSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpdSA//UhaVxI51DaHwsoH4B+9EERsTfCWMnwgR5Fiy6kjef4hRrLUC\r\n+oF9uhMZEkCEaANa2A1dKaBQ/D0b5+u7wo3pkYfR3LEktBrVKh3cBUpejU5K\r\n+rnB1JsG7jz72BJEvmbWALw3o5Hm+jULgUP0S8YnMTS/HT62HcFBdLmCMZKt\r\nMxv2OrkN+R4ZVD+3qT3bX8wOF7L14F2eTaSd2h3Y/qKF8hwtNaQXk7YOW6gp\r\nD4+WFiCLG5TokbzQzQp+lyrf27WlW6DRjgBPhMg+DYF55zyV/2vzwJhScsQA\r\n/Yh7FtfNpDM8YfZvBUrqm3soNzmhWCge3kogN5BEQXA1oy3F6GY7fkArvh9s\r\nrL3UkjxLv4mf6pEyQzJiPW+bRVr0SJgvPufqbkaFi9oDQsdKlCGPBMS+tfNw\r\nUqdnPEzbEWVPGC7/eJ2LRfHjPtgdoe7ZKcS+vyyRDso/2CmiNHYehdaH8eBv\r\ntWTxUlu1bKoV9y1tSNITe5+3suwx3eilYK07AwqiTWaKkXKUN59f/JTK+BgG\r\n/J2Zl4z0yRzpPx+A6RNjiaRXJWP564GlYIhdH10BGoy6ar6CJazaXKeCwrTk\r\nMAu+hFcrALyMnM3feb3G/FukrOGmuI/3LzSrG4zuCwRR7stAqXwVxbqQ5TKh\r\nCXA8z8Jz8OzMIzpRSVCbM+iR7DiTy49kjT8=\r\n=Ygio\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.0.1_1658047250531_0.5215902995938688"},"_hasShrinkwrap":false},"3.0.2":{"name":"base-repo","version":"3.0.2","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"c89c5171bc49185684f933aabb3744fbeeb715e8","_id":"base-repo@3.0.2","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-t0cPlvKy1jXMAKNFrp8Ngqp/RT6ID1+aaNzsoNTM697/FohgrMF+XQORLjJxFGngs3uViXoyQOBSaTi+dO5new==","shasum":"a3ecf99dd5836bfb28753a559d56fbe5ed135647","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.0.2.tgz","fileCount":56,"unpackedSize":192608,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSnmWIBMWOImcRyblEmug/RyeQyK6KLZHsIcF7hF++/wIgTN4bMNZQLOQ9NNoKE6mC4ksmD5YF1qjbSO4Lsa35ikE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjA0wTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmon9w/9HDOjsTVlx5CFQsaZf+Mv8OXIEdYH+s45Pz2SCzOnJxtwqHQV\r\n6vXwQSSsk8+ie7kJrsDuqKOhlvQy4b0V0PRc8i2i7c5SD3X17SJGzYuVTMhm\r\n/G0WHKteenaE1x191+KlTCxZ7VIOhGlv9uRO2LZzs2Dk4jZPYNEzQs1THsQ/\r\nHV/RR6Z0g3sKkdvIFJHP9RamHgvk2zxcvB9sdDIMCi3PDHY7z0pxOC/s3FNp\r\nwO20CXYZvxAbr5zmdM8mdlXsD7OgATbnvi1Ti8Vv0UusWSMD/0V+pbUnoEXT\r\nUsNp+dRBOGuTNWq2CO0dbiQGYyONs36R8IZvTNo2w2G8eDF2YdYOZSCy9ycf\r\n8RDdy3tnBBXugdFTJ9yCuzsTF1E6pAgCaF/Qkv4Hq8hvT3HYCgJ4935F8yMr\r\n07KryscM9mehZw0AYyjCz3e2i7dmyXJLVj18BXdWsujfiIQZX9Mhw+h2hFpf\r\ny+T/FObCfWzj1XgKkfVazwxxGiqLyIfiQ+vgjT/8Yvx8pp0F7r3rmdnSfIJi\r\nWETeHXhTn+pOVDIkmI5dkam+wJc5wm40x8wkp9fzUqq109ygg9KMP5KFYj47\r\nbB/XAn4x+CAR04xpn24S/SNKwVwSVV6nq0FHoi/cXU/RO4agEDqWwQi7CLlS\r\ndtt2fgk6NWF0w0/6+w2mHUkwLgeLS9DF2H4=\r\n=GAHS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.0.2_1661160467578_0.2908770947178678"},"_hasShrinkwrap":false},"3.0.3":{"name":"base-repo","version":"3.0.3","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"3c66a3a846b043c432a0054508feadc9366799ca","_id":"base-repo@3.0.3","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-gP0Lsm5qzzUjalx8XRYkLS+coXu6BbB0289/1ehlB3zX7gbfozBfhrYqyM18sFDfSm86sEvYUVHEqEEhmdTnXQ==","shasum":"6a6817a6fad807c84a192a628ffcb64f06af900c","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.0.3.tgz","fileCount":56,"unpackedSize":193021,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjVNjipfoklwKBvcEVTbnaAKAUKULykkaT6mOF9NnyhQIhALE/MNP9Hx62NIfdx9V98doGYT7MMl5NGX6lQJYjGuJ1"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjA1AnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr6IA//SOBLkK95Stvfhj8ddPSouVQHDIHxVGFt2SYt5y931QATINrC\r\nEk9K851IA5lJAZBes2QNHJlTDSfjCS0k/N1DtY2JI5CfzUBSraIe+d42WeyR\r\n23RtJ+jF3QbZz9O7meSE34ZvtT2ausfsnUQ8vRKsd+ATEKoY3jlJnBgRZnBX\r\ny/d2dB/Zt2GUiW9H3NpPv1y1DATSh5lMrGWErTpTPpasytwyDwUIWYm9cPP3\r\nbDhazG7C4G1+R4Q9YI5+hbej43fsNMDVTYshtxVoKOc3pZbmvhSRjecNNXth\r\nshylb9tYq5VnpE56637vVgMBmORuW7wL6VdBOeJj1QSFhxvORIJnixZfsIVU\r\nb0C+wFZ9G+OWr3hbIGsHx+zc0FI2JDytHSCrqoodaN/BWCkndtluka1lXvge\r\n3inH9Pu3eAGfQUkfqu8DvP91sSekkfo0AudDLldB6PjIcHybRg3HK1eogxr+\r\nc/vABmUj/zdHjlXhqNKe1yCuoYqGFfJSV9hyetcxukgLHAvBIeUAnJnCuO0K\r\n2w2IvCpZ7XaiWhPu8jT8LUXBMGnqdBBZNbPeonZKDRxxW9Awn7UCtOsEhgrj\r\nSLeqv2rBtQezI40KKq+/qqqEho/bK6taoc0tmpKjt1xpJzHt0irJfR4jhreW\r\n8V/4eb1T/fdndCKGiZh87kENtbec0uh+ikU=\r\n=T/mU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.0.3_1661161511279_0.7455847705263459"},"_hasShrinkwrap":false},"3.0.4":{"name":"base-repo","version":"3.0.4","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"822dc0457cc1bb69702a2c8c10c327d10c5cc68f","_id":"base-repo@3.0.4","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-c+P3jzFrFwmkG/UBZXQi9g7GmleeHaK03VUBYC+yIFEh72HE80EzwnMoWsY+YPi7exC8irUjq/tCCcRbhQjwQQ==","shasum":"06a230060813605c10aa6a268ef2a37434258331","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.0.4.tgz","fileCount":56,"unpackedSize":193416,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICz5zlg2dnxbMK3kWGzO1QUVlj3G4fCOxmZ3dDyqvJiNAiBIBCE/gT/B0vfpfp76kj03k0B1h7ksewoldJssyf4SWw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjA1MCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqfGQ/+LEY+LKXx+1caYPg/VCxIxUDDiBoxYT+9W2YBO6nfjiWCoAh9\r\nNELCFgC7egSaWshNrXPngoPcYOT8NoawZlIUNFDsmfJKd3r3w+yn1q2E6BCZ\r\nKZ5fgwK7/6VZ+2haMK47hgYZ8ADc6ZhDRIlWrj7jkYxlt1RXlYQ1id/tlVjD\r\nvTMHfVIHb3QCJq4IQogwu+hf3p1wcx2WCNoDoV2OkWueCwvslLVlyELU6WO4\r\njbzc+g4RrUayG9WdmRmpLtByP+iL83uVvn2viZptPIDl4xOKsfDxZaiWSn6q\r\nI8lIhmQ1a3t9qQGnf//HCSHJfP3KaUYR09MT4pgTwt1jXdWoTVG6hOWAG03n\r\niz+EZnzhi/RWDlRARNRHmeeYNJ2gLQj99ylaRzFKR7vr5e2ABHeac0pHlcw6\r\n+5W6CpGyzi8n9CuEmwhP2SL5hZCiSLfnNV6pBDoIZtADzzCyKug5ZQTwupP0\r\ncDfBHzeFs1k1Nh0MdzFJZN+fAChZc8cH2yfPLzMmujr8o3VKlk7rc7byLg23\r\nZTEX91EZHKDbQZYfOJAGGp5z8AgdGrpSu62ENys6i8UfWYsXy7OS5OcvDmzZ\r\nyBulKNaG5HAEwJHxzolIuRyC6t7craygF3GcgF3Xo5F8Viuj//IXtBtjDfdv\r\nWqnprXTMMom8t/+6OHe7/xbVZsAy47KxvDg=\r\n=zCaz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.0.4_1661162241891_0.045748471730025164"},"_hasShrinkwrap":false},"3.1.0":{"name":"base-repo","version":"3.1.0","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"b28087e23c2547bb0e2bed9effa068e55a0d400c","_id":"base-repo@3.1.0","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-SmBTeEfBDCjRAJ70CbU0X1ZI0vvNRS1aiu96ZPSguoe5qQuAOxQeP7xtEkvD3WAeK73DcYveN9y37jCXbePoQQ==","shasum":"2743a8ae4c120120288d3faf57c57e3f1a2148ac","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.0.tgz","fileCount":56,"unpackedSize":193456,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdBx8PntsUtI3zJnwDQLnLB2CdprwBYK70oZ4u7hTenwIhAI/RhmElPVSlDNtuadTp8yx34tr6A4Y1New9C3YJ3m9P"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjA1r2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqrIg//QHnlitQwnHDSq8zZ0lSrP2tY+T3zCNTezEFYgxzxneZ9jFXj\r\nAh7nrYlbaQI9S5zjV8wUEF/87Ei1BVlynIzvDfldfnJ94ouwslGQ0HQMRfUR\r\n+T1o1qO6tLT2Wzirjw5nG0dylXq93wvsWvRmNMVpbZYRqEXzjSDuAh5GUnrV\r\nBE3ePQ6OG3zRYOj9dI3h5Bu9V3V3/f8EvZ6+oYu3TK6urCA3hq2ZcxKDmRKM\r\nz8IBaG4w4rjzKEI19f8b3GdD7f83LBALuAbeUgX3P0hq6p4nEGTx7df4de05\r\nr0dRAJkYD/d/eIuOWXjP2Wb6LUa5tLFdG8rqwQ4SYzFl/JiHVbVJ1A6ma9d0\r\n4SvPQo89SexOBRBm/9hu4Rxy7U7F0oustYz9lY04xpNXzMgpPRuYKtEFKlhE\r\nBwJKl37VhzCyysW7RgYJrPe7uUwmn167zEr3X+Ge9zIaWo7be2Li8Pplfdl1\r\ngjvjG8kCfEa9FES+P5Q7WxOy/MGzAPPLtiJYDRYKnLk95gzJyACBGzgNIOP/\r\n4gFgO4n+0H5gRF8LwHzFaKfj+t/jjR53nc1jUQzqMPYrGN7UIqf78wZlC7U6\r\n+HZjcILbs+n7HpaIz7NbscEfIGedhvA+9hjGGIFoKs4mCTc8Mu5KP0b/Ok0z\r\nlWfJSxWwuNy006EegaHR1FPiiM12qXRZtG4=\r\n=yC/e\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.0_1661164278577_0.4672195935668291"},"_hasShrinkwrap":false},"2.3.0":{"name":"base-repo","version":"2.3.0","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"types":"./dist/index.d.ts","gitHead":"b676eb6116d50aaf4a8444bea1ea24e4fd1e273f","_id":"base-repo@2.3.0","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-/MRTLZhUTOlSyKlFcq2OMSH7GVkrCZv7sUl7YUO3Y2XKEtMhc6vweu5v1te/OK17oYiJ1DRfYnr8sF1I9EqnRg==","shasum":"ca2c5b313989827e2903817385df9094d01f4f84","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.3.0.tgz","fileCount":44,"unpackedSize":233721,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF23vtGuxe3nkSyYZ7wZw+uVpojqIjLJNnvSfQSt94FPAiEAnQW0q6am5ohTqcYjjxwPSy8SGQ7bnLnbs1x6j63X604="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjA1yIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpvhA//YjTRsgqmAs6LeJ8woR+BhlDnuHXAGzhZbgqLj016wd7vAjLs\r\nSEzXa2xImJR1/N5n+adUho/dKS9uH35C/y9Fsya0yQa68ZqqfS5Q9i+z3cbt\r\n4J6KZ1qm93DEImuXN9IxrPL89U0rBMifx+3DNQXCqY7BQ11ibtoyMm2NYBw1\r\nckmZUQ3ZtfZhGt25mGKl17HNX8m3lxos3oleIdpNqv9Q0CzvcHiqVLpIyyMh\r\nRN7wjmNZbAGH/9AqHpF/ZJEqVMXybLpGfgaj4NaQaAXe7hCTtVhHqW1gwdnd\r\ng4tfjY5v4mO+v1o/YPMKIaziD11pzmVxG+ZV4LNvU//cfPDfeSGQ5ZbequNH\r\ngcqbbbgUG0xiRCIJ6mhiqOF8FlaFlORZyYNypeCxZDf4RweBhA0t9O+hjtAD\r\nqQfQBKC8KU19Gvr0Rfsl5Mzi6FVYIXvZd+z4AJzfSrgEW612mHbm1Gi1FC/P\r\n4ueZ1QytVVIxZXnzzdgFJRQZ5/qdY6krwn+T4n/fksTh8NzsxeWbwOMLDGEU\r\nGI2SydIll2YF1BkcZAhqoR9BmYzKRAGEOkoRLd7FBAwQ42LivDs73pfEI0cP\r\nBmFKpczxHtpI0370QONfB3TZdL3ERFjUsx3TUvDtDLFBDpBYEXSsZCstgiYb\r\n+L4uKL+KCLrVHGCGisocHXdVGmpXJc8jU18=\r\n=IjNu\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.3.0_1661164680303_0.15747538134649064"},"_hasShrinkwrap":false},"2.3.1":{"name":"base-repo","version":"2.3.1","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"types":"./dist/index.d.ts","gitHead":"1d22293f5e0dada60022e54ecbf27b4a58a40692","_id":"base-repo@2.3.1","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-uNxVCCBqyX3XRZM/5Y/P6cU+ESWeOeJu1cIOJzt4YA4+wm9qpf0catXCF8gqQAGQj5P6bBZ+wIfqAVQUs5pWTA==","shasum":"5771be8fa9dd94013ecff1385d1d8a74799a8417","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.3.1.tgz","fileCount":44,"unpackedSize":500812,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDu6VlzTOQv+qS8OVsZffoub+gtsbY6OhC/PTZjw0ITOAiEAwwTb2gda8kYtcX52rvklCZK/1ZMzOfg/6oavZFTSWAs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJFJ7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2MhAAm7346ienieXCCSSjqA47b/u61WZ2c6rHblY1+po8n8OScx57\r\nboUX1aodk3jJiS5Yj4ggsd3pyB4v6B/mMRejP2OCQZjQ723Hs3X6d5aZ5dnm\r\n4m3yXzqkmDqFCx1TiEjRUvRXq0yu/nrn+sumsqbWH5dyJInDTmobhooI5zY2\r\nhGDjjEzl/eb/oqP8ovc7QQgPVM5A4/1BBNdKA5+0GBvk0MF0+EywLSa/sVOZ\r\nb7KN/t48hryOLXrf1RS54zrTKnDK75r2SbOcX48ccov+lQW3Y+pIaMWHE84G\r\nMqkwArOZxknPI0KSXORKzBuuVpADYB9iPGamc2LxxF8H3J2WX49TgL67DWih\r\nuqrQVr7yUG6dGf8htwNbIsOEeOdyUswEAn99rgbKIWe5IdnFzuIIGogUq2ma\r\nc21rq0RWqv5RUlgSxv7BNvlLxYlT3/vCZpH0xBaXYSbhUA8q4awq6EZCagZ/\r\nl41KRR/oLQ4HdEIGx3L0tMkAflCEM71negouuim2WCs3KhGsp6vZf2UuQZSN\r\nlXhzIBWekxBJAUW69Q5hqq47FfqCyoqsXEkxExW9hBk95wFWRKlWMOAHR677\r\nG4tJHj41tDgozi0GzVXlsA4aq4YwsbZ7isMM0cOP1jEc37tJhVyUhf8U4thS\r\nDK9gvAqb0FiJgcgM96TRQeOhbTK+iZKaysg=\r\n=lmuB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.3.1_1663324795464_0.9498802184967676"},"_hasShrinkwrap":false},"3.1.1":{"name":"base-repo","version":"3.1.1","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"4120c898b39eb84e64ee23e0440705b1e0811424","_id":"base-repo@3.1.1","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-DePoQIwl6zX8NJ1uXGtsuKv7K2mNcpK3tnpmHHuz8kCr/iZ1df2plH3aoimPB4Tw7Gp0zr6oQUFNGXlTsyIsiw==","shasum":"e314a88879dcf8b6639a231cf0adefa954cdb863","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.1.tgz","fileCount":56,"unpackedSize":193693,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBzk9Y9Z8rR5ne4l034cH8ZfOTLT+Igzs9gqepriHHTgIhAMGc30E4N6P1Rq9+UaT8Z9CR4Wv0vMLF/d6WwYHjkLXT"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJFMfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmotXQ/+JZzkoOWkIzkOjnbCylecWk7L8hmPaiVevmG+8c92UrKFG24f\r\nHJFUcVXmx4idAgGQSRhss5IpPKEyszpr0buHVr2YEZhdqSuopPiw/cHCNKz3\r\nb73c4leA4mWOzQr/N894mnoHu1KTWZI1GCs8sAviANmUZomKRpJBJF1/NE/6\r\nYeqQMZ+XPqUxCfVcq1rXps3dFtML+w4dVCcoOeJImPher9fmPa91/Ndg/9xn\r\nXgyXVMYZ27fh9TWRTzSdLWshZ862uFdFjAW5pv8Wven1bUrxhO+07xSMVlAU\r\nb72QzU+B9SG33P0djZ2Fhyy+Kv8Kx/d8d24frpSvk14nFoQlEnnP3tRadStt\r\nQO0iAs4625fiVFXDQbdZmGMKla6082qs/Ufb891BSN2vpTXETXHZKN0qGA7+\r\nPtfqZBIqhHBTw/9yNtBoi1RrZlDoP6u41El1CJeQHBDoyBgikKThEQC+URpq\r\nK9utAL8jxA2V12suj/lhejfrkuAUjAqYy9m225uAejjuD5sE0wnxzIF8qkHo\r\n1O31+oxzZiH/DF6DUz758xND8JTG3F44Nvw/FZB5oAhpER6h2zuQkzM44f4R\r\n7eWe/xKpmWHvt4Z00TvhWhmiUKcuOf86aZZqgBolHraI3v+KIfIO2XS+PdiX\r\nkEv4557JflH3Dmoj7eCpMlm79rLOrQclwwo=\r\n=snfy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.1_1663324959129_0.143189799762782"},"_hasShrinkwrap":false},"2.3.2":{"name":"base-repo","version":"2.3.2","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","prettier":"^1.19.1","sequelize":"^6.23.0","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.4","sequelize-typescript":"^2.1.0"},"types":"./dist/index.d.ts","gitHead":"2be8080c7a44c14bf3d4f004939a345aa867d241","_id":"base-repo@2.3.2","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-O/UUBWeY3Sj3tRnUWAXfHS7sq9apS5FJE6y50WO1GpX5cMweNcTsHcQt4CE8bazFlZVqOS063gqbdbTdpVwX9g==","shasum":"f52998a55ff5d722e55f0366cfeb3dfe5af95ef8","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.3.2.tgz","fileCount":44,"unpackedSize":500620,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDKCKAfnPdeBhoEK8fSoWpbqltnqu/mYwM4xw/QXTCvZAiACRninZnfx8wi9VLbamjOqk9H6hy04ru7kRbmuWfAj6g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKJqlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpjVhAAggnHg3/7j9aAcfrD/4iy0LYY2ek2+m912pXg0gq2IRADoLZh\r\nDNVuKVv+a71m1MSVJfmGqqTfm9ENSm3gfvFVp9zpYEDMPgGwusC1K0LyPhpg\r\n/FlwMKsf9smsgTtYQmdj54O1yDPjFhYP9HUs8K3fGvpwn4Ph7ybtskL8Imzz\r\noiDmR8xMQ0jvTw7oGgWRW9gtmcCf4Vl/kTleHL3ewWk8IU3agUwNnrl3MX5x\r\niXFCISJUwwV9wrjAZOBhqHy0RJwEznOvJMgkyWy2Nx5TSSiK3yhhSQ+MqEzZ\r\n1VdhwuMYD9w8J8eQC+JOBFiO8AYw37m03jwRfhFBg03Ld0rRwsiCw45ltz0m\r\n+4ADm8x6kmhV4ISnV/1dFigkUPCpmtzmRDVZXQ/M76dyBbpwbKsn8OjJtVIQ\r\nSVHuDNBTTQgr+wjFVN/e48caFJQ8HuAnf+D1susHIQUSTiBmEO7ugJksFok/\r\niPU7rsc3hk/TKpnYTeUxrYl0HdvuadZSxf9vP1ZynQYUf2PsW5plCXHWCI44\r\nBuQlaobGUspA/yDdVdd1nYWNmLNMjUo9tvKL7/bvLTm8VdERWPqZFwelMoe9\r\nDE4ZPltUhll6KJU6kGj1Vcn5Jhkc51VRMo2LkCprAXm/yAk2Ai7RouxfsKVX\r\nsA45urYW3oGgKFvmJx0gOAfHKnqgsOugxcI=\r\n=wvmU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.3.2_1663605412980_0.5841694919599016"},"_hasShrinkwrap":false},"3.1.2":{"name":"base-repo","version":"3.1.2","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"3705e2dc1d082ed67c8e4bf3cee1a6ac8825301c","_id":"base-repo@3.1.2","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-3rZcBVoIgWoDd87y840K3o91z4W1Skc0uQHc6Oztsw0bh7dXnZPIn+x7Ud9vk9jVZSfNOApzKl+jnh7rFjtgaw==","shasum":"0d9a2482dad0154d76538e11b5147d24d821fe6b","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.2.tgz","fileCount":56,"unpackedSize":193693,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwLduyd06qXfarQeWJqa9xkOTco4vz7p3VDuKRE66kngIhANqpVPaTfHQqgxXb16KfijWAuep6LShNNwtxQgqd0v/J"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKJ0EACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrvfg/5AMz8kcKpZ+orVlabitCqOux9aSOQCgGYvXIF/AbtdbXsXx0F\r\nXqnA+OockDXCTHF0RgCxpodd2nVf3GKYVrp4p3q0rmGVqee7CqmCgb9F1BhM\r\n2+6Q2nxvoeW954uhIa8P3ZHTcBbR7OG8GLNPktInjTedGAa/XsCnL4m+/1oL\r\nD6R+8GldYPtJiJMfUwr6lHtWsWfr+zBZBz4Wll+rPkT72rMV7KL8LkL5XFR5\r\nslIJ3IWs6wLY1Bt8fcaH1SA9Ub5t3BVhvNhpSDmm4VyY1yxyhVVzVAU6Lkz0\r\nndIW9E8v+KPlB4UXY3WxRs0rceNaZaWj4VW3cxH3V4KzooIPmHj6LfaSp0KJ\r\nFttUKD/KbfUDIY3lnE95CU3xtCxbinTfD6DBkHy9tP+wSpx8xe0Q4GPdTVR0\r\noLSqQ5JvfDzp7VB56323YH035Z7c+dJg8CDDM9C+9T4Uai0W39/+UDyf5kty\r\n1ndOUeF2Y0+gGTTTvQwK7bu7CgvIAff+G20GJR/BQxpTz0N0RCIhKDPvBYVS\r\nfZqzof7tvlwOSRxzHPemwg5oKtBTOM9XESjfheLN2k3VHV69J7uthrK7rsMX\r\nHRJcdUgUK9ebIE7Irdq0Ulp7whx107wOWtpW+rovqIOiqmN5MyPoMybyukLO\r\niJjERjAIesIQPm7ccX1EGElLzzBaR16qT+w=\r\n=xx0t\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.2_1663606020284_0.019809088558515597"},"_hasShrinkwrap":false},"2.3.3":{"name":"base-repo","version":"2.3.3","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","prettier":"^1.19.1","sequelize":"^6.23.0","sequelize-typescript":"^2.1.0","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.4","sequelize-typescript":"^2.1.0"},"types":"./dist/index.d.ts","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0)\n\n## Installation\n\n```bash\n$ npm install base-repo sequelize@6.6.2 sequelize-typescript@2.1.0\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure defined all model of sequelize at this level\nand\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RedisModule.register(cacheConfig() as RedisModuleOptions),\n\n    RepositoryModule.forRoot({\n      defaultTTL: 1000, // DEFINE TTL FOR ALL PROJECT\n      callbackGet: async ({ key }) => {\n        return AppModule.redisService.getClient().get(key) // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      },\n      callbackInvalidate: ({ key }) => { //\n        return AppModule.redisService.getClient().del(key) // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      },\n      callbackSet: async ({ key, value, ttl }) => {\n        return AppModule.redisService.getClient().set(key, value, 'EX', ttl) // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      }\n      callbackGetKey: async ({ keyPattern }) => {\n        return AppModule.redisService.getClient().keys(keyPattern); // TO FIND KEYS BY PATTERN\n      },\n    }),\n\n    SequelizeModule.forRoot({\n      ...DBOptions,\n    }),\n   ...\n  ],\n})\n\nexport class AppModule {\n  static redisService: RedisService\n\n  constructor(redisService: RedisService) {\n    AppModule.redisService = redisService // DEFINE CACHE SERVICE THAT CAN CALLED AT REPOSITORY DEFINITION\n\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne and automatically invalidate findOneCache/findByPkCache\n\n#### `@Cache` API Options\n\n| Options       | Description                                                         |\n| ------------- | ------------------------------------------------------------------- |\n| `options.ttl` | set TTL for this model, this will override ttl at module (Optional) |\n\n```typescript\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {\n  // default `{modelName} data not found'\n  static notFoundMessage = 'your model not found message';\n}\n```\n\nthe Model need to extends `BaseModel`\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheOptions)`\n\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\n// file: DmCourse.ts\n\n@Cache() //default ttl module\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n\n...\n\n// file: Course.controller.ts\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache({\n      where: {\n        isDeleted: false,\n        name: 'Math',\n      },\n      rejectOnEmpty: true, // use model default throw, or use use throw Exception\n      // rejectOnEmpty: new BadRequestException('message')\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `id`                         | value of id                                                                                                              |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                       |\n| ------------------- | --------------------------------------------------------------------------------- |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional) |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n- [Email](fauzifadhi@gmail.com)\n","readmeFilename":"README.md","gitHead":"e6eb56f1b76d5a50db474bec808b010f7e877006","_id":"base-repo@2.3.3","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-sf5x6fRFIzEH07INMXwFvNFMoewghS1QLJSg+dWM85E1d3Od3TcjnmsO7jA6OiXqoYh5/l9r4JCB72rGxNu8Dg==","shasum":"eaa562954a276a1aabdccac8a4f3a2c40342353b","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.3.3.tgz","fileCount":44,"unpackedSize":500620,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiI0drhpDUfBJ+WK23PpPK/W55lgwrgDYcozUa8jaLRQIhAPyBWyUbOnbuURZil8qHDDQ9j8D+HifuWRDCA50V0u56"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKJ01ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrEzQ//TpAwHJ5Y/b0DsHaEwl/ycsww+W096EHUbALNP1pdZVzpdw3j\r\nc1dExcOGdCUQbfdkhI7bKudbiFFdY6QGdmNNiTskix582cvO64BSqwKWrxYS\r\nccvbOTPZI300SpQtZGU9izK0Cyepq/KxTSdAT1DhBx0PfmS0GMblc0rh2gGH\r\n6LOCHHxdgMVxavcuv70QfgcoKR8LLUwsglQInpCEcZ7w6wiThQZ+MHH8VPgj\r\nBnaSQr215Jnayo8d1MMNfOP4Ixzm2mHHRpu3gsrMFm1zMG7nXjHNDxMCkoMy\r\n8zucqt3zCDpOP5kNx0LntieZnsQbLMf1f7BM6Ht27VvZuQMXoO8cGbHtlzLd\r\nhul37PoJKHJcsCBEU300kSQV8aLovTsCpP6tD+jsHyqC89wir2ejtvpFoS7k\r\n3PIzHZU/uUmlcm72xIyK35qcUhXmu84aWpVOZ95Rdm/ygtQ6STaUWEHb0j4j\r\n3FC3dVBgZg7MKTXqLuNc2IzOn0uc1wozS2RwA9avAll2C4jTsraq8uTifLJ4\r\nDsBrIcjqGHCF3Awf8OlmzIYCvoaJ52ZwCaxasfQg02tA+CJtiLE0RxWbWoaH\r\nRvacJR4nTPvDu/uPeYj5CWb+rAqbXTVmrX9EFWdcaHTooeS3PqS7qPwLRX/U\r\n/QkJXL5gDQBNCibpowcoCtwC1lL0yxkomLA=\r\n=3fS5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.3.3_1663606069021_0.23216936805552324"},"_hasShrinkwrap":false},"3.1.3":{"name":"base-repo","version":"3.1.3","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"7f849678e20def1ca6ee0c1a7b3f68d66ca222f8","_id":"base-repo@3.1.3","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-Cg/zFOLI1yHgqihJe47idis9paKLxWoh6E9czKdljUHr0LhkQoMUUmnYV7HbJKJVPac4gAS+FIpqG7LJJpujKQ==","shasum":"c2d9cc2a49f1f2c2e0d8353d079fbb35d18386da","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.3.tgz","fileCount":56,"unpackedSize":193903,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAPkXmlPPejuPya6Qv+u3viGnju4DMYLm/a5TeIZv9tQIhAOdx6e+wWNhahgh5dKLsm8PGr2d295bGDiVODYymR8xe"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNS0bACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpgXBAAgnVT/Pgr8V/LcuxYxDIxroP4lveaNfnplZJepRmpDK9OburU\r\ntqonc8ijv2PxfmU7Sc1gRhjHXMn1wd3y5pDkS98tXKpPK1M7Ax6WE+BEuYej\r\niANGC61xbU376MPXr1wMEsxq6iFoizHgBU/yUTvvQ6+QGOFJAs0yiVDr7Lzv\r\nh4Zxx7zl9S40mSX5Z1+SQ2JenFlbyOrTYZ9m65REuqEXXJLI/XljwWV/EgGB\r\nEOaiovDht/R9FYsHhz98k3LBPyEHmkzoScJyP7m4Fs9oft1Yb9CvgNkpFb8X\r\nxjGFBx7LZvcDsAvYJcJTI+AtDgWjSlsKwFlumbC/mwWuAjotco0bD2PDIrK9\r\nbG6X4sq9eYSBRVyVVMOrOFBNXbblgTMcw1XAg0aIzcpS0qWlQ6KmIbVDlll1\r\n6TGGsFHpWoxB+S9jdlWAWWaXmoh587alHHD3/nlDej6Cbz9V/MPz+GXBujSf\r\nlX3T2lppf3CdYIX65cMgNlGOWcy+8Zg5Gqz9mhM7OGC11gWN9cXO22ZlNFzW\r\nwPVVDfMu6ex7840yQugFYimfrNF5GJ5knOiD9VZ0CmkVy7HgBKZena/liT0i\r\nddko5nQ/Mx8ydLmewcZKGGTyecZ1zxGZA7wWKCd8SiGnw0p/sJqr5EjoMxAu\r\nXoLAr2nnvu5p2+brpVI9hyf++lS2jVHCQwE=\r\n=L1WB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.3_1664429338874_0.03755475153438104"},"_hasShrinkwrap":false},"3.1.4":{"name":"base-repo","version":"3.1.4","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"d05c1c332229c8ef0760628f922d45f50420c619","_id":"base-repo@3.1.4","_nodeVersion":"16.17.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-GQ1YC5qyZrC6FYJlIIP5IdItNJXP9/pOcrgzWfQbdRRgeSTovDj+iukpY2WoRdncswG7pZCR7XSDw7UXqtp1dQ==","shasum":"7d18777b77bf0cc178899212fec412a7f45a8712","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.4.tgz","fileCount":56,"unpackedSize":194119,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDW9UwKqUFsK9/qWt3c2llixFlCJgw0Y+cimjm4yFiEcgIgALZISVfHdxfe28ae9KYrZCE7xgN7/LGsX+9wVGzsSa4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc+5PACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrdFg/+IXXK6UXA8OfKmlOnwG9zjrpx7ajLC4MsUSG3ZEJhGQo/6oSm\r\n9wZXMfBUxsnFi3xlRSQsw8ATfaDegvAhg3h5pBZWRr66NkYs+HqVQmhR6R/e\r\n3bqb47kdzyxzGnm9SDTeKa80eCn5dzmVCYq3lhXOx0uCvbC4DRoYLHEHyW7h\r\n5h02T0BrVnXJ1Fek8bdaypwGNtWIUXxQlPXzOt3Cty7JDHhFFv5IPXhdNZrZ\r\nb8srS2DehreKiKlSIH+b5tSssyLkIgqcg5SSsuk+u7ggaLItv6X+F6Zs18Pv\r\nWYUaLo4Bhg0uJ6lzyeNS/CWR+GM6XVqhqg9mQd/oLtIMJynADLoJzqLZsgFv\r\nKOxwK/794l/aiDP/gxeMxxXjo3EUcYgIDsFkZjpkGseDiePgF8+mIKUeUtXd\r\ndE7WXvjk7UAihsGylmPtmSgz+3//iDb47+31AQglfdQB9Nx/6eDeBjwn7A4n\r\n0v6/XrbeBc5PbFJUUefE7MMUcahR5d9ZgAR24crq7iGrYK8xLuSkenMdBTBv\r\nrIFO10Bol6pO0jBMl2AVkKRJMUk3a4N8Svve6dtK4HHYTXm67xXU9MxRQG73\r\nJoBj4ByhKVGsCKkoVASwmQRiX77ZaoRp891nGpaabcAcJt7iOQlKp0Aggr8n\r\nyH2i8KgyYyQfFbyrcDqvO211ZRk1CH7LvnE=\r\n=7MKk\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.4_1668542031499_0.4662705419817115"},"_hasShrinkwrap":false},"2.2.4-0":{"name":"base-repo","version":"2.2.4-0","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^7.0.0","@nestjs/core":"^7.0.0","@nestjs/platform-express":"^7.0.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^6.5.4"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.0","@types/express":"^4.17.3","@types/jest":"25.2.3","@types/node":"^13.9.1","@types/sequelize":"^4.28.9","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"3.0.2","@typescript-eslint/parser":"3.0.2","eslint":"7.1.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","prettier":"^1.19.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","sequelize":"^6.6.2","sequelize-typescript":"^2.1.0","typescript":"^3.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.6.2","sequelize-typescript":"^2.1.0"},"gitHead":"e348ad16d78433776d6e8d0ef69ae81e9fc0edd2","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0)\n\n## Installation\n\n```bash\n$ npm install base-repo sequelize@6.6.2 sequelize-typescript@2.1.0\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure defined all model of sequelize at this level\nand\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RedisModule.register(cacheConfig() as RedisModuleOptions),\n\n    RepositoryModule.forRoot({\n      defaultTTL: 1000, // DEFINE TTL FOR ALL PROJECT\n      callbackGet: async ({ key }) => {\n        return AppModule.redisService.getClient().get(key) // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      },\n      callbackInvalidate: ({ key }) => { //\n        return AppModule.redisService.getClient().del(key) // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      },\n      callbackSet: async ({ key, value, ttl }) => {\n        return AppModule.redisService.getClient().set(key, value, 'EX', ttl) // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      }\n      callbackGetKey: async ({ keyPattern }) => {\n        return AppModule.redisService.getClient().keys(keyPattern); // TO FIND KEYS BY PATTERN\n      },\n    }),\n\n    SequelizeModule.forRoot({\n      ...DBOptions,\n    }),\n   ...\n  ],\n})\n\nexport class AppModule {\n  static redisService: RedisService\n\n  constructor(redisService: RedisService) {\n    AppModule.redisService = redisService // DEFINE CACHE SERVICE THAT CAN CALLED AT REPOSITORY DEFINITION\n\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne and automatically invalidate findOneCache/findByPkCache\n\n#### `@Cache` API Options\n\n| Options       | Description                                                         |\n| ------------- | ------------------------------------------------------------------- |\n| `options.ttl` | set TTL for this model, this will override ttl at module (Optional) |\n\n```typescript\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {\n  // default `{modelName} data not found'\n  static notFoundMessage = 'your model not found message';\n}\n```\n\nthe Model need to extends `BaseModel`\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheOptions)`\n\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\n// file: DmCourse.ts\n\n@Cache() //default ttl module\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n\n...\n\n// file: Course.controller.ts\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache({\n      where: {\n        isDeleted: false,\n        name: 'Math',\n      },\n      rejectOnEmpty: true, // use model default throw, or use use throw Exception\n      // rejectOnEmpty: new BadRequestException('message')\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `id`                         | value of id                                                                                                              |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                       |\n| ------------------- | --------------------------------------------------------------------------------- |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional) |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n- [Email](fauzifadhi@gmail.com)\n","readmeFilename":"README.md","_id":"base-repo@2.2.4-0","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-Ros6V7JPoyrrnqfqC2T6iraqbzEuZZVLNi4uoGb442xPt/TPhfRD4NNm6uyG0Zr2TFOTEIZJmnxjFQjcQO+PCw==","shasum":"a66989592244d213a1a99ce8612dbd9d11b81831","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-2.2.4-0.tgz","fileCount":44,"unpackedSize":496036,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmbu0TIED9V7fWQ/6hfbFMgR5/XyiBqOXZtXkDd0r8EwIhAJlcq9h0KI/xNFNo/FcIB1qoMedsiOX4O9cVl/ZqQUuJ"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjebH1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpbdQ//WF1+4YOckhTVGy+1tnPLwmWZmqOSyw8x2Q8ddhHLyJDijyi5\r\noGL17iGC+7mV59a1VepPbtJ/29dpX707EDZj/9OODaXWbHfipzzjTryTfleX\r\nCxYQ1hSCBSCQmOJt19RTb+7Mvj5XQqHHlwQm+SGlF4FQicnCTPGTXHKKkCgv\r\nfsAR2VU6EF3LP/+SApbNpQjEQv6V50BB+GI48nkqHbEIzFuMZr3Khv3vIirL\r\nT+83mp0+dwuDeItTMcdzbTmD7XhrEcl4IpL9Rybnt8dbmGUsEbWbaQfDRoHA\r\ntb/TrEBKvQkXOI4sIqvCWmccXJiogHKjWxgKFz7hptju+PDyXk9HCxZT26ig\r\nVzNcqb9ZeoMm1chJPghaMsggxFC1QCFByA1AB1m4Cy1MbzxSEzlJN54/UWXh\r\nWuCjrhmxZ/6Hn2suJjBBsu+CpIlrBdVEt2yjVZAd8d9kHK/Z3e52+5NKp7V2\r\nW+T17A4ka7saMrFOhhJqsaUa+hgf+mZaxYPJSe5wdWnt/hw0yc+V5imMdpV6\r\nmCl1s0ParxJM7ERrAgRfzafSOqDub6h6zOVsfVUbraNaUeB2zbqTC8NXLjGS\r\n5EQtrmbRRlBrc/EWh5aGIdHRppwE+s9M8vpDcbeG1cm4pVFLcY4skvC3SF1K\r\n14pDszJd9Yj+/qwxagqgQFY5yAEwEhHhAE0=\r\n=Lddq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_2.2.4-0_1668919797790_0.9469643185501642"},"_hasShrinkwrap":false},"3.1.5-beta.0":{"name":"base-repo","version":"3.1.5-beta.0","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0 or later)\n\n## Installation\n\n```bash\n$ npm install base-repo sequelize@^6.x.x sequelize-typescript@^2.x.x\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure defined all model of sequelize at this level\nand\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RedisModule.register(cacheConfig() as RedisModuleOptions),\n\n    SequelizeCacheModule.register({\n      defaultTTL: 5, // DEFINE TTL FOR ALL PROJECT seconds\n      // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      callbackGet: async ({ key }) => CacheConfigModule.store.get(key),\n      // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      callbackInvalidate: ({ key }) => (CacheConfigModule?.store?.del?.(key) || null),\n      // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      callbackSet: async ({ key, value, ttl }) => CacheConfigModule.store.set(key, value, { ttl }),\n      callbackGetKey: async ({ keyPattern }) => CacheConfigModule.store.keys?.(`${process.env.CACHE_PREFIX}${keyPattern}`) || [],\n    }),\n\n    SequelizeModule.forRoot({\n      ...DBOptions,\n    }),\n   ...\n  ],\n})\n\nexport class CacheConfigModule {\n  static store: Store;\n\n  constructor(@Inject(CACHE_MANAGER) private store: Store) {\n    CacheConfigModule.store = this.store;\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne and automatically invalidate findOneCache/findByPkCache\n\n#### `@Cache` API Options\n\n| Options       | Description                                                         |\n| ------------- | ------------------------------------------------------------------- |\n| `options.ttl` | set TTL for this model, this will override ttl at module (Optional) |\n\n```typescript\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {\n  // default `{modelName} data not found'\n  static notFoundMessage = 'your model not found message';\n\n  /**\n   *  @default `updatedAt`\n   * @description `this is for checking newest updated timestamp for cached list.`\n  */\n  static onUpdateAttribute = 'modifiedAt'\n\n   @UpdatedAt\n  @Column({ field: 'UpdatedAt' })\n    modifiedAt: Date;\n}\n```\n\nthe Model need to extends `BaseModel`\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheOptions)`\n\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\n// file: DmCourse.ts\n\n@Cache() //default ttl module\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n\n...\n\n// file: Course.controller.ts\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache({\n      where: {\n        isDeleted: false,\n        name: 'Math',\n      },\n      rejectOnEmpty: true, // use model default throw, or use use throw Exception\n      // rejectOnEmpty: new BadRequestException('message')\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `id`                         | value of id                                                                                                              |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                                                            |\n| ------------------- | ---------------------------------------------------------------------------------                                      |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional), `(Required)` when has include Query |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                                                     |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n- [Email](fauzifadhi@gmail.com)\n","readmeFilename":"README.md","gitHead":"9ce659a9d5ef2542ebb37310c8c0b12feed244c2","_id":"base-repo@3.1.5-beta.0","_nodeVersion":"16.17.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-25HeRm2VfD5Oza5G/LhxJcuz0e6mShkmiGV3aIZbcf51xsbmPVRqL105UYtzOFR2XZjsY6iI9vE8ZwQheHUTSg==","shasum":"aeb026a8c20228ab84e439721ba02231f31a0f84","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.5-beta.0.tgz","fileCount":56,"unpackedSize":195624,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIALB5NM07sMT3nEKk68fWHcwEJn6bKd2FaFP7GjSKqNbAiEAtUpDT2vYh/Q54xscDcGXdSmI4DW0xFCBI9yaFEW4C+U="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxAeVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrF8hAAgcqBxP0T9ifRtrxfjJt5V9/MCnRt/EVtXifP2JcVWeGoKEeP\r\nUPinXud39Gdo/mrrh9HFUiXbyyk1Z2YzYY4pc9tIvpE3Hz0OWiPrSM18LIRb\r\n2MfQr9BQrPL0R1lNaU/HZux0wtqSqHsU82eGSsgvfB/+/mwUrTvaYkyifyXm\r\nZQCJXkqat6pkfSJDIOxtoPapNHgNAnBSNwmKHFI5o/zgLja7V8/JlKOeQI3C\r\nMuwfido7khcOsyiNpqlpLwLDm4JV52JrPfjvIMea7wAs5zczvNTlCyrUGhNx\r\nl+apUNuEeCMaZI5lHrg7ZxeZkyyYu7WpiuKRcJzWa9IDdojfSoig7KDqCnZG\r\n8w5rEZrARDMj16RpvqtjfpB6wuqPVL/RNmNglF4LnZZHMtn1n9HcVD1Wylp3\r\nLwUROu+vy3cmjO1lV6rdp/M6Riip0dz7IaawuyK4JRGLf/8Ck5/5uLFA7HS8\r\natQyE+M2QJO6wZhTQh/DPk0ZO+q10swme6zLeicNU/p3IYScYP6RQGYJkTk3\r\nk6tSPMAaHJo5G8yCP8Ck3eYJyjsseBkfi0k499ICurPT2dtgjMwOJDfbNTSd\r\nVMKrmShxmF2NrA2mCw7eccrVIWOT4AubEotaHpFBGzn6s7HxdGhS/ZyO7ocC\r\n3ecYkfQlZr7l1ILlV+Lw1V1j4ldklqE4kRU=\r\n=e07z\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.5-beta.0_1673791381728_0.7549037746697644"},"_hasShrinkwrap":false},"3.1.5-beta.1":{"name":"base-repo","version":"3.1.5-beta.1","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0 or later)\n\n## Installation\n\n```bash\n$ npm install base-repo sequelize@^6.x.x sequelize-typescript@^2.x.x\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure defined all model of sequelize at this level\nand\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RedisModule.register(cacheConfig() as RedisModuleOptions),\n\n    SequelizeCacheModule.register({\n      defaultTTL: 5, // DEFINE TTL FOR ALL PROJECT seconds\n      // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      callbackGet: async ({ key }) => CacheConfigModule.store.get(key),\n      // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      callbackInvalidate: ({ key }) => (CacheConfigModule?.store?.del?.(key) || null),\n      // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      callbackSet: async ({ key, value, ttl }) => CacheConfigModule.store.set(key, value, { ttl }),\n      callbackGetKey: async ({ keyPattern }) => CacheConfigModule.store.keys?.(`${process.env.CACHE_PREFIX}${keyPattern}`) || [],\n    }),\n\n    SequelizeModule.forRoot({\n      ...DBOptions,\n    }),\n   ...\n  ],\n})\n\nexport class CacheConfigModule {\n  static store: Store;\n\n  constructor(@Inject(CACHE_MANAGER) private store: Store) {\n    CacheConfigModule.store = this.store;\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne and automatically invalidate findOneCache/findByPkCache\n\n#### `@Cache` API Options\n\n| Options       | Description                                                         |\n| ------------- | ------------------------------------------------------------------- |\n| `options.ttl` | set TTL for this model, this will override ttl at module (Optional) |\n\n```typescript\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {\n  // default `{modelName} data not found'\n  static notFoundMessage = 'your model not found message';\n\n  /**\n   *  @default `updatedAt`\n   * @description `this is for checking newest updated timestamp for cached list.`\n  */\n  static onUpdateAttribute = 'modifiedAt'\n\n   @UpdatedAt\n  @Column({ field: 'UpdatedAt' })\n    modifiedAt: Date;\n}\n```\n\nthe Model need to extends `BaseModel`\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheOptions)`\n\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\n// file: DmCourse.ts\n\n@Cache() //default ttl module\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n\n...\n\n// file: Course.controller.ts\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache({\n      where: {\n        isDeleted: false,\n        name: 'Math',\n      },\n      rejectOnEmpty: true, // use model default throw, or use use throw Exception\n      // rejectOnEmpty: new BadRequestException('message')\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `id`                         | value of id                                                                                                              |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                                                            |\n| ------------------- | ---------------------------------------------------------------------------------                                      |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional), `(Required)` when has include Query |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                                                     |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n- [Email](fauzifadhi@gmail.com)\n","readmeFilename":"README.md","gitHead":"fbb11d024ad2c720164da92495055384a4bb8e6a","_id":"base-repo@3.1.5-beta.1","_nodeVersion":"16.17.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-GaUF0Gz7DRDiRATgkPrSkfXxXGDYqR2cBScOIWdK3QD5kSPi0pGXLj7zrnc6WNCr4cxm+k3l0zBDTZhVqxGilg==","shasum":"fe19fab278e3c0d3ba30777eead86757e4ebfe70","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.5-beta.1.tgz","fileCount":56,"unpackedSize":194566,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD18SO7g6arssEdE4sVtTJ3JgWrc+1AdZo/JG2Fe0bIeAIhAKk0oVI7y2rrCE8MDwRAph7/beEnKUlYGNFt2GNJ2Ntb"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxAxnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpwDxAAgiZJKBczjOosZ80/zfgQwhRkoL9mzYPwAfumqDbE6Xhkx6y7\r\nKPgm08f8yaCFI6HDlMxEKCZaVqE9W5uGg5HE6N7UYfUvmrU2roBtU2FkYHSu\r\nLO3+rXkepVSWow/Wu0PPHaWKcyiudQxgWMh+CxtdwX/++PF6Ekb6tWuyQpmN\r\nGr/R6shqj5joNtJjMOvrf1Y+D9RDZBBCrlYWHTgVjzoj4wXUws4UoTMuOroj\r\nr92OxEHQnzKqbT/k8zpcFOwOJeraAuo9WA/apkQfncRKIWXJu/Sroo7XPkhL\r\nVcAyX8KhsbV5DbkMZ/KsLE1gG0suO6Y7Oybm1mqTntI7ABoFKPIpY2rb3ytE\r\n7oPE3WmccAPXeQP4seGsodhxVu1JW5zEuXMD2RgREVTe/YnX1UWRP2rMdY6r\r\nw7F5KIEElFOLplcXkTry5ubGkhX3ZkH/KYDSglVrkay2AumYdneb0iISc0ni\r\nM+HDj3WCzKsiPxkb/cInNgR1DEFaGEGOn34mnCrEEHYzgUJsaC2Zvr1Eam8c\r\nMv3d9xJYvdYhexRNfsTuhvaYbpaLmoF8BGLclhBxAUszQm04fa8vIOC4fNTY\r\ng9H7+b0nKPNfU8CmRKZmxJLILghNp6CtRqF785PVsZZEVmvFmwKKIRvv8VjB\r\nFmm3O3FRDk2Kf4MbRnAQ3G1LllNlTJgzDqs=\r\n=dNw0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.5-beta.1_1673792614876_0.2162740800680616"},"_hasShrinkwrap":false},"3.1.5-beta.2":{"name":"base-repo","version":"3.1.5-beta.2","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0 or later)\n\n## Installation\n\n```bash\n$ npm install base-repo sequelize@^6.x.x sequelize-typescript@^2.x.x\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure defined all model of sequelize at this level\nand\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RedisModule.register(cacheConfig() as RedisModuleOptions),\n\n    SequelizeCacheModule.register({\n      defaultTTL: 5, // DEFINE TTL FOR ALL PROJECT seconds\n      // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      callbackGet: async ({ key }) => CacheConfigModule.store.get(key),\n      // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      callbackInvalidate: ({ key }) => (CacheConfigModule?.store?.del?.(key) || null),\n      // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      callbackSet: async ({ key, value, ttl }) => CacheConfigModule.store.set(key, value, { ttl }),\n      callbackGetKey: async ({ keyPattern }) => CacheConfigModule.store.keys?.(`${process.env.CACHE_PREFIX}${keyPattern}`) || [],\n    }),\n\n    SequelizeModule.forRoot({\n      ...DBOptions,\n    }),\n   ...\n  ],\n})\n\nexport class CacheConfigModule {\n  static store: Store;\n\n  constructor(@Inject(CACHE_MANAGER) private store: Store) {\n    CacheConfigModule.store = this.store;\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne and automatically invalidate findOneCache/findByPkCache\n\n#### `@Cache` API Options\n\n| Options       | Description                                                         |\n| ------------- | ------------------------------------------------------------------- |\n| `options.ttl` | set TTL for this model, this will override ttl at module (Optional) |\n\n```typescript\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {\n  // default `{modelName} data not found'\n  static notFoundMessage = 'your model not found message';\n\n  /**\n   *  @default `updatedAt`\n   * @description `this is for checking newest updated timestamp for cached list.`\n  */\n  static onUpdateAttribute = 'modifiedAt'\n\n   @UpdatedAt\n  @Column({ field: 'UpdatedAt' })\n    modifiedAt: Date;\n}\n```\n\nthe Model need to extends `BaseModel`\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheOptions)`\n\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\n// file: DmCourse.ts\n\n@Cache() //default ttl module\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n\n...\n\n// file: Course.controller.ts\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache({\n      where: {\n        isDeleted: false,\n        name: 'Math',\n      },\n      rejectOnEmpty: true, // use model default throw, or use use throw Exception\n      // rejectOnEmpty: new BadRequestException('message')\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `id`                         | value of id                                                                                                              |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                                                            |\n| ------------------- | ---------------------------------------------------------------------------------                                      |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional), `(Required)` when has include Query |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                                                     |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n- [Email](fauzifadhi@gmail.com)\n","readmeFilename":"README.md","gitHead":"bacea127195b9e4938979447540bcf57decf32d5","_id":"base-repo@3.1.5-beta.2","_nodeVersion":"16.17.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-qCJJcyxVUvwcSh2Sa/I+A4TXlAtNP1G+ekJd/q1kaedn/8cXr3JzynPUWg90R5UYeOjEHlmod85SghE5WwtEiw==","shasum":"2b330aa13cf427af5bf7b38fe503cee8f8aabb19","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.5-beta.2.tgz","fileCount":56,"unpackedSize":195085,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAl1h+O6Xg0ptY1770uVu+NjTPa4gN5dwO3njk44jcf0AiEA7i1ouCuhcwSP1Di4LHm/7MA5aBWMhPYOJjuiAG6IER0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxCT5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2ZhAAgJoPqRPolR+3jKlgzbjioe99kEUIneWSOYZqypSEZAD5gj5V\r\nf15J57PSm1iQCbgUweRVfRU3K8eGbJJr8RreFwfxPSuPT1uA9vSQex2teUME\r\nNWJ5im+gN4MP2EFP4INJZaFl2kL2cQF+/xpBdtKi0gCC42oOM1ntI/5gbV2H\r\nfoIkArMkXiCZvoMfKEYMGirbj4gBQlZB6TiXkx4BHbWlFdyGABOZErJwr2V7\r\n70O6C4ZI0PHrocm9pJn4isR51G23/8tdC4rv+ajH5XIMx6+gSRmY20GjZeEC\r\na3Wvxh9ZeXrCFQfwxZseU12j6oCte7LIWyrHRj2H6Qgvp29lSDi9RlBlSQW0\r\nPFkKfLWMdNFLd2aQdBicocIFl7YMQTQQlvY51Dx5m7J95si8JvMBRDlzA5Cr\r\nApT0yyAOheZK0b+C2UKYqbzeIrNJE0L9Kgo1On1K/XGXV7mLsRResJAm+9H4\r\nua0e1trJN1we+3NK2vxBjlfSv0O0hoDmSuek3aG/bpU5AjyLoxQUSyXEW/hY\r\nPK1DNEq+ELhHkM0I0WGbs42NG47ymUS/jiHEMwbG3qVVcuR2JtPiCh00V/0y\r\n6NPT/Qj17qagU+fHrzWtu2Cf2Z21Dhvx0EPeaOPKBmU2l9QunyrQ/JmlxTBu\r\nU8ZyVGOlJTmZpkA9UIpweI3gCRzMYhDy7UQ=\r\n=26dC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.5-beta.2_1673798905499_0.3811944074413698"},"_hasShrinkwrap":false},"3.1.6":{"name":"base-repo","version":"3.1.6","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"338b9f4cbfb24c00f725635119b0e1ffde8b117d","_id":"base-repo@3.1.6","_nodeVersion":"16.17.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-KMfMAuHetMr1bYo81TlcmVXIBwPHIdn/mRopPmoiS7YescID9urPwDXmnUK2S5nNe+eTi1o7w0iXnxWUE1Yb4A==","shasum":"087cf583b7f2702916d3b4480ce1d5d75566dcfe","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.6.tgz","fileCount":56,"unpackedSize":195078,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCe/QGfBNa5WIpKfxVKcK6rtXeoHA88GW1/it3IW7N6nAIhALXc0Pek3VmsJVyNp1j93aZMYMs2flQgGtrxw2RcHngB"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxCvDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoqbxAAm3SZrnj9lPNQina9HGiAya8yF5u5G+hu11ZD1GK7Au3XOuAN\r\n8/4wBO0icNJYpDZUvB8Vc36VH9o85lyV7fRHu+ik71QT9cXahJGM177nGOgk\r\njF8wY5PzWymMAuGcvDp6UhSknyqVjeqKQc0sRsevzUq2Sgcgi/r5heth/ybI\r\nCJkzkfNmFt0lsPmGwxhytNOmxIoV9w71lACZVcPUc/EkY6Vq73YxGsHMQ0F/\r\nbe5gdRjEjLLyPG4MORehwbLdx4lru0hqYVhev93jT0Ozq2DmtaejJwrkW9aZ\r\nrD8NdBwUnVpoeG8sPCCfVcwO367nS41MdFnPsBhFYVEH8LWF99UlQGnArWkc\r\nBG3bm7HIZXTy4o9q8BHhEHIkZb8y2HePxSUJfR1PS934XVecOV3qg6EL2sKC\r\nnn2igeudbo7gPQ48nz2Cu3k5iioXoqc3K40wEsVaxRoYM72TBrfVohqlW1UH\r\nv1M9uv/AmYIYbToMQ4VzcOmXbKQJOas6NClIWKSiL+oor+RgFsqPMuL2vbZj\r\nnpmPD1aWThmfv/xzlHAg6KtmaabTHFj7MC/EAMuyMwWhN+XWh1gthwnFDbyp\r\nl9oP23Y0R1OUfL9ZT5BgyM6jGAwmwfNlW1r6ysnSxcBxPszSI4OEcKcO9Av5\r\njAH691KuV4QcO5NHaXfPzvgeBPzc8d/2H5E=\r\n=06V1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.6_1673800643024_0.6092135249338502"},"_hasShrinkwrap":false},"3.1.7-rc.0":{"name":"base-repo","version":"3.1.7-rc.0","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"74b63d74d38f21ef306c87fdf43d41cad1c4d749","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0 or later)\n\n## Installation\n\n```bash\n$ npm install base-repo sequelize@^6.x.x sequelize-typescript@^2.x.x\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure defined all model of sequelize at this level\nand\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RedisModule.register(cacheConfig() as RedisModuleOptions),\n\n    SequelizeCacheModule.register({\n      defaultTTL: 5, // DEFINE TTL FOR ALL PROJECT seconds\n      // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      callbackGet: async ({ key }) => CacheConfigModule.store.get(key),\n      // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      callbackInvalidate: ({ key }) => (CacheConfigModule?.store?.del?.(key) || null),\n      // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      callbackSet: async ({ key, value, ttl }) => CacheConfigModule.store.set(key, value, { ttl }),\n      callbackGetKey: async ({ keyPattern }) => CacheConfigModule.store.keys?.(`${process.env.CACHE_PREFIX}${keyPattern}`) || [],\n    }),\n\n    SequelizeModule.forRoot({\n      ...DBOptions,\n    }),\n   ...\n  ],\n})\n\nexport class CacheConfigModule {\n  static store: Store;\n\n  constructor(@Inject(CACHE_MANAGER) private store: Store) {\n    CacheConfigModule.store = this.store;\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne and automatically invalidate findOneCache/findByPkCache\n\n#### `@Cache` API Options\n\n| Options       | Description                                                         |\n| ------------- | ------------------------------------------------------------------- |\n| `options.ttl` | set TTL for this model, this will override ttl at module (Optional) |\n\n```typescript\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {\n  // default `{modelName} data not found'\n  static notFoundMessage = 'your model not found message';\n\n  /**\n   *  @default `updatedAt`\n   * @description `this is for checking newest updated timestamp for cached list.`\n  */\n  static onUpdateAttribute = 'modifiedAt'\n\n   @UpdatedAt\n  @Column({ field: 'UpdatedAt' })\n    modifiedAt: Date;\n}\n```\n\nthe Model need to extends `BaseModel`\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheOptions)`\n\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\n// file: DmCourse.ts\n\n@Cache() //default ttl module\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n\n...\n\n// file: Course.controller.ts\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache({\n      where: {\n        isDeleted: false,\n        name: 'Math',\n      },\n      rejectOnEmpty: true, // use model default throw, or use use throw Exception\n      // rejectOnEmpty: new BadRequestException('message')\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `id`                         | value of id                                                                                                              |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                                                            |\n| ------------------- | ---------------------------------------------------------------------------------                                      |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional), `(Required)` when has include Query |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                                                     |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n- [Email](fauzifadhi@gmail.com)\n","readmeFilename":"README.md","_id":"base-repo@3.1.7-rc.0","_nodeVersion":"16.17.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-kF3Wh1+w57ox4OHeA0WKHznp8ZIdpKUuw+3TfSm1ptd8RDeib1OZODcW1JL7HSYMQ3NLiwEf7bTzHTk+jv9wPQ==","shasum":"27dfc8e20a0acea096ee3e2bf5aa7c77ba64d3e0","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.7-rc.0.tgz","fileCount":56,"unpackedSize":196669,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF7IqBnvgiwVkTkpimVhlVogQfB3HLdITd8nhi3vSZ+IAiEArd2mRrZ6DdYS3vuODQqAgKpR54P8PUGsho0fwy7vR0U="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0MFMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmonKQ//VchW/LGg/a7Dq2qgKfmu9vabKoxl0rcdiskSFhUtzNeoQhKU\r\nA6WSZUhUgibCcs9XywKpUYmrf0LGNsO9dMurqEAOO4enDPwCD76UBaHlg5xo\r\nUooF7xXe7reK3wOdPtLtJffxoXpgYnl/3iW69sGEjA3dvrhHWKCKP4wYK4TM\r\naF0YPo8s6H83AneL2kjSxOTWCbI1hadIbU+DxOXQaDYSLtrzdTDP8EKWG350\r\nkYg62sS/XvdRMpLGcNQzginJdmYV+WpCxoNuiHKf+py/f0el9ANvp/q54LMh\r\nWIKH/gk6VVKgWRKY0MEjRvukZZmhPyhkrZK7YGPjzrYAXmfUjEdztO0M8YtT\r\nv15/KpSqJnUMIKhKFjBy6Ku4mBzAaoZezObQe+FjHgfcUFZqZ0FgT7eYMv2H\r\nY76v/z9SptxQwdvunsbL9gRpee+9RAErnobFvq7Lypl2DJWNPoIhxE0vbF56\r\n3bM62PYWOPXTVf9XdHehftJhf2Rr51epbZxV0kRCJFlTE643/3tphcYW1lXz\r\nrAkN8S+XsM6IhvuhcTpCkSD1zkgpah4VHarLR/EkTu/yryvST9ak7e/s5byD\r\nAVAixPflHZ65qWl6JvlwXVUQXri5VI0UImKirMQRBWHhZjfXWDoB41UFnUeF\r\ndoFp/743Pt/L8f4U8sm9pMAvytj0c/k9LAg=\r\n=X/SU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.7-rc.0_1674625355894_0.4516029608217851"},"_hasShrinkwrap":false},"3.1.7-rc.1":{"name":"base-repo","version":"3.1.7-rc.1","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"8340d0f87b4d8dff4fc73b7d597377463e1a915c","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0 or later)\n\n## Installation\n\n```bash\n$ npm install base-repo sequelize@^6.x.x sequelize-typescript@^2.x.x\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure defined all model of sequelize at this level\nand\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RedisModule.register(cacheConfig() as RedisModuleOptions),\n\n    SequelizeCacheModule.register({\n      defaultTTL: 5, // DEFINE TTL FOR ALL PROJECT seconds\n      // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      callbackGet: async ({ key }) => CacheConfigModule.store.get(key),\n      // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      callbackInvalidate: ({ key }) => (CacheConfigModule?.store?.del?.(key) || null),\n      // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      callbackSet: async ({ key, value, ttl }) => CacheConfigModule.store.set(key, value, { ttl }),\n      callbackGetKey: async ({ keyPattern }) => CacheConfigModule.store.keys?.(`${process.env.CACHE_PREFIX}${keyPattern}`) || [],\n    }),\n\n    SequelizeModule.forRoot({\n      ...DBOptions,\n    }),\n   ...\n  ],\n})\n\nexport class CacheConfigModule {\n  static store: Store;\n\n  constructor(@Inject(CACHE_MANAGER) private store: Store) {\n    CacheConfigModule.store = this.store;\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne and automatically invalidate findOneCache/findByPkCache\n\n#### `@Cache` API Options\n\n| Options       | Description                                                         |\n| ------------- | ------------------------------------------------------------------- |\n| `options.ttl` | set TTL for this model, this will override ttl at module (Optional) |\n\n```typescript\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {\n  // default `{modelName} data not found'\n  static notFoundMessage = 'your model not found message';\n\n  /**\n   *  @default `updatedAt`\n   * @description `this is for checking newest updated timestamp for cached list.`\n  */\n  static onUpdateAttribute = 'modifiedAt'\n\n   @UpdatedAt\n  @Column({ field: 'UpdatedAt' })\n    modifiedAt: Date;\n}\n```\n\nthe Model need to extends `BaseModel`\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheOptions)`\n\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\n// file: DmCourse.ts\n\n@Cache() //default ttl module\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n\n...\n\n// file: Course.controller.ts\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache({\n      where: {\n        isDeleted: false,\n        name: 'Math',\n      },\n      rejectOnEmpty: true, // use model default throw, or use use throw Exception\n      // rejectOnEmpty: new BadRequestException('message')\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `id`                         | value of id                                                                                                              |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                                                            |\n| ------------------- | ---------------------------------------------------------------------------------                                      |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional), `(Required)` when has include Query |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                                                     |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n- [Email](fauzifadhi@gmail.com)\n","readmeFilename":"README.md","_id":"base-repo@3.1.7-rc.1","_nodeVersion":"16.17.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-ppGcjA8AE+pBq4vz+B2rV+nEAU/MPHVbZCp0aur7YIIMWVLdDAX+Y7NnNiDyeBa48oGAiPZjjo5UnC4OD/mEtQ==","shasum":"659d6b27eaf8c418e8594bae1fd86597b2267c05","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.7-rc.1.tgz","fileCount":56,"unpackedSize":196107,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuZbhg5F7iqhp8kBUYQFers2HQypr79dKaoOCCBP2KKgIhAIh5WshFYCZxQyOxDuHMYWUZL5K5kf9BUp+ScD9khdqb"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0MLFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoPYg//c5ExcTIOL5KirTe+lvHDXP3x+qi4ytlOfjJVVekuCP1Pai1U\r\nSU5SbMESCU92XaNkyg0IY6Gzu+7+9iiQiCE9/9NTXmbfZ963bIGyUCbHe6pX\r\nl5iCJl2Yiw0K7xjKhHk8/QNSEZVKuKlvRgl6rzlMSF4QmIJIqGdGHw8OaAnq\r\nl0IAHdOLTtbdbiyJBHjE7gjpot9RgOCYubX5MPupU9wDo4+9bI/ibUYg5kjQ\r\nnfwAgFoB8T0BPGfJpEW+8z5FeG/c8oRvJjyYIuj6FsrV4ZSONozkAbF81LIw\r\nsiDRSrrSgBJm+mFHyYNnSW6timkbXTOWHPtVV5MeDY1TgAI/pWCtaZ5L5b/v\r\nMF/nPAz95mZvsNd9LHmQJbfFKMHKx8HzMjWwdxICcnwc2ZKdwJK+rcrYnEL2\r\n9P2z4WUJ0/Pf2df47kuTNPr51kCwixGE+hZ8n1i5HAstF6AiKAq4Gv+VHUoF\r\nMhz3DF2HRfWcp03NwlFuZMy5WzyhWjasVBCrca65DrM01feJmn+2PGOUDfiv\r\ndS069zqDBygJKaHDY5HaYcsMv75SFqvA2vGhiHlzKzO/bkCs7aARjn6EZIbX\r\neAZOJvrIlhKsWygPvmkvOTgF2hxfk4rPwifdwsDieFYSeykloAfWgrawlpT9\r\nYYxDIB8O+Td84LhyMmJmzJ0KUT2oK80I4d8=\r\n=7Hh5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.7-rc.1_1674625733526_0.25538478314707636"},"_hasShrinkwrap":false},"3.1.7":{"name":"base-repo","version":"3.1.7","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"4d62a2939d8ef4a96b2dd2a1ab23986b7839874c","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0 or later)\n\n## Installation\n\n```bash\n$ npm install base-repo sequelize@^6.x.x sequelize-typescript@^2.x.x\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure defined all model of sequelize at this level\nand\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RedisModule.register(cacheConfig() as RedisModuleOptions),\n\n    SequelizeCacheModule.register({\n      defaultTTL: 5, // DEFINE TTL FOR ALL PROJECT seconds\n      // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      callbackGet: async ({ key }) => CacheConfigModule.store.get(key),\n      // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      callbackInvalidate: ({ key }) => (CacheConfigModule?.store?.del?.(key) || null),\n      // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      callbackSet: async ({ key, value, ttl }) => CacheConfigModule.store.set(key, value, { ttl }),\n      callbackGetKey: async ({ keyPattern }) => CacheConfigModule.store.keys?.(`${process.env.CACHE_PREFIX}${keyPattern}`) || [],\n    }),\n\n    SequelizeModule.forRoot({\n      ...DBOptions,\n    }),\n   ...\n  ],\n})\n\nexport class CacheConfigModule {\n  static store: Store;\n\n  constructor(@Inject(CACHE_MANAGER) private store: Store) {\n    CacheConfigModule.store = this.store;\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne and automatically invalidate findOneCache/findByPkCache\n\n#### `@Cache` API Options\n\n| Options       | Description                                                         |\n| ------------- | ------------------------------------------------------------------- |\n| `options.ttl` | set TTL for this model, this will override ttl at module (Optional) |\n\n```typescript\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {\n  // default `{modelName} data not found'\n  static notFoundMessage = 'your model not found message';\n\n  /**\n   *  @default `updatedAt`\n   * @description `this is for checking newest updated timestamp for cached list.`\n  */\n  static onUpdateAttribute = 'modifiedAt'\n\n   @UpdatedAt\n  @Column({ field: 'UpdatedAt' })\n    modifiedAt: Date;\n}\n```\n\nthe Model need to extends `BaseModel`\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheOptions)`\n\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\n// file: DmCourse.ts\n\n@Cache() //default ttl module\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n\n...\n\n// file: Course.controller.ts\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache({\n      where: {\n        isDeleted: false,\n        name: 'Math',\n      },\n      rejectOnEmpty: true, // use model default throw, or use use throw Exception\n      // rejectOnEmpty: new BadRequestException('message')\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `id`                         | value of id                                                                                                              |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                                                            |\n| ------------------- | ---------------------------------------------------------------------------------                                      |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional), `(Required)` when has include Query |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                                                     |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n- [Email](fauzifadhi@gmail.com)\n","readmeFilename":"README.md","_id":"base-repo@3.1.7","_nodeVersion":"16.17.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-QD3vu6B2iy0wNOvthBoKodhexK3l7T7j/Fk/AQjRIZwrTX3k/13Bu4kG62sXO7BS0xOJ0MFHNF1A5/ZbczcK3Q==","shasum":"2121c20b68df4fdc5bdecb0d0bfccb2d02a9c8f8","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.7.tgz","fileCount":56,"unpackedSize":196102,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFsLO4dZB6dn4nbXsDQwzUqAJNJ9WKF4pbRozehtYbAdAiBxX/Ws1prIKjzeR7P1akKYgC+at48MhSE4cpFWjtvQVw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0MRoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp8QBAAilg+1HrK/5BUCwFzHxGsb1cTpA5kyz/Dn1HSNO1NcY7cZVxn\r\nHJlc1jsmNn4lTvzoQodIOMcllzB+eB533M47kY2hD8QfSnkwEL71MTtyIQQA\r\n8+UvwN26z23KqjEixf0MfEPILgxkU8elLYs0CWwPh1cHhJh+TRcvRs/jbxG1\r\nEVrvpKouzYB3mKKcV5GvRLQ45S98avtkx4b1QAxrWtpAeKFTaSyJY3EJHuy5\r\nPWHaxdNPk9trxbxy0/b0RDi7jszY03FUHvuS7hqZ21wU6m1jFAewJURMissV\r\nsItSyOhLIlXh1Ko3XHV8gQP8YkPlkpOM1Vz/4/oY8RFDTJqi5vZeSrrIxVIW\r\naAUnPuLD4nHMAGMA6yIqShv6A7efzu18feCE2xJsej5lgP0SLbrExGuLi+i4\r\n174bEzcP1mLYPo+jKugziidY0AmxHy0APrZiPYhmbOJpPTKpQPakXdH2neGQ\r\n6ljdj4BmfRq1OAe4CK5qWL5CGocbnQLAWfLuvuos4YzNW4l0zxAuyr9OzhfX\r\noGD6IGJd011aZcYVdpI7/XyPyA8fQvv7PTxOU3Tz4K17y4HFiSumjoXyRFW+\r\nXuvasZ8KGbFbDpfQ6srunm2xUtlJXeowJrY9Z7X24DuCsWtPuko/vz8MiZuk\r\n4AhTDO0+wTTNdRm0z8C3mMoGgcVDu9m4B7s=\r\n=OXW0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.7_1674626152008_0.14129342467942974"},"_hasShrinkwrap":false},"3.1.8":{"name":"base-repo","version":"3.1.8","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"6b7d68bc00230b0bb9849244cad054aae1e65da6","_id":"base-repo@3.1.8","_nodeVersion":"16.17.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-9gS7AZ35XdQPK9cHCmLcDadVAlJBu9dQ+C2ocES3udfk5eV8HvKZ6g22UnRoXxkACYVjMiQ63k9uPAkebxa3FA==","shasum":"2c5ac035f1e14d52cd17989845ba748b821165b3","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.8.tgz","fileCount":56,"unpackedSize":196102,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCe2X9IRVTeSJlmY69QmfKXC57Deed9WdJjTouIQI/xtgIgXeZ7tHCNKc21DERZGUvmFiXYhJHKRy58ULry7ofjKew="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0MSFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrFLQ//ZvXjufD2UD2TNSBtZI9SYIFKyIrT1Q8OcfHgQkg+dJJIGQdZ\r\nEyxRln2OhKzeuMBT4QUvaJXcRmMPpZ+YBFFI5sjt+LokzQ9bTlcvguNR7nFa\r\n46BO75pj4kVRqGbU58U0Ao0y4GfnYXABOD0C7R+ZN6l2W0297R2lPNbzIRRL\r\nN2e8wopXDpAwUCw5uorqPklj59RCLmNaS8Zljhy56YrDRqJbs1uP1seEJoah\r\nPU3K5BgdPlKgW8ro9FZbu376wTHuWNerKOUsxYNKaTKBqXVfrDfyOO7/vVVA\r\n71lXxDJHxPd/emJBfQEPQzCj4VAMpstCFv6l1ksNGzFYKjxiXb+PV9uBnNSX\r\nyxUt3eBw9VqqOF0Dh6JORvWbnpzjsCeKhPBaybGXyl3ABVBrxQGWceHlQ4t7\r\nxzCQiYNV9lHQu5pR+3yFr+Mjy6aUfmUnkbydHMeN0/P4NqEmxvBNgQGgo5j2\r\n9KMiFBAIG5SYKXA9AEAhTYY+icf+Rytgho2PFPNxzhYkHfc0nfqcLl2ffCwd\r\nRwONQW7iDatyNSZ0IC3+2rICtyegfknL+0IS3Hb585jQrcNFWJ4ECdY4EA+x\r\nZ1VYvc+AdgKYguTkKU1vBnwdRHwwPMu1EHQOEzFJ4nSNKAaXLndnSb5J+kbS\r\n6BQnIhm1tDDipFC5/eOZaFO76FbIzPHEpGc=\r\n=mmnx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.8_1674626181556_0.7025057135056181"},"_hasShrinkwrap":false},"3.1.9":{"name":"base-repo","version":"3.1.9","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"6c04308be93c3391314379db6cc5710f93693d8c","_id":"base-repo@3.1.9","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-KPGsalpsJuJxhiyZzK/YdIrLe52rEZK2tJ+38cQtu+Tv6fZrmGdE+R2Cq7XcfXPY+YmOFF+eldAsFQGapEK3TA==","shasum":"cc48bb5d27fb529c56960501e5129669cbd7062c","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.9.tgz","fileCount":56,"unpackedSize":196426,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGiwFQNPmajR75R5BMPUAj+wJfD6vQfMMEFtFtPBmWxgIgMarYHvU7e2K5jumEWitT0tWHOWBhp32wpSzkQmRlmLE="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.9_1691469161616_0.28461794564064413"},"_hasShrinkwrap":false},"3.1.10":{"name":"base-repo","version":"3.1.10","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"types":"./dist/index.d.ts","gitHead":"8303aa116de8c59583fdb572d065972eaa9955fd","_id":"base-repo@3.1.10","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-Vui7VOcLpeFy/MjgLQLjX1KZbwl+jTIkXyJemKyL6nlF5KnDxh7PMxsaN89xNOoobt5lU2tRKVr8OvdbM4dcIw==","shasum":"e4717c5f3d4109a3536bd59a6dc6b2438acf99a8","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.10.tgz","fileCount":56,"unpackedSize":196582,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBWo+byCUjxp1WDsF2QTlVfCmmC7CLIVzqiu3tHlpyu+AiEAgezjwWjw2pdspvCH+cCP0yW1Ny6Sx575wMhCzoYNd0w="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.10_1691476099024_0.8839855031788406"},"_hasShrinkwrap":false},"3.1.11":{"name":"base-repo","version":"3.1.11","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"_id":"base-repo@3.1.11","gitHead":"92219dde31d75d6746a561edf06f72ea5403b7e0","types":"./dist/index.d.ts","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-qUh+xrqukOKOY4HeWRhottbifoj3BjuF0MDnLVyxAGHztcA1YQy8MlsNotEWxNX9XJn+X/NCwoyQ4A1hoXBMsw==","shasum":"fc92f842428e20d632da501f48334da9f4ad0550","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.11.tgz","fileCount":56,"unpackedSize":195885,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEVCVVEFvoEWR1Ph3MSOtYoJRmHHY0hBZcyztmB43JHcAiBc9d9hDA/t9skcL+enoeH+jzQYiexxSuK9sI0+Z7W3tA=="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.11_1717487975559_0.7564169112120298"},"_hasShrinkwrap":false},"3.1.12":{"name":"base-repo","version":"3.1.12","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"_id":"base-repo@3.1.12","gitHead":"fbce448d9abcd6b4c04afdb525cbb0ababaf5df1","types":"./dist/index.d.ts","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-3YT5A3d3pJijfOOpLL8hxaPJI8O83JTCtOxqRMn3xdlvDPE8EMTUCpKRAilYOYs2GiwhtJbsyD9XtKd1PiECpw==","shasum":"53623a2fea8d8862ccdc8682c9cecd7c225f02a9","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.12.tgz","fileCount":56,"unpackedSize":196319,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9GkPDvuJdMvAFEWvqSZb0FBvV/lHR/maLs9OIWzQyoQIgeYxoPl0yHH6DkmgjoTFLw30i2FEN9SMWWyMw/BUINGs="}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.12_1717492895227_0.9023930310118562"},"_hasShrinkwrap":false},"3.1.13":{"name":"base-repo","version":"3.1.13","description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","author":{"name":"Fauzi Fadhillah"},"private":false,"license":"UNLICENSED","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","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":"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"},"dependencies":{"@nestjs/common":"^9.0.3","@nestjs/core":"^9.0.3","@nestjs/platform-express":"^9.0.3","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.5.6","xxhashjs":"^0.2.2"},"devDependencies":{"@nestjs/cli":"^9.0.0","@nestjs/schematics":"^9.0.1","@nestjs/testing":"^9.0.3","@types/express":"^4.17.13","@types/jest":"28.1.6","@types/node":"^16.11.45","@types/sequelize":"^4.28.14","@types/supertest":"^2.0.12","@types/xxhashjs":"^0.2.2","@typescript-eslint/eslint-plugin":"5.30.6","@typescript-eslint/parser":"5.30.6","eslint":"8.20.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","prettier":"^2.7.1","sequelize":"^6.21.3","sequelize-typescript":"^2.1.3","ts-loader":"^9.3.1","ts-node":"^10.9.1","tsconfig-paths":"^4.0.0","typescript":"^4.7.4"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"dist","testRegex":".spec.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"coverageDirectory":"../coverage","testEnvironment":"node"},"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"homepage":"https://github.com/FauziFadhi/base-repo#readme","peerDependencies":{"sequelize":"^6.21.3","sequelize-typescript":"^2.1.3"},"_id":"base-repo@3.1.13","gitHead":"3ac058ceb91750d9691dee2858edfc8ccdb5b15f","types":"./dist/index.d.ts","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-3mBAAtOoO+FXgGpOxXk6ZLuNTAl5qucnELftk7i5bWo7LrPoeiURwZeL3AiYneHGRLnCjgvPVB/6tP9ruUEY5w==","shasum":"b4276fab8e0981d889da7707dd3fde632e692875","tarball":"https://registry.npmjs.org/base-repo/-/base-repo-3.1.13.tgz","fileCount":56,"unpackedSize":196317,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4ONOFHXYvqPYCDeXRTV+QMmWrwpMyJHEcQmIoxyraUgIhAO417W5/kXkcN3kDdDp3NSv1Xs7WNFCATBOqUFWcDmMf"}]},"_npmUser":{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"},"directories":{},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/base-repo_3.1.13_1717494455612_0.13869494470302124"},"_hasShrinkwrap":false}},"time":{"created":"2020-10-28T09:02:45.130Z","1.0.1":"2020-10-28T09:02:45.286Z","modified":"2024-06-04T09:47:35.934Z","1.0.2":"2020-10-28T09:59:24.446Z","1.0.3":"2020-10-28T10:03:23.527Z","1.0.5":"2020-10-28T10:11:15.127Z","1.0.6":"2020-10-28T10:19:38.975Z","1.1.0":"2020-10-31T07:21:52.224Z","1.2.0":"2020-10-31T08:11:02.525Z","1.2.1":"2020-10-31T09:11:38.353Z","1.2.2":"2020-10-31T09:12:57.388Z","1.2.3":"2020-10-31T09:15:42.436Z","1.2.4":"2020-10-31T09:27:06.485Z","1.2.6":"2020-10-31T10:57:43.527Z","1.2.7":"2020-10-31T11:26:07.700Z","1.2.8":"2020-10-31T11:33:34.385Z","1.2.9":"2020-11-02T10:27:13.392Z","1.2.10":"2020-11-02T10:32:32.682Z","1.2.11":"2020-11-04T01:23:19.345Z","1.2.13":"2020-11-05T05:15:51.891Z","1.2.14":"2020-11-06T06:48:52.128Z","1.2.15":"2020-11-08T11:51:05.994Z","1.3.0":"2020-11-08T11:55:21.621Z","1.3.1":"2020-11-09T05:15:21.789Z","1.3.2":"2020-11-09T05:18:16.592Z","1.3.3":"2020-11-09T10:57:38.278Z","1.3.4":"2020-11-09T10:59:22.767Z","2.0.0":"2020-11-29T05:55:30.165Z","1.3.5":"2020-12-02T03:40:10.932Z","1.3.6":"2020-12-11T09:55:08.455Z","1.3.7":"2020-12-11T11:27:08.397Z","1.3.8":"2020-12-14T02:38:39.449Z","1.3.10":"2021-02-22T10:23:04.354Z","1.3.11":"2021-03-16T06:26:44.277Z","2.0.1":"2021-05-04T13:02:57.932Z","2.0.2":"2021-05-04T13:15:30.305Z","2.0.0-beta.0":"2021-05-04T13:22:07.577Z","2.0.0-beta.1":"2021-05-09T16:22:56.043Z","2.0.0-beta.2":"2021-05-09T17:52:34.764Z","2.0.0-beta.4":"2021-05-13T09:44:50.254Z","2.0.0-beta.5":"2021-08-21T07:30:10.008Z","2.0.0-beta.6":"2021-08-21T07:35:21.143Z","2.0.3":"2021-08-21T09:21:40.913Z","2.0.4":"2021-08-22T08:35:50.423Z","2.0.5":"2021-08-22T14:03:26.057Z","2.0.6":"2021-08-22T14:06:11.887Z","2.0.7":"2021-08-22T14:08:50.286Z","2.0.8":"2021-08-25T11:56:06.536Z","2.0.9":"2021-08-26T04:18:55.513Z","2.0.10":"2021-08-26T04:22:12.491Z","2.1.0":"2021-08-31T04:38:03.817Z","2.1.1":"2021-08-31T06:11:53.732Z","2.1.2":"2021-08-31T07:37:50.222Z","2.1.3":"2021-08-31T10:24:12.294Z","2.1.4":"2021-08-31T10:30:24.494Z","2.1.5":"2021-09-01T00:45:08.849Z","2.1.6":"2021-09-01T01:02:22.305Z","2.1.7":"2021-09-01T07:42:57.466Z","2.1.8":"2021-09-16T10:24:01.054Z","2.1.9":"2021-09-16T12:05:27.937Z","2.1.10":"2021-09-16T12:23:07.829Z","2.1.11":"2021-09-20T06:40:32.075Z","2.1.12":"2021-09-23T09:56:30.250Z","2.1.13":"2021-09-23T10:07:43.498Z","2.2.0":"2021-09-23T10:17:15.454Z","2.2.1":"2021-09-23T10:37:59.124Z","2.2.2":"2021-12-24T08:12:04.058Z","2.2.3":"2022-01-14T07:48:49.346Z","3.0.1":"2022-07-17T08:40:50.706Z","3.0.2":"2022-08-22T09:27:47.714Z","3.0.3":"2022-08-22T09:45:11.441Z","3.0.4":"2022-08-22T09:57:22.059Z","3.1.0":"2022-08-22T10:31:18.748Z","2.3.0":"2022-08-22T10:38:00.460Z","2.3.1":"2022-09-16T10:39:55.665Z","3.1.1":"2022-09-16T10:42:39.356Z","2.3.2":"2022-09-19T16:36:53.171Z","3.1.2":"2022-09-19T16:47:00.457Z","2.3.3":"2022-09-19T16:47:49.215Z","3.1.3":"2022-09-29T05:28:59.043Z","3.1.4":"2022-11-15T19:53:51.671Z","2.2.4-0":"2022-11-20T04:49:57.958Z","3.1.5-rc2.0":"2023-01-15T12:44:46.584Z","3.1.5":"2023-01-15T12:55:32.644Z","3.1.5-beta.0":"2023-01-15T14:03:01.926Z","3.1.5-beta.1":"2023-01-15T14:23:35.142Z","3.1.5-beta.2":"2023-01-15T16:08:25.698Z","3.1.6":"2023-01-15T16:37:23.198Z","3.1.7-rc.0":"2023-01-25T05:42:36.105Z","3.1.7-rc.1":"2023-01-25T05:48:53.753Z","3.1.7":"2023-01-25T05:55:52.260Z","3.1.8":"2023-01-25T05:56:21.725Z","3.1.9":"2023-08-08T04:32:41.809Z","3.1.10":"2023-08-08T06:28:19.246Z","3.1.11":"2024-06-04T07:59:35.714Z","3.1.12":"2024-06-04T09:21:35.403Z","3.1.13":"2024-06-04T09:47:35.765Z"},"maintainers":[{"name":"fauzifadhi","email":"fauzifadhi@gmail.com"}],"description":"<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>","homepage":"https://github.com/FauziFadhi/base-repo#readme","repository":{"type":"git","url":"git+https://github.com/FauziFadhi/base-repo.git"},"author":{"name":"Fauzi Fadhillah"},"bugs":{"url":"https://github.com/FauziFadhi/base-repo/issues"},"license":"UNLICENSED","readme":"## Description\n\nCache Invalidation at model level extended features for [sequelize-typescript](https://github.com/RobinBuschmann/sequelize-typescript) (v2.1.0 or later)\n\n## Installation\n\n```bash\n$ npm install base-repo sequelize@^6.x.x sequelize-typescript@^2.x.x\n```\n\nYour `tsconfig.json` needs the following flags:\n\n```json\n\"target\": \"es6\", // or a more recent ecmascript version\n\"experimentalDecorators\": true,\n\"emitDecoratorMetadata\": true\n```\n\n## Module Definition\n\nmake sure defined all model of sequelize at this level\nand\n\n```typescript\n@Module({\n  ...\n  imports: [\n    RedisModule.register(cacheConfig() as RedisModuleOptions),\n\n    SequelizeCacheModule.register({\n      defaultTTL: 5, // DEFINE TTL FOR ALL PROJECT seconds\n      // DEFINE HOW TO GET CACHE FROM GIVEN KEY\n      callbackGet: async ({ key }) => CacheConfigModule.store.get(key),\n      // DEFINE HOW TO INVALIDATE CACHE FROM GIVEN KEY\n      callbackInvalidate: ({ key }) => (CacheConfigModule?.store?.del?.(key) || null),\n      // DEFINE HOW TO SET CACHE FROM GIVEN KEY VALUE AND TTL\n      callbackSet: async ({ key, value, ttl }) => CacheConfigModule.store.set(key, value, { ttl }),\n      callbackGetKey: async ({ keyPattern }) => CacheConfigModule.store.keys?.(`${process.env.CACHE_PREFIX}${keyPattern}`) || [],\n    }),\n\n    SequelizeModule.forRoot({\n      ...DBOptions,\n    }),\n   ...\n  ],\n})\n\nexport class CacheConfigModule {\n  static store: Store;\n\n  constructor(@Inject(CACHE_MANAGER) private store: Store) {\n    CacheConfigModule.store = this.store;\n  }\n}\n```\n\n## Model Definition\n\n### `@Cache(options)`\n\nthe @Cache is used for defined ttl and cache for findOne and automatically invalidate findOneCache/findByPkCache\n\n#### `@Cache` API Options\n\n| Options       | Description                                                         |\n| ------------- | ------------------------------------------------------------------- |\n| `options.ttl` | set TTL for this model, this will override ttl at module (Optional) |\n\n```typescript\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {}\n```\n\n### Extend `BaseModel`\n\n```ts\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel {\n  // default `{modelName} data not found'\n  static notFoundMessage = 'your model not found message';\n\n  /**\n   *  @default `updatedAt`\n   * @description `this is for checking newest updated timestamp for cached list.`\n  */\n  static onUpdateAttribute = 'modifiedAt'\n\n   @UpdatedAt\n  @Column({ field: 'UpdatedAt' })\n    modifiedAt: Date;\n}\n```\n\nthe Model need to extends `BaseModel`\n\n### More Strict\n\n```ts\ninterface DmCourseAtt {\n  id: number\n  name: string;\n  type: number;\n}\n\ninterface DmCreateAtt extends DmCourseAtt Omit<DmCourseAtt, 'id'>\n\n@Cache({\n  ttl: 100,\n})\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n```\n\nfor strict type that can used at default function from sequelize-typescript can be planted at generic type 2 and 3 [sequelize-typescript strict](https://github.com/RobinBuschmann/sequelize-typescript#more-strict)\n\n## How to use\n\n### `Model.findOneCache(cacheOptions)`\n\n- `cacheOptions : FindOptions` limited findOptions from sequelize-typescript\n\n```ts\n// file: DmCourse.ts\n\n@Cache() //default ttl module\n@Table()\nexport class DmCourse extends BaseModel<DmCourseAtt, DmCreateAtt> {}\n\n...\n\n// file: Course.controller.ts\n\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findOneCache({\n      where: {\n        isDeleted: false,\n        name: 'Math',\n      },\n      rejectOnEmpty: true, // use model default throw, or use use throw Exception\n      // rejectOnEmpty: new BadRequestException('message')\n    })\n  }\n}\n```\n\n- you have to use All defined cache attributes that has name `byIsDeletedAndName`\n- every query that outside of defined cache will not executed\n\n#### `findOneCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findByPkCache(id, options)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findByPkCache(1, {\n      ttl: 100,\n    });\n  }\n}\n```\n\n- find By Primary Cache will invalidate when any destroy or update\n\n#### `findByPkCache` API Options\n\n| Options                      | Description                                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `id`                         | value of id                                                                                                              |\n| `cacheOptions`               | some function from `Sequelize FindOptions`                                                                               |\n| `cacheOptions.ttl`           | set TTL for this cache key, this will override ttl at module and model `(Optional)`, `(Required)` when has include Query |\n| `cacheOptions.rejectOnEmpty` | will throw error when set `true` (Optional)                                                                              |\n\n### `Model.findAllCache(cacheOptions)`\n\n```ts\nclass CourseController {\n  async getCourse() {\n    const course = await DmCourse.findAllCache({\n     ttl: 100,\n     attributes: ['id','name','type']\n     where: {\n       isDeleted: false,\n     },\n     order: [\n       ['id','desc']\n     ],\n     include: [\n       {\n         // any association\n       }\n     ],\n     limit: 10,\n    })\n  }\n}\n```\n- find all data and Cache it when has value. will invalidate and update cache when ttl reach 0 or when get max updates or count is different from before\n\n#### `findAllCache` API Options\n\n| Options             | Description                                                                                                            |\n| ------------------- | ---------------------------------------------------------------------------------                                      |\n| `cacheOptions.ttl`  | set TTL for this cache key, this will override ttl at module and model (Optional), `(Required)` when has include Query |\n| `{...cacheOptions}` | is same with FindOptions from sequelize-typescript                                                                     |\n\n## Stay in touch\n\n- Author - [Fauzi Fadhillah](https://github.com/FauziFadhi)\n- [Email](fauzifadhi@gmail.com)\n","readmeFilename":"README.md"}