{"_id":"@davefellow/ng-resource-manager","_rev":"13-6588779ab108affad8edf423dce92349","time":{"created":"2022-06-17T15:47:18.781Z","1.0.0":"2022-06-15T22:13:14.232Z","modified":"2024-03-03T21:32:27.711Z","1.0.1":"2022-06-15T22:15:51.773Z","0.3.0":"2022-06-17T15:47:19.055Z","0.3.1":"2022-06-17T16:00:24.947Z","0.3.2":"2022-06-17T18:43:01.114Z","0.4.0":"2022-06-17T21:43:08.486Z","0.4.1":"2022-07-11T13:55:02.699Z","0.4.2":"2022-07-16T17:41:42.979Z","0.4.3":"2022-07-16T18:51:24.097Z","0.4.4":"2022-07-16T18:54:49.876Z","0.4.5":"2022-07-16T18:59:47.274Z","0.4.6":"2024-03-03T21:32:27.068Z"},"name":"@davefellow/ng-resource-manager","dist-tags":{"latest":"0.4.6"},"versions":{"0.3.0":{"name":"@davefellow/ng-resource-manager","version":"0.3.0","private":false,"peerDependencies":{"@angular/common":"^13.3.0","@angular/core":"^13.3.0"},"dependencies":{"tslib":"^2.3.0"},"module":"fesm2015/davefellow-ng-resource-manager.mjs","es2020":"fesm2020/davefellow-ng-resource-manager.mjs","esm2020":"esm2020/davefellow-ng-resource-manager.mjs","fesm2020":"fesm2020/davefellow-ng-resource-manager.mjs","fesm2015":"fesm2015/davefellow-ng-resource-manager.mjs","typings":"davefellow-ng-resource-manager.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./davefellow-ng-resource-manager.d.ts","esm2020":"./esm2020/davefellow-ng-resource-manager.mjs","es2020":"./fesm2020/davefellow-ng-resource-manager.mjs","es2015":"./fesm2015/davefellow-ng-resource-manager.mjs","node":"./fesm2015/davefellow-ng-resource-manager.mjs","default":"./fesm2020/davefellow-ng-resource-manager.mjs"}},"sideEffects":false,"description":"This is an API resource management library for Angular to make working with APIs more straightforward and much less verbose.","_id":"@davefellow/ng-resource-manager@0.3.0","_nodeVersion":"16.13.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-xySLfouEGCdsQJaLU3caPiJwwpK7OExQ8SHLw9fys3muquTs+uSChcyTp5cxc1W+u7vtlUZQFXDwE3Vsd/+jaA==","shasum":"3033c289107eec6483515f6959c61fa5c6ec8038","tarball":"https://registry.npmjs.org/@davefellow/ng-resource-manager/-/ng-resource-manager-0.3.0.tgz","fileCount":18,"unpackedSize":73818,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBBut78w8u01b0mlw5nuEzl2HE2CqGLuXjCZ0sS/F9suAiEAzdbsQFjY5T84UhDSd1xJJyVdkXlNJpLJE4BaCW+oniU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJirKIHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoDTg//aGJsfO9iPeNmmVr2a6/4VGBilk/lkq1ywQRMUbvmV6hfEm1K\r\nmoYsKfqU5UsxfawwwTNmZb/hRIOleZmi82m0colS/3zKYDegx2BafdMki/MT\r\nIuv3V/zCqdf7fL+1gqqr+iaBBB6fO6QYAIlaygUYU44h9e2kCrJFDEoLqLTe\r\nuWXi0z/JWS+t6x1KW5scdt3Ji4WFfY0fktdqW+KUdun/DUpbzUNKNOlpMz6l\r\nZqcp2rMAbj/oIsGeJmFL/UfY49ni63UxglS0U7aaDHu8cHlM7r+alUeB26/M\r\n7YFxvyWv/7TBLQKFaTlfV4n3rfiCI7kD+CblASoO+fTDIiz5vomNqyV/G6UP\r\nHLK+9Iv+jelxPOGoKwHYmXuEH9uTbs2VsVFz/eya2TX+lh0Eyuzzbl67cOGN\r\nb0pCJTxHL5d7DLGKLpojNbuYs+vgItKKANdGEXpQjReT7bb5uOGz+MxbrtzD\r\ndbpxCslLWV/2FVJnPPzYmAbx6m8pkvyiGStWscG5SP0MfSe8w8eknLjJdq7L\r\n5rniqVrlW1mCc2EU0Iss4Bn7JGwMrvLfKG2AW9bIGBcRQ5O/IV7Hxy71W+Jg\r\nfPbot9OCdp/UW+qiXJ0EKYhoJxo6aMVIK8MO9XPYucaHcemXWKGzYRNrU4tM\r\nQtHN13+zULS3DiOcKhgB8wCTXFDzZJHC/n4=\r\n=Oxv+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"davefellow","email":"dev.davefellow@gmail.com"},"directories":{},"maintainers":[{"name":"davefellow","email":"dev.davefellow@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-resource-manager_0.3.0_1655480838860_0.10957725733281087"},"_hasShrinkwrap":false},"0.3.1":{"name":"@davefellow/ng-resource-manager","version":"0.3.1","private":false,"peerDependencies":{"@angular/common":"^13.3.0","@angular/core":"^13.3.0"},"dependencies":{"tslib":"^2.3.0"},"module":"fesm2015/davefellow-ng-resource-manager.mjs","es2020":"fesm2020/davefellow-ng-resource-manager.mjs","esm2020":"esm2020/davefellow-ng-resource-manager.mjs","fesm2020":"fesm2020/davefellow-ng-resource-manager.mjs","fesm2015":"fesm2015/davefellow-ng-resource-manager.mjs","typings":"davefellow-ng-resource-manager.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./davefellow-ng-resource-manager.d.ts","esm2020":"./esm2020/davefellow-ng-resource-manager.mjs","es2020":"./fesm2020/davefellow-ng-resource-manager.mjs","es2015":"./fesm2015/davefellow-ng-resource-manager.mjs","node":"./fesm2015/davefellow-ng-resource-manager.mjs","default":"./fesm2020/davefellow-ng-resource-manager.mjs"}},"sideEffects":false,"description":"This is an API resource management library for Angular to make working with APIs more straightforward and much less verbose.","_id":"@davefellow/ng-resource-manager@0.3.1","_nodeVersion":"16.13.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-98ztd+yui2ncjUQFEPldV5Y4NbWoy3jkVFlVfH2SjPwVpjRbsuj9A+1A+zwSws6LEzNUPt+eZNYJxzF5kOpVkA==","shasum":"4bac2b628b269578cdd7140be7795f9d9cf406ec","tarball":"https://registry.npmjs.org/@davefellow/ng-resource-manager/-/ng-resource-manager-0.3.1.tgz","fileCount":18,"unpackedSize":73840,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5xmaRmyUR4viHC4QUyHFbqlQddf1fjC8MnL5fQSUcDwIhAOAcNntba65/LbGvm2qmcWViGdRpi1oUc2Ps64CU2q64"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJirKUYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpF8xAAl+t4Z0lgtEmnw2RFLzKd7ikMQLo1/3KgesQNYxW+tJjPC/uP\r\njLhi03pMuQPh39kNTPI6eH+mNd2DWAx171VuWFPhKa+WCx30I3Kl3FASwm2Y\r\ntMXnfWQXx4cgkZuL0ES3KT5QMVKOFCeN8bwzUvp/Xiv3hCiCgSh+3WuE9hno\r\nSJIohJCxBVlGbOm03CiumxzsQBB2XZOPs64wL8qpEa4cpc6bTCdevqG1NFWT\r\ncD4T6YQ/zjJjOmT3yzpU6BwFM6qEU1n1zQzlqzqk5K/0vtSVreEChc350FON\r\ntVd7VxjCmD7axyxJdh/H76ev/lLDhhYNakHY7YX6K4rr4y+5P7xpB66aPemt\r\ncOkXLbENz6n5WqU+r8XLTIXY4WNpoBo/k42zjVOpAW9Pfn0Oa94fzu1tyAwS\r\nPU6cC4I4zQCEXVeMqYG3kgu2c0KxJRFMKGb9zi8dH1ZG+Y1eYr8Ceom/6q0E\r\nI7upUB5OTt2tGngQXDfoCBvV/zWijTOJHoghHFEPBTkRm04kp+Fj7PJGKp81\r\nHy9ITUNfU1Iddc0bettHcxoAVCqdA3gtUDUIsFHTA5kccxAJvOOiC2p3X6Ec\r\nVTTmkkRy5F8P8hqlzqPOeqB/3FgKeFm2/qstnHdFUY5oYmzIO2DvwaVZuf1k\r\nIX5lvcbdNTVQ7FJI5vosQy+IEU2dPI0jVDI=\r\n=dHMC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"davefellow","email":"dev.davefellow@gmail.com"},"directories":{},"maintainers":[{"name":"davefellow","email":"dev.davefellow@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-resource-manager_0.3.1_1655481624801_0.5305753382753002"},"_hasShrinkwrap":false},"0.3.2":{"name":"@davefellow/ng-resource-manager","version":"0.3.2","private":false,"peerDependencies":{"@angular/common":"^13.3.0","@angular/core":"^13.3.0"},"dependencies":{"tslib":"^2.3.0"},"module":"fesm2015/davefellow-ng-resource-manager.mjs","es2020":"fesm2020/davefellow-ng-resource-manager.mjs","esm2020":"esm2020/davefellow-ng-resource-manager.mjs","fesm2020":"fesm2020/davefellow-ng-resource-manager.mjs","fesm2015":"fesm2015/davefellow-ng-resource-manager.mjs","typings":"davefellow-ng-resource-manager.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./davefellow-ng-resource-manager.d.ts","esm2020":"./esm2020/davefellow-ng-resource-manager.mjs","es2020":"./fesm2020/davefellow-ng-resource-manager.mjs","es2015":"./fesm2015/davefellow-ng-resource-manager.mjs","node":"./fesm2015/davefellow-ng-resource-manager.mjs","default":"./fesm2020/davefellow-ng-resource-manager.mjs"}},"sideEffects":false,"description":"This is an API resource management library for Angular to make working with APIs more straightforward and less verbose.","_id":"@davefellow/ng-resource-manager@0.3.2","_nodeVersion":"16.13.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-02pzMvrcpkFZwb6azX6xV69uvumPjwflga57ALBNsIBw08rk/oU3VMW0o+PxUzi/FH4bvU9OKc2MgmTGA72h3g==","shasum":"f5b37e86f227f9e86fd87aea6d459e32352d0717","tarball":"https://registry.npmjs.org/@davefellow/ng-resource-manager/-/ng-resource-manager-0.3.2.tgz","fileCount":18,"unpackedSize":74255,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPtL2LNI142s0DVAVIMQdVF1GaWeb4RHK8lod+MNQmKgIgWba/fC0pvcXeUkl89JZRMeaPy1BOlEz4pSEBVSqazE8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJirMs1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp9SQ//W4sdLI4eCbgUSD4MY9HsdjBzKFfIG+1TBuIL5CgSXr0ojQ1T\r\nShgqsXhpmWoMc4rr4arsxaeRbhZae69EgVZg7DGQEdouImsyOaoFKdSWad1L\r\nFSRC4jFVJWinBr3yVGWETI6Ag5pvBbAhWAFeewOufVIT558AGuyFwJU6kag3\r\nGJ1QZ/InKwvGFHjSoFROyfi+a5vtPNlsWmcjCfKEoRXcf2lOwFi5agkeqkZh\r\nY1E2mue4J5jxnB3+biKBgbCUr/y1pa7cxNEbZKDLv1M5VEGFkeO3EoiqXxEs\r\nt2aQc3pPyfmBnnxsIfKVYFNTa4RhS0IGujbnCQi7OHH6zKa2OsRevKfeTfUa\r\npV31p/9G4sOW0ehpMJOztkKfqcN+MRklsaqpbu1kofM0F+BCYV9l4UvLOQv5\r\ndvWouCWeQsQRfYWKWD/j7onQ34eIrrW+/OMqDxK4dvUsnW14EVGGI30rLR1B\r\nat1A7fhRmMTmeIZuh/UNglszkrs7+H11Xwygoj+WxEbFab3u4wyV9kaYTTQo\r\nJ4busmpB1HdSEMz66O6RQ3+EKEY6mRyFyoVD95BAE/5/bUYOO58jS+2sWBao\r\n54VV8rTbvehdAtObvAY1VoCQXQG6YWa58mHbZZHTtt/ey/mzUq61MmbdNqMp\r\nH2ZigcspHODx4/CjnI3ytJme5uF6jby1sd4=\r\n=D+a+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"davefellow","email":"dev.davefellow@gmail.com"},"directories":{},"maintainers":[{"name":"davefellow","email":"dev.davefellow@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-resource-manager_0.3.2_1655491380925_0.7302869475373421"},"_hasShrinkwrap":false},"0.4.0":{"name":"@davefellow/ng-resource-manager","version":"0.4.0","private":false,"peerDependencies":{"@angular/common":"^13.3.0","@angular/core":"^13.3.0"},"dependencies":{"tslib":"^2.3.0"},"module":"fesm2015/davefellow-ng-resource-manager.mjs","es2020":"fesm2020/davefellow-ng-resource-manager.mjs","esm2020":"esm2020/davefellow-ng-resource-manager.mjs","fesm2020":"fesm2020/davefellow-ng-resource-manager.mjs","fesm2015":"fesm2015/davefellow-ng-resource-manager.mjs","typings":"davefellow-ng-resource-manager.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./davefellow-ng-resource-manager.d.ts","esm2020":"./esm2020/davefellow-ng-resource-manager.mjs","es2020":"./fesm2020/davefellow-ng-resource-manager.mjs","es2015":"./fesm2015/davefellow-ng-resource-manager.mjs","node":"./fesm2015/davefellow-ng-resource-manager.mjs","default":"./fesm2020/davefellow-ng-resource-manager.mjs"}},"sideEffects":false,"description":"This is an API resource management library for Angular to make working with APIs more straightforward and less verbose.","_id":"@davefellow/ng-resource-manager@0.4.0","_nodeVersion":"16.13.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-z6kiB1LGeJ44mcmS7fhvs9UVWMLeTGA+zVC2pL9sbmfVrz2QeHViFOv2oQgaN2IG0Zv3RBq8C6+hkuVo5omVcw==","shasum":"43b6d06c2a69e1b992a38cf826c31eb935001e25","tarball":"https://registry.npmjs.org/@davefellow/ng-resource-manager/-/ng-resource-manager-0.4.0.tgz","fileCount":18,"unpackedSize":81775,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHi26SZ9FxP40a0AVYl8FA687DuAuvQnnV8dhH7aarLCAiEA8yn7q4Rx3R2uX6Dp0OcD6yKQrygo4QXSsRSgs7lmuTc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJirPVsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrfLBAAjkstG8Zz0QXsCSObcn68rpoJu+KVFSgbae2iuTMa2jjcGWTb\r\ncmYGp5xfRfsjPPklV6aKuBh9nnEccxanjgErQj78I/Nkmi2jfpieckBmY6/L\r\nNfQziVZLCZkEEddROlPUZBaHkM0QIcZgzzoyzaFjWIRoiZQBvhb1ZopRFChR\r\n6pOdkr7ytMks0Mb4qQovmNn26wuSgsfczcrB5GKb+4+eLjB4Ilqt36IXj6u5\r\nOQ/i+KSr2GlHtuKqcD74mhpbZcHWrMyoHccUUzvvAp1r5oB0gRS1VKV3urTh\r\nZ/67qjVGkAdYwf3YdvzMS1lo0dto9AKK/x3CnePD3HCS9AOC61jTJkY+d6oS\r\nAZ27xi5E6TJ1L4g1XHUOcKlReKZRG4zo5WwKz6fzhHL5XS1Z82Ayq0jW4mF4\r\nhK+P2exVkZVMzviOYPm0nwTswM8H1zdEvv3YbnOUyKU8NORiBjLGtJhIZymB\r\nJ2pcQ8VlRILl//47OCtWlYb/Y6v6T3WGov/scKd+6wkWobIgNP5Qi/Qb6lVM\r\nj9XohqAS7PxMPcYbdlB4ZH0JulFG1n2fkZiPe7NjqqHwIcc9KB+hOoOu/dH0\r\ncrwHw72YITjMWK481qtSH3QawHj7P3HgSXPSBeWCDDNm2IihIDr93oHGTBWh\r\n6HpVNIWGOoDuchicN9XWSmBn1lOExxRX2Dc=\r\n=iMk+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"davefellow","email":"dev.davefellow@gmail.com"},"directories":{},"maintainers":[{"name":"davefellow","email":"dev.davefellow@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-resource-manager_0.4.0_1655502188346_0.6428699579186665"},"_hasShrinkwrap":false},"0.4.1":{"name":"@davefellow/ng-resource-manager","version":"0.4.1","private":false,"peerDependencies":{"@angular/common":"^13.3.0","@angular/core":"^13.3.0"},"dependencies":{"tslib":"^2.3.0"},"module":"fesm2015/davefellow-ng-resource-manager.mjs","es2020":"fesm2020/davefellow-ng-resource-manager.mjs","esm2020":"esm2020/davefellow-ng-resource-manager.mjs","fesm2020":"fesm2020/davefellow-ng-resource-manager.mjs","fesm2015":"fesm2015/davefellow-ng-resource-manager.mjs","typings":"davefellow-ng-resource-manager.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./davefellow-ng-resource-manager.d.ts","esm2020":"./esm2020/davefellow-ng-resource-manager.mjs","es2020":"./fesm2020/davefellow-ng-resource-manager.mjs","es2015":"./fesm2015/davefellow-ng-resource-manager.mjs","node":"./fesm2015/davefellow-ng-resource-manager.mjs","default":"./fesm2020/davefellow-ng-resource-manager.mjs"}},"sideEffects":false,"description":"This is an API resource management library for Angular to make working with APIs more straightforward and less verbose.","_id":"@davefellow/ng-resource-manager@0.4.1","_nodeVersion":"16.13.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-SDVZl9uGQB+P/XBEiv0eQtHnyeeqWMbifSoJmlJX3BILKrhEg9qZwVwcLgQ2XA8o7NUOgnHUlqenRrGrJ/dtdQ==","shasum":"ae590f6eb3c18372c7dd53a9ed9d6388f643f38b","tarball":"https://registry.npmjs.org/@davefellow/ng-resource-manager/-/ng-resource-manager-0.4.1.tgz","fileCount":18,"unpackedSize":81015,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIANUeQkl9hZJLN8hZpiFd8BkLr2OnB2vxFDLxnfum1S6AiAFzvTZowF1+SpS5KkUvKK5dFJ3hBniNtcFUih53Or2rQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizCu2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrK/Q//f7DT2UuD2fi1pKExOgc0V4mWiU5c+FupRrwZa/dEx56EKxg7\r\nZE1eblwOJApBlu7OrAPXjJV8UgY+EzqBJK/b7V04AMOTrkQSxF0DwaQ7hs2M\r\nhuGnjvI5ETZdTI2MEN3MYkMYgwwjm7YeEdYdrnakN1oLTvkkOvX4fIh6cK13\r\nFDQXNeGstGQCrIh0WY16PFFcX0pALGzvxAGr+azpxRcoLolLVIxyhgGT0lYA\r\nBX+VEyYowAF+q8W/krQ44cEg+tnNukR9XqjKEIbkxiIqvj514kJtwn/jjpuC\r\nWcMxbxQ0TC0QQWhXfjYmSTCc4OsCCEU+MoWCIoijCRWqQVi4+0SOWbz62zCo\r\nd3vbVQddvpjP4ZCHjRG9NOj/QKx8JksSzRMSNs44e08JKp6ppBpussPR2vwk\r\neS8cua93VvkUCCe7+o/e3EtAvlIGupteO1Y8uijUZ9Lm8zjNNCfPmscQemlU\r\nwTgZPTLOlH7Ck/L7Hd1ZG7/5sO+QXQLoksgIy+ee6tkn2qJgV8eHW5tBMgqP\r\najY/Q/vQM6neKjBMkciJn++muw5qDPlY8J1kMAdFXsyUt07U32qgX8SzZeRm\r\n4hgOKpaawe1vcz9uCyGTFsZO3hDtp+TJy+ygpYEyd/4TDOfbahC001RJ4ABw\r\nLEh36F7WJWxpstH8gD1xitXz9imqjYor6EI=\r\n=M3M5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"davefellow","email":"dev.davefellow@gmail.com"},"directories":{},"maintainers":[{"name":"davefellow","email":"dev.davefellow@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-resource-manager_0.4.1_1657547702556_0.040799971286568315"},"_hasShrinkwrap":false},"0.4.2":{"name":"@davefellow/ng-resource-manager","version":"0.4.2","private":false,"peerDependencies":{"@angular/common":"^13.3.0","@angular/core":"^13.3.0"},"dependencies":{"tslib":"^2.3.0"},"module":"fesm2015/davefellow-ng-resource-manager.mjs","es2020":"fesm2020/davefellow-ng-resource-manager.mjs","esm2020":"esm2020/davefellow-ng-resource-manager.mjs","fesm2020":"fesm2020/davefellow-ng-resource-manager.mjs","fesm2015":"fesm2015/davefellow-ng-resource-manager.mjs","typings":"davefellow-ng-resource-manager.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./davefellow-ng-resource-manager.d.ts","esm2020":"./esm2020/davefellow-ng-resource-manager.mjs","es2020":"./fesm2020/davefellow-ng-resource-manager.mjs","es2015":"./fesm2015/davefellow-ng-resource-manager.mjs","node":"./fesm2015/davefellow-ng-resource-manager.mjs","default":"./fesm2020/davefellow-ng-resource-manager.mjs"}},"sideEffects":false,"description":"This is an API resource management library for Angular to make working with APIs more straightforward and less verbose.","_id":"@davefellow/ng-resource-manager@0.4.2","_nodeVersion":"16.13.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-SK93b0WVB5/OPN4rqSmWlAuqUQCATiCHE0UqRQ8ZDzjpUbpXHbBHEc1/jcz9On23mm23OKuaug8/LaZ9VBajoA==","shasum":"eb0f2ed2db3735b6bb2f680a8446a275ad473874","tarball":"https://registry.npmjs.org/@davefellow/ng-resource-manager/-/ng-resource-manager-0.4.2.tgz","fileCount":18,"unpackedSize":80864,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCChsem0wGzP8itmtuzqQL9z8Nx1cE4dgywrRn8uTOjlQIhAK6CeEM5K2WuX718k+EyqtxmofeyIGilBZXPHZ3jqY73"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0vhXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq4Nw/+IKwpM//GS3qapLpVGTgZPweWrjepqpsj6hk5NFxMmYChlrFC\r\ntkC5f+4tpSUM5VpveuFytwBAYvhRijG6guRmrvekoNoAHuozzPu9tV3I+bC2\r\niKnwLnAe77h0oJc3s+vTUETdx4+jhJuQ/2w0/GY2MAg8MqmrU6SflQASj70/\r\nGPW8fFB3y4315XSgHaTf8e0Gy9/EV8/VDBTfpfdNL5FOyV2CptD/Ru3rMMCx\r\nEAz6HbRFlh0CtINdFyxlrdETwZxlfRHTLZxNH5ArXveZYxnbiNdmOYyKSI1D\r\nnOwORBtL7alQZvLDF27h/Iht/rEt6bDpLD5uUznxVKdzIy6uBLYUma4DmRNu\r\nyxWhWaXXHSVXuejzSpijH5PmqHUrvzTjLDRBVy7O7hYUtYme+79yjbBwKvo2\r\nDe/kgHyHgQWbHYXOoMeAesIgizlJxufjzi+w2fm14VBFSvl0Dgq6E6JIcdJ0\r\nteUjbMo9XwsDzJULj/0C2ggbGwi+aY6CllQIHm3DLPgIB6cAyC3SP+8OoiaE\r\n9gLBrfdx7CZbP53wYYxGrqnIrygk8PxkDIW5lAm2aXViy/kcTAOw/mllM02C\r\nQ6MMCYFw7h/CdW7WyNcYxUvKp9DT7SKL5A9zPgtBcaHxRf6p6i5pARueV1bA\r\nYAq5BmqaF9wJ19PXPGkWwMZTIxAnynObmkI=\r\n=eonp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"davefellow","email":"dev.davefellow@gmail.com"},"directories":{},"maintainers":[{"name":"davefellow","email":"dev.davefellow@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-resource-manager_0.4.2_1657993302759_0.314118566527122"},"_hasShrinkwrap":false},"0.4.3":{"name":"@davefellow/ng-resource-manager","version":"0.4.3","private":false,"peerDependencies":{"@angular/common":"^13.3.0","@angular/core":"^13.3.0"},"dependencies":{"tslib":"^2.3.0"},"module":"fesm2015/davefellow-ng-resource-manager.mjs","es2020":"fesm2020/davefellow-ng-resource-manager.mjs","esm2020":"esm2020/davefellow-ng-resource-manager.mjs","fesm2020":"fesm2020/davefellow-ng-resource-manager.mjs","fesm2015":"fesm2015/davefellow-ng-resource-manager.mjs","typings":"davefellow-ng-resource-manager.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./davefellow-ng-resource-manager.d.ts","esm2020":"./esm2020/davefellow-ng-resource-manager.mjs","es2020":"./fesm2020/davefellow-ng-resource-manager.mjs","es2015":"./fesm2015/davefellow-ng-resource-manager.mjs","node":"./fesm2015/davefellow-ng-resource-manager.mjs","default":"./fesm2020/davefellow-ng-resource-manager.mjs"}},"sideEffects":false,"description":"This is an API resource management library for Angular to make working with APIs more straightforward and less verbose.","_id":"@davefellow/ng-resource-manager@0.4.3","_nodeVersion":"16.13.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-XYClp9xMEUswih2jEAVzo0S85JXgHXgB4PhrvH+M9ZVBGyNzzt/n2xgT5VRnCHfU45ldasihd7dpRZtPQTr4yg==","shasum":"b532f02f6a6f1417f889e51b98f072dd243b067c","tarball":"https://registry.npmjs.org/@davefellow/ng-resource-manager/-/ng-resource-manager-0.4.3.tgz","fileCount":18,"unpackedSize":81313,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHDR3438lywKDZjdswLdm/A26pDQquBzJzVaE7x/5bfwIgcd/5ausqPIThlR1/4UeFNZYmeeuPEVeZiVaid2ryzPw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0wisACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp7ZQ/8D4P+y4/OQ7mCYdBtAAf54S18xGYkOwT2z0Qvh/sXsMVlTwVJ\r\nLk+Vb3Ju0eTjohEzLSSX5Z0XIirXqSdPKPUzK4xhJmnzKzYGJR7MV8qzv/hT\r\niBiO5blPuRvCKa8EFnNdvJP9Go8EuOsWUpZ/nvdJ/giXmq2HO77f8Geid08C\r\nPmqt9OO7dBPypWkzMsSTwY5PF7UfwOyuHQLI1uwi9CfSt/++Q8zNJ39z09Yw\r\nSrw8LUhCCk+oTK3OoINZ0YVZFzJlK3ewQycnBpW8OMgkdSNnyPb0NBzUQaFg\r\n5i8COTtYq4FVBSQSY7myOQKWsD9X5bZ3DQJ1Y/VUdICM0mAb4sMFEGFGeF2N\r\n4tMQlfnsRIAWPjJRyG+HbPei/SamI5LmcqZ/S6Djw0npseQpU4dBFNuUf/2E\r\n+hWsCsH03ziYQg7zXQkgQweuvXROcTIVRQ7Jx/PfJXw5ecNXtXM5J8xHA9eQ\r\nyzjWB5LWENY4VNln6n2k2XvHkxrAdpJTXB8yG2TpXLGbYR8N6CE6Fvvm3tyz\r\nBcx83xiZ+oQVstF6zbEeCOZ1/Iz2B6zVHrvHL+7anoJygt+B5H/bBVCRUwBC\r\nVYr9pGY4ekZUGq7u8nsfhJ+kVD+/2Q9wgJELpF+z/9XSJgtjpF99pA4Ks+e4\r\nmW4rBmJ5Q48EJZBmvQxxCc5amWdWaCGCvtk=\r\n=r28C\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"davefellow","email":"dev.davefellow@gmail.com"},"directories":{},"maintainers":[{"name":"davefellow","email":"dev.davefellow@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-resource-manager_0.4.3_1657997483946_0.2565606779970959"},"_hasShrinkwrap":false},"0.4.4":{"name":"@davefellow/ng-resource-manager","version":"0.4.4","private":false,"peerDependencies":{"@angular/common":"^9.0.0","@angular/core":"^9.0.0"},"dependencies":{"tslib":"^2.3.0"},"module":"fesm2015/davefellow-ng-resource-manager.mjs","es2020":"fesm2020/davefellow-ng-resource-manager.mjs","esm2020":"esm2020/davefellow-ng-resource-manager.mjs","fesm2020":"fesm2020/davefellow-ng-resource-manager.mjs","fesm2015":"fesm2015/davefellow-ng-resource-manager.mjs","typings":"davefellow-ng-resource-manager.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./davefellow-ng-resource-manager.d.ts","esm2020":"./esm2020/davefellow-ng-resource-manager.mjs","es2020":"./fesm2020/davefellow-ng-resource-manager.mjs","es2015":"./fesm2015/davefellow-ng-resource-manager.mjs","node":"./fesm2015/davefellow-ng-resource-manager.mjs","default":"./fesm2020/davefellow-ng-resource-manager.mjs"}},"sideEffects":false,"description":"This is an API resource management library for Angular to make working with APIs more straightforward and less verbose.","_id":"@davefellow/ng-resource-manager@0.4.4","_nodeVersion":"16.13.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-8LTzoOMMlYXMMU8aj+ADJLKr5P5pXlT+FfvULCbphGedeI3p5+wW3RwkhEvkLYC+bX9IKAeEjCTBHIQOOcpikA==","shasum":"e3ea37d3d03271adb548d8ab4c068ff004cb3d10","tarball":"https://registry.npmjs.org/@davefellow/ng-resource-manager/-/ng-resource-manager-0.4.4.tgz","fileCount":18,"unpackedSize":81311,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFos8sC/ExtopVibfvFcrYCDXaTTmWh1/4V/awtaKmyXAiBLCbaw0Hf7+GuOHThu7TEIpWk6bevRbGEbzkOzOUYRPQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0wl5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpA6g//cpPkSUfKgxFxG0nzX+B+GNUIYTMGk2Wpat6C0vxTnYaw+ZSG\r\n6I71HI8KNA3VgnXNhTP31Gjp+UwrgYIVk8xUe+YVcIY+R4khobqmX/scnhcW\r\n0yzaSp8uwsf33/6D3KdN36lLkx3mOdxttoQZmm6a14KuJwM2l6uwqa+ZRRUw\r\nFvGe8LsOALec3lxFKTod8TjmKLz5XOxMYxJWOp65BZKL8IX0a/0R+dKUEmiy\r\ntvMPWHTeYFWAdcRcFOKDUFv1gC3VX5QaH8MS3xyPfOlRkp7jLRJdK/J2VBN6\r\n5/SxH1R1wWVwKYa3/giF7ZCAbk1tnfRZ3DzALx0BqGINd0qy55REQx2v8+7v\r\n2kuniPF3RKAX4QqxpnvjYmV4sKM/xhkuq5HsUgDilf6BZ8LB58bGs9KT4SnW\r\nRm9cOgoTvPxFAJ257Ir5Hjr3QcDVJaOUvTX63T3Hxvrp4zVeDgFru3OOZO6A\r\nXvvFiBfYYjJdbAHcnKmL4FwMiq2EZPmI2nLPrBmkHEoIfq001oaBpc2UyF0X\r\nbbcRPIeHIEJ0DT8D7fhGqMZSzFQlNxrIL5EyshNWELayPKoUJ+CL+1YmcpIk\r\ngRYzE3Qf71uM6gnzbiCGRnNHDl1VD/kKBNqX+ERCh/caOxGiJRF+jJqVeSim\r\nt66npfKbWMdEtQxwV1P2gE333qP2c8k4XBs=\r\n=Tb3g\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"davefellow","email":"dev.davefellow@gmail.com"},"directories":{},"maintainers":[{"name":"davefellow","email":"dev.davefellow@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-resource-manager_0.4.4_1657997689705_0.42662070593222134"},"_hasShrinkwrap":false},"0.4.5":{"name":"@davefellow/ng-resource-manager","version":"0.4.5","private":false,"peerDependencies":{"@angular/common":"^14.0.0","@angular/core":"^14.0.0"},"dependencies":{"tslib":"^2.3.0"},"module":"fesm2015/davefellow-ng-resource-manager.mjs","es2020":"fesm2020/davefellow-ng-resource-manager.mjs","esm2020":"esm2020/davefellow-ng-resource-manager.mjs","fesm2020":"fesm2020/davefellow-ng-resource-manager.mjs","fesm2015":"fesm2015/davefellow-ng-resource-manager.mjs","typings":"davefellow-ng-resource-manager.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./davefellow-ng-resource-manager.d.ts","esm2020":"./esm2020/davefellow-ng-resource-manager.mjs","es2020":"./fesm2020/davefellow-ng-resource-manager.mjs","es2015":"./fesm2015/davefellow-ng-resource-manager.mjs","node":"./fesm2015/davefellow-ng-resource-manager.mjs","default":"./fesm2020/davefellow-ng-resource-manager.mjs"}},"sideEffects":false,"description":"This is an API resource management library for Angular to make working with APIs more straightforward and less verbose.","_id":"@davefellow/ng-resource-manager@0.4.5","_nodeVersion":"16.13.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-UxWoUN+gaRUPAPkeK6RLsv0ZMz4Oa5wuEuS/Z1mK9zhSvWAaaUmKzZwplgCtftPsK93KYaFj394hwMN4dJqnaQ==","shasum":"78094ac3c15840c6dead24ec600999f1fa13ebb5","tarball":"https://registry.npmjs.org/@davefellow/ng-resource-manager/-/ng-resource-manager-0.4.5.tgz","fileCount":18,"unpackedSize":81313,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID7A0oZICW/dqxz86c5gOnPhLTbIT4SokgxMQ5Kkd8kZAiAQjiDWwumVjA2pbvx4ntBqtMszxa7pXEmDamuaUFoyBg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0wqjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpgYg/6Az9dREnP407amc+8Fnregb0Qo/uQ132NNQ1IhjZjdtv4u3g9\r\nghbAEVDt+dJAA1tnJvYZOMwLy/T1Gi7Q16mT0aLhAdcNP8t1kSFV8sigX697\r\nMnaak0hCkwYBVRsssInm9D9zlPop8N5KBUhNrvy93J6YipfBT+VbYJ4cMwXK\r\n3tuNI/Z5VlruwhsiVEp69Gr1SaOHOcuhJ18o8pzACAVQMaVCWeQH/jWeO5WS\r\nPU9Y9nkJpsN0LgPWFKoGazsS6a7YG7W7SdPA1UBOs5GeRwauogPB3V+EbYya\r\nnYuW9P+OUB6MijX5nEkeOt1mqsU90B6A4vLYi2ROS5SqcjJOY5W9QuVeRXmQ\r\ngiuPMgXAAC9NFTF1W3crtWYJcTzk/27+akTgiBFWuzMovpB3+4WqBnOXoJQ/\r\nYmbYnqEvfBQFQ7mpa3BPLySKaUQO171qO89JvghXys8GcEr+OVguf2hkTivR\r\nUzsKfwE1Baefe2d3A3jvOk44OTbxWNsOb2g8KdTIigNXv6YPUA8OR9y9dvMX\r\nKg69pi5vweiETGRVb/qLZmtfu1xNlvG8YY9YniPnVZVs5ure1IOVgN2KlhlM\r\njab0vvuPoussRoHeSZgZHScQz1UFcqQ00RtdUmYHk6z0E2hP9MitkJkIr8sF\r\n3uFU1wsbnKxmyossw4bI2o6hrOTJPTyCAIY=\r\n=p/NK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"davefellow","email":"dev.davefellow@gmail.com"},"directories":{},"maintainers":[{"name":"davefellow","email":"dev.davefellow@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-resource-manager_0.4.5_1657997987115_0.717064251074198"},"_hasShrinkwrap":false},"0.4.6":{"name":"@davefellow/ng-resource-manager","version":"0.4.6","private":false,"peerDependencies":{"@angular/common":"^17.2.2","@angular/core":"^17.2.2"},"dependencies":{"tslib":"^2.3.0"},"module":"fesm2022/davefellow-ng-resource-manager.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","esm2022":"./esm2022/davefellow-ng-resource-manager.mjs","esm":"./esm2022/davefellow-ng-resource-manager.mjs","default":"./fesm2022/davefellow-ng-resource-manager.mjs"}},"sideEffects":false,"_id":"@davefellow/ng-resource-manager@0.4.6","gitHead":"5ec4636786e00794fa3e019a9459a643d712361a","description":"(DISCLAIMER: This update breaks many things from previous version)","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-BWmK6V9prWZKV0oD+vJ5fPTq1vOoRHCXL7tIja4qR2u5WXxGQbOYyuJbQNmlcvmR8SoFl4oHIwPpGtQPEvSCQw==","shasum":"f3375ace463933e4e54e9dd64640c2fcde740a48","tarball":"https://registry.npmjs.org/@davefellow/ng-resource-manager/-/ng-resource-manager-0.4.6.tgz","fileCount":18,"unpackedSize":98044,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAIGdM6NYqKVRqDGNbhFBp+lnzyQWgYtSR09ecA/qA6NAiB/T3PhP9ZN4uSSZTlaDY8Ed8FH7p5ckMkeQNY2ePQEOg=="}]},"_npmUser":{"name":"davefellow","email":"dev.davefellow@gmail.com"},"directories":{},"maintainers":[{"name":"davefellow","email":"dev.davefellow@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-resource-manager_0.4.6_1709501546917_0.8392475667381711"},"_hasShrinkwrap":false}},"maintainers":[{"name":"davefellow","email":"dev.davefellow@gmail.com"}],"description":"(DISCLAIMER: This update breaks many things from previous version)","readme":"# v0.4.6. What's new?\r\n(DISCLAIMER: This update breaks many things from previous version)\r\n\r\nI made a complete re-design of this library compared to previous version, taking into consideration all the stuff I've been considering for a long time after I first created it. All the details are bellow in the how to use section.\r\n\r\nA quick summary:\r\n\r\n- Removed constructor dependency for Resource Manager setup\r\n\r\n- Redesigned custom actions declaration, now based on decorators with multiple new possibilities\r\n\r\n- Redesigned basic properties setting, they now have to be re-declared with the *override* keyword in the class body\r\n\r\n- Now HttpClient depency is set with the *inject()* method in the base class\r\n\r\n- Cache system to store latest sucessful response result of each action\r\n\r\n- Support for global side effects setup for each action\r\n\r\n# Resource Manager for Angular\r\nThis is an API resource management library for Angular to make working with APIs more straightforward and less verbose.\r\n\r\nIt brings a set of built-in methods for basic resource actions, Observables-based request, status management per action and some features to customize the way we make each request.\r\n\r\n## How to use\r\nJust extend the *ResourceManagement* class into your resource service and pass an *HttpClient* object and an (optional, but mostly necessary) prefix in the constructor using the *super* keyword and... that's it.\r\n\r\nAlternatively, you can just copy and edit this structure into your resource service:\r\n\r\n    import { Injectable } from '@angular/core';\r\n    import { ResourceManager } from '@davefellow/ng-resource-manager';\r\n\r\n    @Injectable({\r\n        providedIn: 'root'\r\n    })\r\n    export class TestService extends ResourceManager<CustomType> {\r\n        // ...\r\n    }\r\n\r\nNow you can make request in your controllers (or anywere inside your application) using any of the following methods:\r\n\r\n- .list()\r\n- .details(id)\r\n- .create(body)\r\n- .update(id, body)\r\n- .destroy(id)\r\n\r\nEach of these function return an *Observable* that can be subscribe as you prefer. For example, :\r\n\r\n    this.testService.list().subscribe();\r\n    this.testService.details(654).subscribe();\r\n    this.testService.create({ name: 'Angela', email: 'angewomon@digitalworld.com' }).subscribe();\r\n    this.testService.update(154, { email: 'louise1234@gmail.com' }).subscribe();\r\n    this.testService.delete(596).subscribe();\r\n\r\nNote that the type parameter in *ResourceManager* has an *CustomType* generic type passed, but it can be whatever type of response you want your *list*, *details*, *create* and *update* requests objects to return. The *list* action will return an array of objects of that type while the *details* action will return an object of that type directly.\r\n\r\nAll of the methods can return a different type if you pass it to each of them specifically as in the first generic type argument, so they should expect to return that type specifically instead the one passed to the class. This also applies to the *delete* action, which has an *unknown* type by default.\r\n\r\nThe *details*, *update* and *destroy* actions require an *id* parameter typed as *ResourceId*, which is just an union \"string | number\" type.\r\n\r\nBoth *create* and *update* also require a body argument. The first generic type argument of both (which defaults to class generic type passed) not only tells TypeScript to expect the return type but also the body argument type (with all properties optional in this case). That can be easily overriden by a second generic type argument.\r\n\r\n``I highly suggest using this library alongside an *HTTPInterceptor* in order to avoid setting the apiUrl for each Resource Manager service.``\r\n\r\n## Configuring the Resource Manager service\r\nThere are some class properties that must be overriden in order for the Resource Manager service to build the URLs of our requests properly. Those are:\r\n\r\n- apiUrl: string\r\n- prefix: string\r\n- idLocation: RouteIdLocation\r\n\r\nYou can re-declare them with the *override* keyword to set them globally in the class:\r\n\r\n    override readonly apiUrl = 'https://mydomain/api';\r\n    override readonly prefix = 'customers';\r\n    override readonly idLocation = 'beforePath';\r\n\r\n``I highly suggest to make them *readonly* to avoid any unwanted external manipulation``\r\n\r\nOr by setting them in each resource action options when you create a custom action (more about it later), for more granular use.\r\n\r\nMore about each property:\r\n\r\n### apiUrl\r\nAn string that will be put in the beginning of the route, right before the prefix. Each route of the resource service will be built using this property.\r\n\r\nThis should be used to avoid putting it inside the prefix itself, though as stated before, it's highly recommended using an *HttpInterceptor* for this task, unless we want the specific resource service to connect to a different base Url.\r\n\r\n### prefix\r\nThis is just the route prefix, it's basically the object name like 'customers', 'users', 'posts', etc.\r\n\r\n### idLocation\r\nThis accepts an *RouteIdLocation* type of value (a string of two values: 'afterPath' and 'beforePath') and will configure the position of the id (if present) in the route, relative to the path segment. For example:\r\n\r\n- {prefix}/{id}/{path} <-- beforePath\r\n- {prefix}/{path}/{id} <-- afterPath.\r\n\r\nIt always defaults to 'beforePath', so you wouldn't need to set it manually if it already meets your endpoint requirements.\r\n\r\n## Final URL example\r\nBellow is an example of how the final URL looks like, it includes all the previous properties plus some more specific to the Resource Actions (*path* and *id*):\r\n\r\n- {apiUrl}{prefix}\r\n- {apiUrl}{prefix}/{id}\r\n- {apiUrl}{prefix}/{id}/{path}\r\n- {apiUrl}{prefix}/{path}/{id} <-- If idLocation is set to 'afterPath'. More Below.\r\n\r\n## Custom Resource Actions\r\nMany times we want to make custom actions outside of the built-in ones (list, create, etc.) and also keep the routes building and status management of the resource manager, in that case we can create a method that returns an Observable, decorated with any of the Resource Action Decorators depending on your need:\r\n\r\n- @ResourceAction()\r\n- @GetResource()\r\n- @PostResource()\r\n- @PutResource()\r\n- @DeleteResource()\r\n\r\nEach of these decorators return an *HttpRequest* observable respective to the decorator type you use, except for *@ResourceAction*, which is the underlying decorator of all the other four.\r\n\r\nThese decorators can be passed an argument of the type *ResourceActionProps*, which is an union type that accepts *ResourceActionOptions*, *string* or *ResourceActionArgsSetup*. I know this may feel confusing but let's quickly explain each:\r\n\r\n### ResourceActionOptions \r\nThis is the most complete option, the other two are just abbreviated methods.\r\n\r\nThis is an object that accepts the following properties (all of them optional):\r\n\r\n- type: ResourceActionVerb\r\n- path: string\r\n- id: ResourceId\r\n- body: BodyT\r\n- params: UrlParams\r\n- argsSetup: ResourceActionArgsSetup\r\n- prefix: string\r\n- apiUrl: string\r\n- idLocation: RouteIdLocation\r\n\r\nMost of the time it's not necessary to pass most of them, but let's look at an example:\r\n\r\n    @GetResource({\r\n        apiUrl: 'https://mydomain/api',\r\n        prefix: 'customers',\r\n        idLocation: 'beforePath',\r\n        path: 'get-premium-only'\r\n        params: {\r\n            param1: true,\r\n            param2: '$600'\r\n        }\r\n    });\r\n    public requestPremiumCustomers() {\r\n        return new Observable<Customer>();\r\n    }\r\n\r\nIn the case of *apiUrl*, *prefix* and *idLocation*, the ones set in this object will override the values set at class level, so most of the time we can just ignore them unless we have very specific requirements for a single resource action. More about the rest bellow:\r\n\r\n#### type\r\nOf type *ResourceActionVerb* which only accepts a string of the following values: get, post, put, delete.\r\n\r\nIt won't make any effect except for the *@ResourceAction* decorator that needs it for functioning.\r\n\r\n#### path\r\nIt's the final segment of the request URL, it can be before or after the *id* depending of *idLocation* value.\r\n\r\nSome special rules to this property applies depending on how you set it:\r\n\r\n- If it's set as an empty string (''), it will be ignored for building the URL\r\n\r\n- If it's *undefined* (manually or left unset), then the method name will be used as *path* value\r\n\r\nAlso, it can be set alternatively, more about it later.\r\n\r\n#### id and body \r\nThey're just the *id* and *body* passed for the request. You can hardcode a value here for these properties but as their use should depend on application's flow, it makes no sense to do so, they're here for internal use (or for debugging if you want to use them like that).\r\n\r\nInstead, they can be set by a method argument if you configure them in the *argsSetup* property. More about it in its respective section bellow.\r\n\r\n#### params\r\nIt's an \"key: value\" pairs object. Any property added will be sent as query params in the request. For example:\r\n\r\n    const options: ResourceActionOptions = {\r\n        params: {\r\n            page: 2,\r\n            sort_by: 'name',\r\n            show: 15\r\n        }\r\n    };\r\n\r\n...Will add the following segment to the final URL: '?id=98&premium=true'.\r\n\r\n    this.resourceService.list()\r\n    // /my-prefix?page=2&sort_by=name&show=15\r\n\r\nAs a general rule, the first argument of the decorated method right after the *id* and *body* arguments (see more in the next section) will automatically be used to set this property value, so:\r\n\r\n- In the case that *id* OR *body* arguments are configured, then the second argument will automatically be used to set this property value.\r\n\r\n- In the case that both *id* AND *body* arguments are configured, then the third argument in will be used instead.\r\n\r\n- In the case none are configured, the first argument will be used to set this property value.\r\n\r\nFor the three rules from above to apply, the argument needs to be a literal object.\r\n\r\n#### argsSetup\r\nIt's an array that accept two possible string values: 'id' and 'body'.\r\n\r\nIt can be any or both, and depending on the order of each value in the array, the indexes of the *id* and *body* arguments in the decorated method will be taken to set the values for *id* and *body* internally for the request. So, for example, we have this:\r\n\r\n    @PutResource({\r\n        // ...\r\n        argsSetup: ['id', 'body']\r\n    })\r\n    public myDecoratedMethod(id: string, body: MyReturnType) {\r\n        // ...\r\n    }\r\n\r\nThat means that the first argument value will be taken for the *id* property and the second argument value for *body* property in the *ResourceActionOptions* object which will then be used in the request setup. Here's are some configurations examples:\r\n\r\n- ['body', 'id']: The *body* value will be taken from method argument and the *id* value from the second one\r\n\r\n- [ 'body' ]: The *body* value will be taken from first argument, and no *id* argument is configured\r\n\r\n- [ 'id' ]: The *id* value will be taken from first argument, and no *body* argument is configured\r\n\r\n- [], *null*, *undefined* or *unset*: No argument will be taken to set *id* or *body* values\r\n\r\nIn the case a value of type different than *string* or *number* is put in place of an *id* argument, it will be invalid and the *id* property will be *undefined* internally. Same for *body* if the value is not of type *object* (a literal object or array).\r\n\r\nThis setup also overrides any *id* or *body* value set manually in the decorator's object.\r\n\r\n### Alternative Decorators Setup\r\nYou can set a custom action with some less verbose setups for the decorators (except for *@ResourceAction*). So instead of passing a full ResourceActionOptions object you can do it the following ways:\r\n\r\n#### By leaving it empty\r\nMany times the path can be used a the method name (say, it has no dashes), in that case you can just leave the decorator without argument and the decorated method name will be used as value for the *path* property:\r\n\r\n    @GetResource()\r\n    public members() {\r\n        return new Observable<Member[]>()\r\n    }\r\n\r\nSame can be achieved by passing an *undefined* value (but why you'd do that?).\r\n\r\n#### By passing a string\r\nMany the time you only need to add (or skip) the path segment to the request endpoint and it can't be used directly as a method name (or you just want to use a different value for whatever reason), in that case you can pass a string as an argument in the decorator and that value would be used to set the *path* value. For example:\r\n\r\n    @GetResource('my-filtered-list')\r\n    public getFilteredList(params: ParamsCustomType) {\r\n        return new Observable<CustomType>()\r\n    }\r\n\r\nIf you pass an empty string, it will skip the path segment entirely (as in the built-in actions, for example).\r\n\r\n#### By passing an array\r\nSometimes you want to just configure the *id* and *body* arguments and are ok with leaving the method name for the path segment, in that case you can just pass an array the same way you do for the *argsSetup*:\r\n\r\n    @GetResource(['id', 'body'])\r\n    public setMember(id: string, body: Member) {\r\n        return new Observable<Member>()\r\n    }\r\n\r\n#### By passing an empty string AND an array\r\nIf you still want the benefits of an abbreviated declaration but need the benefit of custom path and arguments setup (kinda greedy, but I have you covered!), you can do it this way:\r\n\r\n    @GetResource('orders', ['id'])\r\n    public getOrdersFromCustomer(id: string) {\r\n        return new Observable<Order[]>()\r\n    }\r\n\r\n## Status\r\nThe *status* object will manage the life cycle of each action request.\r\n\r\n    this.resourceService.status\r\n\r\nEach action has its own status management which can be accessed by using the *status* property on the resource service. For example:\r\n\r\n    this.resourceService.status.get('list')\r\n    this.resourceService.status.set('create', 'success')\r\n\r\nThe *get* and *set* methods are basically getter and setter for each action status, in which are include all the basic actions listed above, though you can also add your own action status if necessary.\r\n\r\nThe *get* method will return a *Status* type value, which can have one of the following string values:\r\n- idle\r\n- loading\r\n- success\r\n- error\r\n\r\nThe status of each of the built-in actions is automatically updated during the request process and can be used in your controllers to perform instructions depending on the life cycle moment of each request.\r\n\r\nThere are other methods that will check whether an action is in a specific status or not, each accept the name of the action as a parameter (put as an example bellow):\r\n\r\n    .status.isIdle('list')\r\n    .status.isLoading('create')\r\n    .status.isSuccess('details')\r\n    .status.isError('destroy')\r\n\r\nThe *.set* method will accept the name of an action as first parameter and the status as second parameter, though there are shortcuts methods for setting specific status per action, these only accept the name of the action as a parameter:\r\n\r\n    .status.setIdle('list')\r\n    .status.setLoading('create)\r\n    .status.setSuccess('details')\r\n    .status.setError('destroy')\r\n\r\nArbitrary action names can also be set as a parameter, in that case an status with that name will be created. For example, if we set:\r\n\r\n    .status.setLoading('customAction')\r\n\r\nThen we can do:\r\n\r\n    .status.get('customAction')\r\n\r\nAnd it will return 'loading' as a value.\r\n\r\n``DISCLAIMER: The *status* object doesn't contain the response's state/data of each request, since that should be handled at the developer discretion. Its only purpose is to serve as an indication for the life cycle moment of each request.``\r\n\r\n## Side Effects\r\nAs sometimes your data isn't exactly coming in the most convenient way, instead of having to pipe your actions everywhere you use it (or worse, pass a callback to the *subscribe* method), you can globally apply side effects to each desired action.\r\n\r\nYou do so by overriding the *effects* property and passing an array of OperatorFunction (map, switchMap, catchError, etc.):\r\n\r\n    override readonly effects = {\r\n        list: [\r\n            map((response: CustomType) => response.results)\r\n        ],\r\n        savePokemonInOaksPC: [map((response: StandardMessage) => {\r\n            console.log('Saved on your PC');\r\n            return response;\r\n        })]\r\n    }\r\n\r\nIn those cases, whenever you subscribe to the *list* action and get successful response, you won't get the full data that's coming from your API but only the \"results* object of it. In the case of the *savePokemonInOaksPC* action, you should log a string to your console.\r\n\r\nThe advantage of this approach instead of individually piping each action observable is that it's globally applied to your action calls everywhere, and of course, you can still pipe them in your components or wherever you use them as you need.\r\n\r\n## Cache\r\nEvery action, by default, cache their latest successful response data, so you can get access to it at any given moment without having to worry about manually store it in your components or in any other service member.\r\n\r\nYou can access it by using the *cached* method and passing the action (method) name:\r\n\r\n    this.testServ.cached('list')\r\n    this.testServ.cached('create')\r\n    this.testServ.cached('customAction')\r\n\r\nThis returns a *BehaviorSubject* object typed as *unknown*, so make sure to pass a generic type argument to *cached* method in order to have the proper type for its data:\r\n\r\n    this.testServ.cached<MappedList>('getMappedList')\r\n\r\nYou can then use *getValue* method in order to get the data in an imperative context:\r\n\r\n    this.mappedList = this.testServ.cached<MappedList>('getMappedList')?.getValue()\r\n\r\nOr subscribe to it or use *async pipe* in the template, do as you need.\r\n\r\nAlso, the data is stored after the side *effects* are applied.\r\n\r\n### Disable cached data\r\nIf for whatever reason you don't want your successful responses data to be cached in your service, you can always override the *storeInCache* property:\r\n\r\n    override readonly storeInCache = false;\r\n\r\nThis will disable the caching so now when you try to access any cached data from that resource manager service, you'll get an *undefined* data.\r\n\r\n``DISCLAIMER: The cached data is *NOT* a state management system, it should be considered read-only considering it's prone to change on every sucessful request. If you intend to manipulate the data, store it in another class property so you'll have full control``\r\n\r\n## Defaults settings for custom actions\r\nYou should set an initial idle status to any custom action, so we avoid having a *null* status whenever we want to check for its value before the any subscription is done.\r\n\r\nAlso, sometimes you need a default cached data to work with while you wait for your first action request (like an empty array in your list).\r\n\r\nYou can comfortably do so with the *setActionDefaults* method. Do it in the service *constructor* as a good practice, so your resource manager is ready before your component is initialized: \r\n\r\n    constructor() {\r\n        super();\r\n        this.setActionDefaults('release-payment', []);\r\n    }\r\n\r\nThis sets the action status to *'idle'* and, if the second argument is present, also sets a default cache value.\r\n\r\nThis method evaluates if a the status or the cached has changed before performing any action, to prevent you from accidentally reset an action state after the service was injected.","readmeFilename":"README.md"}